| Index: lib/prefs.js |
| diff --git a/lib/prefs.js b/lib/prefs.js |
| deleted file mode 100644 |
| index d1ebb9536fa3435d935d917c04b98116f79fff70..0000000000000000000000000000000000000000 |
| --- a/lib/prefs.js |
| +++ /dev/null |
| @@ -1,197 +0,0 @@ |
| -/* This Source Code Form is subject to the terms of the Mozilla Public |
| - * License, v. 2.0. If a copy of the MPL was not distributed with this |
| - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| - |
| -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); |
| -let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {}); |
| - |
| -let {addonRoot, addonName} = require("info"); |
| -let branchName = "extensions." + addonName + "."; |
| -let branch = Services.prefs.getBranch(branchName); |
| -let preconfiguredBranch = |
| - Services.prefs.getBranch(branchName + "preconfigured."); |
| -let ignorePrefChanges = false; |
| - |
| -function init() |
| -{ |
| - // Load default preferences and set up properties for them |
| - let defaultBranch = Services.prefs.getDefaultBranch(branchName); |
| - |
| - let prefsData = require("prefs.json"); |
| - let defaults = prefsData.defaults; |
| - let preconfigurable = new Set(prefsData.preconfigurable); |
| - for (let pref in defaults) |
| - { |
| - let value = defaults[pref]; |
| - let [getter, setter] = typeMap[typeof value]; |
| - if (preconfigurable.has(pref)) |
| - { |
| - try |
| - { |
| - value = getter(preconfiguredBranch, pref); |
| - } |
| - catch (e) {} |
| - } |
| - setter(defaultBranch, pref, value); |
| - defineProperty(pref, false, getter, setter); |
| - } |
| - |
| - // Add preference change observer |
| - try |
| - { |
| - branch.QueryInterface(Ci.nsIPrefBranch2).addObserver("", Prefs, true); |
| - onShutdown.add(() => branch.removeObserver("", Prefs)); |
| - } |
| - catch (e) |
| - { |
| - Cu.reportError(e); |
| - } |
| -} |
| - |
| -/** |
| - * Sets up getter/setter on Prefs object for preference. |
| - */ |
| -function defineProperty(/**String*/ name, defaultValue, /**Function*/ readFunc, /**Function*/ writeFunc) |
| -{ |
| - let value = defaultValue; |
| - Prefs["_update_" + name] = () => |
| - { |
| - try |
| - { |
| - value = readFunc(branch, name); |
| - triggerListeners(name); |
| - } |
| - catch(e) |
| - { |
| - Cu.reportError(e); |
| - } |
| - }; |
| - Object.defineProperty(Prefs, name, { |
| - enumerable: true, |
| - get: () => value, |
| - set: (newValue) => |
| - { |
| - if (value == newValue) |
| - return value; |
| - |
| - try |
| - { |
| - ignorePrefChanges = true; |
| - writeFunc(branch, name, newValue); |
| - value = newValue; |
| - Services.prefs.savePrefFile(null); |
| - triggerListeners(name); |
| - } |
| - catch(e) |
| - { |
| - Cu.reportError(e); |
| - } |
| - finally |
| - { |
| - ignorePrefChanges = false; |
| - } |
| - return value; |
| - } |
| - }); |
| - Prefs["_update_" + name](); |
| -} |
| - |
| -let listeners = []; |
| -function triggerListeners(/**String*/ name) |
| -{ |
| - for (let i = 0; i < listeners.length; i++) |
| - { |
| - try |
| - { |
| - listeners[i](name); |
| - } |
| - catch(e) |
| - { |
| - Cu.reportError(e); |
| - } |
| - } |
| -} |
| - |
| -/** |
| - * Manages the preferences for an extension, object properties corresponding |
| - * to extension's preferences are added automatically. Setting the property |
| - * will automatically change the preference, external preference changes are |
| - * also recognized automatically. |
| - */ |
| -let Prefs = exports.Prefs = |
| -{ |
| - /** |
| - * Migrates an old preference to a new name. |
| - */ |
| - migrate: function(/**String*/ oldName, /**String*/ newName) |
| - { |
| - if (newName in this && Services.prefs.prefHasUserValue(oldName)) |
| - { |
| - let [getter, setter] = typeMap[typeof this[newName]]; |
| - try |
| - { |
| - this[newName] = getter(Services.prefs, oldName); |
| - } catch(e) {} |
| - Services.prefs.clearUserPref(oldName); |
| - } |
| - }, |
| - |
| - /** |
| - * Adds a preferences listener that will be fired whenever a preference |
| - * changes. |
| - */ |
| - addListener: function(/**Function*/ listener) |
| - { |
| - if (listeners.indexOf(listener) < 0) |
| - listeners.push(listener); |
| - }, |
| - |
| - /** |
| - * Removes a preferences listener. |
| - */ |
| - removeListener: function(/**Function*/ listener) |
| - { |
| - let index = listeners.indexOf(listener); |
| - if (index >= 0) |
| - listeners.splice(index, 1); |
| - }, |
| - |
| - observe: function(subject, topic, data) |
| - { |
| - if (ignorePrefChanges || topic != "nsPref:changed") |
| - return; |
| - |
| - if ("_update_" + data in this) |
| - this["_update_" + data](); |
| - }, |
| - |
| - QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) |
| -}; |
| - |
| -let getIntPref = (branch, pref) => branch.getIntPref(pref); |
| -let setIntPref = (branch, pref, newValue) => branch.setIntPref(pref, newValue); |
| - |
| -let getBoolPref = (branch, pref) => branch.getBoolPref(pref); |
| -let setBoolPref = (branch, pref, newValue) => branch.setBoolPref(pref, newValue); |
| - |
| -let getCharPref = (branch, pref) => branch.getComplexValue(pref, Ci.nsISupportsString).data; |
| -let setCharPref = (branch, pref, newValue) => |
| -{ |
| - let str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString); |
| - str.data = newValue; |
| - branch.setComplexValue(pref, Ci.nsISupportsString, str); |
| -}; |
| - |
| -let getJSONPref = (branch, pref) => JSON.parse(getCharPref(branch, pref)); |
| -let setJSONPref = (branch, pref, newValue) => setCharPref(branch, pref, JSON.stringify(newValue)); |
| - |
| -// Getter/setter functions for difference preference types |
| -let typeMap = |
| -{ |
| - boolean: [getBoolPref, setBoolPref], |
| - number: [getIntPref, setIntPref], |
| - string: [getCharPref, setCharPref], |
| - object: [getJSONPref, setJSONPref] |
| -}; |
| - |
| -init(); |