Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
michael@0 | 1 | <!DOCTYPE html> |
michael@0 | 2 | <html class="reftest-wait"> |
michael@0 | 3 | <head> |
michael@0 | 4 | <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> |
michael@0 | 5 | </head> |
michael@0 | 6 | <body onload="doTest()"> |
michael@0 | 7 | <input type=text style="-moz-appearance: none"> |
michael@0 | 8 | <script> |
michael@0 | 9 | function doTest() { |
michael@0 | 10 | function enableCaret(aEnable) { |
michael@0 | 11 | var selCon = editor.selectionController; |
michael@0 | 12 | selCon.setCaretEnabled(aEnable); |
michael@0 | 13 | } |
michael@0 | 14 | |
michael@0 | 15 | var d = document.querySelector("input"); |
michael@0 | 16 | d.value = "a"; |
michael@0 | 17 | d.focus(); |
michael@0 | 18 | var editor = SpecialPowers.wrap(d).QueryInterface(SpecialPowers.Ci.nsIDOMNSEditableElement).editor; |
michael@0 | 19 | var sel = editor.selection; |
michael@0 | 20 | var t = editor.rootElement.firstChild; |
michael@0 | 21 | sel.collapse(t, 1); // put the caret at the end of the div |
michael@0 | 22 | setTimeout(function() { |
michael@0 | 23 | enableCaret(false);enableCaret(true);// force a caret display |
michael@0 | 24 | enableCaret(false); // hide the caret |
michael@0 | 25 | t.replaceData(0, 1, "b"); // replace the text node data |
michael@0 | 26 | // at this point, the selection is collapsed to offset 0 |
michael@0 | 27 | synthesizeQuerySelectedText(); // call nsCaret::GetGeometry |
michael@0 | 28 | sel.collapse(t, 1); // put the caret at the end again |
michael@0 | 29 | enableCaret(true); // show the caret again |
michael@0 | 30 | document.documentElement.removeAttribute("class"); |
michael@0 | 31 | }, 0); |
michael@0 | 32 | } |
michael@0 | 33 | </script> |
michael@0 | 34 | </body> |
michael@0 | 35 | </html> |