85 lines
3.8 KiB
HTML
85 lines
3.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script src="resources/accessibility-helper.js"></script>
|
|
</head>
|
|
<body id="body" onkeydown="keydown(event)">
|
|
<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();
|
|
}
|
|
</script>
|
|
<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>
|
|
<div id="console"></div>
|
|
<script>
|
|
description("This tests caret browsing when a keydown handler moves focus.");
|
|
if (window.testRunner) {
|
|
|
|
testRunner.dumpAsText();
|
|
|
|
if (window.accessibilityController && window.eventSender) {
|
|
|
|
var webArea = clearSelectionAndFocusOnWebArea();
|
|
|
|
// Enable enhanced accessibility (necessary for accessibility specific selection handling).
|
|
accessibilityController.enableEnhancedAccessibility(true);
|
|
shouldBe("accessibilityController.enhancedAccessibilityEnabled", "true");
|
|
|
|
// Focus into first link
|
|
eventSender.keyDown("rightArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
|
|
|
|
// Navigating with arrows, without caret browsing, will pull selection into the different links
|
|
eventSender.keyDown("rightArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Bar'");
|
|
eventSender.keyDown("rightArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Baz'");
|
|
eventSender.keyDown("rightArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
|
|
|
|
// Do it again with caret browsing on
|
|
setCaretBrowsingEnabled(webArea, true);
|
|
shouldBe("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");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
|
|
eventSender.keyDown("rightArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
|
|
eventSender.keyDown("rightArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
|
|
eventSender.keyDown("rightArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Bar'");
|
|
|
|
// Up & down arrows should move through the list items
|
|
eventSender.keyDown("upArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Foo'");
|
|
eventSender.keyDown("downArrow");
|
|
shouldBe("elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue", "'AXValue: Bar'");
|
|
|
|
setCaretBrowsingEnabled(webArea, false);
|
|
}
|
|
}
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|