blob: bc2a2831568f4cc438933b88b7cad6997beb041b [file] [log] [blame]
self.addEventListener('message', ev => ev.waitUntil(onMessage(ev)));
async function onMessage(event) {
if (!event.data)
return;
switch (event.data.type) {
case 'test_message':
return onTestMessage(event);
case 'echo_cookies_http':
return onEchoCookiesHttp(event);
case 'echo_cookies_js':
return onEchoCookiesJs(event);
default:
return;
}
}
// test_message just verifies that the message passing is working.
async function onTestMessage(event) {
event.source.postMessage({ok: true});
}
async function onEchoCookiesHttp(event) {
try {
const resp = await fetch(
`${self.origin}/cookies/resources/list.py`, {credentials: 'include'});
const cookies = await resp.json();
event.source.postMessage({ok: true, cookies: Object.keys(cookies)});
} catch (err) {
event.source.postMessage({ok: false});
}
}
// echo_cookies returns the names of all of the cookies available to the worker.
async function onEchoCookiesJs(event) {
try {
const cookie_objects = await self.cookieStore.getAll();
const cookies = cookie_objects.map(c => c.name);
event.source.postMessage({ok: true, cookies});
} catch (err) {
event.source.postMessage({ok: false});
}
}