Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
"use strict";
const TEST_PATH_COM = getRootDirectory(gTestPath).replace(
);
const TEST_PATH_ORG = getRootDirectory(gTestPath).replace(
);
const GEO_URL =
add_task(async () => {
await SpecialPowers.pushPrefEnv({
set: [
["geo.provider.network.url", GEO_URL],
["geo.timeout", 4000],
],
});
await BrowserTestUtils.withNewTab(
TEST_PATH_COM + "empty.html",
async browser => {
let notificationPopup = document.getElementById("notification-popup");
let notificationShown = BrowserTestUtils.waitForPopupEvent(
notificationPopup,
"shown"
);
const notificationHidden = BrowserTestUtils.waitForPopupEvent(
notificationPopup,
"hidden"
);
let res = SpecialPowers.spawn(browser, [], () => {
return new Promise(resolve =>
content.navigator.geolocation.getCurrentPosition(
() => resolve("allowed"),
() => resolve("disallowed")
)
);
});
await notificationShown;
notificationPopup
.querySelector("button.popup-notification-primary-button")
.click();
await notificationHidden;
let result = await res;
is(result, "allowed", "Geolocation allowed");
BrowserTestUtils.startLoadingURIString(
browser,
TEST_PATH_COM + "empty.html"
);
await BrowserTestUtils.browserLoaded(browser);
const bc = await SpecialPowers.spawn(
browser,
[TEST_PATH_ORG + "empty.html"],
async url => {
const { document } = content;
const embed = document.createElement("embed");
embed.src = url;
const promise = new Promise(resolve => {
embed.addEventListener("load", resolve, { once: true });
});
document.body.appendChild(embed);
await promise;
return embed.browsingContext;
}
);
notificationShown = BrowserTestUtils.waitForPopupEvent(
notificationPopup,
"shown"
);
res = SpecialPowers.spawn(bc, [], () => {
return new Promise(resolve =>
content.navigator.geolocation.getCurrentPosition(
() => resolve("allowed"),
() => resolve("disallowed")
)
);
});
result = await Promise.race([
res,
notificationShown.then(_ => {
return "notification shown";
}),
]);
is(result, "disallowed", "Geolocation disallowed");
}
);
});