Backed out changeset 2450366cf7ca (bug 1891629) for causing win msix mochitest failures
[gecko.git] / widget / tests / browser / browser_test_ime_state_in_contenteditable_on_focus_move_in_remote_content.js
blob50b19f0cc300626f88f2e557cd4829e2c7d8eabb
1 /* Any copyright is dedicated to the Public Domain.
2    http://creativecommons.org/publicdomain/zero/1.0/ */
4 "use strict";
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",
11   this
13 Services.scriptloader.loadSubScript(
14   "chrome://mochitests/content/browser/widget/tests/browser/file_test_ime_state_on_focus_move.js",
15   this
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);
22       ok(
23         tipWrapper.isAvailable(),
24         "TextInputProcessor should've been initialized"
25       );
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(
37             browser,
38             [aDescription],
39             description => {
40               const runner =
41                 content.wrappedJSObject.createIMEStateWhenNoActiveElementTester(
42                   description
43                 );
44               return runner.run(content.document, content.window);
45             }
46           );
47           checker.check(expectedData);
48         })();
49         for (
50           let index = 0;
51           index < IMEStateOnFocusMoveTester.numberOfTests;
52           ++index
53         ) {
54           const checker = new IMEStateOnFocusMoveTester(aDescription, index);
55           const expectedData = await SpecialPowers.spawn(
56             browser,
57             [aDescription, index],
58             (description, aIndex) => {
59               content.wrappedJSObject.runner =
60                 content.wrappedJSObject.createIMEStateOnFocusMoveTester(
61                   description,
62                   aIndex,
63                   content.window
64                 );
65               return content.wrappedJSObject.runner.prepareToRun(
66                 content.document.querySelector("div")
67               );
68             }
69           );
70           checker.prepareToCheck(expectedData, tipWrapper);
71           await SpecialPowers.spawn(browser, [], () => {
72             return content.wrappedJSObject.runner.run();
73           });
74           checker.check(expectedData);
76           if (checker.canTestOpenCloseState(expectedData)) {
77             for (const defaultOpenState of [false, true]) {
78               const expectedOpenStateData = await SpecialPowers.spawn(
79                 browser,
80                 [],
81                 () => {
82                   return content.wrappedJSObject.runner.prepareToRunOpenCloseTest(
83                     content.document.querySelector("div")
84                   );
85                 }
86               );
87               checker.prepareToCheckOpenCloseTest(
88                 defaultOpenState,
89                 expectedOpenStateData
90               );
91               await SpecialPowers.spawn(browser, [], () => {
92                 return content.wrappedJSObject.runner.runOpenCloseTest();
93               });
94               checker.checkOpenCloseTest(expectedOpenStateData);
95             }
96           }
97           await SpecialPowers.spawn(browser, [], () => {
98             content.wrappedJSObject.runner.destroy();
99             content.wrappedJSObject.runner = undefined;
100           });
101           checker.destroy();
102         } // for loop iterating test of IMEStateOnFocusMoveTester
103       } // definition of runIMEStateOnFocusMoveTests
105       // test for contentEditable="true"
106       await SpecialPowers.spawn(browser, [], async () => {
107         content.document
108           .querySelector("div")
109           .setAttribute("contenteditable", "true");
110       });
111       await runIMEStateOnFocusMoveTests("in div[contenteditable]");
113       // test for contentEditable="false"
114       await SpecialPowers.spawn(browser, [], async () => {
115         content.document
116           .querySelector("div")
117           .setAttribute("contenteditable", "false");
118       });
119       await runIMEStateOnFocusMoveTests('in div[contenteditable="false"]');
120     }
121   );