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

Unified Diff: lib/filterClasses.js

Issue 29550662: Issue 5735 - Use JS Map instead of Object for property domains of Filter objects (Closed) Base URL: https://github.com/adblockplus/adblockpluscore.git
Patch Set: address comments Created Sept. 21, 2017, 10:43 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 | « lib/elemHide.js ('k') | test/filterClasses.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/filterClasses.js
diff --git a/lib/filterClasses.js b/lib/filterClasses.js
index 417e4d8df3cc13fdd4daa0d6ac14489ad73b92cb..21db77c85832ec19368cadb5dabcbfe1b1800425 100644
--- a/lib/filterClasses.js
+++ b/lib/filterClasses.js
@@ -359,7 +359,7 @@ ActiveFilter.prototype = extend(Filter, {
/**
* Map containing domains that this filter should match on/not match
* on or null if the filter should match on all domains
- * @type {Object}
+ * @type {?Map.<string,boolean>}
*/
get domains()
{
@@ -383,11 +383,9 @@ ActiveFilter.prototype = extend(Filter, {
if (list.length == 1 && list[0][0] != "~")
{
// Fast track for the common one-domain scenario
- domains = Object.create(null);
- domains[""] = false;
if (this.ignoreTrailingDot)
list[0] = list[0].replace(/\.+$/, "");
- domains[list[0]] = true;
+ domains = new Map([["", false], [list[0], true]]);
}
else
{
@@ -413,12 +411,12 @@ ActiveFilter.prototype = extend(Filter, {
}
if (!domains)
- domains = Object.create(null);
+ domains = new Map();
- domains[domain] = include;
+ domains.set(domain, include);
}
if (domains)
- domains[""] = !hasIncludes;
+ domains.set("", !hasIncludes);
}
this.domainSource = null;
@@ -458,7 +456,7 @@ ActiveFilter.prototype = extend(Filter, {
// If the document has no host name, match only if the filter
// isn't restricted to specific domains
if (!docDomain)
- return this.domains[""];
+ return this.domains.get("");
if (this.ignoreTrailingDot)
docDomain = docDomain.replace(/\.+$/, "");
@@ -466,15 +464,16 @@ ActiveFilter.prototype = extend(Filter, {
while (true)
{
- if (docDomain in this.domains)
- return this.domains[docDomain];
+ let isDomainIncluded = this.domains.get(docDomain);
+ if (typeof isDomainIncluded != "undefined")
+ return isDomainIncluded;
let nextDot = docDomain.indexOf(".");
if (nextDot < 0)
break;
docDomain = docDomain.substr(nextDot + 1);
}
- return this.domains[""];
+ return this.domains.get("");
},
/**
@@ -484,16 +483,16 @@ ActiveFilter.prototype = extend(Filter, {
*/
isActiveOnlyOnDomain(docDomain)
{
- if (!docDomain || !this.domains || this.domains[""])
+ if (!docDomain || !this.domains || this.domains.get(""))
return false;
if (this.ignoreTrailingDot)
docDomain = docDomain.replace(/\.+$/, "");
docDomain = docDomain.toUpperCase();
- for (let domain in this.domains)
+ for (let [domain, isIncluded] of this.domains)
{
- if (this.domains[domain] && domain != docDomain)
+ if (isIncluded && domain != docDomain)
{
if (domain.length <= docDomain.length)
return false;
@@ -513,7 +512,7 @@ ActiveFilter.prototype = extend(Filter, {
isGeneric()
{
return !(this.sitekeys && this.sitekeys.length) &&
- (!this.domains || this.domains[""]);
+ (!this.domains || this.domains.get(""));
},
/**
« no previous file with comments | « lib/elemHide.js ('k') | test/filterClasses.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld