tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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