1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/tests/mochitest/states/test_aria.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,550 @@ 1.4 +<html> 1.5 + 1.6 +<head> 1.7 + <title>ARIA based nsIAccessible states testing</title> 1.8 + 1.9 + <link rel="stylesheet" type="text/css" 1.10 + href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 1.11 + 1.12 + <style type="text/css"> 1.13 + .offscreen { 1.14 + position: absolute; 1.15 + left: -5000px; 1.16 + top: -5000px; 1.17 + height: 100px; 1.18 + width: 100px; 1.19 + } 1.20 + </style> 1.21 + 1.22 + <script type="application/javascript" 1.23 + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.24 + 1.25 + <script type="application/javascript" 1.26 + src="../common.js"></script> 1.27 + <script type="application/javascript" 1.28 + src="../role.js"></script> 1.29 + <script type="application/javascript" 1.30 + src="../states.js"></script> 1.31 + 1.32 + <script type="application/javascript"> 1.33 + function testAriaDisabledTree(aAccOrElmOrID) 1.34 + { 1.35 + // test accessible and its subtree for propagated state. 1.36 + var acc = getAccessible(aAccOrElmOrID); 1.37 + if (!acc) 1.38 + return; 1.39 + 1.40 + var [state, extraState] = getStates(aAccOrElmOrID); 1.41 + if (state & STATE_UNAVAILABLE) { 1.42 + var role = getRole(acc); 1.43 + if (role != ROLE_GROUPING) { 1.44 + testStates(acc, STATE_FOCUSABLE); 1.45 + } 1.46 + } 1.47 + 1.48 + // Iterate over its children to see if the state got propagated. 1.49 + var children = null; 1.50 + try { 1.51 + children = acc.children; 1.52 + } catch(e) {} 1.53 + ok(children, "Could not get children for " + aAccOrElmOrID +"!"); 1.54 + 1.55 + if (children) { 1.56 + for (var i = 0; i < children.length; i++) { 1.57 + var childAcc = children.queryElementAt(i, nsIAccessible); 1.58 + testAriaDisabledTree(childAcc); 1.59 + } 1.60 + } 1.61 + } 1.62 + 1.63 + function doTest() 1.64 + { 1.65 + // aria_autocomplete 1.66 + testStates("textbox_autocomplete_inline", 0, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.67 + testStates("textbox_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.68 + testStates("textbox_autocomplete_both", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.69 + testStates("combobox_autocomplete_inline", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.70 + testStates("combobox_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.71 + testStates("combobox_autocomplete_both", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.72 + 1.73 + testStates("htmltext_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.74 + testStates("htmltextarea_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION); 1.75 + 1.76 + // aria-busy 1.77 + testStates("textbox_busy_false", 0, 0, STATE_BUSY); 1.78 + testStates("textbox_busy_true", STATE_BUSY); 1.79 + testStates("textbox_busy_error", STATE_INVALID); 1.80 + 1.81 + // aria-expanded 1.82 + testStates("combobox", STATE_COLLAPSED); 1.83 + testStates("combobox_expanded", STATE_EXPANDED); 1.84 + 1.85 + // tri-state checkbox 1.86 + var checkboxElem = getNode("check1"); 1.87 + if (checkboxElem) { 1.88 + testStates(checkboxElem, STATE_CHECKED); 1.89 + checkboxElem.checked = false; 1.90 + testStates(checkboxElem, 0, 0, STATE_CHECKED); 1.91 + checkboxElem.indeterminate = true; 1.92 + testStates(checkboxElem, STATE_MIXED, 0); 1.93 + } 1.94 + 1.95 + // aria-checked 1.96 + testStates("aria_checked_checkbox", STATE_CHECKED); 1.97 + testStates("aria_mixed_checkbox", STATE_MIXED); 1.98 + 1.99 + // test disabled group and all its descendants to see if they are 1.100 + // disabled, too. See bug 429285. 1.101 + testAriaDisabledTree("group"); 1.102 + 1.103 + // aria-multiline 1.104 + testStates("aria_multiline_textbox", 0, EXT_STATE_MULTI_LINE); 1.105 + 1.106 + // aria-multiselectable 1.107 + testStates("aria_multiselectable_listbox", 1.108 + STATE_MULTISELECTABLE | STATE_EXTSELECTABLE); 1.109 + 1.110 + // aria-pressed 1.111 + testStates("aria_pressed_button", STATE_PRESSED, 0, STATE_CHECKABLE); 1.112 + testStates("aria_pressed_native_button", STATE_PRESSED, 0, STATE_CHECKABLE); 1.113 + 1.114 + // aria-readonly 1.115 + testStates("aria_readonly_textbox", STATE_READONLY); 1.116 + 1.117 + // readonly/editable on grid and gridcell 1.118 + testStates("aria_grid_default", 0, EXT_STATE_EDITABLE, 1.119 + STATE_READONLY, 0); 1.120 + testStates("aria_grid_default_colheader_readonly", STATE_READONLY, 0, 1.121 + 0, EXT_STATE_EDITABLE); 1.122 + testStates("aria_grid_default_colheader_inherited", 0, EXT_STATE_EDITABLE, 1.123 + STATE_READONLY, 0); 1.124 + testStates("aria_grid_default_rowheader_readonly", STATE_READONLY, 0, 1.125 + 0, EXT_STATE_EDITABLE); 1.126 + testStates("aria_grid_default_rowheader_inherited", 0, EXT_STATE_EDITABLE, 1.127 + STATE_READONLY, 0); 1.128 + testStates("aria_grid_default_cell_readonly", STATE_READONLY, 0, 1.129 + 0, EXT_STATE_EDITABLE); 1.130 + testStates("aria_grid_default_cell_inherited", 0, EXT_STATE_EDITABLE, 1.131 + STATE_READONLY, 0); 1.132 + 1.133 + testStates("aria_grid_readonly", STATE_READONLY, 0, 1.134 + 0, EXT_STATE_EDITABLE); 1.135 + testStates("aria_grid_readonly_colheader_editable", 0, EXT_STATE_EDITABLE, 1.136 + STATE_READONLY, 0); 1.137 + testStates("aria_grid_readonly_colheader_inherited", STATE_READONLY, 0, 1.138 + 0, EXT_STATE_EDITABLE); 1.139 + testStates("aria_grid_readonly_rowheader_editable", 0, EXT_STATE_EDITABLE, 1.140 + STATE_READONLY, 0); 1.141 + testStates("aria_grid_readonly_rowheader_inherited", STATE_READONLY, 0, 1.142 + 0, EXT_STATE_EDITABLE); 1.143 + testStates("aria_grid_readonly_cell_editable", 0, EXT_STATE_EDITABLE, 1.144 + STATE_READONLY, 0); 1.145 + testStates("aria_grid_readonly_cell_inherited", STATE_READONLY, 0, 1.146 + 0, EXT_STATE_EDITABLE); 1.147 + 1.148 + // readonly/editable on treegrid and gridcell 1.149 + testStates("aria_treegrid_default", 0, EXT_STATE_EDITABLE, 1.150 + STATE_READONLY, 0); 1.151 + testStates("aria_treegrid_default_colheader_readonly", STATE_READONLY, 0, 1.152 + 0, EXT_STATE_EDITABLE); 1.153 + testStates("aria_treegrid_default_colheader_inherited", 0, EXT_STATE_EDITABLE, 1.154 + STATE_READONLY, 0); 1.155 + testStates("aria_treegrid_default_rowheader_readonly", STATE_READONLY, 0, 1.156 + 0, EXT_STATE_EDITABLE); 1.157 + testStates("aria_treegrid_default_rowheader_inherited", 0, EXT_STATE_EDITABLE, 1.158 + STATE_READONLY, 0); 1.159 + testStates("aria_treegrid_default_cell_readonly", STATE_READONLY, 0, 1.160 + 0, EXT_STATE_EDITABLE); 1.161 + testStates("aria_treegrid_default_cell_inherited", 0, EXT_STATE_EDITABLE, 1.162 + STATE_READONLY, 0); 1.163 + 1.164 + testStates("aria_treegrid_readonly", STATE_READONLY, 0, 1.165 + 0, EXT_STATE_EDITABLE); 1.166 + testStates("aria_treegrid_readonly_colheader_editable", 0, EXT_STATE_EDITABLE, 1.167 + STATE_READONLY, 0); 1.168 + testStates("aria_treegrid_readonly_colheader_inherited", STATE_READONLY, 0, 1.169 + 0, EXT_STATE_EDITABLE); 1.170 + testStates("aria_treegrid_readonly_rowheader_editable", 0, EXT_STATE_EDITABLE, 1.171 + STATE_READONLY, 0); 1.172 + testStates("aria_treegrid_readonly_rowheader_inherited", STATE_READONLY, 0, 1.173 + 0, EXT_STATE_EDITABLE); 1.174 + testStates("aria_treegrid_readonly_cell_editable", 0, EXT_STATE_EDITABLE, 1.175 + STATE_READONLY, 0); 1.176 + testStates("aria_treegrid_readonly_cell_inherited", STATE_READONLY, 0, 1.177 + 0, EXT_STATE_EDITABLE); 1.178 + 1.179 + // aria-selectable 1.180 + testStates("aria_selectable_listitem", STATE_SELECTABLE | STATE_SELECTED); 1.181 + 1.182 + // active state caused by aria-activedescendant 1.183 + testStates("as_item1", 0, EXT_STATE_ACTIVE); 1.184 + testStates("as_item2", 0, 0, 0, EXT_STATE_ACTIVE); 1.185 + 1.186 + // universal ARIA properties inherited from file input control 1.187 + var fileBrowseButton = getAccessible("fileinput").firstChild; 1.188 + testStates(fileBrowseButton, 1.189 + STATE_BUSY | STATE_UNAVAILABLE | STATE_REQUIRED | STATE_HASPOPUP | STATE_INVALID); 1.190 + // No states on the label. 1.191 + 1.192 + // offscreen test 1.193 + testStates("aria_offscreen_textbox", STATE_OFFSCREEN); 1.194 + 1.195 + // 1.196 + // This section tests aria roles on links/anchors for underlying 1.197 + // HTMLLinkAccessible creation. (see closed bug 494807) 1.198 + // 1.199 + 1.200 + // strong roles 1.201 + testStates("aria_menuitem_link", 0, 0, STATE_LINKED); 1.202 + testStates("aria_button_link", 0, 0, STATE_LINKED); 1.203 + testStates("aria_checkbox_link", 0, 0, STATE_LINKED); 1.204 + 1.205 + // strong landmark 1.206 + testStates("aria_application_link", 0, 0, STATE_LINKED); 1.207 + testStates("aria_application_anchor", 0, 0, STATE_SELECTABLE); 1.208 + 1.209 + // strange cases 1.210 + testStates("aria_link_link", STATE_LINKED); 1.211 + testStates("aria_link_anchor", STATE_SELECTABLE); 1.212 + 1.213 + // some weak landmarks 1.214 + testStates("aria_main_link", STATE_LINKED); 1.215 + testStates("aria_navigation_link", STATE_LINKED); 1.216 + testStates("aria_main_anchor", STATE_SELECTABLE); 1.217 + testStates("aria_navigation_anchor", STATE_SELECTABLE); 1.218 + 1.219 + // aria-orientation (applied to scrollbar, separator, slider) 1.220 + testStates("aria_scrollbar", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL); 1.221 + testStates("aria_hscrollbar", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL); 1.222 + testStates("aria_vscrollbar", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL); 1.223 + testStates("aria_separator", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL); 1.224 + testStates("aria_hseparator", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL); 1.225 + testStates("aria_vseparator", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL); 1.226 + testStates("aria_slider", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL); 1.227 + testStates("aria_hslider", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL); 1.228 + testStates("aria_vslider", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL); 1.229 + 1.230 + // indeterminate ARIA progressbars (no aria-valuenow or aria-valuetext attribute) 1.231 + // should expose mixed state 1.232 + testStates("aria_progressbar", STATE_MIXED); 1.233 + testStates("aria_progressbar_valuenow", 0, 0, STATE_MIXED); 1.234 + testStates("aria_progressbar_valuetext", 0, 0, STATE_MIXED); 1.235 + 1.236 + testStates("aria_listbox", STATE_FOCUSABLE); 1.237 + testStates("aria_grid", STATE_FOCUSABLE); 1.238 + testStates("aria_tree", STATE_FOCUSABLE); 1.239 + testStates("aria_treegrid", STATE_FOCUSABLE); 1.240 + testStates("aria_listbox_disabled", 0, 0, STATE_FOCUSABLE); 1.241 + testStates("aria_grid_disabled", 0, 0, STATE_FOCUSABLE); 1.242 + testStates("aria_tree_disabled", 0, 0, STATE_FOCUSABLE); 1.243 + testStates("aria_treegrid_disabled", 0, 0, STATE_FOCUSABLE); 1.244 + SimpleTest.finish(); 1.245 + } 1.246 + 1.247 + SimpleTest.waitForExplicitFinish(); 1.248 + addA11yLoadEvent(doTest); 1.249 + </script> 1.250 + 1.251 +</head> 1.252 + 1.253 +<body> 1.254 + 1.255 + <a target="_blank" 1.256 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=457219" 1.257 + title="nsIAccessible states testing"> 1.258 + Mozilla Bug 457219 1.259 + </a><br /> 1.260 + <a target="_blank" 1.261 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=429285" 1.262 + title="Propagate aria-disabled to descendants"> 1.263 + Mozilla Bug 429285 1.264 + </a> 1.265 + <a target="_blank" 1.266 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=457226" 1.267 + title="Mochitests for ARIA states"> 1.268 + Mozilla Bug 457226 1.269 + </a> 1.270 + <a target="_blank" 1.271 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=499653" 1.272 + title="Unify ARIA state attributes mapping rules"> 1.273 + Mozilla Bug 499653 1.274 + </a> 1.275 + <a target="_blank" 1.276 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=681674" 1.277 + title="aria-autocomplete not supported on standard form text input controls"> 1.278 + Mozilla Bug 681674 1.279 + </a> 1.280 + <a target="_blank" 1.281 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=681674" 1.282 + title="aria-orientation should be applied to separator and slider roles"> 1.283 + Mozilla Bug 681674 1.284 + </a> 1.285 + <a target="_blank" 1.286 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=689847" 1.287 + title="Expose active state on current item of selectable widgets"> 1.288 + Mozilla Bug 689847 1.289 + </a> 1.290 + <a target="_blank" 1.291 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=699017" 1.292 + title="File input control should be propogate states to descendants"> 1.293 + Mozilla Bug 699017 1.294 + </a> 1.295 + <a target="_blank" 1.296 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=690199" 1.297 + title="ARIA select widget should expose focusable state regardless the way they manage its children"> 1.298 + Mozilla Bug 690199 1.299 + </a> 1.300 + <a target="_blank" 1.301 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=740851" 1.302 + title="ARIA undetermined progressmeters should expose mixed state"> 1.303 + Mozilla Bug 740851 1.304 + </a> 1.305 + <a target="_blank" 1.306 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=762876" 1.307 + title="fix default horizontal / vertical state of role=scrollbar and ensure only one of horizontal / vertical states is exposed"> 1.308 + Mozilla Bug 762876 1.309 + </a> 1.310 + <a target="_blank" 1.311 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=892091" 1.312 + title="ARIA treegrid should be editable by default"> 1.313 + Bug 892091 1.314 + </a> 1.315 + <a target="_blank" 1.316 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=835121" 1.317 + title="ARIA grid should be editable by default"> 1.318 + Mozilla Bug 835121 1.319 + </a> 1.320 + <a target="_blank" 1.321 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=989958" 1.322 + title="Pressed state is not exposed on a button element with aria-pressed attribute" 1.323 + Mozilla Bug 989958 1.324 + </a> 1.325 + 1.326 + <p id="display"></p> 1.327 + <div id="content" style="display: none"></div> 1.328 + <pre id="test"> 1.329 + </pre> 1.330 + 1.331 + <div id="textbox_autocomplete_inline" role="textbox" aria-autocomplete="inline"></div> 1.332 + <div id="textbox_autocomplete_list" role="textbox" aria-autocomplete="list"></div> 1.333 + <div id="textbox_autocomplete_both" role="textbox" aria-autocomplete="both"></div> 1.334 + <div id="combobox_autocomplete_inline" role="combobox" aria-autocomplete="inline"></div> 1.335 + <div id="combobox_autocomplete_list" role="combobox" aria-autocomplete="list"></div> 1.336 + <div id="combobox_autocomplete_both" role="combobox" aria-autocomplete="both"></div> 1.337 + 1.338 + <input id="htmltext_autocomplete_list" type="text" aria-autocomplete="list" /> 1.339 + <textarea id="htmltextarea_autocomplete_list" aria-autocomplete="list"></textarea> 1.340 + 1.341 + <div id="textbox_busy_false" role="textbox" aria-busy="false"></div> 1.342 + <div id="textbox_busy_true" role="textbox" aria-busy="true"></div> 1.343 + <div id="textbox_busy_error" role="textbox" aria-busy="error"></div> 1.344 + 1.345 + <div id="combobox" role="combobox">combobox</div> 1.346 + <div id="combobox_expanded" role="combobox" 1.347 + aria-expanded="true">combobox</div> 1.348 + 1.349 + <input type="checkbox" id="check1" value="I agree" checked="true"/> 1.350 + 1.351 + <div id="aria_checked_checkbox" role="checkbox" aria-checked="true"> 1.352 + I agree 1.353 + </div> 1.354 + 1.355 + <div id="aria_mixed_checkbox" role="checkbox" aria-checked="mixed"> 1.356 + I might agree 1.357 + </div> 1.358 + <div id="aria_multiline_textbox" role="textbox" aria-multiline="true"></div> 1.359 + <div id="aria_multiselectable_listbox" role="listbox" aria-multiselectable="true"></div> 1.360 + <div id="aria_pressed_button" role="button" aria-pressed="true">Button</div> 1.361 + <button id="aria_pressed_native_button" aria-pressed="true">Button</button> 1.362 + 1.363 + <div id="aria_readonly_textbox" 1.364 + role="textbox" aria-readonly="true">This text should be readonly</div> 1.365 + 1.366 + <div id="aria_grid_default" role="grid"> 1.367 + <div role="row"> 1.368 + <div id="aria_grid_default_colheader_readonly" 1.369 + role="columnheader" aria-readonly="true">colheader1</div> 1.370 + <div id="aria_grid_default_colheader_inherited" 1.371 + role="columnheader">colheader2</div> 1.372 + </div> 1.373 + <div role="row"> 1.374 + <div id="aria_grid_default_rowheader_readonly" 1.375 + role="rowheader" aria-readonly="true">rowheader1</div> 1.376 + <div id="aria_grid_default_rowheader_inherited" 1.377 + role="rowheader">rowheader2</div> 1.378 + </div> 1.379 + <div role="row"> 1.380 + <div id="aria_grid_default_cell_readonly" 1.381 + role="gridcell" aria-readonly="true">gridcell1</div> 1.382 + <div id="aria_grid_default_cell_inherited" 1.383 + role="gridcell">gridcell2</div> 1.384 + </div> 1.385 + </div> 1.386 + 1.387 + <div id="aria_grid_readonly" role="grid" aria-readonly="true"> 1.388 + <div role="row"> 1.389 + <div id="aria_grid_readonly_colheader_editable" 1.390 + role="columnheader" aria-readonly="false">colheader1</div> 1.391 + <div id="aria_grid_readonly_colheader_inherited" 1.392 + role="columnheader">colheader2</div> 1.393 + </div> 1.394 + <div role="row"> 1.395 + <div id="aria_grid_readonly_rowheader_editable" 1.396 + role="rowheader" aria-readonly="false">rowheader1</div> 1.397 + <div id="aria_grid_readonly_rowheader_inherited" 1.398 + role="rowheader">rowheader2</div> 1.399 + </div> 1.400 + <div role="row"> 1.401 + <div id="aria_grid_readonly_cell_editable" 1.402 + role="gridcell" aria-readonly="false">gridcell1</div> 1.403 + <div id="aria_grid_readonly_cell_inherited" 1.404 + role="gridcell">gridcell2</div> 1.405 + </div> 1.406 + </div> 1.407 + 1.408 + <div id="aria_treegrid_default" role="grid"> 1.409 + <div role="row"> 1.410 + <div id="aria_treegrid_default_colheader_readonly" 1.411 + role="columnheader" aria-readonly="true">colheader1</div> 1.412 + <div id="aria_treegrid_default_colheader_inherited" 1.413 + role="columnheader">colheader2</div> 1.414 + </div> 1.415 + <div role="row"> 1.416 + <div id="aria_treegrid_default_rowheader_readonly" 1.417 + role="rowheader" aria-readonly="true">rowheader1</div> 1.418 + <div id="aria_treegrid_default_rowheader_inherited" 1.419 + role="rowheader">rowheader2</div> 1.420 + </div> 1.421 + <div role="row"> 1.422 + <div id="aria_treegrid_default_cell_readonly" 1.423 + role="gridcell" aria-readonly="true">gridcell1</div> 1.424 + <div id="aria_treegrid_default_cell_inherited" 1.425 + role="gridcell">gridcell2</div> 1.426 + </div> 1.427 + </div> 1.428 + 1.429 + <div id="aria_treegrid_readonly" role="grid" aria-readonly="true"> 1.430 + <div role="row"> 1.431 + <div id="aria_treegrid_readonly_colheader_editable" 1.432 + role="columnheader" aria-readonly="false">colheader1</div> 1.433 + <div id="aria_treegrid_readonly_colheader_inherited" 1.434 + role="columnheader">colheader2</div> 1.435 + </div> 1.436 + <div role="row"> 1.437 + <div id="aria_treegrid_readonly_rowheader_editable" 1.438 + role="rowheader" aria-readonly="false">rowheader1</div> 1.439 + <div id="aria_treegrid_readonly_rowheader_inherited" 1.440 + role="rowheader">rowheader2</div> 1.441 + </div> 1.442 + <div role="row"> 1.443 + <div id="aria_treegrid_readonly_cell_editable" 1.444 + role="gridcell" aria-readonly="false">gridcell1</div> 1.445 + <div id="aria_treegrid_readonly_cell_inherited" 1.446 + role="gridcell">gridcell2</div> 1.447 + </div> 1.448 + </div> 1.449 + 1.450 + <div role="listbox"> 1.451 + <div id="aria_selectable_listitem" role="option" aria-selected="true">Item1</div> 1.452 + </div> 1.453 + 1.454 + <!-- Test that aria-disabled state gets propagated to all descendants --> 1.455 + <div id="group" role="group" aria-disabled="true"> 1.456 + <button>hi</button> 1.457 + <div tabindex="0" role="listbox" aria-activedescendant="item1"> 1.458 + <div role="option" id="item1">Item 1</div> 1.459 + <div role="option" id="item2">Item 2</div> 1.460 + <div role="option" id="item3">Item 3</div> 1.461 + <div role="option" id="item4">Item 4</div> 1.462 + </div> 1.463 + <div role="slider" tabindex="0">A slider</div> 1.464 + </div> 1.465 + 1.466 + <!-- Test active state --> 1.467 + <div id="as_listbox" tabindex="0" role="listbox" 1.468 + aria-activedescendant="as_item1"> 1.469 + <div role="option" id="as_item1">Item 1</div> 1.470 + <div role="option" id="as_item2">Item 2</div> 1.471 + </div> 1.472 + 1.473 + <!-- universal ARIA properties should be inherited by text field of file input --> 1.474 + <input type="file" id="fileinput" 1.475 + aria-busy="true" 1.476 + aria-disabled="true" 1.477 + aria-required="true" 1.478 + aria-haspopup="true" 1.479 + aria-invalid="true"> 1.480 + 1.481 + <div id="offscreen_log" role="log" class="offscreen"> 1.482 + <div id="aria_offscreen_textbox" role="textbox" aria-readonly="true">This text should be offscreen</div> 1.483 + </div> 1.484 + 1.485 + <a id="aria_menuitem_link" role="menuitem" href="foo">menuitem</a> 1.486 + <a id="aria_button_link" role="button" href="foo">button</a> 1.487 + <a id="aria_checkbox_link" role="checkbox" href="foo">checkbox</a> 1.488 + 1.489 + <!-- strange edge case: please don't do this in the wild --> 1.490 + <a id="aria_link_link" role="link" href="foo">link</a> 1.491 + <a id="aria_link_anchor" role="link" name="link_anchor">link</a> 1.492 + 1.493 + <!-- landmarks: links --> 1.494 + <a id="aria_application_link" role="application" href="foo">app</a> 1.495 + <a id="aria_main_link" role="main" href="foo">main</a> 1.496 + <a id="aria_navigation_link" role="navigation" href="foo">nav</a> 1.497 + 1.498 + <!-- landmarks: anchors --> 1.499 + <a id="aria_application_anchor" role="application" name="app_anchor">app</a> 1.500 + <a id="aria_main_anchor" role="main" name="main_anchor">main</a> 1.501 + <a id="aria_navigation_anchor" role="navigation" name="nav_anchor">nav</a> 1.502 + 1.503 + <!-- aria-orientation --> 1.504 + <div id="aria_scrollbar" role="scrollbar">scrollbar</div> 1.505 + <div id="aria_hscrollbar" role="scrollbar" aria-orientation="horizontal">horizontal scrollbar</div> 1.506 + <div id="aria_vscrollbar" role="scrollbar" aria-orientation="vertical">vertical scrollbar</div> 1.507 + <div id="aria_separator" role="separator">separator</div> 1.508 + <div id="aria_hseparator" role="separator" aria-orientation="horizontal">horizontal separator</div> 1.509 + <div id="aria_vseparator" role="separator" aria-orientation="vertical">vertical separator</div> 1.510 + <div id="aria_slider" role="slider">slider</div> 1.511 + <div id="aria_hslider" role="slider" aria-orientation="horizontal">horizontal slider</div> 1.512 + <div id="aria_vslider" role="slider" aria-orientation="vertical">vertical slider</div> 1.513 + 1.514 + <!-- indeterminate ARIA progressbars should expose mixed state --> 1.515 + <div id="aria_progressbar" role="progressbar"></div> 1.516 + <div id="aria_progressbar_valuenow" role="progressbar" aria-valuenow="1"></div> 1.517 + <div id="aria_progressbar_valuetext" role="progressbar" aria-valuetext="value"></div> 1.518 + 1.519 + <!-- ARIA select widget should expose focusable state regardless the way they manage its children --> 1.520 + <div id="aria_listbox" role="listbox"> 1.521 + <div role="option" tabindex="0">A</div> 1.522 + <div role="option" tabindex="0">a</div> 1.523 + </div> 1.524 + <div id="aria_grid" role="grid"> 1.525 + <div role="row"><div role="gridcell" tabindex="0">B</div></div></div> 1.526 + <div role="row"><div role="gridcell" tabindex="0">b</div></div></div> 1.527 + <div id="aria_tree" role="tree"> 1.528 + <div role="treeitem" tabindex="0">C</div> 1.529 + <div role="treeitem" tabindex="0">c</div> 1.530 + </div> 1.531 + <div id="aria_treegrid" role="treegrid"> 1.532 + <div role="row"><div role="gridcell" tabindex="0">D</div></div> 1.533 + <div role="row"><div role="gridcell" tabindex="0">d</div></div> 1.534 + </div> 1.535 + <div id="aria_listbox_disabled" role="listbox" aria-disabled="true"> 1.536 + <div role="option">E</div> 1.537 + <div role="option">e</div> 1.538 + </div> 1.539 + <div id="aria_grid_disabled" role="grid" aria-disabled="true"> 1.540 + <div role="row"><div role="gridcell">F</div></div> 1.541 + <div role="row"><div role="gridcell">f</div></div> 1.542 + </div> 1.543 + <div id="aria_tree_disabled" role="tree" aria-disabled="true"> 1.544 + <div role="treeitem">G</div> 1.545 + <div role="treeitem">g</div> 1.546 + </div> 1.547 + <div id="aria_treegrid_disabled" role="treegrid" aria-disabled="true"> 1.548 + <div role="row"><div role="gridcell">H</div></div> 1.549 + <div role="row"><div role="gridcell">h</div></div> 1.550 + </div> 1.551 + 1.552 +</body> 1.553 +</html>