tor-browser

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

shared-worker-echo-cookies.js (1053B)


      1 let port;
      2 
      3 self.onconnect = e => {
      4  port = e.ports[0];
      5  port.addEventListener('message', onMessage);
      6  port.start();
      7 };
      8 
      9 async function onMessage(e) {
     10  switch (e.data.type) {
     11    case 'test_message':
     12      port.postMessage({ok: true});
     13      return;
     14    case 'echo_cookies_http':
     15      return onEchoCookiesHttp(e);
     16    case 'echo_cookies_import':
     17      return onEchoCookiesImport();
     18    default:
     19      throw new Error('Unexpected message type ' + e.data.type);
     20  }
     21 }
     22 
     23 async function onEchoCookiesHttp(e) {
     24  try {
     25    const resp = await fetch(
     26        `${self.origin}/cookies/resources/list.py`, {credentials: 'include'});
     27    const cookies = await resp.json();
     28    port.postMessage({ok: true, cookies: Object.keys(cookies)});
     29  } catch (err) {
     30    port.postMessage({ok: false});
     31  }
     32 }
     33 
     34 // Sets `self._cookies` variable, array of the names of cookies available to
     35 // the request.
     36 importScripts(`${self.origin}/cookies/resources/list-cookies-for-script.py`);
     37 
     38 function onEchoCookiesImport() {
     39  port.postMessage({ok: true, cookies: self._cookies});
     40 }