diff options
author | hackademix | 2018-08-18 22:52:34 +0200 |
---|---|---|
committer | hackademix | 2018-08-18 22:52:34 +0200 |
commit | bb232e0895ba2090c5b4555e882453c5f60f2dfb (patch) | |
tree | 4d512d1fe9f40c8a77f561f8e9aa6dc4bdf3c8c3 /src/bg | |
parent | 3819592dfcb6618dce067ed9086d914d20e643d5 (diff) | |
download | noscript-bb232e0895ba2090c5b4555e882453c5f60f2dfb.tar.gz noscript-bb232e0895ba2090c5b4555e882453c5f60f2dfb.tar.xz noscript-bb232e0895ba2090c5b4555e882453c5f60f2dfb.zip |
More reliable attempt to run onResponseHeader listener the last of installed extension.
Diffstat (limited to 'src/bg')
-rw-r--r-- | src/bg/RequestGuard.js | 24 | ||||
-rw-r--r-- | src/bg/deferWebTraffic.js | 6 |
2 files changed, 20 insertions, 10 deletions
diff --git a/src/bg/RequestGuard.js b/src/bg/RequestGuard.js index 703623f..38801de 100644 --- a/src/bg/RequestGuard.js +++ b/src/bg/RequestGuard.js @@ -462,19 +462,33 @@ var RequestGuard = (() => { onResponseStarted(request) { debug("onResponseStarted", request); - if (request.type === "main_frame") { - TabStatus.initTab(request.tabId); + let {url, tabId, frameId, type} = request; + if (type === "main_frame") { + TabStatus.initTab(tabId); } let scriptBlocked = request.responseHeaders.some( h => CSP.isMine(h) && CSP.blocks(h.value, "script") ); - debug("%s scriptBlocked=%s setting noscriptFrame on ", request.url, scriptBlocked, request.tabId, request.frameId); + debug("%s scriptBlocked=%s setting noscriptFrame on ", url, scriptBlocked, tabId, frameId); TabStatus.record(request, "noscriptFrame", scriptBlocked); let pending = pendingRequests.get(request.requestId); if (pending) { pending.scriptBlocked = scriptBlocked; - if (!pending.headersProcessed) { - debug("[WARNING] onHeadersReceived could not process", request); + if (!(pending.headersProcessed && + (scriptBlocked || ns.policy.can(url, "script", request.documentURL)) + )) { + debug("[WARNING] onHeadersReceived %s %o", frameId, tabId, + pending.headersProcessed ? "has been overridden on": "could not process", + request); + + if (tabId !== -1) { + debug("[WARNING] Reloading %s frame %s of tab %s.", url, frameId, tabId); + browser.tabs.executeScript(tabId, { + runAt: "document_start", + code: "window.location.reload(false)", + frameId + }); + } } } }, diff --git a/src/bg/deferWebTraffic.js b/src/bg/deferWebTraffic.js index 15d177b..3f27dd5 100644 --- a/src/bg/deferWebTraffic.js +++ b/src/bg/deferWebTraffic.js @@ -34,11 +34,7 @@ function deferWebTraffic(promiseToWaitFor, next) { if (frameId !== 0) { documentUrl = request.frameAncestors.pop().url; } - if (tabId !== -1) { - reloadTab(tabId); - } else { - debug("No tab to reload for %s %s from %s", type, url, documentUrl); - } + reloadTab(tabId); } } debug("Deferring %s %s from %s", type, url, documentUrl); |