| Index: lib/subscriptionClasses.js |
| diff --git a/lib/subscriptionClasses.js b/lib/subscriptionClasses.js |
| index f559cb3937f42a8caff29135c7799e90c598183f..d58a9923c0b5c7bb906010f5ac51ab2ca9c4971c 100644 |
| --- a/lib/subscriptionClasses.js |
| +++ b/lib/subscriptionClasses.js |
| @@ -21,6 +21,7 @@ |
| let {ActiveFilter, BlockingFilter, WhitelistFilter, ElemHideBase} = require("filterClasses"); |
| let {FilterNotifier} = require("filterNotifier"); |
| +let {desc} = require("coreUtils"); |
| /** |
| * Abstract base class for filter subscriptions |
| @@ -229,10 +230,7 @@ function SpecialSubscription(url, title) |
| } |
| exports.SpecialSubscription = SpecialSubscription; |
| -SpecialSubscription.prototype = |
| -{ |
| - __proto__: Subscription.prototype, |
| - |
| +SpecialSubscription.prototype = Object.create(Subscription.prototype, desc({ |
| /** |
| * Filter types that should be added to this subscription by default |
| * (entries should correspond to keys in SpecialSubscription.defaultsMap). |
| @@ -272,14 +270,13 @@ SpecialSubscription.prototype = |
| if (this._lastDownload) |
| buffer.push("lastDownload=" + this._lastDownload); |
| } |
| -}; |
| +})); |
| -SpecialSubscription.defaultsMap = { |
| - __proto__: null, |
| +SpecialSubscription.defaultsMap = Object.create(null, desc({ |
| "whitelist": WhitelistFilter, |
| "blocking": BlockingFilter, |
| "elemhide": ElemHideBase |
| -}; |
| +})); |
| /** |
| * Creates a new user-defined filter group. |
| @@ -327,10 +324,7 @@ function RegularSubscription(url, title) |
| } |
| exports.RegularSubscription = RegularSubscription; |
| -RegularSubscription.prototype = |
| -{ |
| - __proto__: Subscription.prototype, |
| - |
| +RegularSubscription.prototype = Object.create(Subscription.prototype, desc({ |
| _homepage: null, |
| _lastDownload: 0, |
| @@ -338,38 +332,42 @@ RegularSubscription.prototype = |
| * Filter subscription homepage if known |
| * @type String |
| */ |
| - get homepage() |
| - { |
| - return this._homepage; |
| - }, |
| - set homepage(value) |
| - { |
| - if (value != this._homepage) |
| + homepage: { |
| + get: function() |
| { |
| - let oldValue = this._homepage; |
| - this._homepage = value; |
| - FilterNotifier.triggerListeners("subscription.homepage", this, value, oldValue); |
| + return this._homepage; |
| + }, |
| + set: function(value) |
| + { |
| + if (value != this._homepage) |
| + { |
| + let oldValue = this._homepage; |
| + this._homepage = value; |
| + FilterNotifier.triggerListeners("subscription.homepage", this, value, oldValue); |
| + } |
| + return this._homepage; |
| } |
| - return this._homepage; |
| }, |
| /** |
| * Time of the last subscription download (in seconds since the beginning of the epoch) |
| * @type Number |
| */ |
| - get lastDownload() |
| - { |
| - return this._lastDownload; |
| - }, |
| - set lastDownload(value) |
| - { |
| - if (value != this._lastDownload) |
| + lastDownload: { |
| + get: function() |
| + { |
| + return this._lastDownload; |
| + }, |
| + set: function(value) |
| { |
| - let oldValue = this._lastDownload; |
| - this._lastDownload = value; |
| - FilterNotifier.triggerListeners("subscription.lastDownload", this, value, oldValue); |
| + if (value != this._lastDownload) |
| + { |
| + let oldValue = this._lastDownload; |
| + this._lastDownload = value; |
| + FilterNotifier.triggerListeners("subscription.lastDownload", this, value, oldValue); |
| + } |
| + return this._lastDownload; |
| } |
| - return this._lastDownload; |
| }, |
| /** |
| @@ -383,7 +381,7 @@ RegularSubscription.prototype = |
| if (this._lastDownload) |
| buffer.push("lastDownload=" + this._lastDownload); |
| } |
| -}; |
| +})); |
| /** |
| * Class for filter subscriptions updated externally (by other extension) |
| @@ -398,10 +396,7 @@ function ExternalSubscription(url, title) |
| } |
| exports.ExternalSubscription = ExternalSubscription; |
| -ExternalSubscription.prototype = |
| -{ |
| - __proto__: RegularSubscription.prototype, |
| - |
| +ExternalSubscription.prototype = Object.create(RegularSubscription.prototype, desc({ |
| /** |
| * See Subscription.serialize() |
| */ |
| @@ -409,7 +404,7 @@ ExternalSubscription.prototype = |
| { |
| throw new Error("Unexpected call, external subscriptions should not be serialized"); |
| } |
| -}; |
| +})); |
| /** |
| * Class for filter subscriptions updated externally (by other extension) |
| @@ -424,10 +419,7 @@ function DownloadableSubscription(url, title) |
| } |
| exports.DownloadableSubscription = DownloadableSubscription; |
| -DownloadableSubscription.prototype = |
| -{ |
| - __proto__: RegularSubscription.prototype, |
| - |
| +DownloadableSubscription.prototype = Object.create(RegularSubscription.prototype, desc({ |
| _downloadStatus: null, |
| _lastCheck: 0, |
| _errors: 0, |
| @@ -436,16 +428,18 @@ DownloadableSubscription.prototype = |
| * Status of the last download (ID of a string) |
| * @type String |
| */ |
| - get downloadStatus() |
| - { |
| - return this._downloadStatus; |
| - }, |
| - set downloadStatus(value) |
| - { |
| - let oldValue = this._downloadStatus; |
| - this._downloadStatus = value; |
| - FilterNotifier.triggerListeners("subscription.downloadStatus", this, value, oldValue); |
| - return this._downloadStatus; |
| + downloadStatus: { |
| + get: function() |
| + { |
| + return this._downloadStatus; |
| + }, |
| + set: function(value) |
| + { |
| + let oldValue = this._downloadStatus; |
| + this._downloadStatus = value; |
| + FilterNotifier.triggerListeners("subscription.downloadStatus", this, value, oldValue); |
| + return this._downloadStatus; |
| + } |
| }, |
| /** |
| @@ -460,19 +454,21 @@ DownloadableSubscription.prototype = |
| * if the user doesn't use Adblock Plus for some time. |
| * @type Number |
| */ |
| - get lastCheck() |
| - { |
| - return this._lastCheck; |
| - }, |
| - set lastCheck(value) |
| - { |
| - if (value != this._lastCheck) |
| + lastCheck: { |
| + get: function() |
| { |
| - let oldValue = this._lastCheck; |
| - this._lastCheck = value; |
| - FilterNotifier.triggerListeners("subscription.lastCheck", this, value, oldValue); |
| + return this._lastCheck; |
| + }, |
| + set: function(value) |
| + { |
| + if (value != this._lastCheck) |
| + { |
| + let oldValue = this._lastCheck; |
| + this._lastCheck = value; |
| + FilterNotifier.triggerListeners("subscription.lastCheck", this, value, oldValue); |
| + } |
| + return this._lastCheck; |
| } |
| - return this._lastCheck; |
| }, |
| /** |
| @@ -491,19 +487,21 @@ DownloadableSubscription.prototype = |
| * Number of download failures since last success |
| * @type Number |
| */ |
| - get errors() |
| - { |
| - return this._errors; |
| - }, |
| - set errors(value) |
| - { |
| - if (value != this._errors) |
| + errors: { |
| + get: function() |
| + { |
| + return this._errors; |
| + }, |
| + set: function(value) |
| { |
| - let oldValue = this._errors; |
| - this._errors = value; |
| - FilterNotifier.triggerListeners("subscription.errors", this, value, oldValue); |
| + if (value != this._errors) |
| + { |
| + let oldValue = this._errors; |
| + this._errors = value; |
| + FilterNotifier.triggerListeners("subscription.errors", this, value, oldValue); |
| + } |
| + return this._errors; |
| } |
| - return this._errors; |
| }, |
| /** |
| @@ -549,4 +547,4 @@ DownloadableSubscription.prototype = |
| if (this.downloadCount) |
| buffer.push("downloadCount=" + this.downloadCount); |
| } |
| -}; |
| +})); |