зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1465670 P3 Fix dom/cache service worker test harness to call importScripts() during install. r=asuth
This commit is contained in:
Родитель
ba44f4c92d
Коммит
3e9f410d33
|
@ -4,8 +4,10 @@
|
||||||
function serviceWorkerTestExec(testFile) {
|
function serviceWorkerTestExec(testFile) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
function setupSW(registration) {
|
function setupSW(registration) {
|
||||||
var worker = registration.waiting ||
|
var worker = registration.installing ||
|
||||||
|
registration.waiting ||
|
||||||
registration.active;
|
registration.active;
|
||||||
|
var iframe;
|
||||||
|
|
||||||
window.addEventListener("message",function onMessage(event) {
|
window.addEventListener("message",function onMessage(event) {
|
||||||
if (event.data.context != "ServiceWorker") {
|
if (event.data.context != "ServiceWorker") {
|
||||||
|
@ -13,6 +15,7 @@ function serviceWorkerTestExec(testFile) {
|
||||||
}
|
}
|
||||||
if (event.data.type == 'finish') {
|
if (event.data.type == 'finish') {
|
||||||
window.removeEventListener("message", onMessage);
|
window.removeEventListener("message", onMessage);
|
||||||
|
iframe.remove();
|
||||||
registration.unregister()
|
registration.unregister()
|
||||||
.then(resolve)
|
.then(resolve)
|
||||||
.catch(reject);
|
.catch(reject);
|
||||||
|
@ -23,7 +26,7 @@ function serviceWorkerTestExec(testFile) {
|
||||||
|
|
||||||
worker.onerror = reject;
|
worker.onerror = reject;
|
||||||
|
|
||||||
var iframe = document.createElement("iframe");
|
iframe = document.createElement("iframe");
|
||||||
iframe.src = "message_receiver.html";
|
iframe.src = "message_receiver.html";
|
||||||
iframe.onload = function() {
|
iframe.onload = function() {
|
||||||
worker.postMessage({ script: testFile });
|
worker.postMessage({ script: testFile });
|
||||||
|
@ -31,7 +34,7 @@ function serviceWorkerTestExec(testFile) {
|
||||||
document.body.appendChild(iframe);
|
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);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,6 +92,8 @@ function workerTestGetUserAgent(cb) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var completeInstall = null;
|
||||||
|
|
||||||
addEventListener('message', function workerWrapperOnMessage(e) {
|
addEventListener('message', function workerWrapperOnMessage(e) {
|
||||||
removeEventListener('message', workerWrapperOnMessage);
|
removeEventListener('message', workerWrapperOnMessage);
|
||||||
var data = e.data;
|
var data = e.data;
|
||||||
|
@ -108,7 +110,7 @@ addEventListener('message', function workerWrapperOnMessage(e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ("ServiceWorker" in self) {
|
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) {
|
for (var i = 0; i < clients.length; ++i) {
|
||||||
if (clients[i].url.indexOf("message_receiver.html") > -1) {
|
if (clients[i].url.indexOf("message_receiver.html") > -1) {
|
||||||
client = clients[i];
|
client = clients[i];
|
||||||
|
@ -120,6 +122,7 @@ addEventListener('message', function workerWrapperOnMessage(e) {
|
||||||
}
|
}
|
||||||
context = "ServiceWorker";
|
context = "ServiceWorker";
|
||||||
runScript();
|
runScript();
|
||||||
|
completeInstall();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
client = self;
|
client = self;
|
||||||
|
@ -127,3 +130,7 @@ addEventListener('message', function workerWrapperOnMessage(e) {
|
||||||
runScript();
|
runScript();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
addEventListener("install", e => {
|
||||||
|
e.waitUntil(new Promise(resolve => completeInstall = resolve));
|
||||||
|
})
|
||||||
|
|
Загрузка…
Ссылка в новой задаче