[Pkg-mozext-commits] [adblock-plus-element-hiding-helper] 272/483: Reduced the amount of code duplication in the prefs module

David Prévot taffit at moszumanska.debian.org
Thu Jan 22 21:41:48 UTC 2015


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

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

commit ea21d0263989a13838224ba02784adfe9ec88b3d
Author: Wladimir Palant <trev at adblockplus.org>
Date:   Thu Oct 28 13:32:01 2010 +0200

    Reduced the amount of code duplication in the prefs module
---
 modules/Prefs.jsm | 176 ++++++++++++++++++++++--------------------------------
 1 file changed, 71 insertions(+), 105 deletions(-)

diff --git a/modules/Prefs.jsm b/modules/Prefs.jsm
index c7ed519..1ae77dc 100644
--- a/modules/Prefs.jsm
+++ b/modules/Prefs.jsm
@@ -51,13 +51,13 @@ var Prefs =
       switch (type)
       {
         case Ci.nsIPrefBranch.PREF_INT:
-          PrefsPrivate.defineIntegerProperty(name);
+          defineIntegerProperty(name);
           break;
         case Ci.nsIPrefBranch.PREF_BOOL:
-          PrefsPrivate.defineBooleanProperty(name);
+          defineBooleanProperty(name);
           break;
         case Ci.nsIPrefBranch.PREF_STRING:
-          PrefsPrivate.defineStringProperty(name);
+          defineStringProperty(name);
           break;
       }
       if ("_update_" + name in PrefsPrivate)
@@ -93,121 +93,87 @@ var PrefsPrivate =
 {
   ignorePrefChanges: false,
 
-  defineIntegerProperty: function(name)
+  observe: function(subject, topic, data)
   {
-    let value = 0;
-    PrefsPrivate["_update_" + name] = function()
-    {
-      try
-      {
-        value = branch.getIntPref(name);
-      }
-      catch(e)
-      {
-        Cu.reportError(e);
-      }
-    }
-    Prefs.__defineGetter__(name, function() value);
-    Prefs.__defineSetter__(name, function(newValue)
-    {
-      try
-      {
-        PrefsPrivate.ignorePrefChanges = true;
-        branch.setIntPref(name, newValue);
-        value = newValue;
-      }
-      catch(e)
-      {
-        Cu.reportError(e);
-      }
-      finally
-      {
-        PrefsPrivate.ignorePrefChanges = false;
-      }
-      return value;
-    });
+    if (PrefsPrivate.ignorePrefChanges || topic != "nsPref:changed")
+      return;
+
+    if ("_update_" + data in PrefsPrivate)
+      PrefsPrivate["_update_" + data]();
   },
 
-  defineBooleanProperty: function(name)
+  QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
+}
+
+/**
+ * Sets up getter/setter on Prefs object for preference.
+ */
+function defineProperty(/**String*/ name, defaultValue, /**Function*/ readFunc, /**Function*/ writeFunc)
+{
+  let value = defaultValue;
+  PrefsPrivate["_update_" + name] = function()
   {
-    let value = false;
-    PrefsPrivate["_update_" + name] = function()
+    try
     {
-      try
-      {
-        value = branch.getBoolPref(name);
-      }
-      catch(e)
-      {
-        Cu.reportError(e);
-      }
+      value = readFunc();
     }
-    Prefs.__defineGetter__(name, function() value);
-    Prefs.__defineSetter__(name, function(newValue)
+    catch(e)
     {
-      try
-      {
-        PrefsPrivate.ignorePrefChanges = true;
-        branch.setBoolPref(name, newValue);
-        value = newValue;
-      }
-      catch(e)
-      {
-        Cu.reportError(e);
-      }
-      finally
-      {
-        PrefsPrivate.ignorePrefChanges = false;
-      }
+      Cu.reportError(e);
+    }
+  }
+  Prefs.__defineGetter__(name, function() value);
+  Prefs.__defineSetter__(name, function(newValue)
+  {
+    if (value == newValue)
       return value;
-    });
-  },
 
-  defineStringProperty: function(name)
-  {
-    let value = "";
-    PrefsPrivate["_update_" + name] = function()
+    try
     {
-      try
-      {
-        value = branch.getComplexValue(name, Ci.nsISupportsString).data;
-      }
-      catch(e)
-      {
-        Cu.reportError(e);
-      }
+      PrefsPrivate.ignorePrefChanges = true;
+      writeFunc(newValue);
+      value = newValue;
     }
-    Prefs.__defineGetter__(name, function() value);
-    Prefs.__defineSetter__(name, function(newValue)
+    catch(e)
     {
-      try
-      {
-        PrefsPrivate.ignorePrefChanges = true;
-        let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
-        str.data = newValue;
-        branch.setComplexValue(name, Ci.nsISupportsString, str);
-        value = newValue;
-      }
-      catch(e)
-      {
-        Cu.reportError(e);
-      }
-      finally
-      {
-        PrefsPrivate.ignorePrefChanges = false;
-      }
-      return value;
-    });
-  },
+      Cu.reportError(e);
+    }
+    finally
+    {
+      PrefsPrivate.ignorePrefChanges = false;
+    }
+    return value;
+  });
+}
 
-  observe: function(subject, topic, data)
-  {
-    if (PrefsPrivate.ignorePrefChanges || topic != "nsPref:changed")
-      return;
+/**
+ * Sets up getter/setter on Prefs object for an integer preference.
+ */
+function defineIntegerProperty(/**String*/ name)
+{
+  defineProperty(name, 0, function() branch.getIntPref(name),
+                          function(newValue) branch.setIntPref(name, newValue));
+}
 
-    if ("_update_" + data in PrefsPrivate)
-      PrefsPrivate["_update_" + data]();
-  },
+/**
+ * Sets up getter/setter on Prefs object for a boolean preference.
+ */
+function defineBooleanProperty(/**String*/ name)
+{
+  defineProperty(name, false, function() branch.getBoolPref(name),
+                              function(newValue) branch.setBoolPref(name, newValue));
+}
 
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
+/**
+ * Sets up getter/setter on Prefs object for a string preference.
+ */
+function defineStringProperty(/**String*/ name)
+{
+  defineProperty(name, "", function() branch.getComplexValue(name, Ci.nsISupportsString).data,
+    function(newValue)
+    {
+      let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
+      str.data = newValue;
+      branch.setComplexValue(name, Ci.nsISupportsString, str);
+    });
 }

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



More information about the Pkg-mozext-commits mailing list