register-service-worker.html (1432B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> 5 <script src="/speculation-rules/prerender/resources/utils.js"></script> 6 <script src="/speculation-rules/prerender/resources/deferred-promise-utils.js"></script> 7 <body> 8 <script> 9 const params = new URLSearchParams(location.search); 10 const uid = params.get('uid'); 11 12 const SCOPE = './'; 13 const WORKER_URL = './do-nothing-worker.js'; 14 15 async function unregisterServiceWorker(scope) { 16 const registration = await navigator.serviceWorker.getRegistration(scope); 17 if (!registration) 18 return; 19 return registration.unregister(); 20 } 21 22 // The main test page (register-service-worker.https.html) loads the 23 // initiator page, then the initiator page will prerender itself with the 24 // `prerendering` parameter. 25 const isPrerendering = params.has('prerendering'); 26 27 if (!isPrerendering) { 28 unregisterServiceWorker(SCOPE); 29 loadInitiatorPage(); 30 } else { 31 const prerenderEventCollector = new PrerenderEventCollector(); 32 const promise = navigator.serviceWorker.register(WORKER_URL, {scope: SCOPE}) 33 .then(registration => { 34 prerenderEventCollector.addEvent('service worker registered'); 35 return registration.unregister(); 36 }); 37 prerenderEventCollector.start(promise, 'ServiceWorker.register'); 38 } 39 40 </script> 41 </body>