Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/prefs.js

Issue 5462707926990848: Issue 1434 - Removed remaining non-standard JavaScript code from buildtools (Closed)
Patch Set: Make Prefs enumerable again Created May 6, 2015, 11:06 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« lib/hooks.js ('K') | « lib/keySelector.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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();
OLDNEW
« lib/hooks.js ('K') | « lib/keySelector.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld