blob: d347533fd95e6d5079ac829021112026c22e4d3a [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta charset="utf-8">
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body">
<div id="text1" tabindex="0">
This i<span>s a sen</span>tence,
right? Yes!
</div>
<div id="text2">
test audio <audio controls><source src="test.mp3" type="audio/mpeg"></audio>file.
</div>
<div id="text3">
巧克力
是食物吗? 是的。
</div>
<div id="text3a">
كيف حالك؟
</div>
<pre id="text4">
both spaces
line breaks. Right?
</pre>
<div id="text5">
This is my first sentence. <br><br>
This is my second sentence. This is my third sentence.
This is my fourth sentence.
</div>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests that sentence navigation is working correctly.");
if (window.accessibilityController) {
// Check that we can get the paragraph range with span tag.
var text = accessibilityController.accessibleElementById("text1");
var textMarkerRange = text.textMarkerRangeForElement(text);
var startMarker = text.startTextMarkerForTextMarkerRange(textMarkerRange);
var currentMarker = advanceAndVerify(startMarker, 1, text);
// Audio tag.
text = accessibilityController.accessibleElementById("text2");
textMarkerRange = text.textMarkerRangeForElement(text);
startMarker = text.startTextMarkerForTextMarkerRange(textMarkerRange);
currentMarker = advanceAndVerify(startMarker, 1, text);
// Multi-languages.
text = accessibilityController.accessibleElementById("text3");
textMarkerRange = text.textMarkerRangeForElement(text);
startMarker = text.startTextMarkerForTextMarkerRange(textMarkerRange);
currentMarker = advanceAndVerify(startMarker, 1, text);
text = accessibilityController.accessibleElementById("text3a");
textMarkerRange = text.textMarkerRangeForElement(text);
startMarker = text.startTextMarkerForTextMarkerRange(textMarkerRange);
currentMarker = advanceAndVerify(startMarker, 1, text);
// Check the case with pre tag.
text = accessibilityController.accessibleElementById("text4");
textMarkerRange = text.textMarkerRangeForElement(text);
startMarker = text.startTextMarkerForTextMarkerRange(textMarkerRange);
currentMarker = advanceAndVerify(startMarker, 1, text);
currentMarker = advanceAndVerify(currentMarker, 15, text);
// Check getting the correct sentences.
text = accessibilityController.accessibleElementById("text5");
textMarkerRange = text.textMarkerRangeForElement(text);
startMarker = text.startTextMarkerForTextMarkerRange(textMarkerRange);
verifySentences(text, startMarker, 5);
function advanceAndVerify(currentMarker, offset, obj) {
var previousMarker = currentMarker;
for (var i = 0; i < offset; i++) {
previousMarker = currentMarker;
currentMarker = obj.nextTextMarker(previousMarker);
}
verifySentenceRangeForTextMarker(previousMarker, currentMarker, obj);
return currentMarker;
}
function replaceAttachmentInString(str) {
str = str.replace(String.fromCharCode(65532), "[ATTACHMENT]");
return str;
}
function verifySentenceRangeForTextMarker(preMarker, textMarker, obj) {
var markerRange = obj.textMarkerRangeForMarkers(preMarker, textMarker);
var currentCharacter = replaceAttachmentInString(obj.stringForTextMarkerRange(markerRange));
debug("Current character is: " + currentCharacter);
var range = obj.sentenceTextMarkerRangeForTextMarker(textMarker);
var sentence = replaceAttachmentInString(obj.stringForTextMarkerRange(range));
debug("Current sentence is: " + sentence);
var preStart = obj.previousSentenceStartTextMarkerForTextMarker(textMarker);
var nextEnd = obj.nextSentenceEndTextMarkerForTextMarker(textMarker);
var preAndNextSentenceRange = obj.textMarkerRangeForMarkers(preStart, nextEnd);
var preAndNextSentence = replaceAttachmentInString(obj.stringForTextMarkerRange(preAndNextSentenceRange));
debug("Pre sentence start to next sentence end: " + preAndNextSentence + "\n");
}
function verifySentences(obj, startMarker, sentenceCount) {
var current = startMarker;
var i = 0;
while(i < sentenceCount) {
current = obj.nextSentenceEndTextMarkerForTextMarker(current);
var currRange = obj.sentenceTextMarkerRangeForTextMarker(current);
var currSentence = obj.stringForTextMarkerRange(currRange);
debug("Sentence: " + currSentence);
i++;
}
// Backwards.
i = 0;
while(i < sentenceCount) {
current = obj.previousSentenceStartTextMarkerForTextMarker(current);
var next = obj.nextTextMarker(current);
var currRange = obj.sentenceTextMarkerRangeForTextMarker(next);
var currSentence = obj.stringForTextMarkerRange(currRange);
debug("Sentence: " + currSentence);
i++;
}
}
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>