| 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(); |