summaryrefslogtreecommitdiff
path: root/src/bg
diff options
context:
space:
mode:
authorhackademix2018-08-18 22:52:34 +0200
committerhackademix2018-08-18 22:52:34 +0200
commitbb232e0895ba2090c5b4555e882453c5f60f2dfb (patch)
tree4d512d1fe9f40c8a77f561f8e9aa6dc4bdf3c8c3 /src/bg
parent3819592dfcb6618dce067ed9086d914d20e643d5 (diff)
downloadnoscript-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.js24
-rw-r--r--src/bg/deferWebTraffic.js6
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);