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 });