| Index: lib/filterListener.js |
| =================================================================== |
| --- a/lib/filterListener.js |
| +++ b/lib/filterListener.js |
| @@ -129,25 +129,28 @@ |
| }); |
| } |
| init(); |
| /** |
| * Notifies Matcher instances or ElemHide object about a new filter |
| * if necessary. |
| * @param {Filter} filter filter that has been added |
| + * @param {?Array.<Subscription>} [subscriptions] subscriptions to which the |
|
Manish Jethani
2019/02/26 12:29:56
A filter needs only _one_ enabled subscription for
|
| + * filter belongs |
| */ |
| -function addFilter(filter) |
| +function addFilter(filter, subscriptions = null) |
| { |
| if (!(filter instanceof ActiveFilter) || filter.disabled) |
| return; |
| let hasEnabled = false; |
| let allowSnippets = false; |
| - for (let subscription of filter.subscriptions()) |
| + for (let subscription of subscriptions || |
| + filterStorage.subscriptions(filter.text)) |
| { |
| if (!subscription.disabled) |
| { |
| hasEnabled = true; |
| // Allow snippets to be executed only by the circumvention lists or the |
| // user's own filters. |
| if (subscription.type == "circumvention" || |
| @@ -185,17 +188,17 @@ |
| function removeFilter(filter) |
| { |
| if (!(filter instanceof ActiveFilter)) |
| return; |
| if (!filter.disabled) |
| { |
| let hasEnabled = false; |
| - for (let subscription of filter.subscriptions()) |
| + for (let subscription of filterStorage.subscriptions(filter.text)) |
| { |
| if (!subscription.disabled) |
| { |
| hasEnabled = true; |
| break; |
| } |
| } |
| if (hasEnabled) |
| @@ -219,17 +222,17 @@ |
| function onSubscriptionAdded(subscription) |
| { |
| FilterListener.setDirty(1); |
| if (!subscription.disabled) |
| { |
| for (let text of subscription.filterText()) |
| - addFilter(Filter.fromText(text)); |
| + addFilter(Filter.fromText(text), [subscription]); |
| } |
| } |
| function onSubscriptionRemoved(subscription) |
| { |
| FilterListener.setDirty(1); |
| if (!subscription.disabled) |
| @@ -243,17 +246,17 @@ |
| { |
| FilterListener.setDirty(1); |
| if (filterStorage.knownSubscriptions.has(subscription.url)) |
| { |
| if (newValue == false) |
| { |
| for (let text of subscription.filterText()) |
| - addFilter(Filter.fromText(text)); |
| + addFilter(Filter.fromText(text), [subscription]); |
| } |
| else |
| { |
| for (let text of subscription.filterText()) |
| removeFilter(Filter.fromText(text)); |
| } |
| } |
| } |
| @@ -264,17 +267,17 @@ |
| if (!subscription.disabled && |
| filterStorage.knownSubscriptions.has(subscription.url)) |
| { |
| for (let text of oldFilterText) |
| removeFilter(Filter.fromText(text)); |
| for (let text of subscription.filterText()) |
| - addFilter(Filter.fromText(text)); |
| + addFilter(Filter.fromText(text), [subscription]); |
| } |
| } |
| function onFilterHitCount(filter, newValue) |
| { |
| if (newValue == 0) |
| FilterListener.setDirty(0); |
| else |
| @@ -327,17 +330,17 @@ |
| ElemHideExceptions.clear(); |
| Snippets.clear(); |
| for (let subscription of filterStorage.subscriptions()) |
| { |
| if (!subscription.disabled) |
| { |
| for (let text of subscription.filterText()) |
| - addFilter(Filter.fromText(text)); |
| + addFilter(Filter.fromText(text), [subscription]); |
| } |
| } |
| } |
| function onSave() |
| { |
| isDirty = 0; |
| } |