Bug 1313155 - Remove dom/settings and related code. r=ehsan draft
authorMichelangelo De Simone <mdesimone@mozilla.com>
Thu, 29 Dec 2016 11:26:49 -0800
changeset 463414 4433a52784b3734fcccf5703782d608af6e9f3fc
parent 463342 96cb95af530477edb66ae48d98c18533476e57bb
child 542662 d40f5f034a14b3640f6dcd6834c1462e31b3262a
push id42049
push userbmo:mdesimone@mozilla.com
push dateThu, 19 Jan 2017 01:20:46 +0000
reviewersehsan
bugs1313155
milestone53.0a1
Bug 1313155 - Remove dom/settings and related code. r=ehsan MozReview-Commit-ID: Gi7frPFQ6yW
accessible/jsat/AccessFu.jsm
accessible/jsat/Utils.jsm
accessible/tests/mochitest/jsat/jsatcommon.js
addon-sdk/source/python-lib/cuddlefish/prefs.py
addon-sdk/source/test/preferences/test.json
b2g/app/b2g.js
b2g/chrome/content/desktop.js
browser/installer/package-manifest.in
devtools/client/webide/content/devicesettings.js
devtools/client/webide/content/devicesettings.xhtml
devtools/client/webide/content/jar.mn
devtools/client/webide/content/webide.js
devtools/client/webide/content/webide.xul
devtools/client/webide/modules/app-manager.js
devtools/client/webide/modules/runtime-list.js
devtools/client/webide/test/chrome.ini
devtools/client/webide/test/test_device_settings.html
devtools/server/actors/moz.build
devtools/server/actors/settings.js
devtools/server/main.js
devtools/server/tests/mochitest/chrome.ini
devtools/server/tests/mochitest/test_settings.html
devtools/shared/discovery/discovery.js
devtools/shared/fronts/moz.build
devtools/shared/fronts/settings.js
devtools/shared/specs/moz.build
devtools/shared/specs/settings.js
dom/audiochannel/AudioChannelService.cpp
dom/events/moz.build
dom/events/test/test_all_synthetic_events.html
dom/media/tests/mochitest/NetworkPreparationChromeScript.js
dom/moz.build
dom/settings/SettingsDB.jsm
dom/settings/SettingsManager.js
dom/settings/SettingsManager.manifest
dom/settings/SettingsRequestManager.jsm
dom/settings/SettingsService.js
dom/settings/SettingsService.manifest
dom/settings/moz.build
dom/settings/tests/chrome.ini
dom/settings/tests/file_bug1110872.html
dom/settings/tests/file_bug1110872.js
dom/settings/tests/file_loadserver.js
dom/settings/tests/test_settings_basics.html
dom/settings/tests/test_settings_blobs.html
dom/settings/tests/test_settings_bug1110872.html
dom/settings/tests/test_settings_data_uris.html
dom/settings/tests/test_settings_events.html
dom/settings/tests/test_settings_navigator_object.html
dom/settings/tests/test_settings_observer_killer.html
dom/settings/tests/test_settings_onsettingchange.html
dom/settings/tests/test_settings_permissions.html
dom/settings/tests/test_settings_service.js
dom/settings/tests/test_settings_service.xul
dom/settings/tests/test_settings_service_callback.js
dom/settings/tests/test_settings_service_callback.xul
dom/settings/tests/unit/test_settingsrequestmanager_messages.js
dom/settings/tests/unit/xpcshell.ini
dom/system/NetworkGeolocationProvider.js
dom/tests/mochitest/general/test_interfaces.html
dom/webidl/MozSettingsEvent.webidl
dom/webidl/MozSettingsTransactionEvent.webidl
dom/webidl/SettingsManager.webidl
dom/webidl/moz.build
mobile/android/installer/package-manifest.in
modules/libpref/init/all.js
testing/profiles/prefs_general.js
tools/lint/eslint/modules.json
--- a/accessible/jsat/AccessFu.jsm
+++ b/accessible/jsat/AccessFu.jsm
@@ -32,26 +32,16 @@ this.AccessFu = { // jshint ignore:line
   attach: function attach(aWindow) {
     Utils.init(aWindow);
 
     try {
       Services.androidBridge.dispatch('Accessibility:Ready');
       Services.obs.addObserver(this, 'Accessibility:Settings', false);
     } catch (x) {
       // Not on Android
-      if (aWindow.navigator.mozSettings) {
-        let lock = aWindow.navigator.mozSettings.createLock();
-        let req = lock.get(SCREENREADER_SETTING);
-        req.addEventListener('success', () => {
-          this._systemPref = req.result[SCREENREADER_SETTING];
-          this._enableOrDisable();
-        });
-        aWindow.navigator.mozSettings.addObserver(
-          SCREENREADER_SETTING, this.handleEvent);
-      }
     }
 
     this._activatePref = new PrefCache(
       'accessibility.accessfu.activate', this._enableOrDisable.bind(this));
 
     this._enableOrDisable();
   },
 
@@ -60,19 +50,16 @@ this.AccessFu = { // jshint ignore:line
    */
   detach: function detach() {
     // Avoid disabling twice.
     if (this._enabled) {
       this._disable();
     }
     if (Utils.MozBuildApp === 'mobile/android') {
       Services.obs.removeObserver(this, 'Accessibility:Settings');
-    } else if (Utils.win.navigator.mozSettings) {
-      Utils.win.navigator.mozSettings.removeObserver(
-        SCREENREADER_SETTING, this.handleEvent);
     }
     delete this._activatePref;
     Utils.uninit();
   },
 
   /**
    * A lazy getter for event handler that binds the scope to AccessFu object.
    */
--- a/accessible/jsat/Utils.jsm
+++ b/accessible/jsat/Utils.jsm
@@ -1,15 +1,15 @@
 /* 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/. */
 
 /* global Components, XPCOMUtils, Services, PluralForm, Logger, Rect, Utils,
           States, Relations, Roles, dump, Events, PivotContext, PrefCache */
-/* exported Utils, Logger, PivotContext, PrefCache, SettingCache */
+/* exported Utils, Logger, PivotContext, PrefCache */
 
 'use strict';
 
 const {classes: Cc, utils: Cu, interfaces: Ci} = Components;
 
 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'Services', // jshint ignore:line
   'resource://gre/modules/Services.jsm');
@@ -21,18 +21,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
   'resource://gre/modules/accessibility/Constants.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'Relations', // jshint ignore:line
   'resource://gre/modules/accessibility/Constants.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'States', // jshint ignore:line
   'resource://gre/modules/accessibility/Constants.jsm');
 XPCOMUtils.defineLazyModuleGetter(this, 'PluralForm', // jshint ignore:line
   'resource://gre/modules/PluralForm.jsm');
 
-this.EXPORTED_SYMBOLS = ['Utils', 'Logger', 'PivotContext', 'PrefCache',  // jshint ignore:line
-                         'SettingCache'];
+this.EXPORTED_SYMBOLS = ['Utils', 'Logger', 'PivotContext', 'PrefCache']; // jshint ignore:line
 
 this.Utils = { // jshint ignore:line
   _buildAppMap: {
     '{3c2e2abc-06d4-11e1-ac3b-374f68613e61}': 'b2g',
     '{d1bfe7d9-c01e-4237-998b-7b5f960a4314}': 'graphene',
     '{ec8030f7-c20a-464f-9b0e-13a3a9e97384}': 'browser',
     '{aa3c5121-dab2-40e2-81ca-7ea25febc110}': 'mobile/android',
     '{a23983c0-fd0e-11dc-95ff-0800200c9a66}': 'mobile/xul'
@@ -1069,46 +1068,8 @@ PrefCache.prototype = {
         Logger.logException(x);
       }
     }
   },
 
   QueryInterface : XPCOMUtils.generateQI([Ci.nsIObserver,
                                           Ci.nsISupportsWeakReference])
 };
-
-this.SettingCache = function SettingCache(aName, aCallback, aOptions = {}) { // jshint ignore:line
-  this.value = aOptions.defaultValue;
-  let runCallback = () => {
-    if (aCallback) {
-      aCallback(aName, this.value);
-      if (aOptions.callbackOnce) {
-        runCallback = () => {};
-      }
-    }
-  };
-
-  let settings = Utils.win.navigator.mozSettings;
-  if (!settings) {
-    if (aOptions.callbackNow) {
-      runCallback();
-    }
-    return;
-  }
-
-
-  let lock = settings.createLock();
-  let req = lock.get(aName);
-
-  req.addEventListener('success', () => {
-    this.value = req.result[aName] === undefined ?
-      aOptions.defaultValue : req.result[aName];
-    if (aOptions.callbackNow) {
-      runCallback();
-    }
-  });
-
-  settings.addObserver(aName,
-                       (evt) => {
-                         this.value = evt.settingValue;
-                         runCallback();
-                       });
-};
--- a/accessible/tests/mochitest/jsat/jsatcommon.js
+++ b/accessible/tests/mochitest/jsat/jsatcommon.js
@@ -144,18 +144,17 @@ var AccessFuTest = {
     AccessFu.attach(getMainChromeWindow(window));
 
     AccessFu.readyCallback = function readyCallback() {
       // Enable logging to the console service.
       Logger.test = true;
       Logger.logLevel = Logger.DEBUG;
     };
 
-    var prefs = [['accessibility.accessfu.notify_output', 1],
-      ['dom.mozSettings.enabled', true]];
+    var prefs = [['accessibility.accessfu.notify_output', 1]];
     prefs.push.apply(prefs, aAdditionalPrefs);
 
     this.originalDwellThreshold = GestureSettings.dwellThreshold;
     this.originalSwipeMaxDuration = GestureSettings.swipeMaxDuration;
     this.originalMaxGestureResolveTimeout =
       GestureSettings.maxGestureResolveTimeout;
     // https://bugzilla.mozilla.org/show_bug.cgi?id=1001945 - sometimes
     // SimpleTest.executeSoon timeout is bigger than the timer settings in
--- a/addon-sdk/source/python-lib/cuddlefish/prefs.py
+++ b/addon-sdk/source/python-lib/cuddlefish/prefs.py
@@ -211,17 +211,16 @@ DEFAULT_TEST_PREFS = {
     'security.default_personal_cert': 'Select Automatically',
     'network.http.prompt-temp-redirect': False,
     'security.warn_viewing_mixed': False,
     'extensions.defaultProviders.enabled': True,
     'datareporting.policy.dataSubmissionPolicyBypassNotification': True,
     'layout.css.report_errors': True,
     'layout.css.grid.enabled': True,
     'layout.spammy_warnings.enabled': False,
-    'dom.mozSettings.enabled': True,
     # Make sure the disk cache doesn't get auto disabled
     'network.http.bypass-cachelock-threshold': 200000,
     # Always use network provider for geolocation tests
     # so we bypass the OSX dialog raised by the corelocation provider
     'geo.provider.testing': True,
     # Background thumbnails in particular cause grief, and disabling thumbnails
     # in general can't hurt - we re-enable them when tests need them.
     'browser.pagethumbnails.capturing_disabled': True,
--- a/addon-sdk/source/test/preferences/test.json
+++ b/addon-sdk/source/test/preferences/test.json
@@ -26,17 +26,16 @@
   "security.default_personal_cert": "Select Automatically",
   "network.http.prompt-temp-redirect": false,
   "security.warn_viewing_mixed": false,
   "extensions.defaultProviders.enabled": true,
   "datareporting.policy.dataSubmissionPolicyBypassNotification": true,
   "layout.css.report_errors": true,
   "layout.css.grid.enabled": true,
   "layout.spammy_warnings.enabled": false,
-  "dom.mozSettings.enabled": true,
   "network.http.bypass-cachelock-threshold": 200000,
   "geo.provider.testing": true,
   "browser.pagethumbnails.capturing_disabled": true,
   "browser.download.panel.shown": true,
   "general.useragent.updates.enabled": false,
   "media.eme.enabled": true,
   "media.eme.apiVisible": true,
   "dom.ipc.tabs.shutdownTimeoutSecs": 0,
--- a/b2g/app/b2g.js
+++ b/b2g/app/b2g.js
@@ -273,17 +273,16 @@ pref("ui.graytext", "#b1a598");
 pref("ui.highlighttext", "#1a1a1a");
 pref("ui.threeddarkshadow", "#000");
 pref("ui.threedface", "#ece7e2");
 pref("ui.threedhighlight", "#fff");
 pref("ui.threedlightshadow", "#ece7e2");
 pref("ui.threedshadow", "#aea194");
 pref("ui.windowframe", "#efebe7");
 
-// Themable via mozSettings
 pref("ui.menu", "#f97c17");
 pref("ui.menutext", "#ffffff");
 pref("ui.infobackground", "#343e40");
 pref("ui.infotext", "#686868");
 pref("ui.window", "#ffffff");
 pref("ui.windowtext", "#000000");
 pref("ui.highlight", "#b2f2ff");
 
@@ -404,19 +403,16 @@ pref("dom.phonenumber.substringmatching.
 pref("dom.webapps.firstRunWithSIM", true);
 #endif
 
 #ifdef MOZ_B2G_RIL
 // SingleVariant
 pref("dom.mozApps.single_variant_sourcedir", "/persist/svoperapps");
 #endif
 
-// WebSettings
-pref("dom.mozSettings.enabled", true);
-
 // controls if we want camera support
 pref("device.camera.enabled", true);
 pref("media.realtime_decoder.enabled", true);
 
 // TCPSocket
 pref("dom.mozTCPSocket.enabled", true);
 
 // "Preview" landing of bug 710563, which is bogged down in analysis
@@ -911,37 +907,16 @@ pref("identity.fxaccounts.remote.profile
 pref("identity.fxaccounts.skipDeviceRegistration", true);
 
 // Enable mapped array buffer.
 pref("dom.mapped_arraybuffer.enabled", true);
 
 // UDPSocket API
 pref("dom.udpsocket.enabled", true);
 
-// Enable TV Manager API
-pref("dom.tv.enabled", true);
-
-// Enable Inputport Manager API
-pref("dom.inputport.enabled", true);
-
-pref("dom.mozSettings.SettingsDB.debug.enabled", true);
-pref("dom.mozSettings.SettingsManager.debug.enabled", true);
-pref("dom.mozSettings.SettingsRequestManager.debug.enabled", true);
-pref("dom.mozSettings.SettingsService.debug.enabled", true);
-
-pref("dom.mozSettings.SettingsDB.verbose.enabled", false);
-pref("dom.mozSettings.SettingsManager.verbose.enabled", false);
-pref("dom.mozSettings.SettingsRequestManager.verbose.enabled", false);
-pref("dom.mozSettings.SettingsService.verbose.enabled", false);
-
-// Controlling whether we want to allow forcing some Settings
-// IndexedDB transactions to be opened as readonly or keep everything as
-// readwrite.
-pref("dom.mozSettings.allowForceReadOnly", false);
-
 // Comma separated list of activity names that can only be provided by
 // the system app in dev mode.
 pref("dom.activities.developer_mode_only", "import-app");
 
 // mulet apparently loads firefox.js as well as b2g.js, so we have to explicitly
 // disable serviceworkers and push here to get them disabled in mulet.
 pref("dom.serviceWorkers.enabled", false);
 pref("dom.push.enabled", false);
--- a/b2g/chrome/content/desktop.js
+++ b/b2g/chrome/content/desktop.js
@@ -106,18 +106,16 @@ function checkDebuggerPort() {
   let dbgport;
   try {
     dbgport = args.handleFlagWithParam('start-debugger-server', false);
   } catch(e) {}
 
   if (dbgport) {
     dump('Opening debugger server on ' + dbgport + '\n');
     Services.prefs.setCharPref('devtools.debugger.unix-domain-socket', dbgport);
-    navigator.mozSettings.createLock().set(
-      {'debugger.remote-mode': 'adb-devtools'});
   }
 }
 
 
 function initResponsiveDesign() {
   Cu.import('resource://devtools/client/responsivedesign/responsivedesign.jsm');
   ResponsiveUIManager.on('on', function(event, {tab:tab}) {
     let responsive = ResponsiveUIManager.getResponsiveUIForTab(tab);
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -202,17 +202,16 @@
 @RESPATH@/components/dom_html.xpt
 @RESPATH@/components/dom_offline.xpt
 @RESPATH@/components/dom_json.xpt
 @RESPATH@/components/dom_power.xpt
 @RESPATH@/components/dom_push.xpt
 @RESPATH@/components/dom_quota.xpt
 @RESPATH@/components/dom_range.xpt
 @RESPATH@/components/dom_security.xpt
-@RESPATH@/components/dom_settings.xpt
 @RESPATH@/components/dom_sidebar.xpt
 @RESPATH@/components/dom_storage.xpt
 @RESPATH@/components/dom_stylesheets.xpt
 @RESPATH@/components/dom_traversal.xpt
 #ifdef MOZ_WEBSPEECH
 @RESPATH@/components/dom_webspeechrecognition.xpt
 #endif
 @RESPATH@/components/dom_workers.xpt
@@ -496,18 +495,16 @@
 @RESPATH@/components/servicesComponents.manifest
 @RESPATH@/components/cryptoComponents.manifest
 @RESPATH@/components/TelemetryStartup.js
 @RESPATH@/components/TelemetryStartup.manifest
 @RESPATH@/components/XULStore.js
 @RESPATH@/components/XULStore.manifest
 @RESPATH@/components/messageWakeupService.js
 @RESPATH@/components/messageWakeupService.manifest
-@RESPATH@/components/SettingsManager.js
-@RESPATH@/components/SettingsManager.manifest
 @RESPATH@/components/recording-cmdline.js
 @RESPATH@/components/recording-cmdline.manifest
 @RESPATH@/components/htmlMenuBuilder.js
 @RESPATH@/components/htmlMenuBuilder.manifest
 
 @RESPATH@/components/NotificationStorage.js
 @RESPATH@/components/NotificationStorage.manifest
 @RESPATH@/components/Push.js
deleted file mode 100644
--- a/devtools/client/webide/content/devicesettings.js
+++ /dev/null
@@ -1,81 +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/. */
-
-var Cu = Components.utils;
-const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
-const {AppManager} = require("devtools/client/webide/modules/app-manager");
-const {Connection} = require("devtools/shared/client/connection-manager");
-const ConfigView = require("devtools/client/webide/modules/config-view");
-
-var configView = new ConfigView(window);
-
-window.addEventListener("load", function onLoad() {
-  window.removeEventListener("load", onLoad);
-  AppManager.on("app-manager-update", OnAppManagerUpdate);
-  document.getElementById("close").onclick = CloseUI;
-  document.getElementById("device-fields").onchange = UpdateField;
-  document.getElementById("device-fields").onclick = CheckReset;
-  document.getElementById("search-bar").onkeyup = document.getElementById("search-bar").onclick = SearchField;
-  document.getElementById("custom-value").onclick = UpdateNewField;
-  document.getElementById("custom-value-type").onchange = ClearNewFields;
-  document.getElementById("add-custom-field").onkeyup = CheckNewFieldSubmit;
-  BuildUI();
-}, true);
-
-window.addEventListener("unload", function onUnload() {
-  window.removeEventListener("unload", onUnload);
-  AppManager.off("app-manager-update", OnAppManagerUpdate);
-});
-
-function CloseUI() {
-  window.parent.UI.openProject();
-}
-
-function OnAppManagerUpdate(event, what) {
-  if (what == "connection" || what == "runtime-global-actors") {
-    BuildUI();
-  }
-}
-
-function CheckNewFieldSubmit(event) {
-  configView.checkNewFieldSubmit(event);
-}
-
-function UpdateNewField() {
-  configView.updateNewField();
-}
-
-function ClearNewFields() {
-  configView.clearNewFields();
-}
-
-function CheckReset(event) {
-  configView.checkReset(event);
-}
-
-function UpdateField(event) {
-  configView.updateField(event);
-}
-
-function SearchField(event) {
-  configView.search(event);
-}
-
-var getAllSettings; // Used by tests
-function BuildUI() {
-  configView.resetTable();
-
-  if (AppManager.connection &&
-      AppManager.connection.status == Connection.Status.CONNECTED &&
-      AppManager.settingsFront) {
-    configView.front = AppManager.settingsFront;
-    configView.kind = "Setting";
-    configView.includeTypeName = false;
-
-    getAllSettings = AppManager.settingsFront.getAllSettings()
-                     .then(json => configView.generateDisplay(json));
-  } else {
-    CloseUI();
-  }
-}
deleted file mode 100644
--- a/devtools/client/webide/content/devicesettings.xhtml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 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/. -->
-
-<!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
-  %webideDTD;
-]>
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta charset="utf8"/>
-    <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
-    <link rel="stylesheet" href="chrome://webide/skin/config-view.css" type="text/css"/>
-    <script type="application/javascript;version=1.8" src="chrome://webide/content/devicesettings.js"></script>
-  </head>
-  <body>
-    <header>
-      <div id="controls">
-        <a id="close">&deck_close;</a>
-      </div>
-      <h1>&devicesetting_title;</h1>
-      <div id="search">
-        <input type="text" id="search-bar" placeholder="&devicesetting_search;"/>
-      </div>
-    </header>
-    <table id="device-fields">
-      <tr id="add-custom-field">
-        <td>
-          <select id="custom-value-type">
-            <option value="" selected="selected">&device_typenone;</option>
-            <option value="boolean">&device_typeboolean;</option>
-            <option value="number">&device_typenumber;</option>
-            <option value="string">&device_typestring;</option>
-            <option value="object">&device_typeobject;</option>
-          </select>
-          <input type="text" id="custom-value-name" placeholder="&devicesetting_newname;"/>
-        </td>
-        <td class="custom-input">
-          <input type="text" id="custom-value-text" placeholder="&devicesetting_newtext;"/>
-        </td>
-        <td>
-          <button id="custom-value" class="new-editable">&devicesetting_addnew;</button>
-        </td>
-      </tr>
-    </table>
-  </body>
-</html>
--- a/devtools/client/webide/content/jar.mn
+++ b/devtools/client/webide/content/jar.mn
@@ -15,18 +15,16 @@ webide.jar:
     content/runtimedetails.js         (runtimedetails.js)
     content/runtimedetails.xhtml      (runtimedetails.xhtml)
     content/prefs.js                  (prefs.js)
     content/prefs.xhtml               (prefs.xhtml)
     content/monitor.xhtml             (monitor.xhtml)
     content/monitor.js                (monitor.js)
     content/devicepreferences.js      (devicepreferences.js)
     content/devicepreferences.xhtml   (devicepreferences.xhtml)
-    content/devicesettings.js         (devicesettings.js)
-    content/devicesettings.xhtml      (devicesettings.xhtml)
     content/wifi-auth.js              (wifi-auth.js)
     content/wifi-auth.xhtml           (wifi-auth.xhtml)
     content/logs.xhtml                (logs.xhtml)
     content/logs.js                   (logs.js)
     content/project-listing.xhtml     (project-listing.xhtml)
     content/project-listing.js        (project-listing.js)
     content/project-panel.js          (project-panel.js)
     content/runtime-panel.js          (runtime-panel.js)
--- a/devtools/client/webide/content/webide.js
+++ b/devtools/client/webide/content/webide.js
@@ -449,19 +449,16 @@ var UI = {
       if (AppManager.deviceFront) {
         monitorCmd.removeAttribute("disabled");
         detailsCmd.removeAttribute("disabled");
         screenshotCmd.removeAttribute("disabled");
       }
       if (AppManager.preferenceFront) {
         devicePrefsCmd.removeAttribute("disabled");
       }
-      if (AppManager.settingsFront) {
-        settingsCmd.removeAttribute("disabled");
-      }
       disconnectCmd.removeAttribute("disabled");
     } else {
       monitorCmd.setAttribute("disabled", "true");
       detailsCmd.setAttribute("disabled", "true");
       screenshotCmd.setAttribute("disabled", "true");
       disconnectCmd.setAttribute("disabled", "true");
       devicePrefsCmd.setAttribute("disabled", "true");
       settingsCmd.setAttribute("disabled", "true");
@@ -1047,20 +1044,16 @@ var Cmds = {
   showRuntimeDetails: function () {
     UI.selectDeckPanel("runtimedetails");
   },
 
   showDevicePrefs: function () {
     UI.selectDeckPanel("devicepreferences");
   },
 
-  showSettings: function () {
-    UI.selectDeckPanel("devicesettings");
-  },
-
   showMonitor: function () {
     UI.selectDeckPanel("monitor");
   },
 
   play: Task.async(function* () {
     let busy;
     switch (AppManager.selectedProject.type) {
       case "packaged":
--- a/devtools/client/webide/content/webide.xul
+++ b/devtools/client/webide/content/webide.xul
@@ -152,17 +152,16 @@
       <deck flex="1" id="deck" selectedIndex="-1">
         <iframe id="deck-panel-details" flex="1" src="details.xhtml"/>
         <iframe id="deck-panel-projecteditor" flex="1"/>
         <iframe id="deck-panel-addons" flex="1" src="addons.xhtml"/>
         <iframe id="deck-panel-prefs" flex="1" src="prefs.xhtml"/>
         <iframe id="deck-panel-runtimedetails" flex="1" lazysrc="runtimedetails.xhtml"/>
         <iframe id="deck-panel-monitor" flex="1" lazysrc="monitor.xhtml"/>
         <iframe id="deck-panel-devicepreferences" flex="1" lazysrc="devicepreferences.xhtml"/>
-        <iframe id="deck-panel-devicesettings" flex="1" lazysrc="devicesettings.xhtml"/>
         <iframe id="deck-panel-logs" flex="1" src="logs.xhtml"/>
         <iframe id="deck-panel-simulator" flex="1" lazysrc="simulator.xhtml"/>
       </deck>
       <splitter class="devtools-side-splitter" id="runtime-listing-splitter"/>
       <vbox id="runtime-listing-panel" class="runtime-listing panel-list" flex="1">
         <div id="runtime-listing-wrapper" class="panel-list-wrapper">
           <iframe id="runtime-listing-panel-details" flex="1" src="runtime-listing.xhtml" tooltip="aHTMLTooltip"/>
         </div>
--- a/devtools/client/webide/modules/app-manager.js
+++ b/devtools/client/webide/modules/app-manager.js
@@ -12,17 +12,16 @@ const EventEmitter = require("devtools/s
 const {TextEncoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
 const {AppProjects} = require("devtools/client/webide/modules/app-projects");
 const TabStore = require("devtools/client/webide/modules/tab-store");
 const {AppValidator} = require("devtools/client/webide/modules/app-validator");
 const {ConnectionManager, Connection} = require("devtools/shared/client/connection-manager");
 const {AppActorFront} = require("devtools/shared/apps/app-actor-front");
 const {getDeviceFront} = require("devtools/shared/fronts/device");
 const {getPreferenceFront} = require("devtools/shared/fronts/preference");
-const {getSettingsFront} = require("devtools/shared/fronts/settings");
 const {Task} = require("devtools/shared/task");
 const {RuntimeScanners, RuntimeTypes} = require("devtools/client/webide/modules/runtimes");
 const {NetUtil} = Cu.import("resource://gre/modules/NetUtil.jsm", {});
 const Telemetry = require("devtools/client/shared/telemetry");
 const {ProjectBuilding} = require("./build");
 
 const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
@@ -564,23 +563,16 @@ var AppManager = exports.AppManager = {
 
   get preferenceFront() {
     if (!this._listTabsResponse) {
       return null;
     }
     return getPreferenceFront(this.connection.client, this._listTabsResponse);
   },
 
-  get settingsFront() {
-    if (!this._listTabsResponse) {
-      return null;
-    }
-    return getSettingsFront(this.connection.client, this._listTabsResponse);
-  },
-
   disconnectRuntime: function () {
     if (!this.connected) {
       return promise.resolve();
     }
     let deferred = promise.defer();
     this.connection.once(Connection.Events.DISCONNECTED, () => deferred.resolve());
     this.connection.disconnect();
     return deferred.promise;
--- a/devtools/client/webide/modules/runtime-list.js
+++ b/devtools/client/webide/modules/runtime-list.js
@@ -99,19 +99,16 @@ RuntimeList.prototype = {
     if (AppManager.connected) {
       if (AppManager.deviceFront) {
         detailsCmd.removeAttribute("disabled");
         screenshotCmd.removeAttribute("disabled");
       }
       if (AppManager.preferenceFront) {
         devicePrefsCmd.removeAttribute("disabled");
       }
-      if (AppManager.settingsFront) {
-        settingsCmd.removeAttribute("disabled");
-      }
       disconnectCmd.removeAttribute("disabled");
     } else {
       detailsCmd.setAttribute("disabled", "true");
       screenshotCmd.setAttribute("disabled", "true");
       disconnectCmd.setAttribute("disabled", "true");
       devicePrefsCmd.setAttribute("disabled", "true");
       settingsCmd.setAttribute("disabled", "true");
     }
--- a/devtools/client/webide/test/chrome.ini
+++ b/devtools/client/webide/test/chrome.ini
@@ -55,16 +55,15 @@ skip-if = (os == "linux") # Bug 1024734
 [test_addons.html]
 skip-if = true # Bug 1201392 - Update add-ons after migration
 [test_device_runtime.html]
 [test_autoconnect_runtime.html]
 [test_autoselect_project.html]
 [test_telemetry.html]
 skip-if = true # Bug 1201392 - Update add-ons after migration
 [test_device_preferences.html]
-[test_device_settings.html]
 [test_fullscreenToolbox.html]
 [test_zoom.html]
 [test_build.html]
 [test_simulators.html]
 skip-if = true # Bug 1281138 - intermittent failures
 [test_toolbox.html]
 [test_app_validator.html]
deleted file mode 100644
--- a/devtools/client/webide/test/test_device_settings.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-
-  <head>
-    <meta charset="utf8">
-    <title></title>
-    <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-    <script type="application/javascript" src="chrome://mochikit/content/chrome-harness.js"></script>
-    <script type="application/javascript;version=1.8" src="head.js"></script>
-    <script type="application/javascript;version=1.8" src="device_front_shared.js"></script>
-    <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
-  </head>
-
-  <body>
-
-    <script type="application/javascript;version=1.8">
-      window.onload = function() {
-        SimpleTest.waitForExplicitFinish();
-
-        Task.spawn(function*() {
-          if (SpecialPowers.isMainProcess()) {
-            Cu.import("resource://gre/modules/SettingsRequestManager.jsm");
-          }
-
-          if (!DebuggerServer.initialized) {
-            DebuggerServer.init();
-            DebuggerServer.addBrowserActors();
-          }
-
-          let win = yield openWebIDE();
-
-          let settingIframe = win.document.querySelector("#deck-panel-devicesettings");
-          let docRuntime = getRuntimeDocument(win);
-
-          win.AppManager.update("runtime-list");
-
-          yield connectToLocalRuntime(win);
-
-          let settings = docRuntime.querySelector("#runtime-settings");
-
-          ok(!settings.hasAttribute("disabled"), "device settings cmd enabled");
-
-          let deck = win.document.querySelector("#deck");
-
-          win.Cmds.showSettings();
-          is(deck.selectedPanel, settingIframe, "device settings iframe selected");
-
-          yield nextTick();
-
-          yield lazyIframeIsLoaded(settingIframe);
-
-          yield settingIframe.contentWindow.getAllSettings;
-
-          setDocument(settingIframe);
-
-          let fields = doc.querySelectorAll(".editable");
-
-          addNewField();
-
-          addNewFieldWithEnter();
-
-          editExistingField();
-
-          addNewFieldInteger();
-
-          yield editFieldInteger();
-
-          yield resetNewField("new-string-field");
-
-          addNewFieldBoolean();
-
-          searchFields(deck, "new-boolean-field2");
-
-          DebuggerServer.destroy();
-
-          yield closeWebIDE(win);
-
-          SimpleTest.finish();
-        }).then(null, e => {
-          ok(false, "Exception: " + e);
-          SimpleTest.finish();
-        });
-      }
-    </script>
-  </body>
-</html>
--- a/devtools/server/actors/moz.build
+++ b/devtools/server/actors/moz.build
@@ -47,17 +47,16 @@ DevToolsModules(
     'preference.js',
     'pretty-print-worker.js',
     'process.js',
     'profiler.js',
     'promises.js',
     'reflow.js',
     'root.js',
     'script.js',
-    'settings.js',
     'source.js',
     'storage.js',
     'string.js',
     'styleeditor.js',
     'styles.js',
     'stylesheets.js',
     'tab.js',
     'timeline.js',
deleted file mode 100644
--- a/devtools/server/actors/settings.js
+++ /dev/null
@@ -1,148 +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/. */
-
-"use strict";
-
-const {Cc, Ci} = require("chrome");
-const protocol = require("devtools/shared/protocol");
-const {DebuggerServer} = require("devtools/server/main");
-const promise = require("promise");
-const Services = require("Services");
-const { settingsSpec } = require("devtools/shared/specs/settings");
-const { FileUtils} = require("resource://gre/modules/FileUtils.jsm");
-const { NetUtil} = require("resource://gre/modules/NetUtil.jsm");
-
-var defaultSettings = {};
-var settingsFile;
-
-exports.register = function (handle) {
-  handle.addGlobalActor(SettingsActor, "settingsActor");
-};
-
-exports.unregister = function (handle) {
-};
-
-function getDefaultSettings() {
-  let chan = NetUtil.newChannel({
-    uri: NetUtil.newURI(settingsFile),
-    loadUsingSystemPrincipal: true});
-  let stream = chan.open2();
-  // Obtain a converter to read from a UTF-8 encoded input stream.
-  let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
-                  .createInstance(Ci.nsIScriptableUnicodeConverter);
-  converter.charset = "UTF-8";
-  let rawstr = converter.ConvertToUnicode(NetUtil.readInputStreamToString(
-                                          stream,
-                                          stream.available()) || "");
-
-  try {
-    defaultSettings = JSON.parse(rawstr);
-  } catch (e) {
-    // ignore
-  }
-  stream.close();
-}
-
-function loadSettingsFile() {
-  // Loading resource://app/defaults/settings.json doesn't work because
-  // settings.json is not in the omnijar.
-  // So we look for the app dir instead and go from here...
-  if (settingsFile) {
-    return;
-  }
-  settingsFile = FileUtils.getFile("DefRt", ["settings.json"], false);
-  if (!settingsFile || (settingsFile && !settingsFile.exists())) {
-    // On b2g desktop builds the settings.json file is moved in the
-    // profile directory by the build system.
-    settingsFile = FileUtils.getFile("ProfD", ["settings.json"], false);
-    if (!settingsFile || (settingsFile && !settingsFile.exists())) {
-      console.log("settings.json file does not exist");
-    }
-  }
-
-  if (settingsFile.exists()) {
-    getDefaultSettings();
-  }
-}
-
-var SettingsActor = exports.SettingsActor = protocol.ActorClassWithSpec(settingsSpec, {
-  _getSettingsService: function () {
-    let win = Services.wm.getMostRecentWindow(DebuggerServer.chromeWindowType);
-    return win.navigator.mozSettings;
-  },
-
-  getSetting: function (name) {
-    let deferred = promise.defer();
-    let lock = this._getSettingsService().createLock();
-    let req = lock.get(name);
-    req.onsuccess = function () {
-      deferred.resolve(req.result[name]);
-    };
-    req.onerror = function () {
-      deferred.reject(req.error);
-    };
-    return deferred.promise;
-  },
-
-  setSetting: function (name, value) {
-    let deferred = promise.defer();
-    let data = {};
-    data[name] = value;
-    let lock = this._getSettingsService().createLock();
-    let req = lock.set(data);
-    req.onsuccess = function () {
-      deferred.resolve(true);
-    };
-    req.onerror = function () {
-      deferred.reject(req.error);
-    };
-    return deferred.promise;
-  },
-
-  _hasUserSetting: function (name, value) {
-    if (typeof value === "object") {
-      return JSON.stringify(defaultSettings[name]) !== JSON.stringify(value);
-    }
-    return (defaultSettings[name] !== value);
-  },
-
-  getAllSettings: function () {
-    loadSettingsFile();
-    let settings = {};
-    let self = this;
-
-    let deferred = promise.defer();
-    let lock = this._getSettingsService().createLock();
-    let req = lock.get("*");
-
-    req.onsuccess = function () {
-      for (let name in req.result) {
-        settings[name] = {
-          value: req.result[name],
-          hasUserValue: self._hasUserSetting(name, req.result[name])
-        };
-      }
-      deferred.resolve(settings);
-    };
-    req.onfailure = function () {
-      deferred.reject(req.error);
-    };
-
-    return deferred.promise;
-  },
-
-  clearUserSetting: function (name) {
-    loadSettingsFile();
-    try {
-      this.setSetting(name, defaultSettings[name]);
-    } catch (e) {
-      console.log(e);
-    }
-  }
-});
-
-// For tests
-exports._setDefaultSettings = function (settings) {
-  defaultSettings = settings || {};
-};
--- a/devtools/server/main.js
+++ b/devtools/server/main.js
@@ -428,23 +428,16 @@ var DebuggerServer = {
         type: { global: true }
       });
       this.registerModule("devtools/server/actors/actor-registry", {
         prefix: "actorRegistry",
         constructor: "ActorRegistryActor",
         type: { global: true }
       });
     }
-    if (Services.prefs.getBoolPref("dom.mozSettings.enabled")) {
-      this.registerModule("devtools/server/actors/settings", {
-        prefix: "settings",
-        constructor: "SettingsActor",
-        type: { global: true }
-      });
-    }
     this.registerModule("devtools/server/actors/addons", {
       prefix: "addons",
       constructor: "AddonsActor",
       type: { global: true }
     });
     this.registerModule("devtools/server/actors/device", {
       prefix: "device",
       constructor: "DeviceActor",
--- a/devtools/server/tests/mochitest/chrome.ini
+++ b/devtools/server/tests/mochitest/chrome.ini
@@ -84,17 +84,16 @@ support-files =
 [test_memory_allocations_06.html]
 [test_memory_allocations_07.html]
 [test_memory_attach_01.html]
 [test_memory_attach_02.html]
 [test_memory_census.html]
 [test_memory_gc_01.html]
 [test_memory_gc_events.html]
 [test_preference.html]
-[test_settings.html]
 [test_setupInParentChild.html]
 [test_styles-applied.html]
 [test_styles-computed.html]
 [test_styles-layout.html]
 [test_styles-matched.html]
 [test_styles-modify.html]
 [test_styles-svg.html]
 [test_unsafeDereference.html]
deleted file mode 100644
--- a/devtools/server/tests/mochitest/test_settings.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-Bug 1022797 - Settings support from WebIDE
--->
-<head>
-  <meta charset="utf-8">
-  <title>Test Settings Actor</title>
-  <script type="text/javascript" src="chrome://mochikit/content/MochiKit/MochiKit.js"></script>
-  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
-</head>
-<body>
-<pre id="test">
-<script>
-
-function runTests() {
-  var Cu = Components.utils;
-  var Cc = Components.classes;
-  var Ci = Components.interfaces;
-
-  var {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
-  var {DebuggerClient} = require("devtools/shared/client/main");
-  var {DebuggerServer} = require("devtools/server/main");
-
-  if (SpecialPowers.isMainProcess()) {
-    Cu.import("resource://gre/modules/SettingsRequestManager.jsm");
-  }
-
-  SimpleTest.waitForExplicitFinish();
-
-  var {getSettingsFront} = require("devtools/shared/fronts/settings");
-  var {_setDefaultSettings} = require("devtools/server/actors/settings");
-
-  DebuggerServer.init(function () { return true; });
-  DebuggerServer.addBrowserActors();
-
-  var client = new DebuggerClient(DebuggerServer.connectPipe());
-  client.connect().then(function onConnect() {
-    client.listTabs(function onListTabs(aResponse) {
-      var s = getSettingsFront(client, aResponse);
-
-      var settings = {};
-      var resetSettings = {};
-      var fakeSettings = {
-        "wifi.enabled": true,
-        "audio.volume.alarm": 15,
-        "app.reportCrashes": "ask",
-        "app.someObject": { active: true }
-      };
-      var localSetting = {
-        "wifi.enabled": false,
-        "audio.volume.alarm": 0,
-        "app.reportCrashes": "none",
-        "app.someObject": {}
-      };
-
-      function checkValues() {
-        is(settings.allSettings["wifi.enabled"].hasUserValue, false, "original unchanged bool setting");
-        is(settings.allSettings["audio.volume.alarm"].hasUserValue, false, "original unchanged int setting");
-        is(settings.allSettings["app.reportCrashes"].hasUserValue, false, "original unchanged string setting");
-        is(settings.allSettings["app.someObject"].hasUserValue, false, "original unchanged object setting");
-
-        is(settings.allSettings["wifi.enabled"].value, fakeSettings["wifi.enabled"], "original read/write bool setting");
-        is(settings.allSettings["audio.volume.alarm"].value, fakeSettings["audio.volume.alarm"], "original read/write int setting");
-        is(settings.allSettings["app.reportCrashes"].value, fakeSettings["app.reportCrashes"], "original read/write string setting");
-        is(JSON.stringify(settings.allSettings["app.someObject"].value), JSON.stringify(fakeSettings["app.someObject"]), "original read/write object setting");
-
-        is(settings.allUpdatedSettings["wifi.enabled"].hasUserValue, true, "updated user-changed bool setting");
-        is(settings.allUpdatedSettings["audio.volume.alarm"].hasUserValue, true, "updated user-changed int setting");
-        is(settings.allUpdatedSettings["app.reportCrashes"].hasUserValue, true, "updated user-changed string setting");
-        is(settings.allUpdatedSettings["app.someObject"].hasUserValue, true, "updated user-changed object setting");
-
-        is(settings["wifi.enabled"], localSetting["wifi.enabled"], "updated bool setting");
-        is(settings["audio.volume.alarm"], localSetting["audio.volume.alarm"], "updated int setting");
-        is(settings["app.reportCrashes"], localSetting["app.reportCrashes"], "updated string setting");
-        is(JSON.stringify(settings["app.someObject"]), JSON.stringify(localSetting["app.someObject"]), "updated object as string setting");
-
-        is(resetSettings["wifi.enabled"], fakeSettings["wifi.enabled"], "reset to original bool setting");
-        is(resetSettings["audio.volume.alarm"], fakeSettings["audio.volume.alarm"], "reset to original int setting");
-        is(resetSettings["app.reportCrashes"], fakeSettings["app.reportCrashes"], "reset to original string setting");
-        is(JSON.stringify(resetSettings["app.someObject"]), JSON.stringify(fakeSettings["app.someObject"]), "reset to original object setting");
-
-        client.close().then(() => {
-          DebuggerServer.destroy();
-          SimpleTest.finish();
-        });
-      }
-
-      // settings.json doesn't exist outside of b2g so we will fake it.
-      _setDefaultSettings(fakeSettings);
-      s.setSetting("wifi.enabled", fakeSettings["wifi.enabled"])
-      .then(() => s.setSetting("audio.volume.alarm", fakeSettings["audio.volume.alarm"]))
-      .then(() => s.setSetting("app.reportCrashes", fakeSettings["app.reportCrashes"]))
-      .then(() => s.setSetting("app.someObject", fakeSettings["app.someObject"]))
-      .then(() => s.getAllSettings().then(json => settings.allSettings = json))
-      .then(() => s.setSetting("wifi.enabled", localSetting["wifi.enabled"]))
-      .then(() => s.setSetting("audio.volume.alarm", localSetting["audio.volume.alarm"]))
-      .then(() => s.setSetting("app.reportCrashes", localSetting["app.reportCrashes"]))
-      .then(() => s.setSetting("app.someObject", localSetting["app.someObject"]))
-      .then(() => s.getAllSettings().then(json => settings.allUpdatedSettings = json))
-      .then(() => s.getSetting("wifi.enabled")).then(value => settings["wifi.enabled"] = value)
-      .then(() => s.getSetting("audio.volume.alarm")).then(value => settings["audio.volume.alarm"] = value)
-      .then(() => s.getSetting("app.reportCrashes")).then(value => settings["app.reportCrashes"] = value)
-      .then(() => s.getSetting("app.someObject")).then(value => settings["app.someObject"] = value)
-      .then(() => s.clearUserSetting("wifi.enabled")).then(() => {
-        s.getSetting("wifi.enabled").then(value => resetSettings["wifi.enabled"] = value);
-      })
-      .then(() => s.clearUserSetting("audio.volume.alarm")).then(() => {
-        s.getSetting("audio.volume.alarm").then(value => resetSettings["audio.volume.alarm"] = value);
-      })
-      .then(() => s.clearUserSetting("app.reportCrashes")).then(() => {
-        s.getSetting("app.reportCrashes").then(value => resetSettings["app.reportCrashes"] = value);
-      })
-      .then(() => s.clearUserSetting("app.someObject")).then(() => {
-        s.getSetting("app.someObject").then(value => {
-          resetSettings["app.someObject"] = value
-        }).then(checkValues);
-      });
-    });
-  });
-}
-
-window.onload = function () {
-  runTests();
-}
-</script>
-</pre>
-</body>
-</html>
--- a/devtools/shared/discovery/discovery.js
+++ b/devtools/shared/discovery/discovery.js
@@ -132,55 +132,32 @@ Transport.prototype = {
 
   onStopListening: function () {}
 
 };
 
 /**
  * Manages the local device's name.  The name can be generated in serveral
  * platform-specific ways (see |_generate|).  The aim is for each device on the
- * same local network to have a unique name.  If the Settings API is available,
- * the name is saved there to persist across reboots.
+ * same local network to have a unique name.
  */
 function LocalDevice() {
   this._name = LocalDevice.UNKNOWN;
-  if ("@mozilla.org/settingsService;1" in Cc) {
-    this._settings =
-      Cc["@mozilla.org/settingsService;1"].getService(Ci.nsISettingsService);
-    Services.obs.addObserver(this, "mozsettings-changed", false);
-  }
   // Trigger |_get| to load name eagerly
   this._get();
 }
 
-LocalDevice.SETTING = "devtools.discovery.device";
 LocalDevice.UNKNOWN = "unknown";
 
 LocalDevice.prototype = {
 
   _get: function () {
-    if (!this._settings) {
-      // Without Settings API, just generate a name and stop, since the value
-      // can't be persisted.
-      this._generate();
-      return;
-    }
-    // Initial read of setting value
-    this._settings.createLock().get(LocalDevice.SETTING, {
-      handle: (_, name) => {
-        if (name && name !== LocalDevice.UNKNOWN) {
-          this._name = name;
-          log("Device: " + this._name);
-          return;
-        }
-        // No existing name saved, so generate one.
-        this._generate();
-      },
-      handleError: () => log("Failed to get device name setting")
-    });
+    // Without Settings API, just generate a name and stop, since the value
+    // can't be persisted.
+    this._generate();
   },
 
   /**
    * Generate a new device name from various platform-specific properties.
    * Triggers the |name| setter to persist if needed.
    */
   _generate: function () {
     if (Services.appinfo.widgetToolkit == "gonk") {
@@ -198,49 +175,23 @@ LocalDevice.prototype = {
       // For Firefox for Android, use the device's model name.
       // TODO: Bug 1180997: Find the right way to expose an editable name
       this.name = sysInfo.get("device");
     } else {
       this.name = sysInfo.get("host");
     }
   },
 
-  /**
-   * Observe any changes that might be made via the Settings app
-   */
-  observe: function (subject, topic, data) {
-    if (topic !== "mozsettings-changed") {
-      return;
-    }
-    if ("wrappedJSObject" in subject) {
-      subject = subject.wrappedJSObject;
-    }
-    if (subject.key !== LocalDevice.SETTING) {
-      return;
-    }
-    this._name = subject.value;
-    log("Device: " + this._name);
-  },
-
   get name() {
     return this._name;
   },
 
   set name(name) {
-    if (!this._settings) {
-      this._name = name;
-      log("Device: " + this._name);
-      return;
-    }
-    // Persist to Settings API
-    // The new value will be seen and stored by the observer above
-    this._settings.createLock().set(LocalDevice.SETTING, name, {
-      handle: () => {},
-      handleError: () => log("Failed to set device name setting")
-    });
+    this._name = name;
+    log("Device: " + this._name);
   }
 
 };
 
 function Discovery() {
   EventEmitter.decorate(this);
 
   this.localServices = {};
--- a/devtools/shared/fronts/moz.build
+++ b/devtools/shared/fronts/moz.build
@@ -25,17 +25,16 @@ DevToolsModules(
     'memory.js',
     'performance-entries.js',
     'performance-recording.js',
     'performance.js',
     'preference.js',
     'profiler.js',
     'promises.js',
     'reflow.js',
-    'settings.js',
     'storage.js',
     'string.js',
     'styles.js',
     'stylesheets.js',
     'timeline.js',
     'webaudio.js',
     'webextension-inspected-window.js',
     'webgl.js'
deleted file mode 100644
--- a/devtools/shared/fronts/settings.js
+++ /dev/null
@@ -1,29 +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/. */
-"use strict";
-
-const {settingsSpec} = require("devtools/shared/specs/settings");
-const protocol = require("devtools/shared/protocol");
-
-const SettingsFront = protocol.FrontClassWithSpec(settingsSpec, {
-  initialize: function (client, form) {
-    protocol.Front.prototype.initialize.call(this, client);
-    this.actorID = form.settingsActor;
-    this.manage(this);
-  },
-});
-
-const _knownSettingsFronts = new WeakMap();
-
-exports.getSettingsFront = function (client, form) {
-  if (!form.settingsActor) {
-    return null;
-  }
-  if (_knownSettingsFronts.has(client)) {
-    return _knownSettingsFronts.get(client);
-  }
-  let front = new SettingsFront(client, form);
-  _knownSettingsFronts.set(client, front);
-  return front;
-};
--- a/devtools/shared/specs/moz.build
+++ b/devtools/shared/specs/moz.build
@@ -31,17 +31,16 @@ DevToolsModules(
     'performance-entries.js',
     'performance-recording.js',
     'performance.js',
     'preference.js',
     'profiler.js',
     'promises.js',
     'reflow.js',
     'script.js',
-    'settings.js',
     'source.js',
     'storage.js',
     'string.js',
     'styleeditor.js',
     'styles.js',
     'stylesheets.js',
     'timeline.js',
     'webaudio.js',
deleted file mode 100644
--- a/devtools/shared/specs/settings.js
+++ /dev/null
@@ -1,31 +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/. */
-"use strict";
-
-const {Arg, RetVal, generateActorSpec} = require("devtools/shared/protocol");
-
-const settingsSpec = generateActorSpec({
-  typeName: "settings",
-
-  methods: {
-    getSetting: {
-      request: { value: Arg(0) },
-      response: { value: RetVal("json") }
-    },
-    setSetting: {
-      request: { name: Arg(0), value: Arg(1) },
-      response: {}
-    },
-    getAllSettings: {
-      request: {},
-      response: { value: RetVal("json") }
-    },
-    clearUserSetting: {
-      request: { name: Arg(0) },
-      response: {}
-    }
-  },
-});
-
-exports.settingsSpec = settingsSpec;
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -20,17 +20,16 @@
 #include "nsIScriptSecurityManager.h"
 #include "nsISupportsPrimitives.h"
 #include "nsThreadUtils.h"
 #include "nsHashPropertyBag.h"
 #include "nsComponentManagerUtils.h"
 #include "nsGlobalWindow.h"
 #include "nsPIDOMWindow.h"
 #include "nsServiceManagerUtils.h"
-#include "mozilla/dom/SettingChangeNotificationBinding.h"
 
 #ifdef MOZ_WIDGET_GONK
 #include "nsJSUtils.h"
 #endif
 
 #include "mozilla/Preferences.h"
 
 using namespace mozilla;
@@ -230,21 +229,16 @@ AudioChannelService::Shutdown()
   if (gAudioChannelService) {
     nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
     if (obs) {
       obs->RemoveObserver(gAudioChannelService, "xpcom-shutdown");
       obs->RemoveObserver(gAudioChannelService, "outer-window-destroyed");
 
       if (IsParentProcess()) {
         obs->RemoveObserver(gAudioChannelService, "ipc:content-shutdown");
-
-#ifdef MOZ_WIDGET_GONK
-        // To monitor the volume settings based on audio channel.
-        obs->RemoveObserver(gAudioChannelService, "mozsettings-changed");
-#endif
       }
     }
 
     gAudioChannelService->mWindows.Clear();
     gAudioChannelService->mPlayingChildren.Clear();
     gAudioChannelService->mTabParents.Clear();
 
     gAudioChannelService = nullptr;
@@ -274,21 +268,16 @@ AudioChannelService::AudioChannelService
   , mAnyChannel(false)
 {
   nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
   if (obs) {
     obs->AddObserver(this, "xpcom-shutdown", false);
     obs->AddObserver(this, "outer-window-destroyed", false);
     if (IsParentProcess()) {
       obs->AddObserver(this, "ipc:content-shutdown", false);
-
-#ifdef MOZ_WIDGET_GONK
-      // To monitor the volume settings based on audio channel.
-      obs->AddObserver(this, "mozsettings-changed", false);
-#endif
     }
   }
 
   Preferences::AddBoolVarCache(&sAudioChannelMutedByDefault,
                                "dom.audiochannel.mutedByDefault");
   Preferences::AddBoolVarCache(&sAudioChannelCompeting,
                                "dom.audiochannel.audioCompeting");
 }
--- a/dom/events/moz.build
+++ b/dom/events/moz.build
@@ -134,17 +134,16 @@ if CONFIG['MOZ_WEBSPEECH']:
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '/docshell/base',
     '/dom/base',
     '/dom/html',
-    '/dom/settings',
     '/dom/storage',
     '/dom/svg',
     '/dom/workers',
     '/dom/xml',
     '/dom/xul',
     '/js/xpconnect/wrappers',
     '/layout/generic',
     '/layout/xul',
--- a/dom/events/test/test_all_synthetic_events.html
+++ b/dom/events/test/test_all_synthetic_events.html
@@ -254,24 +254,16 @@ const kEventConstructors = {
   MozMmsEvent:                               { create: function (aName, aProps) {
                                                          return new MozMmsEvent(aName, aProps);
                                                        },
                                              },
   MozOtaStatusEvent:                         { create: function (aName, aProps) {
                                                           return new MozOtaStatusEvent(aName, aProps);
                                                        },
                                              },
-  MozSettingsEvent:                          { create: function (aName, aProps) {
-                                                         return new MozSettingsEvent(aName, aProps);
-                                                       },
-                                             },
-  MozSettingsTransactionEvent:               { create: function (aName, aProps) {
-                                                         return new MozSettingsTransactionEvent(aName, aProps);
-                                                       },
-                                             },
   MozSmsEvent:                               { create: function (aName, aProps) {
                                                          return new MozSmsEvent(aName, aProps);
                                                        },
                                              },
   MozStkCommandEvent:                        { create: function (aName, aProps) {
                                                           return new MozStkCommandEvent(aName, aProps);
                                                        },
                                              },
--- a/dom/media/tests/mochitest/NetworkPreparationChromeScript.js
+++ b/dom/media/tests/mochitest/NetworkPreparationChromeScript.js
@@ -3,31 +3,16 @@
 
 const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
 const { Services } = Cu.import('resource://gre/modules/Services.jsm');
 
 var browser = Services.wm.getMostRecentWindow('navigator:browser');
 var connection = browser.navigator.mozMobileConnections[0];
 
 // provide a fake APN and enable data connection.
-function enableDataConnection() {
-  let setLock = browser.navigator.mozSettings.createLock();
-  setLock.set({
-    'ril.data.enabled': true,
-    'ril.data.apnSettings': [
-      [
-        {'carrier':'T-Mobile US',
-         'apn':'epc.tmobile.com',
-         'mmsc':'http://mms.msg.eng.t-mobile.com/mms/wapenc',
-         'types':['default','supl','mms']}
-      ]
-    ]
-  });
-}
-
 // enable 3G radio
 function enableRadio() {
   if (connection.radioState !== 'enabled') {
     connection.setRadioEnabled(true);
   }
 }
 
 // disable 3G radio
@@ -42,17 +27,16 @@ addMessageListener('prepare-network', fu
     if (connection.data.connected) {
       connection.removeEventListener('datachange', onDataChange);
       Services.prefs.setIntPref('network.proxy.type', 2);
       sendAsyncMessage('network-ready', true);
     }
   });
 
   enableRadio();
-  enableDataConnection();
 });
 
 addMessageListener('network-cleanup', function(message) {
   connection.addEventListener('datachange', function onDataChange() {
     if (!connection.data.connected) {
       connection.removeEventListener('datachange', onDataChange);
       Services.prefs.setIntPref('network.proxy.type', 2);
       sendAsyncMessage('network-disabled', true);
--- a/dom/moz.build
+++ b/dom/moz.build
@@ -7,17 +7,16 @@
 JAR_MANIFESTS += ['jar.mn']
 
 interfaces = [
     'base',
     'canvas',
     'core',
     'html',
     'events',
-    'settings',
     'stylesheets',
     'sidebar',
     'css',
     'traversal',
     'range',
     'xbl',
     'xpath',
     'xul',
@@ -63,17 +62,16 @@ DIRS += [
     'mathml',
     'media',
     'notification',
     'offline',
     'power',
     'push',
     'quota',
     'security',
-    'settings',
     'storage',
     'svg',
     'time',
     'locales',
     'network',
     'permission',
     'plugins/base',
     'plugins/ipc',
deleted file mode 100644
--- a/dom/settings/SettingsDB.jsm
+++ /dev/null
@@ -1,249 +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/. */
-
-"use strict";
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-Cu.importGlobalProperties(['Blob', 'File']);
-Cu.import("resource://gre/modules/Services.jsm");
-
-this.EXPORTED_SYMBOLS = ["SettingsDB", "SETTINGSDB_NAME", "SETTINGSSTORE_NAME"];
-
-var DEBUG = false;
-var VERBOSE = false;
-
-try {
-  DEBUG   =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsDB.debug.enabled");
-  VERBOSE =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsDB.verbose.enabled");
-} catch (ex) { }
-
-function debug(s) {
-  dump("-*- SettingsDB: " + s + "\n");
-}
-
-const TYPED_ARRAY_THINGS = new Set([
-  "Int8Array",
-  "Uint8Array",
-  "Uint8ClampedArray",
-  "Int16Array",
-  "Uint16Array",
-  "Int32Array",
-  "Uint32Array",
-  "Float32Array",
-  "Float64Array",
-]);
-
-this.SETTINGSDB_NAME = "settings";
-this.SETTINGSDB_VERSION = 8;
-this.SETTINGSSTORE_NAME = "settings";
-
-Cu.import("resource://gre/modules/IndexedDBHelper.jsm");
-Cu.import("resource://gre/modules/FileUtils.jsm");
-Cu.import("resource://gre/modules/NetUtil.jsm");
-
-this.SettingsDB = function SettingsDB() {}
-
-SettingsDB.prototype = {
-
-  __proto__: IndexedDBHelper.prototype,
-
-  upgradeSchema: function upgradeSchema(aTransaction, aDb, aOldVersion, aNewVersion) {
-    let objectStore;
-    if (aOldVersion == 0) {
-      objectStore = aDb.createObjectStore(SETTINGSSTORE_NAME, { keyPath: "settingName" });
-      if (VERBOSE) debug("Created object stores");
-    } else if (aOldVersion == 1) {
-      if (VERBOSE) debug("Get object store for upgrade and remove old index");
-      objectStore = aTransaction.objectStore(SETTINGSSTORE_NAME);
-      objectStore.deleteIndex("settingValue");
-    } else {
-      if (VERBOSE) debug("Get object store for upgrade");
-      objectStore = aTransaction.objectStore(SETTINGSSTORE_NAME);
-    }
-
-    // Loading resource://app/defaults/settings.json doesn't work because
-    // settings.json is not in the omnijar.
-    // So we look for the app dir instead and go from here...
-    let settingsFile = FileUtils.getFile("DefRt", ["settings.json"], false);
-    if (!settingsFile || (settingsFile && !settingsFile.exists())) {
-      // On b2g desktop builds the settings.json file is moved in the
-      // profile directory by the build system.
-      settingsFile = FileUtils.getFile("ProfD", ["settings.json"], false);
-      if (!settingsFile || (settingsFile && !settingsFile.exists())) {
-        return;
-      }
-    }
-
-    let chan = NetUtil.newChannel({
-      uri: NetUtil.newURI(settingsFile),
-      loadUsingSystemPrincipal: true});
-    let stream = chan.open2();
-    // Obtain a converter to read from a UTF-8 encoded input stream.
-    let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
-                    .createInstance(Ci.nsIScriptableUnicodeConverter);
-    converter.charset = "UTF-8";
-    let rawstr = converter.ConvertToUnicode(NetUtil.readInputStreamToString(
-                                            stream,
-                                            stream.available()) || "");
-    let settings;
-    try {
-      settings = JSON.parse(rawstr);
-    } catch(e) {
-      if (DEBUG) debug("Error parsing " + settingsFile.path + " : " + e);
-      return;
-    }
-    stream.close();
-
-    objectStore.openCursor().onsuccess = function(event) {
-      let cursor = event.target.result;
-      if (cursor) {
-        let value = cursor.value;
-        if (value.settingName in settings) {
-          if (VERBOSE) debug("Upgrade " +settings[value.settingName]);
-          value.defaultValue = this.prepareValue(settings[value.settingName]);
-          delete settings[value.settingName];
-          if ("settingValue" in value) {
-            value.userValue = this.prepareValue(value.settingValue);
-            delete value.settingValue;
-          }
-          cursor.update(value);
-        } else if ("userValue" in value || "settingValue" in value) {
-          value.defaultValue = undefined;
-          if (aOldVersion == 1 && value.settingValue) {
-            value.userValue = this.prepareValue(value.settingValue);
-            delete value.settingValue;
-          }
-          cursor.update(value);
-        } else {
-          cursor.delete();
-        }
-        cursor.continue();
-      } else {
-        for (let name in settings) {
-          let value = this.prepareValue(settings[name]);
-          if (VERBOSE) debug("Set new:" + name +", " + value);
-          objectStore.add({ settingName: name, defaultValue: value, userValue: undefined });
-        }
-      }
-    }.bind(this);
-  },
-
-  // If the value is a data: uri, convert it to a Blob.
-  convertDataURIToBlob: function(aValue) {
-    /* base64 to ArrayBuffer decoding, from
-       https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding
-    */
-    function b64ToUint6 (nChr) {
-      return nChr > 64 && nChr < 91 ?
-          nChr - 65
-        : nChr > 96 && nChr < 123 ?
-          nChr - 71
-        : nChr > 47 && nChr < 58 ?
-          nChr + 4
-        : nChr === 43 ?
-          62
-        : nChr === 47 ?
-          63
-        :
-          0;
-    }
-
-    function base64DecToArr(sBase64, nBlocksSize) {
-      let sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""),
-          nInLen = sB64Enc.length,
-          nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize
-                                : nInLen * 3 + 1 >> 2,
-          taBytes = new Uint8Array(nOutLen);
-
-      for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
-        nMod4 = nInIdx & 3;
-        nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
-        if (nMod4 === 3 || nInLen - nInIdx === 1) {
-          for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
-            taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;
-          }
-          nUint24 = 0;
-        }
-      }
-      return taBytes;
-    }
-
-    // Check if we have a data: uri, and if it's base64 encoded.
-    // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...
-    if (typeof aValue == "string" && aValue.startsWith("data:")) {
-      try {
-        let uri = Services.io.newURI(aValue);
-        // XXX: that would be nice to reuse the c++ bits of the data:
-        // protocol handler instead.
-        let mimeType = "application/octet-stream";
-        let mimeDelim = aValue.indexOf(";");
-        if (mimeDelim !== -1) {
-          mimeType = aValue.substring(5, mimeDelim);
-        }
-        let start = aValue.indexOf(",") + 1;
-        let isBase64 = ((aValue.indexOf("base64") + 7) == start);
-        let payload = aValue.substring(start);
-
-        return new Blob([isBase64 ? base64DecToArr(payload) : payload],
-                        { type: mimeType });
-      } catch(e) {
-        dump(e);
-      }
-    }
-    return aValue
-  },
-
-  getObjectKind: function(aObject) {
-    if (aObject === null || aObject === undefined) {
-      return "primitive";
-    } else if (Array.isArray(aObject)) {
-      return "array";
-    } else if (aObject instanceof File) {
-      return "file";
-    } else if (aObject instanceof Ci.nsIDOMBlob) {
-      return "blob";
-    } else if (aObject.constructor.name == "Date") {
-      return "date";
-    } else if (TYPED_ARRAY_THINGS.has(aObject.constructor.name)) {
-      return aObject.constructor.name;
-    } else if (typeof aObject == "object") {
-      return "object";
-    } else {
-      return "primitive";
-    }
-  },
-
-  // Makes sure any property that is a data: uri gets converted to a Blob.
-  prepareValue: function(aObject) {
-    let kind = this.getObjectKind(aObject);
-    if (kind == "array") {
-      let res = [];
-      aObject.forEach(function(aObj) {
-        res.push(this.prepareValue(aObj));
-      }, this);
-      return res;
-    } else if (kind == "file" || kind == "blob" || kind == "date") {
-      return aObject;
-    } else if (kind == "primitive") {
-      return this.convertDataURIToBlob(aObject);
-    }
-
-    // Fall-through, we now have a dictionary object.
-    let res = {};
-    for (let prop in aObject) {
-      res[prop] = this.prepareValue(aObject[prop]);
-    }
-    return res;
-  },
-
-  init: function init() {
-    this.initDBHelper(SETTINGSDB_NAME, SETTINGSDB_VERSION,
-                      [SETTINGSSTORE_NAME]);
-  }
-}
deleted file mode 100644
--- a/dom/settings/SettingsManager.js
+++ /dev/null
@@ -1,506 +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/. */
-
-"use strict";
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/DOMRequestHelper.jsm");
-
-var DEBUG = false;
-var VERBOSE = false;
-
-try {
-  DEBUG   =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsManager.debug.enabled");
-  VERBOSE =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsManager.verbose.enabled");
-} catch (ex) { }
-
-function debug(s) {
-  dump("-*- SettingsManager: " + s + "\n");
-}
-
-XPCOMUtils.defineLazyServiceGetter(Services, "DOMRequest",
-                                   "@mozilla.org/dom/dom-request-service;1",
-                                   "nsIDOMRequestService");
-XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
-                                   "@mozilla.org/childprocessmessagemanager;1",
-                                   "nsIMessageSender");
-XPCOMUtils.defineLazyServiceGetter(this, "mrm",
-                                   "@mozilla.org/memory-reporter-manager;1",
-                                   "nsIMemoryReporterManager");
-XPCOMUtils.defineLazyServiceGetter(this, "uuidgen",
-                                   "@mozilla.org/uuid-generator;1",
-                                   "nsIUUIDGenerator");
-
-const kObserverSoftLimit = 10;
-
-/**
- * In order to make SettingsManager work with Privileged Apps, we need the lock
- * to be OOP. However, the lock state needs to be managed on the child process,
- * while the IDB functions now happen on the parent process so we don't have to
- * expose IDB permissions at the child process level. We use the
- * DOMRequestHelper mechanism to deal with DOMRequests/promises across the
- * processes.
- *
- * However, due to the nature of the IDBTransaction lifetime, we need to relay
- * to the parent when to finalize the transaction once the child is done with the
- * lock. We keep a list of all open requests for a lock, and once the lock
- * reaches the end of its receiveMessage function with no more queued requests,
- * we consider it dead. At that point, we send a message to the parent to notify
- * it to finalize the transaction.
- */
-
-function SettingsLock(aSettingsManager) {
-  if (VERBOSE) debug("settings lock init");
-  this._open = true;
-  this._settingsManager = aSettingsManager;
-  this._id = uuidgen.generateUUID().toString();
-
-  // DOMRequestIpcHelper.initHelper sets this._window
-  this.initDOMRequestHelper(this._settingsManager._window, ["Settings:Get:OK", "Settings:Get:KO",
-                                                            "Settings:Clear:OK", "Settings:Clear:KO",
-                                                            "Settings:Set:OK", "Settings:Set:KO",
-                                                            "Settings:Finalize:OK", "Settings:Finalize:KO"]);
-  let createLockPayload = {
-    lockID: this._id,
-    isServiceLock: false,
-    windowID: this._settingsManager.innerWindowID,
-    lockStack: (new Error).stack
-  };
-  this.sendMessage("Settings:CreateLock", createLockPayload);
-  Services.tm.currentThread.dispatch(this._closeHelper.bind(this), Ci.nsIThread.DISPATCH_NORMAL);
-
-  // We only want to file closeHelper once per set of receiveMessage calls.
-  this._closeCalled = true;
-}
-
-SettingsLock.prototype = {
-  __proto__: DOMRequestIpcHelper.prototype,
-  set onsettingstransactionsuccess(aHandler) {
-    this.__DOM_IMPL__.setEventHandler("onsettingstransactionsuccess", aHandler);
-  },
-
-  get onsettingstransactionsuccess() {
-    return this.__DOM_IMPL__.getEventHandler("onsettingstransactionsuccess");
-  },
-
-  set onsettingstransactionfailure(aHandler) {
-    this.__DOM_IMPL__.setEventHandler("onsettingstransactionfailure", aHandler);
-  },
-
-  get onsettingstransactionfailure() {
-    return this.__DOM_IMPL__.getEventHandler("onsettingstransactionfailure");
-  },
-
-  get closed() {
-    return !this._open;
-  },
-
-  _closeHelper: function() {
-    if (VERBOSE) debug("closing lock " + this._id);
-    this._open = false;
-    this._closeCalled = false;
-    if (!this._requests || Object.keys(this._requests).length == 0) {
-      if (VERBOSE) debug("Requests exhausted, finalizing " + this._id);
-      this._settingsManager.unregisterLock(this._id);
-      this.sendMessage("Settings:Finalize", {lockID: this._id});
-    } else {
-      if (VERBOSE) debug("Requests left: " + Object.keys(this._requests).length);
-      this.sendMessage("Settings:Run", {lockID: this._id});
-    }
-  },
-
-
-  _wrap: function _wrap(obj) {
-    return Cu.cloneInto(obj, this._settingsManager._window);
-  },
-
-  sendMessage: function(aMessageName, aData) {
-    // sendMessage can be called after our window has died, or get
-    // queued to run later in a thread via _closeHelper, but the
-    // SettingsManager may have died in between the time it was
-    // scheduled and the time it runs. Make sure our window is valid
-    // before sending, otherwise just ignore.
-    if (!this._settingsManager._window) {
-      Cu.reportError(
-        "SettingsManager window died, cannot run settings transaction." +
-        " SettingsMessage: " + aMessageName +
-        " SettingsData: " + JSON.stringify(aData));
-      return;
-    }
-    cpmm.sendAsyncMessage(aMessageName,
-                          aData,
-                          undefined,
-                          this._settingsManager._window.document.nodePrincipal);
-  },
-
-  receiveMessage: function(aMessage) {
-    let msg = aMessage.data;
-    
-    // SettingsRequestManager broadcasts changes to all locks in the child. If
-    // our lock isn't being addressed, just return.
-    if (msg.lockID != this._id) {
-      return;
-              }
-    if (VERBOSE) debug("receiveMessage (" + this._id + "): " + aMessage.name);
-
-    // Finalizing a transaction does not return a request ID since we are
-    // supposed to fire callbacks.
-    //
-    // We also destroy the DOMRequestHelper after we've received the
-    // finalize message. At this point, we will be guarenteed no more
-    // request returns are coming from the SettingsRequestManager.
-
-    if (!msg.requestID) {
-      let event;
-      switch (aMessage.name) {
-        case "Settings:Finalize:OK":
-          if (VERBOSE) debug("Lock finalize ok: " + this._id);
-          event = new this._window.MozSettingsTransactionEvent("settingstransactionsuccess", {});
-          this.__DOM_IMPL__.dispatchEvent(event);
-          this.destroyDOMRequestHelper();
-          break;
-        case "Settings:Finalize:KO":
-          if (DEBUG) debug("Lock finalize failed: " + this._id);
-          event = new this._window.MozSettingsTransactionEvent("settingstransactionfailure", {
-            error: msg.errorMsg
-          });
-          this.__DOM_IMPL__.dispatchEvent(event);
-          this.destroyDOMRequestHelper();
-          break;
-        default:
-          if (DEBUG) debug("Message type " + aMessage.name + " is missing a requestID");
-      }
-      return;
-    }
-
-
-    let req = this.getRequest(msg.requestID);
-    if (!req) {
-      if (DEBUG) debug("Matching request not found.");
-      return;
-            }
-    this.removeRequest(msg.requestID);
-    // DOMRequest callbacks called from here can die due to having
-    // things like marionetteScriptFinished in them. Make sure we file
-    // our call to run/finalize BEFORE opening the lock and fulfilling
-    // DOMRequests.
-    if (!this._closeCalled) {
-      // We only want to file closeHelper once per set of receiveMessage calls.
-      Services.tm.currentThread.dispatch(this._closeHelper.bind(this), Ci.nsIThread.DISPATCH_NORMAL);
-      this._closeCalled = true;
-    }
-    if (VERBOSE) debug("receiveMessage: " + aMessage.name);
-    switch (aMessage.name) {
-      case "Settings:Get:OK":
-        for (let i in msg.settings) {
-          msg.settings[i] = this._wrap(msg.settings[i]);
-        }
-            this._open = true;
-        Services.DOMRequest.fireSuccess(req.request, this._wrap(msg.settings));
-            this._open = false;
-          break;
-      case "Settings:Set:OK":
-      case "Settings:Clear:OK":
-        this._open = true;
-        Services.DOMRequest.fireSuccess(req.request, 0);
-        this._open = false;
-        break;
-      case "Settings:Get:KO":
-      case "Settings:Set:KO":
-      case "Settings:Clear:KO":
-        if (DEBUG) debug("error:" + msg.errorMsg);
-        Services.DOMRequest.fireError(req.request, msg.errorMsg);
-        break;
-      default:
-        if (DEBUG) debug("Wrong message: " + aMessage.name);
-    }
-  },
-
-  get: function get(aName) {
-    if (VERBOSE) debug("get (" + this._id + "): " + aName);
-    if (!this._open) {
-      dump("Settings lock not open!\n");
-      throw Components.results.NS_ERROR_ABORT;
-    }
-    let req = this.createRequest();
-    let reqID = this.getRequestId({request: req});
-    this.sendMessage("Settings:Get", {requestID: reqID,
-                                      lockID: this._id,
-                                      name: aName});
-      return req;
-  },
-
-  set: function set(aSettings) {
-    if (VERBOSE) debug("send: " + JSON.stringify(aSettings));
-    if (!this._open) {
-      throw "Settings lock not open";
-    }
-    let req = this.createRequest();
-    let reqID = this.getRequestId({request: req});
-    this.sendMessage("Settings:Set", {requestID: reqID,
-                                      lockID: this._id,
-                                      settings: aSettings});
-      return req;
-  },
-
-  clear: function clear() {
-    if (VERBOSE) debug("clear");
-    if (!this._open) {
-      throw "Settings lock not open";
-    }
-    let req = this.createRequest();
-    let reqID = this.getRequestId({request: req});
-    this.sendMessage("Settings:Clear", {requestID: reqID,
-                                        lockID: this._id});
-      return req;
-  },
-
-  classID: Components.ID("{60c9357c-3ae0-4222-8f55-da01428470d5}"),
-  contractID: "@mozilla.org/settingsLock;1",
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
-                                         Ci.nsIObserver,
-                                         Ci.nsISupportsWeakReference])
-};
-
-function SettingsManager() {
-  this._callbacks = null;
-  this._isRegistered = false;
-  this._locks = [];
-  this._createdLocks = 0;
-  this._unregisteredLocks = 0;
-}
-
-SettingsManager.prototype = {
-  _wrap: function _wrap(obj) {
-    return Cu.cloneInto(obj, this._window);
-  },
-
-  set onsettingchange(aHandler) {
-    this.__DOM_IMPL__.setEventHandler("onsettingchange", aHandler);
-    this.checkMessageRegistration();
-  },
-
-  get onsettingchange() {
-    return this.__DOM_IMPL__.getEventHandler("onsettingchange");
-  },
-
-  createLock: function() {
-    let lock = new SettingsLock(this);
-    if (VERBOSE) debug("creating lock " + lock._id);
-    this._locks.push(lock._id);
-    this._createdLocks++;
-    return lock;
-  },
-
-  unregisterLock: function(aLockID) {
-    let lock_index = this._locks.indexOf(aLockID);
-    if (lock_index != -1) {
-      if (VERBOSE) debug("Unregistering lock " + aLockID);
-      this._locks.splice(lock_index, 1);
-      this._unregisteredLocks++;
-    }
-  },
-
-  receiveMessage: function(aMessage) {
-    if (VERBOSE) debug("Settings::receiveMessage: " + aMessage.name);
-    let msg = aMessage.json;
-
-    switch (aMessage.name) {
-      case "Settings:Change:Return:OK":
-        if (VERBOSE) debug('data:' + msg.key + ':' + msg.value + '\n');
-
-        let event = new this._window.MozSettingsEvent("settingchange", this._wrap({
-          settingName: msg.key,
-          settingValue: msg.value
-        }));
-        this.__DOM_IMPL__.dispatchEvent(event);
-
-        if (this._callbacks && this._callbacks[msg.key]) {
-          if (VERBOSE) debug("observe callback called! " + msg.key + " " + this._callbacks[msg.key].length);
-          this._callbacks[msg.key].forEach(function(cb) {
-            cb(this._wrap({settingName: msg.key, settingValue: msg.value}));
-          }.bind(this));
-        } else {
-          if (VERBOSE) debug("no observers stored!");
-        }
-        break;
-      default:
-        if (DEBUG) debug("Wrong message: " + aMessage.name);
-    }
-  },
-
-  // If we have either observer callbacks or an event handler,
-  // register for messages from the main thread. Otherwise, if no one
-  // is listening, unregister to reduce parent load.
-  checkMessageRegistration: function checkRegistration() {
-    let handler = this.__DOM_IMPL__.getEventHandler("onsettingchange");
-    if (!this._isRegistered) {
-      if (VERBOSE) debug("Registering for messages");
-      cpmm.sendAsyncMessage("Settings:RegisterForMessages",
-                            undefined,
-                            undefined,
-                            this._window.document.nodePrincipal);
-      this._isRegistered = true;
-    } else {
-      if ((!this._callbacks || Object.keys(this._callbacks).length == 0)  &&
-          !handler) {
-        if (VERBOSE) debug("Unregistering for messages");
-        cpmm.sendAsyncMessage("Settings:UnregisterForMessages",
-                              undefined,
-                              undefined,
-                              this._window.document.nodePrincipal);
-        this._isRegistered = false;
-        this._callbacks = null;
-      }
-    }
-  },
-
-  addObserver: function addObserver(aName, aCallback) {
-    if (VERBOSE) debug("addObserver " + aName);
-
-    if (!this._callbacks) {
-      this._callbacks = {};
-    }
-
-    if (!this._callbacks[aName]) {
-      this._callbacks[aName] = [aCallback];
-    } else {
-      this._callbacks[aName].push(aCallback);
-    }
-
-    let length = this._callbacks[aName].length;
-    if (length >= kObserverSoftLimit) {
-      debug("WARNING: MORE THAN " + kObserverSoftLimit + " OBSERVERS FOR " +
-            aName + ": " + length + " FROM" + (new Error).stack);
-#ifdef DEBUG
-      debug("JS STOPS EXECUTING AT THIS POINT IN DEBUG BUILDS!");
-      throw Components.results.NS_ERROR_ABORT;
-#endif
-    }
-
-    this.checkMessageRegistration();
-  },
-
-  removeObserver: function removeObserver(aName, aCallback) {
-    if (VERBOSE) debug("deleteObserver " + aName);
-    if (this._callbacks && this._callbacks[aName]) {
-      let index = this._callbacks[aName].indexOf(aCallback);
-      if (index != -1) {
-        this._callbacks[aName].splice(index, 1);
-        if (this._callbacks[aName].length == 0) {
-          delete this._callbacks[aName];
-        }
-      } else {
-        if (VERBOSE) debug("Callback not found for: " + aName);
-      }
-    } else {
-      if (VERBOSE) debug("No observers stored for " + aName);
-    }
-    this.checkMessageRegistration();
-  },
-
-  init: function(aWindow) {
-    if (VERBOSE) debug("SettingsManager init");
-    mrm.registerStrongReporter(this);
-    cpmm.addMessageListener("Settings:Change:Return:OK", this);
-    Services.obs.addObserver(this, "inner-window-destroyed", false);
-    let util = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
-    this.innerWindowID = util.currentInnerWindowID;
-    this._window = aWindow;
-  },
-
-  observe: function(aSubject, aTopic, aData) {
-    if (VERBOSE) debug("Topic: " + aTopic);
-    if (aTopic === "inner-window-destroyed") {
-      let wId = aSubject.QueryInterface(Ci.nsISupportsPRUint64).data;
-      if (wId === this.innerWindowID) {
-        if (DEBUG) debug("Received: inner-window-destroyed for valid innerWindowID=" + wId + ", cleanup.");
-        this.cleanup();
-      }
-    }
-  },
-
-  collectReports: function(aCallback, aData, aAnonymize) {
-    for (let topic in this._callbacks) {
-      let length = this._callbacks[topic].length;
-      if (length == 0) {
-        continue;
-      }
-
-      let path;
-      if (length < kObserverSoftLimit) {
-        path = "settings-observers";
-      } else {
-        path = "settings-observers-suspect/referent(topic=" +
-               (aAnonymize ? "<anonymized>" : topic) + ")";
-      }
-
-      aCallback.callback("", path,
-                         Ci.nsIMemoryReporter.KIND_OTHER,
-                         Ci.nsIMemoryReporter.UNITS_COUNT,
-                         length,
-                         "The number of settings observers for this topic.",
-                         aData);
-    }
-
-    aCallback.callback("",
-                       "settings-locks/alive",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this._locks.length,
-                       "The number of locks that are currently alives.",
-                       aData);
-
-    aCallback.callback("",
-                       "settings-locks/created",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this._createdLocks,
-                       "The number of locks that were created.",
-                       aData);
-
-    aCallback.callback("",
-                       "settings-locks/deleted",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this._unregisteredLocks,
-                       "The number of locks that were deleted.",
-                       aData);
-  },
-
-  cleanup: function() {
-    Services.obs.removeObserver(this, "inner-window-destroyed");
-    // At this point, the window is dying, so there's nothing left	
-    // that we could do with our lock. Go ahead and run finalize on	
-    // it to make sure changes are commited.	
-    for (let i = 0; i < this._locks.length; ++i) {	
-      if (DEBUG) debug("Lock alive at destroy, finalizing: " + this._locks[i]);
-      // Due to bug 1105511 we should be able to send this without
-      // cached principals. However, this is scary because any iframe
-      // in the process could run this?
-      cpmm.sendAsyncMessage("Settings:Finalize",	
-                            {lockID: this._locks[i]});	
-    }
-    cpmm.removeMessageListener("Settings:Change:Return:OK", this);
-    mrm.unregisterStrongReporter(this);
-    this.innerWindowID = null;
-    this._window = null;
-  },
-
-  classID: Components.ID("{c40b1c70-00fb-11e2-a21f-0800200c9a66}"),
-  contractID: "@mozilla.org/settingsManager;1",
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
-                                         Ci.nsIDOMGlobalPropertyInitializer,
-                                         Ci.nsIObserver,
-                                         Ci.nsIMemoryReporter]),
-};
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([SettingsManager, SettingsLock]);
deleted file mode 100644
--- a/dom/settings/SettingsManager.manifest
+++ /dev/null
@@ -1,5 +0,0 @@
-component {c40b1c70-00fb-11e2-a21f-0800200c9a66} SettingsManager.js
-contract @mozilla.org/settingsManager;1 {c40b1c70-00fb-11e2-a21f-0800200c9a66}
-
-component {60c9357c-3ae0-4222-8f55-da01428470d5} SettingsManager.js
-contract @mozilla.org/settingsLock;1 {60c9357c-3ae0-4222-8f55-da01428470d5}
deleted file mode 100644
--- a/dom/settings/SettingsRequestManager.jsm
+++ /dev/null
@@ -1,1213 +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/. */
-
-"use strict";
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-Cu.importGlobalProperties(['File']);
-
-this.EXPORTED_SYMBOLS = ["SettingsRequestManager"];
-
-Cu.import("resource://gre/modules/SettingsDB.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-var DEBUG = false;
-var VERBOSE = false;
-var TRACK = false;
-
-try {
-  DEBUG   =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsRequestManager.debug.enabled");
-  VERBOSE =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsRequestManager.verbose.enabled");
-  TRACK =
-    Services.prefs.getBoolPref("dom.mozSettings.trackTasksUsage");
-} catch (ex) { }
-
-var allowForceReadOnly = false;
-try {
-  allowForceReadOnly = Services.prefs.getBoolPref("dom.mozSettings.allowForceReadOnly");
-} catch (ex) { }
-
-function debug(s) {
-  dump("-*- SettingsRequestManager: " + s + "\n");
-}
-
-var inParent = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime)
-                  .processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
-
-const kXpcomShutdownObserverTopic      = "xpcom-shutdown";
-const kInnerWindowDestroyed            = "inner-window-destroyed";
-const kMozSettingsChangedObserverTopic = "mozsettings-changed";
-const kSettingsReadSuffix              = "-read";
-const kSettingsWriteSuffix             = "-write";
-const kSettingsClearPermission         = "settings-clear";
-const kAllSettingsReadPermission       = "settings" + kSettingsReadSuffix;
-const kAllSettingsWritePermission      = "settings" + kSettingsWriteSuffix;
-// Any application with settings permissions, be it for all settings
-// or a single one, will need to be able to access the settings API.
-// The settings-api permission allows an app to see the mozSettings
-// API in order to create locks and queue tasks. Whether these tasks
-// will be allowed depends on the exact permissions the app has.
-const kSomeSettingsReadPermission      = "settings-api" + kSettingsReadSuffix;
-const kSomeSettingsWritePermission     = "settings-api" + kSettingsWriteSuffix;
-
-// Time, in seconds, to consider the API is starting to jam
-var kSoftLockupDelta = 30;
-try {
-  kSoftLockupDelta = Services.prefs.getIntPref("dom.mozSettings.softLockupDelta");
-} catch (ex) { }
-
-XPCOMUtils.defineLazyServiceGetter(this, "mrm",
-                                   "@mozilla.org/memory-reporter-manager;1",
-                                   "nsIMemoryReporterManager");
-XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
-                                   "@mozilla.org/parentprocessmessagemanager;1",
-                                   "nsIMessageBroadcaster");
-XPCOMUtils.defineLazyServiceGetter(this, "uuidgen",
-                                   "@mozilla.org/uuid-generator;1",
-                                   "nsIUUIDGenerator");
-XPCOMUtils.defineLazyServiceGetter(this, "gSettingsService",
-                                   "@mozilla.org/settingsService;1",
-                                   "nsISettingsService");
-
-var SettingsPermissions = {
-  checkPermission: function(aPrincipal, aPerm) {
-    if (!aPrincipal) {
-      Cu.reportError("SettingsPermissions.checkPermission was passed a null principal. Denying all permissions.");
-      return false;
-    }
-    if (aPrincipal.origin == "[System Principal]" ||
-        Services.perms.testExactPermissionFromPrincipal(aPrincipal, aPerm) == Ci.nsIPermissionManager.ALLOW_ACTION) {
-      return true;
-    }
-    return false;
-  },
-  hasAllReadPermission: function(aPrincipal) {
-    return this.checkPermission(aPrincipal, kAllSettingsReadPermission);
-  },
-  hasAllWritePermission: function(aPrincipal) {
-    return this.checkPermission(aPrincipal, kAllSettingsWritePermission);
-  },
-  hasSomeReadPermission: function(aPrincipal) {
-    return this.checkPermission(aPrincipal, kSomeSettingsReadPermission);
-  },
-  hasSomeWritePermission: function(aPrincipal) {
-    return this.checkPermission(aPrincipal, kSomeSettingsWritePermission);
-  },
-  hasClearPermission: function(aPrincipal) {
-    return this.checkPermission(aPrincipal, kSettingsClearPermission);
-  },
-  hasReadPermission: function(aPrincipal, aSettingsName) {
-    return this.hasAllReadPermission(aPrincipal) || this.checkPermission(aPrincipal, "settings:" + aSettingsName + kSettingsReadSuffix);
-  },
-  hasWritePermission: function(aPrincipal, aSettingsName) {
-    return this.hasAllWritePermission(aPrincipal) || this.checkPermission(aPrincipal, "settings:" + aSettingsName + kSettingsWriteSuffix);
-  }
-};
-
-
-function SettingsLockInfo(aDB, aMsgMgr, aPrincipal, aLockID, aIsServiceLock, aWindowID, aLockStack) {
-  return {
-    // ID Shared with the object on the child side
-    lockID: aLockID,
-    // Is this a content lock or a settings service lock?
-    isServiceLock: aIsServiceLock,
-    // Which inner window ID
-    windowID: aWindowID,
-    // Where does this lock comes from
-    lockStack: aLockStack,
-    // Tasks to be run once the lock is at the head of the queue
-    tasks: [],
-    // This is set to true once a transaction is ready to run, but is not at the
-    // head of the lock queue.
-    consumable: false,
-    // Holds values that are requested to be set until the lock lifetime ends,
-    // then commits them to the DB.
-    queuedSets: {},
-    // Internal transaction object
-    _transaction: undefined,
-    // Message manager that controls the lock
-    _mm: aMsgMgr,
-    // If true, it means a permissions check failed, so just fail everything now
-    _failed: false,
-    // If we're slated to run finalize, set this to make sure we don't
-    // somehow run other events afterward.
-    finalizing: false,
-    // Lets us know if we can use this lock for a clear command
-    canClear: true,
-    // Lets us know if this lock has been used to clear at any point.
-    hasCleared: false,
-    // forceReadOnly sets whether we want to do a read only transaction. Define
-    // true by default, and let queueTask() set this to false if we queue any
-    // "set" task. Since users of settings locks will queue all tasks before
-    // any idb transaction is created, we know we will have all needed
-    // information to set this before creating a transaction.
-    forceReadOnly: true,
-    // Principal the lock was created under. We assume that the lock
-    // will continue to exist under this principal for the duration of
-    // its lifetime.
-    principal: aPrincipal,
-    getObjectStore: function() {
-      if (VERBOSE) debug("Getting transaction for " + this.lockID);
-      let store;
-      // Test for transaction validity via trying to get the
-      // datastore. If it doesn't work, assume the transaction is
-      // closed, create a new transaction and try again.
-      if (this._transaction) {
-        try {
-          store = this._transaction.objectStore(SETTINGSSTORE_NAME);
-        } catch (e) {
-          if (e.name == "InvalidStateError") {
-            if (VERBOSE) debug("Current transaction for " + this.lockID + " closed, trying to create new one.");
-          } else {
-            if (DEBUG) debug("Unexpected exception, throwing: " + e);
-            throw e;
-          }
-        }
-      }
-      // Create one transaction with a global permission. This may be
-      // slightly slower on apps with full settings permissions, but
-      // it means we don't have to do our own transaction order
-      // bookkeeping.
-      let canReadOnly = allowForceReadOnly && this.forceReadOnly;
-      if (canReadOnly || !SettingsPermissions.hasSomeWritePermission(this.principal)) {
-        if (VERBOSE) debug("Making READONLY transaction for " + this.lockID);
-        this._transaction = aDB._db.transaction(SETTINGSSTORE_NAME, "readonly");
-      } else {
-        if (VERBOSE) debug("Making READWRITE transaction for " + this.lockID);
-        this._transaction = aDB._db.transaction(SETTINGSSTORE_NAME, "readwrite");
-      }
-      this._transaction.oncomplete = function() {
-        if (VERBOSE) debug("Transaction for lock " + this.lockID + " closed");
-      }.bind(this);
-      this._transaction.onabort = function () {
-        if (DEBUG) debug("Transaction for lock " + this.lockID + " aborted");
-        this._failed = true;
-      }.bind(this);
-      try {
-        store = this._transaction.objectStore(SETTINGSSTORE_NAME);
-      } catch (e) {
-          if (e.name == "InvalidStateError") {
-            if (DEBUG) debug("Cannot create objectstore on transaction for " + this.lockID);
-            return null;
-          } else {
-            if (DEBUG) debug("Unexpected exception, throwing: " + e);
-            throw e;
-          }
-      }
-      return store;
-    }
-  };
-}
-
-var SettingsRequestManager = {
-  // Access to the settings DB
-  settingsDB: new SettingsDB(),
-  // Remote messages to listen for from child
-  messages: ["child-process-shutdown", "Settings:Get", "Settings:Set",
-             "Settings:Clear", "Settings:Run", "Settings:Finalize",
-             "Settings:CreateLock", "Settings:RegisterForMessages"],
-  // Map of LockID to SettingsLockInfo objects
-  lockInfo: {},
-  // Storing soft lockup detection infos
-  softLockup: {
-    lockId: null, // last lock dealt with
-    lockTs: null  // last time of dealing with
-  },
-  // Queue of LockIDs. The LockID on the front of the queue is the only lock
-  // that will have requests processed, all other locks will queue requests
-  // until they hit the front of the queue.
-  settingsLockQueue: [],
-  children: [],
-  // Since we need to call observers at times when we may not have
-  // just received a message from a child process, we cache principals
-  // for message managers and check permissions on them before we send
-  // settings notifications to child processes.
-  observerPrincipalCache: new Map(),
-  totalProcessed: 0,
-  tasksConsumed: {},
-  totalSetProcessed: 0,
-  tasksSetConsumed: {},
-  totalGetProcessed: 0,
-  tasksGetConsumed: {},
-
-  init: function() {
-    if (VERBOSE) debug("init");
-    this.settingsDB.init();
-    this.messages.forEach((function(msgName) {
-      ppmm.addMessageListener(msgName, this);
-    }).bind(this));
-    Services.obs.addObserver(this, kXpcomShutdownObserverTopic, false);
-    Services.obs.addObserver(this, kInnerWindowDestroyed, false);
-    mrm.registerStrongReporter(this);
-  },
-
-  _serializePreservingBinaries: function _serializePreservingBinaries(aObject) {
-    function needsUUID(aValue) {
-      if (!aValue || !aValue.constructor) {
-        return false;
-      }
-      return (aValue.constructor.name == "Date") || (aValue instanceof File) ||
-             (aValue instanceof Ci.nsIDOMBlob);
-    }
-    // We need to serialize settings objects, otherwise they can change between
-    // the set() call and the enqueued request being processed. We can't simply
-    // parse(stringify(obj)) because that breaks things like Blobs, Files and
-    // Dates, so we use stringify's replacer and parse's reviver parameters to
-    // preserve binaries.
-    let binaries = Object.create(null);
-    let stringified = JSON.stringify(aObject, function(key, value) {
-      value = this.settingsDB.prepareValue(value);
-      if (needsUUID(value)) {
-        let uuid = uuidgen.generateUUID().toString();
-        binaries[uuid] = value;
-        return uuid;
-      }
-      return value;
-    }.bind(this));
-    return JSON.parse(stringified, function(key, value) {
-      if (value in binaries) {
-        return binaries[value];
-      }
-      return value;
-    });
-  },
-
-  queueTask: function(aOperation, aData) {
-    if (VERBOSE) debug("Queueing task: " + aOperation);
-
-    let defer = {};
-
-    let lock = this.lockInfo[aData.lockID];
-
-    if (!lock) {
-      return Promise.reject({error: "Lock already dead, cannot queue task"});
-    }
-
-    if (aOperation == "set") {
-      aData.settings = this._serializePreservingBinaries(aData.settings);
-    }
-
-    if (aOperation === "set" || aOperation === "clear") {
-      lock.forceReadOnly = false;
-    }
-
-    lock.tasks.push({
-      operation: aOperation,
-      data: aData,
-      defer: defer
-    });
-
-    let promise = new Promise(function(resolve, reject) {
-      defer.resolve = resolve;
-      defer.reject = reject;
-    });
-
-    return promise;
-  },
-
-  // Due to the fact that we're skipping the database in some places
-  // by keeping a local "set" value cache, resolving some calls
-  // without a call to the database would mean we could potentially
-  // receive promise responses out of expected order if a get is
-  // called before a set. Therefore, we wrap our resolve in a null
-  // get, which means it will resolves afer the rest of the calls
-  // queued to the DB.
-  queueTaskReturn: function(aTask, aReturnValue) {
-    if (VERBOSE) debug("Making task queuing transaction request.");
-    let data = aTask.data;
-    let lock = this.lockInfo[data.lockID];
-    let store = lock.getObjectStore(lock.principal);
-    if (!store) {
-      if (DEBUG) debug("Rejecting task queue on lock " + aTask.data.lockID);
-      return Promise.reject({task: aTask, error: "Cannot get object store"});
-    }
-    // Due to the fact that we're skipping the database, resolving
-    // this without a call to the database would mean we could
-    // potentially receive promise responses out of expected order if
-    // a get is called before a set. Therefore, we wrap our resolve in
-    // a null get, which means it will resolves afer the rest of the
-    // calls queued to the DB.
-    let getReq = store.get(0);
-
-    let defer = {};
-    let promiseWrapper = new Promise(function(resolve, reject) {
-      defer.resolve = resolve;
-      defer.reject = reject;
-    });
-
-    getReq.onsuccess = function(event) {
-      return defer.resolve(aReturnValue);
-    };
-    getReq.onerror = function() {
-      return defer.reject({task: aTask, error: getReq.error.name});
-    };
-    return promiseWrapper;
-  },
-  
-  taskGet: function(aTask) {
-    if (VERBOSE) debug("Running Get task on lock " + aTask.data.lockID);
-
-    // Check that we have permissions for getting the value
-    let data = aTask.data;
-    let lock = this.lockInfo[data.lockID];
-
-    if (!lock) {
-      return Promise.reject({task: aTask, error: "Lock died, can't finalize"});
-    }
-    if (lock._failed) {
-      if (DEBUG) debug("Lock failed. All subsequent requests will fail.");
-      return Promise.reject({task: aTask, error: "Lock failed, all requests now failing."});
-    }
-
-    if (lock.hasCleared) {
-      if (DEBUG) debug("Lock was used for a clear command. All subsequent requests will fail.");
-      return Promise.reject({task: aTask, error: "Lock was used for a clear command. All subsequent requests will fail."});
-    }
-
-    lock.canClear = false;
-    
-    if (!SettingsPermissions.hasReadPermission(lock.principal, data.name)) {
-      if (DEBUG) debug("get not allowed for " + data.name);
-      lock._failed = true;
-      return Promise.reject({task: aTask, error: "No permission to get " + data.name});
-    }
-
-    // If the value was set during this transaction, use the cached value
-    if (data.name in lock.queuedSets) {
-      if (VERBOSE) debug("Returning cached set value " + lock.queuedSets[data.name] + " for " + data.name);
-      let local_results = {};
-      local_results[data.name] = lock.queuedSets[data.name];
-      return this.queueTaskReturn(aTask, {task: aTask, results: local_results});
-    }
-
-    // Create/Get transaction and make request
-    if (VERBOSE) debug("Making get transaction request for " + data.name);
-    let store = lock.getObjectStore(lock.principal);
-    if (!store) {
-      if (DEBUG) debug("Rejecting Get task on lock " + aTask.data.lockID);
-      return Promise.reject({task: aTask, error: "Cannot get object store"});
-    }
-
-    if (VERBOSE) debug("Making get request for " + data.name);
-    let getReq = (data.name === "*") ? store.mozGetAll() : store.mozGetAll(data.name);
-
-    let defer = {};
-    let promiseWrapper = new Promise(function(resolve, reject) {
-      defer.resolve = resolve;
-      defer.reject = reject;
-    });
-
-    getReq.onsuccess = function(event) {
-      if (VERBOSE) debug("Request for '" + data.name + "' successful. " +
-            "Record count: " + event.target.result.length);
-
-      if (event.target.result.length == 0) {
-        if (VERBOSE) debug("MOZSETTINGS-GET-WARNING: " + data.name + " is not in the database.\n");
-      }
-
-      let results = {};
-
-      for (let i in event.target.result) {
-        let result = event.target.result[i];
-        let name = result.settingName;
-        if (VERBOSE) debug(name + ": " + result.userValue +", " + result.defaultValue);
-        let value = result.userValue !== undefined ? result.userValue : result.defaultValue;
-        results[name] = value;
-      }
-      return defer.resolve({task: aTask, results: results});
-    };
-    getReq.onerror = function() {
-      return defer.reject({task: aTask, error: getReq.error.name});
-    };
-    return promiseWrapper;
-  },
-
-  taskSet: function(aTask) {
-    let data = aTask.data;
-    let lock = this.lockInfo[data.lockID];
-    let keys = Object.getOwnPropertyNames(data.settings);
-
-    if (!lock) {
-      return Promise.reject({task: aTask, error: "Lock died, can't finalize"});
-    }
-    if (lock._failed) {
-      if (DEBUG) debug("Lock failed. All subsequent requests will fail.");
-      return Promise.reject({task: aTask, error: "Lock failed a permissions check, all requests now failing."});
-    }
-
-    if (lock.hasCleared) {
-      if (DEBUG) debug("Lock was used for a clear command. All subsequent requests will fail.");
-      return Promise.reject({task: aTask, error: "Lock was used for a clear command. All other requests will fail."});
-    }
-
-    lock.canClear = false;
-
-    // If we have no keys, resolve
-    if (keys.length === 0) {
-      if (DEBUG) debug("No keys to change entered!");
-      return Promise.resolve({task: aTask});
-    }
-
-    for (let i = 0; i < keys.length; i++) {
-      if (!SettingsPermissions.hasWritePermission(lock.principal, keys[i])) {
-        if (DEBUG) debug("set not allowed on " + keys[i]);
-        lock._failed = true;
-        return Promise.reject({task: aTask, error: "No permission to set " + keys[i]});
-      }
-    }
-
-    for (let i = 0; i < keys.length; i++) {
-      let key = keys[i];
-      if (VERBOSE) debug("key: " + key + ", val: " + JSON.stringify(data.settings[key]) + ", type: " + typeof(data.settings[key]));
-      lock.queuedSets[key] = data.settings[key];
-    }
-
-    return this.queueTaskReturn(aTask, {task: aTask});
-  },
-
-  startRunning: function(aLockID) {
-    let lock = this.lockInfo[aLockID];
-
-    if (!lock) {
-      if (DEBUG) debug("Lock no longer alive, cannot start running");
-      return;
-    }
-
-    lock.consumable = true;
-    if (aLockID == this.settingsLockQueue[0] || this.settingsLockQueue.length == 0) {
-      // If a lock is currently at the head of the queue, run all tasks for
-      // it.
-      if (VERBOSE) debug("Start running tasks for " + aLockID);
-      this.queueConsume();
-    } else {
-      // If a lock isn't at the head of the queue, but requests to be run,
-      // simply mark it as consumable, which means it will automatically run
-      // once it comes to the head of the queue.
-      if (VERBOSE) debug("Queuing tasks for " + aLockID + " while waiting for " + this.settingsLockQueue[0]);
-    }
-  },
-
-  queueConsume: function() {
-    if (this.settingsLockQueue.length > 0 && this.lockInfo[this.settingsLockQueue[0]].consumable) {
-      Services.tm.currentThread.dispatch(SettingsRequestManager.consumeTasks.bind(this), Ci.nsIThread.DISPATCH_NORMAL);
-    }
-  },
-
-  finalizeSets: function(aTask) {
-    let data = aTask.data;
-    if (VERBOSE) debug("Finalizing tasks for lock " + data.lockID);
-    let lock = this.lockInfo[data.lockID];
-
-    if (!lock) {
-      return Promise.reject({task: aTask, error: "Lock died, can't finalize"});
-    }
-    lock.finalizing = true;
-    if (lock._failed) {
-      this.removeLock(data.lockID);
-      return Promise.reject({task: aTask, error: "Lock failed a permissions check, all requests now failing."});
-    }
-    // If we have cleared, there is no reason to continue finalizing
-    // this lock. Just resolve promise with task and move on.
-    if (lock.hasCleared) {
-      if (VERBOSE) debug("Clear was called on lock, skipping finalize");
-      this.removeLock(data.lockID);
-      return Promise.resolve({task: aTask});
-    }
-    let keys = Object.getOwnPropertyNames(lock.queuedSets);
-    if (keys.length === 0) {
-      if (VERBOSE) debug("Nothing to finalize. Exiting.");
-      this.removeLock(data.lockID);
-      return Promise.resolve({task: aTask});
-    }
-
-    let store = lock.getObjectStore(lock.principal);
-    if (!store) {
-      if (DEBUG) debug("Rejecting Set task on lock " + aTask.data.lockID);
-      this.removeLock(data.lockID);
-      return Promise.reject({task: aTask, error: "Cannot get object store"});
-    }
-
-    // Due to the fact there may have multiple set operations to clear, and
-    // they're all async, callbacks are gathered into promises, and the promises
-    // are processed with Promises.all().
-    let checkPromises = [];
-    let finalValues = {};
-    for (let i = 0; i < keys.length; i++) {
-      let key = keys[i];
-      if (VERBOSE) debug("key: " + key + ", val: " + lock.queuedSets[key] + ", type: " + typeof(lock.queuedSets[key]));
-      let checkDefer = {};
-      let checkPromise = new Promise(function(resolve, reject) {
-        checkDefer.resolve = resolve;
-        checkDefer.reject = reject;
-      });
-
-      // Get operation is used to fill in the default value, assuming there is
-      // one. For the moment, if a value doesn't exist in the settings DB, we
-      // allow the user to add it, and just pass back a null default value.
-      let checkKeyRequest = store.get(key);
-      checkKeyRequest.onsuccess = function (event) {
-        let userValue = lock.queuedSets[key];
-        let defaultValue;
-        if (!event.target.result) {
-          defaultValue = null;
-          if (VERBOSE) debug("MOZSETTINGS-GET-WARNING: " + key + " is not in the database.\n");
-        } else {
-          defaultValue = event.target.result.defaultValue;
-        }
-        let obj = {settingName: key, defaultValue: defaultValue, userValue: userValue};
-        finalValues[key] = {defaultValue: defaultValue, userValue: userValue};
-        let setReq = store.put(obj);
-        setReq.onsuccess = function() {
-          if (VERBOSE) debug("Set successful!");
-          if (VERBOSE) debug("key: " + key + ", val: " + finalValues[key] + ", type: " + typeof(finalValues[key]));
-          return checkDefer.resolve({task: aTask});
-        };
-        setReq.onerror = function() {
-          return checkDefer.reject({task: aTask, error: setReq.error.name});
-        };
-      }.bind(this);
-      checkKeyRequest.onerror = function(event) {
-        return checkDefer.reject({task: aTask, error: checkKeyRequest.error.name});
-      };
-      checkPromises.push(checkPromise);
-    }
-
-    let defer = {};
-    let promiseWrapper = new Promise(function(resolve, reject) {
-      defer.resolve = resolve;
-      defer.reject = reject;
-    });
-
-    // Once all transactions are done, or any have failed, remove the lock and
-    // start processing the tasks from the next lock in the queue.
-    Promise.all(checkPromises).then(function() {
-      // If all commits were successful, notify observers
-      for (let i = 0; i < keys.length; i++) {
-        this.sendSettingsChange(keys[i], finalValues[keys[i]].userValue, lock.isServiceLock);
-      }
-      this.removeLock(data.lockID);
-      defer.resolve({task: aTask});
-    }.bind(this), function(ret) {
-      this.removeLock(data.lockID);
-      defer.reject({task: aTask, error: "Set transaction failure"});
-    }.bind(this));
-    return promiseWrapper;
-  },
-
-  // Clear is only expected to be called via tests, and if a lock
-  // calls clear, it should be the only thing the lock does. This
-  // allows us to not have to deal with the possibility of query
-  // integrity checking. Clear should never be called in the wild,
-  // even by certified apps, which is why it has its own permission
-  // (settings-clear).
-  taskClear: function(aTask) {
-    if (VERBOSE) debug("Clearing");
-    let data = aTask.data;
-    let lock = this.lockInfo[data.lockID];
-
-    if (lock._failed) {
-      if (DEBUG) debug("Lock failed, all requests now failing.");
-      return Promise.reject({task: aTask, error: "Lock failed, all requests now failing."});
-    }
-
-    if (!lock.canClear) {
-      if (DEBUG) debug("Lock tried to clear after queuing other tasks. Failing.");
-      lock._failed = true;
-      return Promise.reject({task: aTask, error: "Cannot call clear after queuing other tasks, all requests now failing."});
-    }
-
-    if (!SettingsPermissions.hasClearPermission(lock.principal)) {
-      if (DEBUG) debug("clear not allowed");
-      lock._failed = true;
-      return Promise.reject({task: aTask, error: "No permission to clear DB"});
-    }
-
-    lock.hasCleared = true;
-
-    let store = lock.getObjectStore(lock.principal);
-    if (!store) {
-      if (DEBUG) debug("Rejecting Clear task on lock " + aTask.data.lockID);
-      return Promise.reject({task: aTask, error: "Cannot get object store"});
-    }
-    let defer = {};
-    let promiseWrapper = new Promise(function(resolve, reject) {
-      defer.resolve = resolve;
-      defer.reject = reject;
-    });
-
-    let clearReq = store.clear();
-    clearReq.onsuccess = function() {
-      return defer.resolve({task: aTask});
-    };
-    clearReq.onerror = function() {
-      return defer.reject({task: aTask});
-    };
-    return promiseWrapper;
-  },
-
-  ensureConnection : function() {
-    if (VERBOSE) debug("Ensuring Connection");
-    let defer = {};
-    let promiseWrapper = new Promise(function(resolve, reject) {
-      defer.resolve = resolve;
-      defer.reject = reject;
-    });
-    this.settingsDB.ensureDB(
-      function() { defer.resolve(); },
-      function(error) {
-        if (DEBUG) debug("Cannot open Settings DB. Trying to open an old version?\n");
-        defer.reject(error);
-      }
-    );
-    return promiseWrapper;
-  },
-
-  runTasks: function(aLockID) {
-    if (VERBOSE) debug("Running tasks for " + aLockID);
-    let lock = this.lockInfo[aLockID];
-    if (!lock) {
-      if (DEBUG) debug("Lock no longer alive, cannot run tasks");
-      return;
-    }
-    let currentTask = lock.tasks.shift();
-    let promises = [];
-    if (TRACK) {
-      if (this.tasksConsumed[aLockID] === undefined) {
-        this.tasksConsumed[aLockID] = 0;
-        this.tasksGetConsumed[aLockID] = 0;
-        this.tasksSetConsumed[aLockID] = 0;
-      }
-    }
-    while (currentTask) {
-      if (VERBOSE) debug("Running Operation " + currentTask.operation);
-      if (lock.finalizing) {
-        // We should really never get to this point, but if we do,
-        // fail every task that happens.
-        Cu.reportError("Settings lock trying to run more tasks after finalizing. Ignoring tasks, but this is bad. Lock: " + aLockID);
-        currentTask.defer.reject("Cannot call new task after finalizing");
-      } else {
-      let p;
-      this.totalProcessed++;
-      if (TRACK) {
-        this.tasksConsumed[aLockID]++;
-      }
-      switch (currentTask.operation) {
-        case "get":
-          this.totalGetProcessed++;
-          if (TRACK) {
-            this.tasksGetConsumed[aLockID]++;
-          }
-          p = this.taskGet(currentTask);
-          break;
-        case "set":
-          this.totalSetProcessed++;
-          if (TRACK) {
-            this.tasksSetConsumed[aLockID]++;
-          }
-          p = this.taskSet(currentTask);
-          break;
-        case "clear":
-          p = this.taskClear(currentTask);
-          break;
-        case "finalize":
-          p = this.finalizeSets(currentTask);
-          break;
-        default:
-          if (DEBUG) debug("Invalid operation: " + currentTask.operation);
-          p.reject("Invalid operation: " + currentTask.operation);
-      }
-      p.then(function(ret) {
-        ret.task.defer.resolve("results" in ret ? ret.results : null);
-      }.bind(currentTask), function(ret) {
-        ret.task.defer.reject(ret.error);
-      });
-      promises.push(p);
-      }
-      currentTask = lock.tasks.shift();
-    }
-  },
-
-  consumeTasks: function() {
-    if (this.settingsLockQueue.length == 0) {
-      if (VERBOSE) debug("Nothing to run!");
-      return;
-    }
-
-    let lockID = this.settingsLockQueue[0];
-    if (VERBOSE) debug("Consuming tasks for " + lockID);
-    let lock = this.lockInfo[lockID];
-
-    // If a process dies, we should clean up after it via the
-    // child-process-shutdown event. But just in case we don't, we want to make
-    // sure we never block on consuming.
-    if (!lock) {
-      if (DEBUG) debug("Lock no longer alive, cannot consume tasks");
-      this.queueConsume();
-      return;
-    }
-
-    if (!lock.consumable || lock.tasks.length === 0) {
-      if (VERBOSE) debug("No more tasks to run or not yet consuamble.");
-      return;
-    }
-
-    lock.consumable = false;
-    this.ensureConnection().then(
-      function(task) {
-        this.runTasks(lockID);
-        this.updateSoftLockup(lockID);
-      }.bind(this), function(ret) {
-        dump("-*- SettingsRequestManager: SETTINGS DATABASE ERROR: Cannot make DB connection!\n");
-    });
-  },
-
-  observe: function(aSubject, aTopic, aData) {
-    if (VERBOSE) debug("observe: " + aTopic);
-    switch (aTopic) {
-      case kXpcomShutdownObserverTopic:
-        this.messages.forEach((function(msgName) {
-          ppmm.removeMessageListener(msgName, this);
-        }).bind(this));
-        Services.obs.removeObserver(this, kXpcomShutdownObserverTopic);
-        ppmm = null;
-        mrm.unregisterStrongReporter(this);
-        break;
-
-      case kInnerWindowDestroyed:
-        let wId = aSubject.QueryInterface(Ci.nsISupportsPRUint64).data;
-        this.forceFinalizeChildLocksNonOOP(wId);
-        break;
-
-      default:
-        if (DEBUG) debug("Wrong observer topic: " + aTopic);
-        break;
-    }
-  },
-
-  collectReports: function(aCallback, aData, aAnonymize) {
-    for (let lockId of Object.keys(this.lockInfo)) {
-      let lock = this.lockInfo[lockId];
-      let length = lock.tasks.length;
-
-      if (length === 0) {
-        continue;
-      }
-
-      let path = "settings-locks/tasks/lock(id=" + lockId + ")/";
-
-      aCallback.callback("", path + "alive",
-                         Ci.nsIMemoryReporter.KIND_OTHER,
-                         Ci.nsIMemoryReporter.UNITS_COUNT,
-                         length,
-                         "Alive tasks for this lock",
-                         aData);
-    }
-
-    aCallback.callback("",
-                       "settings-locks/tasks-total/processed",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this.totalProcessed,
-                       "The total number of tasks that were executed.",
-                       aData);
-
-    aCallback.callback("",
-                       "settings-locks/tasks-total/set",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this.totalSetProcessed,
-                       "The total number of set tasks that were executed.",
-                       aData);
-
-    aCallback.callback("",
-                       "settings-locks/tasks-total/get",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this.totalGetProcessed,
-                       "The total number of get tasks that were executed.",
-                       aData);
-
-    // if TRACK is not enabled, then, no details are available
-    if (!TRACK) {
-      return;
-    }
-
-    for (let lockId of Object.keys(this.tasksConsumed)) {
-      let lock = this.lockInfo[lockId];
-      let length = 0;
-      if (lock) {
-        length = lock.tasks.length;
-      }
-
-      let path = "settings-locks/tasks/lock(id=" + lockId + ")/";
-
-      aCallback.callback("", path + "set",
-                         Ci.nsIMemoryReporter.KIND_OTHER,
-                         Ci.nsIMemoryReporter.UNITS_COUNT,
-                         this.tasksSetConsumed[lockId],
-                         "Set tasks for this lock.",
-                         aData);
-
-      aCallback.callback("", path + "get",
-                         Ci.nsIMemoryReporter.KIND_OTHER,
-                         Ci.nsIMemoryReporter.UNITS_COUNT,
-                         this.tasksGetConsumed[lockId],
-                         "Get tasks for this lock.",
-                         aData);
-
-      aCallback.callback("", path + "processed",
-                         Ci.nsIMemoryReporter.KIND_OTHER,
-                         Ci.nsIMemoryReporter.UNITS_COUNT,
-                         this.tasksConsumed[lockId],
-                         "Number of tasks that were executed.",
-                         aData);
-    }
-  },
-
-  sendSettingsChange: function(aKey, aValue, aIsServiceLock) {
-    this.broadcastMessage("Settings:Change:Return:OK",
-      { key: aKey, value: aValue });
-    var setting = {
-      key: aKey,
-      value: aValue,
-      isInternalChange: aIsServiceLock
-    };
-    setting.wrappedJSObject = setting;
-    Services.obs.notifyObservers(setting, kMozSettingsChangedObserverTopic, "");
-  },
-
-  broadcastMessage: function broadcastMessage(aMsgName, aContent) {
-    if (VERBOSE) debug("Broadcast");
-    this.children.forEach(function(msgMgr) {
-      let principal = this.observerPrincipalCache.get(msgMgr);
-      if (!principal) {
-        if (DEBUG) debug("Cannot find principal for message manager to check permissions");
-      }
-      else if (SettingsPermissions.hasReadPermission(principal, aContent.key)) {
-        try {
-          msgMgr.sendAsyncMessage(aMsgName, aContent);
-        } catch (e) {
-          if (DEBUG) debug("Failed sending message: " + aMsgName);
-        }
-      }
-    }.bind(this));
-    if (VERBOSE) debug("Finished Broadcasting");
-  },
-
-  addObserver: function(aMsgMgr, aPrincipal) {
-    if (VERBOSE) debug("Add observer for " + aPrincipal.origin);
-    if (this.children.indexOf(aMsgMgr) == -1) {
-      this.children.push(aMsgMgr);
-      this.observerPrincipalCache.set(aMsgMgr, aPrincipal);
-    }
-  },
-
-  removeObserver: function(aMsgMgr) {
-    if (VERBOSE) {
-      let principal = this.observerPrincipalCache.get(aMsgMgr);
-      if (principal) {
-        debug("Remove observer for " + principal.origin);
-      }
-    }
-    let index = this.children.indexOf(aMsgMgr);
-    if (index != -1) {
-      this.children.splice(index, 1);
-      this.observerPrincipalCache.delete(aMsgMgr);
-    }
-    if (VERBOSE) debug("Principal/MessageManager pairs left in observer cache: " + this.observerPrincipalCache.size);
-  },
-
-  removeLock: function(aLockID) {
-    if (VERBOSE) debug("Removing lock " + aLockID);
-    if (this.lockInfo[aLockID]) {
-      let transaction = this.lockInfo[aLockID]._transaction;
-      if (transaction) {
-        try {
-          transaction.abort();
-        } catch (e) {
-          if (e.name == "InvalidStateError") {
-            if (VERBOSE) debug("Transaction for " + aLockID + " closed already");
-          } else {
-            if (DEBUG) debug("Unexpected exception, throwing: " + e);
-            throw e;
-          }
-        }
-      }
-      delete this.lockInfo[aLockID];
-    }
-    let index = this.settingsLockQueue.indexOf(aLockID);
-    if (index > -1) {
-      this.settingsLockQueue.splice(index, 1);
-    }
-    // If index is 0, the lock we just removed was at the head of
-    // the queue, so possibly queue the next lock if it's
-    // consumable.
-    if (index == 0) {
-      this.queueConsume();
-    }
-  },
-
-  hasLockFinalizeTask: function(lock) {
-    // Go in reverse order because finalize should be the last one
-    for (let task_index = lock.tasks.length; task_index >= 0; task_index--) {
-      if (lock.tasks[task_index]
-          && lock.tasks[task_index].operation === "finalize") {
-        return true;
-      }
-    }
-    return false;
-  },
-
-  enqueueForceFinalize: function(lock) {
-    if (!this.hasLockFinalizeTask(lock)) {
-      if (VERBOSE) debug("Alive lock has pending tasks: " + lock.lockID);
-      this.queueTask("finalize", {lockID: lock.lockID}).then(
-        function() {
-          if (VERBOSE) debug("Alive lock " + lock.lockID + " succeeded to force-finalize");
-        },
-        function(error) {
-          if (DEBUG) debug("Alive lock " + lock.lockID + " failed to force-finalize due to error: " + error);
-        }
-      );
-      // Finalize is considered a task running situation, but it also needs to
-      // queue a task.
-      this.startRunning(lock.lockID);
-    }
-  },
-
-  forceFinalizeChildLocksNonOOP: function(windowId) {
-    if (VERBOSE) debug("Forcing finalize on child locks, non OOP");
-
-    for (let lockId of Object.keys(this.lockInfo)) {
-      let lock = this.lockInfo[lockId];
-      if (lock.windowID === windowId) {
-        this.enqueueForceFinalize(lock);
-      }
-    }
-  },
-
-  forceFinalizeChildLocksOOP: function(aMsgMgr) {
-    if (VERBOSE) debug("Forcing finalize on child locks, OOP");
-
-    for (let lockId of Object.keys(this.lockInfo)) {
-      let lock = this.lockInfo[lockId];
-      if (lock._mm === aMsgMgr) {
-        this.enqueueForceFinalize(lock);
-      }
-    }
-  },
-
-  updateSoftLockup: function(aLockId) {
-    if (VERBOSE) debug("Treating lock " + aLockId + ", so updating soft lockup infos ...");
-
-    this.softLockup = {
-      lockId: aLockId,
-      lockTs: new Date()
-    };
-  },
-
-  checkSoftLockup: function() {
-    if (VERBOSE) debug("Checking for soft lockup ...");
-
-    if (this.settingsLockQueue.length === 0) {
-      if (VERBOSE) debug("Empty settings lock queue, no soft lockup ...");
-      return;
-    }
-
-    let head = this.settingsLockQueue[0];
-    if (head !== this.softLockup.lockId) {
-      if (VERBOSE) debug("Non matching head of settings lock queue, no soft lockup ...");
-      return;
-    }
-
-    let delta = (new Date() - this.softLockup.lockTs) / 1000;
-    if (delta < kSoftLockupDelta) {
-      if (VERBOSE) debug("Matching head of settings lock queue, but delta (" + delta + ") < 30 secs, no soft lockup ...");
-      return;
-    }
-
-    let msgBlocked = "Settings queue head blocked at " + head +
-                     " for " + delta + " secs, Settings API may be soft lockup. Lock from: " +
-                     this.lockInfo[head].lockStack;
-    Cu.reportError(msgBlocked);
-    if (DEBUG) debug(msgBlocked);
-  },
-
-  receiveMessage: function(aMessage) {
-    if (VERBOSE) debug("receiveMessage " + aMessage.name + ": " + JSON.stringify(aMessage.data));
-
-    let msg = aMessage.data;
-    let mm = aMessage.target;
-
-    function returnMessage(name, data) {
-      if (mm) {
-        try {
-          mm.sendAsyncMessage(name, data);
-        } catch (e) {
-          if (DEBUG) debug("Return message failed, " + name + ": " + e);
-        }
-      } else {
-        try {
-          gSettingsService.receiveMessage({ name: name, data: data });
-	} catch (e) {
-          if (DEBUG) debug("Direct return message failed, " + name + ": " + e);
-	}
-      }
-    }
-
-    // For all message types that expect a lockID, we check to make
-    // sure that we're accessing a lock that's part of our process. If
-    // not, consider it a security violation and kill the app. Killing
-    // based on creating a colliding lock ID happens as part of
-    // CreateLock check below.
-    switch (aMessage.name) {
-      case "Settings:Get":
-      case "Settings:Set":
-      case "Settings:Clear":
-      case "Settings:Run":
-      case "Settings:Finalize":
-        this.checkSoftLockup();
-        if (!msg.lockID) {
-          Cu.reportError("Process sending request for lock that does not exist. Killing.");
-        }
-        else if (!this.lockInfo[msg.lockID]) {
-          if (DEBUG) debug("Cannot find lock ID " + msg.lockID);
-          // This doesn't kill, because we can have things that file
-          // finalize, then die, and we may get the observer
-          // notification before we get the IPC messages.
-          return;
-        }
-        else if (mm != this.lockInfo[msg.lockID]._mm) {
-          Cu.reportError("Process trying to access settings lock from another process. Killing.");
-        }
-      default:
-      break;
-    }
-
-    switch (aMessage.name) {
-      case "child-process-shutdown":
-        if (VERBOSE) debug("Child process shutdown received.");
-        this.forceFinalizeChildLocksOOP(mm);
-        this.removeObserver(mm);
-        break;
-      case "Settings:RegisterForMessages":
-        if (!SettingsPermissions.hasSomeReadPermission(aMessage.principal)) {
-          Cu.reportError("Settings message " + aMessage.name +
-                         " from a content process with no 'settings-api-read' privileges.");
-          return;
-        }
-        this.addObserver(mm, aMessage.principal);
-        break;
-      case "Settings:UnregisterForMessages":
-        this.removeObserver(mm);
-        break;
-      case "Settings:CreateLock":
-        if (VERBOSE) debug("Received CreateLock for " + msg.lockID + " from " + aMessage.principal.origin + " window: " + msg.windowID);
-        // If we try to create a lock ID that collides with one
-        // already in the system, consider it a security violation and
-        // kill.
-        if (msg.lockID in this.settingsLockQueue) {
-          Cu.reportError("Trying to queue a lock with the same ID as an already queued lock. Killing app.");
-          return;
-        }
-
-        if (this.softLockup.lockId === null) {
-          this.updateSoftLockup(msg.lockID);
-        }
-
-        this.settingsLockQueue.push(msg.lockID);
-        this.lockInfo[msg.lockID] = SettingsLockInfo(this.settingsDB,
-                                                     mm,
-                                                     aMessage.principal,
-                                                     msg.lockID,
-                                                     msg.isServiceLock,
-                                                     msg.windowID,
-                                                     msg.lockStack);
-        break;
-      case "Settings:Get":
-        if (VERBOSE) debug("Received getRequest from " + msg.lockID);
-        this.queueTask("get", msg).then(function(settings) {
-            returnMessage("Settings:Get:OK", {
-              lockID: msg.lockID,
-              requestID: msg.requestID,
-              settings: settings
-            });
-          }, function(error) {
-            if (DEBUG) debug("getRequest FAILED " + msg.name);
-            returnMessage("Settings:Get:KO", {
-              lockID: msg.lockID,
-              requestID: msg.requestID,
-              errorMsg: error
-            });
-        });
-        break;
-      case "Settings:Set":
-        if (VERBOSE) debug("Received Set Request from " + msg.lockID);
-        this.queueTask("set", msg).then(function(settings) {
-          returnMessage("Settings:Set:OK", {
-            lockID: msg.lockID,
-            requestID: msg.requestID
-          });
-        }, function(error) {
-          returnMessage("Settings:Set:KO", {
-            lockID: msg.lockID,
-            requestID: msg.requestID,
-            errorMsg: error
-          });
-        });
-        break;
-      case "Settings:Clear":
-        if (VERBOSE) debug("Received Clear Request from " + msg.lockID);
-        this.queueTask("clear", msg).then(function() {
-          returnMessage("Settings:Clear:OK", {
-            lockID: msg.lockID,
-            requestID: msg.requestID
-          });
-        }, function(error) {
-          returnMessage("Settings:Clear:KO", {
-            lockID: msg.lockID,
-            requestID: msg.requestID,
-            errorMsg: error
-          });
-        });
-        break;
-      case "Settings:Finalize":
-        if (VERBOSE) debug("Received Finalize");
-        this.queueTask("finalize", msg).then(function() {
-          returnMessage("Settings:Finalize:OK", {
-            lockID: msg.lockID
-          });
-        }, function(error) {
-          returnMessage("Settings:Finalize:KO", {
-            lockID: msg.lockID,
-            errorMsg: error
-          });
-        });
-      // YES THIS IS SUPPOSED TO FALL THROUGH. Finalize is considered a task
-      // running situation, but it also needs to queue a task.
-      case "Settings:Run":
-        if (VERBOSE) debug("Received Run");
-        this.startRunning(msg.lockID);
-        break;
-      default:
-        if (DEBUG) debug("Wrong message: " + aMessage.name);
-    }
-  }
-};
-
-// This code should ALWAYS be living only on the parent side.
-if (!inParent) {
-  debug("SettingsRequestManager should be living on parent side.");
-  throw Cr.NS_ERROR_ABORT;
-} else {
-  this.SettingsRequestManager = SettingsRequestManager;
-  SettingsRequestManager.init();
-}
deleted file mode 100644
--- a/dom/settings/SettingsService.js
+++ /dev/null
@@ -1,358 +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/. */
-
-"use strict";
-
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import('resource://gre/modules/SettingsRequestManager.jsm');
-
-/* static functions */
-var DEBUG = false;
-var VERBOSE = false;
-
-try {
-  DEBUG   =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsService.debug.enabled");
-  VERBOSE =
-    Services.prefs.getBoolPref("dom.mozSettings.SettingsService.verbose.enabled");
-} catch (ex) { }
-
-function debug(s) {
-  dump("-*- SettingsService: " + s + "\n");
-}
-
-XPCOMUtils.defineLazyServiceGetter(this, "uuidgen",
-                                   "@mozilla.org/uuid-generator;1",
-                                   "nsIUUIDGenerator");
-XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
-                                   "@mozilla.org/childprocessmessagemanager;1",
-                                   "nsIMessageSender");
-XPCOMUtils.defineLazyServiceGetter(this, "mrm",
-                                   "@mozilla.org/memory-reporter-manager;1",
-                                   "nsIMemoryReporterManager");
-
-const nsIClassInfo                   = Ci.nsIClassInfo;
-const kXpcomShutdownObserverTopic    = "xpcom-shutdown";
-
-const SETTINGSSERVICELOCK_CONTRACTID = "@mozilla.org/settingsServiceLock;1";
-const SETTINGSSERVICELOCK_CID        = Components.ID("{d7a395a0-e292-11e1-834e-1761d57f5f99}");
-const nsISettingsServiceLock         = Ci.nsISettingsServiceLock;
-
-function makeSettingsServiceRequest(aCallback, aName, aValue) {
-  return {
-    callback: aCallback,
-    name: aName,
-    value: aValue
-  };
-};
-
-const kLockListeners = ["Settings:Get:OK", "Settings:Get:KO",
-                        "Settings:Clear:OK", "Settings:Clear:KO",
-                        "Settings:Set:OK", "Settings:Set:KO",
-                        "Settings:Finalize:OK", "Settings:Finalize:KO"];
-
-function SettingsServiceLock(aSettingsService, aTransactionCallback) {
-  if (VERBOSE) debug("settingsServiceLock constr!");
-  this._open = true;
-  this._settingsService = aSettingsService;
-  this._id = uuidgen.generateUUID().toString();
-  this._transactionCallback = aTransactionCallback;
-  this._requests = {};
-  let closeHelper = function() {
-    if (VERBOSE) debug("closing lock " + this._id);
-    this._open = false;
-    this.runOrFinalizeQueries();
-  }.bind(this);
-
-  this.addListeners();
-
-  let createLockPayload = {
-    lockID: this._id,
-    isServiceLock: true,
-    windowID: undefined,
-    lockStack: (new Error).stack
-  };
-
-  this.returnMessage("Settings:CreateLock", createLockPayload);
-  Services.tm.currentThread.dispatch(closeHelper, Ci.nsIThread.DISPATCH_NORMAL);
-}
-
-SettingsServiceLock.prototype = {
-  get closed() {
-    return !this._open;
-  },
-
-  addListeners: function() {
-    for (let msg of kLockListeners) {
-      cpmm.addMessageListener(msg, this);
-    }
-  },
-
-  removeListeners: function() {
-    for (let msg of kLockListeners) {
-      cpmm.removeMessageListener(msg, this);
-    }
-  },
-
-  returnMessage: function(aMessage, aData) {
-    SettingsRequestManager.receiveMessage({
-      name: aMessage,
-      data: aData,
-      target: undefined,
-      principal: Services.scriptSecurityManager.getSystemPrincipal()
-    });
-  },
-
-  runOrFinalizeQueries: function() {
-    if (!this._requests || Object.keys(this._requests).length == 0) {
-      this.returnMessage("Settings:Finalize", {lockID: this._id});
-    } else {
-      this.returnMessage("Settings:Run", {lockID: this._id});
-    }
-  },
-
-  receiveMessage: function(aMessage) {
-
-    let msg = aMessage.data;
-    // SettingsRequestManager broadcasts changes to all locks in the child. If
-    // our lock isn't being addressed, just return.
-    if(msg.lockID != this._id) {
-      return;
-    }
-    if (VERBOSE) debug("receiveMessage (" + this._id + "): " + aMessage.name);
-    // Finalizing a transaction does not return a request ID since we are
-    // supposed to fire callbacks.
-    if (!msg.requestID) {
-      switch (aMessage.name) {
-        case "Settings:Finalize:OK":
-          if (VERBOSE) debug("Lock finalize ok!");
-          this.callTransactionHandle();
-          break;
-        case "Settings:Finalize:KO":
-          if (DEBUG) debug("Lock finalize failed!");
-          this.callAbort();
-          break;
-        default:
-          if (DEBUG) debug("Message type " + aMessage.name + " is missing a requestID");
-      }
-
-      this._settingsService.unregisterLock(this._id);
-      return;
-    }
-
-    let req = this._requests[msg.requestID];
-    if (!req) {
-      if (DEBUG) debug("Matching request not found.");
-      return;
-    }
-    delete this._requests[msg.requestID];
-    switch (aMessage.name) {
-      case "Settings:Get:OK":
-        this._open = true;
-        let settings_names = Object.keys(msg.settings);
-        if (settings_names.length > 0) {
-          let name = settings_names[0];
-          if (DEBUG && settings_names.length > 1) {
-            debug("Warning: overloaded setting:" + name);
-          }
-          let result = msg.settings[name];
-          this.callHandle(req.callback, name, result);
-        } else {
-          this.callHandle(req.callback, req.name, null);
-        }
-        this._open = false;
-        break;
-      case "Settings:Set:OK":
-        this._open = true;
-        // We don't pass values back from sets in SettingsManager...
-        this.callHandle(req.callback, req.name, req.value);
-        this._open = false;
-        break;
-      case "Settings:Get:KO":
-      case "Settings:Set:KO":
-        if (DEBUG) debug("error:" + msg.errorMsg);
-        this.callError(req.callback, msg.error);
-        break;
-      default:
-        if (DEBUG) debug("Wrong message: " + aMessage.name);
-    }
-    this.runOrFinalizeQueries();
-  },
-
-  get: function get(aName, aCallback) {
-    if (VERBOSE) debug("get (" + this._id + "): " + aName);
-    if (!this._open) {
-      if (DEBUG) debug("Settings lock not open!\n");
-      throw Components.results.NS_ERROR_ABORT;
-    }
-    let reqID = uuidgen.generateUUID().toString();
-    this._requests[reqID] = makeSettingsServiceRequest(aCallback, aName);
-    this.returnMessage("Settings:Get", {requestID: reqID,
-                                        lockID: this._id,
-                                        name: aName});
-  },
-
-  set: function set(aName, aValue, aCallback) {
-    if (VERBOSE) debug("set: " + aName + " " + aValue);
-    if (!this._open) {
-      throw "Settings lock not open";
-    }
-    let reqID = uuidgen.generateUUID().toString();
-    this._requests[reqID] = makeSettingsServiceRequest(aCallback, aName, aValue);
-    let settings = {};
-    settings[aName] = aValue;
-    this.returnMessage("Settings:Set", {requestID: reqID,
-                                        lockID: this._id,
-                                        settings: settings});
-  },
-
-  callHandle: function callHandle(aCallback, aName, aValue) {
-    try {
-        aCallback && aCallback.handle ? aCallback.handle(aName, aValue) : null;
-    } catch (e) {
-      if (DEBUG) debug("settings 'handle' for " + aName + " callback threw an exception, dropping: " + e + "\n");
-    }
-  },
-
-  callAbort: function callAbort(aCallback, aMessage) {
-    try {
-      aCallback && aCallback.handleAbort ? aCallback.handleAbort(aMessage) : null;
-    } catch (e) {
-      if (DEBUG) debug("settings 'abort' callback threw an exception, dropping: " + e + "\n");
-    }
-  },
-
-  callError: function callError(aCallback, aMessage) {
-    try {
-      aCallback && aCallback.handleError ? aCallback.handleError(aMessage) : null;
-    } catch (e) {
-      if (DEBUG) debug("settings 'error' callback threw an exception, dropping: " + e + "\n");
-    }
-  },
-
-  callTransactionHandle: function callTransactionHandle() {
-    try {
-      this._transactionCallback && this._transactionCallback.handle ? this._transactionCallback.handle() : null;
-    } catch (e) {
-      if (DEBUG) debug("settings 'Transaction handle' callback threw an exception, dropping: " + e + "\n");
-    }
-  },
-
-  classID : SETTINGSSERVICELOCK_CID,
-  QueryInterface : XPCOMUtils.generateQI([nsISettingsServiceLock])
-};
-
-const SETTINGSSERVICE_CID        = Components.ID("{f656f0c0-f776-11e1-a21f-0800200c9a66}");
-
-function SettingsService()
-{
-  if (VERBOSE) debug("settingsService Constructor");
-  this._locks = [];
-  this._serviceLocks = {};
-  this._createdLocks = 0;
-  this._unregisteredLocks = 0;
-  this.init();
-}
-
-SettingsService.prototype = {
-
-  init: function() {
-    Services.obs.addObserver(this, kXpcomShutdownObserverTopic, false);
-    mrm.registerStrongReporter(this);
-  },
-
-  uninit: function() {
-    Services.obs.removeObserver(this, kXpcomShutdownObserverTopic);
-    mrm.unregisterStrongReporter(this);
-  },
-
-  observe: function(aSubject, aTopic, aData) {
-    if (VERBOSE) debug("observe: " + aTopic);
-    if (aTopic === kXpcomShutdownObserverTopic) {
-      this.uninit();
-    }
-  },
-
-  receiveMessage: function(aMessage) {
-    if (VERBOSE) debug("Entering receiveMessage");
-
-    let lockID = aMessage.data.lockID;
-    if (!lockID) {
-      if (DEBUG) debug("No lock ID");
-      return;
-    }
-
-    if (!(lockID in this._serviceLocks)) {
-      if (DEBUG) debug("Received message for lock " + lockID + " but no lock");
-      return;
-    }
-
-    if (VERBOSE) debug("Delivering message");
-    this._serviceLocks[lockID].receiveMessage(aMessage);
-  },
-
-  createLock: function createLock(aCallback) {
-    if (VERBOSE) debug("Calling createLock");
-    var lock = new SettingsServiceLock(this, aCallback);
-    if (VERBOSE) debug("Created lock " + lock._id);
-    this.registerLock(lock);
-    return lock;
-  },
-
-  registerLock: function(aLock) {
-    if (VERBOSE) debug("Registering lock " + aLock._id);
-    this._locks.push(aLock._id);
-    this._serviceLocks[aLock._id] = aLock;
-    this._createdLocks++;
-  },
-
-  unregisterLock: function(aLockID) {
-    let lock_index = this._locks.indexOf(aLockID);
-    if (lock_index != -1) {
-      if (VERBOSE) debug("Unregistering lock " + aLockID);
-      this._locks.splice(lock_index, 1);
-      this._serviceLocks[aLockID].removeListeners();
-      this._serviceLocks[aLockID] = null;
-      delete this._serviceLocks[aLockID];
-      this._unregisteredLocks++;
-    }
-  },
-
-  collectReports: function(aCallback, aData, aAnonymize) {
-    aCallback.callback("",
-                       "settings-service-locks/alive",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this._locks.length,
-                       "The number of service locks that are currently alives.",
-                       aData);
-
-    aCallback.callback("",
-                       "settings-service-locks/created",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this._createdLocks,
-                       "The number of service locks that were created.",
-                       aData);
-
-    aCallback.callback("",
-                       "settings-service-locks/deleted",
-                       Ci.nsIMemoryReporter.KIND_OTHER,
-                       Ci.nsIMemoryReporter.UNITS_COUNT,
-                       this._unregisteredLocks,
-                       "The number of service locks that were deleted.",
-                       aData);
-  },
-
-  classID : SETTINGSSERVICE_CID,
-  QueryInterface : XPCOMUtils.generateQI([Ci.nsISettingsService,
-                                          Ci.nsIObserver,
-                                          Ci.nsIMemoryReporter])
-};
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([SettingsService, SettingsServiceLock]);
deleted file mode 100644
--- a/dom/settings/SettingsService.manifest
+++ /dev/null
@@ -1,5 +0,0 @@
-component {d7a395a0-e292-11e1-834e-1761d57f5f99} SettingsService.js
-contract @mozilla.org/settingsServiceLock;1 {d7a395a0-e292-11e1-834e-1761d57f5f99}
-
-component {f656f0c0-f776-11e1-a21f-0800200c9a66} SettingsService.js
-contract @mozilla.org/settingsService;1 {f656f0c0-f776-11e1-a21f-0800200c9a66}
deleted file mode 100644
--- a/dom/settings/moz.build
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# 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/.
-
-EXTRA_COMPONENTS += [
-    'SettingsManager.manifest'
-]
-
-EXTRA_PP_COMPONENTS += [
-    'SettingsManager.js'
-]
-
-if CONFIG['MOZ_B2G']:
-    EXTRA_COMPONENTS += [
-        'SettingsService.js',
-        'SettingsService.manifest',
-    ]
-
-EXTRA_JS_MODULES += [
-    'SettingsDB.jsm',
-    'SettingsRequestManager.jsm'
-]
-
-MOCHITEST_CHROME_MANIFESTS += ['tests/chrome.ini']
-
-XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
deleted file mode 100644
--- a/dom/settings/tests/chrome.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[DEFAULT]
-skip-if = toolkit == 'android' # Bug 1287455: takes too long to complete on Android
-support-files =
-  file_loadserver.js
-  file_bug1110872.js
-  file_bug1110872.html
-  test_settings_service.js
-  test_settings_service_callback.js
-
-[test_settings_service.xul]
-run-if = buildapp == 'b2g' || buildapp == 'mulet'
-[test_settings_service_callback.xul]
-run-if = buildapp == 'b2g' || buildapp == 'mulet'
-[test_settings_basics.html]
-[test_settings_permissions.html]
-[test_settings_blobs.html]
-[test_settings_data_uris.html]
-[test_settings_events.html]
-[test_settings_navigator_object.html]
-[test_settings_onsettingchange.html]
-[test_settings_bug1110872.html]
-skip-if = !e10s
-[test_settings_observer_killer.html]
-skip-if = !debug
deleted file mode 100644
--- a/dom/settings/tests/file_bug1110872.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-    <head>
-        <title>Test for Bug {1110872} Settings API Reloads</title>
-    </head>
-    <body>
-        <script type="application/javascript;version=1.7">
-
-         var createLock = function (msg) {
-             var lock = navigator.mozSettings.createLock();
-             var req = lock.get("wallpaper.image");
-             // We don't actually care about success or failure here, we just
-             // want to know the queue gets processed at all.
-             req.onsuccess = function () {
-                 parent.postMessage({name:"done" + msg.data.step}, "*");
-             }
-             req.onerror = function () {
-                 parent.postMessage({name:"done" + msg.data.step}, "*");
-             };
-             return req;
-         }
-         window.onload = function() {
-             window.addEventListener("message", function (msg) {
-                 var i;
-                 var reqs = [];
-                 if (msg.data.step == 1) {
-                     for (i = 0; i < 100; ++i) {
-                         reqs.push(createLock(msg));
-                     }
-                 } else {
-                     reqs.push(createLock(msg));
-                 }
-                 // If this is our first time through, reload
-                 // before the SettingsManager has a chance to get a response
-                 // to our query.
-                 if (msg.data.step == 1) {
-                     location.reload();
-                 }
-             });
-         }
-        </script>
-        <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={1110872}">Mozilla Bug {1110872} Inner Window for Reload Test</a>
-        <p id="display"></p>
-        <div id="content" style="display: none">
-        </div>
-    </body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/file_bug1110872.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-
-SimpleTest.waitForExplicitFinish();
-
-var iframe;
-var loadedEvents = 0;
-
-function loadServer() {
-  var url = SimpleTest.getTestFileURL("file_loadserver.js");
-  var script = SpecialPowers.loadChromeScript(url);
-}
-
-function runTest() {
-  iframe = document.createElement('iframe');
-  document.body.appendChild(iframe);
-  iframe.addEventListener('load', mozbrowserLoaded);
-  iframe.src = 'file_bug1110872.html';
-}
-
-function iframeBodyRecv(msg) {
-  switch (loadedEvents) {
-  case 1:
-    // If we get a message back before we've seen 2 loads, that means
-    // something went wrong with the test. Fail immediately.
-    ok(true, 'got response from first test!');
-    break;
-  case 2:
-    // If we get a message back after 2 loads (initial load, reload),
-    // it means the callback for the last lock fired, which means the
-    // SettingsRequestManager queue has to have been cleared
-    // correctly.
-    ok(true, 'further queries returned ok after SettingsManager death');
-    SimpleTest.finish();
-    break;
-  }
-}
-
-function mozbrowserLoaded() {
-  loadedEvents++;
-  iframe.contentWindow.postMessage({name: "start", step: loadedEvents}, '*');
-  window.addEventListener('message', iframeBodyRecv);
-}
-
-window.addEventListener("load", function() {
-  loadServer();
-  runTest();
-});
deleted file mode 100644
--- a/dom/settings/tests/file_loadserver.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var Ci = Components.interfaces;
-var Cc = Components.classes;
-var Cu = Components.utils;
-
-// Stolen from SpecialPowers, since at this point we don't know we're in a test.
-var isMainProcess = function() {
-  try {
-    return Cc["@mozilla.org/xre/app-info;1"].
-        getService(Ci.nsIXULRuntime).
-        processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
-  } catch (e) { }
-  return true;
-};
-
-if (isMainProcess()) {
-  Components.utils.import("resource://gre/modules/SettingsRequestManager.jsm");
-}
deleted file mode 100644
--- a/dom/settings/tests/test_settings_basics.html
+++ /dev/null
@@ -1,816 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id={678695}
--->
-<head>
-  <title>Test for Bug {678695} Settings API</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={678695}">Mozilla Bug {678695}</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript">
-
-"use strict";
-
-var url = SimpleTest.getTestFileURL("file_loadserver.js");
-var script = SpecialPowers.loadChromeScript(url);
-
-function onUnwantedSuccess() {
-  ok(false, "onUnwantedSuccess: shouldn't get here");
-}
-
-function onFailure() {
-  ok(false, "in on Failure!");
-}
-
-const wifi  = {"net3g.apn": "internet.mnc012.mcc345.gprs"};
-const wifi2 = {"net3g.apn": "internet.mnc012.mcc345.test"};
-var wifi3 = {"net3g.apn2": "internet.mnc012.mcc345.test3"};
-var wifiEnabled = {"wifi.enabled": true};
-var wifiDisabled = {"wifi.enabled": false};
-var screenBright = {"screen.brightness": 0.7};
-var screenBright2 = {"screen.brightness": 0.1};
-var wifiNetworks0 = { "wifi.networks[0]": { ssid: "myfreenetwork", mac: "01:23:45:67:89:ab", passwd: "secret"}};
-var wifiNetworks1 = { "wifi.networks[1]": { ssid: "myfreenetwork2", mac: "01:23:45:67:89:ab", passwd: "secret2"}};
-
-var combination = {
-  "wifi.enabled": false,
-  "screen.brightness": 0.7,
-  "wifi.networks[0]": { ssid: "myfreenetwork", mac: "01:23:45:67:89:ab", passwd: "secret" },
-  "test.test": true,
-  "net3g.apn2": "internet.mnc012.mcc345.gprs"
-}
-
-function equals(o1, o2) {
-  var k1 = Object.keys(o1).sort();
-  var k2 = Object.keys(o2).sort();
-  if (k1.length != k2.length) return false;
-  return k1.zip(k2, function(keyPair) {
-    if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){
-      return equals(o1[keyPair[0]], o2[keyPair[1]])
-    } else {
-      return o1[keyPair[0]] == o2[keyPair[1]];
-    }
-  }).all();
-};
-
-function observer1(setting) {
-  is(setting.settingName, "screen.brightness", "Same settingName");
-  is(setting.settingValue, 0.7, "Same settingvalue");
-};
-
-function observer2(setting) {
-  is(setting.settingName, "screen.brightness", "Same settingName");
-  is(setting.settingValue, 0.7, "Same settingvalue");
-};
-
-function observerWithNext(setting) {
-  is(setting.settingName, "screen.brightness", "Same settingName");
-  is(setting.settingValue, 0.7, "Same settingvalue");
-  next();
-};
-
-function onsettingschangeWithNext(event) {
-  is(event.settingName, "screen.brightness", "Same settingName");
-  is(event.settingValue, 0.7, "Same settingvalue");
-  next();
-};
-
-function check(o1, o2) {
-  is(JSON.stringify(o1), JSON.stringify(o2), "same");
-}
-
-var req, req2, req3, req4, req5, req6;
-var index = 0;
-
-var steps = [
-  function () {
-    ok(true, "Deleting database");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-  },
-  function () {
-    ok(true, "Setting wifi");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifi);
-    req.onsuccess = function () {
-      ok(true, "set done");
-    }
-    req.onerror = onFailure;
-
-    var lock2 = navigator.mozSettings.createLock();
-    req2 = lock2.get("net3g.apn");
-    req2.onsuccess = function () {
-      is(Object.keys(req2.result).length, 1, "length 1");
-      check(wifi, req2.result);
-      ok(true, "Get net3g.apn Done");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Change wifi1");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifi2);
-    req.onsuccess = function () {
-      ok(true, "Set Done");
-    };
-    req.onerror = onFailure;
-    ok(true, "Get changed net3g.apn");
-    req2 = lock.get("net3g.apn");
-    req2.onsuccess = function () {
-      is(Object.keys(req2.result).length, 1, "length 1");
-      check(wifi2, req2.result);
-      ok(true, "Get net3g.apn Done");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Set Combination");
-    var lock = navigator.mozSettings.createLock();
-    req3 = lock.set(combination);
-    req3.onsuccess = function () {
-      ok(true, "set done");
-      req4 = lock.get("net3g.apn2");
-      req4.onsuccess = function() {
-        ok(true, "Done");
-        check(combination["net3g.apn2"], req4.result["net3g.apn2"]);
-        next();
-      }
-    }
-    req3.onerror = onFailure;
-  },
-  function() {
-    var lock = navigator.mozSettings.createLock();
-    req4 = lock.get("net3g.apn2");
-    req4.onsuccess = function() {
-      ok(true, "Done");
-      check(combination["net3g.apn2"], req4.result["net3g.apn2"]);
-      next();
-    }
-    req4.onerror = onFailure;
-  },
-  function() {
-    ok(true, "Get unknown key");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("abc.def");
-    req.onsuccess = function() {
-      is(req.result["abc.def"], undefined, "no result");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "adding onsettingchange");
-    navigator.mozSettings.onsettingchange = onsettingschangeWithNext;
-    var lock = navigator.mozSettings.createLock();
-    req2 = lock.get("screen.brightness");
-    req2.onsuccess = function() {
-      ok(true, "end adding onsettingchange");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function() {
-    ok(true, "Test onsettingchange");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set done, observer has to call next");
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "delete onsettingschange");
-    var lock = navigator.mozSettings.createLock();
-    navigator.mozSettings.onsettingchange = null;
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Waiting for all set callbacks");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    req.onsuccess = function() {
-      ok(true, "Done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "adding Observers 1");
-    navigator.mozSettings.addObserver("screen.brightness", observer1);
-    navigator.mozSettings.addObserver("screen.brightness", observer1);
-    navigator.mozSettings.addObserver("screen.brightness", observer2);
-    navigator.mozSettings.addObserver("screen.brightness", observerWithNext);
-    var lock = navigator.mozSettings.createLock();
-    req2 = lock.get("screen.brightness");
-    req2.onsuccess = function() {
-      ok(true, "set observeSetting done!");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function() {
-    ok(true, "test observers");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set done");
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "removing Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set done");
-      navigator.mozSettings.removeObserver("screen.brightness", observer2);
-      navigator.mozSettings.removeObserver("screen.brightness", observer1);
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "test Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set done");
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "removing Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    navigator.mozSettings.removeObserver("screen.brightness", observerWithNext);
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set done");
-      navigator.mozSettings.removeObserver("screen.brightness", observer2);
-      navigator.mozSettings.removeObserver("screen.brightness", observer1);
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "removing Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    req.onsuccess = function () {
-      ok(true, "get done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Nested test");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    req.onsuccess = function () {
-      req3 = lock.set({"screen.brightness": req.result["screen.brightness"] + 1})
-      req3.onsuccess = function () {
-        req4 = lock.get("screen.brightness");
-        req4.onsuccess = function() {
-          is(req4.result["screen.brightness"], 1.7, "same Value");
-        }
-        req4.onerror = onFailure;
-      }
-      req3.onerror = onFailure;
-    };
-    req.onerror = onFailure;
-
-    req2 = lock.get("screen.brightness");
-    req2.onsuccess = function () {
-      is(req2.result["screen.brightness"], 0.7, "same Value");
-    }
-    req2.onerror = onFailure;
-
-    var lock2 = navigator.mozSettings.createLock();
-    req5 = lock2.get("screen.brightness");
-    req5.onsuccess = function () {
-      is(req5.result["screen.brightness"], 1.7, "same Value");
-      next();
-    }
-    req5.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Deleting database");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-  },
-  function () {
-    var lock = navigator.mozSettings.createLock();
-    req2 = lock.set(wifi);
-    req2.onsuccess = function () {
-      ok(true, "set done");
-    }
-    req2.onerror = onFailure;
-
-    ok(true, "Get all settings");
-    var lock2 = navigator.mozSettings.createLock();
-    req3 = lock2.get("*");
-    req3.onsuccess = function () {
-      is(Object.keys(req3.result).length, 1, "length 1");
-      check(req3.result, wifi);
-      ok(true, JSON.stringify(req3.result));
-      ok(true, "Get all settings Done");
-    };
-    req3.onerror = onFailure;
-
-    req4 = lock2.get("net3g.apn");
-    req4.onsuccess = function () {
-      is(Object.keys(req4.result).length, 1, "length 1");
-      check(wifi, req4.result);
-      ok(true, "Get net3g.apn Done");
-      next();
-    };
-    req4.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Change wifi1");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifi2);
-    req.onsuccess = function () {
-      ok(true, "Set Done");
-    };
-    req.onerror = onFailure;
-
-    ok(true, "Get changed net3g.apn");
-    req2 = lock.get("net3g.apn");
-    req2.onsuccess = function () {
-      is(Object.keys(req2.result).length, 1, "length 1");
-      check(wifi2, req2.result);
-      ok(true, "Get net3g.apn Done");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Test locking");
-    var lock = navigator.mozSettings.createLock();
-    var lock2 = navigator.mozSettings.createLock();
-    req = lock.set(wifiEnabled);
-    req.onsuccess = function () {
-      ok(true, "Test Locking Done");
-    };
-    req.onerror = onFailure;
-
-    req2 = lock2.set(wifiDisabled);
-    req2.onsuccess = function () {
-      ok(true, "Set Done");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Test locking result");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("wifi.enabled");
-    req.onsuccess = function() {
-      check(req.result, wifiDisabled);
-      ok(true, "Test1 locking result done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Test locking heavy");
-    for (var i=0; i<30; i++) {
-      // only new locks!
-      var lock = navigator.mozSettings.createLock();
-      var obj = {};
-      obj["wifi.enabled" + i] = true;
-      req = lock.set( obj );
-      req.onsuccess = function () {
-        ok(true, "Set1 Done");
-      };
-      req.onerror = onFailure;
-    };
-    {
-      var lock2 = navigator.mozSettings.createLock();
-      req2 = lock2.get("*");
-      req2.onsuccess = function () {
-        is(Object.keys(req2.result).length, 32, "length 12");
-        ok(true, JSON.stringify(req2.result));
-        ok(true, "Get all settings Done");
-      };
-      req2.onerror = onFailure;
-    }
-    var lock2 = navigator.mozSettings.createLock();
-    var obj = {};
-    obj["wifi.enabled" + 30] = true;
-    req3 = lock2.set( obj );
-    req3.onsuccess = function () {
-      ok(true, "Set12 Done");
-    };
-    req3.onerror = onFailure;
-
-    var lock3 = navigator.mozSettings.createLock();
-    // with one lock
-    for (var i = 0; i < 30; i++) {
-      req4 = lock3.get("wifi.enabled" + i);
-      var testObj = {};
-      testObj["wifi.enabled" + i] = true;
-      req4.onsuccess = function () {
-        check(this.request.result, this.testObj);
-        ok(true, "Get1 Done");
-      }.bind({testObj: testObj, request: req4});
-      req4.onerror = onFailure;
-    }
-
-    ok(true, "start next2!");
-    var lock4 = navigator.mozSettings.createLock();
-    for (var i=0; i<30; i++) {
-      var obj = {};
-      obj["wifi.enabled" + i] = false;
-      req4 = lock4.set( obj );
-      req4.onsuccess = function () {
-        ok(true, "Set2 Done");
-      };
-      req4.onerror = onFailure;
-    }
-    var lock5 = navigator.mozSettings.createLock();
-    for (var i=0; i<30; i++) {
-      req5 = lock5.get("wifi.enabled" + i);
-      var testObj = {};
-      testObj["wifi.enabled" + i] = false;
-      req5.onsuccess = function () {
-        check(this.request.result, this.testObj);
-        ok(true, "Get2 Done");
-      }.bind({testObj: testObj, request: req5});
-      req5.onerror = onFailure;
-    }
-
-    var lock6 = navigator.mozSettings.createLock();
-    req6 = lock6.clear();
-    req6.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req6.onerror = onFailure;
-  },
-  function () {
-    ok(true, "reverse Test locking");
-    var lock2 = navigator.mozSettings.createLock();
-    var lock = navigator.mozSettings.createLock();
-
-    req = lock.set(wifiEnabled);
-    req.onsuccess = function () {
-      ok(true, "Test Locking Done");
-      next();
-    };
-    req.onerror = onFailure;
-
-    req2 = lock2.set(wifiDisabled);
-    req2.onsuccess = function () {
-      ok(true, "Set Done");
-    };
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Test locking result");
-    var lock = navigator.mozSettings.createLock();
-
-    req = lock.get("wifi.enabled");
-    req.onsuccess = function() {
-      check(req.result, wifiEnabled);
-      ok(true, "Test2 locking result done");
-    }
-    req.onerror = onFailure;
-
-    var lock2 = navigator.mozSettings.createLock();
-    req2 = lock2.clear();
-    req2.onsuccess = function () {
-      ok(true, "Deleted the database");
-    };
-    req2.onerror = onFailure;
-
-    var lock3 = navigator.mozSettings.createLock();
-    req3 = lock3.set(wifi);
-    req3.onsuccess = function () {
-      ok(true, "set done");
-      next();
-    }
-    req3.onerror = onFailure;
-
-  },
-  function () {
-    ok(true, "Get all settings");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("*");
-    req.onsuccess = function () {
-      is(Object.keys(req.result).length, 1, "length 1");
-      check(wifi, req.result);
-      ok(true, "Get all settings Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Get net3g.apn");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("net3g.apn");
-    req.onsuccess = function () {
-      is(Object.keys(req.result).length, 1, "length 1");
-      check(wifi, req.result);
-      ok(true, "Get net3g.apn Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Change wifi2");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifi2);
-    req.onsuccess = function () {
-      ok(true, "Set Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Get net3g.apn");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("net3g.apn");
-    req.onsuccess = function () {
-      is(Object.keys(req.result).length, 1, "length 1");
-      check(wifi2, req.result);
-      ok(true, "Get net3g.apn Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Add wifi.enabled");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifiEnabled);
-    req.onsuccess = function () {
-      ok(true, "Set Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Get Wifi Enabled");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("wifi.enabled");
-    req.onsuccess = function () {
-      is(Object.keys(req.result).length, 1, "length 1");
-      check(wifiEnabled, req.result);
-      ok(true, "Get wifi.enabledDone");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Get all");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("*");
-    req.onsuccess = function () {
-      is(Object.keys(req.result).length, 2, "length 2");
-      check(wifiEnabled["wifi.enabled"], req.result["wifi.enabled"]);
-      check(wifi2["net3g.apn"], req.result["net3g.apn"]);
-      ok(true, "Get all Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Add wifiNetworks");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifiNetworks0);
-    req.onsuccess = function () {
-      ok(true, "Set Done");
-    };
-    req.onerror = onFailure;
-
-    req2 = lock.set(wifiNetworks1);
-    req2.onsuccess = function () {
-      ok(true, "Set Done");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Get Wifi Networks");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("wifi.networks[0]");
-    req.onsuccess = function () {
-      is(Object.keys(req.result).length, 1, "length 1");
-      check(wifiNetworks0, req.result);
-      ok(true, "Get wifi.networks[0]");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "Clear DB, multiple locks");
-    var lock4 = navigator.mozSettings.createLock();
-    var lock3 = navigator.mozSettings.createLock();
-    var lock2 = navigator.mozSettings.createLock();
-    var lock = navigator.mozSettings.createLock();
-    var lock6 = navigator.mozSettings.createLock();
-    var lock7 = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Add wifiNetworks");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifiNetworks0);
-    req.onsuccess = function () {
-      ok(true, "Set Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Test set after lock closed");
-    var lockx = navigator.mozSettings.createLock();
-    var cb = function() {
-      var reqx = null;
-      try {
-        reqx = lockx.set(wifiNetworks0);
-        ok(false, "should have thrown");
-      } catch (ex) {
-        ok(reqx == null, "request is still null");
-        ok(true, "Caught Exception");
-        next();
-      }
-    }
-    SimpleTest.executeSoon(cb);
-  },
-  function() {
-    ok(true, "Clear DB");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "Set with multiple arguments");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(combination);
-    req.onsuccess = function () {
-      ok(true, "Set Done");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "request argument from multiple set");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    req.onsuccess = function () {
-      check(req.result["screen.brightness"], 0.7, "get done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "Test closed attribute on a valid lock");
-    var lock = navigator.mozSettings.createLock();
-    is(lock.closed, false, "closed attribute is false on creation");
-    req = lock.get("screen.brightness");
-    req.onsuccess = function () {
-      is(lock.closed, false, "closed attribute is false on success callback");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Test closed attribute on invalid lock");
-    var lockx = navigator.mozSettings.createLock();
-    var cb = function() {
-      var reqx = null;
-      try {
-        reqx = lockx.set(wifiNetworks0);
-        ok(false, "should have thrown");
-      } catch (ex) {
-        is(lockx.closed, true, "closed attribute is true");
-        ok(true, "Caught Exception");
-        next();
-      }
-    }
-    SimpleTest.executeSoon(cb);
-  },
-  function() {
-    ok(true, "Clear DB");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "Set object value");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set({"setting-obj": {foo: {bar: 23}}});
-    req.onsuccess = function() {
-      req2 = lock.get("setting-obj");
-      req2.onsuccess = function(event) {
-        var result = event.target.result["setting-obj"];
-        ok(result, "Got valid result");
-        ok(typeof result == "object", "Result is object");
-        ok("foo" in result && "bar" in result.foo, "Result has properties");
-        ok(result.foo.bar == 23, "Result properties are set");
-        next();
-      };
-    };
-  },
-  function() {
-    ok(true, "Clear DB");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Call success callback when transaction commits");
-    var lock = navigator.mozSettings.createLock();
-    lock.onsettingstransactionsuccess = function () {
-      next();
-    };
-    req = lock.set({"setting-obj": {foo: {bar: 23}}});
-    req.onsuccess = function() {
-      req2 = lock.get("setting-obj");
-      req2.onsuccess = function(event) {
-        var result = event.target.result["setting-obj"];
-        ok(result, "Got valid result");
-        ok(typeof result == "object", "Result is object");
-        ok("foo" in result && "bar" in result.foo, "Result has properties");
-        ok(result.foo.bar == 23, "Result properties are set");
-      };
-    };
-  },
-  function() {
-    ok(true, "Clear DB");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "all done!\n");
-    SimpleTest.finish();
-  }
-];
-
-function next() {
-  ok(true, "Begin!");
-  if (index >= steps.length) {
-    ok(false, "Shouldn't get here!");
-    return;
-  }
-  try {
-    steps[index]();
-  } catch(ex) {
-    ok(false, "Caught exception", ex);
-  }
-  index += 1;
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(next);
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_blobs.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=821630
--->
-<head>
-  <title>Test for Bug 821630 Settings API</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=821630">Mozilla Bug 821630</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript;version=1.7">
-
-"use strict";
-
-var url = SimpleTest.getTestFileURL("file_loadserver.js");
-var script = SpecialPowers.loadChromeScript(url);
-
-function onUnwantedSuccess() {
-  ok(false, "onUnwantedSuccess: shouldn't get here");
-}
-
-function onFailure() {
-  return function(s) {
-    if (s) {
-      ok(false, "in on Failure! - " + s);
-    } else {
-      ok(false, "in on Failure!");
-    }
-  }
-}
-
-let req;
-
-let storedBlob = new Blob(['12345'], {"type": "text/plain"});
-
-function checkBlob(blob) {
-  try {
-    let url = URL.createObjectURL(blob);
-    ok(true, "Valid blob");
-  } catch (e) {
-    ok(false, "Valid blob");
-  }
-}
-
-let steps = [
-  function() {
-    let lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = next;
-    req.onerror = onFailure("Deleting database");
-  },
-  function() {
-    function obs(e) {
-      checkBlob(e.settingValue);
-      navigator.mozSettings.removeObserver("test1", obs);
-      next();
-    }
-    navigator.mozSettings.addObserver("test1", obs);
-    next();
-  },
-  function() {
-    // next is called by the observer above
-    let req = navigator.mozSettings.createLock().set({"test1": storedBlob});
-    req.onerror = onFailure("Saving blob");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().get("test1");
-    req.onsuccess = function(event) {
-      checkBlob(event.target.result["test1"]);
-      next();
-    };
-    req.onerror = onFailure("Getting blob");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().set({"test2": [1, 2, storedBlob, 4]});
-    req.onsuccess = next;
-    req.onerror = onFailure("Saving array");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().get("test2");
-    req.onsuccess = function(event) {
-      let val = event.target.result["test2"];
-      ok(Array.isArray(val), "Result is an array");
-      ok(val[0] == 1 && val[1] == 2 && val[3] == 4, "Primitives are preserved");
-      checkBlob(val[2]);
-      next();
-    };
-    req.onerror = onFailure("Getting array");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().set({"test3": {foo: "bar", baz: {number: 1, arr: [storedBlob]}}});
-    req.onsuccess = next();
-    req.onerror = onFailure("Saving object");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().get("test3");
-    req.onsuccess = function(event) {
-      let val = event.target.result["test3"];
-      ok(typeof(val) == "object", "Result is an object");
-      ok("foo" in val && typeof(val.foo) == "string", "String property preserved");
-      ok("baz" in val && typeof(val.baz) == "object", "Object property preserved");
-      let baz = val.baz;
-      ok("number" in baz && baz.number == 1, "Primite inside object preserved");
-      ok("arr" in baz && Array.isArray(baz.arr), "Array inside object is preserved");
-      checkBlob(baz.arr[0]);
-      next();
-    };
-    req.onerror = onFailure("Getting object");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().clear();
-    req.onsuccess = function() {
-      next();
-    };
-    req.onerror = onFailure("Deleting database");
-  },
-  function () {
-    ok(true, "all done!\n");
-    SimpleTest.finish();
-  }
-];
-
-function next() {
-  try {
-    let step = steps.shift();
-    if (step) {
-      step();
-    }
-  } catch(ex) {
-    ok(false, "Caught exception", ex);
-  }
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(next);
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_bug1110872.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-    <head>
-        <title>Test for Bug {1110872} Settings API</title>
-        <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-        <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-        <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-    </head>
-    <body>
-        <script type="application/javascript;version=1.7" src="file_bug1110872.js">
-        </script>
-        <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={1110872}">Mozilla Bug {1110872}</a>
-        <p id="display"></p>
-        <div id="content" style="display: none">
-        </div>
-    </body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_data_uris.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=806374
--->
-<head>
-  <title>Test for Bug 806374 Settings API</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=821630">Mozilla Bug 821630</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript;version=1.7">
-
-"use strict";
-
-var url = SimpleTest.getTestFileURL("file_loadserver.js");
-var script = SpecialPowers.loadChromeScript(url);
-
-function onUnwantedSuccess() {
-  ok(false, "onUnwantedSuccess: shouldn't get here");
-}
-
-function onFailure() {
-  return function(s) {
-    if (s) {
-      ok(false, "in on Failure! - " + s);
-    } else {
-      ok(false, "in on Failure!");
-    }
-  }
-}
-
-let req;
-
-// A simple data URI that will be converted to a blob.
-let dataURI = "data:text/html;charset=utf-8,%3C!DOCTYPE html>%3Cbody style='background:black;";
-
-function checkBlob(blob) {
-  try {
-    let url = URL.createObjectURL(blob);
-    ok(true, "Valid blob");
-  } catch (e) {
-    ok(false, "Valid blob");
-  }
-}
-
-let steps = [
-  function() {
-    let lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = next;
-    req.onerror = onFailure("Deleting database");
-  },
-  function() {
-    function obs(e) {
-      checkBlob(e.settingValue);
-      navigator.mozSettings.removeObserver("test1", obs);
-      next();
-    }
-    navigator.mozSettings.addObserver("test1", obs);
-    next();
-  },
-  function() {
-    // next is called by the observer above
-    let req = navigator.mozSettings.createLock().set({"test1": dataURI});
-    req.onerror = onFailure("Saving blob");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().get("test1");
-    req.onsuccess = function(event) {
-      checkBlob(event.target.result["test1"]);
-      next();
-    };
-    req.onerror = onFailure("Getting blob");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().set({"test2": [1, 2, dataURI, 4]});
-    req.onsuccess = next;
-    req.onerror = onFailure("Saving array");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().get("test2");
-    req.onsuccess = function(event) {
-      let val = event.target.result["test2"];
-      ok(Array.isArray(val), "Result is an array");
-      ok(val[0] == 1 && val[1] == 2 && val[3] == 4, "Primitives are preserved");
-      checkBlob(val[2]);
-      next();
-    };
-    req.onerror = onFailure("Getting array");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().set({"test3": {foo: "bar", baz: {number: 1, arr: [dataURI]}}});
-    req.onsuccess = next();
-    req.onerror = onFailure("Saving object");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().get("test3");
-    req.onsuccess = function(event) {
-      let val = event.target.result["test3"];
-      ok(typeof(val) == "object", "Result is an object");
-      ok("foo" in val && typeof(val.foo) == "string", "String property preserved");
-      ok("baz" in val && typeof(val.baz) == "object", "Object property preserved");
-      let baz = val.baz;
-      ok("number" in baz && baz.number == 1, "Primite inside object preserved");
-      ok("arr" in baz && Array.isArray(baz.arr), "Array inside object is preserved");
-      checkBlob(baz.arr[0]);
-      next();
-    };
-    req.onerror = onFailure("Getting object");
-  },
-  function() {
-    let req = navigator.mozSettings.createLock().clear();
-    req.onsuccess = function() {
-      next();
-    };
-    req.onerror = onFailure("Deleting database");
-  },
-  function () {
-    ok(true, "all done!\n");
-    SimpleTest.finish();
-  }
-];
-
-function next() {
-  try {
-    let step = steps.shift();
-    if (step) {
-      step();
-    }
-  } catch(ex) {
-    ok(false, "Caught exception", ex);
-  }
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(next);
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_events.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=678695
--->
-<head>
-  <title>Test for Bug 678695</title>
-  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=678695">Mozilla Bug 678695</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 678695 **/
-
-var e = new MozSettingsEvent("settingchanged", {settingName: "a", settingValue: 1});
-ok(e, "Should have settings event!");
-is(e.settingName, "a", "Name should be a.");
-is(e.settingValue, 1, "Value should be 1.");
-
-e = new MozSettingsEvent("settingchanged", {settingName: "test", settingValue: {test: "test"}});
-is(e.settingName, "test", "Name should be 'test'.");
-is(e.settingValue.test, "test", "Name should be 'test'.");
-
-e = new MozSettingsEvent("settingchanged", {settingName: "a", settingValue: true});
-is(e.settingName, "a", "Name should be a.");
-is(e.settingValue, true, "Value should be true.");
-
-var e = new MozSettingsTransactionEvent("settingtransactionsuccess", {});
-ok(e, "Should have settings event!");
-is(e.error, "", "error should be null");
-
-var e = new MozSettingsTransactionEvent("settingtransactionfailure", {error: "Test error."});
-ok(e, "Should have settings event!");
-is(e.error, "Test error.", "error should be 'Test error.'");
-
-
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_navigator_object.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=898512
--->
-<head>
-  <title>Test for Bug 898512 Settings API</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=898512">Mozilla Bug 898512</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe></iframe>
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript;version=1.7">
-
-SimpleTest.waitForExplicitFinish();
-
-function testPref() {
-  SpecialPowers.pushPrefEnv({
-    set: [["dom.mozSettings.enabled", false]]
-  }, function() {
-    is(navigator.mozSettings, undefined, "navigator.mozSettings is undefined");
-    SimpleTest.finish();
-  });
-}
-
-testPref();
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_observer_killer.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1193469
--->
-<head>
-  <title>Test for Bug 1193469 Settings API</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1193469">Mozilla Bug 1193469</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe></iframe>
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript;version=1.7">
-
-var url = SimpleTest.getTestFileURL("file_loadserver.js");
-var script = SpecialPowers.loadChromeScript(url);
-
-SimpleTest.waitForExplicitFinish();
-
-SpecialPowers.pushPrefEnv({
-  set: [["dom.mozSettings.enabled", true]]
-},
-  function () {
-    ok(true, "abusing observers");
-
-    var obs;
-    for (obs = 0; obs < 9; obs++) {
-      navigator.mozSettings.addObserver("fake.setting.key", function(v) {
-        // nothing to do for real ...
-        ok(false, "should not be called");
-      });
-      ok(true, "first: added observer #" + obs);
-    }
-    ok(true, "adding first observers, should not have thrown");
-
-    try {
-      ok(true, "second: adding new observer");
-      navigator.mozSettings.addObserver("fake.setting.key", function(v) {
-        // nothing to do for real ...
-        ok(false, "should not be called");
-      });
-      ok(false, "adding too many observers should have thrown");
-    } catch (ex) {
-      ok(true, "got exception when trying to add too many observers");
-    }
-
-    SimpleTest.finish();
-  });
-
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_onsettingchange.html
+++ /dev/null
@@ -1,306 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=678695
--->
-<head>
-  <title>Test for Bug 678695 Settings API</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=678695">Mozilla Bug 678695</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript">
-
-"use strict";
-
-var url = SimpleTest.getTestFileURL("file_loadserver.js");
-var script = SpecialPowers.loadChromeScript(url);
-
-var screenBright = {"screen.brightness": 0.7};
-
-function onFailure() {
-  ok(false, "in on Failure!");
-}
-
-function observer1(setting) {
-  dump("observer 1 called!\n");
-  is(setting.settingName, "screen.brightness", "Same settingName");
-  is(setting.settingValue, 0.7, "Same settingvalue");
-};
-
-function observer2(setting) {
-  dump("observer 2 called!\n");
-  is(setting.settingName, "screen.brightness", "Same settingName");
-  is(setting.settingValue, 0.7, "Same settingvalue");
-};
-
-var calls = 0;
-function observerOnlyCalledOnce(setting) {
-  is(++calls, 1, "Observer only called once!");
-};
-
-
-function observerWithNext(setting) {
-  dump("observer with next called!\n");
-  is(setting.settingName, "screen.brightness", "Same settingName");
-  is(setting.settingValue, 0.7, "Same settingvalue");
-  next();
-};
-
-function onsettingschangeWithNext(event) {
-  dump("onsettingschangewithnext called!\n");
-  is(event.settingName, "screen.brightness", "Same settingName");
-  is(event.settingValue, 0.7, "Same settingvalue");
-  next();
-};
-
-var cset = {'a':'b','c':[{'d':'e'}]};
-
-function onComplexSettingschangeWithNext(event) {
-  is(event.settingName, "test.key", "Same settingName");
-  is(event.settingValue['a'], "b", "Same settingvalue");
-  var c = event.settingValue['c'];
-  ok(Array.isArray(c), "c is array!");
-  is(c[0]['d'], 'e', "Right settingValue!");
-  next();
-};
-
-var req, req2;
-var index = 0;
-
-var steps = [
-  function () {
-    ok(true, "Deleting database");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    var lock = navigator.mozSettings.createLock();
-    req2 = lock.set(screenBright);
-    req2.onsuccess = function () {
-      ok(true, "set done");
-      navigator.mozSettings.onsettingchange = onsettingschangeWithNext;
-      next();
-    }
-    req2.onerror = onFailure;
-  },
-  function() {
-    ok(true, "testing");
-    var lock = navigator.mozSettings.createLock();
-    req2 = lock.set(screenBright);
-    req2.onsuccess = function() {
-      ok(true, "end adding onsettingchange");
-    };
-    req2.onerror = onFailure;
-  },
-  function() {
-    ok(true, "test observers");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    req.onsuccess = function () {
-      ok(true, "get done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "adding Observers 1");
-    navigator.mozSettings.addObserver("screen.brightness", observer1);
-    navigator.mozSettings.addObserver("screen.brightness", observer1);
-    navigator.mozSettings.addObserver("screen.brightness", observer2);
-    navigator.mozSettings.addObserver("screen.brightness", observerOnlyCalledOnce);
-    var lock = navigator.mozSettings.createLock();
-    req2 = lock.get("screen.brightness");
-    req2.onsuccess = function() {
-      ok(true, "set observeSetting done!");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function() {
-    ok(true, "test observers");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set1 done");
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "test observers");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    navigator.mozSettings.removeObserver("screen.brightness", observerOnlyCalledOnce);
-    req.onsuccess = function () {
-      ok(true, "set1 done");
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "removing Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set2 done");
-      navigator.mozSettings.removeObserver("screen.brightness", observer2);
-      navigator.mozSettings.removeObserver("screen.brightness", observer1);
-      navigator.mozSettings.removeObserver("screen.brightness", observer1);
-    }
-    req.onerror = onFailure;
-  },
-
-  function() {
-    ok(true, "delete onsettingschange");
-    var lock = navigator.mozSettings.createLock();
-    navigator.mozSettings.onsettingchange = null;
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set0 done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Waiting for all set callbacks");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    req.onsuccess = function() {
-      ok(true, "Done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "adding Observers 1");
-    navigator.mozSettings.addObserver("screen.brightness", observer1);
-    navigator.mozSettings.addObserver("screen.brightness", observer1);
-    navigator.mozSettings.addObserver("screen.brightness", observer2);
-    navigator.mozSettings.addObserver("screen.brightness", observerWithNext);
-    var lock = navigator.mozSettings.createLock();
-    req2 = lock.get("screen.brightness");
-    req2.onsuccess = function() {
-      ok(true, "set observeSetting done!");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function() {
-    ok(true, "test observers");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set1 done");
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "removing Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set2 done");
-      navigator.mozSettings.removeObserver("screen.brightness", observer2);
-      navigator.mozSettings.removeObserver("screen.brightness", observer1);
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "test Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set3 done");
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "removing Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    navigator.mozSettings.removeObserver("screen.brightness", observerWithNext);
-    req = lock.set(screenBright);
-    req.onsuccess = function () {
-      ok(true, "set4 done");
-      navigator.mozSettings.removeObserver("screen.brightness", observer2);
-      navigator.mozSettings.removeObserver("screen.brightness", observer1);
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "removing Event Listener");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("screen.brightness");
-    req.onsuccess = function () {
-      ok(true, "get5 done");
-      next();
-    }
-    req.onerror = onFailure;
-  },
-  function() {
-    ok(true, "Clear DB");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Deleting database");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.clear();
-    req.onsuccess = function () {
-      ok(true, "Deleted the database");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    var lock = navigator.mozSettings.createLock();
-    navigator.mozSettings.onsettingchange = onComplexSettingschangeWithNext;
-    req2 = navigator.mozSettings.createLock().set({'test.key': cset});
-    req2.onsuccess = function () {
-      ok(true, "set done");
-    }
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "all done!\n");
-    SimpleTest.finish();
-  }
-];
-
-function next() {
-  ok(true, "Begin!");
-  if (index >= steps.length) {
-    ok(false, "Shouldn't get here!");
-    return;
-  }
-  try {
-    steps[index]();
-  } catch(ex) {
-    ok(false, "Caught exception", ex);
-  }
-  index += 1;
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(next);
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_permissions.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id={678695}
--->
-<head>
-  <title>Test for Bug {678695} Settings API</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={900551}">Mozilla Bug {900551}</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript">
-
-"use strict";
-
-var url = SimpleTest.getTestFileURL("file_loadserver.js");
-var script = SpecialPowers.loadChromeScript(url);
-
-function onUnwantedSuccess() {
-  ok(false, "onUnwantedSuccess: shouldn't get here");
-}
-
-// No more permissions, so failure cannot happen
-function onFailure() {
-  ok(true, "in on Failure!");
-  next();
-}
-
-const wifi  = {"wifi.enabled": false}
-const wallpaper = {"wallpaper.image": "test-image"};
-
-var combination = {
-  "wifi.enabled": false,
-  "wallpaper.image": "test-image"
-}
-
-function equals(o1, o2) {
-  var k1 = Object.keys(o1).sort();
-  var k2 = Object.keys(o2).sort();
-  if (k1.length != k2.length) return false;
-  return k1.zip(k2, function(keyPair) {
-    if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){
-      return equals(o1[keyPair[0]], o2[keyPair[1]])
-    } else {
-      return o1[keyPair[0]] == o2[keyPair[1]];
-    }
-  }).all();
-};
-
-function observer1(setting) {
-  is(setting.settingName, "screen.brightness", "Same settingName");
-  is(setting.settingValue, "0.7", "Same settingvalue");
-};
-
-function onsettingschangeWithNext(event) {
-  is(event.settingName, "screen.brightness", "Same settingName");
-  is(event.settingValue, "0.7", "Same settingvalue");
-  next();
-};
-
-function check(o1, o2) {
-  is(JSON.stringify(o1), JSON.stringify(o2), "same");
-}
-
-var req, req2, req3, req4, req5, req6;
-var index = 0;
-
-var steps = [
-  // Can't delete database here since that requires permissions we don't want
-  // to give the page.
-  function () {
-    ok(true, "Setting wallpaper");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wallpaper);
-    req.onsuccess = function () {
-      ok(true, "set done");
-    }
-    req.onerror = onFailure;
-
-    var lock2 = navigator.mozSettings.createLock();
-    req2 = lock2.get("wallpaper.image");
-    req2.onsuccess = function () {
-      is(Object.keys(req2.result).length, 1, "length 1");
-      check(wallpaper, req2.result);
-      ok(true, "Get wallpaper Done");
-      next();
-    };
-    req2.onerror = onFailure;
-  },
-  function () {
-    ok(true, "Get Wifi");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.get("wifi.enabled");
-    req.onerror = function () {
-      ok(true, "get failed (expected)");
-      next();
-    }
-    req.onsuccess = onFailure;
-  },
-  function () {
-    ok(true, "Set Wifi");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(wifi);
-    req.onerror = function () {
-      ok(true, "set failed (expected)");
-      next();
-    }
-    req.onsuccess = onFailure;
-  },
-  function () {
-    ok(true, "Set combination (1 valid 1 not valid)");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(combination);
-    req.onerror = function () {
-      ok(true, "set failed (expected)");
-      next();
-    }
-    req.onsuccess = onFailure;
-  },
-  function () {
-    ok(true, "All requests on a failed lock should fail");
-    var lock = navigator.mozSettings.createLock();
-    lock.onsettingstransactionfailure = function (evt) {
-      ok(evt.error == "Lock failed a permissions check, all requests now failing.", "transaction failure on permissions error message correct.");
-      ok(true, "transaction failed (expected) ");
-      next();
-    };
-    lock.onsettingstransactionsuccess = onFailure;
-
-    req = lock.set(wifi);
-    req.onerror = function () {
-      ok(true, "set failed (expected)");
-    }
-    req.onsuccess = onFailure;
-    req2 = lock.get("wallpaper.image");
-    req2.onerror = function () {
-      ok(true, "get failed (expected)");
-    }
-    req2.onsuccess = onFailure;
-  },
-  function () {
-    ok(true, "Set combination (1 valid 1 not valid)");
-    var lock = navigator.mozSettings.createLock();
-    req = lock.set(combination);
-    req.onerror = function () {
-      ok(true, "set failed (expected)");
-      next();
-    }
-    req.onsuccess = onFailure;
-  },
-  function () {
-    ok(true, "all done!\n");
-    SimpleTest.finish();
-  }
-];
-
-function next() {
-  ok(true, "Begin!");
-  if (index >= steps.length) {
-    ok(false, "Shouldn't get here!");
-    return;
-  }
-  try {
-    steps[index]();
-  } catch(ex) {
-    ok(false, "Caught exception", ex);
-  }
-  index += 1;
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(next);
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_service.js
+++ /dev/null
@@ -1,138 +0,0 @@
-"use strict";
-
-var Cu = Components.utils;
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-if (SpecialPowers.isMainProcess()) {
-  SpecialPowers.Cu.import("resource://gre/modules/SettingsRequestManager.jsm");
-}
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-SimpleTest.waitForExplicitFinish();
-
-XPCOMUtils.defineLazyServiceGetter(this, "SettingsService",
-                                   "@mozilla.org/settingsService;1",
-                                   "nsISettingsService");
-
-var tests = [
-      /* Callback tests */
-      function() {
-        let callbackCount = 10;
-
-        let callback = {
-          handle: function(name, result) {
-            switch (callbackCount) {
-              case 10:
-              case 9:
-                is(result, true, "result is true");
-                break;
-              case 8:
-              case 7:
-                is(result, false, "result is false");
-                break;
-              case 6:
-              case 5:
-                is(result, 9, "result is 9");
-                break;
-              case 4:
-              case 3:
-                is(result, 9.4, "result is 9.4");
-                break;
-              case 2:
-                is(result, false, "result is false");
-                break;
-              case 1:
-                is(result, null, "result is null");
-                break;
-              default:
-                ok(false, "Unexpected call: " + callbackCount);
-            }
-
-            --callbackCount;
-            if (callbackCount === 0) {
-              next();
-            }
-          },
-
-          handleError: function(name) {
-            ok(false, "error: " + name);
-          }
-        };
-
-        let lock = SettingsService.createLock();
-        let lock1 = SettingsService.createLock();
-
-        lock.set("asdf", true, callback, null);
-        lock1.get("asdf", callback);
-        lock.get("asdf", callback);
-        lock.set("asdf", false, callback, null);
-        lock.get("asdf", callback);
-        lock.set("int", 9, callback, null);
-        lock.get("int", callback);
-        lock.set("doub", 9.4, callback, null);
-        lock.get("doub", callback);
-        lock1.get("asdfxxx", callback);
-      },
-
-      /* Observer tests */
-      function() {
-        const MOZSETTINGS_CHANGED   = "mozsettings-changed";
-        const TEST_OBSERVER_KEY     = "test.observer.key";
-        const TEST_OBSERVER_VALUE   = true;
-        const TEST_OBSERVER_MESSAGE = "test.observer.message";
-
-        var obs = {
-          observe: function (subject, topic, data) {
-
-            if (topic !== MOZSETTINGS_CHANGED) {
-              ok(false, "Event is not mozsettings-changed.");
-              return;
-            }
-            // Data is now stored in subject
-            if ("wrappedJSObject" in subject) {
-              ok(true, "JS object wrapped into subject");
-              subject = subject.wrappedJSObject;
-            }
-            if (subject["key"] != TEST_OBSERVER_KEY) {
-              return;
-            }
-
-            function checkProp(name, type, value) {
-              ok(name in subject, "subject." + name + " is present");
-              is(typeof subject[name], type, "subject." + name + " is " + type);
-              is(subject[name], value, "subject." + name + " is " + value);
-            }
-
-            checkProp("key", "string", TEST_OBSERVER_KEY);
-            checkProp("value", "boolean", TEST_OBSERVER_VALUE);
-            checkProp("isInternalChange", "boolean", true);
-
-            Services.obs.removeObserver(this, MOZSETTINGS_CHANGED);
-            next();
-          }
-        };
-
-        Services.obs.addObserver(obs, MOZSETTINGS_CHANGED, false);
-
-        let lock = SettingsService.createLock();
-        lock.set(TEST_OBSERVER_KEY, TEST_OBSERVER_VALUE, null);
-      }
-];
-
-function next() {
-  let step = tests.shift();
-  if (step) {
-    try {
-      step();
-    } catch(e) {
-      ok(false, "Test threw: " + e);
-    }
-  } else {
-    SimpleTest.finish();
-  }
-}
-
-next();
deleted file mode 100644
--- a/dom/settings/tests/test_settings_service.xul
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
-<?xml-stylesheet type="text/css" href="/tests/SimpleTest/test.css"?>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=678695
--->
-<window title="Mozilla Bug 678695"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-  <script type="application/javascript"
-          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-
-  <!-- test results are displayed in the html:body -->
-  <body xmlns="http://www.w3.org/1999/xhtml">
-  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=678695"
-     target="_blank">Mozilla Bug 678695</a>
-  </body>
-
-  <script type="application/javascript;version=1.7" src="test_settings_service.js" />
-</window>
deleted file mode 100644
--- a/dom/settings/tests/test_settings_service_callback.js
+++ /dev/null
@@ -1,47 +0,0 @@
-"use strict";
-
-var Cu = Components.utils;
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-SimpleTest.waitForExplicitFinish();
-
-XPCOMUtils.defineLazyServiceGetter(this, "SettingsService",
-                                   "@mozilla.org/settingsService;1",
-                                   "nsISettingsService");
-
-var tests = [
-  function () {
-    let callback = {
-      handle: function() {
-        ok(true, "handle called!");
-        next();
-      },
-
-      handleAbort: function(name) {
-        ok(false, "error: " + name);
-        next();
-      }
-    }
-    let lock = SettingsService.createLock(callback);
-    lock.set("xasdf", true, null, null);
-  }
-];
-
-function next() {
-  let step = tests.shift();
-  if (step) {
-    try {
-      step();
-    } catch(e) {
-      ok(false, "Test threw: " + e);
-    }
-  } else {
-    SimpleTest.finish();
-  }
-}
-
-next();
deleted file mode 100644
--- a/dom/settings/tests/test_settings_service_callback.xul
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
-<?xml-stylesheet type="text/css" href="/tests/SimpleTest/test.css"?>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1012214
--->
-<window title="Mozilla Bug 1012214"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-  <script type="application/javascript"
-          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-
-  <!-- test results are displayed in the html:body -->
-  <body xmlns="http://www.w3.org/1999/xhtml">
-  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1012214"
-     target="_blank">Mozilla Bug 1012214</a>
-  </body>
-
-  <script type="application/javascript;version=1.7" src="test_settings_service_callback.js" />
-</window>
deleted file mode 100644
--- a/dom/settings/tests/unit/test_settingsrequestmanager_messages.js
+++ /dev/null
@@ -1,174 +0,0 @@
-"use strict";
-
-var Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
-                                   "@mozilla.org/childprocessmessagemanager;1",
-                                   "nsIMessageSender");
-
-var principal = Services.scriptSecurityManager.getSystemPrincipal();
-var lockID = "{435d2192-4f21-48d4-90b7-285f147a56be}";
-
-// Helper to start the Settings Request Manager
-function startSettingsRequestManager() {
-  Cu.import("resource://gre/modules/SettingsRequestManager.jsm");
-}
-
-function handlerHelper(reply, callback, runNext = true) {
-  let handler = {
-    receiveMessage: function(message) {
-      if (message.name === reply) {
-        cpmm.removeMessageListener(reply, handler);
-        callback(message);
-        if (runNext) {
-          run_next_test();
-        }
-      }
-    }
-  };
-  cpmm.addMessageListener(reply, handler);
-}
-
-// Helper function to add a listener, send message and treat the reply
-function addAndSend(msg, reply, callback, payload, runNext = true) {
-  handlerHelper(reply, callback, runNext);
-  cpmm.sendAsyncMessage(msg, payload, undefined, principal);
-}
-
-function errorHandler(reply, str) {
-  let errHandler = function(message) {
-    ok(true, str);
-  };
-
-  handlerHelper(reply, errHandler);
-}
-
-// We need to trigger a Settings:Run message to make the queue progress
-function send_settingsRun() {
-  let msg = {lockID: lockID, isServiceLock: true};
-  cpmm.sendAsyncMessage("Settings:Run", msg, undefined, principal);
-}
-
-function kill_child() {
-  let msg = {lockID: lockID, isServiceLock: true};
-  cpmm.sendAsyncMessage("child-process-shutdown", msg, undefined, principal);
-}
-
-function run_test() {
-  do_get_profile();
-  startSettingsRequestManager();
-  run_next_test();
-}
-
-add_test(function test_createLock() {
-  let msg = {lockID: lockID, isServiceLock: true};
-  cpmm.sendAsyncMessage("Settings:CreateLock", msg, undefined, principal);
-  cpmm.sendAsyncMessage(
-    "Settings:RegisterForMessages", undefined, undefined, principal);
-  ok(true);
-  run_next_test();
-});
-
-add_test(function test_get_empty() {
-  let requestID = 10;
-  let msgReply = "Settings:Get:OK";
-  let msgHandler = function(message) {
-    equal(requestID, message.data.requestID);
-    equal(lockID, message.data.lockID);
-    ok(Object.keys(message.data.settings).length >= 0);
-  };
-
-  errorHandler("Settings:Get:KO", "Settings GET failed");
-
-  addAndSend("Settings:Get", msgReply, msgHandler, {
-    requestID: requestID,
-    lockID: lockID,
-    name: "language.current"
-  });
-
-  send_settingsRun();
-});
-
-add_test(function test_set_get_nonempty() {
-  let settings = { "language.current": "fr-FR:XPC" };
-  let requestIDSet = 20;
-  let msgReplySet = "Settings:Set:OK";
-  let msgHandlerSet = function(message) {
-    equal(requestIDSet, message.data.requestID);
-    equal(lockID, message.data.lockID);
-  };
-
-  errorHandler("Settings:Set:KO", "Settings SET failed");
-
-  addAndSend("Settings:Set", msgReplySet, msgHandlerSet, {
-    requestID: requestIDSet,
-    lockID: lockID,
-    settings: settings
-  }, false);
-
-  let requestIDGet = 25;
-  let msgReplyGet = "Settings:Get:OK";
-  let msgHandlerGet = function(message) {
-    equal(requestIDGet, message.data.requestID);
-    equal(lockID, message.data.lockID);
-    for(let p in settings) {
-      equal(settings[p], message.data.settings[p]);
-    }
-  };
-
-  addAndSend("Settings:Get", msgReplyGet, msgHandlerGet, {
-    requestID: requestIDGet,
-    lockID: lockID,
-    name: Object.keys(settings)[0]
-  });
-
-  // Set and Get have been push into the queue, let's run
-  send_settingsRun();
-});
-
-// This test exposes bug 1076597 behavior
-add_test(function test_wait_for_finalize() {
-  let settings = { "language.current": "en-US:XPC" };
-  let requestIDSet = 30;
-  let msgReplySet = "Settings:Set:OK";
-  let msgHandlerSet = function(message) {
-    equal(requestIDSet, message.data.requestID);
-    equal(lockID, message.data.lockID);
-  };
-
-  errorHandler("Settings:Set:KO", "Settings SET failed");
-
-  addAndSend("Settings:Set", msgReplySet, msgHandlerSet, {
-    requestID: requestIDSet,
-    lockID: lockID,
-    settings: settings
-  }, false);
-
-  let requestIDGet = 35;
-  let msgReplyGet = "Settings:Get:OK";
-  let msgHandlerGet = function(message) {
-    equal(requestIDGet, message.data.requestID);
-    equal(lockID, message.data.lockID);
-    for(let p in settings) {
-      equal(settings[p], message.data.settings[p]);
-    }
-  };
-
-  errorHandler("Settings:Get:KO", "Settings GET failed");
-
-  addAndSend("Settings:Get", msgReplyGet, msgHandlerGet, {
-    requestID: requestIDGet,
-    lockID: lockID,
-    name: Object.keys(settings)[0]
-  });
-
-  // We simulate a child death, which will force previous requests to be set
-  // into finalize state
-  kill_child();
-
-  // Then when we issue Settings:Run, those finalized should be triggered
-  send_settingsRun();
-});
deleted file mode 100644
--- a/dom/settings/tests/unit/xpcshell.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[DEFAULT]
-head =
-tail =
-
-[test_settingsrequestmanager_messages.js]
-skip-if = (buildapp != 'b2g')
--- a/dom/system/NetworkGeolocationProvider.js
+++ b/dom/system/NetworkGeolocationProvider.js
@@ -7,19 +7,16 @@
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 Components.utils.import("resource://gre/modules/Services.jsm");
 
 const Ci = Components.interfaces;
 const Cc = Components.classes;
 const Cu = Components.utils;
 
 const POSITION_UNAVAILABLE = Ci.nsIDOMGeoPositionError.POSITION_UNAVAILABLE;
-const SETTINGS_DEBUG_ENABLED = "geolocation.debugging.enabled";
-const SETTINGS_CHANGED_TOPIC = "mozsettings-changed";
-const SETTINGS_WIFI_ENABLED = "wifi.enabled";
 
 var gLoggingEnabled = false;
 
 /*
    The gLocationRequestTimeout controls how long we wait on receiving an update
    from the Wifi subsystem.  If this timer fires, we believe the Wifi scan has
    had a problem and we no longer can use Wifi to position the user this time
    around (we will continue to be hopeful that Wifi will recover).
@@ -250,34 +247,16 @@ function WifiGeoPositionProvider() {
 WifiGeoPositionProvider.prototype = {
   classID:          Components.ID("{77DA64D3-7458-4920-9491-86CC9914F904}"),
   QueryInterface:   XPCOMUtils.generateQI([Ci.nsIGeolocationProvider,
                                            Ci.nsIWifiListener,
                                            Ci.nsITimerCallback,
                                            Ci.nsIObserver]),
   listener: null,
 
-  observe: function(aSubject, aTopic, aData) {
-    if (aTopic != SETTINGS_CHANGED_TOPIC) {
-      return;
-    }
-
-    try {
-      if ("wrappedJSObject" in aSubject) {
-        aSubject = aSubject.wrappedJSObject;
-      }
-      if (aSubject.key == SETTINGS_DEBUG_ENABLED) {
-        gLoggingEnabled = aSubject.value;
-      } else if (aSubject.key == SETTINGS_WIFI_ENABLED) {
-        gWifiScanningEnabled = aSubject.value;
-      }
-    } catch (e) {
-    }
-  },
-
   resetTimer: function() {
     if (this.timer) {
       this.timer.cancel();
       this.timer = null;
     }
     // wifi thread triggers WifiGeoPositionProvider to proceed, with no wifi, do manual timeout
     this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
     this.timer.initWithCallback(this,
@@ -286,47 +265,16 @@ WifiGeoPositionProvider.prototype = {
   },
 
   startup:  function() {
     if (this.started)
       return;
 
     this.started = true;
     let self = this;
-    let settingsCallback = {
-      handle: function(name, result) {
-        // Stop the B2G UI setting from overriding the js prefs setting, and turning off logging
-        // If gLoggingEnabled is already on during startup, that means it was set in js prefs.
-        if (name == SETTINGS_DEBUG_ENABLED && !gLoggingEnabled) {
-          gLoggingEnabled = result;
-        } else if (name == SETTINGS_WIFI_ENABLED) {
-          gWifiScanningEnabled = result;
-          if (self.wifiService) {
-            self.wifiService.stopWatching(self);
-          }
-          if (gWifiScanningEnabled) {
-            self.wifiService = Cc["@mozilla.org/wifi/monitor;1"].getService(Ci.nsIWifiMonitor);
-            self.wifiService.startWatching(self);
-          }
-        }
-      },
-
-      handleError: function(message) {
-        gLoggingEnabled = false;
-        LOG("settings callback threw an exception, dropping");
-      }
-    };
-
-    Services.obs.addObserver(this, SETTINGS_CHANGED_TOPIC, false);
-    let settingsService = Cc["@mozilla.org/settingsService;1"];
-    if (settingsService) {
-      let settings = settingsService.getService(Ci.nsISettingsService);
-      settings.createLock().get(SETTINGS_WIFI_ENABLED, settingsCallback);
-      settings.createLock().get(SETTINGS_DEBUG_ENABLED, settingsCallback);
-    }
 
     if (gWifiScanningEnabled && Cc["@mozilla.org/wifi/monitor;1"]) {
       if (this.wifiService) {
         this.wifiService.stopWatching(this);
       }
       this.wifiService = Cc["@mozilla.org/wifi/monitor;1"].getService(Ci.nsIWifiMonitor);
       this.wifiService.startWatching(this);
     }
@@ -354,18 +302,16 @@ WifiGeoPositionProvider.prototype = {
       this.timer = null;
     }
 
     if(this.wifiService) {
       this.wifiService.stopWatching(this);
       this.wifiService = null;
     }
 
-    Services.obs.removeObserver(this, SETTINGS_CHANGED_TOPIC);
-
     this.listener = null;
     this.started = false;
   },
 
   setHighAccuracy: function(enable) {
   },
 
   onChange: function(accessPoints) {
--- a/dom/tests/mochitest/general/test_interfaces.html
+++ b/dom/tests/mochitest/general/test_interfaces.html
@@ -863,18 +863,16 @@ var interfaceNamesInGlobalScope =
     "ServiceWorker",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "ServiceWorkerContainer",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "ServiceWorkerMessageEvent",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "ServiceWorkerRegistration",
 // IMPORTANT: Do not change this list without review from a DOM peer!
-    "SettingsLock",
-// IMPORTANT: Do not change this list without review from a DOM peer!
     "ShadowRoot", // Bogus, but the test harness forces it on.  See bug 1159768.
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "SharedWorker",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "SimpleGestureEvent",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "SimpleTest", xbl: false},
 // IMPORTANT: Do not change this list without review from a DOM peer!
deleted file mode 100644
--- a/dom/webidl/MozSettingsEvent.webidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/.
- */
-
-[Constructor(DOMString type, optional MozSettingsEventInit eventInitDict),
- ChromeOnly]
-interface MozSettingsEvent : Event
-{
-  readonly attribute DOMString? settingName;
-  readonly attribute any settingValue;
-};
-
-dictionary MozSettingsEventInit : EventInit
-{
-  DOMString settingName = "";
-  any settingValue = null;
-};
deleted file mode 100644
--- a/dom/webidl/MozSettingsTransactionEvent.webidl
+++ /dev/null
@@ -1,17 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/.
- */
-
-[Constructor(DOMString type, optional MozSettingsTransactionEventInit eventInitDict),
- ChromeOnly]
-interface MozSettingsTransactionEvent : Event
-{
-  readonly attribute DOMString? error;
-};
-
-dictionary MozSettingsTransactionEventInit : EventInit
-{
-  DOMString error = "";
-};
deleted file mode 100644
--- a/dom/webidl/SettingsManager.webidl
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/.
- */
-
-[JSImplementation="@mozilla.org/settingsLock;1",
- Pref="dom.mozSettings.enabled"]
-interface SettingsLock : EventTarget {
-  // Whether this lock is invalid
-  readonly attribute boolean closed;
-
-  // Contains a JSON object with name/value pairs to be set.
-  DOMRequest set(object settings);
-
-  // Result contains the value of the setting.
-  DOMRequest get(DOMString name);
-
-  DOMRequest clear();
-  attribute EventHandler onsettingstransactionsuccess;
-  attribute EventHandler onsettingstransactionfailure;
-};
-
-dictionary SettingChange {
-  DOMString settingName;
-  DOMString settingValue;
-};
-
-callback SettingChangeCallback = void (SettingChange setting);
-
-[JSImplementation="@mozilla.org/settingsManager;1",
- NavigatorProperty="mozSettings",
- Pref="dom.mozSettings.enabled",
- ChromeOnly]
-interface SettingsManager : EventTarget {
-  SettingsLock createLock();
-
-  void addObserver(DOMString name, SettingChangeCallback callback);
-  void removeObserver(DOMString name, SettingChangeCallback callback);
-
-  attribute EventHandler onsettingchange;
-};
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -393,17 +393,16 @@ WEBIDL_FILES = [
     'ScrollAreaEvent.webidl',
     'ScrollBoxObject.webidl',
     'Selection.webidl',
     'ServiceWorker.webidl',
     'ServiceWorkerContainer.webidl',
     'ServiceWorkerGlobalScope.webidl',
     'ServiceWorkerRegistration.webidl',
     'SettingChangeNotification.webidl',
-    'SettingsManager.webidl',
     'ShadowRoot.webidl',
     'SharedWorker.webidl',
     'SharedWorkerGlobalScope.webidl',
     'SimpleGestureEvent.webidl',
     'SocketCommon.webidl',
     'SourceBuffer.webidl',
     'SourceBufferList.webidl',
     'StereoPannerNode.webidl',
@@ -641,17 +640,16 @@ if CONFIG['MOZ_WEBSPEECH']:
     ]
 
 WEBIDL_FILES += [
     'CloseEvent.webidl',
     'CustomEvent.webidl',
     'DeviceOrientationEvent.webidl',
     'DeviceStorageChangeEvent.webidl',
     'HashChangeEvent.webidl',
-    'MozSettingsEvent.webidl',
     'PageTransitionEvent.webidl',
     'PopStateEvent.webidl',
     'PopupBlockedEvent.webidl',
     'ProgressEvent.webidl',
     'RecordErrorEvent.webidl',
     'StyleRuleChangeEvent.webidl',
     'StyleSheetApplicableStateChangeEvent.webidl',
     'StyleSheetChangeEvent.webidl',
@@ -694,18 +692,16 @@ GENERATED_EVENTS_WEBIDL_FILES = [
     'GamepadButtonEvent.webidl',
     'GamepadEvent.webidl',
     'GroupedHistoryEvent.webidl',
     'HashChangeEvent.webidl',
     'HiddenPluginEvent.webidl',
     'ImageCaptureErrorEvent.webidl',
     'MediaStreamEvent.webidl',
     'MediaStreamTrackEvent.webidl',
-    'MozSettingsEvent.webidl',
-    'MozSettingsTransactionEvent.webidl',
     'OfflineAudioCompletionEvent.webidl',
     'PageTransitionEvent.webidl',
     'PerformanceEntryEvent.webidl',
     'PluginCrashedEvent.webidl',
     'PopStateEvent.webidl',
     'PopupBlockedEvent.webidl',
     'PresentationConnectionAvailableEvent.webidl',
     'PresentationConnectionCloseEvent.webidl',
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -127,17 +127,16 @@
 @BINPATH@/components/dom_json.xpt
 @BINPATH@/components/dom_power.xpt
 #ifdef MOZ_ANDROID_GCM
 @BINPATH@/components/dom_push.xpt
 #endif
 @BINPATH@/components/dom_quota.xpt
 @BINPATH@/components/dom_range.xpt
 @BINPATH@/components/dom_security.xpt
-@BINPATH@/components/dom_settings.xpt
 @BINPATH@/components/dom_sidebar.xpt
 @BINPATH@/components/dom_mobilemessage.xpt
 @BINPATH@/components/dom_storage.xpt
 @BINPATH@/components/dom_stylesheets.xpt
 @BINPATH@/components/dom_system.xpt
 @BINPATH@/components/dom_traversal.xpt
 @BINPATH@/components/dom_tv.xpt
 #ifdef MOZ_WEBSPEECH
@@ -265,18 +264,16 @@
 @BINPATH@/components/PhoneNumberService.manifest
 @BINPATH@/components/NotificationStorage.js
 @BINPATH@/components/NotificationStorage.manifest
 #ifdef MOZ_ANDROID_GCM
 @BINPATH@/components/Push.js
 @BINPATH@/components/Push.manifest
 @BINPATH@/components/PushComponents.js
 #endif
-@BINPATH@/components/SettingsManager.js
-@BINPATH@/components/SettingsManager.manifest
 @BINPATH@/components/BrowserElementParent.manifest
 @BINPATH@/components/BrowserElementParent.js
 @BINPATH@/components/FeedProcessor.manifest
 @BINPATH@/components/FeedProcessor.js
 @BINPATH@/components/WellKnownOpportunisticUtils.js
 @BINPATH@/components/WellKnownOpportunisticUtils.manifest
 @BINPATH@/components/nsDNSServiceDiscovery.manifest
 @BINPATH@/components/nsDNSServiceDiscovery.js
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -4849,19 +4849,16 @@ pref("dom.push.pingInterval", 1800000); 
 // How long before we timeout
 pref("dom.push.requestTimeout", 10000);
 
 // WebPush prefs:
 pref("dom.push.http2.reset_retry_count_after_ms", 60000);
 pref("dom.push.http2.maxRetries", 2);
 pref("dom.push.http2.retryInterval", 5000);
 
-// WebSettings
-pref("dom.mozSettings.enabled", false);
-
 // W3C touch events
 // 0 - disabled, 1 - enabled, 2 - autodetect
 // Autodetection is currently only supported on Windows and GTK3
 #if defined(XP_MACOSX)
 pref("dom.w3c_touch_events.enabled", 0);
 #else
 pref("dom.w3c_touch_events.enabled", 2);
 #endif
@@ -5290,33 +5287,16 @@ pref("dom.presentation.session_transport
 // following pref, when turned on, disables this behavior.  See bug 1188425.
 pref("intl.allow-insecure-text-input", false);
 #endif
 #endif // XP_MACOSX
 
 // Enable meta-viewport support in remote APZ-enabled frames.
 pref("dom.meta-viewport.enabled", false);
 
-// MozSettings debugging prefs for each component
-pref("dom.mozSettings.SettingsDB.debug.enabled", false);
-pref("dom.mozSettings.SettingsManager.debug.enabled", false);
-pref("dom.mozSettings.SettingsRequestManager.debug.enabled", false);
-pref("dom.mozSettings.SettingsService.debug.enabled", false);
-
-// MozSettings verbose mode to track everything
-pref("dom.mozSettings.SettingsDB.verbose.enabled", false);
-pref("dom.mozSettings.SettingsManager.verbose.enabled", false);
-pref("dom.mozSettings.SettingsRequestManager.verbose.enabled", false);
-pref("dom.mozSettings.SettingsService.verbose.enabled", false);
-
-// Controlling whether we want to allow forcing some Settings
-// IndexedDB transactions to be opened as readonly or keep everything as
-// readwrite.
-pref("dom.mozSettings.allowForceReadOnly", false);
-
 // The interval at which to check for slow running addons
 #ifdef NIGHTLY_BUILD
 pref("browser.addon-watch.interval", 15000);
 #else
 pref("browser.addon-watch.interval", -1);
 #endif
 pref("browser.addon-watch.ignore", "[\"mochikit@mozilla.org\",\"special-powers@mozilla.org\",\"fxdevtools-adapters@mozilla.org\",\"fx-devtools\"]");
 
--- a/testing/profiles/prefs_general.js
+++ b/testing/profiles/prefs_general.js
@@ -188,22 +188,16 @@ user_pref("layout.css.shape-outside.enab
 
 // Disable spammy layout warnings because they pollute test logs
 user_pref("layout.spammy_warnings.enabled", false);
 
 // Enable Media Source Extensions for testing
 user_pref("media.mediasource.mp4.enabled", true);
 user_pref("media.mediasource.webm.enabled", true);
 
-// Enable mozContacts
-user_pref("dom.mozContacts.enabled", true);
-
-// Enable mozSettings
-user_pref("dom.mozSettings.enabled", true);
-
 // Make sure the disk cache doesn't get auto disabled
 user_pref("network.http.bypass-cachelock-threshold", 200000);
 
 // Enable Gamepad
 user_pref("dom.gamepad.enabled", true);
 user_pref("dom.gamepad.non_standard_events.enabled", true);
 
 // Always use network provider for geolocation tests
--- a/tools/lint/eslint/modules.json
+++ b/tools/lint/eslint/modules.json
@@ -190,17 +190,16 @@
   "resource.js": ["AsyncResource", "Resource"],
   "responsivedesign.jsm": ["ResponsiveUIManager"],
   "rest.js": ["RESTRequest", "RESTResponse", "TokenAuthenticatedRESTRequest", "SyncStorageRequest"],
   "rotaryengine.js": ["RotaryEngine", "RotaryRecord", "RotaryStore", "RotaryTracker"],
   "RTCStatsReport.jsm": ["convertToRTCStatsReport"],
   "scratchpad-manager.jsm": ["ScratchpadManager"],
   "server.js": ["MarionetteServer"],
   "service.js": ["Service"],
-  "SettingsDB.jsm": ["SettingsDB", "SETTINGSDB_NAME", "SETTINGSSTORE_NAME"],
   "SharedPromptUtils.jsm": ["PromptUtils", "EnableDelayHelper"],
   "ShutdownLeaksCollector.jsm": ["ContentCollector"],
   "SignInToWebsite.jsm": ["SignInToWebsiteController"],
   "Social.jsm": ["Social", "OpenGraphBuilder", "DynamicResizeWatcher", "sizeSocialPanelToContent"],
   "SpecialPowersObserver.jsm": ["SpecialPowersObserver", "SpecialPowersObserverFactory"],
   "stack.js": ["findCallerFrame"],
   "StateMachineHelper.jsm": ["State", "CommandType"],
   "status.js": ["Status"],
@@ -225,17 +224,17 @@
   "ToolboxProcess.jsm": ["BrowserToolboxProcess"],
   "tps.jsm": ["ACTIONS", "TPS"],
   "Translation.jsm": ["Translation", "TranslationTelemetry"],
   "Traversal.jsm": ["TraversalRules", "TraversalHelper"],
   "UpdateTelemetry.jsm": ["AUSTLMY"],
   "userapi.js": ["UserAPI10Client"],
   "util.js": ["getChromeWindow", "XPCOMUtils", "Services", "Utils", "Async", "Svc", "Str"],
   "utils.js": ["applicationName", "assert", "Copy", "getBrowserObject", "getChromeWindow", "getWindows", "getWindowByTitle", "getWindowByType", "getWindowId", "getMethodInWindows", "getPreference", "saveDataURL", "setPreference", "sleep", "startTimer", "stopTimer", "takeScreenshot", "unwrapNode", "waitFor", "btoa", "encryptPayload", "isConfiguredWithLegacyIdentity", "ensureLegacyIdentityManager", "setBasicCredentials", "makeIdentityConfig", "makeFxAccountsInternalMock", "configureFxAccountIdentity", "configureIdentity", "SyncTestingInfrastructure", "waitForZeroTimer", "Promise", "add_identity_test", "MockFxaStorageManager", "AccountState", "sumHistogram", "CommonUtils", "CryptoUtils", "TestingUtils"],
-  "Utils.jsm": ["Utils", "Logger", "PivotContext", "PrefCache", "SettingCache"],
+  "Utils.jsm": ["Utils", "Logger", "PivotContext", "PrefCache"],
   "VariablesView.jsm": ["VariablesView", "escapeHTML"],
   "VariablesViewController.jsm": ["VariablesViewController", "StackFrameUtils"],
   "version.jsm": ["VERSION"],
   "vtt.jsm": ["WebVTT"],
   "WebChannel.jsm": ["WebChannel", "WebChannelBroker"],
   "WindowDraggingUtils.jsm": ["WindowDraggingElement"],
   "windows.js": ["init", "map"],
   "windows.jsm": ["BrowserWindows"],