53 lines
2.3 KiB
HTML
53 lines
2.3 KiB
HTML
<!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>
|