From 3e9f410d338a25cebbeb2241526cef9fa5adce65 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Tue, 5 Jun 2018 10:49:12 -0700 Subject: [PATCH] Bug 1465670 P3 Fix dom/cache service worker test harness to call importScripts() during install. r=asuth --- dom/cache/test/mochitest/serviceworker_driver.js | 11 +++++++---- dom/cache/test/mochitest/worker_wrapper.js | 9 ++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/dom/cache/test/mochitest/serviceworker_driver.js b/dom/cache/test/mochitest/serviceworker_driver.js index b35d82fbffec..af0f033c5fde 100644 --- a/dom/cache/test/mochitest/serviceworker_driver.js +++ b/dom/cache/test/mochitest/serviceworker_driver.js @@ -4,8 +4,10 @@ function serviceWorkerTestExec(testFile) { return new Promise(function(resolve, reject) { function setupSW(registration) { - var worker = registration.waiting || + var worker = registration.installing || + registration.waiting || registration.active; + var iframe; window.addEventListener("message",function onMessage(event) { if (event.data.context != "ServiceWorker") { @@ -13,6 +15,7 @@ function serviceWorkerTestExec(testFile) { } if (event.data.type == 'finish') { window.removeEventListener("message", onMessage); + iframe.remove(); registration.unregister() .then(resolve) .catch(reject); @@ -23,7 +26,7 @@ function serviceWorkerTestExec(testFile) { worker.onerror = reject; - var iframe = document.createElement("iframe"); + iframe = document.createElement("iframe"); iframe.src = "message_receiver.html"; iframe.onload = function() { worker.postMessage({ script: testFile }); @@ -31,7 +34,7 @@ function serviceWorkerTestExec(testFile) { document.body.appendChild(iframe); } - navigator.serviceWorker.ready.then(setupSW); - navigator.serviceWorker.register("worker_wrapper.js", {scope: "."}); + navigator.serviceWorker.register("worker_wrapper.js", {scope: "."}) + .then(setupSW); }); } diff --git a/dom/cache/test/mochitest/worker_wrapper.js b/dom/cache/test/mochitest/worker_wrapper.js index 864201498e0f..57ee54e15348 100644 --- a/dom/cache/test/mochitest/worker_wrapper.js +++ b/dom/cache/test/mochitest/worker_wrapper.js @@ -92,6 +92,8 @@ function workerTestGetUserAgent(cb) { }); } +var completeInstall = null; + addEventListener('message', function workerWrapperOnMessage(e) { removeEventListener('message', workerWrapperOnMessage); var data = e.data; @@ -108,7 +110,7 @@ addEventListener('message', function workerWrapperOnMessage(e) { } } if ("ServiceWorker" in self) { - self.clients.matchAll().then(function(clients) { + self.clients.matchAll({ includeUncontrolled: true }).then(function(clients) { for (var i = 0; i < clients.length; ++i) { if (clients[i].url.indexOf("message_receiver.html") > -1) { client = clients[i]; @@ -120,6 +122,7 @@ addEventListener('message', function workerWrapperOnMessage(e) { } context = "ServiceWorker"; runScript(); + completeInstall(); }); } else { client = self; @@ -127,3 +130,7 @@ addEventListener('message', function workerWrapperOnMessage(e) { runScript(); } }); + +addEventListener("install", e => { + e.waitUntil(new Promise(resolve => completeInstall = resolve)); +})