83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// This test verifies that when in fullscreen mode, and a new window is opened,
|
|
// fullscreen mode should not exit and the url bar is focused.
|
|
add_task(async function test_fullscreen_new_window() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["full-screen-api.enabled", true],
|
|
["full-screen-api.allow-trusted-requests-only", false],
|
|
],
|
|
});
|
|
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
"https://example.org/browser/browser/base/content/test/fullscreen/fullscreen.html"
|
|
);
|
|
|
|
let fullScreenEntered = BrowserTestUtils.waitForEvent(
|
|
document,
|
|
"fullscreenchange",
|
|
false,
|
|
() => document.fullscreenElement
|
|
);
|
|
|
|
// Enter fullscreen.
|
|
await SpecialPowers.spawn(tab.linkedBrowser, [], async () => {
|
|
content.document.getElementById("request").click();
|
|
});
|
|
|
|
await fullScreenEntered;
|
|
|
|
// Open a new window via ctrl+n.
|
|
let newWindowPromise = BrowserTestUtils.waitForNewWindow({
|
|
url: "about:blank",
|
|
});
|
|
EventUtils.synthesizeKey("N", { accelKey: true });
|
|
let newWindow = await newWindowPromise;
|
|
|
|
// Check new window state.
|
|
is(
|
|
newWindow.document.activeElement,
|
|
newWindow.gURLBar.inputField,
|
|
"url bar is focused after new window opened"
|
|
);
|
|
ok(
|
|
!newWindow.fullScreen,
|
|
"The new chrome window should not be in fullscreen"
|
|
);
|
|
ok(
|
|
!newWindow.document.documentElement.hasAttribute("inDOMFullscreen"),
|
|
"The new chrome document should not be in fullscreen"
|
|
);
|
|
|
|
// Wait a bit then check the original window state.
|
|
await new Promise(resolve => TestUtils.executeSoon(resolve));
|
|
ok(
|
|
window.fullScreen,
|
|
"The original chrome window should be still in fullscreen"
|
|
);
|
|
ok(
|
|
document.documentElement.hasAttribute("inDOMFullscreen"),
|
|
"The original chrome document should be still in fullscreen"
|
|
);
|
|
|
|
// Close new window and move focus back to original window.
|
|
await BrowserTestUtils.closeWindow(newWindow);
|
|
await SimpleTest.promiseFocus(window);
|
|
|
|
// Exit fullscreen on original window.
|
|
let fullScreenExited = BrowserTestUtils.waitForEvent(
|
|
document,
|
|
"fullscreenchange",
|
|
false,
|
|
() => !document.fullscreenElement
|
|
);
|
|
EventUtils.synthesizeKey("KEY_Escape");
|
|
await fullScreenExited;
|
|
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|