| Index: lib/elemHide.js |
| diff --git a/lib/elemHide.js b/lib/elemHide.js |
| index b9d34e3064d0f7a76252505a8a670d3ed55f8d92..948f62aaa1c8b0af54dd57ef4b31008a03aff729 100644 |
| --- a/lib/elemHide.js |
| +++ b/lib/elemHide.js |
| @@ -43,23 +43,22 @@ var keyByFilter = Object.create(null); |
| var filtersByDomain = Object.create(null); |
| /** |
| - * Lookup table, filter keys by selector. (Only contains filters that have a |
| - * selector that is unconditionally matched for all domains.) |
| + * Lookup table, filter key by selector. (Only used for selectors that are |
| + * unconditionally matched for all domains.) |
| */ |
| -var filterKeysBySelector = Object.create(null); |
| +var filterKeyBySelector = Object.create(null); |
| /** |
| - * This array caches the keys of filterKeysBySelector table (selectors which |
| + * This array caches the keys of filterKeyBySelector table (selectors which |
| * unconditionally apply on all domains). It will be null if the cache needs to |
| * be rebuilt. |
| */ |
| var unconditionalSelectors = null; |
| /** |
| - * This array caches the values of filterKeysBySelector table (filterIds for |
| + * This array caches the values of filterKeyBySelector table (filterIds for |
| * selectors which unconditionally apply on all domains). It will be null if the |
| - * cache needs to be rebuilt. Note: Only the first filter key for each selector |
| - * is cached. |
| + * cache needs to be rebuilt. |
| */ |
| var unconditionalFilterKeys = null; |
| @@ -95,7 +94,7 @@ var ElemHide = exports.ElemHide = |
| filterByKey = []; |
| keyByFilter = Object.create(null); |
| filtersByDomain = Object.create(null); |
| - filterKeysBySelector = Object.create(null); |
| + filterKeyBySelector = Object.create(null); |
| unconditionalSelectors = unconditionalFilterKeys = null; |
| knownExceptions = Object.create(null); |
| exceptions = Object.create(null); |
| @@ -137,12 +136,11 @@ var ElemHide = exports.ElemHide = |
| // If this is the first exception for a previously unconditionally |
| // applied element hiding selector we need to take care to update the |
| // lookups. |
| - let filterKeys = filterKeysBySelector[selector]; |
| - if (filterKeys) |
| + let filterKey = filterKeyBySelector[selector]; |
| + if (filterKey) |
| { |
| - for (let filterKey of filterKeys) |
| - this._addToFiltersByDomain(filterKey, filterByKey[filterKey]); |
| - delete filterKeysBySelector[selector]; |
| + this._addToFiltersByDomain(filterKey, filterByKey[filterKey]); |
| + delete filterKeyBySelector[selector]; |
| unconditionalSelectors = unconditionalFilterKeys = null; |
| } |
| @@ -159,16 +157,8 @@ var ElemHide = exports.ElemHide = |
| if (!(filter.domains || filter.selector in exceptions)) |
| { |
| // The new filter's selector is unconditionally applied to all domains |
| - let filterKeys = filterKeysBySelector[filter.selector]; |
| - if (filterKeys) |
| - { |
| - filterKeys.push(key); |
| - } |
| - else |
| - { |
| - filterKeysBySelector[filter.selector] = [key]; |
| - unconditionalSelectors = unconditionalFilterKeys = null; |
| - } |
| + filterKeyBySelector[filter.selector] = key; |
| + unconditionalSelectors = unconditionalFilterKeys = null; |
| } |
| else |
| { |
| @@ -182,25 +172,11 @@ var ElemHide = exports.ElemHide = |
| _removeFilterKey: function(key, filter) |
| { |
| - let filterKeys = filterKeysBySelector[filter.selector]; |
| - if (filterKeys) |
| + if (filterKeyBySelector[filter.selector] == key) |
| { |
| - let index = filterKeys.indexOf(key); |
| - if (index >= 0) |
| - { |
| - if (filterKeys.length > 1) |
| - { |
| - filterKeys.splice(index, 1); |
| - if (index == 0) |
| - unconditionalFilterKeys = null; |
| - } |
| - else |
| - { |
| - delete filterKeysBySelector[filter.selector]; |
| - unconditionalSelectors = unconditionalFilterKeys = null; |
| - } |
| - return; |
| - } |
| + delete filterKeyBySelector[filter.selector]; |
| + unconditionalSelectors = unconditionalFilterKeys = null; |
| + return; |
| } |
| // We haven't found this filter in unconditional filters, look in |
| @@ -304,7 +280,7 @@ var ElemHide = exports.ElemHide = |
| getUnconditionalSelectors: function() |
| { |
| if (!unconditionalSelectors) |
| - unconditionalSelectors = Object.keys(filterKeysBySelector); |
| + unconditionalSelectors = Object.keys(filterKeyBySelector); |
| return unconditionalSelectors.slice(); |
| }, |
| @@ -320,7 +296,7 @@ var ElemHide = exports.ElemHide = |
| let selectors = this.getUnconditionalSelectors(); |
| unconditionalFilterKeys = []; |
| for (let selector of selectors) |
| - unconditionalFilterKeys.push(filterKeysBySelector[selector][0]); |
| + unconditionalFilterKeys.push(filterKeyBySelector[selector]); |
| } |
| return unconditionalFilterKeys.slice(); |
| }, |