gecko-dev/dom/html/test/test_bug1785739.html
Kagami Sascha Rosylight 68bd57f300 Bug 1785739 - Ensure the editor is initialized in RestoreSelectionState r=masayuki
Before D99291	the initialization was always done via SetSelectionRange because IsDirty was always true after input construction (because SetValue always set the flag regardless of whether actual change happened). Now the flag is always false initially, so we need to explicitly initialize the editor.

Differential Revision: https://phabricator.services.mozilla.com/D154995
2022-08-19 18:42:39 +00:00

49 lines
1.3 KiB
HTML

<!DOCTYPE html>
<meta charset="utf-8">
<title>nsFind::Find() should initialize the editor</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css">
<input value="1abc1
2abc2
3abc3
4abc4
5abc5
6abc6
7abc7
8abc8
9abc9" id="input">
<script>
SimpleTest.waitForExplicitFinish();
// The current window.find() impl does not support text controls, so import the internal component
const finder =
SpecialPowers
.Cc["@mozilla.org/typeaheadfind;1"]
.getService(SpecialPowers.Ci.nsITypeAheadFind);
finder.init(SpecialPowers.wrap(window).docShell);
function find() {
return finder.find(
"abc",
false,
SpecialPowers.Ci.nsITypeAheadFind.FIND_NEXT,
true);
}
async function runTests() {
finder.find("abc", false, SpecialPowers.Ci.nsITypeAheadFind.FIND_FIRST, true);
// Wait until layout flush as the bug repro needs it
await new Promise(requestAnimationFrame);
for (let i = 0; i < 9; i++) {
find();
await new Promise(requestAnimationFrame);
is(input.selectionStart, (i * 19) + 1);
}
SimpleTest.finish();
}
window.addEventListener("load", runTests);
</script>