summaryrefslogtreecommitdiffstats
path: root/layout/generic/test/test_bug288789.html
diff options
context:
space:
mode:
Diffstat (limited to 'layout/generic/test/test_bug288789.html')
-rw-r--r--layout/generic/test/test_bug288789.html117
1 files changed, 117 insertions, 0 deletions
diff --git a/layout/generic/test/test_bug288789.html b/layout/generic/test/test_bug288789.html
new file mode 100644
index 0000000000..1d52bed70d
--- /dev/null
+++ b/layout/generic/test/test_bug288789.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=288789
+-->
+<head>
+ <title>Test for Bug 288789</title>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script src="/tests/SimpleTest/EventUtils.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=288789">Mozilla Bug 288789</a>
+<p id="display"></p>
+<div id="content">
+<textarea id="ta" dir="rtl">
+
+&#x05d0;a&#x05d1;
+
+</textarea>
+<textarea id="tb">
+
+abc
+
+</textarea>
+</div>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+/** Test for Bug 288789 **/
+
+SimpleTest.waitForExplicitFinish();
+
+// This seems to be necessary because the selection is not set up properly otherwise
+setTimeout(test, 0);
+
+function test() {
+ var textarea = $("ta");
+
+ function collapse(offset) {
+ textarea.selectionStart = offset;
+ textarea.selectionEnd = offset;
+ }
+
+ function testRight(offset) {
+ synthesizeKey("KEY_ArrowRight");
+ is(textarea.selectionStart, offset, "Right movement broken");
+ }
+
+ function testLeft(offset) {
+ synthesizeKey("KEY_ArrowLeft");
+ is(textarea.selectionStart, offset, "Left movement broken");
+ }
+
+ textarea.focus();
+ collapse(0);
+ ok(true, "Testing forward movement in RTL mode");
+ for (var i = 0; i < textarea.textContent.length; ++i) {
+ if (i == 0) {
+ testRight(i);
+ }
+ if (textarea.textContent[i] == 'a') {
+ testLeft(i);
+ } else {
+ testLeft(i + 1);
+ }
+ if (i == textarea.textContent.length - 1) {
+ testLeft(i + 1);
+ }
+ }
+ ok(true, "Testing backward movement in RTL mode");
+ for (var i = textarea.textContent.length; i > 0; --i) {
+ if (i == textarea.textContent.length) {
+ testLeft(i);
+ }
+ if (i > 0 && textarea.textContent[i - 1] == 'a') {
+ testRight(i);
+ } else {
+ testRight(i - 1);
+ }
+ if (i == 1) {
+ testRight(i - 1);
+ }
+ }
+
+ textarea = $("tb");
+ textarea.focus();
+ collapse(0);
+ ok(true, "Testing forward movement in LTR mode");
+ for (var i = 0; i < textarea.textContent.length; ++i) {
+ if (i == 0) {
+ testLeft(i);
+ }
+ testRight(i + 1);
+ if (i == textarea.textContent.length - 1) {
+ testRight(i + 1);
+ }
+ }
+ ok(true, "Testing backward movement in LTR mode");
+ for (var i = textarea.textContent.length; i > 0; --i) {
+ if (i == textarea.textContent.length) {
+ testRight(i);
+ }
+ testLeft(i - 1);
+ if (i == 1) {
+ testLeft(i - 1);
+ }
+ }
+
+ SimpleTest.finish();
+}
+
+</script>
+</pre>
+</body>
+</html>
+