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>