Bug 1915045 Ensure decode tasks are scheduled on BufferingState::Enter() r=media...
[gecko.git] / js / xpconnect / tests / browser / browser_promise_userInteractionHandling.js
blob612471be5387e272a43d467360287b28d1b5a4f4
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
4  */
6 "use strict";
8 add_task(async function test_explicit_object_prototype() {
9   const url =
10     "http://mochi.test:8888/browser/js/xpconnect/tests/browser/browser_promise_userInteractionHandling.html";
11   await BrowserTestUtils.withNewTab(url, async browser => {
12     await SpecialPowers.spawn(browser, [], async () => {
13       const DOMWindowUtils = EventUtils._getDOMWindowUtils(content.window);
14       is(
15         DOMWindowUtils.isHandlingUserInput,
16         false,
17         "not yet handling user input"
18       );
19       const button = content.document.getElementById("button");
21       let resolve;
22       const p = new Promise(r => {
23         resolve = r;
24       });
26       button.addEventListener("click", () => {
27         is(DOMWindowUtils.isHandlingUserInput, true, "handling user input");
28         content.document.hasStorageAccess().then(() => {
29           is(
30             DOMWindowUtils.isHandlingUserInput,
31             true,
32             "still handling user input"
33           );
34           Promise.resolve().then(() => {
35             is(
36               DOMWindowUtils.isHandlingUserInput,
37               false,
38               "no more handling user input"
39             );
40             resolve();
41           });
42         });
43       });
45       EventUtils.synthesizeMouseAtCenter(button, {}, content.window);
47       await p;
48     });
49   });
50 });