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-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2016 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 let { | 20 let {createSandbox} = require("./_common"); |
21 Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter, | 21 |
22 BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, | 22 let Filter = null; |
23 ElemHideException, CSSPropertyFilter | 23 let InvalidFilter = null; |
24 } = require("../lib/filterClasses"); | 24 let CommentFilter = null; |
| 25 let ActiveFilter = null; |
| 26 let RegExpFilter = null; |
| 27 let BlockingFilter = null; |
| 28 let WhitelistFilter = null; |
| 29 let ElemHideBase = null; |
| 30 let ElemHideFilter = null; |
| 31 let ElemHideException = null; |
| 32 let CSSPropertyFilter = null; |
| 33 |
| 34 let t = null; |
| 35 let defaultTypes = null; |
| 36 |
| 37 exports.setUp = function(callback) |
| 38 { |
| 39 let sandboxedRequire = createSandbox(); |
| 40 ( |
| 41 {Filter, InvalidFilter, CommentFilter, ActiveFilter, RegExpFilter, |
| 42 BlockingFilter, WhitelistFilter, ElemHideBase, ElemHideFilter, |
| 43 ElemHideException, CSSPropertyFilter} = sandboxedRequire("../lib/filterClas
ses") |
| 44 ); |
| 45 t = RegExpFilter.typeMap; |
| 46 defaultTypes = 0x7FFFFFFF & ~(t.ELEMHIDE | t.DOCUMENT | t.POPUP | |
| 47 t.GENERICHIDE | t.GENERICBLOCK); |
| 48 |
| 49 callback(); |
| 50 }; |
25 | 51 |
26 function serializeFilter(filter) | 52 function serializeFilter(filter) |
27 { | 53 { |
28 // Filter serialization only writes out essential properties, need to do a ful
l serialization here | 54 // Filter serialization only writes out essential properties, need to do a ful
l serialization here |
29 let result = []; | 55 let result = []; |
30 result.push("text=" + filter.text); | 56 result.push("text=" + filter.text); |
31 if (filter instanceof InvalidFilter) | 57 if (filter instanceof InvalidFilter) |
32 { | 58 { |
33 result.push("type=invalid"); | 59 result.push("type=invalid"); |
34 result.push("reason=" + filter.reason); | 60 result.push("reason=" + filter.reason); |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 compareFilter(test, "blabla_non_default", ["type=filterlist", "text=blabla_non
_default", "regexp=blabla_non_default", "disabled=true", "hitCount=12", "lastHit
=20"], function(filter) | 263 compareFilter(test, "blabla_non_default", ["type=filterlist", "text=blabla_non
_default", "regexp=blabla_non_default", "disabled=true", "hitCount=12", "lastHit
=20"], function(filter) |
238 { | 264 { |
239 filter.disabled = true; | 265 filter.disabled = true; |
240 filter.hitCount = 12; | 266 filter.hitCount = 12; |
241 filter.lastHit = 20; | 267 filter.lastHit = 20; |
242 }); | 268 }); |
243 | 269 |
244 test.done(); | 270 test.done(); |
245 }; | 271 }; |
246 | 272 |
247 let t = RegExpFilter.typeMap; | |
248 let defaultTypes = 0x7FFFFFFF & ~(t.ELEMHIDE | t.DOCUMENT | t.POPUP | t.GENERICH
IDE | t.GENERICBLOCK); | |
249 | |
250 exports.testSpecialCharacters = function(test) | 273 exports.testSpecialCharacters = function(test) |
251 { | 274 { |
252 compareFilter(test, "/ddd|f?a[s]d/", ["type=filterlist", "text=/ddd|f?a[s]d/",
"regexp=ddd|f?a[s]d"]); | 275 compareFilter(test, "/ddd|f?a[s]d/", ["type=filterlist", "text=/ddd|f?a[s]d/",
"regexp=ddd|f?a[s]d"]); |
253 compareFilter(test, "*asdf*d**dd*", ["type=filterlist", "text=*asdf*d**dd*", "
regexp=asdf.*d.*dd"]); | 276 compareFilter(test, "*asdf*d**dd*", ["type=filterlist", "text=*asdf*d**dd*", "
regexp=asdf.*d.*dd"]); |
254 compareFilter(test, "|*asd|f*d**dd*|", ["type=filterlist", "text=|*asd|f*d**dd
*|", "regexp=^.*asd\\|f.*d.*dd.*$"]); | 277 compareFilter(test, "|*asd|f*d**dd*|", ["type=filterlist", "text=|*asd|f*d**dd
*|", "regexp=^.*asd\\|f.*d.*dd.*$"]); |
255 compareFilter(test, "dd[]{}$%<>&()d", ["type=filterlist", "text=dd[]{}$%<>&()d
", "regexp=dd\\[\\]\\{\\}\\$\\%\\<\\>\\&\\(\\)d"]); | 278 compareFilter(test, "dd[]{}$%<>&()d", ["type=filterlist", "text=dd[]{}$%<>&()d
", "regexp=dd\\[\\]\\{\\}\\$\\%\\<\\>\\&\\(\\)d"]); |
256 | 279 |
257 compareFilter(test, "@@/ddd|f?a[s]d/", ["type=whitelist", "text=@@/ddd|f?a[s]d
/", "regexp=ddd|f?a[s]d", "contentType=" + defaultTypes]); | 280 compareFilter(test, "@@/ddd|f?a[s]d/", ["type=whitelist", "text=@@/ddd|f?a[s]d
/", "regexp=ddd|f?a[s]d", "contentType=" + defaultTypes]); |
258 compareFilter(test, "@@*asdf*d**dd*", ["type=whitelist", "text=@@*asdf*d**dd*"
, "regexp=asdf.*d.*dd", "contentType=" + defaultTypes]); | 281 compareFilter(test, "@@*asdf*d**dd*", ["type=whitelist", "text=@@*asdf*d**dd*"
, "regexp=asdf.*d.*dd", "contentType=" + defaultTypes]); |
259 compareFilter(test, "@@|*asd|f*d**dd*|", ["type=whitelist", "text=@@|*asd|f*d*
*dd*|", "regexp=^.*asd\\|f.*d.*dd.*$", "contentType=" + defaultTypes]); | 282 compareFilter(test, "@@|*asd|f*d**dd*|", ["type=whitelist", "text=@@|*asd|f*d*
*dd*|", "regexp=^.*asd\\|f.*d.*dd.*$", "contentType=" + defaultTypes]); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 compareFilter(test, "foo.com,~bar##[-abp-properties='abc']", ["type=cssrule",
"text=foo.com,~bar##[-abp-properties='abc']", "selectorDomain=foo.com", "selecto
r=[-abp-properties='abc']", "domains=FOO.COM|~BAR", "regexp=abc"]); | 359 compareFilter(test, "foo.com,~bar##[-abp-properties='abc']", ["type=cssrule",
"text=foo.com,~bar##[-abp-properties='abc']", "selectorDomain=foo.com", "selecto
r=[-abp-properties='abc']", "domains=FOO.COM|~BAR", "regexp=abc"]); |
337 compareFilter(test, "~foo.com,bar.com##[-abp-properties='abc']", ["type=cssrul
e", "text=~foo.com,bar.com##[-abp-properties='abc']", "selectorDomain=bar.com",
"selector=[-abp-properties='abc']", "domains=BAR.COM|~FOO.COM", "regexp=abc"]); | 360 compareFilter(test, "~foo.com,bar.com##[-abp-properties='abc']", ["type=cssrul
e", "text=~foo.com,bar.com##[-abp-properties='abc']", "selectorDomain=bar.com",
"selector=[-abp-properties='abc']", "domains=BAR.COM|~FOO.COM", "regexp=abc"]); |
338 | 361 |
339 compareFilter(test, "##[-abp-properties='']", ["type=elemhide", "text=##[-abp-
properties='']", "selector=[-abp-properties='']"]); | 362 compareFilter(test, "##[-abp-properties='']", ["type=elemhide", "text=##[-abp-
properties='']", "selector=[-abp-properties='']"]); |
340 compareFilter(test, "foo.com#@#[-abp-properties='abc']", ["type=elemhideexcept
ion", "text=foo.com#@#[-abp-properties='abc']", "selectorDomain=foo.com", "selec
tor=[-abp-properties='abc']", "domains=FOO.COM"]); | 363 compareFilter(test, "foo.com#@#[-abp-properties='abc']", ["type=elemhideexcept
ion", "text=foo.com#@#[-abp-properties='abc']", "selectorDomain=foo.com", "selec
tor=[-abp-properties='abc']", "domains=FOO.COM"]); |
341 compareFilter(test, "foo.com##aaa [-abp-properties='abc'] bbb", ["type=cssrule
", "text=foo.com##aaa [-abp-properties='abc'] bbb", "selectorDomain=foo.com", "s
elector=aaa [-abp-properties='abc'] bbb", "domains=FOO.COM", "prefix=aaa ", "reg
exp=abc", "suffix= bbb"]); | 364 compareFilter(test, "foo.com##aaa [-abp-properties='abc'] bbb", ["type=cssrule
", "text=foo.com##aaa [-abp-properties='abc'] bbb", "selectorDomain=foo.com", "s
elector=aaa [-abp-properties='abc'] bbb", "domains=FOO.COM", "prefix=aaa ", "reg
exp=abc", "suffix= bbb"]); |
342 compareFilter(test, "foo.com##[-abp-properties='|background-image: url(data:*)
']", ["type=cssrule", "text=foo.com##[-abp-properties='|background-image: url(da
ta:*)']", "selectorDomain=foo.com", "selector=[-abp-properties='|background-imag
e: url(data:*)']", "domains=FOO.COM", "regexp=^background\\-image\\:\\ url\\(dat
a\\:.*\\)"]); | 365 compareFilter(test, "foo.com##[-abp-properties='|background-image: url(data:*)
']", ["type=cssrule", "text=foo.com##[-abp-properties='|background-image: url(da
ta:*)']", "selectorDomain=foo.com", "selector=[-abp-properties='|background-imag
e: url(data:*)']", "domains=FOO.COM", "regexp=^background\\-image\\:\\ url\\(dat
a\\:.*\\)"]); |
343 | 366 |
344 test.done(); | 367 test.done(); |
345 }; | 368 }; |
OLD | NEW |