"use strict"; add_task(async function test_request_permissions_without_prompt() { async function pageScript() { const NO_PROMPT_PERM = "activeTab"; window.addEventListener( "keypress", async () => { let permGranted = await browser.permissions.request({ permissions: [NO_PROMPT_PERM], }); browser.test.assertTrue( permGranted, `${NO_PROMPT_PERM} permission was granted.` ); let perms = await browser.permissions.getAll(); browser.test.assertTrue( perms.permissions.includes(NO_PROMPT_PERM), `${NO_PROMPT_PERM} permission exists.` ); browser.test.sendMessage("permsGranted"); }, { once: true } ); browser.test.sendMessage("pageReady"); } let extension = ExtensionTestUtils.loadExtension({ background() { browser.test.sendMessage("ready", browser.runtime.getURL("page.html")); }, files: { "page.html": ``, "page.js": pageScript, }, manifest: { optional_permissions: ["activeTab"], }, }); await extension.startup(); let url = await extension.awaitMessage("ready"); await BrowserTestUtils.withNewTab({ gBrowser, url }, async browser => { await extension.awaitMessage("pageReady"); await BrowserTestUtils.synthesizeKey("a", {}, browser); await extension.awaitMessage("permsGranted"); }); await extension.unload(); });