From 35daafa5e5f7d094698933816e812d666c739982 Mon Sep 17 00:00:00 2001 From: hackademix Date: Sun, 2 Sep 2018 00:15:48 +0200 Subject: Fixed weblabels not being checked in whitelisted documents unless they precede scripts. --- main_background.js | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'main_background.js') diff --git a/main_background.js b/main_background.js index a521d22..e2c3635 100644 --- a/main_background.js +++ b/main_background.js @@ -424,6 +424,7 @@ function delete_removed_tab_info(tab_id, remove_info){ if(activeMessagePorts[tab_id] !== undefined){ delete activeMessagePorts[tab_id]; } + ExternalLicenses.purgeCache(tab_id); } /** @@ -855,14 +856,14 @@ var ResponseHandler = { */ async pre(response) { let {request} = response; - let {url, type, tabId, frameId} = request; + let {url, type, tabId, frameId, documentUrl} = request; url = ListStore.urlItem(url); let site = ListStore.siteItem(url); let blacklistedSite = blacklist.contains(site); let blacklisted = blacklistedSite || blacklist.contains(url); - let topUrl = request.frameAncestors && request.frameAncestors.pop() || request.documentUrl; + let topUrl = request.frameAncestors && request.frameAncestors.pop() || documentUrl; if (blacklisted) { if (type === "script") { @@ -886,7 +887,7 @@ var ResponseHandler = { "whitelisted": [url, whitelistedSite ? `User whitelisted ${site}` : "Whitelisted by user"]}); return ResponseProcessor.ACCEPT; } else { - let scriptInfo = await ExternalLicenses.check({url, tabId, frameId}); + let scriptInfo = await ExternalLicenses.check({url, tabId, frameId, documentUrl}); if (scriptInfo) { let verdict, ret; let msg = scriptInfo.toString(); @@ -991,23 +992,26 @@ function read_metadata(meta_element){ return false; } } - /** + * Reads/changes the HTML of a page and the scripts within it. */ -function edit_html(html,url,tabid,wl){ +function edit_html(html, documentUrl, tabId, frameId, whitelisted){ + return new Promise((resolve, reject) => { - if(wl == true){ - // Don't bother, page is whitelisted - resolve(html); - } - + var parser = new DOMParser(); var html_doc = parser.parseFromString(html, "text/html"); // moves external licenses reference, if any, before any