serviceworker_driver.js (1226B)
1 // Any copyright is dedicated to the Public Domain. 2 // http://creativecommons.org/publicdomain/zero/1.0/ 3 4 function serviceWorkerTestExec(testFile) { 5 return new Promise(function (resolve, reject) { 6 function setupSW(registration) { 7 var worker = 8 registration.installing || registration.waiting || registration.active; 9 var iframe; 10 11 window.addEventListener("message", function onMessage(event) { 12 if (event.data.context != "ServiceWorker") { 13 return; 14 } 15 if (event.data.type == "finish") { 16 window.removeEventListener("message", onMessage); 17 iframe.remove(); 18 registration.unregister().then(resolve).catch(reject); 19 } else if (event.data.type == "status") { 20 ok(event.data.status, event.data.context + ": " + event.data.msg); 21 } 22 }); 23 24 worker.onerror = reject; 25 26 iframe = document.createElement("iframe"); 27 iframe.src = "message_receiver.html"; 28 iframe.onload = function () { 29 worker.postMessage({ script: testFile }); 30 }; 31 document.body.appendChild(iframe); 32 } 33 34 navigator.serviceWorker 35 .register("worker_wrapper.js", { scope: "." }) 36 .then(setupSW); 37 }); 38 }