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

Unified Diff: lib/filterClasses.js

Issue 29383960: Issue 3143 - Filter elements with :-abp-has() (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore
Patch Set: More cleanup, more robust tests Created March 22, 2017, 2:42 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 | « chrome/content/elemHideEmulation.js ('k') | test/browser/elemHideEmulation.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/filterClasses.js
===================================================================
--- a/lib/filterClasses.js
+++ b/lib/filterClasses.js
@@ -982,17 +982,18 @@ ElemHideBase.fromText = function(text, d
// Note: The ElemHide.prototype.domainSeparator is duplicated here, if that
// changes this must be changed too.
if (domain && /(^|,)~?(,|$)/.test(domain))
return new InvalidFilter(text, "filter_invalid_domain");
if (isException)
return new ElemHideException(text, domain, selector);
- if (selector.indexOf("[-abp-properties") != -1)
+ if ((selector.indexOf("[-abp-properties") != -1) ||
+ (selector.indexOf(":has(") != -1))
{
// Element hiding emulation filters are inefficient so we need to make sure
// that they're only applied if they specify active domains
if (!/,[^~][^,.]*\.[^,]/.test("," + domain))
return new InvalidFilter(text, "filter_elemhideemulation_nodomain");
return new ElemHideEmulationFilter(text, domain, selector);
}
@@ -1042,14 +1043,18 @@ ElemHideException.prototype = extend(Ele
* @param {string} domains see ElemHideBase()
* @param {string} selector see ElemHideBase()
* @constructor
* @augments ElemHideBase
*/
function ElemHideEmulationFilter(text, domains, selector)
{
ElemHideBase.call(this, text, domains, selector);
+ this.cssPropFilter = (selector.indexOf("[-abp-properties") != -1);
+ this.pseudoClassHas = (selector.indexOf(":has(") != -1);
}
exports.ElemHideEmulationFilter = ElemHideEmulationFilter;
ElemHideEmulationFilter.prototype = extend(ElemHideBase, {
- type: "elemhideemulation"
+ type: "elemhideemulation",
+ cssPropFilter: false,
+ pseudoClassHas: false
});
« no previous file with comments | « chrome/content/elemHideEmulation.js ('k') | test/browser/elemHideEmulation.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld