blob: 44a340023be34de979a2c2bf6caa52ea9ee0daeb [file] [log] [blame]
// This should be accessed only in the install event or the message event. When
// this is false, it implies that this service worker is restarted after the
// install event.
let did_run_install_event = false;
self.addEventListener('install', e => {
var scope = new URL(self.registration.scope);
if (scope.searchParams.get('type') == 'features-during-install') {
internals.countFeature(scope.searchParams.get('feature'));
internals.countDeprecation(scope.searchParams.get('deprecated'));
} else if (scope.searchParams.get('type') == 'skip-waiting') {
e.waitUntil(self.skipWaiting());
}
did_run_install_event = true;
});
onmessage = e => {
if (e.data.type == 'COUNT_FEATURE') {
internals.countFeature(e.data.feature);
} else if (e.data.type == 'COUNT_DEPRECATION') {
internals.countDeprecation(e.data.feature);
} else if (e.data.type == 'CLAIM') {
let promise = self.clients.claim()
.then(() => e.source.postMessage(
{type: 'CLAIMED', restarted: !did_run_install_event}));
e.waitUntil(promise);
} else if (e.data.type == 'PING') {
e.source.postMessage({type: 'PONG'});
}
};