background-fetch-sw.js (1023B)
1 self.addEventListener('install', e => e.waitUntil(skipWaiting())); 2 self.addEventListener('activate', e => e.waitUntil(clients.claim())); 3 4 self.addEventListener('message', async e => { 5 const method = e.data; 6 7 let promise; 8 switch (method) { 9 case 'fetch': 10 promise = self.registration.backgroundFetch.fetch( 11 'test-fetch', ['background-fetch-inner.https.html.headers'], 12 {title: 'Background Fetch'}); 13 break; 14 case 'get': 15 promise = self.registration.backgroundFetch.get('test-fetch') 16 break; 17 case 'getIds': 18 promise = registration.backgroundFetch.getIds(); 19 break; 20 default: 21 promise = Promise.resolve(); 22 break; 23 } 24 25 const message = 26 await promise 27 .then(() => { 28 return `[backgroundFetch.${method}] Unexpectedly started`; 29 }) 30 .catch((e) => { 31 return `[backgroundFetch.${ 32 method}] Failed inside fencedframe as expected`; 33 }); 34 35 e.source.postMessage(message); 36 });