Source code
Revision control
Copy as Markdown
Other Tools
"use strict";
// Replies to commands sent via postMessage. Used by the tests that check
// whether a ServiceWorker's requests inherit the registering frame's storage
// access.
self.addEventListener("install", () => self.skipWaiting());
self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
self.addEventListener("message", async (message) => {
const reply = (data) => message.source.postMessage({data});
switch (message.data.command) {
case "fetch": {
const data = await fetch(message.data.url, {mode: 'cors', credentials: 'include'})
.then((resp) => resp.text());
reply(data);
break;
}
case "websocket": {
const data = await new Promise((resolve, reject) => {
const ws = new WebSocket(message.data.origin + '/echo-cookie');
ws.onmessage = (event) => resolve(event.data);
ws.onerror = () => reject(new Error('Unexpected error event'));
ws.onclose = (event) => reject('Unexpected close event: ' + JSON.stringify(event));
}).catch((error) => "error: " + error);
reply(data);
break;
}
default:
}
});