| <!DOCTYPE HTML> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| |
| <style> |
| .hideAllContainers .container { |
| display: none; |
| } |
| </style> |
| |
| <div class="container"> |
| <div id="div">Div Contents</div> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axDiv = accessibilityController.accessibleElementById("div"); |
| assert_equals(axDiv.name, ""); |
| }, "A simple div with inner text should not have an accessible name."); |
| </script> |
| |
| <div class="container"> |
| <button id="self">Contents of button</button> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axSelf = accessibilityController.accessibleElementById("self"); |
| assert_equals(axSelf.name, "Contents of button"); |
| assert_equals(axSelf.nameFrom, "contents"); |
| }, "A button's accessible name should come from its contents."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby" aria-labelledby="label1">Contents</button> |
| <div id="label1">Label 1</div> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axLabelledby = accessibilityController.accessibleElementById("labelledby"); |
| assert_equals(axLabelledby.name, "Label 1"); |
| assert_equals(axLabelledby.nameFrom, "relatedElement"); |
| assert_equals(axLabelledby.nameElementCount(), 1); |
| assert_equals(axLabelledby.nameElementAtIndex(0).role, "AXRole: AXDiv"); |
| }, "Button with aria-labelledby referencing the id of another element."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby2" aria-labelledby="labelledby2">Contents</button> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axLabelledby2 = accessibilityController.accessibleElementById("labelledby2"); |
| assert_equals(axLabelledby2.name, "Contents"); |
| assert_equals(axLabelledby2.nameFrom, "relatedElement"); |
| assert_equals(axLabelledby2.nameElementCount(), 1); |
| assert_equals(axLabelledby2.nameElementAtIndex(0).role, "AXRole: AXButton"); |
| }, "Button with aria-labelledby referencing itself."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby3" aria-labelledby="labelledby3 label3">Contents</button> |
| <div id="label3">Label 3</div> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axLabelledby3 = accessibilityController.accessibleElementById("labelledby3"); |
| assert_equals(axLabelledby3.name, "Contents Label 3"); |
| assert_equals(axLabelledby3.nameFrom, "relatedElement"); |
| assert_equals(axLabelledby3.nameElementCount(), 2); |
| assert_equals(axLabelledby3.nameElementAtIndex(0).role, "AXRole: AXButton"); |
| assert_equals(axLabelledby3.nameElementAtIndex(1).role, "AXRole: AXDiv"); |
| }, "Button with aria-labelledby referencing itself and the id of another element."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby4" aria-labelledby="label4">Contents</button> |
| <div id="label4" aria-labelledby="label4chained">Contents 4</div> |
| <p id="label4chained">Contents 4 chained</p> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axLabelledby4 = accessibilityController.accessibleElementById("labelledby4"); |
| assert_equals(axLabelledby4.name, "Contents 4"); |
| assert_equals(axLabelledby4.nameFrom, "relatedElement"); |
| assert_equals(axLabelledby4.nameElementCount(), 1); |
| assert_equals(axLabelledby4.nameElementAtIndex(0).role, "AXRole: AXDiv"); |
| }, "Button with chain of aria-labelledby references."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby5" aria-labelledby="label5">Contents</button> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axLabelledby5 = accessibilityController.accessibleElementById("labelledby5"); |
| assert_equals(axLabelledby5.name, "Contents"); |
| assert_equals(axLabelledby5.nameFrom, "contents"); |
| assert_equals(axLabelledby5.nameElementCount(), 0); |
| }, "aria-labelledby reference to nonexistant element."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby6" aria-labelledby="label6">Contents</button> |
| <div id="label6"></div> |
| </div> |
| |
| <script> |
| test(function(t){ |
| var axLabelledby6 = accessibilityController.accessibleElementById("labelledby6"); |
| assert_equals(axLabelledby6.name, ""); |
| assert_equals(axLabelledby6.nameFrom, "relatedElement"); |
| assert_equals(axLabelledby6.nameElementCount(), 1); |
| assert_equals(axLabelledby6.nameElementAtIndex(0).role, "AXRole: AXDiv"); |
| }, "aria-labelledby reference to element with no text."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby7" aria-labelledby="label7">Contents</button> |
| <h3 id="label7" style="visibility: hidden">Invisible label</h3> |
| </div> |
| |
| <script> |
| test(function(t){ |
| assert_equals(accessibilityController.accessibleElementById("label7"), undefined); |
| var axLabelledby7 = accessibilityController.accessibleElementById("labelledby7"); |
| assert_equals(axLabelledby7.name, "Invisible label"); |
| assert_equals(axLabelledby7.nameFrom, "relatedElement"); |
| assert_equals(axLabelledby7.nameElementCount(), 1); |
| assert_equals(axLabelledby7.nameElementAtIndex(0).role, "AXRole: AXHeading"); |
| }, "Button with aria-labelledby reference to invisible element."); |
| </script> |
| |
| <div class="container"> |
| <button id="labelledby8" aria-labelledby="label8">Contents</button> |
| <h3 id="label8" style="display: none">Display-none label</h3> |
| </div> |
| |
| <script> |
| test(function(t){ |
| assert_equals(accessibilityController.accessibleElementById("label8"), undefined); |
| var axLabelledby8 = accessibilityController.accessibleElementById("labelledby8"); |
| assert_equals(axLabelledby8.name, "Display-none label"); |
| assert_equals(axLabelledby8.nameFrom, "relatedElement"); |
| assert_equals(axLabelledby8.nameElementCount(), 1); |
| assert_equals(axLabelledby8.nameElementAtIndex(0).role, "AXRole: AXHeading"); |
| }, "Button with aria-labelledby reference to display-none element."); |
| </script> |
| |
| <script> |
| if (window.testRunner) |
| document.body.className = "hideAllContainers"; |
| </script> |