service_worker_etp.js (650B)
1 onmessage = function (e) { 2 const message = e.data; 3 4 if (message === "IsETPAllowListed") { 5 sendMessage(!isOffscreenAPlaceHolder()); 6 } 7 }; 8 9 function isOffscreenAPlaceHolder() { 10 const canvas = new OffscreenCanvas(4, 4); 11 const context = canvas.getContext("2d"); 12 // An empty canvas would return 0,0,0,0 for the pixel data. 13 return !context.getImageData(0, 0, 4, 4).data.every(el => el === 0); 14 } 15 16 function sendMessage(message) { 17 self.clients.matchAll({ includeUncontrolled: true }).then(function (res) { 18 if (!res.length) { 19 dump("Error: no clients are available.\n"); 20 return; 21 } 22 res[0].postMessage(message); 23 }); 24 }