fetch-event-handled-worker.js (1103B)
1 // This worker reports back the final state of FetchEvent.handled (RESOLVED or 2 // REJECTED) to the test. 3 4 self.addEventListener('message', function(event) { 5 self.port = event.data.port; 6 }); 7 8 self.addEventListener('fetch', function(event) { 9 try { 10 event.handled.then(() => { 11 self.port.postMessage('RESOLVED'); 12 }, () => { 13 self.port.postMessage('REJECTED'); 14 }); 15 } catch (e) { 16 self.port.postMessage('FAILED'); 17 return; 18 } 19 20 const search = new URL(event.request.url).search; 21 switch (search) { 22 case '?respondWith-not-called': 23 break; 24 case '?respondWith-not-called-and-event-canceled': 25 event.preventDefault(); 26 break; 27 case '?respondWith-called-and-promise-resolved': 28 event.respondWith(Promise.resolve(new Response('body'))); 29 break; 30 case '?respondWith-called-and-promise-resolved-to-invalid-response': 31 event.respondWith(Promise.resolve('invalid response')); 32 break; 33 case '?respondWith-called-and-promise-rejected': 34 event.respondWith(Promise.reject(new Error('respondWith rejected'))); 35 break; 36 } 37 });