diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bg/ChildPolicies.js | 9 | ||||
-rw-r--r-- | src/bg/RequestGuard.js | 14 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/bg/ChildPolicies.js b/src/bg/ChildPolicies.js index e5024e7..58b18ca 100644 --- a/src/bg/ChildPolicies.js +++ b/src/bg/ChildPolicies.js @@ -51,10 +51,6 @@ } }; - if (!browser.contentScripts) { // #chromium fallback - Scripts.register = () => {}; - } - let flatten = arr => arr.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []); let protocolRx = /^(\w+):/i; @@ -196,4 +192,9 @@ }, }; + + if (!browser.contentScripts) { // #chromium fallback + Scripts.register = ChildPolicies.update = () => {}; + } + } diff --git a/src/bg/RequestGuard.js b/src/bg/RequestGuard.js index c1771aa..bdf2ea2 100644 --- a/src/bg/RequestGuard.js +++ b/src/bg/RequestGuard.js @@ -296,7 +296,9 @@ var RequestGuard = (() => { } return ALLOW; }, - async onHeadersReceived(request) { + onHeadersReceived(request) { + let result = ALLOW; + let promises = []; // called for main_frame, sub_frame and object // check for duplicate calls let headersModified = false; @@ -324,7 +326,7 @@ var RequestGuard = (() => { if (isMainFrame) { if (policy.autoAllowTop && perms === policy.DEFAULT) { policy.set(Sites.optimalKey(url), perms = policy.TRUSTED.tempTwin); - await ChildPolicies.update(policy); + promises.push(ChildPolicies.update(policy)); } capabilities = perms.capabilities; } else { @@ -360,12 +362,16 @@ var RequestGuard = (() => { headersModified = true; } if (headersModified) { - return {responseHeaders}; + result = {responseHeaders}; } } catch (e) { error(e, "Error in onHeadersReceived", request); } - return ALLOW; + promises = promises.filter(p => p instanceof Promise); + if (promises.length > 0) { + return Promise.all(promises).then(() => result); + } + return result; }, onResponseStarted(request) { debug("onResponseStarted", request); |