141 lines
5.5 KiB
HTML
141 lines
5.5 KiB
HTML
<!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> |