gecko/accessible/tests/mochitest/text/test_multiline.html

388 lines
18 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>nsIAccessibleText getText related function in multiline text</title>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
<script type="application/javascript"
src="chrome://mochikit/content/MochiKit/packed.js"></script>
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript"
src="../common.js"></script>
<script type="application/javascript"
src="../text.js"></script>
<script type="application/javascript">
function doTest()
{
SimpleTest.expectAssertions(46);
// __o__n__e__w__o__r__d__\n
// 0 1 2 3 4 5 6 7
// __\n
// 8
// __t__w__o__ __w__o__r__d__s__\n
// 9 10 11 12 13 14 15 16 17 18
////////////////////////////////////////////////////////////////////////
// getText
var IDs = ["div", "divbr", "editable", "editablebr", "textarea"];
////////////////////////////////////////////////////////////////////////
// getTextAfterOffset
// BOUNDARY_WORD_START
testTextAfterOffset(0, BOUNDARY_WORD_START, "two ", 9, 13, IDs);
testTextAfterOffset(8, BOUNDARY_WORD_START, "two ", 9, 13,
"div", kOk, kOk, kOk,
"divbr", kTodo, kTodo, kTodo,
"editable", kOk, kOk, kOk,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kOk, kOk, kOk);
testTextAfterOffset(9, BOUNDARY_WORD_START, "words\n", 13, 19, IDs);
// BOUNDARY_WORD_END
testTextAfterOffset(0, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs);
testTextAfterOffset(6, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs);
testTextAfterOffset(7, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs);
testTextAfterOffset(8, BOUNDARY_WORD_END, " words", 12, 18, IDs);
// BOUNDARY_LINE_START
testTextAfterOffset(0, BOUNDARY_LINE_START, "\n", 8, 9,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextAfterOffset(7, BOUNDARY_LINE_START, "\n", 8, 9,
"div", kOk, kTodo, kTodo,
"divbr", kOk, kTodo, kTodo,
"editable", kOk, kTodo, kTodo,
"editablebr", kOk, kTodo, kTodo,
"textarea", kOk, kTodo, kTodo);
testTextAfterOffset(8, BOUNDARY_LINE_START, "two words\n", 9, 19,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextAfterOffset(9, BOUNDARY_LINE_START, "", 19, 19,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kOk,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kOk,
"textarea", kTodo, kTodo, kTodo);
testTextAfterOffset(19, BOUNDARY_LINE_START, "", 19, 19,
"div", kOk, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kTodo);
// BOUNDARY_LINE_END
testTextAfterOffset(0, BOUNDARY_LINE_END, "\n", 7, 8,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextAfterOffset(7, BOUNDARY_LINE_END, "\n", 7, 8,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
testTextAfterOffset(8, BOUNDARY_LINE_END, "\ntwo words", 8, 18,
"div", kTodo, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kTodo, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kTodo, kOk, kTodo);
testTextAfterOffset(9, BOUNDARY_LINE_END, "\n", 18, 19,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextAfterOffset(18, BOUNDARY_LINE_END, "\n", 18, 19,
"div", kTodo, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kTodo, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kTodo, kOk, kTodo);
testTextAfterOffset(19, BOUNDARY_LINE_END, "", 19, 19,
"div", kOk, kTodo, kTodo,
"divbr", kOk, kTodo, kTodo,
"editable", kOk, kTodo, kTodo,
"editablebr", kOk, kTodo, kTodo,
"textarea", kOk, kTodo, kTodo);
////////////////////////////////////////////////////////////////////////
// getTextBeforeOffset
// BOUNDARY_WORD_START
testTextBeforeOffset(0, BOUNDARY_WORD_START, "", 0, 0, IDs);
testTextBeforeOffset(7, BOUNDARY_WORD_START, "", 0, 0, IDs);
testTextBeforeOffset(8, BOUNDARY_WORD_START, "", 0, 0, IDs);
testTextBeforeOffset(9, BOUNDARY_WORD_START, "oneword\n\n", 0, 9, IDs);
testTextBeforeOffset(13, BOUNDARY_WORD_START, "two ", 9, 13, IDs);
testTextBeforeOffset(18, BOUNDARY_WORD_START, "two ", 9, 13, IDs);
testTextBeforeOffset(19, BOUNDARY_WORD_START, "two ", 9, 13, IDs);
// BOUNDARY_WORD_END
testTextBeforeOffset(0, BOUNDARY_WORD_END, "", 0, 0, IDs);
testTextBeforeOffset(7, BOUNDARY_WORD_END, "", 0, 0, IDs);
testTextBeforeOffset(8, BOUNDARY_WORD_END, "oneword", 0, 7,
"div", kOk, kOk, kOk,
"divbr", kTodo, kOk, kTodo,
"editable", kOk, kOk, kOk,
"editablebr", kTodo, kOk, kTodo,
"textarea", kOk, kOk, kOk);
testTextBeforeOffset(9, BOUNDARY_WORD_END, "oneword", 0, 7,
"div", kOk, kOk, kOk,
"divbr", kTodo, kOk, kTodo,
"editable", kOk, kOk, kOk,
"editablebr", kTodo, kOk, kTodo,
"textarea", kOk, kOk, kOk);
testTextBeforeOffset(12, BOUNDARY_WORD_END, "oneword", 0, 7, IDs);
testTextBeforeOffset(13, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs);
testTextBeforeOffset(18, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs);
testTextBeforeOffset(19, BOUNDARY_WORD_END, " words", 12, 18,
"div", kOk, kOk, kOk,
"divbr", kTodo, kTodo, kTodo,
"editable", kOk, kOk, kOk,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kOk, kOk, kOk);
// BOUNDARY_LINE_START
testTextBeforeOffset(0, BOUNDARY_LINE_START, "", 0, 0,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
testTextBeforeOffset(8, BOUNDARY_LINE_START, "oneword\n", 0, 8,
"div", kTodo, kTodo, kOk,
"divbr", kTodo, kTodo, kOk,
"editable", kTodo, kTodo, kOk,
"editablebr", kTodo, kTodo, kOk,
"textarea", kTodo, kTodo, kOk);
testTextBeforeOffset(9, BOUNDARY_LINE_START, "\n", 8, 9,
"div", kTodo, kTodo, kOk,
"divbr", kTodo, kTodo, kOk,
"editable", kTodo, kTodo, kOk,
"editablebr", kTodo, kTodo, kOk,
"textarea", kTodo, kTodo, kOk);
testTextBeforeOffset(18, BOUNDARY_LINE_START, "\n", 8, 9,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextBeforeOffset(19, BOUNDARY_LINE_START, "two words \n", 9, 19,
"div", kTodo, kOk, kOk,
"divbr", kTodo, kOk, kOk,
"editable", kTodo, kOk, kOk,
"editablebr", kTodo, kOk, kOk,
"textarea", kTodo, kOk, kOk);
// BOUNDARY_LINE_END
testTextBeforeOffset(0, BOUNDARY_LINE_END, "", 0, 0,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
testTextBeforeOffset(7, BOUNDARY_LINE_END, "", 0, 0,
"div", kOk, kTodo, kTodo,
"divbr", kOk, kTodo, kTodo,
"editable", kOk, kTodo, kTodo,
"editablebr", kOk, kTodo, kTodo,
"textarea", kOk, kTodo, kTodo);
testTextBeforeOffset(8, BOUNDARY_LINE_END, "oneword", 0, 7,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextBeforeOffset(9, BOUNDARY_LINE_END, "\n", 7, 8,
"div", kOk, kTodo, kTodo,
"divbr", kOk, kTodo, kTodo,
"editable", kOk, kTodo, kTodo,
"editablebr", kOk, kTodo, kTodo,
"textarea", kOk, kTodo, kTodo);
testTextBeforeOffset(18, BOUNDARY_LINE_END, "\n", 7, 8,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextBeforeOffset(19, BOUNDARY_LINE_END, "\ntwo words", 8, 18,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
////////////////////////////////////////////////////////////////////////
// getTextAtOffset
// BOUNDARY_WORD_START
testTextAtOffset(0, BOUNDARY_WORD_START, "oneword\n\n", 0, 9, IDs);
testTextAtOffset(8, BOUNDARY_WORD_START, "oneword\n\n", 0, 9,
"div", kOk, kOk, kOk,
"divbr", kTodo, kTodo, kTodo,
"editable", kOk, kOk, kOk,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kOk, kOk, kOk);
testTextAtOffset(9, BOUNDARY_WORD_START, "two ", 9, 13, IDs);
testTextAtOffset(13, BOUNDARY_WORD_START, "words\n", 13, 19, IDs);
// BOUNDARY_WORD_END
testTextAtOffset(0, BOUNDARY_WORD_END, "oneword", 0, 7, IDs);
testTextAtOffset(8, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs);
testTextAtOffset(9, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs);
testTextAtOffset(12, BOUNDARY_WORD_END, " words", 12, 18, IDs);
testTextAtOffset(13, BOUNDARY_WORD_END, " words", 12, 18,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
// BOUNDARY_LINE_START
testTextAtOffset(0, BOUNDARY_LINE_START, "oneword\n", 0, 8,
"div", kTodo, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kTodo, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kTodo, kOk, kTodo);
testTextAtOffset(7, BOUNDARY_LINE_START, "oneword\n", 0, 8,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
testTextAtOffset(8, BOUNDARY_LINE_START, "\n", 8, 9,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
testTextAtOffset(9, BOUNDARY_LINE_START, "two words\n", 9, 19,
"div", kTodo, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kTodo, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kTodo, kOk, kTodo);
testTextAtOffset(13, BOUNDARY_LINE_START, "two words\n", 9, 19,
"div", kTodo, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kTodo, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kTodo, kOk, kTodo);
testTextAtOffset(18, BOUNDARY_LINE_START, "two words\n", 9, 19,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
testTextAtOffset(19, BOUNDARY_LINE_START, "", 19, 19,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kOk,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kOk,
"textarea", kTodo, kTodo, kTodo);
// BOUNDARY_LINE_END
testTextAtOffset(0, BOUNDARY_LINE_END, "oneword", 0, 7,
"div", kTodo, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kTodo, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kTodo, kOk, kTodo);
testTextAtOffset(7, BOUNDARY_LINE_END, "oneword", 0, 7,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextAtOffset(8, BOUNDARY_LINE_END, "\n", 7, 8,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
testTextAtOffset(9, BOUNDARY_LINE_END, "\ntwo words", 8, 18,
"div", kTodo, kOk, kTodo,
"divbr", kOk, kOk, kOk,
"editable", kTodo, kOk, kTodo,
"editablebr", kOk, kOk, kOk,
"textarea", kTodo, kOk, kTodo);
testTextAtOffset(17, BOUNDARY_LINE_END, "\ntwo words", 8, 18,
"div", kOk, kOk, kOk,
"divbr", kOk, kOk, kOk,
"editable", kOk, kOk, kOk,
"editablebr", kOk, kOk, kOk,
"textarea", kOk, kOk, kOk);
testTextAtOffset(18, BOUNDARY_LINE_END, "\ntwo words", 8, 18,
"div", kTodo, kOk, kTodo,
"divbr", kTodo, kOk, kTodo,
"editable", kTodo, kOk, kTodo,
"editablebr", kTodo, kOk, kTodo,
"textarea", kTodo, kOk, kTodo);
testTextAtOffset(19, BOUNDARY_LINE_END, "\n", 18, 19,
"div", kTodo, kTodo, kTodo,
"divbr", kTodo, kTodo, kTodo,
"editable", kTodo, kTodo, kTodo,
"editablebr", kTodo, kTodo, kTodo,
"textarea", kTodo, kTodo, kTodo);
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
addA11yLoadEvent(doTest);
</script>
</head>
<body>
<a target="_blank"
title="nsIAccessibleText getText related functions test in multiline text"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=612331">
Bug 612331
</a>
<a target="_blank"
title="getTextAtOffset for word boundaries: beginning of a new life"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=853340">
Bug 853340
</a>
<a target="_blank"
title="getTextBeforeOffset for word boundaries: evolving"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=855732">
Bug 855732
</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
<div id="div">oneword
two words
</div>
<div id="divbr">oneword<br/><br/>two words<br/></div>
<div id="editable" contenteditable="true">oneword
two words
</div>
<div id="editablebr" contenteditable="true">oneword<br/><br/>two words<br/></div>
<textarea id="textarea" cols="300">oneword
two words
</textarea>
</pre>
</body>
</html>