accessible/tests/mochitest/states/test_aria.html

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     1 <html>
     3 <head>
     4   <title>ARIA based nsIAccessible states testing</title>
     6   <link rel="stylesheet" type="text/css"
     7         href="chrome://mochikit/content/tests/SimpleTest/test.css" />
     9   <style type="text/css">
    10     .offscreen {
    11       position: absolute;
    12       left: -5000px;
    13       top: -5000px;
    14       height: 100px;
    15       width: 100px;
    16     }
    17   </style>
    19   <script type="application/javascript"
    20           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    22   <script type="application/javascript"
    23           src="../common.js"></script>
    24   <script type="application/javascript"
    25           src="../role.js"></script>
    26   <script type="application/javascript"
    27           src="../states.js"></script>
    29   <script type="application/javascript">
    30     function testAriaDisabledTree(aAccOrElmOrID)
    31     {
    32       // test accessible and its subtree for propagated state.
    33       var acc = getAccessible(aAccOrElmOrID);
    34       if (!acc)
    35         return;
    37       var [state, extraState] = getStates(aAccOrElmOrID);
    38       if (state & STATE_UNAVAILABLE) {
    39         var role = getRole(acc);
    40         if (role != ROLE_GROUPING) {
    41           testStates(acc, STATE_FOCUSABLE);
    42         }
    43       }
    45       // Iterate over its children to see if the state got propagated.
    46       var children = null;
    47       try {
    48         children = acc.children;
    49       } catch(e) {}
    50       ok(children, "Could not get children for " + aAccOrElmOrID +"!");
    52       if (children) {
    53         for (var i = 0; i < children.length; i++) {
    54           var childAcc = children.queryElementAt(i, nsIAccessible);
    55           testAriaDisabledTree(childAcc);
    56         }
    57       }
    58     }
    60     function doTest()
    61     {
    62       // aria_autocomplete
    63       testStates("textbox_autocomplete_inline", 0, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    64       testStates("textbox_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    65       testStates("textbox_autocomplete_both", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    66       testStates("combobox_autocomplete_inline", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    67       testStates("combobox_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    68       testStates("combobox_autocomplete_both", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    70       testStates("htmltext_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    71       testStates("htmltextarea_autocomplete_list", STATE_HASPOPUP, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
    73       // aria-busy
    74       testStates("textbox_busy_false", 0, 0, STATE_BUSY);
    75       testStates("textbox_busy_true", STATE_BUSY);
    76       testStates("textbox_busy_error", STATE_INVALID);
    78       // aria-expanded
    79       testStates("combobox", STATE_COLLAPSED);
    80       testStates("combobox_expanded", STATE_EXPANDED);
    82       // tri-state checkbox
    83       var checkboxElem = getNode("check1");
    84       if (checkboxElem) {
    85         testStates(checkboxElem, STATE_CHECKED);
    86         checkboxElem.checked = false;
    87         testStates(checkboxElem, 0, 0, STATE_CHECKED);
    88         checkboxElem.indeterminate = true;
    89         testStates(checkboxElem, STATE_MIXED, 0);
    90       }
    92       // aria-checked
    93       testStates("aria_checked_checkbox", STATE_CHECKED);
    94       testStates("aria_mixed_checkbox", STATE_MIXED);
    96       // test disabled group and all its descendants to see if they are
    97       // disabled, too. See bug 429285.
    98       testAriaDisabledTree("group");
   100       // aria-multiline
   101       testStates("aria_multiline_textbox", 0, EXT_STATE_MULTI_LINE);
   103       // aria-multiselectable
   104       testStates("aria_multiselectable_listbox",
   105                  STATE_MULTISELECTABLE | STATE_EXTSELECTABLE);
   107       // aria-pressed
   108       testStates("aria_pressed_button", STATE_PRESSED, 0, STATE_CHECKABLE);
   109       testStates("aria_pressed_native_button", STATE_PRESSED, 0, STATE_CHECKABLE);
   111       // aria-readonly
   112       testStates("aria_readonly_textbox", STATE_READONLY);
   114       // readonly/editable on grid and gridcell
   115       testStates("aria_grid_default", 0, EXT_STATE_EDITABLE,
   116                  STATE_READONLY, 0);
   117       testStates("aria_grid_default_colheader_readonly", STATE_READONLY, 0,
   118                  0, EXT_STATE_EDITABLE);
   119       testStates("aria_grid_default_colheader_inherited", 0, EXT_STATE_EDITABLE,
   120                  STATE_READONLY, 0);
   121       testStates("aria_grid_default_rowheader_readonly", STATE_READONLY, 0,
   122                  0, EXT_STATE_EDITABLE);
   123       testStates("aria_grid_default_rowheader_inherited", 0, EXT_STATE_EDITABLE,
   124                  STATE_READONLY, 0);
   125       testStates("aria_grid_default_cell_readonly", STATE_READONLY, 0,
   126                  0, EXT_STATE_EDITABLE);
   127       testStates("aria_grid_default_cell_inherited", 0, EXT_STATE_EDITABLE,
   128                  STATE_READONLY, 0);
   130       testStates("aria_grid_readonly", STATE_READONLY, 0,
   131                  0, EXT_STATE_EDITABLE);
   132       testStates("aria_grid_readonly_colheader_editable", 0, EXT_STATE_EDITABLE,
   133                  STATE_READONLY, 0);
   134       testStates("aria_grid_readonly_colheader_inherited", STATE_READONLY, 0,
   135                  0, EXT_STATE_EDITABLE);
   136       testStates("aria_grid_readonly_rowheader_editable", 0, EXT_STATE_EDITABLE,
   137                  STATE_READONLY, 0);
   138       testStates("aria_grid_readonly_rowheader_inherited", STATE_READONLY, 0,
   139                  0, EXT_STATE_EDITABLE);
   140       testStates("aria_grid_readonly_cell_editable", 0, EXT_STATE_EDITABLE,
   141                  STATE_READONLY, 0);
   142       testStates("aria_grid_readonly_cell_inherited", STATE_READONLY, 0,
   143                  0, EXT_STATE_EDITABLE);
   145       // readonly/editable on treegrid and gridcell
   146       testStates("aria_treegrid_default", 0, EXT_STATE_EDITABLE,
   147                  STATE_READONLY, 0);
   148       testStates("aria_treegrid_default_colheader_readonly", STATE_READONLY, 0,
   149                  0, EXT_STATE_EDITABLE);
   150       testStates("aria_treegrid_default_colheader_inherited", 0, EXT_STATE_EDITABLE,
   151                  STATE_READONLY, 0);
   152       testStates("aria_treegrid_default_rowheader_readonly", STATE_READONLY, 0,
   153                  0, EXT_STATE_EDITABLE);
   154       testStates("aria_treegrid_default_rowheader_inherited", 0, EXT_STATE_EDITABLE,
   155                  STATE_READONLY, 0);
   156       testStates("aria_treegrid_default_cell_readonly", STATE_READONLY, 0,
   157                  0, EXT_STATE_EDITABLE);
   158       testStates("aria_treegrid_default_cell_inherited", 0, EXT_STATE_EDITABLE,
   159                  STATE_READONLY, 0);
   161       testStates("aria_treegrid_readonly", STATE_READONLY, 0,
   162                  0, EXT_STATE_EDITABLE);
   163       testStates("aria_treegrid_readonly_colheader_editable", 0, EXT_STATE_EDITABLE,
   164                  STATE_READONLY, 0);
   165       testStates("aria_treegrid_readonly_colheader_inherited", STATE_READONLY, 0,
   166                  0, EXT_STATE_EDITABLE);
   167       testStates("aria_treegrid_readonly_rowheader_editable", 0, EXT_STATE_EDITABLE,
   168                  STATE_READONLY, 0);
   169       testStates("aria_treegrid_readonly_rowheader_inherited", STATE_READONLY, 0,
   170                  0, EXT_STATE_EDITABLE);
   171       testStates("aria_treegrid_readonly_cell_editable", 0, EXT_STATE_EDITABLE,
   172                  STATE_READONLY, 0);
   173       testStates("aria_treegrid_readonly_cell_inherited", STATE_READONLY, 0,
   174                  0, EXT_STATE_EDITABLE);
   176       // aria-selectable
   177       testStates("aria_selectable_listitem", STATE_SELECTABLE | STATE_SELECTED);
   179       // active state caused by aria-activedescendant
   180       testStates("as_item1", 0, EXT_STATE_ACTIVE);
   181       testStates("as_item2", 0, 0, 0, EXT_STATE_ACTIVE);
   183       // universal ARIA properties inherited from file input control
   184       var fileBrowseButton = getAccessible("fileinput").firstChild;
   185       testStates(fileBrowseButton,
   186                  STATE_BUSY | STATE_UNAVAILABLE | STATE_REQUIRED | STATE_HASPOPUP | STATE_INVALID);
   187       // No states on the label.
   189       // offscreen test
   190       testStates("aria_offscreen_textbox", STATE_OFFSCREEN);
   192       //
   193       // This section tests aria roles on links/anchors for underlying
   194       // HTMLLinkAccessible creation. (see closed bug 494807)
   195       //
   197       // strong roles
   198       testStates("aria_menuitem_link", 0, 0, STATE_LINKED);
   199       testStates("aria_button_link", 0, 0, STATE_LINKED);
   200       testStates("aria_checkbox_link", 0, 0, STATE_LINKED);
   202       // strong landmark
   203       testStates("aria_application_link", 0, 0, STATE_LINKED);
   204       testStates("aria_application_anchor", 0, 0, STATE_SELECTABLE);
   206       // strange cases
   207       testStates("aria_link_link", STATE_LINKED);
   208       testStates("aria_link_anchor", STATE_SELECTABLE);
   210       // some weak landmarks
   211       testStates("aria_main_link", STATE_LINKED);
   212       testStates("aria_navigation_link", STATE_LINKED);
   213       testStates("aria_main_anchor", STATE_SELECTABLE);
   214       testStates("aria_navigation_anchor", STATE_SELECTABLE);
   216       // aria-orientation (applied to scrollbar, separator, slider)
   217       testStates("aria_scrollbar", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
   218       testStates("aria_hscrollbar", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
   219       testStates("aria_vscrollbar", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
   220       testStates("aria_separator", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
   221       testStates("aria_hseparator", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
   222       testStates("aria_vseparator", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
   223       testStates("aria_slider", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
   224       testStates("aria_hslider", 0, EXT_STATE_HORIZONTAL, 0, EXT_STATE_VERTICAL);
   225       testStates("aria_vslider", 0, EXT_STATE_VERTICAL, 0, EXT_STATE_HORIZONTAL);
   227       // indeterminate ARIA progressbars (no aria-valuenow or aria-valuetext attribute)
   228       // should expose mixed state
   229       testStates("aria_progressbar", STATE_MIXED);
   230       testStates("aria_progressbar_valuenow", 0, 0, STATE_MIXED);
   231       testStates("aria_progressbar_valuetext", 0, 0, STATE_MIXED);
   233       testStates("aria_listbox", STATE_FOCUSABLE);
   234       testStates("aria_grid", STATE_FOCUSABLE);
   235       testStates("aria_tree", STATE_FOCUSABLE);
   236       testStates("aria_treegrid", STATE_FOCUSABLE);
   237       testStates("aria_listbox_disabled", 0, 0, STATE_FOCUSABLE);
   238       testStates("aria_grid_disabled", 0, 0, STATE_FOCUSABLE);
   239       testStates("aria_tree_disabled", 0, 0, STATE_FOCUSABLE);
   240       testStates("aria_treegrid_disabled", 0, 0, STATE_FOCUSABLE);
   241       SimpleTest.finish();
   242     }
   244     SimpleTest.waitForExplicitFinish();
   245     addA11yLoadEvent(doTest);
   246   </script>
   248 </head>
   250 <body>
   252   <a target="_blank"
   253      href="https://bugzilla.mozilla.org/show_bug.cgi?id=457219"
   254      title="nsIAccessible states testing">
   255     Mozilla Bug 457219
   256   </a><br />
   257   <a target="_blank"
   258      href="https://bugzilla.mozilla.org/show_bug.cgi?id=429285"
   259      title="Propagate aria-disabled to descendants">
   260     Mozilla Bug 429285
   261   </a>
   262   <a target="_blank"
   263      href="https://bugzilla.mozilla.org/show_bug.cgi?id=457226"
   264      title="Mochitests for ARIA states">
   265     Mozilla Bug 457226
   266   </a>
   267   <a target="_blank"
   268      href="https://bugzilla.mozilla.org/show_bug.cgi?id=499653"
   269      title="Unify ARIA state attributes mapping rules">
   270     Mozilla Bug 499653
   271   </a>
   272   <a target="_blank"
   273      href="https://bugzilla.mozilla.org/show_bug.cgi?id=681674"
   274      title="aria-autocomplete not supported on standard form text input controls">
   275     Mozilla Bug 681674
   276   </a>
   277   <a target="_blank"
   278      href="https://bugzilla.mozilla.org/show_bug.cgi?id=681674"
   279      title="aria-orientation should be applied to separator and slider roles">
   280     Mozilla Bug 681674
   281   </a>
   282   <a target="_blank"
   283      href="https://bugzilla.mozilla.org/show_bug.cgi?id=689847"
   284      title="Expose active state on current item of selectable widgets">
   285     Mozilla Bug 689847
   286   </a>
   287   <a target="_blank"
   288      href="https://bugzilla.mozilla.org/show_bug.cgi?id=699017"
   289      title="File input control should be propogate states to descendants">
   290     Mozilla Bug 699017
   291   </a>
   292   <a target="_blank"
   293      href="https://bugzilla.mozilla.org/show_bug.cgi?id=690199"
   294      title="ARIA select widget should expose focusable state regardless the way they manage its children">
   295     Mozilla Bug 690199
   296   </a>
   297   <a target="_blank"
   298      href="https://bugzilla.mozilla.org/show_bug.cgi?id=740851"
   299      title="ARIA undetermined progressmeters should expose mixed state">
   300     Mozilla Bug 740851
   301   </a>
   302   <a target="_blank"
   303      href="https://bugzilla.mozilla.org/show_bug.cgi?id=762876"
   304      title="fix default horizontal / vertical state of role=scrollbar and ensure only one of horizontal / vertical states is exposed">
   305     Mozilla Bug 762876
   306   </a>
   307   <a target="_blank"
   308      href="https://bugzilla.mozilla.org/show_bug.cgi?id=892091"
   309      title="ARIA treegrid should be editable by default">
   310     Bug 892091
   311   </a>
   312   <a target="_blank"
   313      href="https://bugzilla.mozilla.org/show_bug.cgi?id=835121"
   314      title="ARIA grid should be editable by default">
   315     Mozilla Bug 835121
   316   </a>
   317   <a target="_blank"
   318      href="https://bugzilla.mozilla.org/show_bug.cgi?id=989958"
   319      title="Pressed state is not exposed on a button element with aria-pressed attribute"
   320     Mozilla Bug 989958
   321   </a>
   323   <p id="display"></p>
   324   <div id="content" style="display: none"></div>
   325   <pre id="test">
   326   </pre>
   328   <div id="textbox_autocomplete_inline" role="textbox" aria-autocomplete="inline"></div>
   329   <div id="textbox_autocomplete_list" role="textbox" aria-autocomplete="list"></div>
   330   <div id="textbox_autocomplete_both" role="textbox" aria-autocomplete="both"></div>
   331   <div id="combobox_autocomplete_inline" role="combobox" aria-autocomplete="inline"></div>
   332   <div id="combobox_autocomplete_list" role="combobox" aria-autocomplete="list"></div>
   333   <div id="combobox_autocomplete_both" role="combobox" aria-autocomplete="both"></div>
   335   <input id="htmltext_autocomplete_list" type="text" aria-autocomplete="list" />
   336   <textarea id="htmltextarea_autocomplete_list" aria-autocomplete="list"></textarea>
   338   <div id="textbox_busy_false" role="textbox" aria-busy="false"></div>
   339   <div id="textbox_busy_true" role="textbox" aria-busy="true"></div>
   340   <div id="textbox_busy_error" role="textbox" aria-busy="error"></div>
   342   <div id="combobox" role="combobox">combobox</div>
   343   <div id="combobox_expanded" role="combobox"
   344        aria-expanded="true">combobox</div>
   346   <input type="checkbox" id="check1" value="I agree" checked="true"/>
   348   <div id="aria_checked_checkbox" role="checkbox" aria-checked="true">
   349     I agree
   350   </div>
   352   <div id="aria_mixed_checkbox" role="checkbox" aria-checked="mixed">
   353     I might agree
   354   </div>
   355   <div id="aria_multiline_textbox" role="textbox" aria-multiline="true"></div>
   356   <div id="aria_multiselectable_listbox" role="listbox" aria-multiselectable="true"></div>
   357   <div id="aria_pressed_button" role="button" aria-pressed="true">Button</div>
   358   <button id="aria_pressed_native_button" aria-pressed="true">Button</button>
   360   <div id="aria_readonly_textbox"
   361        role="textbox" aria-readonly="true">This text should be readonly</div>
   363   <div id="aria_grid_default" role="grid">
   364     <div role="row">
   365       <div id="aria_grid_default_colheader_readonly"
   366            role="columnheader" aria-readonly="true">colheader1</div>
   367       <div id="aria_grid_default_colheader_inherited"
   368            role="columnheader">colheader2</div>
   369     </div>
   370     <div role="row">
   371       <div id="aria_grid_default_rowheader_readonly"
   372            role="rowheader" aria-readonly="true">rowheader1</div>
   373       <div id="aria_grid_default_rowheader_inherited"
   374            role="rowheader">rowheader2</div>
   375     </div>
   376     <div role="row">
   377       <div id="aria_grid_default_cell_readonly"
   378            role="gridcell" aria-readonly="true">gridcell1</div>
   379       <div id="aria_grid_default_cell_inherited"
   380            role="gridcell">gridcell2</div>
   381     </div>
   382   </div>
   384   <div id="aria_grid_readonly" role="grid" aria-readonly="true">
   385     <div role="row">
   386       <div id="aria_grid_readonly_colheader_editable"
   387            role="columnheader" aria-readonly="false">colheader1</div>
   388       <div id="aria_grid_readonly_colheader_inherited"
   389            role="columnheader">colheader2</div>
   390     </div>
   391     <div role="row">
   392       <div id="aria_grid_readonly_rowheader_editable"
   393            role="rowheader" aria-readonly="false">rowheader1</div>
   394       <div id="aria_grid_readonly_rowheader_inherited"
   395            role="rowheader">rowheader2</div>
   396     </div>
   397     <div role="row">
   398       <div id="aria_grid_readonly_cell_editable"
   399            role="gridcell" aria-readonly="false">gridcell1</div>
   400       <div id="aria_grid_readonly_cell_inherited"
   401            role="gridcell">gridcell2</div>
   402     </div>
   403   </div>
   405   <div id="aria_treegrid_default" role="grid">
   406     <div role="row">
   407       <div id="aria_treegrid_default_colheader_readonly"
   408            role="columnheader" aria-readonly="true">colheader1</div>
   409       <div id="aria_treegrid_default_colheader_inherited"
   410            role="columnheader">colheader2</div>
   411     </div>
   412     <div role="row">
   413       <div id="aria_treegrid_default_rowheader_readonly"
   414            role="rowheader" aria-readonly="true">rowheader1</div>
   415       <div id="aria_treegrid_default_rowheader_inherited"
   416            role="rowheader">rowheader2</div>
   417     </div>
   418     <div role="row">
   419       <div id="aria_treegrid_default_cell_readonly"
   420            role="gridcell" aria-readonly="true">gridcell1</div>
   421       <div id="aria_treegrid_default_cell_inherited"
   422            role="gridcell">gridcell2</div>
   423     </div>
   424   </div>
   426   <div id="aria_treegrid_readonly" role="grid" aria-readonly="true">
   427     <div role="row">
   428       <div id="aria_treegrid_readonly_colheader_editable"
   429            role="columnheader" aria-readonly="false">colheader1</div>
   430       <div id="aria_treegrid_readonly_colheader_inherited"
   431            role="columnheader">colheader2</div>
   432     </div>
   433     <div role="row">
   434       <div id="aria_treegrid_readonly_rowheader_editable"
   435            role="rowheader" aria-readonly="false">rowheader1</div>
   436       <div id="aria_treegrid_readonly_rowheader_inherited"
   437            role="rowheader">rowheader2</div>
   438     </div>
   439     <div role="row">
   440       <div id="aria_treegrid_readonly_cell_editable"
   441            role="gridcell" aria-readonly="false">gridcell1</div>
   442       <div id="aria_treegrid_readonly_cell_inherited"
   443            role="gridcell">gridcell2</div>
   444     </div>
   445   </div>
   447   <div role="listbox">
   448     <div id="aria_selectable_listitem" role="option" aria-selected="true">Item1</div>
   449   </div>
   451   <!-- Test that aria-disabled state gets propagated to all descendants -->
   452   <div id="group" role="group" aria-disabled="true">
   453     <button>hi</button>
   454     <div tabindex="0" role="listbox" aria-activedescendant="item1">
   455       <div role="option" id="item1">Item 1</div>
   456       <div role="option" id="item2">Item 2</div>
   457       <div role="option" id="item3">Item 3</div>
   458       <div role="option" id="item4">Item 4</div>
   459     </div>
   460     <div role="slider" tabindex="0">A slider</div>
   461   </div>
   463   <!-- Test active state -->
   464   <div id="as_listbox" tabindex="0" role="listbox"
   465        aria-activedescendant="as_item1">
   466     <div role="option" id="as_item1">Item 1</div>
   467     <div role="option" id="as_item2">Item 2</div>
   468   </div>
   470   <!-- universal ARIA properties should be inherited by text field of file input -->
   471   <input type="file" id="fileinput"
   472          aria-busy="true"
   473          aria-disabled="true"
   474          aria-required="true"
   475          aria-haspopup="true"
   476          aria-invalid="true">
   478   <div id="offscreen_log" role="log" class="offscreen">
   479     <div id="aria_offscreen_textbox" role="textbox" aria-readonly="true">This text should be offscreen</div>
   480   </div>
   482   <a id="aria_menuitem_link" role="menuitem" href="foo">menuitem</a>
   483   <a id="aria_button_link" role="button" href="foo">button</a>
   484   <a id="aria_checkbox_link" role="checkbox" href="foo">checkbox</a>
   486   <!-- strange edge case: please don't do this in the wild -->
   487   <a id="aria_link_link" role="link" href="foo">link</a>
   488   <a id="aria_link_anchor" role="link" name="link_anchor">link</a>
   490   <!-- landmarks: links -->
   491   <a id="aria_application_link" role="application" href="foo">app</a>
   492   <a id="aria_main_link" role="main" href="foo">main</a>
   493   <a id="aria_navigation_link" role="navigation" href="foo">nav</a>
   495   <!-- landmarks: anchors -->
   496   <a id="aria_application_anchor" role="application" name="app_anchor">app</a>
   497   <a id="aria_main_anchor" role="main" name="main_anchor">main</a>
   498   <a id="aria_navigation_anchor" role="navigation" name="nav_anchor">nav</a>
   500   <!-- aria-orientation -->
   501   <div id="aria_scrollbar" role="scrollbar">scrollbar</div>
   502   <div id="aria_hscrollbar" role="scrollbar" aria-orientation="horizontal">horizontal scrollbar</div>
   503   <div id="aria_vscrollbar" role="scrollbar" aria-orientation="vertical">vertical scrollbar</div>
   504   <div id="aria_separator" role="separator">separator</div>
   505   <div id="aria_hseparator" role="separator" aria-orientation="horizontal">horizontal separator</div>
   506   <div id="aria_vseparator" role="separator" aria-orientation="vertical">vertical separator</div>
   507   <div id="aria_slider" role="slider">slider</div>
   508   <div id="aria_hslider" role="slider" aria-orientation="horizontal">horizontal slider</div>
   509   <div id="aria_vslider" role="slider" aria-orientation="vertical">vertical slider</div>
   511   <!-- indeterminate ARIA progressbars should expose mixed state -->
   512   <div id="aria_progressbar" role="progressbar"></div>
   513   <div id="aria_progressbar_valuenow" role="progressbar" aria-valuenow="1"></div>
   514   <div id="aria_progressbar_valuetext" role="progressbar" aria-valuetext="value"></div>
   516   <!-- ARIA select widget should expose focusable state regardless the way they manage its children -->
   517   <div id="aria_listbox" role="listbox">
   518     <div role="option" tabindex="0">A</div>
   519     <div role="option" tabindex="0">a</div>
   520   </div>
   521   <div id="aria_grid" role="grid">
   522     <div role="row"><div role="gridcell" tabindex="0">B</div></div></div>
   523     <div role="row"><div role="gridcell" tabindex="0">b</div></div></div>
   524   <div id="aria_tree" role="tree">
   525     <div role="treeitem" tabindex="0">C</div>
   526     <div role="treeitem" tabindex="0">c</div>
   527   </div>
   528   <div id="aria_treegrid" role="treegrid">
   529     <div role="row"><div role="gridcell" tabindex="0">D</div></div>
   530     <div role="row"><div role="gridcell" tabindex="0">d</div></div>
   531   </div>
   532   <div id="aria_listbox_disabled" role="listbox" aria-disabled="true">
   533     <div role="option">E</div>
   534     <div role="option">e</div>
   535   </div>
   536   <div id="aria_grid_disabled" role="grid" aria-disabled="true">
   537     <div role="row"><div role="gridcell">F</div></div>
   538     <div role="row"><div role="gridcell">f</div></div>
   539   </div>
   540   <div id="aria_tree_disabled" role="tree" aria-disabled="true">
   541     <div role="treeitem">G</div>
   542     <div role="treeitem">g</div>
   543   </div>
   544   <div id="aria_treegrid_disabled" role="treegrid" aria-disabled="true">
   545     <div role="row"><div role="gridcell">H</div></div>
   546     <div role="row"><div role="gridcell">h</div></div>
   547   </div>
   549 </body>
   550 </html>

mercurial