| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script src="resources/accessibility-helper.js"></script> |
| </head> |
| <body id="body" onkeydown="return keydown();"> |
| <script> |
| function preventKeyboardDOMEventDispatch(webArea) { |
| return webArea.boolAttributeValue("AXPreventKeyboardDOMEventDispatch"); |
| } |
| function setPreventKeyboardDOMEventDispatch(webArea, value) { |
| webArea.setBoolAttributeValue("AXPreventKeyboardDOMEventDispatch", value); |
| } |
| function keydown(event) { |
| var element = document.getElementById("keydowncount"); |
| element.innerHTML = parseInt(element.innerHTML) + 1; |
| return false; |
| } |
| function keycount() { |
| return document.getElementById("keydowncount").innerHTML; |
| } |
| </script> |
| <div> |
| <p>1</p> |
| <p>2</p> |
| <p id="keydowncount">0<p> |
| </div> |
| <div id="console"></div> |
| <script> |
| description("This tests ignoring javascript key handlers that consume key events."); |
| if (window.testRunner) { |
| |
| testRunner.dumpAsText(); |
| |
| if (window.accessibilityController && window.eventSender) { |
| |
| var webArea = clearSelectionAndFocusOnWebArea(); |
| accessibilityController.enableEnhancedAccessibility(false); |
| shouldBe("accessibilityController.enhancedAccessibilityEnabled", "false"); |
| setPreventKeyboardDOMEventDispatch(webArea, false); |
| shouldBe("preventKeyboardDOMEventDispatch(webArea)", "false"); |
| |
| // Arrowing before enabling AX and ignore dom handlers won't move the caret |
| shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'"); |
| eventSender.keyDown("rightArrow"); |
| shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'"); |
| eventSender.keyDown("rightArrow"); |
| shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'"); |
| |
| // Validate that the handler received 2 keys events |
| shouldBe("keycount()", "'2'"); |
| |
| // Enable enhanced accessibility (necessary for accessibility specific selection handling). |
| accessibilityController.enableEnhancedAccessibility(true); |
| shouldBe("accessibilityController.enhancedAccessibilityEnabled", "true"); |
| |
| // Enable IgnoreDOMKeyEventHandlers so that the javascript handler will be skipped |
| setPreventKeyboardDOMEventDispatch(webArea, true); |
| shouldBe("preventKeyboardDOMEventDispatch(webArea)", "true"); |
| |
| shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'"); |
| eventSender.keyDown("rightArrow"); |
| shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'"); |
| eventSender.keyDown("rightArrow"); |
| shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 2'"); |
| |
| // Validate that the handler didn't receive any more key events |
| shouldBe("keycount()", "'2'"); |
| |
| setPreventKeyboardDOMEventDispatch(webArea, false); |
| } |
| } |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |