blob: dba10fe974c3f444e155f254ddaa827709b17947 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC>
<html>
<head>
<script src="../resources/js-test.js"></script>
</head>
<body>
This tests that the AXSelection property is correctly reported for non-native text boxes.<br>
<div role="textbox" id="ariaTextBox" aria-multiline="false" tabindex="0">Some text in a textbox (34 chars).</div>
<div id="console"></div>
<script>
function assertEvaluatesTo(actual, expected, message) {
var actualValue = 0;
try {
actualValue = eval(actual);
} catch (e) {
debug("Evaluating " + actual + ": Threw exception " + e);
return;
}
if (actualValue === expected)
debug("PASS: " + actual + " is " + expected + (message ? " (" + message + ")" : ""));
else
debug("FAIL: " + actual + " should be " + expected + ", got " + actualValue + (message ? " (" + message + ")" : ""));
}
function assertCorrectAXSelection(element, selection, message) {
element.focus();
var selectionValues = /\{(\d+), (\d+)\}/.exec(selection);
var selectionStart = eval(selectionValues[1]);
var selectionLength = eval(selectionValues[2]);
var selectionEnd = selectionStart + selectionLength;
window.getSelection().setBaseAndExtent(element.firstChild, selectionStart, element.firstChild, selectionEnd);
var axElement = accessibilityController.focusedElement;
axSelection = axElement.selectedTextRange;
assertEvaluatesTo("axSelection", selection, message);
}
if (window.testRunner && window.accessibilityController) {
var ariaTextBox = document.getElementById("ariaTextBox");
var textLength = ariaTextBox.textContent.length;
assertCorrectAXSelection(ariaTextBox, "{0, 0}", "Collapsed selection at start");
assertCorrectAXSelection(ariaTextBox, "{" + textLength + ", 0}", "Collapsed selection at end");
assertCorrectAXSelection(ariaTextBox, "{15, 0}", "Collapsed selection in the middle");
assertCorrectAXSelection(ariaTextBox, "{15, 2}", "Non-collapsed selection in the middle");
assertCorrectAXSelection(ariaTextBox, "{0, 15}", "Non-collapsed selection at the start");
assertCorrectAXSelection(ariaTextBox, "{15, "+ (textLength - 15) + "}", "Non-collapsed selection at the end");
}
</script>
</body>
</html>