| <!DOCTYPE html> |
| <html> |
| <body id="body"> |
| <script src="../../resources/js-test-pre.js"></script> |
| <div id="content"> |
| |
| <input type="range" min="0" max="100" value="25" step="25" id="slider" onaccessibleincrement="incrementEventCallback(true)" onaccessibledecrement="decrementEventCallback(true)"/> |
| <input type="text" id="input" onaccessiblefocus="focusEventCallback(true)"> |
| <button id="button" onaccessiblescrollintoview="scrollIntoViewEventCallback(true)">button</button> |
| |
| <div id="combo" tabindex=0 role="combobox" aria-expanded="false" aria-label="Test" onaccessiblecontextmenu="contextMenuEventCallback(true)"> |
| <div role="listbox"> |
| <div role="option">option 1</div> |
| </div></div> |
| |
| <select id="group" multiple="multiple"> |
| <option id="option" onaccessibleselect="selectEventCallback(true)">Option 1</option> |
| <option>Option 2</option> |
| </select> |
| |
| </div> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <script> |
| |
| description("This tests all accessibility events."); |
| |
| if (window.accessibilityController) { |
| jsTestIsAsync = true; |
| |
| var node; |
| var axNode; |
| |
| testIncrementDecrement(); |
| |
| function incrementEventCallback(domLevel1) { |
| debug("received " + (domLevel1 ? "DOM Level 1 " : "") + "accessibleincrement event"); |
| if (domLevel1) |
| node.removeAttribute("onaccessibleincrement"); |
| } |
| |
| function decrementEventCallback(domLevel1) { |
| debug("received " + (domLevel1 ? "DOM Level 1 " : "") + "accessibledecrement event"); |
| if (domLevel1) |
| node.removeAttribute("onaccessibledecrement"); |
| } |
| |
| function focusEventCallback(domLevel1) { |
| debug("received " + (domLevel1 ? "DOM Level 1 " : "") + "accessiblefocus event"); |
| if (domLevel1) { |
| node.removeAttribute("onaccessiblefocus"); |
| testFocus(); |
| } |
| } |
| |
| function scrollIntoViewEventCallback(domLevel1) { |
| debug("received " + (domLevel1 ? "DOM Level 1 " : "") + "accessiblescrollintoview event"); |
| if (domLevel1) |
| node.removeAttribute("onaccessiblescrollintoview"); |
| } |
| |
| function contextMenuEventCallback(domLevel1) { |
| debug("received " + (domLevel1 ? "DOM Level 1 " : "") + "accessiblecontextmenu event"); |
| if (domLevel1) |
| node.removeAttribute("onaccessiblecontextmenu"); |
| } |
| |
| function selectEventCallback(domLevel1) { |
| debug("received " + (domLevel1 ? "DOM Level 1 " : "") + "accessibleselect event"); |
| if (domLevel1) |
| node.removeAttribute("onaccessibleselect"); |
| } |
| |
| function testIncrementDecrement() { |
| debug("\nTest accessibleincrement and accessibledecrement"); |
| node = document.getElementById("slider"); |
| axNode = accessibilityController.accessibleElementById("slider"); |
| // DOM Level 1 events |
| axNode.increment(); |
| axNode.decrement(); |
| // DOM Level 2 events |
| node.onaccessibleincrement = function() { |
| incrementEventCallback(); |
| }; |
| node.onaccessibledecrement = function() { |
| decrementEventCallback(); |
| }; |
| axNode.increment(); |
| axNode.decrement(); |
| |
| testFocusDOMLevel1(); |
| } |
| |
| function testFocusDOMLevel1() { |
| // takeFocus() is async so that this deserves a seperate test |
| debug("\nTest onaccessiblefocus attribute"); |
| node = document.getElementById("input"); |
| axNode = accessibilityController.accessibleElementById("input"); |
| axNode.takeFocus(); |
| } |
| |
| function testFocus() { |
| debug("\nTest accessiblefocus"); |
| // DOM Level 2 event |
| node = document.getElementById("input"); |
| axNode = accessibilityController.accessibleElementById("input"); |
| |
| node.onaccessiblefocus = function() { |
| focusEventCallback(); |
| testScrollIntoView(); |
| }; |
| axNode.takeFocus(); |
| } |
| |
| function testScrollIntoView() { |
| debug("\nTest accessiblescrollintoview"); |
| node = document.getElementById("button"); |
| axNode = accessibilityController.accessibleElementById("button"); |
| // DOM Level 1 event |
| axNode.scrollToMakeVisible(); |
| // DOM Level 2 event |
| node.onaccessiblescrollintoview = function() { |
| scrollIntoViewEventCallback(); |
| testShowContextMenu(); |
| }; |
| axNode.scrollToMakeVisible(); |
| } |
| |
| function testShowContextMenu() { |
| debug("\nTest accessiblecontextmenu"); |
| node = document.getElementById("combo"); |
| axNode = accessibilityController.accessibleElementById("combo"); |
| // DOM Level 1 event |
| axNode.showMenu(); |
| // DOM Level 2 event |
| node.onaccessiblecontextmenu = function() { |
| contextMenuEventCallback(); |
| testSelect(); |
| }; |
| axNode.showMenu(); |
| } |
| |
| function testSelect() { |
| debug("\nTest accessibleselect"); |
| node = document.getElementById("option"); |
| axNode = accessibilityController.accessibleElementById("group"); |
| // DOM Level 1 event |
| axNode.setSelectedChildAtIndex(0); |
| // DOM Level 2 event |
| node.onaccessibleselect = function() { |
| selectEventCallback(); |
| finishJSTest(); |
| } |
| axNode.setSelectedChildAtIndex(0); |
| } |
| |
| } else { |
| testFailed("Could not load accessibility controller"); |
| } |
| |
| </script> |
| |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |