tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });