mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
33 lines
1.3 KiB
JavaScript
33 lines
1.3 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
let { classes: Cc, interfaces: Ci, utils: Cu } = Components;
|
|
let swm = Cc["@mozilla.org/serviceworkers/manager;1"].
|
|
getService(Ci.nsIServiceWorkerManager);
|
|
|
|
addMessageListener("serviceWorkerRegistration:start", message => {
|
|
let { data } = message;
|
|
let array = swm.getAllRegistrations();
|
|
|
|
// Find the service worker registration with the desired scope.
|
|
for (let i = 0; i < array.length; i++) {
|
|
let registration =
|
|
array.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo);
|
|
// XXX: In some rare cases, `registration.activeWorker` can be null for a
|
|
// brief moment (e.g. while the service worker is first installing, or if
|
|
// there was an unhandled exception during install that will cause the
|
|
// registration to be removed). We can't do much about it here, simply
|
|
// ignore these cases.
|
|
if (registration.scope === data.scope && registration.activeWorker) {
|
|
// Briefly attaching a debugger to the active service worker will cause
|
|
// it to start running.
|
|
registration.activeWorker.attachDebugger();
|
|
registration.activeWorker.detachDebugger();
|
|
return;
|
|
}
|
|
}
|
|
});
|