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