| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| |
| <div class="container"> |
| <ul id="tablist" role="tablist"> |
| <li id="tab" role="tab" aria-controls="panel"></li> |
| </ul> |
| <div id="panel" role="tabpanel">Panel</div> |
| </div> |
| |
| <script> |
| test(function(t) { |
| var axTab = accessibilityController.accessibleElementById('tab'); |
| var panel = document.getElementById('panel'); |
| var axPanel = accessibilityController.accessibleElementById('panel'); |
| assert_not_equals(axPanel, undefined, |
| 'axPanel not undefined, Initial state'); |
| assert_equals(axTab.ariaControlsElementAtIndex(0), axPanel, |
| 'Initial state'); |
| |
| panel.style.display = 'none'; |
| assert_not_equals(axPanel, undefined, |
| 'axPanel not undefined, display: none'); |
| assert_not_equals(axTab.ariaControlsElementAtIndex(0), axPanel, |
| 'display: none'); |
| |
| // Restore the "display" attribute and test with "visibility". |
| panel.style.display = 'initial'; |
| axPanel = accessibilityController.accessibleElementById('panel'); |
| assert_not_equals(axPanel, undefined, |
| 'axPanel not undefined, display: initial'); |
| assert_equals(axTab.ariaControlsElementAtIndex(0), axPanel, |
| 'display: initial'); |
| |
| panel.style.visibility = 'hidden'; |
| assert_equals(axTab.ariaControlsElementAtIndex(0), undefined, |
| 'visibility: hidden'); |
| }, 'aria-controls should ignore hidden targets.'); |
| </script> |
| |
| <div class="container"> |
| <h1 id="headingWithFlowtos" aria-flowto="item1 item2">Heading</h1> |
| <ul id="flowtoItems"> |
| <li id="item1">One</li> |
| <li id="item2">Two</li> |
| </ul> |
| </div> |
| |
| <script> |
| test(function(t) |
| { |
| var axHeading = accessibilityController.accessibleElementById('headingWithFlowtos'); |
| var flowtoItems = document.getElementById('flowtoItems'); |
| var item1 = document.getElementById('item1'); |
| var axItem1 = accessibilityController.accessibleElementById('item1'); |
| var item2 = document.getElementById('item2'); |
| var axItem2 = accessibilityController.accessibleElementById('item2'); |
| |
| assert_equals(axHeading.ariaFlowToElementAtIndex(0), axItem1); |
| assert_equals(axHeading.ariaFlowToElementAtIndex(1), axItem2); |
| |
| item2.style.display = 'none'; |
| assert_equals(axHeading.ariaFlowToElementAtIndex(0), axItem1); |
| assert_not_equals(axHeading.ariaFlowToElementAtIndex(1), axItem2); |
| |
| // Restore the "display" attribute and test with "visibility". |
| item2.style.display = 'initial'; |
| axItem2 = accessibilityController.accessibleElementById('item2'); |
| item1.style.visibility = 'hidden'; |
| assert_equals(axHeading.ariaFlowToElementAtIndex(0), axItem2); |
| |
| flowtoItems.style.display = 'none'; |
| assert_not_equals(axHeading.ariaFlowToElementAtIndex(0), axItem2); |
| }, 'aria-flowto should ignore hidden targets.'); |
| </script> |