<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1053048 --> <head> <meta charset="utf-8"> <title>Test for Bug 1053048</title> <script src="/tests/SimpleTest/SimpleTest.js"></script> <script src="/tests/SimpleTest/EventUtils.js"></script> <link rel="stylesheet" href="/tests/SimpleTest/test.css"> <script type="application/javascript"> /** Test for Bug 1053048 **/ SimpleTest.waitForExplicitFinish(); SimpleTest.waitForFocus(runTests); const nsISelectionPrivate = SpecialPowers.Ci.nsISelectionPrivate; const nsISelectionListener = SpecialPowers.Ci.nsISelectionListener; const nsIDOMNSEditableElement = SpecialPowers.Ci.nsIDOMNSEditableElement; function runTests() { var textarea = SpecialPowers.wrap(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>