Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

"use strict";
add_task(async function webnav_test_eventpage() {
await SpecialPowers.pushPrefEnv({
set: [["extensions.eventPages.enabled", true]],
});
let extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: ["webNavigation", "*://mochi.test/*"],
background: { persistent: false },
},
background() {
const EVENTS = [
"onTabReplaced",
"onBeforeNavigate",
"onCommitted",
"onDOMContentLoaded",
"onCompleted",
"onErrorOccurred",
"onReferenceFragmentUpdated",
"onHistoryStateUpdated",
];
for (let event of EVENTS) {
browser.webNavigation[event].addListener(() => {});
}
browser.test.sendMessage("ready");
},
});
// onTabReplaced is never persisted, it is an empty event handler.
const EVENTS = [
"onBeforeNavigate",
"onCommitted",
"onDOMContentLoaded",
"onCompleted",
"onErrorOccurred",
"onReferenceFragmentUpdated",
"onHistoryStateUpdated",
];
await extension.startup();
await extension.awaitMessage("ready");
for (let event of EVENTS) {
assertPersistentListeners(extension, "webNavigation", event, {
primed: false,
});
}
await extension.terminateBackground();
for (let event of EVENTS) {
assertPersistentListeners(extension, "webNavigation", event, {
primed: true,
});
}
// wake up the background, we don't really care which event does it,
// we're just verifying the state after.
let newWin = await BrowserTestUtils.openNewBrowserWindow();
await extension.awaitMessage("ready");
for (let event of EVENTS) {
assertPersistentListeners(extension, "webNavigation", event, {
primed: false,
});
}
await BrowserTestUtils.closeWindow(newWin);
await extension.unload();
await SpecialPowers.popPrefEnv();
});