test_aria_token_attrs.html (31993B)
1 <!DOCTYPE html> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=452388 5 --> 6 <head> 7 <title>An NMTOKEN based ARIA property is undefined if the ARIA attribute is not present, or is set to "" or "undefined"</title> 8 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 9 10 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 11 12 <script type="application/javascript" 13 src="common.js"></script> 14 <script type="application/javascript" 15 src="role.js"></script> 16 <script type="application/javascript" 17 src="states.js"></script> 18 19 <script type="application/javascript"> 20 function doTest() { 21 // test aria-pressed state mapping to roles PUSHBUTTON vs TOGGLEBUTTON 22 testRole("button_pressed_true", ROLE_TOGGLE_BUTTON); 23 testRole("button_pressed_false", ROLE_TOGGLE_BUTTON); 24 testRole("button_pressed_empty", ROLE_PUSHBUTTON); 25 testRole("button_pressed_undefined", ROLE_PUSHBUTTON); 26 testRole("button_pressed_absent", ROLE_PUSHBUTTON); 27 28 // test button aria-pressed states 29 testStates("button_pressed_true", STATE_PRESSED, 0, STATE_CHECKABLE); 30 testStates("button_pressed_false", 0, 0, STATE_CHECKABLE | STATE_PRESSED); 31 testStates("button_pressed_empty", 0, 0, STATE_PRESSED | STATE_CHECKABLE); 32 testStates("button_pressed_undefined", 0, 0, STATE_PRESSED | STATE_CHECKABLE); 33 testStates("button_pressed_absent", 0, 0, STATE_PRESSED | STATE_CHECKABLE); 34 35 // test (checkbox) checkable and checked states 36 testStates("checkbox_checked_true", (STATE_CHECKABLE | STATE_CHECKED)); 37 testStates("checkbox_checked_mixed", (STATE_CHECKABLE | STATE_MIXED), 0, STATE_CHECKED); 38 testStates("checkbox_checked_false", STATE_CHECKABLE, 0, STATE_CHECKED); 39 testStates("checkbox_checked_empty", STATE_CHECKABLE, 0, STATE_CHECKED); 40 testStates("checkbox_checked_undefined", STATE_CHECKABLE, 0, STATE_CHECKED); 41 testStates("checkbox_checked_absent", STATE_CHECKABLE, 0, STATE_CHECKED); 42 43 // test native checkbox checked state and aria-checked state (if conflict, native wins) 44 testStates("native_checkbox_nativechecked_ariatrue", (STATE_CHECKABLE | STATE_CHECKED)); 45 testStates("native_checkbox_nativechecked_ariafalse", (STATE_CHECKABLE | STATE_CHECKED)); 46 testStates("native_checkbox_nativechecked_ariaempty", (STATE_CHECKABLE | STATE_CHECKED)); 47 testStates("native_checkbox_nativechecked_ariaundefined", (STATE_CHECKABLE | STATE_CHECKED)); 48 testStates("native_checkbox_nativechecked_ariaabsent", (STATE_CHECKABLE | STATE_CHECKED)); 49 50 testStates("native_checkbox_nativeunchecked_ariatrue", STATE_CHECKABLE, 0, STATE_CHECKED); 51 testStates("native_checkbox_nativeunchecked_ariafalse", STATE_CHECKABLE, 0, STATE_CHECKED); 52 testStates("native_checkbox_nativeunchecked_ariaempty", STATE_CHECKABLE, 0, STATE_CHECKED); 53 testStates("native_checkbox_nativeunchecked_ariaundefined", STATE_CHECKABLE, 0, STATE_CHECKED); 54 testStates("native_checkbox_nativeunchecked_ariaabsent", STATE_CHECKABLE, 0, STATE_CHECKED); 55 56 // test (checkbox) readonly states 57 testStates("checkbox_readonly_true", STATE_READONLY); 58 testStates("checkbox_readonly_false", 0, 0, STATE_READONLY); 59 testStates("checkbox_readonly_empty", 0, 0, STATE_READONLY); 60 testStates("checkbox_readonly_undefined", 0, 0, STATE_READONLY); 61 testStates("checkbox_readonly_absent", 0, 0, STATE_READONLY); 62 63 // test (checkbox) required states 64 testStates("checkbox_required_true", STATE_REQUIRED); 65 testStates("checkbox_required_false", 0, 0, STATE_REQUIRED); 66 testStates("checkbox_required_empty", 0, 0, STATE_REQUIRED); 67 testStates("checkbox_required_undefined", 0, 0, STATE_REQUIRED); 68 testStates("checkbox_required_absent", 0, 0, STATE_REQUIRED); 69 70 // test (checkbox) invalid states 71 testStates("checkbox_invalid_true", STATE_INVALID); 72 testStates("checkbox_invalid_false", 0, 0, STATE_INVALID); 73 testStates("checkbox_invalid_empty", 0, 0, STATE_INVALID); 74 testStates("checkbox_invalid_undefined", 0, 0, STATE_INVALID); 75 testStates("checkbox_invalid_absent", 0, 0, STATE_INVALID); 76 77 // test (checkbox) disabled states 78 testStates("checkbox_disabled_true", STATE_UNAVAILABLE); 79 testStates("checkbox_disabled_false", 0, 0, STATE_UNAVAILABLE); 80 testStates("checkbox_disabled_empty", 0, 0, STATE_UNAVAILABLE); 81 testStates("checkbox_disabled_undefined", 0, 0, STATE_UNAVAILABLE); 82 testStates("checkbox_disabled_absent", 0, 0, STATE_UNAVAILABLE); 83 84 // test (listbox) multiselectable states 85 testStates("listbox_multiselectable_true", STATE_MULTISELECTABLE | STATE_EXTSELECTABLE); 86 testStates("listbox_multiselectable_false", 0, 0, STATE_MULTISELECTABLE | STATE_EXTSELECTABLE); 87 testStates("listbox_multiselectable_empty", 0, 0, STATE_MULTISELECTABLE | STATE_EXTSELECTABLE); 88 testStates("listbox_multiselectable_undefined", 0, 0, STATE_MULTISELECTABLE | STATE_EXTSELECTABLE); 89 testStates("listbox_multiselectable_absent", 0, 0, STATE_MULTISELECTABLE | STATE_EXTSELECTABLE); 90 91 // test (option) checkable and checked states 92 testStates("option_checked_true", (STATE_CHECKABLE | STATE_CHECKED)); 93 testStates("option_checked_false", STATE_CHECKABLE, 0, STATE_CHECKED); 94 testStates("option_checked_empty", 0, 0, STATE_CHECKABLE | STATE_CHECKED); 95 testStates("option_checked_undefined", 0, 0, STATE_CHECKABLE | STATE_CHECKED); 96 testStates("option_checked_absent", 0, 0, STATE_CHECKABLE | STATE_CHECKED); 97 98 // test (menuitem) checkable and checked states, which are unsupported on this role 99 testStates("menuitem_checked_true", 0, 0, (STATE_CHECKABLE | STATE_CHECKED)); 100 testStates("menuitem_checked_mixed", 0, 0, (STATE_CHECKABLE | STATE_CHECKED | STATE_MIXED)); 101 testStates("menuitem_checked_false", 0, 0, (STATE_CHECKABLE | STATE_CHECKED)); 102 testStates("menuitem_checked_empty", 0, 0, (STATE_CHECKABLE | STATE_CHECKED)); 103 testStates("menuitem_checked_undefined", 0, 0, (STATE_CHECKABLE | STATE_CHECKED)); 104 testStates("menuitem_checked_absent", 0, 0, (STATE_CHECKABLE | STATE_CHECKED)); 105 106 // test (menuitemcheckbox) checkable and checked states 107 testStates("menuitemcheckbox_checked_true", (STATE_CHECKABLE | STATE_CHECKED)); 108 testStates("menuitemcheckbox_checked_mixed", (STATE_CHECKABLE | STATE_MIXED), 0, STATE_CHECKED); 109 testStates("menuitemcheckbox_checked_false", STATE_CHECKABLE, 0, STATE_CHECKED); 110 testStates("menuitemcheckbox_checked_empty", STATE_CHECKABLE, 0, STATE_CHECKED); 111 testStates("menuitemcheckbox_checked_undefined", STATE_CHECKABLE, 0, STATE_CHECKED); 112 testStates("menuitemcheckbox_checked_absent", STATE_CHECKABLE, 0, STATE_CHECKED); 113 114 // test (menuitemcheckbox) readonly states 115 testStates("menuitemcheckbox_readonly_true", STATE_READONLY); 116 testStates("menuitemcheckbox_readonly_false", 0, 0, STATE_READONLY); 117 testStates("menuitemcheckbox_readonly_empty", 0, 0, STATE_READONLY); 118 testStates("menuitemcheckbox_readonly_undefined", 0, 0, STATE_READONLY); 119 testStates("menuitemcheckbox_readonly_absent", 0, 0, STATE_READONLY); 120 121 // test (menuitemradio) checkable and checked states 122 testStates("menuitemradio_checked_true", (STATE_CHECKABLE | STATE_CHECKED)); 123 testStates("menuitemradio_checked_mixed", STATE_CHECKABLE, 0, (STATE_MIXED | STATE_CHECKED)); 124 testStates("menuitemradio_checked_false", STATE_CHECKABLE, 0, STATE_CHECKED); 125 testStates("menuitemradio_checked_empty", STATE_CHECKABLE, 0, STATE_CHECKED); 126 testStates("menuitemradio_checked_undefined", STATE_CHECKABLE, 0, STATE_CHECKED); 127 testStates("menuitemradio_checked_absent", STATE_CHECKABLE, 0, STATE_CHECKED); 128 129 // test (menuitemradio) readonly states 130 testStates("menuitemradio_readonly_true", STATE_READONLY); 131 testStates("menuitemradio_readonly_false", 0, 0, STATE_READONLY); 132 testStates("menuitemradio_readonly_empty", 0, 0, STATE_READONLY); 133 testStates("menuitemradio_readonly_undefined", 0, 0, STATE_READONLY); 134 testStates("menuitemradio_readonly_absent", 0, 0, STATE_READONLY); 135 136 // test (radio) checkable and checked states 137 testStates("radio_checked_true", (STATE_CHECKABLE | STATE_CHECKED)); 138 testStates("radio_checked_mixed", STATE_CHECKABLE, 0, (STATE_MIXED | STATE_CHECKED)); 139 testStates("radio_checked_false", STATE_CHECKABLE, 0, STATE_CHECKED); 140 testStates("radio_checked_empty", STATE_CHECKABLE, 0, STATE_CHECKED); 141 testStates("radio_checked_undefined", STATE_CHECKABLE, 0, STATE_CHECKED); 142 testStates("radio_checked_absent", STATE_CHECKABLE, 0, STATE_CHECKED); 143 144 // test (radiogroup) readonly states 145 testStates("radiogroup_readonly_true", STATE_READONLY); 146 testStates("radiogroup_readonly_false", 0, 0, STATE_READONLY); 147 testStates("radiogroup_readonly_empty", 0, 0, STATE_READONLY); 148 testStates("radiogroup_readonly_undefined", 0, 0, STATE_READONLY); 149 testStates("radiogroup_readonly_absent", 0, 0, STATE_READONLY); 150 151 // test (switch) readonly states 152 testStates("switch_readonly_true", STATE_READONLY); 153 testStates("switch_readonly_false", 0, 0, STATE_READONLY); 154 testStates("switch_readonly_empty", 0, 0, STATE_READONLY); 155 testStates("switch_readonly_undefined", 0, 0, STATE_READONLY); 156 testStates("switch_readonly_absent", 0, 0, STATE_READONLY); 157 158 // test (textbox) multiline states 159 testStates("textbox_multiline_true", 0, EXT_STATE_MULTI_LINE); 160 testStates("textbox_multiline_false", 0, EXT_STATE_SINGLE_LINE); 161 testStates("textbox_multiline_empty", 0, EXT_STATE_SINGLE_LINE); 162 testStates("textbox_multiline_undefined", 0, EXT_STATE_SINGLE_LINE); 163 testStates("textbox_multiline_absent", 0, EXT_STATE_SINGLE_LINE); 164 165 // test (textbox) readonly states 166 testStates("textbox_readonly_true", STATE_READONLY); 167 testStates("textbox_readonly_false", 0, EXT_STATE_EDITABLE, STATE_READONLY); 168 testStates("textbox_readonly_empty", 0, EXT_STATE_EDITABLE, STATE_READONLY); 169 testStates("textbox_readonly_undefined", 0, EXT_STATE_EDITABLE, STATE_READONLY); 170 testStates("textbox_readonly_absent", 0, EXT_STATE_EDITABLE, STATE_READONLY); 171 172 // test native textbox readonly state and aria-readonly state (if conflict, native wins) 173 testStates("native_textbox_nativereadonly_ariatrue", STATE_READONLY); 174 testStates("native_textbox_nativereadonly_ariafalse", STATE_READONLY); 175 testStates("native_textbox_nativereadonly_ariaempty", STATE_READONLY); 176 testStates("native_textbox_nativereadonly_ariaundefined", STATE_READONLY); 177 testStates("native_textbox_nativereadonly_ariaabsent", STATE_READONLY); 178 179 testStates("native_textbox_nativeeditable_ariatrue", 0, 0, STATE_READONLY); 180 testStates("native_textbox_nativeeditable_ariafalse", 0, 0, STATE_READONLY); 181 testStates("native_textbox_nativeeditable_ariaempty", 0, 0, STATE_READONLY); 182 testStates("native_textbox_nativeeditable_ariaundefined", 0, 0, STATE_READONLY); 183 testStates("native_textbox_nativeeditable_ariaabsent", 0, 0, STATE_READONLY); 184 185 // test (treeitem) selectable and selected states 186 testStates("treeitem_selected_true", (STATE_SELECTABLE | STATE_SELECTED)); 187 testStates("treeitem_selected_false", STATE_SELECTABLE, 0, STATE_SELECTED); 188 testStates("treeitem_selected_empty", STATE_SELECTABLE, 0, STATE_SELECTED); 189 testStates("treeitem_selected_undefined", STATE_SELECTABLE, 0, STATE_SELECTED); 190 testStates("treeitem_selected_absent", STATE_SELECTABLE, 0, STATE_SELECTED); 191 192 // test (treeitem) haspopup states 193 testStates("treeitem_haspopup_true", STATE_HASPOPUP); 194 testStates("treeitem_haspopup_false", 0, 0, STATE_HASPOPUP); 195 testStates("treeitem_haspopup_empty", 0, 0, STATE_HASPOPUP); 196 testStates("treeitem_haspopup_undefined", 0, 0, STATE_HASPOPUP); 197 testStates("treeitem_haspopup_absent", 0, 0, STATE_HASPOPUP); 198 199 // test (treeitem) expandable and expanded/collapsed states 200 testStates("treeitem_expanded_true", STATE_EXPANDED, EXT_STATE_EXPANDABLE); 201 testStates("treeitem_expanded_false", STATE_COLLAPSED, EXT_STATE_EXPANDABLE); 202 testStates("treeitem_expanded_empty", 0, 0, STATE_EXPANDED | STATE_COLLAPSED, EXT_STATE_EXPANDABLE); 203 testStates("treeitem_expanded_undefined", 0, 0, STATE_EXPANDED | STATE_COLLAPSED, EXT_STATE_EXPANDABLE); 204 testStates("treeitem_expanded_absent", 0, 0, STATE_EXPANDED | STATE_COLLAPSED, EXT_STATE_EXPANDABLE); 205 206 SimpleTest.finish(); 207 } 208 209 SimpleTest.waitForExplicitFinish(); 210 addA11yLoadEvent(doTest); 211 </script> 212 </head> 213 <body> 214 215 <a target="_blank" 216 href="https://bugzilla.mozilla.org/show_bug.cgi?id=452388"> 217 Mozilla Bug 452388 218 </a> 219 <a target="_blank" 220 href="https://bugzilla.mozilla.org/show_bug.cgi?id=499653" 221 title="Unify ARIA state attributes mapping rules"> 222 Mozilla Bug 499653 223 </a> 224 <a target="_blank" 225 href="https://bugzilla.mozilla.org/show_bug.cgi?id=989958" 226 title="Pressed state is not exposed on a button element with aria-pressed attribute" 227 Mozilla Bug 989958 228 </a> 229 <p id="display"></p> 230 <div id="content" style="display: none"></div> 231 <pre id="test"> 232 </pre> 233 234 <div id="button_pressed_true" role="button" aria-pressed="true">This button has aria-pressed="true" and should get ROLE_TOGGLE_BUTTON. It should also get STATE_PRESSED.</div> 235 <div id="button_pressed_false" role="button" aria-pressed="false">This button has aria-pressed="false" and should get ROLE_TOGGLE_BUTTON.</div> 236 <div id="button_pressed_empty" role="button" aria-pressed="">This button has aria-pressed="" and should <emph>not</emph> get ROLE_BUTTON.</div> 237 <div id="button_pressed_undefined" role="button" aria-pressed="undefined">This button has aria-pressed="undefined" and should <emph>not</emph> get ROLE_TOGGLE_BUTTON.</div> 238 <div id="button_pressed_absent" role="button">This button has <emph>no</emph> aria-pressed attribute and should <emph>not</emph> get ROLE_TOGGLE_BUTTON.</div> 239 240 <div id="checkbox_checked_true" role="checkbox" aria-checked="true">This checkbox has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_checked.</div> 241 <div id="checkbox_checked_mixed" role="checkbox" aria-checked="mixed">This checkbox has aria-checked="mixed" and should get STATE_CHECKABLE. It should also get STATE_MIXED.</div> 242 <div id="checkbox_checked_false" role="checkbox" aria-checked="false">This checkbox has aria-checked="false" and should get STATE_CHECKABLE.</div> 243 <div id="checkbox_checked_empty" role="checkbox" aria-checked="">This checkbox has aria-checked="" and should <emph>not</emph> get STATE_CHECKABLE.</div> 244 <div id="checkbox_checked_undefined" role="checkbox" aria-checked="undefined">This checkbox has aria-checked="undefined" and should <emph>not</emph> get STATE_CHECKABLE.</div> 245 <div id="checkbox_checked_absent" role="checkbox">This checkbox has <emph>no</emph> aria-checked attribute and should get STATE_CHECKABLE.</div> 246 247 <form action=""> 248 <input id="native_checkbox_nativechecked_ariatrue" type="checkbox" checked="checked" aria-checked="true"/> 249 <input id="native_checkbox_nativechecked_ariafalse" type="checkbox" checked="checked" aria-checked="false"/> 250 <input id="native_checkbox_nativechecked_ariaempty" type="checkbox" checked="checked" aria-checked=""/> 251 <input id="native_checkbox_nativechecked_ariaundefined" type="checkbox" checked="checked" aria-checked="undefined"/> 252 <input id="native_checkbox_nativechecked_ariaabsent" type="checkbox" checked="checked"/> 253 254 <input id="native_checkbox_nativeunchecked_ariatrue" type="checkbox" aria-checked="true"/> 255 <input id="native_checkbox_nativeunchecked_ariafalse" type="checkbox" aria-checked="false"/> 256 <input id="native_checkbox_nativeunchecked_ariaempty" type="checkbox" aria-checked=""/> 257 <input id="native_checkbox_nativeunchecked_ariaundefined" type="checkbox" aria-checked="undefined"/> 258 <input id="native_checkbox_nativeunchecked_ariaabsent" type="checkbox"/> 259 </form> 260 261 <div id="checkbox_readonly_true" role="checkbox" aria-readonly="true">This checkbox has aria-readonly="true" and should get STATE_READONLY.</div> 262 <div id="checkbox_readonly_false" role="checkbox" aria-readonly="false">This checkbox has aria-readonly="false" and should <emph>not</emph> get STATE_READONLY.</div> 263 <div id="checkbox_readonly_empty" role="checkbox" aria-readonly="">This checkbox has aria-readonly="" and should <emph>not</emph> get STATE_READONLY.</div> 264 <div id="checkbox_readonly_undefined" role="checkbox" aria-readonly="undefined">This checkbox has aria-readonly="undefined" and should <emph>not</emph> get STATE_READONLY.</div> 265 <div id="checkbox_readonly_absent" role="checkbox">This checkbox has <emph>no</emph> aria-readonly attribute and should <emph>not</emph> get STATE_READONLY.</div> 266 267 <div id="checkbox_required_true" role="checkbox" aria-required="true">This checkbox has aria-required="true" and should get STATE_REQUIRED.</div> 268 <div id="checkbox_required_false" role="checkbox" aria-required="false">This checkbox has aria-required="false" and should <emph>not</emph> get STATE_REQUIRED.</div> 269 <div id="checkbox_required_empty" role="checkbox" aria-required="">This checkbox has aria-required="" and should <emph>not</emph> get STATE_REQUIRED.</div> 270 <div id="checkbox_required_undefined" role="checkbox" aria-required="undefined">This checkbox has aria-required="undefined" and should <emph>not</emph> get STATE_REQUIRED.</div> 271 <div id="checkbox_required_absent" role="checkbox">This checkbox has <emph>no</emph> aria-required attribute and should <emph>not</emph> get STATE_REQUIRED.</div> 272 273 <div id="checkbox_invalid_true" role="checkbox" aria-invalid="true">This checkbox has aria-invalid="true" and should get STATE_INVALID.</div> 274 <div id="checkbox_invalid_false" role="checkbox" aria-invalid="false">This checkbox has aria-invalid="false" and should <emph>not</emph> get STATE_INVALID.</div> 275 <div id="checkbox_invalid_empty" role="checkbox" aria-invalid="">This checkbox has aria-invalid="" and should <emph>not</emph> get STATE_INVALID.</div> 276 <div id="checkbox_invalid_undefined" role="checkbox" aria-invalid="undefined">This checkbox has aria-invalid="undefined" and should <emph>not</emph> get STATE_INVALID.</div> 277 <div id="checkbox_invalid_absent" role="checkbox">This checkbox has <emph>no</emph> aria-invalid attribute and should <emph>not</emph> get STATE_INVALID.</div> 278 279 <div id="checkbox_disabled_true" role="checkbox" aria-disabled="true" tabindex="0">This checkbox has aria-disabled="true" and should get STATE_DISABLED.</div> 280 <div id="checkbox_disabled_false" role="checkbox" aria-disabled="false">This checkbox has aria-disabled="false" and should <emph>not</emph> get STATE_DISABLED.</div> 281 <div id="checkbox_disabled_empty" role="checkbox" aria-disabled="">This checkbox has aria-disabled="" and should <emph>not</emph> get STATE_DISABLED.</div> 282 <div id="checkbox_disabled_undefined" role="checkbox" aria-disabled="undefined">This checkbox has aria-disabled="undefined" and should <emph>not</emph> get STATE_DISABLED.</div> 283 <div id="checkbox_disabled_absent" role="checkbox">This checkbox has <emph>no</emph> aria-disabled attribute and should <emph>not</emph> get STATE_DISABLED.</div> 284 285 <div id="listbox_multiselectable_true" role="listbox" aria-multiselectable="true"> 286 <div id="option_checked_true" role="option" aria-checked="true">item</div> 287 </div> 288 <div id="listbox_multiselectable_false" role="listbox" aria-multiselectable="false"> 289 <div id="option_checked_false" role="option" aria-checked="false">item</div> 290 </div> 291 <div id="listbox_multiselectable_empty" role="listbox" aria-multiselectable=""> 292 <div id="option_checked_empty" role="option" aria-checked="">item</div> 293 </div> 294 <div id="listbox_multiselectable_undefined" role="listbox" aria-multiselectable="undefined"> 295 <div id="option_checked_undefined" role="option" aria-checked="undefined">item</div> 296 </div> 297 <div id="listbox_multiselectable_absent" role="listbox"> 298 <div id="option_checked_absent" role="option">item</div> 299 </div> 300 301 <div role="menu"> 302 <div id="menuitem_checked_true" role="menuitem" aria-checked="true">Generic menuitems don't support aria-checked.</div> 303 <div id="menuitem_checked_mixed" role="menuitem" aria-checked="mixed">Generic menuitems don't support aria-checked.</div> 304 <div id="menuitem_checked_false" role="menuitem" aria-checked="false">Generic menuitems don't support aria-checked.</div> 305 <div id="menuitem_checked_empty" role="menuitem" aria-checked="">Generic menuitems don't support aria-checked.</div> 306 <div id="menuitem_checked_undefined" role="menuitem" aria-checked="undefined">Generic menuitems don't support aria-checked.</div> 307 <div id="menuitem_checked_absent" role="menuitem">Generic menuitems don't support aria-checked.</div> 308 309 <div id="menuitemcheckbox_checked_true" role="menuitemcheckbox" aria-checked="true">This menuitemcheckbox has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_checked.</div> 310 <div id="menuitemcheckbox_checked_mixed" role="menuitemcheckbox" aria-checked="mixed">This menuitemcheckbox has aria-checked="mixed" and should get STATE_CHECKABLE. It should also get STATE_MIXED.</div> 311 <div id="menuitemcheckbox_checked_false" role="menuitemcheckbox" aria-checked="false">This menuitemcheckbox has aria-checked="false" and should get STATE_CHECKABLE.</div> 312 <div id="menuitemcheckbox_checked_empty" role="menuitemcheckbox" aria-checked="">This menuitemcheckbox has aria-checked="" and should <emph>not</emph> get STATE_CHECKABLE.</div> 313 <div id="menuitemcheckbox_checked_undefined" role="menuitemcheckbox" aria-checked="undefined">This menuitemcheckbox has aria-checked="undefined" and should <emph>not</emph> get STATE_CHECKABLE.</div> 314 <div id="menuitemcheckbox_checked_absent" role="menuitemcheckbox">This menuitemcheckbox has <emph>no</emph> aria-checked attribute and should <emph>not</emph> get STATE_CHECKABLE.</div> 315 316 <div id="menuitemcheckbox_readonly_true" role="menuitemcheckbox" aria-readonly="true">This menuitemcheckbox has aria-readonly="true" and should get STATE_READONLY.</div> 317 <div id="menuitemcheckbox_readonly_false" role="menuitemcheckbox" aria-readonly="false">This menuitemcheckbox has aria-readonly="false" and should <emph>not</emph> get STATE_READONLY.</div> 318 <div id="menuitemcheckbox_readonly_empty" role="menuitemcheckbox" aria-readonly="">This menuitemcheckbox has aria-readonly="" and should <emph>not</emph> get STATE_READONLY.</div> 319 <div id="menuitemcheckbox_readonly_undefined" role="menuitemcheckbox" aria-readonly="undefined">This menuitemcheckbox has aria-readonly="undefined" and should <emph>not</emph> get STATE_READONLY.</div> 320 <div id="menuitemcheckbox_readonly_absent" role="menuitemcheckbox">This menuitemcheckbox has <emph>no</emph> aria-readonly attribute and should <emph>not</emph> get STATE_READONLY.</div> 321 322 <div id="menuitemradio_checked_true" role="menuitemradio" aria-checked="true">This menuitem has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_checked.</div> 323 <div id="menuitemradio_checked_mixed" role="menuitemradio" aria-checked="mixed">This menuitem has aria-checked="mixed" and should get STATE_CHECKABLE. It should not get STATE_MIXED.</div> 324 <div id="menuitemradio_checked_false" role="menuitemradio" aria-checked="false">This menuitem has aria-checked="false" and should get STATE_CHECKABLE.</div> 325 <div id="menuitemradio_checked_empty" role="menuitemradio" aria-checked="">This menuitem has aria-checked="" and should <emph>not</emph> get STATE_CHECKABLE.</div> 326 <div id="menuitemradio_checked_undefined" role="menuitemradio" aria-checked="undefined">This menuitem has aria-checked="undefined" and should <emph>not</emph> get STATE_CHECKABLE.</div> 327 <div id="menuitemradio_checked_absent" role="menuitemradio">This menuitem has <emph>no</emph> aria-checked attribute but should get STATE_CHECKABLE.</div> 328 </div> 329 330 <div id="menuitemradio_readonly_true" role="menuitemradio" aria-readonly="true">This menuitemradio has aria-readonly="true" and should get STATE_READONLY.</div> 331 <div id="menuitemradio_readonly_false" role="menuitemradio" aria-readonly="false">This menuitemradio has aria-readonly="false" and should <emph>not</emph> get STATE_READONLY.</div> 332 <div id="menuitemradio_readonly_empty" role="menuitemradio" aria-readonly="">This menuitemradio has aria-readonly="" and should <emph>not</emph> get STATE_READONLY.</div> 333 <div id="menuitemradio_readonly_undefined" role="menuitemradio" aria-readonly="undefined">This menuitemradio has aria-readonly="undefined" and should <emph>not</emph> get STATE_READONLY.</div> 334 <div id="menuitemradio_readonly_absent" role="menuitemradio">This menuitemradio has <emph>no</emph> aria-readonly attribute and should <emph>not</emph> get STATE_READONLY.</div> 335 336 <div id="radio_checked_true" role="radio" aria-checked="true">This menuitem has aria-checked="true" and should get STATE_CHECKABLE. It should also get STATE_CHECKED.</div> 337 <div id="radio_checked_mixed" role="radio" aria-checked="mixed">This radio button has aria-checked="mixed" and should get STATE_CHECKABLE. It should not get STATE_MIXED.</div> 338 <div id="radio_checked_false" role="radio" aria-checked="false">This menuitem has aria-checked="false" and should get STATE_CHECKABLE.</div> 339 <div id="radio_checked_empty" role="radio" aria-checked="">This menuitem has aria-checked="" and should <emph>not</emph> get STATE_CHECKABLE.</div> 340 <div id="radio_checked_undefined" role="radio" aria-checked="undefined">This menuitem has aria-checked="undefined" and should <emph>not</emph> get STATE_CHECKABLE.</div> 341 <div id="radio_checked_absent" role="radio">This menuitem has <emph>no</emph> aria-checked attribute but should get STATE_CHECKABLE.</div> 342 343 <div id="radiogroup_readonly_true" role="radiogroup" aria-readonly="true"> 344 <div role="radio">yes</div> 345 <div role="radio">no</div> 346 </div> 347 <div id="radiogroup_readonly_false" role="radiogroup" aria-readonly="false"> 348 <div role="radio">yes</div> 349 <div role="radio">no</div> 350 </div> 351 <div id="radiogroup_readonly_empty" role="radiogroup" aria-readonly=""> 352 <div role="radio">yes</div> 353 <div role="radio">no</div> 354 </div> 355 <div id="radiogroup_readonly_undefined" role="radiogroup" aria-readonly="undefined"> 356 <div role="radio">yes</div> 357 <div role="radio">no</div> 358 </div> 359 <div id="radiogroup_readonly_absent" role="radiogroup"> 360 <div role="radio">yes</div> 361 <div role="radio">no</div> 362 </div> 363 364 <div id="switch_readonly_true" role="switch" aria-readonly="true">This switch has aria-readonly="true" and should get STATE_READONLY.</div> 365 <div id="switch_readonly_false" role="switch" aria-readonly="false">This switch has aria-readonly="false" and should <emph>not</emph> get STATE_READONLY.</div> 366 <div id="switch_readonly_empty" role="switch" aria-readonly="">This switch has aria-readonly="" and should <emph>not</emph> get STATE_READONLY.</div> 367 <div id="switch_readonly_undefined" role="switch" aria-readonly="undefined">This switch has aria-readonly="undefined" and should <emph>not</emph> get STATE_READONLY.</div> 368 <div id="switch_readonly_absent" role="switch">This switch has <emph>no</emph> aria-readonly attribute and should <emph>not</emph> get STATE_READONLY.</div> 369 370 <div id="textbox_readonly_true" role="textbox" aria-readonly="true"></div> 371 <div id="textbox_readonly_false" role="textbox" aria-readonly="false"></div> 372 <div id="textbox_readonly_empty" role="textbox" aria-readonly=""></div> 373 <div id="textbox_readonly_undefined" role="textbox" aria-readonly="undefined"></div> 374 <div id="textbox_readonly_absent" role="textbox"></div> 375 376 <div id="textbox_multiline_true" role="textbox" aria-multiline="true"></div> 377 <div id="textbox_multiline_false" role="textbox" aria-multiline="false"></div> 378 <div id="textbox_multiline_empty" role="textbox" aria-multiline=""></div> 379 <div id="textbox_multiline_undefined" role="textbox" aria-multiline="undefined"></div> 380 <div id="textbox_multiline_absent" role="textbox"></div> 381 382 <form action=""> 383 <input id="native_textbox_nativereadonly_ariatrue" readonly="readonly" aria-readonly="true"/> 384 <input id="native_textbox_nativereadonly_ariafalse" readonly="readonly" aria-readonly="false"/> 385 <input id="native_textbox_nativereadonly_ariaempty" readonly="readonly" aria-readonly=""/> 386 <input id="native_textbox_nativereadonly_ariaundefined" readonly="readonly" aria-readonly="undefined"/> 387 <input id="native_textbox_nativereadonly_ariaabsent" readonly="readonly"/> 388 389 <input id="native_textbox_nativeeditable_ariatrue" aria-readonly="true"/> 390 <input id="native_textbox_nativeeditable_ariafalse" aria-readonly="false"/> 391 <input id="native_textbox_nativeeditable_ariaempty" aria-readonly=""/> 392 <input id="native_textbox_nativeeditable_ariaundefined" aria-readonly="undefined"/> 393 <input id="native_textbox_nativeeditable_ariaabsent"/> 394 </form> 395 396 <div role="tree"> 397 <div id="treeitem_selected_true" role="treeitem" aria-selected="true">This treeitem has aria-selected="true" and should get STATE_SELECTABLE. It should also get STATE_SELECTED.</div> 398 <div id="treeitem_selected_false" role="treeitem" aria-selected="false">This treeitem has aria-selected="false" and should get STATE_SELECTABLE.</div> 399 <div id="treeitem_selected_empty" role="treeitem" aria-selected="">This treeitem has aria-selected="" and should <emph>not</emph> get STATE_SELECTABLE.</div> 400 <div id="treeitem_selected_undefined" role="treeitem" aria-selected="undefined">This treeitem has aria-selected="undefined" and should <emph>not</emph> get STATE_SELECTABLE.</div> 401 <div id="treeitem_selected_absent" role="treeitem">This treeitem has <emph>no</emph> aria-selected attribute and should <emph>not</emph> get STATE_SELECTABLE.</div> 402 403 <div id="treeitem_haspopup_true" role="treeitem" aria-haspopup="true">This treeitem has aria-haspopup="true" and should get STATE_HASPOPUP.</div> 404 <div id="treeitem_haspopup_false" role="treeitem" aria-haspopup="false">This treeitem has aria-haspopup="false" and should get STATE_HASPOPUP.</div> 405 <div id="treeitem_haspopup_empty" role="treeitem" aria-haspopup="">This treeitem has aria-haspopup="" and should <emph>not</emph> get STATE_HASPOPUP.</div> 406 <div id="treeitem_haspopup_undefined" role="treeitem" aria-haspopup="undefined">This treeitem has aria-haspopup="undefined" and should <emph>not</emph> get STATE_HASPOPUP.</div> 407 <div id="treeitem_haspopup_absent" role="treeitem">This treeitem has <emph>no</emph> aria-haspopup attribute and should <emph>not</emph> get STATE_HASPOPUP.</div> 408 409 <div id="treeitem_expanded_true" role="treeitem" aria-expanded="true">This treeitem has aria-expanded="true" and should get STATE_EXPANDABLE. It should also get STATE_EXPANDED.</div> 410 <div id="treeitem_expanded_false" role="treeitem" aria-expanded="false">This treeitem has aria-expanded="false" and should get STATE_EXPANDABLE. It should also get STATE_COLLAPSED.</div> 411 <div id="treeitem_expanded_empty" role="treeitem" aria-expanded="">This treeitem has aria-expanded="" and should <emph>not</emph> get STATE_EXPANDABLE.</div> 412 <div id="treeitem_expanded_undefined" role="treeitem" aria-expanded="undefined">This treeitem has aria-expanded="undefined" and should <emph>not</emph> get STATE_EXPANDABLE.</div> 413 <div id="treeitem_expanded_absent" role="treeitem">This treeitem has <emph>no</emph> aria-expanded attribute and should <emph>not</emph> get STATE_EXPANDABLE.</div> 414 </div> 415 416 </body> 417 </html>