81 lines
2.5 KiB
JavaScript
81 lines
2.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
async function waitForPopup(aPopup, aOpened, aMsg) {
|
|
await BrowserTestUtils.waitForPopupEvent(
|
|
aPopup,
|
|
aOpened ? "shown" : "hidden"
|
|
);
|
|
Assert.equal(
|
|
aPopup.popupOpen,
|
|
aOpened,
|
|
`Check ${aMsg} popup is ${aOpened ? "opened" : "closed"}`
|
|
);
|
|
}
|
|
|
|
async function waitForFullscreen(aWindow, aFullscreen) {
|
|
let promise = BrowserTestUtils.waitForEvent(aWindow, "fullscreen");
|
|
aWindow.fullScreen = aFullscreen;
|
|
await promise;
|
|
Assert.equal(aWindow.fullScreen, aFullscreen, `Check fullscreen state`);
|
|
}
|
|
|
|
function testFullscreenPopup(aURL, aPopId, aOpenPopupFun) {
|
|
add_task(async function test_fullscreen_popup() {
|
|
info(`Tests for ${aPopId}`);
|
|
const win = await BrowserTestUtils.openNewBrowserWindow();
|
|
const tab = await BrowserTestUtils.openNewForegroundTab(win.gBrowser, aURL);
|
|
|
|
const browser = tab.linkedBrowser;
|
|
const popup = win.document.getElementById(aPopId);
|
|
|
|
info("Show popup");
|
|
let shownPromise = waitForPopup(popup, true, aPopId);
|
|
await aOpenPopupFun(browser);
|
|
await shownPromise;
|
|
|
|
info("Popup should be closed after entering fullscreen");
|
|
let hiddenPromise = waitForPopup(popup, false, aPopId);
|
|
await waitForFullscreen(win, true);
|
|
await hiddenPromise;
|
|
|
|
info("Show popup again");
|
|
shownPromise = waitForPopup(popup, true, aPopId);
|
|
await aOpenPopupFun(browser);
|
|
await shownPromise;
|
|
|
|
info("Popup should be closed after exiting fullscreen");
|
|
hiddenPromise = waitForPopup(popup, false, aPopId);
|
|
await waitForFullscreen(win, false);
|
|
await hiddenPromise;
|
|
|
|
// Close opened tab
|
|
let tabClosed = BrowserTestUtils.waitForTabClosing(tab);
|
|
await BrowserTestUtils.removeTab(tab);
|
|
await tabClosed;
|
|
|
|
// Close opened window
|
|
await BrowserTestUtils.closeWindow(win);
|
|
});
|
|
}
|
|
|
|
// Test for autocomplete.
|
|
testFullscreenPopup(
|
|
`data:text/html,
|
|
<input id="list-input" list="test-list" type="text"/>
|
|
<datalist id="test-list">
|
|
<option value="item 1"/>
|
|
<option value="item 2"/>
|
|
<option value="item 3"/>
|
|
<option value="item 4"/>
|
|
</datalist>`,
|
|
"PopupAutoComplete",
|
|
async browser => {
|
|
await SpecialPowers.spawn(browser, [], async function () {
|
|
const input = content.document.querySelector("input");
|
|
input.focus();
|
|
});
|
|
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
|
|
}
|
|
);
|