controlled-sw.worker.js (1081B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Copied from shared-head.js 7 function waitUntil(predicate, interval = 10) { 8 if (predicate()) { 9 return Promise.resolve(true); 10 } 11 return new Promise(resolve => { 12 setTimeout(function () { 13 waitUntil(predicate, interval).then(() => resolve(true)); 14 }, interval); 15 }); 16 } 17 18 // This flag will be flipped from controlled-sw.html::installServiceWorker() 19 let canInstall = false; 20 self.addEventListener("message", function (event) { 21 if (event.data === "install-service-worker") { 22 canInstall = true; 23 } 24 if (event.data === "install-service-worker-and-pause") { 25 canInstall = true; 26 // eslint-disable-next-line no-debugger 27 debugger; 28 } 29 }); 30 31 // Wait for the canInstall flag to be flipped before completing the install. 32 self.addEventListener("install", function (event) { 33 event.waitUntil(waitUntil(() => canInstall)); 34 // Log an early message to check cached log messages in tests. 35 console.log("service worker installed"); 36 });