diff options
-rw-r--r-- | main_background.js | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/main_background.js b/main_background.js index fc9047b..3d66618 100644 --- a/main_background.js +++ b/main_background.js @@ -712,34 +712,33 @@ function licenseRead(scriptSrc, name, external = false) { /** * Asynchronous function, returns the final edited script as a string, -* or an array containing it and the index, if the latter !== -1 +* or an array containing it -1, if returnsPair is true */ -async function get_script(response, url, tabId = -1, whitelisted = false, index = -1) { +async function getScript(scriptSrc, url, tabId = -1, whitelisted = false, returnsPair = true, isExternal = false) { function result(scriptSource) { - return index === -1 ? scriptSource : [scriptSource, index]; + return returnsPair ? scriptSource : [scriptSource, -1]; } - let scriptName = url.split('/').pop(); if (whitelisted) { if (tabId !== -1) { - let site = ListManager.siteMatch(url, whitelist); + const site = ListManager.siteMatch(url, whitelist); // Accept without reading script, it was explicitly whitelisted - let reason = site + const reason = site ? `All ${site} whitelisted by user` : 'Address whitelisted by user'; addReportEntry(tabId, { 'whitelisted': [site || url, reason], url }); } - if (response.startsWith('javascript:')) - return result(response); + if (scriptSrc.startsWith('javascript:')) + return result(scriptSrc); else - return result(`/* LibreJS: script whitelisted by user preference. */\n${response}`); + return result(`/* LibreJS: script whitelisted by user preference. */\n${scriptSrc}`); } - let [verdict, editedSource, reason] = licenseRead(response, scriptName, index === -2); + let [verdict, editedSource, reason] = licenseRead(scriptSrc, scriptName, isExternal); if (tabId < 0) { - return result(verdict ? response : editedSource); + return result(verdict ? scriptSrc : editedSource); } let domain = get_domain(url); @@ -749,16 +748,16 @@ async function get_script(response, url, tabId = -1, whitelisted = false, index switch (category) { case 'blacklisted': { editedSource = `/* LibreJS: script ${category} by user. */`; - return result(response.startsWith('javascript:') + return result(scriptSrc.startsWith('javascript:') ? `javascript:void(${encodeURIComponent(editedSource)})` : editedSource); } case 'whitelisted': { - return result(response.startsWith('javascript:') - ? response : `/* LibreJS: script ${category} by user. */\n${response}`); + return result(scriptSrc.startsWith('javascript:') + ? scriptSrc : `/* LibreJS: script ${category} by user. */\n${scriptSrc}`); } default: { - let scriptSource = verdict ? response : editedSource; - return result(response.startsWith('javascript:') + let scriptSource = verdict ? scriptSrc : editedSource; + return result(scriptSrc.startsWith('javascript:') ? (verdict ? scriptSource : `javascript:void(/* ${scriptSource} */)`) : `/* LibreJS: script ${category}. */\n${scriptSource}` ); @@ -898,7 +897,7 @@ async function handle_script(response, whitelisted) { let { text, request } = response; let { url, tabId } = request; url = ListStore.urlItem(url); - let edited = await get_script(text, url, tabId, whitelisted, -2); + let edited = await getScript(text, url, tabId, whitelisted, returnsPair = false, isExternal = true); return Array.isArray(edited) ? edited[0] : edited; } @@ -1034,7 +1033,7 @@ async function editHtml(html, documentUrl, tabId, frameId, whitelisted) { let url = ListStore.urlItem(documentUrl); if (whitelisted) { // don't bother rewriting - await get_script(html, url, tabId, whitelisted); // generates whitelisted report + await getScript(html, url, tabId, whitelisted); // generates whitelisted report return null; } @@ -1094,7 +1093,8 @@ async function editHtml(html, documentUrl, tabId, frameId, whitelisted) { } else { let url = `view-source:${documentUrl}#line${line}(<${element.tagName} ${name}>)\n${value.trim()}`; if (name === 'href') value = decodeURIComponent(value); - edited = await get_script(value, url, tabId, whitelist.contains(url)); dejaVu.set(key, edited); + edited = await getScript(value, url, tabId, whitelist.contains(url)); + dejaVu.set(key, edited); } if (edited && edited !== value) { modified = true; @@ -1119,7 +1119,7 @@ async function editHtml(html, documentUrl, tabId, frameId, whitelisted) { editedSource = dejaVu.get(source); } else { let url = `view-source:${documentUrl}#line${line}(<SCRIPT>)\n${source}`; - let edited = await get_script(source, url, tabId, whitelisted, i); + let edited = await getScript(source, url, tabId, whitelisted, returnsPair = false); editedSource = edited && edited[0].trim(); dejaVu.set(url, editedSource); } |