Bug 1053048 Add tests for accessing selectionStart and selectionEnd from nsISelectionListener::NotifySelectionChanged() r=ehsan
authorMasayuki Nakano <masayuki@d-toybox.com>
Tue, 19 Aug 2014 20:54:07 +0900
changeset 200251 e8101d5f9defc1c3810c6074d6a3cf292447346d
parent 200250 8ad345726327b5a71766e2c50e2e0398123be478
child 200252 99f640f313595fc5ce635439fbeb9571b7f36629
push id47856
push usermasayuki@d-toybox.com
push dateTue, 19 Aug 2014 11:54:21 +0000
treeherdermozilla-inbound@77bf46f52906 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersehsan
bugs1053048
milestone34.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 1053048 Add tests for accessing selectionStart and selectionEnd from nsISelectionListener::NotifySelectionChanged() r=ehsan
editor/libeditor/tests/chrome.ini
editor/libeditor/tests/test_bug1053048.html
--- a/editor/libeditor/tests/chrome.ini
+++ b/editor/libeditor/tests/chrome.ini
@@ -13,16 +13,17 @@ skip-if = buildapp == 'mulet'
 skip-if = buildapp == 'mulet'
 [test_bug607584.xul]
 [test_bug616590.xul]
 [test_bug635636.html]
 [test_bug636465.xul]
 [test_bug646194.xul]
 [test_bug780908.xul]
 [test_bug830600.html]
+[test_bug1053048.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]
 # disables the key handling test on gtk because gtk overrides some key events
new file mode 100644
--- /dev/null
+++ b/editor/libeditor/tests/test_bug1053048.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1053048
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test for Bug 1053048</title>
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
+  <script type="application/javascript">
+
+  /** Test for Bug 1053048 **/
+  SimpleTest.waitForExplicitFinish();
+  SimpleTest.waitForFocus(runTests);
+
+  const nsISelectionPrivate = Components.interfaces.nsISelectionPrivate;
+  const nsISelectionListener = Components.interfaces.nsISelectionListener;
+  const nsIDOMNSEditableElement = Components.interfaces.nsIDOMNSEditableElement;
+
+  function runTests()
+  {
+    var textarea = document.getElementById("textarea");
+    textarea.focus();
+
+    var editor = textarea.QueryInterface(nsIDOMNSEditableElement).editor;
+    var selectionPrivate = editor.selection.QueryInterface(nsISelectionPrivate);
+
+    var selectionListener = {
+      count: 0,
+      notifySelectionChanged: function (aDocument, aSelection, aReason)
+      {
+        ok(true, "selectionStart: " + textarea.selectionStart);
+        ok(true, "selectionEnd: " + textarea.selectionEnd);
+        this.count++;
+      }
+    };
+
+    // Move caret to the end of the textarea
+    synthesizeMouse(textarea, 290, 10, {});
+    is(textarea.selectionStart, 3, "selectionStart should be 3 (after \"foo\")");
+    is(textarea.selectionEnd, 3, "selectionEnd should be 3 (after \"foo\")");
+
+    selectionPrivate.addSelectionListener(selectionListener);
+
+    sendKey("RETURN");
+    is(selectionListener.count, 1, "nsISelectionListener.notifySelectionChanged() should be called");
+    is(textarea.selectionStart, 4, "selectionStart should be 4");
+    is(textarea.selectionEnd, 4, "selectionEnd should be 4");
+    is(textarea.value, "foo\n", "The line break should be appended");
+
+    selectionPrivate.removeSelectionListener(selectionListener);
+    SimpleTest.finish();
+  }
+  </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1053048">Mozilla Bug 1053048</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+
+<textarea id="textarea"
+          style="height: 100px; width: 300px; -moz-appearance: none"
+          spellcheck="false"
+          onkeydown="this.style.display='block'; this.style.height='200px';">foo</textarea>
+
+<pre id="test">
+</pre>
+</body>
+</html>