[Pkg-mozext-commits] [adblock-plus] 18/87: Issue 3660 - Remove locale dependency from subscription classes

David Prévot taffit at moszumanska.debian.org
Sat Apr 30 17:59:03 UTC 2016


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository adblock-plus.

commit 57c1c7c83c1700c054a7eb6d2f2eee62b77abc43
Author: Wladimir Palant <trev at adblockplus.org>
Date:   Tue Feb 16 13:16:36 2016 +0100

    Issue 3660 - Remove locale dependency from subscription classes
---
 lib/subscriptionClasses.js  | 57 ++++-------------------------
 test/subscriptionClasses.js | 87 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 93 insertions(+), 51 deletions(-)

diff --git a/lib/subscriptionClasses.js b/lib/subscriptionClasses.js
index a6c986d..f559cb3 100644
--- a/lib/subscriptionClasses.js
+++ b/lib/subscriptionClasses.js
@@ -19,8 +19,6 @@
  * @fileOverview Definition of Subscription class and its subclasses.
  */
 
-Cu.import("resource://gre/modules/Services.jsm");
-
 let {ActiveFilter, BlockingFilter, WhitelistFilter, ElemHideBase} = require("filterClasses");
 let {FilterNotifier} = require("filterNotifier");
 
@@ -37,11 +35,6 @@ function Subscription(url, title)
   this.filters = [];
   if (title)
     this._title = title;
-  else
-  {
-    let {Utils} = require("utils");
-    this._title = Utils.getString("newGroup_title");
-  }
   Subscription.knownSubscriptions[url] = this;
 }
 exports.Subscription = Subscription;
@@ -129,7 +122,8 @@ Subscription.prototype =
   {
     buffer.push("[Subscription]");
     buffer.push("url=" + this.url);
-    buffer.push("title=" + this._title);
+    if (this._title)
+      buffer.push("title=" + this._title);
     if (this._fixedTitle)
       buffer.push("fixedTitle=true");
     if (this._disabled)
@@ -166,16 +160,10 @@ Subscription.fromURL = function(url)
   if (url in Subscription.knownSubscriptions)
     return Subscription.knownSubscriptions[url];
 
-  try
-  {
-    // Test URL for validity
-    url = Services.io.newURI(url, null, null).spec;
+  if (url[0] != "~")
     return new DownloadableSubscription(url, null);
-  }
-  catch (e)
-  {
+  else
     return new SpecialSubscription(url);
-  }
 };
 
 /**
@@ -187,10 +175,8 @@ Subscription.fromURL = function(url)
 Subscription.fromObject = function(obj)
 {
   let result;
-  try
+  if (obj.url[0] != "~")
   {
-    obj.url = Services.io.newURI(obj.url, null, null).spec;
-
     // URL is valid - this is a downloadable subscription
     result = new DownloadableSubscription(obj.url, obj.title);
     if ("downloadStatus" in obj)
@@ -208,12 +194,7 @@ Subscription.fromObject = function(obj)
     if ("version" in obj)
       result.version = parseInt(obj.version, 10) || 0;
     if ("requiredVersion" in obj)
-    {
-      let {addonVersion} = require("info");
       result.requiredVersion = obj.requiredVersion;
-      if (Services.vc.compare(result.requiredVersion, addonVersion) > 0)
-        result.upgradeRequired = true;
-    }
     if ("homepage" in obj)
       result._homepage = obj.homepage;
     if ("lastDownload" in obj)
@@ -221,25 +202,8 @@ Subscription.fromObject = function(obj)
     if ("downloadCount" in obj)
       result.downloadCount = parseInt(obj.downloadCount, 10) || 0;
   }
-  catch (e)
+  else
   {
-    // Invalid URL - custom filter group
-    if (!("title" in obj))
-    {
-      // Backwards compatibility - titles and filter types were originally
-      // determined by group identifier.
-      if (obj.url == "~wl~")
-        obj.defaults = "whitelist";
-      else if (obj.url == "~fl~")
-        obj.defaults = "blocking";
-      else if (obj.url == "~eh~")
-        obj.defaults = "elemhide";
-      if ("defaults" in obj)
-      {
-        let {Utils} = require("utils");
-        obj.title = Utils.getString(obj.defaults + "Group_title");
-      }
-    }
     result = new SpecialSubscription(obj.url, obj.title);
     if ("defaults" in obj)
       result.defaults = obj.defaults.split(" ");
@@ -347,9 +311,6 @@ SpecialSubscription.createForFilter = function(/**Filter*/ filter) /**SpecialSub
   }
   if (!subscription.defaults)
     subscription.defaults = ["blocking"];
-
-  let {Utils} = require("utils");
-  subscription.title = Utils.getString(subscription.defaults[0] + "Group_title");
   return subscription;
 };
 
@@ -558,12 +519,6 @@ DownloadableSubscription.prototype =
   requiredVersion: null,
 
   /**
-   * Should be true if requiredVersion is higher than current Adblock Plus version
-   * @type Boolean
-   */
-  upgradeRequired: false,
-
-  /**
    * Number indicating how often the object was downloaded.
    * @type Number
    */
diff --git a/test/subscriptionClasses.js b/test/subscriptionClasses.js
new file mode 100644
index 0000000..9ac3bf5
--- /dev/null
+++ b/test/subscriptionClasses.js
@@ -0,0 +1,87 @@
+/*
+ * This file is part of Adblock Plus <https://adblockplus.org/>,
+ * Copyright (C) 2006-2016 Eyeo GmbH
+ *
+ * Adblock Plus is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * Adblock Plus is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+"use strict";
+
+let {
+  Subscription, SpecialSubscription, DownloadableSubscription,
+  RegularSubscription, ExternalSubscription
+} = require("../lib/subscriptionClasses");
+
+function compareSubscription(test, url, expected, postInit)
+{
+  expected.push("[Subscription]")
+  let subscription = Subscription.fromURL(url);
+  if (postInit)
+    postInit(subscription)
+  let result = [];
+  subscription.serialize(result);
+  test.equal(result.sort().join("\n"), expected.sort().join("\n"), url);
+
+  let map = {__proto__: null};
+  for (let line of result.slice(1))
+  {
+    if (/(.*?)=(.*)/.test(line))
+      map[RegExp.$1] = RegExp.$2;
+  }
+  let subscription2 = Subscription.fromObject(map);
+  test.equal(subscription.toString(), subscription2.toString(), url + " deserialization");
+}
+
+exports.testSubscriptionClassDefinitions = function(test)
+{
+  test.equal(typeof Subscription, "function", "typeof Subscription");
+  test.equal(typeof SpecialSubscription, "function", "typeof SpecialSubscription");
+  test.equal(typeof RegularSubscription, "function", "typeof RegularSubscription");
+  test.equal(typeof ExternalSubscription, "function", "typeof ExternalSubscription");
+  test.equal(typeof DownloadableSubscription, "function", "typeof DownloadableSubscription");
+
+  test.done();
+};
+
+exports.testSubscriptionsWithState = function(test)
+{
+  compareSubscription(test, "~fl~", ["url=~fl~"]);
+  compareSubscription(test, "http://test/default", ["url=http://test/default", "title=http://test/default"]);
+  compareSubscription(test, "http://test/default_titled", ["url=http://test/default_titled", "title=test"], function(subscription)
+  {
+    subscription.title = "test";
+  });
+  compareSubscription(test, "http://test/non_default", ["url=http://test/non_default", "title=test",
+                                                  "disabled=true", "lastSuccess=8", "lastDownload=12", "lastCheck=16", "softExpiration=18", "expires=20", "downloadStatus=foo",
+                                                  "errors=3", "version=24", "requiredVersion=0.6"], function(subscription)
+  {
+    subscription.title = "test";
+    subscription.disabled = true;
+    subscription.lastSuccess = 8;
+    subscription.lastDownload = 12;
+    subscription.lastCheck = 16;
+    subscription.softExpiration = 18;
+    subscription.expires = 20;
+    subscription.downloadStatus = "foo";
+    subscription.errors = 3;
+    subscription.version = 24
+    subscription.requiredVersion = "0.6";
+  });
+  compareSubscription(test, "~wl~", ["url=~wl~", "disabled=true", "title=Test group"], function(subscription)
+  {
+    subscription.title = "Test group";
+    subscription.disabled = true;
+  });
+
+  test.done();
+};

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus.git



More information about the Pkg-mozext-commits mailing list