summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bg/RequestGuard.js23
-rw-r--r--src/bg/RequestUtil.js9
2 files changed, 17 insertions, 15 deletions
diff --git a/src/bg/RequestGuard.js b/src/bg/RequestGuard.js
index b23853f..dcb79a7 100644
--- a/src/bg/RequestGuard.js
+++ b/src/bg/RequestGuard.js
@@ -90,9 +90,6 @@ var RequestGuard = (() => {
if (what === "noscriptFrame") {
let nsf = records.noscriptFrames;
- if (frameId in nsf) {
- return null;
- }
nsf[frameId] = optValue;
what = optValue ? "blocked" : "allowed";
if (frameId === 0) {
@@ -278,18 +275,20 @@ var RequestGuard = (() => {
};
if (tabId < 0) return;
if (pending) request.initialUrl = pending.initialUrl;
- try {
- browser.tabs.sendMessage(
- tabId,
- {type: "seen", request, allowed, policyType, ownFrame: true},
- {frameId}
- );
- } catch (e) {
- debug(`Couldn't deliver "seen" message for ${type}@${url} ${allowed ? "A" : "F" } to document ${documentUrl} (${frameId}/${tabId}`, e);
+ if (type !== "sub_frame") { // we couldn't deliver it to frameId, since it's generally not loaded yet
+ try {
+ await browser.tabs.sendMessage(
+ tabId,
+ {type: "seen", request, allowed, policyType, ownFrame: true},
+ {frameId}
+ );
+ } catch (e) {
+ debug(`Couldn't deliver "seen" message for ${type}@${url} ${allowed ? "A" : "F" } to document ${documentUrl} (${frameId}/${tabId})`, e);
+ }
}
if (frameId === 0) return;
try {
- browser.tabs.sendMessage(
+ await browser.tabs.sendMessage(
tabId,
{type: "seen", request, allowed, policyType},
{frameId: 0}
diff --git a/src/bg/RequestUtil.js b/src/bg/RequestUtil.js
index d010f2b..39b1bf7 100644
--- a/src/bg/RequestUtil.js
+++ b/src/bg/RequestUtil.js
@@ -1,6 +1,7 @@
'use strict';
{
let NULL = new Uint8Array();
+ let brokenOnLoad = (async () => parseInt(await browser.runtime.getBrowserInfo().version) < 61);
let pendingRequests = new Map();
let cleanup = r => {
@@ -59,7 +60,7 @@
let content = this.getContentMetaData(request);
debug(request.url, content.type);
- if (/\bxml\b/.test(content.type) && !/\bhtml\b/.test(content.type)) return;
+ if (/^[\w/+-]*\b(xml|image)\b/i.test(content.type) && !/\bhtml\b/i.test(content.type)) return;
let filter = browser.webRequest.filterResponseData(requestId);
let buffer = [];
@@ -76,8 +77,10 @@
}
};
- filter.onstart = event => {
- filter.write(NULL);
+ if (brokenOnLoad) {
+ filter.onstart = event => {
+ filter.write(NULL);
+ }
}
filter.ondata = event => {