1#ifndef __ACCESS_H__ 2#define __ACCESS_H__ 3 4/* access.h -- carry out accessibility checks 5 6 Copyright University of Toronto 7 Portions (c) 1998-2006 (W3C) MIT, ERCIM, Keio University 8 See tidy.h for the copyright notice. 9 10 CVS Info : 11 12 $Author: iccir $ 13 $Date: 2007/01/30 23:46:51 $ 14 $Revision: 1.3 $ 15 16*/ 17 18/********************************************************************* 19* AccessibilityChecks 20* 21* Carries out processes for all accessibility checks. Traverses 22* through all the content within the tree and evaluates the tags for 23* accessibility. 24* 25* To perform the following checks, 'AccessibilityChecks' must be 26* called AFTER the tree structure has been formed. 27* 28* If, in the command prompt, there is no specification of which 29* accessibility priorities to check, no accessibility checks will be 30* performed. (ie. '1' for priority 1, '2' for priorities 1 and 2, 31* and '3') for priorities 1, 2 and 3.) 32* 33* Copyright University of Toronto 34* Programmed by: Mike Lam and Chris Ridpath 35* Modifications by : Terry Teague (TRT) 36* 37*********************************************************************/ 38 39 40#include "forward.h" 41 42#if SUPPORT_ACCESSIBILITY_CHECKS 43 44/* The accessibility checks to perform depending on user's desire. 45 46 1. priority 1 47 2. priority 1 & 2 48 3. priority 1, 2, & 3 49*/ 50 51/* Determines if the client-side text link is found within the document 52typedef struct AreaLinks 53{ 54 struct AreaLinks* next; 55 char* link; 56 Bool HasBeenFound; 57} AreaLinks; 58*/ 59 60#define TEXTBUF_SIZE 128 61 62 63struct _TidyAccessImpl; 64typedef struct _TidyAccessImpl TidyAccessImpl; 65 66struct _TidyAccessImpl 67{ 68 /* gets set from Tidy variable AccessibilityCheckLevel */ 69 int PRIORITYCHK; 70 71 /* Number of characters that are found within the concatenated text */ 72 int counter; 73 74 /* list of characters in the text nodes found within a container element */ 75 tmbchar textNode[ TEXTBUF_SIZE ]; 76 77 /* The list of characters found within one text node */ 78 tmbchar text[ TEXTBUF_SIZE ]; 79 80 /* Number of frame elements found within a frameset */ 81 int numFrames; 82 83 /* Number of 'longdesc' attributes found within a frameset */ 84 int HasCheckedLongDesc; 85 86 int CheckedHeaders; 87 int ListElements; 88 int OtherListElements; 89 90 /* For 'USEMAP' identifier */ 91 Bool HasUseMap; 92 Bool HasName; 93 Bool HasMap; 94 95 /* For tracking nodes that are deleted from the original parse tree - TRT */ 96 /* Node *access_tree; */ 97 98 Bool HasTH; 99 Bool HasValidFor; 100 Bool HasValidId; 101 Bool HasValidRowHeaders; 102 Bool HasValidColumnHeaders; 103 Bool HasInvalidRowHeader; 104 Bool HasInvalidColumnHeader; 105 int ForID; 106 107 /* List containing map-links 108 AreaLinks* links; 109 AreaLinks* start; 110 AreaLinks* current; 111 */ 112 113}; 114 115 116/* 117 Determines which error/warning message should be displayed, 118 depending on the error code that was called. 119 120 Offset accessibility error codes by FIRST_ACCESS_ERR to avoid conflict with 121 other error codes defined in message.h and used in localize.c. 122*/ 123enum accessErrorCodes 124{ 125 FIRST_ACCESS_ERR = 1000, /* must be first */ 126 127 /* [1.1.1.1] */ IMG_MISSING_ALT, 128 /* [1.1.1.2] */ IMG_ALT_SUSPICIOUS_FILENAME, 129 /* [1.1.1.3] */ IMG_ALT_SUSPICIOUS_FILE_SIZE, 130 /* [1.1.1.4] */ IMG_ALT_SUSPICIOUS_PLACEHOLDER, 131 /* [1.1.1.10] */ IMG_ALT_SUSPICIOUS_TOO_LONG, 132 /* [1.1.1.11] */ IMG_MISSING_ALT_BULLET, 133 /* [1.1.1.12] */ IMG_MISSING_ALT_H_RULE, 134 /* [1.1.2.1] */ IMG_MISSING_LONGDESC_DLINK, 135 /* [1.1.2.2] */ IMG_MISSING_DLINK, 136 /* [1.1.2.3] */ IMG_MISSING_LONGDESC, 137 /* [1.1.2.5] */ LONGDESC_NOT_REQUIRED, 138 /* [1.1.3.1] */ IMG_BUTTON_MISSING_ALT, 139 /* [1.1.4.1] */ APPLET_MISSING_ALT, 140 /* [1.1.5.1] */ OBJECT_MISSING_ALT, 141 /* [1.1.6.1] */ AUDIO_MISSING_TEXT_WAV, 142 /* [1.1.6.2] */ AUDIO_MISSING_TEXT_AU, 143 /* [1.1.6.3] */ AUDIO_MISSING_TEXT_AIFF, 144 /* [1.1.6.4] */ AUDIO_MISSING_TEXT_SND, 145 /* [1.1.6.5] */ AUDIO_MISSING_TEXT_RA, 146 /* [1.1.6.6] */ AUDIO_MISSING_TEXT_RM, 147 /* [1.1.8.1] */ FRAME_MISSING_LONGDESC, 148 /* [1.1.9.1] */ AREA_MISSING_ALT, 149 /* [1.1.10.1] */ SCRIPT_MISSING_NOSCRIPT, 150 /* [1.1.12.1] */ ASCII_REQUIRES_DESCRIPTION, 151 /* [1.2.1.1] */ IMG_MAP_SERVER_REQUIRES_TEXT_LINKS, 152 /* [1.4.1.1] */ MULTIMEDIA_REQUIRES_TEXT, 153 /* [1.5.1.1] */ IMG_MAP_CLIENT_MISSING_TEXT_LINKS, 154 /* [2.1.1.1] */ INFORMATION_NOT_CONVEYED_IMAGE, 155 /* [2.1.1.2] */ INFORMATION_NOT_CONVEYED_APPLET, 156 /* [2.1.1.3] */ INFORMATION_NOT_CONVEYED_OBJECT, 157 /* [2.1.1.4] */ INFORMATION_NOT_CONVEYED_SCRIPT, 158 /* [2.1.1.5] */ INFORMATION_NOT_CONVEYED_INPUT, 159 /* [2.2.1.1] */ COLOR_CONTRAST_TEXT, 160 /* [2.2.1.2] */ COLOR_CONTRAST_LINK, 161 /* [2.2.1.3] */ COLOR_CONTRAST_ACTIVE_LINK, 162 /* [2.2.1.4] */ COLOR_CONTRAST_VISITED_LINK, 163 /* [3.2.1.1] */ DOCTYPE_MISSING, 164 /* [3.3.1.1] */ STYLE_SHEET_CONTROL_PRESENTATION, 165 /* [3.5.1.1] */ HEADERS_IMPROPERLY_NESTED, 166 /* [3.5.2.1] */ POTENTIAL_HEADER_BOLD, 167 /* [3.5.2.2] */ POTENTIAL_HEADER_ITALICS, 168 /* [3.5.2.3] */ POTENTIAL_HEADER_UNDERLINE, 169 /* [3.5.3.1] */ HEADER_USED_FORMAT_TEXT, 170 /* [3.6.1.1] */ LIST_USAGE_INVALID_UL, 171 /* [3.6.1.2] */ LIST_USAGE_INVALID_OL, 172 /* [3.6.1.4] */ LIST_USAGE_INVALID_LI, 173 /* [4.1.1.1] */ INDICATE_CHANGES_IN_LANGUAGE, 174 /* [4.3.1.1] */ LANGUAGE_NOT_IDENTIFIED, 175 /* [4.3.1.1] */ LANGUAGE_INVALID, 176 /* [5.1.2.1] */ DATA_TABLE_MISSING_HEADERS, 177 /* [5.1.2.2] */ DATA_TABLE_MISSING_HEADERS_COLUMN, 178 /* [5.1.2.3] */ DATA_TABLE_MISSING_HEADERS_ROW, 179 /* [5.2.1.1] */ DATA_TABLE_REQUIRE_MARKUP_COLUMN_HEADERS, 180 /* [5.2.1.2] */ DATA_TABLE_REQUIRE_MARKUP_ROW_HEADERS, 181 /* [5.3.1.1] */ LAYOUT_TABLES_LINEARIZE_PROPERLY, 182 /* [5.4.1.1] */ LAYOUT_TABLE_INVALID_MARKUP, 183 /* [5.5.1.1] */ TABLE_MISSING_SUMMARY, 184 /* [5.5.1.2] */ TABLE_SUMMARY_INVALID_NULL, 185 /* [5.5.1.3] */ TABLE_SUMMARY_INVALID_SPACES, 186 /* [5.5.1.6] */ TABLE_SUMMARY_INVALID_PLACEHOLDER, 187 /* [5.5.2.1] */ TABLE_MISSING_CAPTION, 188 /* [5.6.1.1] */ TABLE_MAY_REQUIRE_HEADER_ABBR, 189 /* [5.6.1.2] */ TABLE_MAY_REQUIRE_HEADER_ABBR_NULL, 190 /* [5.6.1.3] */ TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES, 191 /* [6.1.1.1] */ STYLESHEETS_REQUIRE_TESTING_LINK, 192 /* [6.1.1.2] */ STYLESHEETS_REQUIRE_TESTING_STYLE_ELEMENT, 193 /* [6.1.1.3] */ STYLESHEETS_REQUIRE_TESTING_STYLE_ATTR, 194 /* [6.2.1.1] */ FRAME_SRC_INVALID, 195 /* [6.2.2.1] */ TEXT_EQUIVALENTS_REQUIRE_UPDATING_APPLET, 196 /* [6.2.2.2] */ TEXT_EQUIVALENTS_REQUIRE_UPDATING_SCRIPT, 197 /* [6.2.2.3] */ TEXT_EQUIVALENTS_REQUIRE_UPDATING_OBJECT, 198 /* [6.3.1.1] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_SCRIPT, 199 /* [6.3.1.2] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_OBJECT, 200 /* [6.3.1.3] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_EMBED, 201 /* [6.3.1.4] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_APPLET, 202 /* [6.5.1.1] */ FRAME_MISSING_NOFRAMES, 203 /* [6.5.1.2] */ NOFRAMES_INVALID_NO_VALUE, 204 /* [6.5.1.3] */ NOFRAMES_INVALID_CONTENT, 205 /* [6.5.1.4] */ NOFRAMES_INVALID_LINK, 206 /* [7.1.1.1] */ REMOVE_FLICKER_SCRIPT, 207 /* [7.1.1.2] */ REMOVE_FLICKER_OBJECT, 208 /* [7.1.1.3] */ REMOVE_FLICKER_EMBED, 209 /* [7.1.1.4] */ REMOVE_FLICKER_APPLET, 210 /* [7.1.1.5] */ REMOVE_FLICKER_ANIMATED_GIF, 211 /* [7.2.1.1] */ REMOVE_BLINK_MARQUEE, 212 /* [7.4.1.1] */ REMOVE_AUTO_REFRESH, 213 /* [7.5.1.1] */ REMOVE_AUTO_REDIRECT, 214 /* [8.1.1.1] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_SCRIPT, 215 /* [8.1.1.2] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_OBJECT, 216 /* [8.1.1.3] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_APPLET, 217 /* [8.1.1.4] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_EMBED, 218 /* [9.1.1.1] */ IMAGE_MAP_SERVER_SIDE_REQUIRES_CONVERSION, 219 /* [9.3.1.1] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_DOWN, 220 /* [9.3.1.2] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_UP, 221 /* [9.3.1.3] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_CLICK, 222 /* [9.3.1.4] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OVER, 223 /* [9.3.1.5] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OUT, 224 /* [9.3.1.6] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE, 225 /* [10.1.1.1] */ NEW_WINDOWS_REQUIRE_WARNING_NEW, 226 /* [10.1.1.2] */ NEW_WINDOWS_REQUIRE_WARNING_BLANK, 227 /* [10.2.1.1] */ LABEL_NEEDS_REPOSITIONING_BEFORE_INPUT, 228 /* [10.2.1.2] */ LABEL_NEEDS_REPOSITIONING_AFTER_INPUT, 229 /* [10.4.1.1] */ FORM_CONTROL_REQUIRES_DEFAULT_TEXT, 230 /* [10.4.1.2] */ FORM_CONTROL_DEFAULT_TEXT_INVALID_NULL, 231 /* [10.4.1.3] */ FORM_CONTROL_DEFAULT_TEXT_INVALID_SPACES, 232 /* [11.2.1.1] */ REPLACE_DEPRECATED_HTML_APPLET, 233 /* [11.2.1.2] */ REPLACE_DEPRECATED_HTML_BASEFONT, 234 /* [11.2.1.3] */ REPLACE_DEPRECATED_HTML_CENTER, 235 /* [11.2.1.4] */ REPLACE_DEPRECATED_HTML_DIR, 236 /* [11.2.1.5] */ REPLACE_DEPRECATED_HTML_FONT, 237 /* [11.2.1.6] */ REPLACE_DEPRECATED_HTML_ISINDEX, 238 /* [11.2.1.7] */ REPLACE_DEPRECATED_HTML_MENU, 239 /* [11.2.1.8] */ REPLACE_DEPRECATED_HTML_S, 240 /* [11.2.1.9] */ REPLACE_DEPRECATED_HTML_STRIKE, 241 /* [11.2.1.10] */ REPLACE_DEPRECATED_HTML_U, 242 /* [12.1.1.1] */ FRAME_MISSING_TITLE, 243 /* [12.1.1.2] */ FRAME_TITLE_INVALID_NULL, 244 /* [12.1.1.3] */ FRAME_TITLE_INVALID_SPACES, 245 /* [12.4.1.1] */ ASSOCIATE_LABELS_EXPLICITLY, 246 /* [12.4.1.2] */ ASSOCIATE_LABELS_EXPLICITLY_FOR, 247 /* [12.4.1.3] */ ASSOCIATE_LABELS_EXPLICITLY_ID, 248 /* [13.1.1.1] */ LINK_TEXT_NOT_MEANINGFUL, 249 /* [13.1.1.2] */ LINK_TEXT_MISSING, 250 /* [13.1.1.3] */ LINK_TEXT_TOO_LONG, 251 /* [13.1.1.4] */ LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE, 252 /* [13.1.1.5] */ LINK_TEXT_NOT_MEANINGFUL_MORE, 253 /* [13.1.1.6] */ LINK_TEXT_NOT_MEANINGFUL_FOLLOW_THIS, 254 /* [13.2.1.1] */ METADATA_MISSING, 255 /* [13.2.1.2] */ METADATA_MISSING_LINK, 256 /* [13.2.1.3] */ METADATA_MISSING_REDIRECT_AUTOREFRESH, 257 /* [13.10.1.1] */ SKIPOVER_ASCII_ART, 258 259 LAST_ACCESS_ERR /* must be last */ 260}; 261 262 263void TY_(AccessibilityHelloMessage)( TidyDocImpl* doc ); 264void TY_(DisplayHTMLTableAlgorithm)( TidyDocImpl* doc ); 265 266/************************************************************ 267* AccessibilityChecks 268* 269* Traverses through the individual nodes of the tree 270* and checks attributes and elements for accessibility. 271* after the tree structure has been formed. 272************************************************************/ 273 274void TY_(AccessibilityChecks)( TidyDocImpl* doc ); 275 276 277#endif /* SUPPORT_ACCESSIBILITY_CHECKS */ 278#endif /* __ACCESS_H__ */ 279