HTML Tidy  0.1
access.h
00001 #ifndef __ACCESS_H__
00002 #define __ACCESS_H__
00003 
00004 /* access.h -- carry out accessibility checks
00005 
00006   Copyright University of Toronto
00007   Portions (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
00008   See tidy.h for the copyright notice.
00009   
00010   CVS Info :
00011 
00012     $Author: arnaud02 $ 
00013     $Date: 2006/09/12 15:14:44 $ 
00014     $Revision: 1.7 $ 
00015 
00016 */
00017 
00018 /*********************************************************************
00019 * AccessibilityChecks
00020 *
00021 * Carries out processes for all accessibility checks.  Traverses
00022 * through all the content within the tree and evaluates the tags for
00023 * accessibility.
00024 *
00025 * To perform the following checks, 'AccessibilityChecks' must be
00026 * called AFTER the tree structure has been formed.
00027 *
00028 * If, in the command prompt, there is no specification of which
00029 * accessibility priorities to check, no accessibility checks will be 
00030 * performed.  (ie. '1' for priority 1, '2' for priorities 1 and 2, 
00031 *                  and '3') for priorities 1, 2 and 3.)
00032 *
00033 * Copyright University of Toronto
00034 * Programmed by: Mike Lam and Chris Ridpath
00035 * Modifications by : Terry Teague (TRT)
00036 *
00037 *********************************************************************/
00038 
00039 
00040 #include "forward.h"
00041 
00042 #if SUPPORT_ACCESSIBILITY_CHECKS
00043 
00044 /* The accessibility checks to perform depending on user's desire.
00045 
00046    1. priority 1
00047    2. priority 1 & 2
00048    3. priority 1, 2, & 3
00049 */
00050 
00051 /* Determines if the client-side text link is found within the document
00052 typedef struct AreaLinks
00053 {
00054     struct AreaLinks* next;
00055     char* link;
00056     Bool HasBeenFound;
00057 } AreaLinks;
00058 */
00059 
00060 enum {
00061   TEXTBUF_SIZE=128u
00062 };
00063 
00064 struct _TidyAccessImpl;
00065 typedef struct _TidyAccessImpl TidyAccessImpl;
00066 
00067 struct _TidyAccessImpl
00068 {
00069     /* gets set from Tidy variable AccessibilityCheckLevel */
00070     int PRIORITYCHK;
00071 
00072     /* Number of characters that are found within the concatenated text */
00073     int counter;
00074 
00075     /* list of characters in the text nodes found within a container element */
00076     tmbchar textNode[ TEXTBUF_SIZE ]; 
00077 
00078     /* The list of characters found within one text node */
00079     tmbchar text[ TEXTBUF_SIZE ]; 
00080 
00081     /* Number of frame elements found within a frameset */
00082     int numFrames; 
00083 
00084     /* Number of 'longdesc' attributes found within a frameset */
00085     int HasCheckedLongDesc; 
00086 
00087     int  CheckedHeaders;
00088     int  ListElements;
00089     int  OtherListElements;
00090 
00091     /* For 'USEMAP' identifier */
00092     Bool HasUseMap; 
00093     Bool HasName; 
00094     Bool HasMap;
00095 
00096     /* For tracking nodes that are deleted from the original parse tree - TRT */
00097     /* Node *access_tree; */
00098 
00099     Bool HasTH;
00100     Bool HasValidFor;
00101     Bool HasValidId;
00102     Bool HasValidRowHeaders;
00103     Bool HasValidColumnHeaders;
00104     Bool HasInvalidRowHeader;
00105     Bool HasInvalidColumnHeader;
00106     int  ForID;
00107 
00108     /* List containing map-links
00109     AreaLinks* links;
00110     AreaLinks* start;
00111     AreaLinks* current;
00112     */
00113 
00114 };
00115 
00116 
00117 /* 
00118     Determines which error/warning message should be displayed,
00119     depending on the error code that was called.
00120 
00121     Offset accessibility error codes by FIRST_ACCESS_ERR to avoid conflict with
00122     other error codes defined in message.h and used in localize.c.
00123 */
00124 enum accessErrorCodes
00125 {
00126                            FIRST_ACCESS_ERR = 1000,    /* must be first */
00127  
00128     /* [1.1.1.1] */        IMG_MISSING_ALT,
00129     /* [1.1.1.2] */        IMG_ALT_SUSPICIOUS_FILENAME,
00130     /* [1.1.1.3] */        IMG_ALT_SUSPICIOUS_FILE_SIZE,
00131     /* [1.1.1.4] */        IMG_ALT_SUSPICIOUS_PLACEHOLDER,
00132     /* [1.1.1.10] */       IMG_ALT_SUSPICIOUS_TOO_LONG,
00133     /* [1.1.1.11] */       IMG_MISSING_ALT_BULLET,
00134     /* [1.1.1.12] */       IMG_MISSING_ALT_H_RULE,
00135     /* [1.1.2.1] */        IMG_MISSING_LONGDESC_DLINK,
00136     /* [1.1.2.2] */        IMG_MISSING_DLINK,
00137     /* [1.1.2.3] */        IMG_MISSING_LONGDESC,
00138     /* [1.1.2.5] */        LONGDESC_NOT_REQUIRED,
00139     /* [1.1.3.1] */        IMG_BUTTON_MISSING_ALT, 
00140     /* [1.1.4.1] */        APPLET_MISSING_ALT,
00141     /* [1.1.5.1] */        OBJECT_MISSING_ALT,
00142     /* [1.1.6.1] */        AUDIO_MISSING_TEXT_WAV,
00143     /* [1.1.6.2] */        AUDIO_MISSING_TEXT_AU,
00144     /* [1.1.6.3] */        AUDIO_MISSING_TEXT_AIFF,
00145     /* [1.1.6.4] */        AUDIO_MISSING_TEXT_SND,
00146     /* [1.1.6.5] */        AUDIO_MISSING_TEXT_RA,
00147     /* [1.1.6.6] */        AUDIO_MISSING_TEXT_RM,
00148     /* [1.1.8.1] */        FRAME_MISSING_LONGDESC,
00149     /* [1.1.9.1] */        AREA_MISSING_ALT,
00150     /* [1.1.10.1] */       SCRIPT_MISSING_NOSCRIPT,
00151     /* [1.1.12.1] */       ASCII_REQUIRES_DESCRIPTION,
00152     /* [1.2.1.1] */        IMG_MAP_SERVER_REQUIRES_TEXT_LINKS,
00153     /* [1.4.1.1] */        MULTIMEDIA_REQUIRES_TEXT,
00154     /* [1.5.1.1] */        IMG_MAP_CLIENT_MISSING_TEXT_LINKS,
00155     /* [2.1.1.1] */        INFORMATION_NOT_CONVEYED_IMAGE,
00156     /* [2.1.1.2] */        INFORMATION_NOT_CONVEYED_APPLET,
00157     /* [2.1.1.3] */        INFORMATION_NOT_CONVEYED_OBJECT,
00158     /* [2.1.1.4] */        INFORMATION_NOT_CONVEYED_SCRIPT,
00159     /* [2.1.1.5] */        INFORMATION_NOT_CONVEYED_INPUT,
00160     /* [2.2.1.1] */        COLOR_CONTRAST_TEXT,
00161     /* [2.2.1.2] */        COLOR_CONTRAST_LINK,
00162     /* [2.2.1.3] */        COLOR_CONTRAST_ACTIVE_LINK,
00163     /* [2.2.1.4] */        COLOR_CONTRAST_VISITED_LINK,
00164     /* [3.2.1.1] */        DOCTYPE_MISSING,
00165     /* [3.3.1.1] */        STYLE_SHEET_CONTROL_PRESENTATION,
00166     /* [3.5.1.1] */        HEADERS_IMPROPERLY_NESTED,
00167     /* [3.5.2.1] */        POTENTIAL_HEADER_BOLD,
00168     /* [3.5.2.2] */        POTENTIAL_HEADER_ITALICS,
00169     /* [3.5.2.3] */        POTENTIAL_HEADER_UNDERLINE,
00170     /* [3.5.3.1] */        HEADER_USED_FORMAT_TEXT,
00171     /* [3.6.1.1] */        LIST_USAGE_INVALID_UL,
00172     /* [3.6.1.2] */        LIST_USAGE_INVALID_OL,
00173     /* [3.6.1.4] */        LIST_USAGE_INVALID_LI,
00174     /* [4.1.1.1] */        INDICATE_CHANGES_IN_LANGUAGE,
00175     /* [4.3.1.1] */        LANGUAGE_NOT_IDENTIFIED,
00176     /* [4.3.1.1] */        LANGUAGE_INVALID,
00177     /* [5.1.2.1] */        DATA_TABLE_MISSING_HEADERS,
00178     /* [5.1.2.2] */        DATA_TABLE_MISSING_HEADERS_COLUMN,
00179     /* [5.1.2.3] */        DATA_TABLE_MISSING_HEADERS_ROW,
00180     /* [5.2.1.1] */        DATA_TABLE_REQUIRE_MARKUP_COLUMN_HEADERS,
00181     /* [5.2.1.2] */        DATA_TABLE_REQUIRE_MARKUP_ROW_HEADERS,
00182     /* [5.3.1.1] */        LAYOUT_TABLES_LINEARIZE_PROPERLY,
00183     /* [5.4.1.1] */        LAYOUT_TABLE_INVALID_MARKUP,
00184     /* [5.5.1.1] */        TABLE_MISSING_SUMMARY,
00185     /* [5.5.1.2] */        TABLE_SUMMARY_INVALID_NULL,
00186     /* [5.5.1.3] */        TABLE_SUMMARY_INVALID_SPACES,
00187     /* [5.5.1.6] */        TABLE_SUMMARY_INVALID_PLACEHOLDER,
00188     /* [5.5.2.1] */        TABLE_MISSING_CAPTION,
00189     /* [5.6.1.1] */        TABLE_MAY_REQUIRE_HEADER_ABBR,
00190     /* [5.6.1.2] */        TABLE_MAY_REQUIRE_HEADER_ABBR_NULL,
00191     /* [5.6.1.3] */        TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES,
00192     /* [6.1.1.1] */        STYLESHEETS_REQUIRE_TESTING_LINK,
00193     /* [6.1.1.2] */        STYLESHEETS_REQUIRE_TESTING_STYLE_ELEMENT,
00194     /* [6.1.1.3] */        STYLESHEETS_REQUIRE_TESTING_STYLE_ATTR,
00195     /* [6.2.1.1] */        FRAME_SRC_INVALID,
00196     /* [6.2.2.1] */        TEXT_EQUIVALENTS_REQUIRE_UPDATING_APPLET,
00197     /* [6.2.2.2] */        TEXT_EQUIVALENTS_REQUIRE_UPDATING_SCRIPT,
00198     /* [6.2.2.3] */        TEXT_EQUIVALENTS_REQUIRE_UPDATING_OBJECT,
00199     /* [6.3.1.1] */        PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_SCRIPT,
00200     /* [6.3.1.2] */        PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_OBJECT,
00201     /* [6.3.1.3] */        PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_EMBED,
00202     /* [6.3.1.4] */        PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_APPLET,
00203     /* [6.5.1.1] */        FRAME_MISSING_NOFRAMES,
00204     /* [6.5.1.2] */        NOFRAMES_INVALID_NO_VALUE,
00205     /* [6.5.1.3] */        NOFRAMES_INVALID_CONTENT,
00206     /* [6.5.1.4] */        NOFRAMES_INVALID_LINK,
00207     /* [7.1.1.1] */        REMOVE_FLICKER_SCRIPT,
00208     /* [7.1.1.2] */        REMOVE_FLICKER_OBJECT,
00209     /* [7.1.1.3] */        REMOVE_FLICKER_EMBED,
00210     /* [7.1.1.4] */        REMOVE_FLICKER_APPLET,
00211     /* [7.1.1.5] */        REMOVE_FLICKER_ANIMATED_GIF,
00212     /* [7.2.1.1] */        REMOVE_BLINK_MARQUEE,
00213     /* [7.4.1.1] */        REMOVE_AUTO_REFRESH,
00214     /* [7.5.1.1] */        REMOVE_AUTO_REDIRECT,
00215     /* [8.1.1.1] */        ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_SCRIPT,
00216     /* [8.1.1.2] */        ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_OBJECT,
00217     /* [8.1.1.3] */        ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_APPLET,
00218     /* [8.1.1.4] */        ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_EMBED,
00219     /* [9.1.1.1] */        IMAGE_MAP_SERVER_SIDE_REQUIRES_CONVERSION,
00220     /* [9.3.1.1] */        SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_DOWN,
00221     /* [9.3.1.2] */        SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_UP,
00222     /* [9.3.1.3] */        SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_CLICK,
00223     /* [9.3.1.4] */        SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OVER,
00224     /* [9.3.1.5] */        SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OUT,
00225     /* [9.3.1.6] */        SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE,
00226     /* [10.1.1.1] */       NEW_WINDOWS_REQUIRE_WARNING_NEW,
00227     /* [10.1.1.2] */       NEW_WINDOWS_REQUIRE_WARNING_BLANK,
00228     /* [10.2.1.1] */       LABEL_NEEDS_REPOSITIONING_BEFORE_INPUT,
00229     /* [10.2.1.2] */       LABEL_NEEDS_REPOSITIONING_AFTER_INPUT,
00230     /* [10.4.1.1] */       FORM_CONTROL_REQUIRES_DEFAULT_TEXT,
00231     /* [10.4.1.2] */       FORM_CONTROL_DEFAULT_TEXT_INVALID_NULL,
00232     /* [10.4.1.3] */       FORM_CONTROL_DEFAULT_TEXT_INVALID_SPACES,
00233     /* [11.2.1.1] */       REPLACE_DEPRECATED_HTML_APPLET,
00234     /* [11.2.1.2] */       REPLACE_DEPRECATED_HTML_BASEFONT,
00235     /* [11.2.1.3] */       REPLACE_DEPRECATED_HTML_CENTER,
00236     /* [11.2.1.4] */       REPLACE_DEPRECATED_HTML_DIR,
00237     /* [11.2.1.5] */       REPLACE_DEPRECATED_HTML_FONT,
00238     /* [11.2.1.6] */       REPLACE_DEPRECATED_HTML_ISINDEX,
00239     /* [11.2.1.7] */       REPLACE_DEPRECATED_HTML_MENU,
00240     /* [11.2.1.8] */       REPLACE_DEPRECATED_HTML_S,
00241     /* [11.2.1.9] */       REPLACE_DEPRECATED_HTML_STRIKE,
00242     /* [11.2.1.10] */      REPLACE_DEPRECATED_HTML_U,
00243     /* [12.1.1.1] */       FRAME_MISSING_TITLE,
00244     /* [12.1.1.2] */       FRAME_TITLE_INVALID_NULL,
00245     /* [12.1.1.3] */       FRAME_TITLE_INVALID_SPACES,
00246     /* [12.4.1.1] */       ASSOCIATE_LABELS_EXPLICITLY,
00247     /* [12.4.1.2] */       ASSOCIATE_LABELS_EXPLICITLY_FOR,
00248     /* [12.4.1.3] */       ASSOCIATE_LABELS_EXPLICITLY_ID,
00249     /* [13.1.1.1] */       LINK_TEXT_NOT_MEANINGFUL,
00250     /* [13.1.1.2] */       LINK_TEXT_MISSING,
00251     /* [13.1.1.3] */       LINK_TEXT_TOO_LONG,
00252     /* [13.1.1.4] */       LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE,
00253     /* [13.1.1.5] */       LINK_TEXT_NOT_MEANINGFUL_MORE,
00254     /* [13.1.1.6] */       LINK_TEXT_NOT_MEANINGFUL_FOLLOW_THIS,
00255     /* [13.2.1.1] */       METADATA_MISSING,
00256     /* [13.2.1.2] */       METADATA_MISSING_LINK,
00257     /* [13.2.1.3] */       METADATA_MISSING_REDIRECT_AUTOREFRESH,
00258     /* [13.10.1.1] */      SKIPOVER_ASCII_ART,
00259     
00260     LAST_ACCESS_ERR    /* must be last */
00261 };
00262 
00263 
00264 void TY_(AccessibilityHelloMessage)( TidyDocImpl* doc );
00265 void TY_(DisplayHTMLTableAlgorithm)( TidyDocImpl* doc );
00266 
00267 /************************************************************
00268 * AccessibilityChecks
00269 *
00270 * Traverses through the individual nodes of the tree
00271 * and checks attributes and elements for accessibility.
00272 * after the tree structure has been formed.
00273 ************************************************************/
00274 
00275 void TY_(AccessibilityChecks)( TidyDocImpl* doc );
00276 
00277 
00278 #endif /* SUPPORT_ACCESSIBILITY_CHECKS */
00279 #endif /* __ACCESS_H__ */