blob: 19b1e5013d70b5ba877687bd9687cb8790798f1a [file] [edit]
<!DOCTYPE HTML><!-- webkit-test-runner [ runSingly=true IsAccessibilityIsolatedTreeEnabled=true ] -->
<html>
<head>
<script src="../../resources/accessibility-helper.js"></script>
<script src="../../resources/js-test.js"></script>
<title>Editable Word Navigation</title>
<meta charset="utf-8">
</head>
<body>
<textarea id="textarea">Edit me</textarea>
<script>
var output = "This tests that word navigation in editable contexts is working correctly (testing previous word start, next word end, left word, and right word).\n";
if (window.accessibilityController) {
var textarea = accessibilityController.accessibleElementById("textarea");
textMarkerRange = textarea.textMarkerRangeForElement(textarea)
var currentMarker = textarea.startTextMarkerForTextMarkerRange(textMarkerRange);
currentMarker = advanceAndVerify(currentMarker, 1, textarea);
currentMarker = advanceAndVerify(currentMarker, 3, textarea);
currentMarker = advanceAndVerify(currentMarker, 1, textarea);
currentMarker = advanceAndVerify(currentMarker, 2, textarea);
debug(output);
}
function advanceAndVerify(currentMarker, offset, obj) {
var previousMarker = currentMarker;
for (var i = 0; i < offset; i++) {
previousMarker = currentMarker;
currentMarker = obj.nextTextMarker(previousMarker);
}
verifyWordRangeForTextMarker(previousMarker, currentMarker, obj);
return currentMarker;
}
function verifyWordRangeForTextMarker(preMarker, textMarker, obj) {
var markerRange = obj.textMarkerRangeForMarkers(preMarker, textMarker);
var currentCharacter = obj.stringForTextMarkerRange(markerRange);
output += `Current character is: ${currentCharacter}\n`;
var previousWordRange = obj.leftWordTextMarkerRangeForTextMarker(textMarker);
var nextWordRange = obj.rightWordTextMarkerRangeForTextMarker(textMarker);
var preWord = obj.stringForTextMarkerRange(previousWordRange);
var nextWord = obj.stringForTextMarkerRange(nextWordRange);
output += `Left word is: ${preWord}\n`;
output += `Right word is: ${nextWord}\n`;
var preWordStart = obj.previousWordStartTextMarkerForTextMarker(textMarker);
var nextWordEnd = obj.nextWordEndTextMarkerForTextMarker(textMarker);
var preAndNextWordRange = obj.textMarkerRangeForMarkers(preWordStart, nextWordEnd);
var preAndNextWord = obj.stringForTextMarkerRange(preAndNextWordRange);
output += `Pre word start to next word end: ${preAndNextWord}\n`;
output += `\n`;
}
</script>
</body>
</html>