Bug 1465670 P3 Fix dom/cache service worker test harness to call importScripts() during install. r=asuth

This commit is contained in:
Ben Kelly 2018-06-05 10:49:12 -07:00
Родитель ba44f4c92d
Коммит 3e9f410d33
2 изменённых файлов: 15 добавлений и 5 удалений

Просмотреть файл

@ -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);
});
}

9
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));
})