tor-browser

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

serviceworker_driver.js (1226B)


      1 // Any copyright is dedicated to the Public Domain.
      2 // http://creativecommons.org/publicdomain/zero/1.0/
      3 
      4 function serviceWorkerTestExec(testFile) {
      5  return new Promise(function (resolve, reject) {
      6    function setupSW(registration) {
      7      var worker =
      8        registration.installing || registration.waiting || registration.active;
      9      var iframe;
     10 
     11      window.addEventListener("message", function onMessage(event) {
     12        if (event.data.context != "ServiceWorker") {
     13          return;
     14        }
     15        if (event.data.type == "finish") {
     16          window.removeEventListener("message", onMessage);
     17          iframe.remove();
     18          registration.unregister().then(resolve).catch(reject);
     19        } else if (event.data.type == "status") {
     20          ok(event.data.status, event.data.context + ": " + event.data.msg);
     21        }
     22      });
     23 
     24      worker.onerror = reject;
     25 
     26      iframe = document.createElement("iframe");
     27      iframe.src = "message_receiver.html";
     28      iframe.onload = function () {
     29        worker.postMessage({ script: testFile });
     30      };
     31      document.body.appendChild(iframe);
     32    }
     33 
     34    navigator.serviceWorker
     35      .register("worker_wrapper.js", { scope: "." })
     36      .then(setupSW);
     37  });
     38 }