Fixed regression: dynamic script injection breaking images loaded as frame content.

This commit is contained in:
hackademix 2018-07-03 17:02:58 +02:00
parent 81bd93a72d
commit e0ae64871e
3 changed files with 19 additions and 3 deletions

View File

@ -11,6 +11,19 @@
browser.webRequest.onCompleted.addListener(cleanup, filter);
browser.webRequest.onErrorOccurred.addListener(cleanup, filter);
var RequestUtil = {
getContentMetaData(request) {
if (request.content) return request.content;
let {responseHeaders} = request;
let content = request.content = {};
for (let h of responseHeaders) {
if (/^\s*Content-(Type|Disposition)\s*$/i.test(h.name)) {
content[h.name.split("-")[1].trim().toLowerCase()] = h.value;
}
}
return content;
},
async executeOnStart(request, details) {
let {requestId, tabId, frameId} = request;
let scripts = pendingRequests.get(requestId);
@ -25,8 +38,11 @@
let filter = browser.webRequest.filterResponseData(requestId);
let buffer = [];
let content = this.getContentMetaData(request);
filter.onstart = async event => {
filter.write(new Uint8Array());
if (/ml$/i.test(content.type)) {
filter.write(new Uint8Array()); // work-around for https://bugzilla.mozilla.org/show_bug.cgi?id=1410755
}
for (let details of scripts.values()) {
details = Object.assign({
runAt: "document_start",

View File

@ -1,4 +1,4 @@
console.log("WebGL Hook", document.URL, document.documentElement && document.documentElement.innerHTML);
debug("WebGL Hook", document.URL, document.documentElement && document.documentElement.innerHTML);
try {
let proto = HTMLCanvasElement.prototype;
let getContext = proto.getContext;

View File

@ -8,7 +8,7 @@
"strict_min_version": "59.0"
}
},
"version": "10.1.8.3rc4",
"version": "10.1.8.3rc5",
"description": "__MSG_Description__",
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'none'",