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

Unified Diff: lib/contentPolicy.js

Issue 5840485868371968: Issue 616 - Add $generichide + $genericblock filter options and enforce them. (Closed)
Patch Set: Tidied up genericblock logic in contentPolicy code. Created March 13, 2015, 6:46 p.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 | « no previous file | lib/filterClasses.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/contentPolicy.js
diff --git a/lib/contentPolicy.js b/lib/contentPolicy.js
index e15332889eaa93128393e14c66c3527653b96aae..dac62ea764db670ad08deae26af772e1505e56cd 100644
--- a/lib/contentPolicy.js
+++ b/lib/contentPolicy.js
@@ -153,6 +153,7 @@ let Policy = exports.Policy =
let docDomain = getHostname(wndLocation);
let match = null;
let [sitekey, sitekeyWnd] = getSitekey(wnd);
+ let genericblock = { match: null };
if (!match && Prefs.enabled)
{
let testWnd = wnd;
@@ -171,6 +172,17 @@ let Policy = exports.Policy =
RequestNotifier.addNodeData(testWnd.document, topWnd, Policy.type.DOCUMENT, getHostname(parentWndLocation), false, testWndLocation, match);
return true;
}
+ else if (!(genericblock.match instanceof WhitelistFilter) && contentType != Policy.type.ELEMHIDE)
+ {
+ let parentDocDomain = getHostname(parentWndLocation);
+ genericblock.match = defaultMatcher.matchesAny(testWndLocation, "GENERICBLOCK", parentDocDomain, false);
+ if (genericblock.match instanceof WhitelistFilter)
+ {
+ genericblock.parentDocDomain = parentDocDomain;
+ genericblock.testWnd = testWnd;
+ genericblock.testWndLocation = testWndLocation;
+ }
+ }
if (testWnd.parent == testWnd)
break;
@@ -200,6 +212,10 @@ let Policy = exports.Policy =
parentWndLocation = (testWnd == testWnd.parent ? testWndLocation : getWindowLocation(testWnd.parent));
let parentDocDomain = getHostname(parentWndLocation);
match = defaultMatcher.matchesAny(testWndLocation, "ELEMHIDE", parentDocDomain, false);
+
+ if (!(match instanceof WhitelistFilter) && (!location.domains || location.domains[""]))
+ match = defaultMatcher.matchesAny(testWndLocation, "GENERICHIDE", parentDocDomain, false);
+
if (match instanceof WhitelistFilter)
{
FilterStorage.increaseHitCount(match, wnd);
@@ -234,11 +250,27 @@ let Policy = exports.Policy =
if (!match && Prefs.enabled)
{
match = defaultMatcher.matchesAny(locationText, Policy.typeDescr[contentType] || "", docDomain, thirdParty, sitekey);
- if (match instanceof BlockingFilter && node.ownerDocument && !(contentType in Policy.nonVisual))
+ if (match instanceof BlockingFilter)
{
- let prefCollapse = (match.collapse != null ? match.collapse : !Prefs.fastcollapse);
- if (collapse || prefCollapse)
- schedulePostProcess(node);
+ if ((!match.domains || match.domains[""]) && genericblock.match instanceof WhitelistFilter)
+ {
+ FilterStorage.increaseHitCount(genericblock.match, wnd);
+ RequestNotifier.addNodeData(
+ genericblock.testWnd.document,
+ topWnd, contentType,
+ genericblock.parentDocDomain,
+ false, genericblock.testWndLocation,
+ genericblock.match
+ );
+ return true;
+ }
+
+ if (node.ownerDocument && !(contentType in Policy.nonVisual))
+ {
+ let prefCollapse = (match.collapse != null ? match.collapse : !Prefs.fastcollapse);
+ if (collapse || prefCollapse)
+ schedulePostProcess(node);
+ }
}
// Track mouse events for objects
« no previous file with comments | « no previous file | lib/filterClasses.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld