4 https://bugzilla.mozilla.org/show_bug.cgi?id=1872863
7 <title>Test IME state and focus with multiple contenteditable elements
</title>
8 <script src=
"chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
9 <script src=
"chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
10 <script src=
"file_ime_state_test_helper.js"></script>
11 <link rel=
"stylesheet" type=
"text/css" href=
"chrome://mochikit/content/tests/SimpleTest/test.css"/>
20 background-color: blue;
31 add_task(async
function test_modify_contenteditable_on_focused_element() {
32 await SimpleTest
.promiseFocus();
34 const tipWrapper
= new TIPWrapper(window
);
35 ok(tipWrapper
.isAvailable(), "TextInputProcessor should've been initialized");
37 const div1
= document
.getElementById("div1");
38 const div2
= document
.getElementById("div2");
39 const div3
= document
.getElementById("div3");
41 div1
.addEventListener("mousedown", () => {
42 div2
.contentEditable
= true;
44 div3
.addEventListener("mousedown", e
=> {
45 div2
.contentEditable
= false;
49 // Set focus by mouse then contenteditable becomes true by script.
51 const promiseFocus
= new Promise(resolve
=> {
52 div2
.addEventListener("focus", resolve
, { once
: true });
54 synthesizeMouseAtCenter(div1
, {});
58 SpecialPowers
.DOMWindowUtils
.IMEStatus
,
59 SpecialPowers
.DOMWindowUtils
.IME_STATUS_ENABLED
,
60 "IMEStatus is enabled on contenteditable=true"
62 ok(tipWrapper
.IMEHasFocus
, "IME has focus");
64 // Move focus by mouse then contenteditable becomes false by script.
66 const promiseMouseUp
= new Promise(resolve
=> {
67 div3
.addEventListener("mouseup", resolve
, { once
: true });
69 synthesizeMouseAtCenter(div3
, {});
73 SpecialPowers
.DOMWindowUtils
.IMEStatus
,
74 SpecialPowers
.DOMWindowUtils
.IME_STATUS_DISABLED
,
75 "IMEStatus is disabled on contenteditable=false"
77 ok(!tipWrapper
.IMEHasFocus
, "IME losts focus after contenteditable=false");
79 // contenteditable changes to true on focused element.
81 const promiseMouseUp2
= new Promise(resolve
=> {
82 div1
.addEventListener("mouseup", resolve
, { once
: true });
84 synthesizeMouseAtCenter(div1
, {});
85 await promiseMouseUp2
;
88 SpecialPowers
.DOMWindowUtils
.IMEStatus
,
89 SpecialPowers
.DOMWindowUtils
.IME_STATUS_ENABLED
,
90 "IMEStatus is enabled on contenteditable=true"
93 ok(tipWrapper
.IMEHasFocus
, "IME has focus after contenteditable=true again");
98 <div id=
"div0"><div id=
"div1">
99 <div id=
"div2" contenteditable=
"false"><div>foo
</div></div>
101 <div id=
"div3"></div>
102 <div id=
"div4" contenteditable
></div>