tor-browser

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

postmessage-to-service-worker.html (1176B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/speculation-rules/prerender/resources/utils.js"></script>
      4 <script src="/speculation-rules/prerender/resources/deferred-promise-utils.js"></script>
      5 <script>
      6 
      7 const params = new URLSearchParams(location.search);
      8 
      9 // The main test page (restriction-service-worker-postmessage.https.html) loads
     10 // the initiator page, then the initiator page will prerender itself with the
     11 // `prerendering` parameter.
     12 const isPrerendering = params.has('prerendering');
     13 
     14 if (!isPrerendering) {
     15  loadInitiatorPage();
     16 } else {
     17  assert_not_equals(navigator.serviceWorker.controller, null,
     18                    'prerendered page should be controlled');
     19 
     20  const prerenderEventCollector = new PrerenderEventCollector();
     21 
     22  // Promise to wait for a reply from the service worker.
     23  const messagePromise = new Promise(resolve => {
     24    navigator.serviceWorker.onmessage = e => {
     25      prerenderEventCollector.addEvent(e.data);
     26      resolve();
     27    };
     28  });
     29  navigator.serviceWorker.controller.postMessage('postmessage to worker');
     30 
     31  prerenderEventCollector.start(messagePromise, 'ServiceWorker.postMessage');
     32 }
     33 
     34 </script>