1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
6 /* import-globals-from ../file_ime_state_test_helper.js */
7 /* import-globals-from ../file_test_ime_state_on_focus_move.js */
9 Services.scriptloader.loadSubScript(
10 "chrome://mochitests/content/browser/widget/tests/browser/file_ime_state_test_helper.js",
13 Services.scriptloader.loadSubScript(
14 "chrome://mochitests/content/browser/widget/tests/browser/file_test_ime_state_on_focus_move.js",
17 add_task(async function () {
18 await BrowserTestUtils.withNewTab(
19 "https://example.com/browser/widget/tests/browser/file_ime_state_tests.html",
20 async function (browser) {
21 const tipWrapper = new TIPWrapper(window);
23 tipWrapper.isAvailable(),
24 "TextInputProcessor should've been initialized"
27 // isnot is used in file_test_ime_state_on_focus_move.js, but it's not
28 // defined as the alias of Assert.notEqual in browser-chrome tests.
29 // Therefore, we need to define it here.
30 // eslint-disable-next-line no-unused-vars
31 const isnot = Assert.notEqual;
33 async function runIMEStateOnFocusMoveTests(aDescription) {
34 await (async function test_IMEState_without_focused_element() {
35 const checker = new IMEStateWhenNoActiveElementTester(aDescription);
36 const expectedData = await SpecialPowers.spawn(
41 content.wrappedJSObject.createIMEStateWhenNoActiveElementTester(
44 return runner.run(content.document, content.window);
47 checker.check(expectedData);
51 index < IMEStateOnFocusMoveTester.numberOfTests;
54 const checker = new IMEStateOnFocusMoveTester(aDescription, index);
55 const expectedData = await SpecialPowers.spawn(
57 [aDescription, index],
58 (description, aIndex) => {
59 content.wrappedJSObject.runner =
60 content.wrappedJSObject.createIMEStateOnFocusMoveTester(
65 return content.wrappedJSObject.runner.prepareToRun(
66 content.document.querySelector("div")
70 checker.prepareToCheck(expectedData, tipWrapper);
71 await SpecialPowers.spawn(browser, [], () => {
72 return content.wrappedJSObject.runner.run();
74 checker.check(expectedData);
76 if (checker.canTestOpenCloseState(expectedData)) {
77 for (const defaultOpenState of [false, true]) {
78 const expectedOpenStateData = await SpecialPowers.spawn(
82 return content.wrappedJSObject.runner.prepareToRunOpenCloseTest(
83 content.document.querySelector("div")
87 checker.prepareToCheckOpenCloseTest(
91 await SpecialPowers.spawn(browser, [], () => {
92 return content.wrappedJSObject.runner.runOpenCloseTest();
94 checker.checkOpenCloseTest(expectedOpenStateData);
97 await SpecialPowers.spawn(browser, [], () => {
98 content.wrappedJSObject.runner.destroy();
99 content.wrappedJSObject.runner = undefined;
102 } // for loop iterating test of IMEStateOnFocusMoveTester
103 } // definition of runIMEStateOnFocusMoveTests
105 // test for contentEditable="true"
106 await SpecialPowers.spawn(browser, [], async () => {
108 .querySelector("div")
109 .setAttribute("contenteditable", "true");
111 await runIMEStateOnFocusMoveTests("in div[contenteditable]");
113 // test for contentEditable="false"
114 await SpecialPowers.spawn(browser, [], async () => {
116 .querySelector("div")
117 .setAttribute("contenteditable", "false");
119 await runIMEStateOnFocusMoveTests('in div[contenteditable="false"]');