Backed out changeset 9d8b4c0b99ed (bug 1945683) for causing btime failures. CLOSED...
[gecko.git] / dom / tests / browser / browser_pointerlock_sidebar.js
blob3f6483998f14530e50c142053b0a356a69471aee
1 /**
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
4 */
6 "use strict";
8 const TEST_URL =
9 "data:text/html,<body><div style='width: 100px; height: 100px; background-color: red;'></div></body>";
11 function requestPointerLockRemote(aRemote) {
12 return SpecialPowers.spawn(aRemote, [], function () {
13 return new Promise(resolve => {
14 content.document.addEventListener(
15 "pointerlockchange",
16 _e => {
17 info(`Received pointerlockchange event`);
18 resolve();
20 { once: true }
23 SpecialPowers.wrap(content.document).notifyUserGestureActivation();
24 content.document.body.requestPointerLock();
25 });
26 });
29 function exitPointerLockRemote(aRemote) {
30 return SpecialPowers.spawn(aRemote, [], function () {
31 return new Promise(resolve => {
32 if (!content.document.pointerLockElement) {
33 resolve();
34 return;
37 content.document.addEventListener(
38 "pointerlockchange",
39 _e => {
40 info(`Received pointerlockchange event`);
41 resolve();
43 { once: true }
45 content.document.exitPointerLock();
46 });
47 });
50 function isPointerLockedRemote(aRemote) {
51 return SpecialPowers.spawn(aRemote, [], function () {
52 return !!content.document.pointerLockElement;
53 });
56 add_task(async function test_pointerlock_close_sidebar() {
57 info("Open new browser window");
58 const win = await BrowserTestUtils.openNewBrowserWindow();
59 const tab = await BrowserTestUtils.openNewForegroundTab(
60 win.gBrowser,
61 TEST_URL
64 info("Open sidebar");
65 const sidebar = win.document.getElementById("sidebar");
66 let loadPromise = BrowserTestUtils.waitForEvent(sidebar, "load", true);
67 await win.SidebarController.show("viewBookmarksSidebar");
68 await loadPromise;
70 info("Switch focus back to tab");
71 const browser = tab.linkedBrowser;
72 await SimpleTest.promiseFocus(browser);
74 info("Request PointerLock");
75 await requestPointerLockRemote(browser);
77 info("Close sidebar");
78 win.SidebarController.hide();
79 await new Promise(resolve => SimpleTest.executeSoon(resolve));
80 ok(await isPointerLockedRemote(browser), "Pointer should still be locked");
82 info("Exit PointerLock");
83 await exitPointerLockRemote(browser);
85 // Close opened window
86 info("Close new browser window");
87 await BrowserTestUtils.closeWindow(win);
88 });