/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_setup(async
function () {
await SpecialPowers.pushPrefEnv({
set: [[
"test.wait300msAfterTabSwitch",
true]],
});
});
add_task(async
function test_check_alert_from_blank() {
await BrowserTestUtils.withNewTab(
"https://example.com/blank",
async browser => {
await SpecialPowers.spawn(browser, [], () => {
let button = content.document.createElement(
"button");
button.addEventListener(
"click", () => {
info(
"Button onclick: opening about:blank");
let newWin = content.open(
"about:blank",
"",
"popup,width=600,height=600"
);
// Start an async navigation that will close the alert
// Previously this wasn't needed as the initial about:blank
// was followed by an async about:blank load. See Bug 543435
newWin.location =
"about:blank?0";
newWin.alert(
"Alert from the popup.");
info(
"Button onclick: finished");
});
content.document.body.append(button);
info(
"Added alert-from-about-blank-popup trigger button to " +
content.document.location.href
);
});
let newWinPromise = BrowserTestUtils.waitForNewWindow();
await BrowserTestUtils.synthesizeMouseAtCenter(
"button", {}, browser);
// otherWin is the same as newWin
let otherWin = await newWinPromise;
Assert.equal(
otherWin.gBrowser.currentURI?.spec,
"about:blank",
"Should have opened about:blank"
);
Assert.equal(
otherWin.menubar.visible,
false,
"Should be a popup window."
);
let contentDialogManager = gBrowser
.getTabDialogBox(gBrowser.selectedBrowser)
.getContentDialogManager();
todo_is(contentDialogManager._dialogs.length,
1,
"Should have 1 dialog.");
await BrowserTestUtils.closeWindow(otherWin);
}
);
});