| Index: lib/filterListener.js | 
| =================================================================== | 
| --- a/lib/filterListener.js | 
| +++ b/lib/filterListener.js | 
| @@ -27,17 +27,17 @@ | 
| const {filterStorage} = require("./filterStorage"); | 
| const {filterNotifier} = require("./filterNotifier"); | 
| const {ElemHide} = require("./elemHide"); | 
| const {ElemHideEmulation} = require("./elemHideEmulation"); | 
| const {ElemHideExceptions} = require("./elemHideExceptions"); | 
| const {Snippets} = require("./snippets"); | 
| const {defaultMatcher} = require("./matcher"); | 
| -const {ActiveFilter, RegExpFilter, | 
| +const {Filter, ActiveFilter, RegExpFilter, | 
| ElemHideBase, ElemHideFilter, ElemHideEmulationFilter, | 
| SnippetFilter} = require("./filterClasses"); | 
| const {SpecialSubscription} = require("./subscriptionClasses"); | 
| const {Prefs} = require("prefs"); | 
| /** | 
| * Increases on filter changes, filters will be saved if it exceeds 1. | 
| * @type {number} | 
| @@ -234,65 +234,69 @@ | 
| let current = (Math.random() * len) | 0; | 
| let step; | 
| do | 
| { | 
| step = primes[(Math.random() * primes.length) | 0]; | 
| } while (len % step == 0); | 
| for (let i = 0; i < len; i++, current = (current + step) % len) | 
| - addFilter(subscription.filterAt(current)); | 
| + { | 
| + let filter = Filter.fromText(subscription.filterTextAt(current)); | 
| + filter.addSubscription(subscription); | 
| + addFilter(filter); | 
| + } | 
| } | 
| function onSubscriptionAdded(subscription) | 
| { | 
| FilterListener.setDirty(1); | 
| if (!subscription.disabled) | 
| addSubscriptionFilters(subscription); | 
| } | 
| function onSubscriptionRemoved(subscription) | 
| { | 
| FilterListener.setDirty(1); | 
| if (!subscription.disabled) | 
| { | 
| - for (let filter of subscription.filters()) | 
| - removeFilter(filter); | 
| + for (let text of subscription.filterText()) | 
| + removeFilter(Filter.fromText(text)); | 
| 
 
hub
2018/11/30 01:18:07
here remove filter takes longer since we have to g
 
Manish Jethani
2018/11/30 07:28:05
Yes, this is a cost of this change, and by itself
 
hub
2019/01/03 20:22:48
Acknowledged.
 
 | 
| } | 
| } | 
| function onSubscriptionDisabled(subscription, newValue) | 
| { | 
| FilterListener.setDirty(1); | 
| if (filterStorage.knownSubscriptions.has(subscription.url)) | 
| { | 
| if (newValue == false) | 
| { | 
| addSubscriptionFilters(subscription); | 
| } | 
| else | 
| { | 
| - for (let filter of subscription.filters()) | 
| - removeFilter(filter); | 
| + for (let text of subscription.filterText()) | 
| + removeFilter(Filter.fromText(text)); | 
| 
 
hub
2018/11/30 01:18:07
...so does disable subscription.
 
Manish Jethani
2018/11/30 07:28:05
See above.
 
 | 
| } | 
| } | 
| } | 
| -function onSubscriptionUpdated(subscription, oldFilters) | 
| +function onSubscriptionUpdated(subscription, oldFilterText) | 
| { | 
| FilterListener.setDirty(1); | 
| if (!subscription.disabled && | 
| filterStorage.knownSubscriptions.has(subscription.url)) | 
| { | 
| - for (let filter of oldFilters) | 
| - removeFilter(filter); | 
| + for (let text of oldFilterText) | 
| + removeFilter(Filter.fromText(text)); | 
| addSubscriptionFilters(subscription); | 
| } | 
| } | 
| function onFilterHitCount(filter, newValue) | 
| { | 
| if (newValue == 0) |