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