Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* 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);
}
);