/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_task(async function test_options_links() {
async function backgroundScript() {
browser.runtime.openOptionsPage();
}
function optionsScript() {
browser.test.sendMessage("options-page:loaded", document.documentURI);
}
let extension = ExtensionTestUtils.loadExtension({
useAddonManager: "temporary",
manifest: {
options_ui: {
page: "options.html",
},
},
files: {
"options.html": `
Extensions Options
options page link
`,
"options.js": optionsScript,
},
background: backgroundScript,
});
const aboutAddonsTab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
"about:addons"
);
await extension.startup();
await extension.awaitMessage("options-page:loaded");
const optionsBrowser = getInlineOptionsBrowser(gBrowser.selectedBrowser);
const promiseNewTabOpened = BrowserTestUtils.waitForNewTab(
gBrowser,
"https://example.com/options-page-link"
);
await SpecialPowers.spawn(optionsBrowser, [], () =>
content.document.querySelector("a").click()
);
info(
"Expect a new tab to be opened when a link is clicked in the options_page embedded inside about:addons"
);
const newTab = await promiseNewTabOpened;
ok(newTab, "Got a new tab created on the expected url");
BrowserTestUtils.removeTab(newTab);
BrowserTestUtils.removeTab(aboutAddonsTab);
await extension.unload();
});