forked from mirrors/gecko-dev
100 lines
2.8 KiB
JavaScript
100 lines
2.8 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/. */
|
|
|
|
const baseURL = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
|
|
"http://example.com"
|
|
);
|
|
|
|
async function test_opening_blocked_popups(testURL) {
|
|
// Enable the popup blocker.
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["dom.disable_open_during_load", true]],
|
|
});
|
|
|
|
// Open the test page.
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, testURL);
|
|
|
|
await SpecialPowers.spawn(
|
|
tab.linkedBrowser,
|
|
[baseURL + "popup_blocker.html"],
|
|
uri => {
|
|
let iframe = content.document.createElement("iframe");
|
|
iframe.id = "popupframe";
|
|
iframe.src = uri;
|
|
content.document.body.appendChild(iframe);
|
|
}
|
|
);
|
|
|
|
// Wait for the popup-blocked notification.
|
|
await TestUtils.waitForCondition(
|
|
() =>
|
|
gBrowser.getNotificationBox().getNotificationWithValue("popup-blocked"),
|
|
"Waiting for the popup-blocked notification."
|
|
);
|
|
|
|
let popupTabs = [];
|
|
function onTabOpen(event) {
|
|
popupTabs.push(event.target);
|
|
}
|
|
gBrowser.tabContainer.addEventListener("TabOpen", onTabOpen);
|
|
|
|
await SpecialPowers.pushPermissions([
|
|
{ type: "popup", allow: true, context: testURL },
|
|
]);
|
|
|
|
await SpecialPowers.spawn(
|
|
tab.linkedBrowser,
|
|
[baseURL + "popup_blocker.html"],
|
|
uri => {
|
|
content.document.getElementById("popupframe").remove();
|
|
let iframe = content.document.createElement("iframe");
|
|
iframe.id = "popupframe";
|
|
iframe.src = uri;
|
|
content.document.body.appendChild(iframe);
|
|
}
|
|
);
|
|
|
|
await TestUtils.waitForCondition(
|
|
() =>
|
|
popupTabs.length == 2 &&
|
|
popupTabs.every(
|
|
aTab => aTab.linkedBrowser.currentURI.spec != "about:blank"
|
|
),
|
|
"Waiting for two tabs to be opened."
|
|
);
|
|
|
|
ok(
|
|
popupTabs[0].linkedBrowser.currentURI.spec.endsWith("popup_blocker_a.html"),
|
|
"Popup a"
|
|
);
|
|
ok(
|
|
popupTabs[1].linkedBrowser.currentURI.spec.endsWith("popup_blocker_b.html"),
|
|
"Popup b"
|
|
);
|
|
|
|
await SpecialPowers.popPermissions();
|
|
|
|
gBrowser.tabContainer.removeEventListener("TabOpen", onTabOpen);
|
|
|
|
await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
|
|
content.document.getElementById("popupframe").remove();
|
|
});
|
|
|
|
BrowserTestUtils.removeTab(tab);
|
|
for (let popup of popupTabs) {
|
|
gBrowser.removeTab(popup);
|
|
}
|
|
}
|
|
|
|
add_task(async function () {
|
|
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
|
|
await test_opening_blocked_popups("http://example.com/");
|
|
});
|
|
|
|
add_task(async function () {
|
|
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
|
|
await test_opening_blocked_popups("http://w3c-test.org/");
|
|
});
|