Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/subscriptionClasses.js

Issue 29802587: Issue 6559 - Change SpecialSubscription.defaultsMap to Map object (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Created June 8, 2018, 2:45 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 /** 20 /**
21 * @fileOverview Definition of Subscription class and its subclasses. 21 * @fileOverview Definition of Subscription class and its subclasses.
22 */ 22 */
23 23
24 const {ActiveFilter, BlockingFilter, 24 const {ActiveFilter, BlockingFilter,
25 WhitelistFilter, ElemHideBase} = require("./filterClasses"); 25 WhitelistFilter, ElemHideBase} = require("./filterClasses");
26 const {FilterNotifier} = require("./filterNotifier"); 26 const {FilterNotifier} = require("./filterNotifier");
27 const {desc, extend} = require("./coreUtils"); 27 const {extend} = require("./coreUtils");
28 28
29 /** 29 /**
30 * Abstract base class for filter subscriptions 30 * Abstract base class for filter subscriptions
31 * 31 *
32 * @param {string} url download location of the subscription 32 * @param {string} url download location of the subscription
33 * @param {string} [title] title of the filter subscription 33 * @param {string} [title] title of the filter subscription
34 * @constructor 34 * @constructor
35 */ 35 */
36 function Subscription(url, title) 36 function Subscription(url, title)
37 { 37 {
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 * Tests whether a filter should be added to this group by default 253 * Tests whether a filter should be added to this group by default
254 * @param {Filter} filter filter to be tested 254 * @param {Filter} filter filter to be tested
255 * @return {boolean} 255 * @return {boolean}
256 */ 256 */
257 isDefaultFor(filter) 257 isDefaultFor(filter)
258 { 258 {
259 if (this.defaults && this.defaults.length) 259 if (this.defaults && this.defaults.length)
260 { 260 {
261 for (let type of this.defaults) 261 for (let type of this.defaults)
262 { 262 {
263 if (filter instanceof SpecialSubscription.defaultsMap[type]) 263 if (filter instanceof SpecialSubscription.defaultsMap.get(type))
264 return true; 264 return true;
265 if (!(filter instanceof ActiveFilter) && type == "blacklist") 265 if (!(filter instanceof ActiveFilter) && type == "blacklist")
266 return true; 266 return true;
267 } 267 }
268 } 268 }
269 269
270 return false; 270 return false;
271 }, 271 },
272 272
273 /** 273 /**
274 * See Subscription.serialize() 274 * See Subscription.serialize()
275 * @inheritdoc 275 * @inheritdoc
276 */ 276 */
277 serialize(buffer) 277 serialize(buffer)
278 { 278 {
279 Subscription.prototype.serialize.call(this, buffer); 279 Subscription.prototype.serialize.call(this, buffer);
280 if (this.defaults && this.defaults.length) 280 if (this.defaults && this.defaults.length)
281 { 281 {
282 buffer.push("defaults=" + 282 buffer.push("defaults=" +
283 this.defaults.filter( 283 this.defaults.filter(
284 type => type in SpecialSubscription.defaultsMap 284 type => SpecialSubscription.defaultsMap.has(type)
285 ).join(" ") 285 ).join(" ")
286 ); 286 );
287 } 287 }
288 if (this._lastDownload) 288 if (this._lastDownload)
289 buffer.push("lastDownload=" + this._lastDownload); 289 buffer.push("lastDownload=" + this._lastDownload);
290 } 290 }
291 }); 291 });
292 292
293 SpecialSubscription.defaultsMap = Object.create(null, desc({ 293 SpecialSubscription.defaultsMap = new Map([
294 whitelist: WhitelistFilter, 294 ["whitelist", WhitelistFilter],
295 blocking: BlockingFilter, 295 ["blocking", BlockingFilter],
296 elemhide: ElemHideBase 296 ["elemhide", ElemHideBase]
297 })); 297 ]);
298 298
299 /** 299 /**
300 * Creates a new user-defined filter group. 300 * Creates a new user-defined filter group.
301 * @param {string} [title] title of the new filter group 301 * @param {string} [title] title of the new filter group
302 * @return {SpecialSubscription} 302 * @return {SpecialSubscription}
303 */ 303 */
304 SpecialSubscription.create = function(title) 304 SpecialSubscription.create = function(title)
305 { 305 {
306 let url; 306 let url;
307 do 307 do
308 { 308 {
309 url = "~user~" + Math.round(Math.random() * 1000000); 309 url = "~user~" + Math.round(Math.random() * 1000000);
310 } while (Subscription.knownSubscriptions.has(url)); 310 } while (Subscription.knownSubscriptions.has(url));
311 return new SpecialSubscription(url, title); 311 return new SpecialSubscription(url, title);
312 }; 312 };
313 313
314 /** 314 /**
315 * Creates a new user-defined filter group and adds the given filter to it. 315 * Creates a new user-defined filter group and adds the given filter to it.
316 * This group will act as the default group for this filter type. 316 * This group will act as the default group for this filter type.
317 * @param {Filter} filter 317 * @param {Filter} filter
318 * @return {SpecialSubscription} 318 * @return {SpecialSubscription}
319 */ 319 */
320 SpecialSubscription.createForFilter = function(filter) 320 SpecialSubscription.createForFilter = function(filter)
321 { 321 {
322 let subscription = SpecialSubscription.create(); 322 let subscription = SpecialSubscription.create();
323 subscription.filters.push(filter); 323 subscription.filters.push(filter);
324 for (let type in SpecialSubscription.defaultsMap) 324 for (let [type, class_] of SpecialSubscription.defaultsMap)
325 { 325 {
326 if (filter instanceof SpecialSubscription.defaultsMap[type]) 326 if (filter instanceof class_)
327 subscription.defaults = [type]; 327 subscription.defaults = [type];
328 } 328 }
329 if (!subscription.defaults) 329 if (!subscription.defaults)
330 subscription.defaults = ["blocking"]; 330 subscription.defaults = ["blocking"];
331 return subscription; 331 return subscription;
332 }; 332 };
333 333
334 /** 334 /**
335 * Abstract base class for regular filter subscriptions (both 335 * Abstract base class for regular filter subscriptions (both
336 * internally and externally updated) 336 * internally and externally updated)
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 if (this.errors) 566 if (this.errors)
567 buffer.push("errors=" + this.errors); 567 buffer.push("errors=" + this.errors);
568 if (this.version) 568 if (this.version)
569 buffer.push("version=" + this.version); 569 buffer.push("version=" + this.version);
570 if (this.requiredVersion) 570 if (this.requiredVersion)
571 buffer.push("requiredVersion=" + this.requiredVersion); 571 buffer.push("requiredVersion=" + this.requiredVersion);
572 if (this.downloadCount) 572 if (this.downloadCount)
573 buffer.push("downloadCount=" + this.downloadCount); 573 buffer.push("downloadCount=" + this.downloadCount);
574 } 574 }
575 }); 575 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld