blob: 46070c43c3dda4850e7c24f653d49f71c5870f93 [file] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<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="keydown(event)">
<div>
<ul>
<li><a id="1" href="">Foo</a></li>
<li><a id="2" href="">Bar</a></li>
<li><a id="3" href="">Baz</a></li>
</ul>
</div>
<script>
function keydown(event) {
var key = event.keyCode;
var currentId = parseInt(document.activeElement.id);
if (isNaN(currentId))
currentId = 0;
if (key == 39)
currentId++;
if (currentId < 1)
currentId = 3;
else if (currentId > 3)
currentId = 1;
document.getElementById(currentId).focus();
}
if (window.accessibilityController && window.eventSender) {
var output = "This tests caret browsing when a keydown handler moves focus.\n\n";
var webArea = clearSelectionAndFocusOnWebArea();
// Enable enhanced accessibility (necessary for accessibility specific selection handling).
accessibilityController.enableEnhancedAccessibility(true);
output += expect("accessibilityController.enhancedAccessibilityEnabled", "true");
// Focus into first link
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
// Navigating with arrows, without caret browsing, will pull selection into the different links
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Bar'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Baz'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
// Do it again with caret browsing on
setCaretBrowsingEnabled(webArea, true);
output += expect("caretBrowsingEnabled(webArea)", "true");
// Arrow to the start of Foo
eventSender.keyDown("leftArrow");
eventSender.keyDown("leftArrow");
eventSender.keyDown("leftArrow");
// Navigating with arrows, with caret browsing, will move the caret through the characters of the element before moving to the next element
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
eventSender.keyDown("rightArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Bar'");
// Up & down arrows should move through the list items
eventSender.keyDown("upArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
eventSender.keyDown("downArrow");
output += expect("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Bar'");
setCaretBrowsingEnabled(webArea, false);
debug(output);
}
</script>
</body>
</html>