2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/
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(
17 info(`Received pointerlockchange event`);
23 SpecialPowers
.wrap(content
.document
).notifyUserGestureActivation();
24 content
.document
.body
.requestPointerLock();
29 function exitPointerLockRemote(aRemote
) {
30 return SpecialPowers
.spawn(aRemote
, [], function () {
31 return new Promise(resolve
=> {
32 if (!content
.document
.pointerLockElement
) {
37 content
.document
.addEventListener(
40 info(`Received pointerlockchange event`);
45 content
.document
.exitPointerLock();
50 function isPointerLockedRemote(aRemote
) {
51 return SpecialPowers
.spawn(aRemote
, [], function () {
52 return !!content
.document
.pointerLockElement
;
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(
65 const sidebar
= win
.document
.getElementById("sidebar");
66 let loadPromise
= BrowserTestUtils
.waitForEvent(sidebar
, "load", true);
67 await win
.SidebarController
.show("viewBookmarksSidebar");
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
);