| <!DOCTYPE HTML> |
| <script src="../resources/gc.js"></script> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| |
| <!-- |
| |
| Accessibility Object Model |
| Explainer: https://github.com/WICG/aom/blob/gh-pages/explainer.md |
| Spec: https://wicg.github.io/aom/spec/ |
| |
| --> |
| |
| <script> |
| test(function(t) { |
| assert_true(internals.runtimeFlags.accessibilityObjectModelEnabled); |
| }, "Make sure that Accessibility Object Model is enabled"); |
| </script> |
| |
| <div id="container"></div> |
| |
| <script> |
| test(function(t) { |
| assert_throws_dom('InvalidAccessError', function() { |
| var container = document.getElementById("container"); |
| container.accessibleNode.appendChild(document.body.accessibleNode); |
| }); |
| }, "Can't call AccessibleNode.appendChild on an AccessibleNode with an Element"); |
| </script> |
| |
| <script> |
| test(function(t) { |
| var container = document.getElementById("container"); |
| var child = new AccessibleNode(); |
| child.role = "button"; |
| child.label = "Launch"; |
| container.accessibleNode.appendChild(child); |
| |
| var axContainer = accessibilityController.accessibleElementById("container"); |
| assert_equals(axContainer.childrenCount, 1); |
| var axChild = axContainer.childAtIndex(0); |
| assert_equals(axChild.role, "AXRole: AXButton"); |
| assert_equals(axChild.name, "Launch"); |
| }, "Create a virtual AccessibleNode"); |
| </script> |
| |
| <div id="container2"></div> |
| |
| <script> |
| test(function(t) { |
| var container = document.getElementById("container2"); |
| |
| var list = new AccessibleNode(); |
| list.role = "list"; |
| container.accessibleNode.appendChild(list); |
| |
| var item1 = new AccessibleNode(); |
| item1.role = "listitem"; |
| list.appendChild(item1); |
| |
| var item2 = new AccessibleNode(); |
| item2.role = "listitem"; |
| list.appendChild(item2); |
| |
| var axContainer = accessibilityController.accessibleElementById("container2"); |
| assert_equals(axContainer.childrenCount, 1); |
| var axList = axContainer.childAtIndex(0); |
| assert_equals(axList.role, "AXRole: AXList"); |
| |
| assert_equals(axList.childrenCount, 2); |
| var axListItem = axList.childAtIndex(0); |
| assert_equals(axListItem.role, "AXRole: AXListItem"); |
| var axListItem2 = axList.childAtIndex(1); |
| assert_equals(axListItem2.role, "AXRole: AXListItem"); |
| }, "Create a virtual list using AccessibleNodes"); |
| </script> |
| |
| <script> |
| test(function(t) { |
| var container = document.getElementById("container2"); |
| |
| var list = new AccessibleNode(); |
| list.role = "list"; |
| container.accessibleNode.appendChild(list); |
| |
| var item1 = new AccessibleNode(); |
| item1.role = "listitem"; |
| list.appendChild(item1); |
| |
| var item2 = new AccessibleNode(); |
| item2.role = "listitem"; |
| list.appendChild(item2); |
| |
| var item3 = new AccessibleNode(); |
| item3.role = "listitem"; |
| list.appendChild(item3); |
| |
| // Check the list was setup correctly. |
| assert_equals(list.childNodes.length, 3); |
| assert_equals(list.childNodes[0], item1); |
| assert_equals(list.childNodes[1], item2); |
| assert_equals(list.childNodes[2], item3); |
| |
| // Remove middle node. |
| list.removeChild(list.childNodes[1]); |
| assert_equals(list.childNodes.length, 2); |
| assert_equals(list.childNodes[0], item1); |
| assert_equals(list.childNodes[1], item3); |
| }, "Remove a node from a container"); |
| </script> |
| |
| <script> |
| test(function(t) { |
| var container = document.getElementById("container2"); |
| |
| var list1 = new AccessibleNode(); |
| list1.role = "list"; |
| container.accessibleNode.appendChild(list1); |
| |
| var list2 = new AccessibleNode(); |
| list2.role = "list"; |
| container.accessibleNode.appendChild(list2); |
| |
| var item = new AccessibleNode(); |
| item.role = "listitem"; |
| list1.appendChild(item); |
| |
| // TODO: support reparenting and then fix this test. |
| assert_throws_dom('NotSupportedError', function() { |
| list2.appendChild(item); |
| }); |
| }, "Reparenting is not supported yet"); |
| </script> |