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 }