Sanity checks on worker url

Ref: https://github.com/brave/adblock-resources/pull/186
This commit is contained in:
pixeltris
2024-06-29 00:28:01 +01:00
parent e73c6fb021
commit 39666c7bb1
4 changed files with 50 additions and 14 deletions
+12 -3
View File
@@ -27,7 +27,15 @@ twitch-videoad.js text/javascript
var twitchWorkers = [];
const oldWorker = window.Worker;
window.Worker = class Worker extends oldWorker {
constructor(twitchBlobUrl) {
constructor(twitchBlobUrl, options) {
var isTwitchWorker = false;
try {
isTwitchWorker = new URL(twitchBlobUrl).origin.endsWith('.twitch.tv');
} catch {}
if (!isTwitchWorker) {
super(twitchBlobUrl, options);
return;
}
var newBlobStr = `
${processM3U8.toString()}
${hookWorkerFetch.toString()}
@@ -39,7 +47,7 @@ twitch-videoad.js text/javascript
${parseAttributes.toString()}
${onFoundAd.toString()}
${getWasmWorkerUrl.toString()}
var workerUrl = getWasmWorkerUrl('${twitchBlobUrl}');
var workerUrl = getWasmWorkerUrl('${twitchBlobUrl.replaceAll("'", "%27")}');
if (workerUrl && workerUrl.includes('assets.twitch.tv/assets/amazon-ivs-wasmworker')) {
declareOptions(self);
self.addEventListener('message', function(e) {
@@ -55,7 +63,7 @@ twitch-videoad.js text/javascript
importScripts(workerUrl);
}
`
super(URL.createObjectURL(new Blob([newBlobStr])));
super(URL.createObjectURL(new Blob([newBlobStr])), options);
twitchWorkers.push(this);
this.onmessage = function(e) {
// NOTE: Removed adDiv caching as '.video-player' can change between streams?
@@ -103,6 +111,7 @@ twitch-videoad.js text/javascript
function getWasmWorkerUrl(twitchBlobUrl) {
var req = new XMLHttpRequest();
req.open('GET', twitchBlobUrl, false);
req.overrideMimeType("text/javascript");
req.send();
return req.responseText.split("'")[1];
}