| Index: lib/contentPolicy.js | 
| diff --git a/lib/contentPolicy.js b/lib/contentPolicy.js | 
| index b0498da6ec3bf66b35e35d8d8114e99ad3477707..eaef9b016156797948a5b3b3f812f4fe8f6d9591 100644 | 
| --- a/lib/contentPolicy.js | 
| +++ b/lib/contentPolicy.js | 
| @@ -162,6 +162,8 @@ let Policy = exports.Policy = | 
| let docDomain = getHostname(wndLocation); | 
| let match = null; | 
| let [sitekey, sitekeyWnd] = getSitekey(wnd); | 
| + let nogeneric = false; | 
| + | 
| if (!match && Prefs.enabled) | 
| { | 
| let testWnd = wnd; | 
| @@ -181,6 +183,23 @@ let Policy = exports.Policy = | 
| return true; | 
| } | 
| + let genericType = (contentType == Policy.type.ELEMHIDE ? | 
| + RegExpFilter.typeMap.GENERICHIDE : | 
| + RegExpFilter.typeMap.GENERICBLOCK); | 
| + let parentDocDomain = getHostname(parentWndLocation); | 
| + let nogenericMatch = defaultMatcher.matchesAny( | 
| + testWndLocation, genericType, parentDocDomain, false, testSitekey | 
| + ); | 
| + if (nogenericMatch instanceof WhitelistFilter) | 
| + { | 
| + nogeneric = true; | 
| + | 
| + FilterStorage.increaseHitCount(nogenericMatch, wnd); | 
| + RequestNotifier.addNodeData(testWnd.document, topWnd, contentType, | 
| + parentDocDomain, false, testWndLocation, | 
| + nogenericMatch); | 
| + } | 
| + | 
| if (testWnd.parent == testWnd) | 
| break; | 
| @@ -236,13 +255,17 @@ let Policy = exports.Policy = | 
| RequestNotifier.addNodeData(node, topWnd, contentType, docDomain, false, locationText, exception); | 
| return true; | 
| } | 
| + | 
| + if (nogeneric && match.isGeneric()) | 
| + return true; | 
| } | 
| let thirdParty = (contentType == Policy.type.ELEMHIDE ? false : isThirdParty(location, docDomain)); | 
| if (!match && Prefs.enabled && contentType in Policy.typeMask) | 
| { | 
| - match = defaultMatcher.matchesAny(locationText, Policy.typeMask[contentType], docDomain, thirdParty, sitekey); | 
| + match = defaultMatcher.matchesAny(locationText, Policy.typeMask[contentType], | 
| + docDomain, thirdParty, sitekey, nogeneric); | 
| if (match instanceof BlockingFilter && node.ownerDocument && !(contentType in Policy.nonVisual)) | 
| { | 
| let prefCollapse = (match.collapse != null ? match.collapse : !Prefs.fastcollapse); |