tor-browser

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

browser_force_refresh.js (2820B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 var gTestRoot = getRootDirectory(gTestPath).replace(
      5  "chrome://mochitests/content/",
      6  "http://mochi.test:8888/"
      7 );
      8 
      9 async function refresh() {
     10  EventUtils.synthesizeKey("R", { accelKey: true });
     11 }
     12 
     13 async function forceRefresh() {
     14  EventUtils.synthesizeKey("R", { accelKey: true, shiftKey: true });
     15 }
     16 
     17 async function done() {
     18  // unregister window actors
     19  ChromeUtils.unregisterWindowActor("ForceRefresh");
     20  let tab = gBrowser.selectedTab;
     21  let tabBrowser = gBrowser.getBrowserForTab(tab);
     22  await ContentTask.spawn(tabBrowser, null, async function () {
     23    const swr = await content.navigator.serviceWorker.getRegistration();
     24    await swr.unregister();
     25  });
     26 
     27  BrowserTestUtils.removeTab(tab);
     28  executeSoon(finish);
     29 }
     30 
     31 function test() {
     32  waitForExplicitFinish();
     33  SpecialPowers.pushPrefEnv(
     34    {
     35      set: [
     36        ["dom.serviceWorkers.enabled", true],
     37        ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     38        ["dom.serviceWorkers.testing.enabled", true],
     39        ["browser.cache.disk.enable", false],
     40        ["browser.cache.memory.enable", false],
     41      ],
     42    },
     43    async function () {
     44      // create ForceRefreseh window actor
     45      const { ForceRefreshParent } = ChromeUtils.importESModule(
     46        getRootDirectory(gTestPath) + "ForceRefreshParent.sys.mjs"
     47      );
     48 
     49      // setup helper functions for ForceRefreshParent
     50      ForceRefreshParent.SimpleTest = SimpleTest;
     51      ForceRefreshParent.refresh = refresh;
     52      ForceRefreshParent.forceRefresh = forceRefresh;
     53      ForceRefreshParent.done = done;
     54 
     55      // setup window actor options
     56      let windowActorOptions = {
     57        parent: {
     58          esModuleURI:
     59            getRootDirectory(gTestPath) + "ForceRefreshParent.sys.mjs",
     60        },
     61        child: {
     62          esModuleURI:
     63            getRootDirectory(gTestPath) + "ForceRefreshChild.sys.mjs",
     64          events: {
     65            "base-register": { capture: true, wantUntrusted: true },
     66            "base-sw-ready": { capture: true, wantUntrusted: true },
     67            "base-load": { capture: true, wantUntrusted: true },
     68            "cached-load": { capture: true, wantUntrusted: true },
     69            "cached-failure": { capture: true, wantUntrusted: true },
     70          },
     71        },
     72        allFrames: true,
     73      };
     74 
     75      // register ForceRefresh window actors
     76      ChromeUtils.registerWindowActor("ForceRefresh", windowActorOptions);
     77 
     78      // create a new tab and load test url
     79      var url = gTestRoot + "browser_base_force_refresh.html";
     80      var tab = BrowserTestUtils.addTab(gBrowser);
     81      var tabBrowser = gBrowser.getBrowserForTab(tab);
     82      gBrowser.selectedTab = tab;
     83      BrowserTestUtils.startLoadingURIString(gBrowser, url);
     84    }
     85  );
     86 }