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 | 97 }, |
79 try | 98 enumerable: true |
80 { | |
81 ignorePrefChanges = true; | |
82 writeFunc(branch, name, newValue); | |
83 value = newValue; | |
84 Services.prefs.savePrefFile(null); | |
85 triggerListeners(name); | |
86 } | |
87 catch(e) | |
88 { | |
89 Cu.reportError(e); | |
90 } | |
91 finally | |
92 { | |
93 ignorePrefChanges = false; | |
94 } | |
95 return value; | |
96 }); | 99 }); |
97 Prefs["_update_" + name](); | 100 Prefs["_update_" + name](); |
98 } | 101 } |
99 | 102 |
100 let listeners = []; | 103 let listeners = []; |
101 function triggerListeners(/**String*/ name) | 104 function triggerListeners(/**String*/ name) |
102 { | 105 { |
103 for (let i = 0; i < listeners.length; i++) | 106 for (let i = 0; i < listeners.length; i++) |
104 { | 107 { |
105 try | 108 try |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 { | 192 { |
190 let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsSt
ring); | 193 let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsSt
ring); |
191 str.data = newValue; | 194 str.data = newValue; |
192 branch.setComplexValue(pref, Ci.nsISupportsString, str); | 195 branch.setComplexValue(pref, Ci.nsISupportsString, str); |
193 } | 196 } |
194 | 197 |
195 function getJSONPref(branch, pref) JSON.parse(getCharPref(branch, pref)) | 198 function getJSONPref(branch, pref) JSON.parse(getCharPref(branch, pref)) |
196 function setJSONPref(branch, pref, newValue) setCharPref(branch, pref, JSON.stri
ngify(newValue)) | 199 function setJSONPref(branch, pref, newValue) setCharPref(branch, pref, JSON.stri
ngify(newValue)) |
197 | 200 |
198 init(); | 201 init(); |
OLD | NEW |