| OLD | NEW | 
|---|
| 1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public | 
| 2  * License, v. 2.0. If a copy of the MPL was not distributed with this | 2  * License, v. 2.0. If a copy of the MPL was not distributed with this | 
| 3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 
| 4 | 4 | 
| 5 Cu.import("resource://gre/modules/Services.jsm"); | 5 Cu.import("resource://gre/modules/Services.jsm"); | 
| 6 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); | 6 Cu.import("resource://gre/modules/XPCOMUtils.jsm"); | 
| 7 | 7 | 
| 8 let {addonRoot, addonName} = require("info"); | 8 let {addonRoot, addonName} = require("info"); | 
| 9 let branchName = "extensions." + addonName + "."; | 9 let branchName = "extensions." + addonName + "."; | 
| 10 let branch = Services.prefs.getBranch(branchName); | 10 let branch = Services.prefs.getBranch(branchName); | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 37       catch (e) {} | 37       catch (e) {} | 
| 38     } | 38     } | 
| 39     setter(defaultBranch, pref, value); | 39     setter(defaultBranch, pref, value); | 
| 40     defineProperty(pref, false, getter, setter); | 40     defineProperty(pref, false, getter, setter); | 
| 41   } | 41   } | 
| 42 | 42 | 
| 43   // Add preference change observer | 43   // Add preference change observer | 
| 44   try | 44   try | 
| 45   { | 45   { | 
| 46     branch.QueryInterface(Ci.nsIPrefBranch2).addObserver("", Prefs, true); | 46     branch.QueryInterface(Ci.nsIPrefBranch2).addObserver("", Prefs, true); | 
| 47     onShutdown.add(function() branch.removeObserver("", Prefs)); | 47     onShutdown.add(() => branch.removeObserver("", Prefs)); | 
| 48   } | 48   } | 
| 49   catch (e) | 49   catch (e) | 
| 50   { | 50   { | 
| 51     Cu.reportError(e); | 51     Cu.reportError(e); | 
| 52   } | 52   } | 
| 53 } | 53 } | 
| 54 | 54 | 
| 55 /** | 55 /** | 
| 56  * Sets up getter/setter on Prefs object for preference. | 56  * Sets up getter/setter on Prefs object for preference. | 
| 57  */ | 57  */ | 
| 58 function defineProperty(/**String*/ name, defaultValue, /**Function*/ readFunc, 
     /**Function*/ writeFunc) | 58 function defineProperty(/**String*/ name, defaultValue, /**Function*/ readFunc, 
     /**Function*/ writeFunc) | 
| 59 { | 59 { | 
| 60   let value = defaultValue; | 60   let value = defaultValue; | 
| 61   Prefs["_update_" + name] = function() | 61   Prefs["_update_" + name] = function() | 
| 62   { | 62   { | 
| 63     try | 63     try | 
| 64     { | 64     { | 
| 65       value = readFunc(branch, name); | 65       value = readFunc(branch, name); | 
| 66       triggerListeners(name); | 66       triggerListeners(name); | 
| 67     } | 67     } | 
| 68     catch(e) | 68     catch(e) | 
| 69     { | 69     { | 
| 70       Cu.reportError(e); | 70       Cu.reportError(e); | 
| 71     } | 71     } | 
| 72   }; | 72   }; | 
| 73   Prefs.__defineGetter__(name, function() value); | 73   Object.defineProperty(Prefs, name, { | 
| 74   Prefs.__defineSetter__(name, function(newValue) | 74     get: () => value, | 
| 75   { | 75     set: function(newValue) | 
| 76     if (value == newValue) | 76     { | 
|  | 77       if (value == newValue) | 
|  | 78         return value; | 
|  | 79 | 
|  | 80       try | 
|  | 81       { | 
|  | 82         ignorePrefChanges = true; | 
|  | 83         writeFunc(branch, name, newValue); | 
|  | 84         value = newValue; | 
|  | 85         Services.prefs.savePrefFile(null); | 
|  | 86         triggerListeners(name); | 
|  | 87       } | 
|  | 88       catch(e) | 
|  | 89       { | 
|  | 90         Cu.reportError(e); | 
|  | 91       } | 
|  | 92       finally | 
|  | 93       { | 
|  | 94         ignorePrefChanges = false; | 
|  | 95       } | 
| 77       return value; | 96       return value; | 
| 78 |  | 
| 79     try |  | 
| 80     { |  | 
| 81       ignorePrefChanges = true; |  | 
| 82       writeFunc(branch, name, newValue); |  | 
| 83       value = newValue; |  | 
| 84       Services.prefs.savePrefFile(null); |  | 
| 85       triggerListeners(name); |  | 
| 86     } | 97     } | 
| 87     catch(e) |  | 
| 88     { |  | 
| 89       Cu.reportError(e); |  | 
| 90     } |  | 
| 91     finally |  | 
| 92     { |  | 
| 93       ignorePrefChanges = false; |  | 
| 94     } |  | 
| 95     return value; |  | 
| 96   }); | 98   }); | 
| 97   Prefs["_update_" + name](); | 99   Prefs["_update_" + name](); | 
| 98 } | 100 } | 
| 99 | 101 | 
| 100 let listeners = []; | 102 let listeners = []; | 
| 101 function triggerListeners(/**String*/ name) | 103 function triggerListeners(/**String*/ name) | 
| 102 { | 104 { | 
| 103   for (let i = 0; i < listeners.length; i++) | 105   for (let i = 0; i < listeners.length; i++) | 
| 104   { | 106   { | 
| 105     try | 107     try | 
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 189 { | 191 { | 
| 190   let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsSt
     ring); | 192   let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsSt
     ring); | 
| 191   str.data = newValue; | 193   str.data = newValue; | 
| 192   branch.setComplexValue(pref, Ci.nsISupportsString, str); | 194   branch.setComplexValue(pref, Ci.nsISupportsString, str); | 
| 193 } | 195 } | 
| 194 | 196 | 
| 195 function getJSONPref(branch, pref) JSON.parse(getCharPref(branch, pref)) | 197 function getJSONPref(branch, pref) JSON.parse(getCharPref(branch, pref)) | 
| 196 function setJSONPref(branch, pref, newValue) setCharPref(branch, pref, JSON.stri
     ngify(newValue)) | 198 function setJSONPref(branch, pref, newValue) setCharPref(branch, pref, JSON.stri
     ngify(newValue)) | 
| 197 | 199 | 
| 198 init(); | 200 init(); | 
| OLD | NEW | 
|---|