|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <head> |
|
4 <title>HTML a11y spec tests</title> |
|
5 <link id="link" rel="stylesheet" type="text/css" |
|
6 href="chrome://mochikit/content/tests/SimpleTest/test.css" /> |
|
7 |
|
8 <script type="application/javascript" |
|
9 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> |
|
10 |
|
11 <script type="application/javascript" |
|
12 src="../common.js"></script> |
|
13 <script type="application/javascript" |
|
14 src="../actions.js"></script> |
|
15 <script type="application/javascript" |
|
16 src="../role.js"></script> |
|
17 <script type="application/javascript" |
|
18 src="../states.js"></script> |
|
19 <script type="application/javascript" |
|
20 src="../attributes.js"></script> |
|
21 <script type="application/javascript" |
|
22 src="../relations.js"></script> |
|
23 <script type="application/javascript" |
|
24 src="../name.js"></script> |
|
25 |
|
26 <script type="application/javascript"> |
|
27 function doTest() |
|
28 { |
|
29 ////////////////////////////////////////////////////////////////////////// |
|
30 // HTML:a@href |
|
31 |
|
32 var obj = { |
|
33 role: ROLE_LINK, |
|
34 states: STATE_LINKED, |
|
35 actions: "jump", |
|
36 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText, nsIAccessibleHyperLink ], |
|
37 children: [ // all kids inherits linked state and jump action |
|
38 { |
|
39 role: ROLE_TEXT_LEAF, |
|
40 states: STATE_LINKED, |
|
41 actions: "jump" |
|
42 } |
|
43 ] |
|
44 }; |
|
45 testElm("a_href", obj); |
|
46 |
|
47 ////////////////////////////////////////////////////////////////////////// |
|
48 // HTML:a no @href |
|
49 |
|
50 obj = { |
|
51 todo_role: ROLE_TEXT_CONTAINER, |
|
52 absentStates: STATE_LINKED, |
|
53 actions: null, |
|
54 children: [ |
|
55 { |
|
56 role: ROLE_TEXT_LEAF, |
|
57 absentStates: STATE_LINKED, |
|
58 actions: null |
|
59 } |
|
60 ] |
|
61 }; |
|
62 testElm("a_nohref", obj); |
|
63 |
|
64 ////////////////////////////////////////////////////////////////////////// |
|
65 // HTML:abbr contained by HTML:td |
|
66 |
|
67 obj = { |
|
68 role: ROLE_CELL, |
|
69 attributes: { abbr: "WWW" }, |
|
70 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
71 children: [ |
|
72 { |
|
73 role: ROLE_TEXT_CONTAINER, |
|
74 children: [ { role: ROLE_TEXT_LEAF } ] |
|
75 } |
|
76 ] |
|
77 }; |
|
78 testElm("td_abbr", obj); |
|
79 |
|
80 ////////////////////////////////////////////////////////////////////////// |
|
81 // HTML:address |
|
82 |
|
83 obj = { |
|
84 todo_role: ROLE_PARAGRAPH, |
|
85 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
86 }; |
|
87 testElm("address", obj); |
|
88 |
|
89 ////////////////////////////////////////////////////////////////////////// |
|
90 // HTML:area@href |
|
91 |
|
92 obj = { |
|
93 role: ROLE_LINK, |
|
94 states: STATE_LINKED, |
|
95 actions: "jump", |
|
96 interfaces: [ nsIAccessibleHyperLink ], |
|
97 children: [] |
|
98 }; |
|
99 testElm(getAccessible("imgmap").firstChild, obj); |
|
100 |
|
101 ////////////////////////////////////////////////////////////////////////// |
|
102 // HTML:area no @href |
|
103 |
|
104 obj = { |
|
105 todo_role: "ROLE_SHAPE", |
|
106 absentStates: STATE_LINKED, |
|
107 children: [] |
|
108 }; |
|
109 testElm(getAccessible("imgmap").lastChild, obj); |
|
110 |
|
111 ////////////////////////////////////////////////////////////////////////// |
|
112 // HTML:article |
|
113 obj = { |
|
114 role: ROLE_DOCUMENT, |
|
115 states: STATE_READONLY, |
|
116 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
117 }; |
|
118 testElm("article", obj); |
|
119 |
|
120 ////////////////////////////////////////////////////////////////////////// |
|
121 // HTML:aside |
|
122 obj = { |
|
123 role: ROLE_NOTE, |
|
124 attributes: { "xml-roles": "complementary" }, |
|
125 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
126 }; |
|
127 testElm("aside", obj); |
|
128 |
|
129 ////////////////////////////////////////////////////////////////////////// |
|
130 obj = { // HTML:audio |
|
131 role: ROLE_GROUPING |
|
132 }; |
|
133 testElm("audio", obj); |
|
134 |
|
135 ////////////////////////////////////////////////////////////////////////// |
|
136 obj = { // HTML:b contained by paragraph |
|
137 role: ROLE_PARAGRAPH, |
|
138 textAttrs: { |
|
139 0: { }, |
|
140 6: { "font-weight": kBoldFontWeight } |
|
141 }, |
|
142 children: [ |
|
143 { role: ROLE_TEXT_LEAF }, // plain text |
|
144 { role: ROLE_TEXT_LEAF } // HTML:b text |
|
145 ] |
|
146 } |
|
147 testElm("b_container", obj); |
|
148 |
|
149 ////////////////////////////////////////////////////////////////////////// |
|
150 obj = { // HTML:bdi contained by paragraph |
|
151 role: ROLE_PARAGRAPH, |
|
152 todo_textAttrs: { |
|
153 0: { }, |
|
154 5: { "writing-mode": "rl" }, |
|
155 8: { } |
|
156 }, |
|
157 children: [ |
|
158 { role: ROLE_TEXT_LEAF }, // plain text |
|
159 { role: ROLE_TEXT_LEAF }, // HTML:bdi text |
|
160 { role: ROLE_TEXT_LEAF } // plain text |
|
161 ] |
|
162 } |
|
163 testElm("bdi_container", obj); |
|
164 |
|
165 ////////////////////////////////////////////////////////////////////////// |
|
166 // HTML:bdo contained by paragraph |
|
167 |
|
168 obj = { |
|
169 role: ROLE_PARAGRAPH, |
|
170 todo_textAttrs: { |
|
171 0: { }, |
|
172 6: { "writing-mode": "rl" } |
|
173 }, |
|
174 children: [ |
|
175 { role: ROLE_TEXT_LEAF }, // plain text |
|
176 ] |
|
177 } |
|
178 testElm("bdo_container", obj); |
|
179 |
|
180 ////////////////////////////////////////////////////////////////////////// |
|
181 // HTML:blockquote |
|
182 |
|
183 obj = { |
|
184 role: ROLE_SECTION, |
|
185 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
186 children: [ { role: ROLE_PARAGRAPH } ] |
|
187 }; |
|
188 testElm("blockquote", obj); |
|
189 |
|
190 ////////////////////////////////////////////////////////////////////////// |
|
191 // HTML:br |
|
192 |
|
193 obj = { |
|
194 role: ROLE_PARAGRAPH, |
|
195 children: [ { role: ROLE_WHITESPACE } ] |
|
196 }; |
|
197 testElm("br_container", obj); |
|
198 |
|
199 ////////////////////////////////////////////////////////////////////////// |
|
200 obj = { // HTML:button |
|
201 role: ROLE_PUSHBUTTON, |
|
202 absentStates: STATE_DEFAULT, |
|
203 actions: "press", |
|
204 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
205 }; |
|
206 testElm("button", obj); |
|
207 |
|
208 ////////////////////////////////////////////////////////////////////////// |
|
209 // HTML:button@type="submit" (default button) |
|
210 |
|
211 obj = { |
|
212 role: ROLE_PUSHBUTTON, |
|
213 states: STATE_DEFAULT, |
|
214 actions: "press" |
|
215 }; |
|
216 testElm("button_default", obj); |
|
217 |
|
218 ////////////////////////////////////////////////////////////////////////// |
|
219 // HTML:canvas |
|
220 |
|
221 obj = { |
|
222 role: ROLE_CANVAS |
|
223 }; |
|
224 testElm("canvas", obj); |
|
225 |
|
226 ////////////////////////////////////////////////////////////////////////// |
|
227 // HTML:caption under table |
|
228 |
|
229 obj = { |
|
230 role: ROLE_TABLE, |
|
231 relations: { |
|
232 RELATION_LABELLED_BY: "caption" |
|
233 }, |
|
234 interfaces: nsIAccessibleTable, |
|
235 children: [ |
|
236 { |
|
237 role: ROLE_CAPTION, |
|
238 relations: { |
|
239 RELATION_LABEL_FOR: "table" |
|
240 }, |
|
241 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
242 }, |
|
243 { // td inside thead |
|
244 role: ROLE_ROW, |
|
245 children: [ |
|
246 { |
|
247 role: ROLE_COLUMNHEADER, |
|
248 interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ] |
|
249 }, |
|
250 { role: ROLE_COLUMNHEADER } |
|
251 ] |
|
252 }, |
|
253 { // td inside tbody |
|
254 role: ROLE_ROW, |
|
255 children: [ |
|
256 { |
|
257 role: ROLE_ROWHEADER, |
|
258 interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ] |
|
259 }, |
|
260 { |
|
261 role: ROLE_CELL, |
|
262 interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ] |
|
263 } |
|
264 ] |
|
265 }, |
|
266 { // td inside tfoot |
|
267 role: ROLE_ROW |
|
268 } |
|
269 ] |
|
270 }; |
|
271 testElm("table", obj); |
|
272 |
|
273 ////////////////////////////////////////////////////////////////////////// |
|
274 // HTML:cite contained by paragraph |
|
275 |
|
276 obj = { |
|
277 role: ROLE_PARAGRAPH, |
|
278 textAttrs: { |
|
279 0: { }, |
|
280 6: { "font-style": "italic" } |
|
281 }, |
|
282 children: [ |
|
283 { role: ROLE_TEXT_LEAF }, // plain text |
|
284 { role: ROLE_TEXT_LEAF } // HTML:cite text |
|
285 ] |
|
286 }; |
|
287 testElm("cite_container", obj); |
|
288 |
|
289 ////////////////////////////////////////////////////////////////////////// |
|
290 // HTML:code contained by paragraph |
|
291 |
|
292 obj = { |
|
293 role: ROLE_PARAGRAPH, |
|
294 textAttrs: { |
|
295 0: { }, |
|
296 6: { "font-family": kMonospaceFontFamily } |
|
297 }, |
|
298 children: [ |
|
299 { role: ROLE_TEXT_LEAF }, // plain text |
|
300 { role: ROLE_TEXT_LEAF } // HTML:code text |
|
301 ] |
|
302 }; |
|
303 testElm("code_container", obj); |
|
304 |
|
305 ////////////////////////////////////////////////////////////////////////// |
|
306 // HTML:col and HTML:colgroup under table |
|
307 |
|
308 obj = |
|
309 { TABLE : [ |
|
310 { ROW :[ |
|
311 { role: ROLE_CELL }, |
|
312 { role: ROLE_CELL }, |
|
313 { role: ROLE_CELL } |
|
314 ] } |
|
315 ] }; |
|
316 testElm("colNcolgroup_table", obj); |
|
317 |
|
318 ////////////////////////////////////////////////////////////////////////// |
|
319 // HTML:data contained by paragraph |
|
320 |
|
321 obj = |
|
322 { PARAGRAPH: [ |
|
323 { TEXT_LEAF: [] } // HTML:data text |
|
324 ] }; |
|
325 testElm("data_container", obj); |
|
326 |
|
327 ////////////////////////////////////////////////////////////////////////// |
|
328 // HTML:datalist associated with input |
|
329 |
|
330 todo(false, "datalist and summary tree hierarchy test missed"); |
|
331 |
|
332 ////////////////////////////////////////////////////////////////////////// |
|
333 // HTML:dd, HTML:dl, HTML:dd |
|
334 |
|
335 obj = { |
|
336 role: ROLE_DEFINITION_LIST, |
|
337 states: STATE_READONLY, |
|
338 children: [ // dl |
|
339 { |
|
340 role: ROLE_TERM, |
|
341 states: STATE_READONLY, |
|
342 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
343 children: [ // dt |
|
344 { role: ROLE_TEXT_LEAF } |
|
345 ] |
|
346 }, |
|
347 { |
|
348 role: ROLE_DEFINITION, |
|
349 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
350 children: [ // dd |
|
351 { role: ROLE_TEXT_LEAF } |
|
352 ] |
|
353 } |
|
354 ] |
|
355 }; |
|
356 testElm("dl", obj); |
|
357 |
|
358 ////////////////////////////////////////////////////////////////////////// |
|
359 // HTML:del contained by paragraph |
|
360 |
|
361 obj = { |
|
362 role: ROLE_PARAGRAPH, |
|
363 textAttrs: { |
|
364 0: { }, |
|
365 6: { "text-line-through-style": "solid" } |
|
366 }, |
|
367 children: [ |
|
368 { role: ROLE_TEXT_LEAF }, // plain text |
|
369 { role: ROLE_TEXT_LEAF } // HTML:del text |
|
370 ] |
|
371 }; |
|
372 testElm("del_container", obj); |
|
373 |
|
374 ////////////////////////////////////////////////////////////////////////// |
|
375 // HTML:details |
|
376 |
|
377 todo(isAccessible("details"), "details element is not accessible"); |
|
378 |
|
379 ////////////////////////////////////////////////////////////////////////// |
|
380 // HTML:dfn contained by paragraph |
|
381 |
|
382 obj = { |
|
383 role: ROLE_PARAGRAPH, |
|
384 textAttrs: { |
|
385 0: { "font-style": "italic" }, |
|
386 12: { } |
|
387 }, |
|
388 children: [ |
|
389 { role: ROLE_TEXT_LEAF }, // HTML:dfn text |
|
390 { role: ROLE_TEXT_LEAF } // plain text |
|
391 ] |
|
392 }; |
|
393 testElm("dfn_container", obj); |
|
394 |
|
395 ////////////////////////////////////////////////////////////////////////// |
|
396 // HTML:dialog |
|
397 |
|
398 todo(isAccessible("dialog"), "dialog element is not accessible"); |
|
399 |
|
400 ////////////////////////////////////////////////////////////////////////// |
|
401 // HTML:div |
|
402 |
|
403 obj = { |
|
404 role: ROLE_SECTION, |
|
405 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
406 children: [ |
|
407 { role: ROLE_TEXT_LEAF } // plain text |
|
408 ] |
|
409 }; |
|
410 testElm("div", obj); |
|
411 |
|
412 ////////////////////////////////////////////////////////////////////////// |
|
413 // HTML:em in a paragraph |
|
414 |
|
415 obj = { |
|
416 role: ROLE_PARAGRAPH, |
|
417 textAttrs: { |
|
418 0: { }, |
|
419 6: { "font-style": "italic" } |
|
420 }, |
|
421 children: [ |
|
422 { role: ROLE_TEXT_LEAF }, // plain text |
|
423 { role: ROLE_TEXT_LEAF } // HTML:em text |
|
424 ] |
|
425 }; |
|
426 testElm("em_container", obj); |
|
427 |
|
428 ////////////////////////////////////////////////////////////////////////// |
|
429 // HTML:embed (windowless and windowed plugins) |
|
430 |
|
431 if (WIN) { |
|
432 obj = { |
|
433 role: ROLE_EMBEDDED_OBJECT, |
|
434 states: STATE_UNAVAILABLE |
|
435 }; |
|
436 |
|
437 testElm("embed_plugin_windowless", obj); |
|
438 |
|
439 obj = { |
|
440 role: ROLE_EMBEDDED_OBJECT, |
|
441 absentStates: STATE_UNAVAILABLE |
|
442 }; |
|
443 testElm("embed_plugin_windowed", obj); |
|
444 } |
|
445 |
|
446 ////////////////////////////////////////////////////////////////////////// |
|
447 // HTML:fieldset and HTML:legend |
|
448 |
|
449 obj = { |
|
450 role: ROLE_GROUPING, |
|
451 relations: { |
|
452 RELATION_LABELLED_BY: "legend" |
|
453 }, |
|
454 children: [ |
|
455 { |
|
456 role: ROLE_LABEL, |
|
457 relations: { |
|
458 RELATION_LABEL_FOR: "fieldset" |
|
459 }, |
|
460 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
461 }, |
|
462 { |
|
463 role: ROLE_ENTRY |
|
464 } |
|
465 ] |
|
466 }; |
|
467 testElm("fieldset", obj); |
|
468 |
|
469 ////////////////////////////////////////////////////////////////////////// |
|
470 // HTML:figure and HTML:figcaption |
|
471 |
|
472 obj = { |
|
473 role: ROLE_FIGURE, |
|
474 attributes: { "xml-roles": "figure" }, |
|
475 relations: { |
|
476 RELATION_LABELLED_BY: "figcaption" |
|
477 }, |
|
478 children: [ |
|
479 { role: ROLE_GRAPHIC }, |
|
480 { |
|
481 role: ROLE_CAPTION, |
|
482 relations: { |
|
483 RELATION_LABEL_FOR: "figure" |
|
484 }, |
|
485 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
486 } |
|
487 ] |
|
488 }; |
|
489 testElm("figure", obj); |
|
490 |
|
491 ////////////////////////////////////////////////////////////////////////// |
|
492 // HTML:footer |
|
493 |
|
494 obj = { |
|
495 role: ROLE_FOOTER, |
|
496 attributes: { "xml-roles": "contentinfo" }, |
|
497 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
498 }; |
|
499 testElm("footer", obj); |
|
500 |
|
501 obj = { |
|
502 role: ROLE_FOOTER, |
|
503 absentAttributes: { "xml-roles": "contentinfo" }, |
|
504 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
505 }; |
|
506 testElm("footer_in_article", obj); |
|
507 testElm("footer_in_section", obj); |
|
508 |
|
509 ////////////////////////////////////////////////////////////////////////// |
|
510 // HTML:form |
|
511 |
|
512 obj = { |
|
513 role: ROLE_FORM |
|
514 }; |
|
515 testElm("form", obj); |
|
516 |
|
517 ////////////////////////////////////////////////////////////////////////// |
|
518 // // HTML:frameset, HTML:frame and HTML:iframe |
|
519 |
|
520 obj = { |
|
521 INTERNAL_FRAME: [ { // HTML:iframe |
|
522 DOCUMENT: [ { |
|
523 INTERNAL_FRAME: [ { // HTML:frame |
|
524 DOCUMENT: [ { role: ROLE_TEXT_LEAF} ] |
|
525 } ] |
|
526 } ] |
|
527 } ] |
|
528 }; |
|
529 testElm("frameset_container", obj); |
|
530 |
|
531 ////////////////////////////////////////////////////////////////////////// |
|
532 // HTML:h1, HTML:h2, HTML:h3, HTML:h4, HTML:h5, HTML:h6 |
|
533 |
|
534 obj = { |
|
535 role: ROLE_HEADING, |
|
536 attributes: { "level": "1" }, |
|
537 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
538 }; |
|
539 testElm("h1", obj); |
|
540 |
|
541 obj = { |
|
542 role: ROLE_HEADING, |
|
543 attributes: { "level": "2" }, |
|
544 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
545 }; |
|
546 testElm("h2", obj); |
|
547 |
|
548 obj = { |
|
549 role: ROLE_HEADING, |
|
550 attributes: { "level": "3" }, |
|
551 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
552 }; |
|
553 testElm("h3", obj); |
|
554 |
|
555 obj = { |
|
556 role: ROLE_HEADING, |
|
557 attributes: { "level": "4" }, |
|
558 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
559 }; |
|
560 testElm("h4", obj); |
|
561 |
|
562 obj = { |
|
563 role: ROLE_HEADING, |
|
564 attributes: { "level": "5" }, |
|
565 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
566 }; |
|
567 testElm("h5", obj); |
|
568 |
|
569 obj = { |
|
570 role: ROLE_HEADING, |
|
571 attributes: { "level": "6" }, |
|
572 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
573 }; |
|
574 testElm("h6", obj); |
|
575 |
|
576 ////////////////////////////////////////////////////////////////////////// |
|
577 // HTML:header |
|
578 |
|
579 obj = { |
|
580 role: ROLE_HEADER, |
|
581 attributes: { "xml-roles": "banner" }, |
|
582 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
583 }; |
|
584 testElm("header", obj); |
|
585 |
|
586 obj = { |
|
587 role: ROLE_HEADER, |
|
588 absentAttributes: { "xml-roles": "banner" }, |
|
589 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
590 }; |
|
591 testElm("header_in_article", obj); |
|
592 testElm("header_in_section", obj); |
|
593 |
|
594 ////////////////////////////////////////////////////////////////////////// |
|
595 // HTML:hr |
|
596 |
|
597 obj = { |
|
598 role: ROLE_SEPARATOR, |
|
599 }; |
|
600 testElm("hr", obj); |
|
601 |
|
602 ////////////////////////////////////////////////////////////////////////// |
|
603 obj = { // HTML:i contained by paragraph |
|
604 role: ROLE_PARAGRAPH, |
|
605 textAttrs: { |
|
606 0: { }, |
|
607 6: { "font-style": "italic" } |
|
608 }, |
|
609 children: [ |
|
610 { role: ROLE_TEXT_LEAF }, // plain text |
|
611 { role: ROLE_TEXT_LEAF } // HTML:i text |
|
612 ] |
|
613 } |
|
614 testElm("i_container", obj); |
|
615 |
|
616 ////////////////////////////////////////////////////////////////////////// |
|
617 // HTML:img |
|
618 |
|
619 obj = { |
|
620 role: ROLE_GRAPHIC, |
|
621 interfaces: [ nsIAccessibleImage ] |
|
622 }; |
|
623 testElm("img", obj); |
|
624 |
|
625 ////////////////////////////////////////////////////////////////////////// |
|
626 // HTML:input@type="button" |
|
627 |
|
628 obj = { |
|
629 role: ROLE_PUSHBUTTON, |
|
630 absentStates: STATE_DEFAULT |
|
631 }; |
|
632 testElm("input_button", obj); |
|
633 |
|
634 ////////////////////////////////////////////////////////////////////////// |
|
635 // HTML:input@type="checkbox" |
|
636 |
|
637 obj = { |
|
638 role: ROLE_CHECKBUTTON, |
|
639 states: STATE_CHECKABLE, |
|
640 absentStates: STATE_CHECKED, |
|
641 actions: "check" |
|
642 }; |
|
643 testElm("input_checkbox", obj); |
|
644 |
|
645 obj = { |
|
646 role: ROLE_CHECKBUTTON, |
|
647 states: STATE_CHECKABLE | STATE_CHECKED, |
|
648 actions: "uncheck" |
|
649 }; |
|
650 testElm("input_checkbox_true", obj); |
|
651 |
|
652 ////////////////////////////////////////////////////////////////////////// |
|
653 // HTML:input@type="file" |
|
654 |
|
655 obj = { |
|
656 TEXT_CONTAINER: [ |
|
657 { role: ROLE_PUSHBUTTON }, |
|
658 { role: ROLE_LABEL } |
|
659 ] |
|
660 }; |
|
661 testElm("input_file", obj); |
|
662 |
|
663 ////////////////////////////////////////////////////////////////////////// |
|
664 // HTML:input@type="image" |
|
665 |
|
666 obj = { |
|
667 role: ROLE_PUSHBUTTON, |
|
668 absentStates: STATE_DEFAULT, |
|
669 actions: "press" |
|
670 }; |
|
671 testElm("input_image", obj); |
|
672 testElm("input_submit", obj); |
|
673 |
|
674 obj = { |
|
675 role: ROLE_PUSHBUTTON, |
|
676 actions: "press", |
|
677 states: STATE_DEFAULT |
|
678 }; |
|
679 testElm("input_image_default", obj); |
|
680 testElm("input_submit_default", obj); |
|
681 |
|
682 ////////////////////////////////////////////////////////////////////////// |
|
683 // HTML:input@type="number" and etc |
|
684 |
|
685 obj = { |
|
686 role: ROLE_SPINBUTTON, |
|
687 interfaces: [ nsIAccessibleValue ], |
|
688 children: [ |
|
689 { |
|
690 role: ROLE_ENTRY, |
|
691 extraStates: EXT_STATE_EDITABLE | EXT_STATE_SINGLE_LINE, |
|
692 actions: "activate", |
|
693 interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ], |
|
694 children: [ |
|
695 { role: ROLE_TEXT_LEAF } |
|
696 ] |
|
697 }, |
|
698 { |
|
699 role: ROLE_PUSHBUTTON, |
|
700 actions: "press" |
|
701 }, |
|
702 { |
|
703 role: ROLE_PUSHBUTTON, |
|
704 actions: "press" |
|
705 } |
|
706 ] |
|
707 }; |
|
708 testElm("input_number", obj); |
|
709 |
|
710 ////////////////////////////////////////////////////////////////////////// |
|
711 // HTML:input@type="text" and etc |
|
712 |
|
713 obj = { |
|
714 role: ROLE_ENTRY, |
|
715 extraStates: EXT_STATE_EDITABLE | EXT_STATE_SINGLE_LINE, |
|
716 actions: "activate", |
|
717 interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ], |
|
718 children: [ |
|
719 { role: ROLE_TEXT_LEAF } |
|
720 ] |
|
721 }; |
|
722 testElm("input_email", obj); |
|
723 testElm("input_search", obj); |
|
724 testElm("input_tel", obj); |
|
725 testElm("input_text", obj); |
|
726 testElm("input_url", obj); |
|
727 |
|
728 ////////////////////////////////////////////////////////////////////////// |
|
729 // HTML:input@type="password" |
|
730 |
|
731 obj = { |
|
732 role: ROLE_PASSWORD_TEXT, |
|
733 states: STATE_PROTECTED, |
|
734 extraStates: EXT_STATE_EDITABLE, |
|
735 actions: "activate", |
|
736 children: [ |
|
737 { |
|
738 role: ROLE_TEXT_LEAF |
|
739 } |
|
740 ] |
|
741 }; |
|
742 testElm("input_password", obj); |
|
743 ok(getAccessible("input_password").firstChild.name != "44", |
|
744 "text leaf for password shouldn't have its real value as its name!"); |
|
745 |
|
746 obj = { |
|
747 role: ROLE_PASSWORD_TEXT, |
|
748 states: STATE_PROTECTED | STATE_READONLY, |
|
749 actions: "activate", |
|
750 children: [ |
|
751 { |
|
752 role: ROLE_TEXT_LEAF |
|
753 } |
|
754 ] |
|
755 }; |
|
756 testElm("input_password_readonly", obj); |
|
757 ok(getAccessible("input_password_readonly").firstChild.name != "44", |
|
758 "text leaf for password shouldn't have its real value as its name!"); |
|
759 |
|
760 ////////////////////////////////////////////////////////////////////////// |
|
761 // HTML:input@type="radio" |
|
762 |
|
763 obj = { |
|
764 role: ROLE_RADIOBUTTON, |
|
765 states: STATE_CHECKABLE, |
|
766 absentStates: STATE_CHECKED, |
|
767 actions: "select" |
|
768 }; |
|
769 testElm("input_radio", obj); |
|
770 |
|
771 obj = { |
|
772 role: ROLE_RADIOBUTTON, |
|
773 states: STATE_CHECKABLE | STATE_CHECKED, |
|
774 actions: "select" |
|
775 }; |
|
776 testElm("input_radio_true", obj); |
|
777 |
|
778 ////////////////////////////////////////////////////////////////////////// |
|
779 // HTML:input@type="range" |
|
780 |
|
781 obj = { |
|
782 role: ROLE_SLIDER |
|
783 }; |
|
784 testElm("input_range", obj); |
|
785 |
|
786 ////////////////////////////////////////////////////////////////////////// |
|
787 // HTML:input@type="reset" |
|
788 |
|
789 obj = { |
|
790 role: ROLE_PUSHBUTTON, |
|
791 actions: "press", |
|
792 absentStates: STATE_DEFAULT |
|
793 }; |
|
794 testElm("input_reset", obj); |
|
795 |
|
796 ////////////////////////////////////////////////////////////////////////// |
|
797 // HTML:ins contained by paragraph |
|
798 |
|
799 obj = { |
|
800 role: ROLE_PARAGRAPH, |
|
801 textAttrs: { |
|
802 0: { }, |
|
803 6: { "text-underline-style": "solid" } |
|
804 }, |
|
805 children: [ |
|
806 { role: ROLE_TEXT_LEAF }, // plain text |
|
807 { role: ROLE_TEXT_LEAF } // HTML:ins text |
|
808 ] |
|
809 }; |
|
810 testElm("ins_container", obj); |
|
811 |
|
812 ////////////////////////////////////////////////////////////////////////// |
|
813 // HTML:kbd contained by paragraph |
|
814 |
|
815 obj = { |
|
816 role: ROLE_PARAGRAPH, |
|
817 textAttrs: { |
|
818 0: { }, |
|
819 6: { "font-family": kMonospaceFontFamily } |
|
820 }, |
|
821 children: [ |
|
822 { role: ROLE_TEXT_LEAF }, // plain text |
|
823 { role: ROLE_TEXT_LEAF } // HTML:kbd text |
|
824 ] |
|
825 }; |
|
826 testElm("kbd_container", obj); |
|
827 |
|
828 ////////////////////////////////////////////////////////////////////////// |
|
829 // HTML:keygen |
|
830 |
|
831 obj = { |
|
832 role: ROLE_COMBOBOX, |
|
833 states: STATE_COLLAPSED | STATE_HASPOPUP, |
|
834 extraStates: EXT_STATE_EXPANDABLE, |
|
835 actions: "open", |
|
836 children: [ |
|
837 { COMBOBOX_LIST: [ |
|
838 { role: ROLE_COMBOBOX_OPTION }, // high grade |
|
839 { role: ROLE_COMBOBOX_OPTION } // medium grade |
|
840 ] } |
|
841 ] |
|
842 }; |
|
843 testElm("keygen", obj); |
|
844 |
|
845 ////////////////////////////////////////////////////////////////////////// |
|
846 // HTML:label |
|
847 |
|
848 obj = { |
|
849 role: ROLE_LABEL, |
|
850 todo_relations: { |
|
851 RELATION_LABEL_FOR: "label_input" |
|
852 }, |
|
853 children: [ |
|
854 { role: ROLE_TEXT_LEAF }, // plain text |
|
855 { |
|
856 role: ROLE_ENTRY, |
|
857 relations: { |
|
858 RELATION_LABELLED_BY: "label" |
|
859 } |
|
860 } |
|
861 ] |
|
862 }; |
|
863 testElm("label", obj); |
|
864 |
|
865 obj = { |
|
866 role: ROLE_LABEL, |
|
867 relations: { |
|
868 RELATION_LABEL_FOR: "label_for_input" |
|
869 } |
|
870 }; |
|
871 testElm("label_for", obj); |
|
872 |
|
873 obj = { |
|
874 role: ROLE_ENTRY, |
|
875 relations: { |
|
876 RELATION_LABELLED_BY: "label_for" |
|
877 } |
|
878 }; |
|
879 testElm("label_for_input", obj); |
|
880 |
|
881 ////////////////////////////////////////////////////////////////////////// |
|
882 // HTML:ul, HTML:ol, HTML:li |
|
883 |
|
884 obj = { // ul or ol |
|
885 role: ROLE_LIST, |
|
886 states: STATE_READONLY, |
|
887 children: [ |
|
888 { // li |
|
889 role: ROLE_LISTITEM, |
|
890 states: STATE_READONLY, |
|
891 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
892 } |
|
893 ] |
|
894 }; |
|
895 testElm("ul", obj); |
|
896 testElm("ol", obj); |
|
897 |
|
898 ////////////////////////////////////////////////////////////////////////// |
|
899 // HTML:link |
|
900 |
|
901 ok(!isAccessible("link"), "link element is not accessible"); |
|
902 |
|
903 ////////////////////////////////////////////////////////////////////////// |
|
904 // HTML:main |
|
905 |
|
906 obj = { |
|
907 todo_role: ROLE_GROUPING, |
|
908 attributes: { "xml-roles": "main" }, |
|
909 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
910 }; |
|
911 testElm("main", obj); |
|
912 |
|
913 ////////////////////////////////////////////////////////////////////////// |
|
914 // HTML:map |
|
915 |
|
916 ok(!isAccessible("map_imagemap"), |
|
917 "map element is not accessible if used as an image map"); |
|
918 |
|
919 obj = { |
|
920 role: ROLE_TEXT_CONTAINER |
|
921 }; |
|
922 testElm("map", obj); |
|
923 |
|
924 ////////////////////////////////////////////////////////////////////////// |
|
925 // HTML:mark contained by paragraph |
|
926 |
|
927 obj = { |
|
928 role: ROLE_PARAGRAPH, |
|
929 textAttrs: { |
|
930 0: { }, |
|
931 6: { "background-color": "rgb(255, 255, 0)" } |
|
932 }, |
|
933 children: [ |
|
934 { role: ROLE_TEXT_LEAF }, // plain text |
|
935 { role: ROLE_TEXT_LEAF } // HTML:mark text |
|
936 ] |
|
937 }; |
|
938 testElm("mark_container", obj); |
|
939 |
|
940 ////////////////////////////////////////////////////////////////////////// |
|
941 // HTML:math |
|
942 |
|
943 obj = { |
|
944 role: ROLE_EQUATION |
|
945 }; |
|
946 testElm("math", obj); |
|
947 |
|
948 ////////////////////////////////////////////////////////////////////////// |
|
949 // HTML:menu |
|
950 |
|
951 obj = { |
|
952 todo_role: ROLE_MENUPOPUP |
|
953 }; |
|
954 testElm("menu", obj); |
|
955 |
|
956 ////////////////////////////////////////////////////////////////////////// |
|
957 // HTML:meter |
|
958 |
|
959 todo(isAccessible("meter"), "meter element is not accessible"); |
|
960 |
|
961 ////////////////////////////////////////////////////////////////////////// |
|
962 // HTML:nav |
|
963 |
|
964 obj = { |
|
965 role: ROLE_SECTION, |
|
966 attributes: { "xml-roles": "navigation" }, |
|
967 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
968 }; |
|
969 testElm("nav", obj); |
|
970 |
|
971 ////////////////////////////////////////////////////////////////////////// |
|
972 // HTML:object (windowless and windowed plugins) and HTML:param |
|
973 |
|
974 if (WIN) { |
|
975 obj = { |
|
976 role: ROLE_EMBEDDED_OBJECT, |
|
977 states: STATE_UNAVAILABLE, |
|
978 children: [ ] // no child for HTML:param |
|
979 }; |
|
980 testElm("object_plugin_windowless", obj); |
|
981 |
|
982 obj = { |
|
983 role: ROLE_EMBEDDED_OBJECT, |
|
984 absentStates: STATE_UNAVAILABLE |
|
985 }; |
|
986 testElm("object_plugin_windowed", obj); |
|
987 } |
|
988 |
|
989 ////////////////////////////////////////////////////////////////////////// |
|
990 // HTML:select, HTML:optgroup and HTML:option |
|
991 |
|
992 obj = { // HMTL:select@size > 1 |
|
993 role: ROLE_LISTBOX, |
|
994 states: STATE_FOCUSABLE, |
|
995 absentStates: STATE_MULTISELECTABLE, |
|
996 interfaces: [ nsIAccessibleSelectable ], |
|
997 children: [ |
|
998 { GROUPING: [ // HTML:optgroup |
|
999 { role: ROLE_STATICTEXT }, |
|
1000 { role: ROLE_OPTION }, // HTML:option |
|
1001 { role: ROLE_OPTION } |
|
1002 ] }, |
|
1003 { |
|
1004 role: ROLE_OPTION, |
|
1005 states: STATE_FOCUSABLE, |
|
1006 actions: "select", |
|
1007 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
1008 } |
|
1009 ] |
|
1010 }; |
|
1011 testElm("select_listbox", obj); |
|
1012 |
|
1013 obj = { // HTML:select@multiple |
|
1014 role: ROLE_LISTBOX, |
|
1015 states: STATE_FOCUSABLE | STATE_MULTISELECTABLE, |
|
1016 children: [ |
|
1017 { role: ROLE_OPTION }, |
|
1018 { role: ROLE_OPTION }, |
|
1019 { role: ROLE_OPTION } |
|
1020 ] |
|
1021 }; |
|
1022 testElm("select_listbox_multiselectable", obj); |
|
1023 |
|
1024 obj = { // HTML:select |
|
1025 role: ROLE_COMBOBOX, |
|
1026 states: STATE_FOCUSABLE, |
|
1027 children: [ |
|
1028 { |
|
1029 role: ROLE_COMBOBOX_LIST, |
|
1030 children: [ |
|
1031 { role: ROLE_COMBOBOX_OPTION }, |
|
1032 { role: ROLE_COMBOBOX_OPTION }, |
|
1033 { role: ROLE_COMBOBOX_OPTION } |
|
1034 ] |
|
1035 } |
|
1036 ] |
|
1037 }; |
|
1038 testElm("select_combobox", obj); |
|
1039 |
|
1040 ////////////////////////////////////////////////////////////////////////// |
|
1041 // HTML:output |
|
1042 |
|
1043 obj = { |
|
1044 role: ROLE_SECTION, |
|
1045 attributes: { "live": "polite" }, |
|
1046 todo_relations: { |
|
1047 RELATION_CONTROLLED_BY: "output_input" |
|
1048 }, |
|
1049 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
1050 }; |
|
1051 testElm("output", obj); |
|
1052 |
|
1053 obj = { |
|
1054 role: ROLE_ENTRY, |
|
1055 relations: { |
|
1056 RELATION_CONTROLLER_FOR: "output" |
|
1057 } |
|
1058 }; |
|
1059 testElm("output_input", obj); |
|
1060 |
|
1061 ////////////////////////////////////////////////////////////////////////// |
|
1062 // HTML:pre |
|
1063 |
|
1064 obj = { |
|
1065 role: ROLE_PARAGRAPH, |
|
1066 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
1067 }; |
|
1068 testElm("pre", obj); |
|
1069 |
|
1070 /////////////////////////////////////////////////////////////////////////// |
|
1071 // HTML:progress |
|
1072 |
|
1073 obj = { |
|
1074 role: ROLE_PROGRESSBAR, |
|
1075 absentStates: STATE_MIXED, |
|
1076 interfaces: [ nsIAccessibleValue ] |
|
1077 }; |
|
1078 testElm("progress", obj); |
|
1079 |
|
1080 obj = { |
|
1081 role: ROLE_PROGRESSBAR, |
|
1082 states: STATE_MIXED |
|
1083 }; |
|
1084 testElm("progress_indeterminate", obj); |
|
1085 |
|
1086 ////////////////////////////////////////////////////////////////////////// |
|
1087 // HTML:q |
|
1088 |
|
1089 obj = { |
|
1090 role: ROLE_TEXT_CONTAINER, |
|
1091 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ], |
|
1092 children: [ |
|
1093 { role: ROLE_STATICTEXT }, // left quote |
|
1094 { role: ROLE_TEXT_LEAF }, // quoted text |
|
1095 { role: ROLE_STATICTEXT } // right quote |
|
1096 ] |
|
1097 }; |
|
1098 testElm("q", obj); |
|
1099 |
|
1100 ////////////////////////////////////////////////////////////////////////// |
|
1101 // HTML:ruby |
|
1102 |
|
1103 todo(isAccessible("ruby"), "ruby element is not accessible"); |
|
1104 |
|
1105 ////////////////////////////////////////////////////////////////////////// |
|
1106 // HTML:s contained by paragraph |
|
1107 |
|
1108 obj = { |
|
1109 role: ROLE_PARAGRAPH, |
|
1110 textAttrs: { |
|
1111 0: { }, |
|
1112 6: { "text-line-through-style": "solid" } |
|
1113 }, |
|
1114 children: [ |
|
1115 { role: ROLE_TEXT_LEAF }, // plain text |
|
1116 { role: ROLE_TEXT_LEAF } // HTML:i text |
|
1117 ] |
|
1118 }; |
|
1119 testElm("s_container", obj); |
|
1120 |
|
1121 ////////////////////////////////////////////////////////////////////////// |
|
1122 // HTML:samp contained by paragraph |
|
1123 |
|
1124 obj = { |
|
1125 role: ROLE_PARAGRAPH, |
|
1126 children: [ |
|
1127 { role: ROLE_TEXT_LEAF }, // plain text |
|
1128 { role: ROLE_TEXT_LEAF } // HTML:samp text |
|
1129 ] |
|
1130 }; |
|
1131 testElm("samp_container", obj); |
|
1132 |
|
1133 ////////////////////////////////////////////////////////////////////////// |
|
1134 // HTML:section |
|
1135 |
|
1136 obj = { |
|
1137 role: ROLE_SECTION, |
|
1138 attributes: { "xml-roles": "region" }, |
|
1139 interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ] |
|
1140 }; |
|
1141 testElm("section", obj); |
|
1142 |
|
1143 ////////////////////////////////////////////////////////////////////////// |
|
1144 // HTML:small contained by paragraph |
|
1145 |
|
1146 obj = { |
|
1147 role: ROLE_PARAGRAPH, |
|
1148 textAttrs: { |
|
1149 0: { }, |
|
1150 6: { "font-size": "10pt" } |
|
1151 }, |
|
1152 children: [ |
|
1153 { role: ROLE_TEXT_LEAF }, // plain text |
|
1154 { role: ROLE_TEXT_LEAF } // HTML:small text |
|
1155 ] |
|
1156 }; |
|
1157 testElm("small_container", obj); |
|
1158 |
|
1159 ////////////////////////////////////////////////////////////////////////// |
|
1160 // HTML:source |
|
1161 |
|
1162 ok(!isAccessible("source"), "source element is not accessible"); |
|
1163 |
|
1164 ////////////////////////////////////////////////////////////////////////// |
|
1165 // HTML:span |
|
1166 |
|
1167 ok(!isAccessible("span"), "span element is not accessible"); |
|
1168 |
|
1169 ////////////////////////////////////////////////////////////////////////// |
|
1170 // HTML:strong contained by paragraph |
|
1171 |
|
1172 obj = { |
|
1173 role: ROLE_PARAGRAPH, |
|
1174 children: [ |
|
1175 { role: ROLE_TEXT_LEAF }, // plain text |
|
1176 { role: ROLE_TEXT_LEAF } // HTML:strong text |
|
1177 ] |
|
1178 }; |
|
1179 testElm("strong_container", obj); |
|
1180 |
|
1181 ////////////////////////////////////////////////////////////////////////// |
|
1182 // HTML:sub contained by paragraph |
|
1183 |
|
1184 obj = { |
|
1185 role: ROLE_PARAGRAPH, |
|
1186 textAttrs: { |
|
1187 0: { }, |
|
1188 6: { "text-position": "sub" } |
|
1189 }, |
|
1190 children: [ |
|
1191 { role: ROLE_TEXT_LEAF }, // plain text |
|
1192 { role: ROLE_TEXT_LEAF } // HTML:sub text |
|
1193 ] |
|
1194 }; |
|
1195 testElm("sub_container", obj); |
|
1196 |
|
1197 ////////////////////////////////////////////////////////////////////////// |
|
1198 // HTML:sup contained by paragraph |
|
1199 |
|
1200 obj = { |
|
1201 role: ROLE_PARAGRAPH, |
|
1202 textAttrs: { |
|
1203 0: { }, |
|
1204 6: { "text-position": "super" } |
|
1205 }, |
|
1206 children: [ |
|
1207 { role: ROLE_TEXT_LEAF }, // plain text |
|
1208 { role: ROLE_TEXT_LEAF } // HTML:sup text |
|
1209 ] |
|
1210 }; |
|
1211 testElm("sup_container", obj); |
|
1212 |
|
1213 ////////////////////////////////////////////////////////////////////////// |
|
1214 // HTML:svg |
|
1215 |
|
1216 obj = { |
|
1217 todo_role: ROLE_GRAPHIC |
|
1218 }; |
|
1219 testElm("svg", obj); |
|
1220 |
|
1221 ////////////////////////////////////////////////////////////////////////// |
|
1222 // HTML:textarea |
|
1223 |
|
1224 obj = { |
|
1225 role: ROLE_ENTRY, |
|
1226 extraStates: EXT_STATE_MULTI_LINE | EXT_STATE_EDITABLE, |
|
1227 actions: "activate", |
|
1228 interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ] |
|
1229 }; |
|
1230 testElm("textarea", obj); |
|
1231 |
|
1232 ////////////////////////////////////////////////////////////////////////// |
|
1233 // HTML:time |
|
1234 |
|
1235 ok(!isAccessible("time"), "time element is not accessible"); |
|
1236 |
|
1237 ////////////////////////////////////////////////////////////////////////// |
|
1238 // HTML:u contained by paragraph |
|
1239 |
|
1240 obj = { |
|
1241 role: ROLE_PARAGRAPH, |
|
1242 textAttrs: { |
|
1243 0: { }, |
|
1244 6: { "text-underline-style" : "solid" } |
|
1245 }, |
|
1246 children: [ |
|
1247 { role: ROLE_TEXT_LEAF }, // plain text |
|
1248 { role: ROLE_TEXT_LEAF } // HTML:u text |
|
1249 ] |
|
1250 }; |
|
1251 testElm("u_container", obj); |
|
1252 |
|
1253 ////////////////////////////////////////////////////////////////////////// |
|
1254 // HTML:var contained by paragraph |
|
1255 |
|
1256 obj = { |
|
1257 role: ROLE_PARAGRAPH, |
|
1258 children: [ |
|
1259 { role: ROLE_TEXT_LEAF }, // plain text |
|
1260 { role: ROLE_TEXT_LEAF }, // HTML:var text |
|
1261 { role: ROLE_TEXT_LEAF }, // plain text |
|
1262 { role: ROLE_TEXT_LEAF } // HTML:var text |
|
1263 ] |
|
1264 }; |
|
1265 testElm("var_container", obj); |
|
1266 |
|
1267 ////////////////////////////////////////////////////////////////////////// |
|
1268 obj = { // HTML:video |
|
1269 role: ROLE_GROUPING |
|
1270 }; |
|
1271 testElm("video", obj); |
|
1272 |
|
1273 SimpleTest.finish(); |
|
1274 } |
|
1275 |
|
1276 SimpleTest.waitForExplicitFinish(); |
|
1277 addA11yLoadEvent(doTest); |
|
1278 setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED); |
|
1279 |
|
1280 </script> |
|
1281 </head> |
|
1282 <body> |
|
1283 |
|
1284 <a target="_blank" |
|
1285 title="Implement figure and figcaption accessibility" |
|
1286 href="https://bugzilla.mozilla.org/show_bug.cgi?id=658272"> |
|
1287 Mozilla Bug 658272 |
|
1288 </a><br/> |
|
1289 <p id="display"></p> |
|
1290 <div id="content" style="display: none"></div> |
|
1291 <pre id="test"> |
|
1292 </pre> |
|
1293 |
|
1294 <a id="a_href" href="www.mozilla.com">mozilla site</a> |
|
1295 <a id="a_nohref">anchor</a> |
|
1296 <table> |
|
1297 <tr> |
|
1298 <td id="td_abbr"><abbr title="World Wide Web">WWW</abbr></td> |
|
1299 </tr> |
|
1300 </table> |
|
1301 <address id="address"> |
|
1302 Mozilla Foundation<br> |
|
1303 1981 Landings Drive<br> |
|
1304 Building K<br> |
|
1305 Mountain View, CA 94043-0801<br> |
|
1306 USA |
|
1307 </address> |
|
1308 |
|
1309 <map name="atoz_map"> |
|
1310 <area id="area_href" |
|
1311 href="http://www.bbc.co.uk/radio4/atoz/index.shtml#b" |
|
1312 coords="17,0,30,14" alt="b" shape="rect"> |
|
1313 <area id="area_nohref" |
|
1314 coords="0,0,13,14" alt="a" shape="rect"> |
|
1315 </map> |
|
1316 <img id="imgmap" width="447" height="15" |
|
1317 usemap="#atoz_map" |
|
1318 src="../letters.gif"> |
|
1319 |
|
1320 <article id="article">A document</article> |
|
1321 <audio id="audio" controls="true"> |
|
1322 <source id="source" src="../bug461281.ogg" type="video/ogg"> |
|
1323 </audio> |
|
1324 |
|
1325 <aside id="aside"> |
|
1326 <p>Some content related to an <article></p> |
|
1327 </aside> |
|
1328 |
|
1329 <p id="b_container">normal<b>bold</b></p> |
|
1330 <p id="bdi_container">User <bdi>إيان</bdi>: 90 points</p> |
|
1331 <p id="bdo_container"><bdo dir="rtl">This text will go right to left.</bdo></p> |
|
1332 |
|
1333 <blockquote id="blockquote" cite="http://developer.mozilla.org"> |
|
1334 <p>This is a quotation taken from the Mozilla Developer Center.</p> |
|
1335 </blockquote> |
|
1336 |
|
1337 <!-- two BRs, one will be eaten --> |
|
1338 <p id="br_container"><br><br></p> |
|
1339 |
|
1340 <button id="button">button</button> |
|
1341 <form> |
|
1342 <button id="button_default" type="submit">button</button> |
|
1343 </form> |
|
1344 |
|
1345 <canvas id="canvas"></canvas> |
|
1346 |
|
1347 <table id="table"> |
|
1348 <caption id="caption">caption</caption> |
|
1349 <thead> |
|
1350 <tr> |
|
1351 <th>col1</th><th>col2</th> |
|
1352 </tr> |
|
1353 </thead> |
|
1354 <tbody> |
|
1355 <tr> |
|
1356 <th>col1</th><td>cell2</td> |
|
1357 </tr> |
|
1358 </tbody> |
|
1359 <tfoot> |
|
1360 <tr> |
|
1361 <td>cell5</td><td>cell6</td> |
|
1362 </tr> |
|
1363 </tfoot> |
|
1364 </table> |
|
1365 |
|
1366 <p id="cite_container">normal<cite>cite</cite></p> |
|
1367 <p id="code_container">normal<code>code</code></p> |
|
1368 |
|
1369 <table id="colNcolgroup_table"> |
|
1370 <colgroup> |
|
1371 <col> |
|
1372 <col span="2"> |
|
1373 </colgroup> |
|
1374 <tr> |
|
1375 <td>Lime</td> |
|
1376 <td>Lemon</td> |
|
1377 <td>Orange</td> |
|
1378 </tr> |
|
1379 </table> |
|
1380 |
|
1381 <p id="data_container"><data value="8">Eight</data></p> |
|
1382 |
|
1383 <datalist id="datalist"> |
|
1384 <summary id="summary">details</summary> |
|
1385 <option>Paris</option> |
|
1386 <option>San Francisco</option> |
|
1387 </datalist> |
|
1388 <input id="autocomplete_datalist" list="datalist"> |
|
1389 |
|
1390 <dl id="dl"> |
|
1391 <dt>item1</dt><dd>description</dd> |
|
1392 </dl> |
|
1393 |
|
1394 <p id="del_container">normal<del>Removed</del></p> |
|
1395 |
|
1396 <details id="details" open="open"> |
|
1397 <summary>Information</summary> |
|
1398 <p>If your browser supports this element, it should allow you to expand and collapse these details.</p> |
|
1399 </details> |
|
1400 |
|
1401 <p id="dfn_container"><dfn id="def-internet">The Internet</dfn> is a global |
|
1402 system of interconnected networks that use the Internet Protocol Suite (TCP/IP) |
|
1403 to serve billions of users worldwide.</p> |
|
1404 |
|
1405 <dialog id="dialog" open="true">This is a dialog</dialog> |
|
1406 |
|
1407 <div id="div">div</div> |
|
1408 |
|
1409 <p id="em_container">normal<em>emphasis</em></p> |
|
1410 |
|
1411 <embed id="embed_plugin_windowless" type="application/x-test" |
|
1412 width="300" height="300"></embed> |
|
1413 <embed id="embed_plugin_windowed" type="application/x-test" wmode="window" |
|
1414 width="300" height="300"></embed> |
|
1415 |
|
1416 <fieldset id="fieldset"> |
|
1417 <legend id="legend">legend</legend> |
|
1418 <input /> |
|
1419 </fieldset> |
|
1420 |
|
1421 <figure id="figure"> |
|
1422 <img src="../moz.png" alt="An awesome picture"> |
|
1423 <figcaption id="figcaption">Caption for the awesome picture</figcaption> |
|
1424 </figure> |
|
1425 |
|
1426 <footer id="footer">Some copyright info</footer> |
|
1427 <article> |
|
1428 <footer id="footer_in_article">Some copyright info</footer> |
|
1429 </article> |
|
1430 <section> |
|
1431 <footer id="footer_in_section">Some copyright info</footer> |
|
1432 </section> |
|
1433 |
|
1434 <form id="form"></form> |
|
1435 |
|
1436 <iframe id="frameset_container" |
|
1437 src="data:text/html,<html><frameset><frame src='data:text/html,hi'></frame></frameset></html>"> |
|
1438 </iframe> |
|
1439 |
|
1440 <h1 id="h1">heading1</h1> |
|
1441 <h2 id="h2">heading2</h2> |
|
1442 <h3 id="h3">heading3</h3> |
|
1443 <h4 id="h4">heading4</h4> |
|
1444 <h5 id="h5">heading5</h5> |
|
1445 <h6 id="h6">heading6</h6> |
|
1446 |
|
1447 <header id="header">A logo</header> |
|
1448 <article> |
|
1449 <header id="header_in_article">Not logo</header> |
|
1450 </article> |
|
1451 <section> |
|
1452 <header id="header_in_section">Not logo</header> |
|
1453 </section> |
|
1454 |
|
1455 <hr id="hr"> |
|
1456 <p id="i_container">normal<i>italic</i></p> |
|
1457 <img id="img" src="../moz.png"> |
|
1458 |
|
1459 <input id="input_button" type="button" value="Button"> |
|
1460 <input id="input_checkbox" type="checkbox"> |
|
1461 <input id="input_checkbox_true" type="checkbox" checked> |
|
1462 <input id="input_file" type="file"> |
|
1463 <input id="input_image" type="image"> |
|
1464 <form> |
|
1465 <input id="input_image_default" type="image"> |
|
1466 </form> |
|
1467 <input id="input_submit" type="submit"> |
|
1468 <form> |
|
1469 <input id="input_submit_default" type="submit"> |
|
1470 </form> |
|
1471 <input id="input_number" type="number" value="44"> |
|
1472 <input id="input_text" type="text" value="hi"> |
|
1473 <input id="input_search" type="search" value="cats"> |
|
1474 <input id="input_email" type="email" value="me@mozilla.com"> |
|
1475 <input id="input_tel" type="tel" value="111.111.1111"> |
|
1476 <input id="input_url" type="url" value="www.mozilla.com"> |
|
1477 <input id="input_password" type="password" value="44"> |
|
1478 <input id="input_password_readonly" type="password" value="44" readonly> |
|
1479 <input id="input_radio" type="radio"> |
|
1480 <input id="input_radio_true" type="radio" checked> |
|
1481 <input id="input_range" type="range"> |
|
1482 <form> |
|
1483 <input id="input_reset" type="reset"> |
|
1484 </form> |
|
1485 |
|
1486 <p id="ins_container">normal<ins>Inserted</ins></p> |
|
1487 <p id="kbd_container">normal<kbd>cmd</kbd></p> |
|
1488 <keygen id="keygen" name="RSA public key" challenge="123456789" keytype="RSA"> |
|
1489 |
|
1490 <label id="label">label<input id="label_input"></label> |
|
1491 <label id="label_for" for="label_for_input">label</label> |
|
1492 <input id="label_for_input"> |
|
1493 |
|
1494 <ul id="ul"> |
|
1495 <li>item1</li> |
|
1496 </ul> |
|
1497 <ol id="ol"> |
|
1498 <li>item1</li> |
|
1499 </ol> |
|
1500 |
|
1501 <main id="main">main</main> |
|
1502 |
|
1503 <map id="map_imagemap" name="atoz_map"> |
|
1504 <area href="http://www.bbc.co.uk/radio4/atoz/index.shtml#b" |
|
1505 coords="17,0,30,14" alt="b" shape="rect"> |
|
1506 <area href="http://www.bbc.co.uk/radio4/atoz/index.shtml#a" |
|
1507 coords="0,0,13,14" alt="a" shape="rect"> |
|
1508 </map> |
|
1509 <img id="imgmap" width="447" height="15" |
|
1510 usemap="#atoz_map" |
|
1511 src="../letters.gif"> |
|
1512 |
|
1513 <map id="map" title="Navigation Bar" name="mapgroup"> |
|
1514 <p> |
|
1515 [<a href="#how">Bypass navigation bar</a>] |
|
1516 [<a href="home.html">Home</a>] |
|
1517 </p> |
|
1518 </map> |
|
1519 |
|
1520 <p id="mark_container">normal<mark>highlighted</mark></p> |
|
1521 |
|
1522 <math id="math"> |
|
1523 <mrow> |
|
1524 <mrow> |
|
1525 <msup> |
|
1526 <mi>a</mi> |
|
1527 <mn>2</mn> |
|
1528 </msup> |
|
1529 <mo>+</mo> |
|
1530 <msup> |
|
1531 <mi>b</mi> |
|
1532 <mn>2</mn> |
|
1533 </msup> |
|
1534 </mrow> |
|
1535 <mo>=</mo> |
|
1536 <msup> |
|
1537 <mi>c</mi> |
|
1538 <mn>2</mn> |
|
1539 </msup> |
|
1540 </mrow> |
|
1541 </math> |
|
1542 |
|
1543 <menu id="menu" type="toolbar"> |
|
1544 <li> |
|
1545 <menu label="File"> |
|
1546 <button type="button" onclick="new()">New...</button> |
|
1547 <button type="button" onclick="save()">Save...</button> |
|
1548 </menu> |
|
1549 </li> |
|
1550 <li> |
|
1551 <menu label="Edit"> |
|
1552 <button type="button" onclick="cut()">Cut...</button> |
|
1553 <button type="button" onclick="copy()">Copy...</button> |
|
1554 <button type="button" onclick="paste()">Paste...</button> |
|
1555 </menu> |
|
1556 </li> |
|
1557 </menu> |
|
1558 |
|
1559 <meter id="meter" min="0" max="1000" low="300" high="700" value="200">200 Euro</meter> |
|
1560 |
|
1561 <nav id="nav"> |
|
1562 <ul> |
|
1563 <li><a href="#">Home</a></li> |
|
1564 <li><a href="#">About</a></li> |
|
1565 <li><a href="#">Contact</a></li> |
|
1566 </ul> |
|
1567 </nav> |
|
1568 |
|
1569 <object id="object_plugin_windowless" type="application/x-test" |
|
1570 width="300" height="300"> |
|
1571 <param name="foo" value="bar"> |
|
1572 </object> |
|
1573 <object id="object_plugin_windowed" type="application/x-test" wmode="window" |
|
1574 width="300" height="300"></object> |
|
1575 |
|
1576 <select id="select_listbox" size="4"> |
|
1577 <optgroup label="Colors"> |
|
1578 <option>Red</option> |
|
1579 <option>Blue</option> |
|
1580 </optgroup> |
|
1581 <option>Animal</option> |
|
1582 </select> |
|
1583 |
|
1584 <select id="select_listbox_multiselectable" multiple> |
|
1585 <option>Red</option> |
|
1586 <option>Blue</option> |
|
1587 <option>Green</option> |
|
1588 </select> |
|
1589 |
|
1590 <select id="select_combobox"> |
|
1591 <option>Red</option> |
|
1592 <option>Blue</option> |
|
1593 <option>Green</option> |
|
1594 </select> |
|
1595 |
|
1596 <input id="output_input"> |
|
1597 <output id="output" for="output_input"></output> |
|
1598 |
|
1599 <pre id="pre">pre</pre> |
|
1600 |
|
1601 <progress id="progress" min="0" value="21" max="42"></progress> |
|
1602 <progress id="progress_indeterminate"></progress> |
|
1603 |
|
1604 <q id="q" cite="http://en.wikipedia.org/wiki/Kenny_McCormick#Cultural_impact"> |
|
1605 Oh my God, they killed Kenny! |
|
1606 </q> |
|
1607 |
|
1608 <ruby id="ruby"> |
|
1609 漢 <rp>(</rp><rt>Kan</rt><rp>)</rp> |
|
1610 字 <rp>(</rp><rt>ji</rt><rp>)</rp> |
|
1611 </ruby> |
|
1612 |
|
1613 <p id="s_container">normal<s>striked</s></p> |
|
1614 <p id="samp_container">normal<samp>sample</samp></p> |
|
1615 <section id="section">section</section> |
|
1616 <p id="small_container">normal<small>small</small></p> |
|
1617 <span id="span"></span> |
|
1618 <p id="strong_container">normal<strong>strong</strong></p> |
|
1619 <p id="sub_container">normal<sub>sub</sub></p> |
|
1620 <p id="sup_container">normal<sup>sup</sup></p> |
|
1621 |
|
1622 <svg id="svg"></svg> |
|
1623 <textarea id="textarea"></textarea> |
|
1624 |
|
1625 <p>The concert took place on <time id="time" datetime="2001-05-15 19:00">May 15</time></p> |
|
1626 <p id="u_container">normal<u>underline</u></p> |
|
1627 <p id="var_container">An equation: <var>x</var> = <var>y</var></p> |
|
1628 |
|
1629 <video id="video" controls="true"> |
|
1630 <source id="source" src="../bug461281.ogg" type="video/ogg"> |
|
1631 </video> |
|
1632 |
|
1633 </video> |
|
1634 </body> |
|
1635 </html> |