[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