tor-browser

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

background-sync-sw-inner.https.html (1325B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="utils.js"></script>
      5 <title>Fenced frame content to report the result of background sync's register in SW</title>
      6 
      7 <body>
      8 <script type="module">
      9  const [background_sync_register_key] = parseKeylist();
     10  const searchParams = new URL(location.href).searchParams;
     11  const method = searchParams.get('method');
     12  const isPeriodic = searchParams.get('periodic');
     13 
     14  const getController = () => {
     15    if (navigator.serviceWorker.controller) {
     16      return navigator.serviceWorker.controller;
     17    }
     18    return new Promise(resolve => {
     19      navigator.serviceWorker.addEventListener('controllerchange', () => {
     20        resolve(navigator.serviceWorker.controller);
     21      });
     22    });
     23  };
     24 
     25  const sendMessageToServiceWorker = async () => {
     26    const ctrl = await getController();
     27    return new Promise(resolve => {
     28      ctrl.postMessage({method, isPeriodic});
     29      navigator.serviceWorker.onmessage = e => {
     30        resolve(e.data);
     31      }
     32    });
     33  };
     34 
     35  await navigator.serviceWorker.register(
     36    "background-sync-sw.js", { scope: location.href, type: "module" });
     37  const data = await sendMessageToServiceWorker();
     38 
     39  writeValueToServer(background_sync_register_key, data);
     40 </script>
     41 </body>