83 lines
2.8 KiB
HTML
83 lines
2.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body id="body">
|
|
|
|
<div id="content">
|
|
<div id="textcontrol" contenteditable="true">some<div>hello world</div><div>test</div></div>
|
|
<textarea id="textarea" cols='60' rows='8'>hello test
|
|
world</textarea>
|
|
</div>
|
|
<div id="textcontrol2" contenteditable="true">abc<div><br></div<div><br></div><div><br></div><div>def</div></div>
|
|
|
|
<div id="textcontrol3" contenteditable="true">
|
|
<p>ab</p>
|
|
<p>cd ef</p>
|
|
</div>
|
|
|
|
<div id="textcontrol4" contenteditable="true">
|
|
<pre>
|
|
Text in a pre element
|
|
is displayed in a fixed-width
|
|
font
|
|
</pre>
|
|
</div>
|
|
|
|
<div role="group" id="console"></div>
|
|
|
|
<script>
|
|
|
|
description("This tests that when there are newline characters within text controls, we can get the correct text range from index and length.");
|
|
|
|
// Test contenteditable with newlines.
|
|
var textControl = accessibilityController.accessibleElementById("textcontrol");
|
|
var textSome = textControl.stringForRange(0, 4);
|
|
shouldBe("textSome", "'some'");
|
|
|
|
var textHello = textControl.stringForRange(5, 5);
|
|
shouldBe("textHello", "'hello'");
|
|
|
|
var textWorld = textControl.stringForRange(11, 5);
|
|
shouldBe("textWorld", "'world'");
|
|
|
|
var textTest = textControl.stringForRange(17, 4);
|
|
shouldBe("textTest", "'test'");
|
|
|
|
// Test <textarea> with newlines.
|
|
var textarea = accessibilityController.accessibleElementById("textarea");
|
|
var textareaTextHello = textarea.stringForRange(0, 5);
|
|
var textareaTextWorld = textarea.stringForRange(11, 5);
|
|
shouldBe("textareaTextHello", "'hello'");
|
|
shouldBe("textareaTextWorld", "'world'");
|
|
|
|
// Test multiple <br> in contenteditable
|
|
var textControl2 = accessibilityController.accessibleElementById("textcontrol2");
|
|
var textDEF = textControl2.stringForRange(7, 3);
|
|
shouldBe("textDEF", "'def'");
|
|
|
|
// Test line ranges in contenteditable
|
|
var textControl3 = accessibilityController.accessibleElementById("textcontrol3");
|
|
var rangeValue = textControl3.stringForRange(2, 4);
|
|
// Replace the newline characters, and make sure it has two of them
|
|
rangeValue = rangeValue.replace(/(?:\r\n|\r|\n)/g, '[newline]');
|
|
shouldBe("rangeValue", "'[newline][newline]cd'");
|
|
|
|
// pre tag in contenteditable
|
|
var textControl4 = accessibilityController.accessibleElementById("textcontrol4");
|
|
rangeForLine = textControl4.rangeForLine(1);
|
|
shouldBe("rangeForLine", "'{22, 30}'");
|
|
textLine = textControl4.stringForRange(22, 30);
|
|
shouldBe("textLine", "'is displayed in a fixed-width\\n'");
|
|
firstLine = textControl4.lineForIndex(21);
|
|
secondLine = textControl4.lineForIndex(51);
|
|
shouldBe("firstLine", "0");
|
|
shouldBe("secondLine", "1");
|
|
|
|
</script>
|
|
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|