diff --git a/service-workers/service-worker/partitioned-cookies.tentative.https.html b/service-workers/service-worker/partitioned-cookies.tentative.https.html new file mode 100644 index 00000000000000..ed0759de4c2f08 --- /dev/null +++ b/service-workers/service-worker/partitioned-cookies.tentative.https.html @@ -0,0 +1,85 @@ + + + +Service Worker: Partitioned Cookies + + + + + + + + + + + + + +Service Worker: Partitioned Cookies 3P Iframe + + + + + + + + + +Service Worker: Partitioned Cookies 3P Window + + + + + + diff --git a/service-workers/service-worker/resources/partitioned-cookies-sw.js b/service-workers/service-worker/resources/partitioned-cookies-sw.js new file mode 100644 index 00000000000000..2f54a984b19c45 --- /dev/null +++ b/service-workers/service-worker/resources/partitioned-cookies-sw.js @@ -0,0 +1,30 @@ +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': + return onEchoCookies(event); + default: + return; + } +} + +// test_message just verifies that the message passing is working. +async function onTestMessage(event) { + event.source.postMessage({ok: true}); +} + +// echo_cookies returns the names of all of the cookies available to the worker. +async function onEchoCookies(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}); + } +}