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 |
(...skipping 24 matching lines...) Expand all Loading... |
35 * Lookup table, filter by selector. (Only used for selectors that are | 35 * Lookup table, filter by selector. (Only used for selectors that are |
36 * unconditionally matched for all domains.) | 36 * unconditionally matched for all domains.) |
37 * @type {Map.<string,Filter>} | 37 * @type {Map.<string,Filter>} |
38 */ | 38 */ |
39 let filterBySelector = new Map(); | 39 let filterBySelector = new Map(); |
40 | 40 |
41 /** | 41 /** |
42 * This array caches the keys of filterBySelector table (selectors | 42 * This array caches the keys of filterBySelector table (selectors |
43 * which unconditionally apply on all domains). It will be null if the | 43 * which unconditionally apply on all domains). It will be null if the |
44 * cache needs to be rebuilt. | 44 * cache needs to be rebuilt. |
| 45 * @type {?string[]} |
45 */ | 46 */ |
46 let unconditionalSelectors = null; | 47 let unconditionalSelectors = null; |
47 | 48 |
48 /** | 49 /** |
49 * Map to be used instead when a filter has a blank domains property. | 50 * Map to be used instead when a filter has a blank domains property. |
| 51 * @type {Map.<string,boolean>} |
| 52 * @const |
50 */ | 53 */ |
51 let defaultDomains = new Map([["", true]]); | 54 let defaultDomains = new Map([["", true]]); |
52 | 55 |
53 /** | 56 /** |
54 * Set containing known element hiding and exception filters | 57 * Set containing known element hiding and exception filters |
55 * @type {Set.<ElemHideBase>} | 58 * @type {Set.<ElemHideBase>} |
56 */ | 59 */ |
57 let knownFilters = new Set(); | 60 let knownFilters = new Set(); |
58 | 61 |
59 /** | 62 /** |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 } | 181 } |
179 | 182 |
180 knownFilters.delete(filter); | 183 knownFilters.delete(filter); |
181 FilterNotifier.emit("elemhideupdate"); | 184 FilterNotifier.emit("elemhideupdate"); |
182 }, | 185 }, |
183 | 186 |
184 /** | 187 /** |
185 * Checks whether an exception rule is registered for a filter on a particular | 188 * Checks whether an exception rule is registered for a filter on a particular |
186 * domain. | 189 * domain. |
187 * @param {Filter} filter | 190 * @param {Filter} filter |
188 * @param {string} docDomain | 191 * @param {?string} docDomain |
189 * @return {ElemHideException} | 192 * @return {?ElemHideException} |
190 */ | 193 */ |
191 getException(filter, docDomain) | 194 getException(filter, docDomain) |
192 { | 195 { |
193 let list = exceptions.get(filter.selector); | 196 let list = exceptions.get(filter.selector); |
194 if (!list) | 197 if (!list) |
195 return null; | 198 return null; |
196 | 199 |
197 for (let i = list.length - 1; i >= 0; i--) | 200 for (let i = list.length - 1; i >= 0; i--) |
198 { | 201 { |
199 if (list[i].isActiveOnDomain(docDomain)) | 202 if (list[i].isActiveOnDomain(docDomain)) |
(...skipping 10 matching lines...) Expand all Loading... |
210 getUnconditionalSelectors() | 213 getUnconditionalSelectors() |
211 { | 214 { |
212 if (!unconditionalSelectors) | 215 if (!unconditionalSelectors) |
213 unconditionalSelectors = [...filterBySelector.keys()]; | 216 unconditionalSelectors = [...filterBySelector.keys()]; |
214 return unconditionalSelectors.slice(); | 217 return unconditionalSelectors.slice(); |
215 }, | 218 }, |
216 | 219 |
217 /** | 220 /** |
218 * Constant used by getSelectorsForDomain to return all selectors applying to | 221 * Constant used by getSelectorsForDomain to return all selectors applying to |
219 * a particular hostname. | 222 * a particular hostname. |
| 223 * @type {number} |
| 224 * @const |
220 */ | 225 */ |
221 ALL_MATCHING: 0, | 226 ALL_MATCHING: 0, |
222 | 227 |
223 /** | 228 /** |
224 * Constant used by getSelectorsForDomain to exclude selectors which apply to | 229 * Constant used by getSelectorsForDomain to exclude selectors which apply to |
225 * all websites without exception. | 230 * all websites without exception. |
| 231 * @type {number} |
| 232 * @const |
226 */ | 233 */ |
227 NO_UNCONDITIONAL: 1, | 234 NO_UNCONDITIONAL: 1, |
228 | 235 |
229 /** | 236 /** |
230 * Constant used by getSelectorsForDomain to return only selectors for filters | 237 * Constant used by getSelectorsForDomain to return only selectors for filters |
231 * which specifically match the given host name. | 238 * which specifically match the given host name. |
| 239 * @type {number} |
| 240 * @const |
232 */ | 241 */ |
233 SPECIFIC_ONLY: 2, | 242 SPECIFIC_ONLY: 2, |
234 | 243 |
235 /** | 244 /** |
236 * Determines from the current filter list which selectors should be applied | 245 * Determines from the current filter list which selectors should be applied |
237 * on a particular host name. | 246 * on a particular host name. |
238 * @param {string} domain | 247 * @param {string} domain |
239 * @param {number} [criteria] | 248 * @param {number} [criteria] |
240 * One of the following: ElemHide.ALL_MATCHING, ElemHide.NO_UNCONDITIONAL or | 249 * One of the following: ElemHide.ALL_MATCHING, ElemHide.NO_UNCONDITIONAL or |
241 * ElemHide.SPECIFIC_ONLY. | 250 * ElemHide.SPECIFIC_ONLY. |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 if (currentDomain == "") | 291 if (currentDomain == "") |
283 break; | 292 break; |
284 | 293 |
285 let nextDot = currentDomain.indexOf("."); | 294 let nextDot = currentDomain.indexOf("."); |
286 currentDomain = nextDot == -1 ? "" : currentDomain.substr(nextDot + 1); | 295 currentDomain = nextDot == -1 ? "" : currentDomain.substr(nextDot + 1); |
287 } | 296 } |
288 | 297 |
289 return selectors; | 298 return selectors; |
290 } | 299 } |
291 }; | 300 }; |
OLD | NEW |