blob: 423f79b00d6c4897bc45d557c5d21280ee9a761f [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="../../resources/accessibility-helper.js"></script>
<script src="resources/accessibility-helper.js"></script>
</head>
<body id="body" onkeydown="return keydown();">
<div>
<p>1</p>
<p>2</p>
<p id="keydowncount">0<p>
</div>
<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;
}
if (window.accessibilityController && window.eventSender) {
var output = "This tests ignoring javascript key handlers that consume key events.\n\n";
var webArea = clearSelectionAndFocusOnWebArea();
accessibilityController.enableEnhancedAccessibility(false);
output += expect("accessibilityController.enhancedAccessibilityEnabled", "false");
setPreventKeyboardDOMEventDispatch(webArea, false);
output += expect("preventKeyboardDOMEventDispatch(webArea)", "false");
// Arrowing before enabling AX and ignore dom handlers won't move the caret
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'");
// Validate that the handler received 2 keys events
output += expect("keycount()", "'2'");
// Enable enhanced accessibility (necessary for accessibility specific selection handling).
accessibilityController.enableEnhancedAccessibility(true);
output += expect("accessibilityController.enhancedAccessibilityEnabled", "true");
// Enable IgnoreDOMKeyEventHandlers so that the javascript handler will be skipped
setPreventKeyboardDOMEventDispatch(webArea, true);
output += expect("preventKeyboardDOMEventDispatch(webArea)", "true");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 1'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: 2'");
// Validate that the handler didn't receive any more key events
output += expect("keycount()", "'2'");
setPreventKeyboardDOMEventDispatch(webArea, false);
debug(output);
}
</script>
</body>
</html>