browser_permissions_optional.js (1507B)
1 "use strict"; 2 add_task(async function test_request_permissions_without_prompt() { 3 async function pageScript() { 4 const NO_PROMPT_PERM = "activeTab"; 5 window.addEventListener( 6 "keypress", 7 async () => { 8 let permGranted = await browser.permissions.request({ 9 permissions: [NO_PROMPT_PERM], 10 }); 11 browser.test.assertTrue( 12 permGranted, 13 `${NO_PROMPT_PERM} permission was granted.` 14 ); 15 let perms = await browser.permissions.getAll(); 16 browser.test.assertTrue( 17 perms.permissions.includes(NO_PROMPT_PERM), 18 `${NO_PROMPT_PERM} permission exists.` 19 ); 20 browser.test.sendMessage("permsGranted"); 21 }, 22 { once: true } 23 ); 24 browser.test.sendMessage("pageReady"); 25 } 26 27 let extension = ExtensionTestUtils.loadExtension({ 28 background() { 29 browser.test.sendMessage("ready", browser.runtime.getURL("page.html")); 30 }, 31 files: { 32 "page.html": `<html><head><script src="page.js"></script></head></html>`, 33 "page.js": pageScript, 34 }, 35 manifest: { 36 optional_permissions: ["activeTab"], 37 }, 38 }); 39 await extension.startup(); 40 41 let url = await extension.awaitMessage("ready"); 42 43 await BrowserTestUtils.withNewTab({ gBrowser, url }, async browser => { 44 await extension.awaitMessage("pageReady"); 45 46 await BrowserTestUtils.synthesizeKey("a", {}, browser); 47 48 await extension.awaitMessage("permsGranted"); 49 }); 50 51 await extension.unload(); 52 });