#ifndef __ACCESS_H__ #define __ACCESS_H__ /* access.h -- carry out accessibility checks Copyright University of Toronto Portions (c) 1998-2006 (W3C) MIT, ERCIM, Keio University See tidy.h for the copyright notice. */ /********************************************************************* * AccessibilityChecks * * Carries out processes for all accessibility checks. Traverses * through all the content within the tree and evaluates the tags for * accessibility. * * To perform the following checks, 'AccessibilityChecks' must be * called AFTER the tree structure has been formed. * * If, in the command prompt, there is no specification of which * accessibility priorities to check, no accessibility checks will be * performed. (ie. '1' for priority 1, '2' for priorities 1 and 2, * and '3') for priorities 1, 2 and 3.) * * Copyright University of Toronto * Programmed by: Mike Lam and Chris Ridpath * Modifications by : Terry Teague (TRT) * *********************************************************************/ #include "forward.h" #if SUPPORT_ACCESSIBILITY_CHECKS /* The accessibility checks to perform depending on user's desire. 1. priority 1 2. priority 1 & 2 3. priority 1, 2, & 3 */ /* Determines if the client-side text link is found within the document typedef struct AreaLinks { struct AreaLinks* next; char* link; Bool HasBeenFound; } AreaLinks; */ enum { TEXTBUF_SIZE=128u }; struct _TidyAccessImpl; typedef struct _TidyAccessImpl TidyAccessImpl; struct _TidyAccessImpl { /* gets set from Tidy variable AccessibilityCheckLevel */ int PRIORITYCHK; /* Number of characters that are found within the concatenated text */ int counter; /* list of characters in the text nodes found within a container element */ tmbchar textNode[ TEXTBUF_SIZE ]; /* The list of characters found within one text node */ tmbchar text[ TEXTBUF_SIZE ]; /* Number of frame elements found within a frameset */ int numFrames; /* Number of 'longdesc' attributes found within a frameset */ int HasCheckedLongDesc; int CheckedHeaders; int ListElements; int OtherListElements; /* For 'USEMAP' identifier */ Bool HasUseMap; Bool HasName; Bool HasMap; /* For tracking nodes that are deleted from the original parse tree - TRT */ /* Node *access_tree; */ Bool HasTH; Bool HasValidFor; Bool HasValidId; Bool HasValidRowHeaders; Bool HasValidColumnHeaders; Bool HasInvalidRowHeader; Bool HasInvalidColumnHeader; int ForID; /* List containing map-links AreaLinks* links; AreaLinks* start; AreaLinks* current; */ }; /* Determines which error/warning message should be displayed, depending on the error code that was called. Offset accessibility error codes by FIRST_ACCESS_ERR to avoid conflict with other error codes defined in message.h and used in localize.c. */ enum accessErrorCodes { FIRST_ACCESS_ERR = 1000, /* must be first */ /* [1.1.1.1] */ IMG_MISSING_ALT, /* [1.1.1.2] */ IMG_ALT_SUSPICIOUS_FILENAME, /* [1.1.1.3] */ IMG_ALT_SUSPICIOUS_FILE_SIZE, /* [1.1.1.4] */ IMG_ALT_SUSPICIOUS_PLACEHOLDER, /* [1.1.1.10] */ IMG_ALT_SUSPICIOUS_TOO_LONG, /* [1.1.1.11] */ IMG_MISSING_ALT_BULLET, /* [1.1.1.12] */ IMG_MISSING_ALT_H_RULE, /* [1.1.2.1] */ IMG_MISSING_LONGDESC_DLINK, /* [1.1.2.2] */ IMG_MISSING_DLINK, /* [1.1.2.3] */ IMG_MISSING_LONGDESC, /* [1.1.2.5] */ LONGDESC_NOT_REQUIRED, /* [1.1.3.1] */ IMG_BUTTON_MISSING_ALT, /* [1.1.4.1] */ APPLET_MISSING_ALT, /* [1.1.5.1] */ OBJECT_MISSING_ALT, /* [1.1.6.1] */ AUDIO_MISSING_TEXT_WAV, /* [1.1.6.2] */ AUDIO_MISSING_TEXT_AU, /* [1.1.6.3] */ AUDIO_MISSING_TEXT_AIFF, /* [1.1.6.4] */ AUDIO_MISSING_TEXT_SND, /* [1.1.6.5] */ AUDIO_MISSING_TEXT_RA, /* [1.1.6.6] */ AUDIO_MISSING_TEXT_RM, /* [1.1.8.1] */ FRAME_MISSING_LONGDESC, /* [1.1.9.1] */ AREA_MISSING_ALT, /* [1.1.10.1] */ SCRIPT_MISSING_NOSCRIPT, /* [1.1.12.1] */ ASCII_REQUIRES_DESCRIPTION, /* [1.2.1.1] */ IMG_MAP_SERVER_REQUIRES_TEXT_LINKS, /* [1.4.1.1] */ MULTIMEDIA_REQUIRES_TEXT, /* [1.5.1.1] */ IMG_MAP_CLIENT_MISSING_TEXT_LINKS, /* [2.1.1.1] */ INFORMATION_NOT_CONVEYED_IMAGE, /* [2.1.1.2] */ INFORMATION_NOT_CONVEYED_APPLET, /* [2.1.1.3] */ INFORMATION_NOT_CONVEYED_OBJECT, /* [2.1.1.4] */ INFORMATION_NOT_CONVEYED_SCRIPT, /* [2.1.1.5] */ INFORMATION_NOT_CONVEYED_INPUT, /* [2.2.1.1] */ COLOR_CONTRAST_TEXT, /* [2.2.1.2] */ COLOR_CONTRAST_LINK, /* [2.2.1.3] */ COLOR_CONTRAST_ACTIVE_LINK, /* [2.2.1.4] */ COLOR_CONTRAST_VISITED_LINK, /* [3.2.1.1] */ DOCTYPE_MISSING, /* [3.3.1.1] */ STYLE_SHEET_CONTROL_PRESENTATION, /* [3.5.1.1] */ HEADERS_IMPROPERLY_NESTED, /* [3.5.2.1] */ POTENTIAL_HEADER_BOLD, /* [3.5.2.2] */ POTENTIAL_HEADER_ITALICS, /* [3.5.2.3] */ POTENTIAL_HEADER_UNDERLINE, /* [3.5.3.1] */ HEADER_USED_FORMAT_TEXT, /* [3.6.1.1] */ LIST_USAGE_INVALID_UL, /* [3.6.1.2] */ LIST_USAGE_INVALID_OL, /* [3.6.1.4] */ LIST_USAGE_INVALID_LI, /* [4.1.1.1] */ INDICATE_CHANGES_IN_LANGUAGE, /* [4.3.1.1] */ LANGUAGE_NOT_IDENTIFIED, /* [4.3.1.1] */ LANGUAGE_INVALID, /* [5.1.2.1] */ DATA_TABLE_MISSING_HEADERS, /* [5.1.2.2] */ DATA_TABLE_MISSING_HEADERS_COLUMN, /* [5.1.2.3] */ DATA_TABLE_MISSING_HEADERS_ROW, /* [5.2.1.1] */ DATA_TABLE_REQUIRE_MARKUP_COLUMN_HEADERS, /* [5.2.1.2] */ DATA_TABLE_REQUIRE_MARKUP_ROW_HEADERS, /* [5.3.1.1] */ LAYOUT_TABLES_LINEARIZE_PROPERLY, /* [5.4.1.1] */ LAYOUT_TABLE_INVALID_MARKUP, /* [5.5.1.1] */ TABLE_MISSING_SUMMARY, /* [5.5.1.2] */ TABLE_SUMMARY_INVALID_NULL, /* [5.5.1.3] */ TABLE_SUMMARY_INVALID_SPACES, /* [5.5.1.6] */ TABLE_SUMMARY_INVALID_PLACEHOLDER, /* [5.5.2.1] */ TABLE_MISSING_CAPTION, /* [5.6.1.1] */ TABLE_MAY_REQUIRE_HEADER_ABBR, /* [5.6.1.2] */ TABLE_MAY_REQUIRE_HEADER_ABBR_NULL, /* [5.6.1.3] */ TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES, /* [6.1.1.1] */ STYLESHEETS_REQUIRE_TESTING_LINK, /* [6.1.1.2] */ STYLESHEETS_REQUIRE_TESTING_STYLE_ELEMENT, /* [6.1.1.3] */ STYLESHEETS_REQUIRE_TESTING_STYLE_ATTR, /* [6.2.1.1] */ FRAME_SRC_INVALID, /* [6.2.2.1] */ TEXT_EQUIVALENTS_REQUIRE_UPDATING_APPLET, /* [6.2.2.2] */ TEXT_EQUIVALENTS_REQUIRE_UPDATING_SCRIPT, /* [6.2.2.3] */ TEXT_EQUIVALENTS_REQUIRE_UPDATING_OBJECT, /* [6.3.1.1] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_SCRIPT, /* [6.3.1.2] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_OBJECT, /* [6.3.1.3] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_EMBED, /* [6.3.1.4] */ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_APPLET, /* [6.5.1.1] */ FRAME_MISSING_NOFRAMES, /* [6.5.1.2] */ NOFRAMES_INVALID_NO_VALUE, /* [6.5.1.3] */ NOFRAMES_INVALID_CONTENT, /* [6.5.1.4] */ NOFRAMES_INVALID_LINK, /* [7.1.1.1] */ REMOVE_FLICKER_SCRIPT, /* [7.1.1.2] */ REMOVE_FLICKER_OBJECT, /* [7.1.1.3] */ REMOVE_FLICKER_EMBED, /* [7.1.1.4] */ REMOVE_FLICKER_APPLET, /* [7.1.1.5] */ REMOVE_FLICKER_ANIMATED_GIF, /* [7.2.1.1] */ REMOVE_BLINK_MARQUEE, /* [7.4.1.1] */ REMOVE_AUTO_REFRESH, /* [7.5.1.1] */ REMOVE_AUTO_REDIRECT, /* [8.1.1.1] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_SCRIPT, /* [8.1.1.2] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_OBJECT, /* [8.1.1.3] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_APPLET, /* [8.1.1.4] */ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_EMBED, /* [9.1.1.1] */ IMAGE_MAP_SERVER_SIDE_REQUIRES_CONVERSION, /* [9.3.1.1] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_DOWN, /* [9.3.1.2] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_UP, /* [9.3.1.3] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_CLICK, /* [9.3.1.4] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OVER, /* [9.3.1.5] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OUT, /* [9.3.1.6] */ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE, /* [10.1.1.1] */ NEW_WINDOWS_REQUIRE_WARNING_NEW, /* [10.1.1.2] */ NEW_WINDOWS_REQUIRE_WARNING_BLANK, /* [10.2.1.1] */ LABEL_NEEDS_REPOSITIONING_BEFORE_INPUT, /* [10.2.1.2] */ LABEL_NEEDS_REPOSITIONING_AFTER_INPUT, /* [10.4.1.1] */ FORM_CONTROL_REQUIRES_DEFAULT_TEXT, /* [10.4.1.2] */ FORM_CONTROL_DEFAULT_TEXT_INVALID_NULL, /* [10.4.1.3] */ FORM_CONTROL_DEFAULT_TEXT_INVALID_SPACES, /* [11.2.1.1] */ REPLACE_DEPRECATED_HTML_APPLET, /* [11.2.1.2] */ REPLACE_DEPRECATED_HTML_BASEFONT, /* [11.2.1.3] */ REPLACE_DEPRECATED_HTML_CENTER, /* [11.2.1.4] */ REPLACE_DEPRECATED_HTML_DIR, /* [11.2.1.5] */ REPLACE_DEPRECATED_HTML_FONT, /* [11.2.1.6] */ REPLACE_DEPRECATED_HTML_ISINDEX, /* [11.2.1.7] */ REPLACE_DEPRECATED_HTML_MENU, /* [11.2.1.8] */ REPLACE_DEPRECATED_HTML_S, /* [11.2.1.9] */ REPLACE_DEPRECATED_HTML_STRIKE, /* [11.2.1.10] */ REPLACE_DEPRECATED_HTML_U, /* [12.1.1.1] */ FRAME_MISSING_TITLE, /* [12.1.1.2] */ FRAME_TITLE_INVALID_NULL, /* [12.1.1.3] */ FRAME_TITLE_INVALID_SPACES, /* [12.4.1.1] */ ASSOCIATE_LABELS_EXPLICITLY, /* [12.4.1.2] */ ASSOCIATE_LABELS_EXPLICITLY_FOR, /* [12.4.1.3] */ ASSOCIATE_LABELS_EXPLICITLY_ID, /* [13.1.1.1] */ LINK_TEXT_NOT_MEANINGFUL, /* [13.1.1.2] */ LINK_TEXT_MISSING, /* [13.1.1.3] */ LINK_TEXT_TOO_LONG, /* [13.1.1.4] */ LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE, /* [13.1.1.5] */ LINK_TEXT_NOT_MEANINGFUL_MORE, /* [13.1.1.6] */ LINK_TEXT_NOT_MEANINGFUL_FOLLOW_THIS, /* [13.2.1.1] */ METADATA_MISSING, /* [13.2.1.2] */ METADATA_MISSING_LINK, /* [13.2.1.3] */ METADATA_MISSING_REDIRECT_AUTOREFRESH, /* [13.10.1.1] */ SKIPOVER_ASCII_ART, LAST_ACCESS_ERR /* must be last */ }; void TY_(AccessibilityHelloMessage)( TidyDocImpl* doc ); void TY_(DisplayHTMLTableAlgorithm)( TidyDocImpl* doc ); /************************************************************ * AccessibilityChecks * * Traverses through the individual nodes of the tree * and checks attributes and elements for accessibility. * after the tree structure has been formed. ************************************************************/ void TY_(AccessibilityChecks)( TidyDocImpl* doc ); #endif /* SUPPORT_ACCESSIBILITY_CHECKS */ #endif /* __ACCESS_H__ */