tor-browser

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

test_ext_manifest_permissions.js (1840B)


      1 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* vim: set sts=2 sw=2 et tw=80: */
      3 "use strict";
      4 
      5 /* globals chrome */
      6 
      7 async function testPermission(options) {
      8  function background(bgOptions) {
      9    browser.test.sendMessage("typeof-namespace", {
     10      browser: typeof browser[bgOptions.namespace],
     11      chrome: typeof chrome[bgOptions.namespace],
     12    });
     13  }
     14 
     15  let extensionDetails = {
     16    background: `(${background})(${JSON.stringify(options)})`,
     17  };
     18 
     19  let extension = ExtensionTestUtils.loadExtension(extensionDetails);
     20 
     21  await extension.startup();
     22 
     23  let types = await extension.awaitMessage("typeof-namespace");
     24  equal(
     25    types.browser,
     26    "undefined",
     27    `Type of browser.${options.namespace} without manifest entry`
     28  );
     29  equal(
     30    types.chrome,
     31    "undefined",
     32    `Type of chrome.${options.namespace} without manifest entry`
     33  );
     34 
     35  await extension.unload();
     36 
     37  extensionDetails.manifest = options.manifest;
     38  extension = ExtensionTestUtils.loadExtension(extensionDetails);
     39 
     40  await extension.startup();
     41 
     42  types = await extension.awaitMessage("typeof-namespace");
     43  equal(
     44    types.browser,
     45    "object",
     46    `Type of browser.${options.namespace} with manifest entry`
     47  );
     48  equal(
     49    types.chrome,
     50    "object",
     51    `Type of chrome.${options.namespace} with manifest entry`
     52  );
     53 
     54  await extension.unload();
     55 }
     56 
     57 add_task(async function test_action() {
     58  await testPermission({
     59    namespace: "action",
     60    manifest: {
     61      manifest_version: 3,
     62      action: {},
     63    },
     64  });
     65 });
     66 
     67 add_task(async function test_browserAction() {
     68  await testPermission({
     69    namespace: "browserAction",
     70    manifest: {
     71      browser_action: {},
     72    },
     73  });
     74 });
     75 
     76 add_task(async function test_pageAction() {
     77  await testPermission({
     78    namespace: "pageAction",
     79    manifest: {
     80      page_action: {},
     81    },
     82  });
     83 });