tor-browser

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

chrome_helpers.js (1778B)


      1 let swm = Cc["@mozilla.org/serviceworkers/manager;1"].getService(
      2  Ci.nsIServiceWorkerManager
      3 );
      4 
      5 let EXAMPLE_URL = "https://example.com/chrome/dom/serviceworkers/test/";
      6 
      7 function waitForIframeLoad(iframe) {
      8  return new Promise(function (resolve) {
      9    iframe.onload = resolve;
     10  });
     11 }
     12 
     13 function waitForRegister(scope, callback) {
     14  return new Promise(function (resolve) {
     15    let listener = {
     16      onRegister(registration) {
     17        if (registration.scope !== scope) {
     18          return;
     19        }
     20        swm.removeListener(listener);
     21        resolve(callback ? callback(registration) : registration);
     22      },
     23    };
     24    swm.addListener(listener);
     25  });
     26 }
     27 
     28 function waitForUnregister(scope) {
     29  return new Promise(function (resolve) {
     30    let listener = {
     31      onUnregister(registration) {
     32        if (registration.scope !== scope) {
     33          return;
     34        }
     35        swm.removeListener(listener);
     36        resolve(registration);
     37      },
     38    };
     39    swm.addListener(listener);
     40  });
     41 }
     42 
     43 function waitForServiceWorkerRegistrationChange(registration, callback) {
     44  return new Promise(function (resolve) {
     45    let listener = {
     46      onChange() {
     47        registration.removeListener(listener);
     48        if (callback) {
     49          callback();
     50        }
     51        resolve(callback ? callback() : undefined);
     52      },
     53    };
     54    registration.addListener(listener);
     55  });
     56 }
     57 
     58 function waitForServiceWorkerShutdown() {
     59  return new Promise(function (resolve) {
     60    let observer = {
     61      observe(subject, topic, data) {
     62        if (topic !== "service-worker-shutdown") {
     63          return;
     64        }
     65        SpecialPowers.removeObserver(observer, "service-worker-shutdown");
     66        resolve();
     67      },
     68    };
     69    SpecialPowers.addObserver(observer, "service-worker-shutdown");
     70  });
     71 }