tor-browser

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

onmessageerror_worker.js (1221B)


      1 async function getSwContainer() {
      2  const clients = await self.clients.matchAll({
      3    type: "window",
      4    includeUncontrolled: true,
      5  });
      6 
      7  for (let client of clients) {
      8    if (client.url.endsWith("test_onmessageerror.html")) {
      9      return client;
     10    }
     11  }
     12  return undefined;
     13 }
     14 
     15 self.addEventListener("message", async e => {
     16  const config = e.data;
     17  const swContainer = await getSwContainer();
     18 
     19  if (config == "send-bad-message") {
     20    const serializable = true;
     21    const deserializable = false;
     22 
     23    swContainer.postMessage(
     24      new StructuredCloneTester(serializable, deserializable)
     25    );
     26 
     27    return;
     28  }
     29 
     30  if (!config.serializable) {
     31    swContainer.postMessage({
     32      result: "Error",
     33      reason: "Service Worker received an unserializable object",
     34    });
     35 
     36    return;
     37  }
     38 
     39  if (!config.deserializable) {
     40    swContainer.postMessage({
     41      result: "Error",
     42      reason:
     43        "Service Worker received (and deserialized) an un-deserializable object",
     44    });
     45 
     46    return;
     47  }
     48 
     49  swContainer.postMessage({ received: "message" });
     50 });
     51 
     52 self.addEventListener("messageerror", async () => {
     53  const swContainer = await getSwContainer();
     54  swContainer.postMessage({ received: "messageerror" });
     55 });