Skip to content

Commit 17a0426

Browse files
committed
More specific dynamic script injection exceptions.
1 parent c688235 commit 17a0426

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

src/bg/RequestUtil.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
'use strict';
22
{
33
let NULL = new Uint8Array();
4-
let xmlFeedOrImage = /^(?:(?:application|text)\/(?:(?:r(?:ss|df)|atom)\+)?xml(;|$))|image\//i;
4+
let DEFAULT_CHARSET = "utf-8";
5+
let xmlFeedOrImage = /^(?:(?:application|text)\/(?:(?:r(?:ss|df)|atom)\+)xml(;|$))|image\//i;
6+
let rawXml = /^(?:application|text)\/xml;/i;
57
let brokenOnLoad = (async () => parseInt(await browser.runtime.getBrowserInfo().version) < 61);
8+
69
let pendingRequests = new Map();
710

811
let cleanup = r => {
@@ -35,15 +38,7 @@
3538
var RequestUtil = {
3639

3740
getContentMetaData(request) {
38-
if (request.content) return request.content;
39-
let {responseHeaders} = request;
40-
let content = request.content = {};
41-
for (let h of responseHeaders) {
42-
if (/^\s*Content-(Type|Disposition)\s*$/i.test(h.name)) {
43-
content[h.name.split("-")[1].trim().toLowerCase()] = h.value;
44-
}
45-
}
46-
return content;
41+
return request.content || (request.content = new ContentMetaData(request));
4742
},
4843

4944
async executeOnStart(request, details) {
@@ -60,8 +55,9 @@
6055
}
6156

6257
let content = this.getContentMetaData(request);
63-
debug(request.url, content.type);
58+
debug(request.url, content.type, content.charset);
6459
if (xmlFeedOrImage.test(content.type) && !/\/svg\b/i.test(content.type)) return;
60+
let disconnect = !(brokenOnLoad && rawXml.test(content.type));
6561
let filter = browser.webRequest.filterResponseData(requestId);
6662
let buffer = [];
6763

@@ -73,18 +69,20 @@
7369
for (let chunk of buffer) {
7470
filter.write(chunk);
7571
}
76-
filter.disconnect();
72+
if (disconnect) filter.disconnect();
7773
buffer = null;
7874
}
7975
};
8076

8177
if (brokenOnLoad) {
8278
filter.onstart = event => {
79+
debug(`onstart ${request.url}`);
8380
filter.write(NULL);
8481
}
8582
}
8683

87-
filter.ondata = event => {
84+
filter.ondata = event => {
85+
8886
if (first) {
8987
runAndFlush();
9088
first = false;
@@ -93,8 +91,10 @@
9391
buffer.push(event.data);
9492
return;
9593
}
94+
95+
debug(`ondata ${request.url}`);
9696
filter.write(event.data);
97-
filter.disconnect();
97+
if (disconnect) filter.disconnect();
9898
};
9999

100100
}

0 commit comments

Comments
 (0)