tor-browser

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

browser_application_panel_worker-states.js (2196B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const TAB_URL = URL_ROOT + "resources/service-workers/controlled-install.html";
      7 
      8 add_task(async function () {
      9  await enableApplicationPanel();
     10 
     11  const { panel, tab } = await openNewTabAndApplicationPanel(TAB_URL);
     12  const doc = panel.panelWin.document;
     13 
     14  selectPage(panel, "service-workers");
     15 
     16  info("Check for non-existing service worker");
     17  const isWorkerListEmpty = !!doc.querySelector(".js-registration-list-empty");
     18  ok(isWorkerListEmpty, "No Service Worker displayed");
     19 
     20  info("Register a service worker with a controlled install in the page.");
     21  await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
     22    content.wrappedJSObject.registerServiceWorker();
     23  });
     24 
     25  info("Wait until the service worker appears in the application panel");
     26  await waitUntil(() => !!getWorkerContainers(doc).length);
     27  info("Wait until the 'Installing' state is displayed");
     28  await waitUntil(() => {
     29    const containers = getWorkerContainers(doc);
     30    if (containers.length === 0) {
     31      return false;
     32    }
     33 
     34    const stateEl = containers[0].querySelector(".js-worker-status");
     35    return stateEl.textContent.toLowerCase() === "installing";
     36  });
     37 
     38  info("Allow the service worker to complete installation");
     39  await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
     40    content.wrappedJSObject.installServiceWorker();
     41  });
     42 
     43  info("Wait until the 'running' state is displayed");
     44  await waitUntil(() => {
     45    const workerContainer = getWorkerContainers(doc)[0];
     46    const stateEl = workerContainer.querySelector(".js-worker-status");
     47    return stateEl.textContent.toLowerCase() === "running";
     48  });
     49 
     50  info("Unregister the service worker");
     51  await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
     52    const registration = await content.wrappedJSObject.sw;
     53    registration.unregister();
     54  });
     55 
     56  info("Wait until the service worker is removed from the application panel");
     57  await waitUntil(() => getWorkerContainers(doc).length === 0);
     58 
     59  // close the tab
     60  info("Closing the tab.");
     61  await BrowserTestUtils.removeTab(tab);
     62 });