|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <head> |
|
4 <title>Broken context hierarchy</title> |
|
5 <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="../role.js"></script> |
|
15 <script type="application/javascript" |
|
16 src="../states.js"></script> |
|
17 |
|
18 <script type="application/javascript"> |
|
19 /** |
|
20 * Return true if TD element has a generic accessible. |
|
21 */ |
|
22 function isTDGeneric(aID) |
|
23 { |
|
24 return isAccessible(aID) && !isAccessible(aID, nsIAccessibleTableCell); |
|
25 } |
|
26 |
|
27 function checkIfNotAccessible(aID) |
|
28 { |
|
29 ok(!isAccessible(aID), "'" + aID + "' shouldn't be accessible"); |
|
30 } |
|
31 function checkIfTDGeneric(aID) |
|
32 { |
|
33 ok(isTDGeneric(aID), "'" + aID + "' shouldn't have cell accessible"); |
|
34 } |
|
35 |
|
36 function doTest() |
|
37 { |
|
38 //////////////////////////////////////////////////////////////////////////// |
|
39 // HTML table elements outside table context. |
|
40 |
|
41 // HTML table role="presentation" |
|
42 checkIfNotAccessible("tr_in_presentation_table"); |
|
43 checkIfTDGeneric("th_in_presentation_table"); |
|
44 checkIfTDGeneric("td_in_presentation_table"); |
|
45 |
|
46 // HTML table role="button" |
|
47 var tree = |
|
48 { PUSHBUTTON: [ // table |
|
49 { NOTHING: [ // tr |
|
50 { NOTHING: [ // th |
|
51 { TEXT_LEAF: [ ] } |
|
52 ] }, |
|
53 { NOTHING: [ // td |
|
54 { TEXT_LEAF: [ ] } |
|
55 ] } |
|
56 ] } |
|
57 ] }; |
|
58 testAccessibleTree("button_table", tree); |
|
59 |
|
60 // HTML table display:inline |
|
61 checkIfNotAccessible("inline_table1"); |
|
62 checkIfNotAccessible("tr_in_inline_table1"); |
|
63 checkIfTDGeneric("td1_in_inline_table1"); |
|
64 checkIfTDGeneric("td2_in_inline_table1"); |
|
65 |
|
66 // HTML table display:inline inside table. We shouldn't be fooled |
|
67 // by the outside table and shouldn't create table accessible and table cell |
|
68 // accessible in this case. |
|
69 checkIfNotAccessible("inline_table2"); |
|
70 checkIfNotAccessible("tr_in_inline_table2"); |
|
71 checkIfTDGeneric("td_in_inline_table2"); |
|
72 |
|
73 // HTML table display:block inside table. |
|
74 checkIfNotAccessible("block_table"); |
|
75 checkIfNotAccessible("tr_in_block_table"); |
|
76 checkIfTDGeneric("td_in_block_table"); |
|
77 |
|
78 //////////////////////////////////////////////////////////////////////////// |
|
79 // HTML list elements outside list context. |
|
80 |
|
81 ok(!isAccessible("presentation_ul"), |
|
82 "presentational ul shouldn't be accessible"); |
|
83 ok(!isAccessible("item_in_presentation_ul"), |
|
84 "li in presentational ul shouldn't be accessible"); |
|
85 ok(!isAccessible("styleditem_in_presentation_ul"), |
|
86 "list styled span in presentational ul shouldn't be accessible"); |
|
87 |
|
88 ok(!isAccessible("presentation_ol"), |
|
89 "presentational ol shouldn't be accessible"); |
|
90 ok(!isAccessible("item_in_presentation_ol"), |
|
91 "li in presentational ol shouldn't be accessible"); |
|
92 |
|
93 ok(!isAccessible("presentation_dl"), |
|
94 "presentational dl shouldn't be accessible"); |
|
95 ok(!isAccessible("dt_in_presentation_dl"), |
|
96 "dt in presentational dl shouldn't be accessible"); |
|
97 ok(!isAccessible("dd_in_presentation_dl"), |
|
98 "dd in presentational dl shouldn't be accessible"); |
|
99 |
|
100 tree = |
|
101 { PUSHBUTTON: [ // ul |
|
102 { NOTHING: [ // li |
|
103 { STATICTEXT: [ ] }, |
|
104 { TEXT_LEAF: [ ] } |
|
105 ] }, |
|
106 { NOTHING: [ // span styled as a list |
|
107 { STATICTEXT: [ ] }, |
|
108 { TEXT_LEAF: [ ] } |
|
109 ] } |
|
110 ] }; |
|
111 testAccessibleTree("button_ul", tree); |
|
112 |
|
113 tree = |
|
114 { PUSHBUTTON: [ // ol |
|
115 { NOTHING: [ // li |
|
116 { STATICTEXT: [ ] }, |
|
117 { TEXT_LEAF: [ ] } |
|
118 ] } |
|
119 ] }; |
|
120 testAccessibleTree("button_ol", tree); |
|
121 |
|
122 tree = |
|
123 { PUSHBUTTON: [ // dl |
|
124 { NOTHING: [ // dt |
|
125 { TEXT_LEAF: [ ] } |
|
126 ] }, |
|
127 { NOTHING: [ // dd |
|
128 { TEXT_LEAF: [ ] } |
|
129 ] } |
|
130 ] }; |
|
131 testAccessibleTree("button_dl", tree); |
|
132 |
|
133 //////////////////////////////////////////////////////////////////////////// |
|
134 // Styled as HTML table elements, accessible is created by tag name |
|
135 |
|
136 tree = |
|
137 { LINK: [ // a |
|
138 { TEXT_LEAF: [ ] } |
|
139 ] }; |
|
140 testAccessibleTree("a_as_td", tree); |
|
141 |
|
142 tree = |
|
143 { HEADING: [ |
|
144 { TEXT_LEAF: [ ] } |
|
145 ] }; |
|
146 testAccessibleTree("h1_as_td", tree); |
|
147 testAccessibleTree("h2_as_td", tree); |
|
148 testAccessibleTree("h3_as_td", tree); |
|
149 testAccessibleTree("h4_as_td", tree); |
|
150 testAccessibleTree("h5_as_td", tree); |
|
151 testAccessibleTree("h6_as_td", tree); |
|
152 |
|
153 SimpleTest.finish(); |
|
154 } |
|
155 |
|
156 SimpleTest.waitForExplicitFinish(); |
|
157 addA11yLoadEvent(doTest); |
|
158 </script> |
|
159 </head> |
|
160 |
|
161 <body> |
|
162 <a target="_blank" |
|
163 href="https://bugzilla.mozilla.org/show_bug.cgi?id=706849" |
|
164 title="Create accessible by tag name as fallback if table descendant style is used out of table context"> |
|
165 Bug 706849 |
|
166 </a> |
|
167 <a target="_blank" |
|
168 href="https://bugzilla.mozilla.org/show_bug.cgi?id=804461" |
|
169 title="Build the context dependent tree "> |
|
170 Bug 804461 |
|
171 </a> |
|
172 <a target="_blank" |
|
173 href="https://bugzilla.mozilla.org/show_bug.cgi?id=945435" |
|
174 title="Create generic accessible for td to not jamm the cell text"> |
|
175 Bug 945435 |
|
176 </a> |
|
177 <p id="display"></p> |
|
178 <div id="content" style="display: none"></div> |
|
179 <pre id="test"> |
|
180 </pre> |
|
181 |
|
182 <!-- HTML table elements out of table --> |
|
183 <table role="presentation"> |
|
184 <tr id="tr_in_presentation_table"> |
|
185 <th id="th_in_presentation_table">not a header</th> |
|
186 <td id="td_in_presentation_table">not a cell</td> |
|
187 </tr> |
|
188 </table> |
|
189 |
|
190 <table role="button" id="button_table"> |
|
191 <tr id="tr_in_button_table"> |
|
192 <th id="th_in_button_table">not a header</th> |
|
193 <td id="td_in_button_table">not a cell</td> |
|
194 </tr> |
|
195 </table> |
|
196 |
|
197 <table id="inline_table1" border="1" style="display:inline"> |
|
198 <tr id="tr_in_inline_table1"> |
|
199 <td id="td1_in_inline_table1">table1 cell1</td> |
|
200 <td id="td2_in_inline_table1">table1 cell2</td> |
|
201 </tr> |
|
202 </table> |
|
203 |
|
204 <table id="table_containing_inlinetable"><tr><td> |
|
205 <table id="inline_table2" border="1" style="display:inline"> |
|
206 <tr id="tr_in_inline_table2"> |
|
207 <td id="td_in_inline_table2">cell</td> |
|
208 </tr> |
|
209 </table> |
|
210 </td></tr></table> |
|
211 |
|
212 <table> |
|
213 <tr> |
|
214 <td style="display:block"> |
|
215 <table id="block_table" style="display:inline"> |
|
216 <tr id="tr_in_block_table"> |
|
217 <td id="td_in_block_table">cell0</td> |
|
218 </tr> |
|
219 </table> |
|
220 </td> |
|
221 <td>cell1</td> |
|
222 </tr> |
|
223 </table> |
|
224 |
|
225 <!-- HTML list elements out of list --> |
|
226 <ul role="presentation" id="presentation_ul"> |
|
227 <li id="item_in_presentation_ul">item</li> |
|
228 <span id="styleditem_in_presentation_ul" |
|
229 style="display:list-item">Oranges</span> |
|
230 </ul> |
|
231 |
|
232 <ol role="presentation" id="presentation_ol"> |
|
233 <li id="item_in_presentation_ol">item</li> |
|
234 </ol> |
|
235 |
|
236 <dl role="presentation" id="presentation_dl"> |
|
237 <dt id="dt_in_presentation_dl">term</dt> |
|
238 <dd id="dd_in_presentation_dl">definition</dd> |
|
239 </dl> |
|
240 |
|
241 <ul role="button" id="button_ul"> |
|
242 <li id="item_in_button_ul">item</li> |
|
243 <span id="styleditem_in_button_ul" |
|
244 style="display:list-item">Oranges</span> |
|
245 </ul> |
|
246 |
|
247 <ol role="button" id="button_ol"> |
|
248 <li id="item_in_button_ul">item</li> |
|
249 </ol> |
|
250 |
|
251 <dl role="button" id="button_dl"> |
|
252 <dt id="dt_in_button_dl">term</ld> |
|
253 <dd id="dd_in_button_dl">definition</dd> |
|
254 </dl> |
|
255 |
|
256 <!-- styled as HTML table elements --> |
|
257 <a id="a_as_td" style="display:table-cell;" href="http://www.google.com">Google</a> |
|
258 <h1 id="h1_as_td" style="display: table-cell;">h1</h1> |
|
259 <h2 id="h2_as_td" style="display: table-cell;">h2</h2> |
|
260 <h3 id="h3_as_td" style="display: table-cell;">h3</h3> |
|
261 <h4 id="h4_as_td" style="display: table-cell;">h4</h4> |
|
262 <h5 id="h5_as_td" style="display: table-cell;">h5</h5> |
|
263 <h6 id="h6_as_td" style="display: table-cell;">h6</h6> |
|
264 </body> |
|
265 </html> |