OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-present eyeo GmbH | 3 * Copyright (C) 2006-present eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
16 */ | 16 */ |
17 | 17 |
18 "use strict"; | 18 "use strict"; |
19 | 19 |
| 20 const assert = require("assert"); |
20 const {createSandbox} = require("./_common"); | 21 const {createSandbox} = require("./_common"); |
21 let sandboxedRequire = null; | 22 let sandboxedRequire = null; |
22 | 23 |
23 let filterStorage = null; | 24 let filterStorage = null; |
24 let Subscription = null; | 25 let Subscription = null; |
25 let Filter = null; | 26 let Filter = null; |
26 let defaultMatcher = null; | 27 let defaultMatcher = null; |
27 let SpecialSubscription = null; | 28 let SpecialSubscription = null; |
28 | 29 |
29 exports.setUp = function(callback) | 30 describe("Filter Listener", () => |
30 { | 31 { |
31 sandboxedRequire = createSandbox({ | 32 beforeEach(() => |
32 extraExports: { | 33 { |
33 elemHide: ["knownFilters"], | 34 sandboxedRequire = createSandbox({ |
34 elemHideEmulation: ["filters"], | 35 extraExports: { |
35 elemHideExceptions: ["knownExceptions"] | 36 elemHide: ["knownFilters"], |
36 } | 37 elemHideEmulation: ["filters"], |
37 }); | 38 elemHideExceptions: ["knownExceptions"] |
38 | 39 } |
39 // We need to require the filterListener module so that filter changes will be | 40 }); |
40 // noticed, even though we don't directly use the module here. | 41 |
41 sandboxedRequire("../lib/filterListener"); | 42 // We need to require the filterListener module so that filter changes will
be |
42 | 43 // noticed, even though we don't directly use the module here. |
43 ( | 44 sandboxedRequire("../lib/filterListener"); |
44 {filterStorage} = sandboxedRequire("../lib/filterStorage"), | 45 |
45 {Subscription, SpecialSubscription} = sandboxedRequire("../lib/subscriptionC
lasses"), | 46 ( |
46 {Filter} = sandboxedRequire("../lib/filterClasses"), | 47 {filterStorage} = sandboxedRequire("../lib/filterStorage"), |
47 {defaultMatcher} = sandboxedRequire("../lib/matcher") | 48 {Subscription, SpecialSubscription} = sandboxedRequire("../lib/subscriptio
nClasses"), |
48 ); | 49 {Filter} = sandboxedRequire("../lib/filterClasses"), |
49 | 50 {defaultMatcher} = sandboxedRequire("../lib/matcher") |
50 filterStorage.addSubscription(Subscription.fromURL("~fl~")); | 51 ); |
51 filterStorage.addSubscription(Subscription.fromURL("~wl~")); | 52 |
52 filterStorage.addSubscription(Subscription.fromURL("~eh~")); | 53 filterStorage.addSubscription(Subscription.fromURL("~fl~")); |
53 | 54 filterStorage.addSubscription(Subscription.fromURL("~wl~")); |
54 Subscription.fromURL("~fl~").defaults = ["blocking"]; | 55 filterStorage.addSubscription(Subscription.fromURL("~eh~")); |
55 Subscription.fromURL("~wl~").defaults = ["whitelist"]; | 56 |
56 Subscription.fromURL("~eh~").defaults = ["elemhide"]; | 57 Subscription.fromURL("~fl~").defaults = ["blocking"]; |
57 | 58 Subscription.fromURL("~wl~").defaults = ["whitelist"]; |
58 callback(); | 59 Subscription.fromURL("~eh~").defaults = ["elemhide"]; |
59 }; | 60 }); |
60 | 61 |
61 function checkKnownFilters(test, text, expected) | 62 function checkKnownFilters(text, expected) |
62 { | 63 { |
63 let result = {}; | 64 let result = {}; |
64 for (let type of ["blacklist", "whitelist"]) | 65 for (let type of ["blacklist", "whitelist"]) |
65 { | |
66 let matcher = defaultMatcher["_" + type]; | |
67 let filters = []; | |
68 for (let map of [matcher._simpleFiltersByKeyword, | |
69 matcher._complexFiltersByKeyword]) | |
70 { | 66 { |
71 for (let [keyword, set] of map) | 67 let matcher = defaultMatcher["_" + type]; |
| 68 let filters = []; |
| 69 for (let map of [matcher._simpleFiltersByKeyword, |
| 70 matcher._complexFiltersByKeyword]) |
72 { | 71 { |
73 for (let filter of set) | 72 for (let [keyword, set] of map) |
74 { | 73 { |
75 test.equal(matcher.findKeyword(filter), keyword, | 74 for (let filter of set) |
76 "Keyword of filter " + filter.text); | 75 { |
77 filters.push(filter.text); | 76 assert.equal(matcher.findKeyword(filter), keyword, |
| 77 "Keyword of filter " + filter.text); |
| 78 filters.push(filter.text); |
| 79 } |
78 } | 80 } |
79 } | 81 } |
| 82 result[type] = filters; |
80 } | 83 } |
81 result[type] = filters; | 84 |
| 85 let elemHide = sandboxedRequire("../lib/elemHide"); |
| 86 result.elemhide = []; |
| 87 for (let filter of elemHide.knownFilters) |
| 88 result.elemhide.push(filter.text); |
| 89 |
| 90 let elemHideExceptions = sandboxedRequire("../lib/elemHideExceptions"); |
| 91 result.elemhideexception = []; |
| 92 for (let exception of elemHideExceptions.knownExceptions) |
| 93 result.elemhideexception.push(exception.text); |
| 94 |
| 95 let elemHideEmulation = sandboxedRequire("../lib/elemHideEmulation"); |
| 96 result.elemhideemulation = []; |
| 97 for (let filter of elemHideEmulation.filters) |
| 98 result.elemhideemulation.push(filter.text); |
| 99 |
| 100 let {snippets} = sandboxedRequire("../lib/snippets"); |
| 101 result.snippets = []; |
| 102 for (let filter of snippets._filters) |
| 103 result.snippets.push(filter.text); |
| 104 |
| 105 let types = ["blacklist", "whitelist", "elemhide", "elemhideexception", |
| 106 "elemhideemulation", "snippets"]; |
| 107 for (let type of types) |
| 108 { |
| 109 if (!(type in expected)) |
| 110 expected[type] = []; |
| 111 else |
| 112 expected[type].sort(); |
| 113 result[type].sort(); |
| 114 } |
| 115 |
| 116 assert.deepEqual(result, expected, text); |
82 } | 117 } |
83 | 118 |
84 let elemHide = sandboxedRequire("../lib/elemHide"); | 119 it("Add and remove filters", () => |
85 result.elemhide = []; | 120 { |
86 for (let filter of elemHide.knownFilters) | 121 let filter1 = Filter.fromText("filter1"); |
87 result.elemhide.push(filter.text); | 122 let filter2 = Filter.fromText("@@filter2"); |
88 | 123 let filter3 = Filter.fromText("##filter3"); |
89 let elemHideExceptions = sandboxedRequire("../lib/elemHideExceptions"); | 124 let filter4 = Filter.fromText("!filter4"); |
90 result.elemhideexception = []; | 125 let filter5 = Filter.fromText("#@#filter5"); |
91 for (let exception of elemHideExceptions.knownExceptions) | 126 let filter6 = Filter.fromText("example.com#?#:-abp-properties(filter6')"); |
92 result.elemhideexception.push(exception.text); | 127 let filter7 = Filter.fromText("example.com#@#[-abp-properties='filter7']"); |
93 | 128 |
94 let elemHideEmulation = sandboxedRequire("../lib/elemHideEmulation"); | 129 filterStorage.addFilter(filter1); |
95 result.elemhideemulation = []; | 130 checkKnownFilters("add filter1", {blacklist: [filter1.text]}); |
96 for (let filter of elemHideEmulation.filters) | 131 filterStorage.addFilter(filter2); |
97 result.elemhideemulation.push(filter.text); | 132 checkKnownFilters("add @@filter2", {blacklist: [filter1.text], whitelist: [f
ilter2.text]}); |
98 | 133 filterStorage.addFilter(filter3); |
99 let {snippets} = sandboxedRequire("../lib/snippets"); | 134 checkKnownFilters("add ##filter3", {blacklist: [filter1.text], whitelist: [f
ilter2.text], elemhide: [filter3.text]}); |
100 result.snippets = []; | 135 filterStorage.addFilter(filter4); |
101 for (let filter of snippets._filters) | 136 checkKnownFilters("add !filter4", {blacklist: [filter1.text], whitelist: [fi
lter2.text], elemhide: [filter3.text]}); |
102 result.snippets.push(filter.text); | 137 filterStorage.addFilter(filter5); |
103 | 138 checkKnownFilters("add #@#filter5", {blacklist: [filter1.text], whitelist: [
filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text]}); |
104 let types = ["blacklist", "whitelist", "elemhide", "elemhideexception", | 139 filterStorage.addFilter(filter6); |
105 "elemhideemulation", "snippets"]; | 140 checkKnownFilters("add example.com##:-abp-properties(filter6)", {blacklist:
[filter1.text], whitelist: [filter2.text], elemhide: [filter3.text], elemhideexc
eption: [filter5.text], elemhideemulation: [filter6.text]}); |
106 for (let type of types) | 141 filterStorage.addFilter(filter7); |
107 { | 142 checkKnownFilters("add example.com#@#[-abp-properties='filter7']", {blacklis
t: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text], elemhide
exception: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}); |
108 if (!(type in expected)) | 143 |
109 expected[type] = []; | 144 filterStorage.removeFilter(filter1); |
110 else | 145 checkKnownFilters("remove filter1", {whitelist: [filter2.text], elemhide: [f
ilter3.text], elemhideexception: [filter5.text, filter7.text], elemhideemulation
: [filter6.text]}); |
111 expected[type].sort(); | 146 filter2.disabled = true; |
112 result[type].sort(); | 147 checkKnownFilters("disable filter2", {elemhide: [filter3.text], elemhideexce
ption: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}); |
113 } | 148 filterStorage.removeFilter(filter2); |
114 | 149 checkKnownFilters("remove filter2", {elemhide: [filter3.text], elemhideexcep
tion: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}); |
115 test.deepEqual(result, expected, text); | 150 filterStorage.removeFilter(filter4); |
116 } | 151 checkKnownFilters("remove filter4", {elemhide: [filter3.text], elemhideexcep
tion: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}); |
117 | 152 }); |
118 exports.testAddingAndRemovingFilters = function(test) | 153 |
119 { | 154 it("Disabling / Enabling Filters not in the list", () => |
120 let filter1 = Filter.fromText("filter1"); | 155 { |
121 let filter2 = Filter.fromText("@@filter2"); | 156 let filter1 = Filter.fromText("filter1"); |
122 let filter3 = Filter.fromText("##filter3"); | 157 let filter2 = Filter.fromText("@@filter2"); |
123 let filter4 = Filter.fromText("!filter4"); | 158 let filter3 = Filter.fromText("##filter3"); |
124 let filter5 = Filter.fromText("#@#filter5"); | 159 let filter4 = Filter.fromText("#@#filter4"); |
125 let filter6 = Filter.fromText("example.com#?#:-abp-properties(filter6')"); | 160 let filter5 = Filter.fromText("example.com#?#:-abp-properties(filter5)"); |
126 let filter7 = Filter.fromText("example.com#@#[-abp-properties='filter7']"); | 161 let filter6 = Filter.fromText("example.com#@#[-abp-properties='filter6']"); |
127 | 162 |
128 filterStorage.addFilter(filter1); | 163 filter1.disabled = true; |
129 checkKnownFilters(test, "add filter1", {blacklist: [filter1.text]}); | 164 checkKnownFilters("disable filter1 while not in list", {}); |
130 filterStorage.addFilter(filter2); | 165 filter1.disabled = false; |
131 checkKnownFilters(test, "add @@filter2", {blacklist: [filter1.text], whitelist
: [filter2.text]}); | 166 checkKnownFilters("enable filter1 while not in list", {}); |
132 filterStorage.addFilter(filter3); | 167 |
133 checkKnownFilters(test, "add ##filter3", {blacklist: [filter1.text], whitelist
: [filter2.text], elemhide: [filter3.text]}); | 168 filter2.disabled = true; |
134 filterStorage.addFilter(filter4); | 169 checkKnownFilters("disable @@filter2 while not in list", {}); |
135 checkKnownFilters(test, "add !filter4", {blacklist: [filter1.text], whitelist:
[filter2.text], elemhide: [filter3.text]}); | 170 filter2.disabled = false; |
136 filterStorage.addFilter(filter5); | 171 checkKnownFilters("enable @@filter2 while not in list", {}); |
137 checkKnownFilters(test, "add #@#filter5", {blacklist: [filter1.text], whitelis
t: [filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text]})
; | 172 |
138 filterStorage.addFilter(filter6); | 173 filter3.disabled = true; |
139 checkKnownFilters(test, "add example.com##:-abp-properties(filter6)", {blackli
st: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text], elemhid
eexception: [filter5.text], elemhideemulation: [filter6.text]}); | 174 checkKnownFilters("disable ##filter3 while not in list", {}); |
140 filterStorage.addFilter(filter7); | 175 filter3.disabled = false; |
141 checkKnownFilters(test, "add example.com#@#[-abp-properties='filter7']", {blac
klist: [filter1.text], whitelist: [filter2.text], elemhide: [filter3.text], elem
hideexception: [filter5.text, filter7.text], elemhideemulation: [filter6.text]})
; | 176 checkKnownFilters("enable ##filter3 while not in list", {}); |
142 | 177 |
143 filterStorage.removeFilter(filter1); | 178 filter4.disabled = true; |
144 checkKnownFilters(test, "remove filter1", {whitelist: [filter2.text], elemhide
: [filter3.text], elemhideexception: [filter5.text, filter7.text], elemhideemula
tion: [filter6.text]}); | 179 checkKnownFilters("disable #@#filter4 while not in list", {}); |
145 filter2.disabled = true; | 180 filter4.disabled = false; |
146 checkKnownFilters(test, "disable filter2", {elemhide: [filter3.text], elemhide
exception: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}); | 181 checkKnownFilters("enable #@#filter4 while not in list", {}); |
147 filterStorage.removeFilter(filter2); | 182 |
148 checkKnownFilters(test, "remove filter2", {elemhide: [filter3.text], elemhidee
xception: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}); | 183 filter5.disabled = true; |
149 filterStorage.removeFilter(filter4); | 184 checkKnownFilters("disable example.com#?#:-abp-properties(filter5) while not
in list", {}); |
150 checkKnownFilters(test, "remove filter4", {elemhide: [filter3.text], elemhidee
xception: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}); | 185 filter5.disabled = false; |
151 | 186 checkKnownFilters("enable example.com#?#:-abp-properties(filter5) while not
in list", {}); |
152 test.done(); | 187 |
153 }; | 188 filter6.disabled = true; |
154 | 189 checkKnownFilters("disable example.com#@#[-abp-properties='filter6'] while n
ot in list", {}); |
155 exports.testDisablingEnablingFiltersNotInTheList = function(test) | 190 filter6.disabled = false; |
156 { | 191 checkKnownFilters("enable example.com#@#[-abp-properties='filter6'] while no
t in list", {}); |
157 let filter1 = Filter.fromText("filter1"); | 192 }); |
158 let filter2 = Filter.fromText("@@filter2"); | 193 |
159 let filter3 = Filter.fromText("##filter3"); | 194 it("Filter subscription Operations", () => |
160 let filter4 = Filter.fromText("#@#filter4"); | 195 { |
161 let filter5 = Filter.fromText("example.com#?#:-abp-properties(filter5)"); | 196 let filter1 = Filter.fromText("filter1"); |
162 let filter6 = Filter.fromText("example.com#@#[-abp-properties='filter6']"); | 197 let filter2 = Filter.fromText("@@filter2"); |
163 | 198 filter2.disabled = true; |
164 filter1.disabled = true; | 199 let filter3 = Filter.fromText("##filter3"); |
165 checkKnownFilters(test, "disable filter1 while not in list", {}); | 200 let filter4 = Filter.fromText("!filter4"); |
166 filter1.disabled = false; | 201 let filter5 = Filter.fromText("#@#filter5"); |
167 checkKnownFilters(test, "enable filter1 while not in list", {}); | 202 let filter6 = Filter.fromText("example.com#?#:-abp-properties(filter6)"); |
168 | 203 let filter7 = Filter.fromText("example.com#@#[-abp-properties='filter7']"); |
169 filter2.disabled = true; | 204 |
170 checkKnownFilters(test, "disable @@filter2 while not in list", {}); | 205 let subscription = Subscription.fromURL("http://test1/"); |
171 filter2.disabled = false; | 206 subscription.addFilter(filter1); |
172 checkKnownFilters(test, "enable @@filter2 while not in list", {}); | 207 subscription.addFilter(filter2); |
173 | 208 subscription.addFilter(filter3); |
174 filter3.disabled = true; | 209 subscription.addFilter(filter4); |
175 checkKnownFilters(test, "disable ##filter3 while not in list", {}); | 210 subscription.addFilter(filter5); |
176 filter3.disabled = false; | 211 subscription.addFilter(filter6); |
177 checkKnownFilters(test, "enable ##filter3 while not in list", {}); | 212 subscription.addFilter(filter7); |
178 | 213 |
179 filter4.disabled = true; | 214 filterStorage.addSubscription(subscription); |
180 checkKnownFilters(test, "disable #@#filter4 while not in list", {}); | 215 checkKnownFilters("add subscription with filter1, @@filter2, ##filter3, !fil
ter4, #@#filter5, example.com#?#:-abp-properties(filter6), example.com#@#[-abp-p
roperties='filter7']", {blacklist: [filter1.text], elemhide: [filter3.text], ele
mhideexception: [filter5.text, filter7.text], elemhideemulation: [filter6.text]}
); |
181 filter4.disabled = false; | 216 |
182 checkKnownFilters(test, "enable #@#filter4 while not in list", {}); | 217 filter2.disabled = false; |
183 | 218 checkKnownFilters("enable @@filter2", {blacklist: [filter1.text], whitelist:
[filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text, fil
ter7.text], elemhideemulation: [filter6.text]}); |
184 filter5.disabled = true; | 219 |
185 checkKnownFilters(test, "disable example.com#?#:-abp-properties(filter5) while
not in list", {}); | 220 filterStorage.addFilter(filter1); |
186 filter5.disabled = false; | 221 checkKnownFilters("add filter1", {blacklist: [filter1.text], whitelist: [fil
ter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text, filter7.
text], elemhideemulation: [filter6.text]}); |
187 checkKnownFilters(test, "enable example.com#?#:-abp-properties(filter5) while
not in list", {}); | 222 |
188 | 223 filterStorage.updateSubscriptionFilters(subscription, [filter4.text]); |
189 filter6.disabled = true; | 224 checkKnownFilters("change subscription filters to filter4", {blacklist: [fil
ter1.text]}); |
190 checkKnownFilters(test, "disable example.com#@#[-abp-properties='filter6'] whi
le not in list", {}); | 225 |
191 filter6.disabled = false; | 226 filterStorage.removeFilter(filter1); |
192 checkKnownFilters(test, "enable example.com#@#[-abp-properties='filter6'] whil
e not in list", {}); | 227 checkKnownFilters("remove filter1", {}); |
193 | 228 |
194 test.done(); | 229 filterStorage.updateSubscriptionFilters(subscription, [filter1.text, filter2
.text]); |
195 }; | 230 checkKnownFilters("change subscription filters to filter1, filter2", {blackl
ist: [filter1.text], whitelist: [filter2.text]}); |
196 | 231 |
197 exports.testFilterSubscriptionOperations = function(test) | 232 filter1.disabled = true; |
198 { | 233 checkKnownFilters("disable filter1", {whitelist: [filter2.text]}); |
199 let filter1 = Filter.fromText("filter1"); | 234 filter2.disabled = true; |
200 let filter2 = Filter.fromText("@@filter2"); | 235 checkKnownFilters("disable filter2", {}); |
201 filter2.disabled = true; | 236 filter1.disabled = false; |
202 let filter3 = Filter.fromText("##filter3"); | 237 filter2.disabled = false; |
203 let filter4 = Filter.fromText("!filter4"); | 238 checkKnownFilters("enable filter1, filter2", {blacklist: [filter1.text], whi
telist: [filter2.text]}); |
204 let filter5 = Filter.fromText("#@#filter5"); | 239 |
205 let filter6 = Filter.fromText("example.com#?#:-abp-properties(filter6)"); | 240 filterStorage.addFilter(filter1); |
206 let filter7 = Filter.fromText("example.com#@#[-abp-properties='filter7']"); | 241 checkKnownFilters("add filter1", {blacklist: [filter1.text], whitelist: [fil
ter2.text]}); |
207 | 242 |
208 let subscription = Subscription.fromURL("http://test1/"); | 243 subscription.disabled = true; |
209 subscription.addFilter(filter1); | 244 checkKnownFilters("disable subscription", {blacklist: [filter1.text]}); |
210 subscription.addFilter(filter2); | 245 |
211 subscription.addFilter(filter3); | 246 filterStorage.removeSubscription(subscription); |
212 subscription.addFilter(filter4); | 247 checkKnownFilters("remove subscription", {blacklist: [filter1.text]}); |
213 subscription.addFilter(filter5); | 248 |
214 subscription.addFilter(filter6); | 249 filterStorage.addSubscription(subscription); |
215 subscription.addFilter(filter7); | 250 checkKnownFilters("add subscription", {blacklist: [filter1.text]}); |
216 | 251 |
217 filterStorage.addSubscription(subscription); | 252 subscription.disabled = false; |
218 checkKnownFilters(test, "add subscription with filter1, @@filter2, ##filter3,
!filter4, #@#filter5, example.com#?#:-abp-properties(filter6), example.com#@#[-a
bp-properties='filter7']", {blacklist: [filter1.text], elemhide: [filter3.text],
elemhideexception: [filter5.text, filter7.text], elemhideemulation: [filter6.te
xt]}); | 253 checkKnownFilters("enable subscription", {blacklist: [filter1.text], whiteli
st: [filter2.text]}); |
219 | 254 |
220 filter2.disabled = false; | 255 subscription.disabled = true; |
221 checkKnownFilters(test, "enable @@filter2", {blacklist: [filter1.text], whitel
ist: [filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text,
filter7.text], elemhideemulation: [filter6.text]}); | 256 checkKnownFilters("disable subscription", {blacklist: [filter1.text]}); |
222 | 257 |
223 filterStorage.addFilter(filter1); | 258 filterStorage.addFilter(filter2); |
224 checkKnownFilters(test, "add filter1", {blacklist: [filter1.text], whitelist:
[filter2.text], elemhide: [filter3.text], elemhideexception: [filter5.text, filt
er7.text], elemhideemulation: [filter6.text]}); | 259 checkKnownFilters("add filter2", {blacklist: [filter1.text], whitelist: [fil
ter2.text]}); |
225 | 260 |
226 filterStorage.updateSubscriptionFilters(subscription, [filter4.text]); | 261 filterStorage.removeFilter(filter2); |
227 checkKnownFilters(test, "change subscription filters to filter4", {blacklist:
[filter1.text]}); | 262 checkKnownFilters("remove filter2", {blacklist: [filter1.text]}); |
228 | 263 |
229 filterStorage.removeFilter(filter1); | 264 subscription.disabled = false; |
230 checkKnownFilters(test, "remove filter1", {}); | 265 checkKnownFilters("enable subscription", {blacklist: [filter1.text], whiteli
st: [filter2.text]}); |
231 | 266 |
232 filterStorage.updateSubscriptionFilters(subscription, [filter1.text, filter2.t
ext]); | 267 filterStorage.removeSubscription(subscription); |
233 checkKnownFilters(test, "change subscription filters to filter1, filter2", {bl
acklist: [filter1.text], whitelist: [filter2.text]}); | 268 checkKnownFilters("remove subscription", {blacklist: [filter1.text]}); |
234 | 269 }); |
235 filter1.disabled = true; | 270 |
236 checkKnownFilters(test, "disable filter1", {whitelist: [filter2.text]}); | 271 it("Filter Group operations", () => |
237 filter2.disabled = true; | 272 { |
238 checkKnownFilters(test, "disable filter2", {}); | 273 let filter1 = Filter.fromText("filter1"); |
239 filter1.disabled = false; | 274 let filter2 = Filter.fromText("@@filter2"); |
240 filter2.disabled = false; | 275 let filter3 = Filter.fromText("filter3"); |
241 checkKnownFilters(test, "enable filter1, filter2", {blacklist: [filter1.text],
whitelist: [filter2.text]}); | 276 let filter4 = Filter.fromText("@@filter4"); |
242 | 277 let filter5 = Filter.fromText("!filter5"); |
243 filterStorage.addFilter(filter1); | 278 |
244 checkKnownFilters(test, "add filter1", {blacklist: [filter1.text], whitelist:
[filter2.text]}); | 279 let subscription = Subscription.fromURL("http://test1/"); |
245 | 280 subscription.addFilter(filter1); |
246 subscription.disabled = true; | 281 subscription.addFilter(filter2); |
247 checkKnownFilters(test, "disable subscription", {blacklist: [filter1.text]}); | 282 |
248 | 283 filterStorage.addSubscription(subscription); |
249 filterStorage.removeSubscription(subscription); | 284 filterStorage.addFilter(filter1); |
250 checkKnownFilters(test, "remove subscription", {blacklist: [filter1.text]}); | 285 checkKnownFilters("initial setup", {blacklist: [filter1.text], whitelist: [f
ilter2.text]}); |
251 | 286 |
252 filterStorage.addSubscription(subscription); | 287 let subscription2 = Subscription.fromURL("~fl~"); |
253 checkKnownFilters(test, "add subscription", {blacklist: [filter1.text]}); | 288 subscription2.disabled = true; |
254 | 289 checkKnownFilters("disable blocking filters", {blacklist: [filter1.text], wh
itelist: [filter2.text]}); |
255 subscription.disabled = false; | 290 |
256 checkKnownFilters(test, "enable subscription", {blacklist: [filter1.text], whi
telist: [filter2.text]}); | 291 filterStorage.removeSubscription(subscription); |
257 | 292 checkKnownFilters("remove subscription", {}); |
258 subscription.disabled = true; | 293 |
259 checkKnownFilters(test, "disable subscription", {blacklist: [filter1.text]}); | 294 subscription2.disabled = false; |
260 | 295 checkKnownFilters("enable blocking filters", {blacklist: [filter1.text]}); |
261 filterStorage.addFilter(filter2); | 296 |
262 checkKnownFilters(test, "add filter2", {blacklist: [filter1.text], whitelist:
[filter2.text]}); | 297 let subscription3 = Subscription.fromURL("~wl~"); |
263 | 298 subscription3.disabled = true; |
264 filterStorage.removeFilter(filter2); | 299 checkKnownFilters("disable exception rules", {blacklist: [filter1.text]}); |
265 checkKnownFilters(test, "remove filter2", {blacklist: [filter1.text]}); | 300 |
266 | 301 filterStorage.addFilter(filter2); |
267 subscription.disabled = false; | 302 checkKnownFilters("add @@filter2", {blacklist: [filter1.text], whitelist: [f
ilter2.text]}); |
268 checkKnownFilters(test, "enable subscription", {blacklist: [filter1.text], whi
telist: [filter2.text]}); | 303 assert.equal(filter2.subscriptionCount, 1, "@@filter2.subscriptionCount"); |
269 | 304 assert.ok([...filter2.subscriptions()][0] instanceof SpecialSubscription, "@
@filter2 added to a new filter group"); |
270 filterStorage.removeSubscription(subscription); | 305 assert.ok([...filter2.subscriptions()][0] != subscription3, "@@filter2 filte
r group is not the disabled exceptions group"); |
271 checkKnownFilters(test, "remove subscription", {blacklist: [filter1.text]}); | 306 |
272 | 307 subscription3.disabled = false; |
273 test.done(); | 308 checkKnownFilters("enable exception rules", {blacklist: [filter1.text], whit
elist: [filter2.text]}); |
274 }; | 309 |
275 | 310 filterStorage.removeFilter(filter2); |
276 exports.testFilterGroupOperations = function(test) | 311 filterStorage.addFilter(filter2); |
277 { | 312 checkKnownFilters("re-add @@filter2", {blacklist: [filter1.text], whitelist:
[filter2.text]}); |
278 let filter1 = Filter.fromText("filter1"); | 313 assert.equal(filter2.subscriptionCount, 1, "@@filter2.subscriptionCount"); |
279 let filter2 = Filter.fromText("@@filter2"); | 314 assert.ok([...filter2.subscriptions()][0] == subscription3, "@@filter2 added
to the default exceptions group"); |
280 let filter3 = Filter.fromText("filter3"); | 315 |
281 let filter4 = Filter.fromText("@@filter4"); | 316 let subscription4 = Subscription.fromURL("http://test/"); |
282 let filter5 = Filter.fromText("!filter5"); | 317 filterStorage.updateSubscriptionFilters(subscription4, [filter3.text, filter
4.text, filter5.text]); |
283 | 318 checkKnownFilters("update subscription not in the list yet", {blacklist: [fi
lter1.text], whitelist: [filter2.text]}); |
284 let subscription = Subscription.fromURL("http://test1/"); | 319 |
285 subscription.addFilter(filter1); | 320 filterStorage.addSubscription(subscription4); |
286 subscription.addFilter(filter2); | 321 checkKnownFilters("add subscription to the list", {blacklist: [filter1.text,
filter3.text], whitelist: [filter2.text, filter4.text]}); |
287 | 322 |
288 filterStorage.addSubscription(subscription); | 323 filterStorage.updateSubscriptionFilters(subscription4, [filter3.text, filter
2.text, filter5.text]); |
289 filterStorage.addFilter(filter1); | 324 checkKnownFilters("update subscription while in the list", {blacklist: [filt
er1.text, filter3.text], whitelist: [filter2.text]}); |
290 checkKnownFilters(test, "initial setup", {blacklist: [filter1.text], whitelist
: [filter2.text]}); | 325 |
291 | 326 subscription3.disabled = true; |
292 let subscription2 = Subscription.fromURL("~fl~"); | 327 checkKnownFilters("disable exception rules", {blacklist: [filter1.text, filt
er3.text], whitelist: [filter2.text]}); |
293 subscription2.disabled = true; | 328 |
294 checkKnownFilters(test, "disable blocking filters", {blacklist: [filter1.text]
, whitelist: [filter2.text]}); | 329 filterStorage.removeSubscription(subscription4); |
295 | 330 checkKnownFilters("remove subscription from the list", {blacklist: [filter1.
text]}); |
296 filterStorage.removeSubscription(subscription); | 331 |
297 checkKnownFilters(test, "remove subscription", {}); | 332 subscription3.disabled = false; |
298 | 333 checkKnownFilters("enable exception rules", {blacklist: [filter1.text], whit
elist: [filter2.text]}); |
299 subscription2.disabled = false; | 334 }); |
300 checkKnownFilters(test, "enable blocking filters", {blacklist: [filter1.text]}
); | 335 |
301 | 336 it("Snippet Filters", () => |
302 let subscription3 = Subscription.fromURL("~wl~"); | 337 { |
303 subscription3.disabled = true; | 338 let filter1 = Filter.fromText("example.com#$#filter1"); |
304 checkKnownFilters(test, "disable exception rules", {blacklist: [filter1.text]}
); | 339 let filter2 = Filter.fromText("example.com#$#filter2"); |
305 | 340 let filter3 = Filter.fromText("example.com#$#filter3"); |
306 filterStorage.addFilter(filter2); | 341 |
307 checkKnownFilters(test, "add @@filter2", {blacklist: [filter1.text], whitelist
: [filter2.text]}); | 342 let subscription1 = Subscription.fromURL("http://test1/"); |
308 test.equal(filter2.subscriptionCount, 1, "@@filter2.subscriptionCount"); | 343 subscription1.addFilter(filter1); |
309 test.ok([...filter2.subscriptions()][0] instanceof SpecialSubscription, "@@fil
ter2 added to a new filter group"); | 344 subscription1.addFilter(filter2); |
310 test.ok([...filter2.subscriptions()][0] != subscription3, "@@filter2 filter gr
oup is not the disabled exceptions group"); | 345 |
311 | 346 filterStorage.addSubscription(subscription1); |
312 subscription3.disabled = false; | 347 checkKnownFilters("add subscription with filter1 and filter2", {}); |
313 checkKnownFilters(test, "enable exception rules", {blacklist: [filter1.text],
whitelist: [filter2.text]}); | 348 |
314 | 349 let subscription2 = Subscription.fromURL("http://test2/"); |
315 filterStorage.removeFilter(filter2); | 350 subscription2.type = "circumvention"; |
316 filterStorage.addFilter(filter2); | 351 subscription2.addFilter(filter1); |
317 checkKnownFilters(test, "re-add @@filter2", {blacklist: [filter1.text], whitel
ist: [filter2.text]}); | 352 |
318 test.equal(filter2.subscriptionCount, 1, "@@filter2.subscriptionCount"); | 353 filterStorage.addSubscription(subscription2); |
319 test.ok([...filter2.subscriptions()][0] == subscription3, "@@filter2 added to
the default exceptions group"); | 354 checkKnownFilters("add subscription of type circumvention with filter1", {sn
ippets: [filter1.text]}); |
320 | 355 |
321 let subscription4 = Subscription.fromURL("http://test/"); | 356 let subscription3 = Subscription.fromURL("~foo"); |
322 filterStorage.updateSubscriptionFilters(subscription4, [filter3.text, filter4.
text, filter5.text]); | 357 subscription3.addFilter(filter2); |
323 checkKnownFilters(test, "update subscription not in the list yet", {blacklist:
[filter1.text], whitelist: [filter2.text]}); | 358 |
324 | 359 filterStorage.addSubscription(subscription3); |
325 filterStorage.addSubscription(subscription4); | 360 checkKnownFilters("add special subscription with filter2", {snippets: [filte
r1.text, filter2.text]}); |
326 checkKnownFilters(test, "add subscription to the list", {blacklist: [filter1.t
ext, filter3.text], whitelist: [filter2.text, filter4.text]}); | 361 |
327 | 362 let subscription4 = Subscription.fromURL("https://easylist-downloads.adblock
plus.org/abp-filters-anti-cv.txt"); |
328 filterStorage.updateSubscriptionFilters(subscription4, [filter3.text, filter2.
text, filter5.text]); | 363 subscription4.addFilter(filter3); |
329 checkKnownFilters(test, "update subscription while in the list", {blacklist: [
filter1.text, filter3.text], whitelist: [filter2.text]}); | 364 |
330 | 365 filterStorage.addSubscription(subscription4); |
331 subscription3.disabled = true; | 366 checkKnownFilters("add ABP anti-circumvention subscription with filter3", {s
nippets: [filter1.text, filter2.text, filter3.text]}); |
332 checkKnownFilters(test, "disable exception rules", {blacklist: [filter1.text,
filter3.text], whitelist: [filter2.text]}); | 367 }); |
333 | 368 }); |
334 filterStorage.removeSubscription(subscription4); | |
335 checkKnownFilters(test, "remove subscription from the list", {blacklist: [filt
er1.text]}); | |
336 | |
337 subscription3.disabled = false; | |
338 checkKnownFilters(test, "enable exception rules", {blacklist: [filter1.text],
whitelist: [filter2.text]}); | |
339 | |
340 test.done(); | |
341 }; | |
342 | |
343 exports.testSnippetFilters = function(test) | |
344 { | |
345 let filter1 = Filter.fromText("example.com#$#filter1"); | |
346 let filter2 = Filter.fromText("example.com#$#filter2"); | |
347 let filter3 = Filter.fromText("example.com#$#filter3"); | |
348 | |
349 let subscription1 = Subscription.fromURL("http://test1/"); | |
350 subscription1.addFilter(filter1); | |
351 subscription1.addFilter(filter2); | |
352 | |
353 filterStorage.addSubscription(subscription1); | |
354 checkKnownFilters(test, "add subscription with filter1 and filter2", {}); | |
355 | |
356 let subscription2 = Subscription.fromURL("http://test2/"); | |
357 subscription2.type = "circumvention"; | |
358 subscription2.addFilter(filter1); | |
359 | |
360 filterStorage.addSubscription(subscription2); | |
361 checkKnownFilters(test, "add subscription of type circumvention with filter1",
{snippets: [filter1.text]}); | |
362 | |
363 let subscription3 = Subscription.fromURL("~foo"); | |
364 subscription3.addFilter(filter2); | |
365 | |
366 filterStorage.addSubscription(subscription3); | |
367 checkKnownFilters(test, "add special subscription with filter2", {snippets: [f
ilter1.text, filter2.text]}); | |
368 | |
369 let subscription4 = Subscription.fromURL("https://easylist-downloads.adblockpl
us.org/abp-filters-anti-cv.txt"); | |
370 subscription4.addFilter(filter3); | |
371 | |
372 filterStorage.addSubscription(subscription4); | |
373 checkKnownFilters(test, "add ABP anti-circumvention subscription with filter3"
, {snippets: [filter1.text, filter2.text, filter3.text]}); | |
374 | |
375 test.done(); | |
376 }; | |
OLD | NEW |