| 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 21 matching lines...) Expand all  Loading... | 
|   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 { | 
|   38   this.url = url; |   38   this.url = url; | 
|   39   this.filters = []; |   39   this.filters = []; | 
|   40   if (title) |   40   if (title) | 
|   41     this._title = title; |   41     this._title = title; | 
|   42   Subscription.knownSubscriptions[url] = this; |   42   Subscription.knownSubscriptions.set(url, this); | 
|   43 } |   43 } | 
|   44 exports.Subscription = Subscription; |   44 exports.Subscription = Subscription; | 
|   45  |   45  | 
|   46 Subscription.prototype = |   46 Subscription.prototype = | 
|   47 { |   47 { | 
|   48   /** |   48   /** | 
|   49    * Download location of the subscription |   49    * Download location of the subscription | 
|   50    * @type {string} |   50    * @type {string} | 
|   51    */ |   51    */ | 
|   52   url: null, |   52   url: null, | 
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  147   toString() |  147   toString() | 
|  148   { |  148   { | 
|  149     let buffer = []; |  149     let buffer = []; | 
|  150     this.serialize(buffer); |  150     this.serialize(buffer); | 
|  151     return buffer.join("\n"); |  151     return buffer.join("\n"); | 
|  152   } |  152   } | 
|  153 }; |  153 }; | 
|  154  |  154  | 
|  155 /** |  155 /** | 
|  156  * Cache for known filter subscriptions, maps URL to subscription objects. |  156  * Cache for known filter subscriptions, maps URL to subscription objects. | 
|  157  * @type {Object} |  157  * @type {Map.<string,Subscription>} | 
|  158  */ |  158  */ | 
|  159 Subscription.knownSubscriptions = Object.create(null); |  159 Subscription.knownSubscriptions = new Map(); | 
|  160  |  160  | 
|  161 /** |  161 /** | 
|  162  * Returns a subscription from its URL, creates a new one if necessary. |  162  * Returns a subscription from its URL, creates a new one if necessary. | 
|  163  * @param {string} url |  163  * @param {string} url | 
|  164  *   URL of the subscription |  164  *   URL of the subscription | 
|  165  * @return {Subscription} |  165  * @return {Subscription} | 
|  166  *   subscription or null if the subscription couldn't be created |  166  *   subscription or null if the subscription couldn't be created | 
|  167  */ |  167  */ | 
|  168 Subscription.fromURL = function(url) |  168 Subscription.fromURL = function(url) | 
|  169 { |  169 { | 
|  170   if (url in Subscription.knownSubscriptions) |  170   let subscription = Subscription.knownSubscriptions.get(url); | 
|  171     return Subscription.knownSubscriptions[url]; |  171   if (subscription) | 
 |  172     return subscription; | 
|  172  |  173  | 
|  173   if (url[0] != "~") |  174   if (url[0] != "~") | 
|  174     return new DownloadableSubscription(url, null); |  175     return new DownloadableSubscription(url, null); | 
|  175   return new SpecialSubscription(url); |  176   return new SpecialSubscription(url); | 
|  176 }; |  177 }; | 
|  177  |  178  | 
|  178 /** |  179 /** | 
|  179  * Deserializes a subscription |  180  * Deserializes a subscription | 
|  180  * |  181  * | 
|  181  * @param {Object}  obj |  182  * @param {Object}  obj | 
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  299  * Creates a new user-defined filter group. |  300  * Creates a new user-defined filter group. | 
|  300  * @param {string} [title]  title of the new filter group |  301  * @param {string} [title]  title of the new filter group | 
|  301  * @return {SpecialSubscription} |  302  * @return {SpecialSubscription} | 
|  302  */ |  303  */ | 
|  303 SpecialSubscription.create = function(title) |  304 SpecialSubscription.create = function(title) | 
|  304 { |  305 { | 
|  305   let url; |  306   let url; | 
|  306   do |  307   do | 
|  307   { |  308   { | 
|  308     url = "~user~" + Math.round(Math.random() * 1000000); |  309     url = "~user~" + Math.round(Math.random() * 1000000); | 
|  309   } while (url in Subscription.knownSubscriptions); |  310   } while (Subscription.knownSubscriptions.has(url)); | 
|  310   return new SpecialSubscription(url, title); |  311   return new SpecialSubscription(url, title); | 
|  311 }; |  312 }; | 
|  312  |  313  | 
|  313 /** |  314 /** | 
|  314  * 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. | 
|  315  * 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. | 
|  316  * @param {Filter} filter |  317  * @param {Filter} filter | 
|  317  * @return {SpecialSubscription} |  318  * @return {SpecialSubscription} | 
|  318  */ |  319  */ | 
|  319 SpecialSubscription.createForFilter = function(filter) |  320 SpecialSubscription.createForFilter = function(filter) | 
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  565     if (this.errors) |  566     if (this.errors) | 
|  566       buffer.push("errors=" + this.errors); |  567       buffer.push("errors=" + this.errors); | 
|  567     if (this.version) |  568     if (this.version) | 
|  568       buffer.push("version=" + this.version); |  569       buffer.push("version=" + this.version); | 
|  569     if (this.requiredVersion) |  570     if (this.requiredVersion) | 
|  570       buffer.push("requiredVersion=" + this.requiredVersion); |  571       buffer.push("requiredVersion=" + this.requiredVersion); | 
|  571     if (this.downloadCount) |  572     if (this.downloadCount) | 
|  572       buffer.push("downloadCount=" + this.downloadCount); |  573       buffer.push("downloadCount=" + this.downloadCount); | 
|  573   } |  574   } | 
|  574 }); |  575 }); | 
| OLD | NEW |