Index: lib/contentPolicy.js |
diff --git a/lib/contentPolicy.js b/lib/contentPolicy.js |
index e15332889eaa93128393e14c66c3527653b96aae..267dc886b004a881f896f9a324bc523b9d9515ce 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,6 +250,19 @@ let Policy = exports.Policy = |
if (!match && Prefs.enabled) |
{ |
match = defaultMatcher.matchesAny(locationText, Policy.typeDescr[contentType] || "", docDomain, thirdParty, sitekey); |
+ if (match instanceof BlockingFilter && (!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 (match instanceof BlockingFilter && node.ownerDocument && !(contentType in Policy.nonVisual)) |
{ |
let prefCollapse = (match.collapse != null ? match.collapse : !Prefs.fastcollapse); |