Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/requestBlocker.js

Issue 29421712: Issue 5184 - Support Firefox-specific webRequest types (Closed) Base URL: https://hg.adblockplus.org/adblockpluschrome/
Patch Set: Move logic to requestBlocker.js Created May 18, 2017, 1:14 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ext/background.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/requestBlocker.js
===================================================================
--- a/lib/requestBlocker.js
+++ b/lib/requestBlocker.js
@@ -27,27 +27,44 @@
const {checkWhitelisted, getKey} = require("whitelisting");
const {stringifyURL, extractHostFromFrame, isThirdParty} = require("url");
const {port} = require("messaging");
const devtools = require("devtools");
// Chrome can't distinguish between OBJECT_SUBREQUEST and OBJECT requests.
RegExpFilter.typeMap.OBJECT_SUBREQUEST = RegExpFilter.typeMap.OBJECT;
Sebastian Noack 2017/05/18 12:44:24 Unrelated, but note that this is also true for Fir
+let resourceTypeMappings = new Map([
Sebastian Noack 2017/05/18 12:44:24 Nit: This is a mapping of resource types, so IMHO
Manish Jethani 2017/05/18 20:52:04 resourceTypes implies all resource types, but I've
+ ["beacon", "PING"],
+ ["imageset", "IMAGE"],
+ ["sub_frame", "SUBDOCUMENT"],
+ ["web_manifest", "OTHER"],
Sebastian Noack 2017/05/18 12:44:24 I think we shouldn't hard-code the types we treat
Manish Jethani 2017/05/18 20:52:04 My reasoning was that we shouldn't block any resou
Sebastian Noack 2017/05/19 11:30:46 Sorry, I forgot to reply to this, since you addres
+ ["xml_dtd", "OTHER"],
+ ["xslt", "OTHER"]
+]);
+
+let typeMasks = new Map(
+ Object.keys(chrome.webRequest.ResourceType)
+ .map(typeKey => chrome.webRequest.ResourceType[typeKey])
+ .map(type => [type, RegExpFilter.typeMap[resourceTypeMappings.get(type)] ||
+ RegExpFilter.typeMap[type.toUpperCase()] || 0])
Sebastian Noack 2017/05/18 12:44:24 Please use RegExpFilter.typeMap.OTHER, rather than
Manish Jethani 2017/05/18 20:52:04 Done.
+);
+
function onBeforeRequestAsync(page, url, type, docDomain,
thirdParty, sitekey,
specificOnly, filter)
{
if (filter)
FilterNotifier.emit("filter.hitCount", filter, 0, 0, page);
if (devtools)
{
devtools.logRequest(
- page, url, type, docDomain,
+ page, url,
+ resourceTypeMappings.get(type) || type.toUpperCase(), docDomain,
thirdParty, sitekey,
specificOnly, filter
);
}
}
ext.webRequest.onBeforeRequest.addListener((url, type, page, frame) =>
{
@@ -59,17 +76,17 @@
let thirdParty = isThirdParty(url, docDomain);
let sitekey = getKey(page, frame);
let specificOnly = !!checkWhitelisted(
page, frame, RegExpFilter.typeMap.GENERICBLOCK
);
let filter = defaultMatcher.matchesAny(
- urlString, RegExpFilter.typeMap[type],
+ urlString, typeMasks.get(type),
docDomain, thirdParty, sitekey, specificOnly
);
setTimeout(onBeforeRequestAsync, 0, page, urlString,
type, docDomain,
thirdParty, sitekey,
specificOnly, filter);
« no previous file with comments | « ext/background.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld