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