36 lines
1,023 B
JavaScript
36 lines
1,023 B
JavaScript
self.addEventListener('install', e => e.waitUntil(skipWaiting()));
|
|
self.addEventListener('activate', e => e.waitUntil(clients.claim()));
|
|
|
|
self.addEventListener('message', async e => {
|
|
const method = e.data;
|
|
|
|
let promise;
|
|
switch (method) {
|
|
case 'fetch':
|
|
promise = self.registration.backgroundFetch.fetch(
|
|
'test-fetch', ['background-fetch-inner.https.html.headers'],
|
|
{title: 'Background Fetch'});
|
|
break;
|
|
case 'get':
|
|
promise = self.registration.backgroundFetch.get('test-fetch')
|
|
break;
|
|
case 'getIds':
|
|
promise = registration.backgroundFetch.getIds();
|
|
break;
|
|
default:
|
|
promise = Promise.resolve();
|
|
break;
|
|
}
|
|
|
|
const message =
|
|
await promise
|
|
.then(() => {
|
|
return `[backgroundFetch.${method}] Unexpectedly started`;
|
|
})
|
|
.catch((e) => {
|
|
return `[backgroundFetch.${
|
|
method}] Failed inside fencedframe as expected`;
|
|
});
|
|
|
|
e.source.postMessage(message);
|
|
});
|