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 {createSandbox} = require("./_common"); | 20 let {createSandbox} = require("./_common"); |
21 | 21 |
22 let CSSPropertyFilter = null; | 22 let ElemHideEmulationFilter = null; |
23 let CSSRules = null; | 23 let ElemHideEmulation = null; |
24 let ElemHide = null; | 24 let ElemHide = null; |
25 let Filter = null; | 25 let Filter = null; |
26 | 26 |
27 exports.setUp = function(callback) | 27 exports.setUp = function(callback) |
28 { | 28 { |
29 let sandboxedRequire = createSandbox(); | 29 let sandboxedRequire = createSandbox(); |
30 ( | 30 ( |
31 {Filter, CSSPropertyFilter} = sandboxedRequire("../lib/filterClasses"), | 31 {Filter, |
32 {CSSRules} = sandboxedRequire("../lib/cssRules"), | 32 ElemHideEmulationFilter} = sandboxedRequire("../lib/filterClasses"), |
| 33 {ElemHideEmulation} = sandboxedRequire("../lib/elemHideEmulation"), |
33 {ElemHide} = sandboxedRequire("../lib/elemHide") | 34 {ElemHide} = sandboxedRequire("../lib/elemHide") |
34 ); | 35 ); |
35 | 36 |
36 callback(); | 37 callback(); |
37 }; | 38 }; |
38 | 39 |
39 exports.testDomainRestrictions = function(test) | 40 exports.testDomainRestrictions = function(test) |
40 { | 41 { |
41 function testSelectorMatches(description, filters, domain, expectedMatches) | 42 function testSelectorMatches(description, filters, domain, expectedMatches) |
42 { | 43 { |
43 for (let filter of filters) | 44 for (let filter of filters) |
44 { | 45 { |
45 filter = Filter.fromText(filter); | 46 filter = Filter.fromText(filter); |
46 if (filter instanceof CSSPropertyFilter) | 47 if (filter instanceof ElemHideEmulationFilter) |
47 CSSRules.add(filter); | 48 ElemHideEmulation.add(filter); |
48 else | 49 else |
49 ElemHide.add(filter); | 50 ElemHide.add(filter); |
50 } | 51 } |
51 | 52 |
52 let matches = CSSRules.getRulesForDomain(domain).map(filter => filter.text); | 53 let matches = ElemHideEmulation.getRulesForDomain(domain) |
| 54 .map(filter => filter.text); |
53 test.deepEqual(matches.sort(), expectedMatches.sort(), description); | 55 test.deepEqual(matches.sort(), expectedMatches.sort(), description); |
54 | 56 |
55 CSSRules.clear(); | 57 ElemHideEmulation.clear(); |
56 ElemHide.clear(); | 58 ElemHide.clear(); |
57 } | 59 } |
58 | 60 |
59 testSelectorMatches( | 61 testSelectorMatches( |
60 "Ignore generic filters", | 62 "Ignore generic filters", |
61 ["##[-abp-properties='foo']", "example.com##[-abp-properties='foo']", | 63 ["##[-abp-properties='foo']", "example.com##[-abp-properties='foo']", |
62 "~example.com##[-abp-properties='foo']"], | 64 "~example.com##[-abp-properties='foo']"], |
63 "example.com", | 65 "example.com", |
64 ["example.com##[-abp-properties='foo']"] | 66 ["example.com##[-abp-properties='foo']"] |
65 ); | 67 ); |
(...skipping 22 matching lines...) Expand all Loading... |
88 "Ignore filters for other subdomain", | 90 "Ignore filters for other subdomain", |
89 ["www.example.com##[-abp-properties='foo']", | 91 ["www.example.com##[-abp-properties='foo']", |
90 "other.example.com##[-abp-properties='foo']"], | 92 "other.example.com##[-abp-properties='foo']"], |
91 "other.example.com", | 93 "other.example.com", |
92 ["other.example.com##[-abp-properties='foo']"] | 94 ["other.example.com##[-abp-properties='foo']"] |
93 ); | 95 ); |
94 | 96 |
95 test.done(); | 97 test.done(); |
96 }; | 98 }; |
97 | 99 |
98 exports.testCSSPropertyFiltersContainer = function(test) | 100 exports.testElemHideEmulationFiltersContainer = function(test) |
99 { | 101 { |
100 function compareRules(description, domain, expectedMatches) | 102 function compareRules(description, domain, expectedMatches) |
101 { | 103 { |
102 let result = CSSRules.getRulesForDomain(domain) | 104 let result = ElemHideEmulation.getRulesForDomain(domain) |
103 .map((filter) => filter.text); | 105 .map((filter) => filter.text); |
104 expectedMatches = expectedMatches.map(filter => filter.text); | 106 expectedMatches = expectedMatches.map(filter => filter.text); |
105 test.deepEqual(result.sort(), expectedMatches.sort(), description); | 107 test.deepEqual(result.sort(), expectedMatches.sort(), description); |
106 } | 108 } |
107 | 109 |
108 let domainFilter = Filter.fromText("example.com##filter1"); | 110 let domainFilter = Filter.fromText("example.com##filter1"); |
109 let subdomainFilter = Filter.fromText("www.example.com##filter2"); | 111 let subdomainFilter = Filter.fromText("www.example.com##filter2"); |
110 let otherDomainFilter = Filter.fromText("other.example.com##filter3"); | 112 let otherDomainFilter = Filter.fromText("other.example.com##filter3"); |
111 | 113 |
112 CSSRules.add(domainFilter); | 114 ElemHideEmulation.add(domainFilter); |
113 CSSRules.add(subdomainFilter); | 115 ElemHideEmulation.add(subdomainFilter); |
114 CSSRules.add(otherDomainFilter); | 116 ElemHideEmulation.add(otherDomainFilter); |
115 compareRules( | 117 compareRules( |
116 "Return all matching filters", | 118 "Return all matching filters", |
117 "www.example.com", | 119 "www.example.com", |
118 [domainFilter, subdomainFilter] | 120 [domainFilter, subdomainFilter] |
119 ); | 121 ); |
120 | 122 |
121 CSSRules.remove(domainFilter); | 123 ElemHideEmulation.remove(domainFilter); |
122 compareRules( | 124 compareRules( |
123 "Return all matching filters after removing one", | 125 "Return all matching filters after removing one", |
124 "www.example.com", | 126 "www.example.com", |
125 [subdomainFilter] | 127 [subdomainFilter] |
126 ); | 128 ); |
127 | 129 |
128 CSSRules.clear(); | 130 ElemHideEmulation.clear(); |
129 compareRules( | 131 compareRules( |
130 "Return no filters after clearing", | 132 "Return no filters after clearing", |
131 "www.example.com", | 133 "www.example.com", |
132 [] | 134 [] |
133 ); | 135 ); |
134 | 136 |
135 test.done(); | 137 test.done(); |
136 }; | 138 }; |
OLD | NEW |