Bug 1248185 - Test for spurious looping behavior of selection. r=roc
authorJonathan Kew <jkew@mozilla.com>
Wed, 17 Feb 2016 12:05:10 +0000
changeset 284541 ee60dc3d06556a23222a8c25a93aaa818ccca9b9
parent 284540 c44734ba6500fca79424cf1f2d397162bbb55127
child 284544 428c9570954f13e57f4bf931ed847390499009a8
push id71995
push userjkew@mozilla.com
push dateWed, 17 Feb 2016 12:05:29 +0000
treeherdermozilla-inbound@ee60dc3d0655 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersroc
bugs1248185
milestone47.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1248185 - Test for spurious looping behavior of selection. r=roc
editor/libeditor/tests/chrome.ini
editor/libeditor/tests/test_bug1248185.html
--- a/editor/libeditor/tests/chrome.ini
+++ b/editor/libeditor/tests/chrome.ini
@@ -24,16 +24,17 @@ skip-if = buildapp == 'mulet'
 [test_bug1100966.html]
 [test_bug1102906.html]
 [test_bug1101392.html]
 [test_bug1140105.html]
 [test_bug1140617.xul]
 [test_bug1153237.html]
 [test_bug1154791.html]
 [test_bug1248128.html]
+[test_bug1248185.html]
 [test_composition_event_created_in_chrome.html]
 [test_contenteditable_text_input_handling.html]
 [test_dragdrop.html]
 skip-if = buildapp == 'mulet'
 [test_htmleditor_keyevent_handling.html]
 [test_selection_move_commands.xul]
 [test_texteditor_keyevent_handling.html]
 skip-if = (debug && os=='win') || (os == 'linux') # Bug 1116205, leaks on windows debug, fails delete key on linux
new file mode 100644
--- /dev/null
+++ b/editor/libeditor/tests/test_bug1248185.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1248185
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test for Bug 1248185</title>
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
+  <script type="application/javascript">
+
+  SimpleTest.waitForExplicitFinish();
+
+  // Avoid platform selection differences
+  SimpleTest.waitForFocus(function() {
+    SpecialPowers.pushPrefEnv({
+      "set": [["layout.word_select.eat_space_to_next_word", true]]
+    }, runTests);
+  });
+
+  function runTests()
+  {
+    var editor = document.querySelector("#test");
+    editor.focus();
+
+    var sel = window.getSelection();
+
+    const kMoveRight2 = "cmd_moveRight2";
+    var controller =
+      top.document.commandDispatcher.getControllerForCommand(kMoveRight2);
+    ok((controller && controller.isCommandEnabled(kMoveRight2)),
+       "have " + kMoveRight2 + " command");
+
+    // we assume the controller for these is the same
+    const kSelectLeft2 = "cmd_selectLeft2";
+    const kSelectRight2 = "cmd_selectRight2";
+
+    controller.doCommand(kMoveRight2);
+    controller.doCommand(kMoveRight2);
+    controller.doCommand(kMoveRight2);
+    controller.doCommand(kSelectRight2);
+    ok(sel.toString() == "three ", "expected 'three ' to be selected");
+
+    controller.doCommand(kMoveRight2);
+    controller.doCommand(kMoveRight2);
+    controller.doCommand(kMoveRight2);
+    ok(sel.toString() == "", "expected empty selection");
+
+    controller.doCommand(kSelectLeft2);
+    ok(sel.toString() == "five", "expected 'five' to be selected");
+
+    SimpleTest.finish();
+  }
+  </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1248185">Mozilla Bug 1248185</a>
+<body>
+<div style="font: 12px monospace; width: 45ch;">
+<span contenteditable="" id="test">blablablablablablablablablablablablablabla one two three four five</span>
+<div>
+<span>foo</span>
+</div>
+</div>
+</body>
+</html>