зеркало из https://github.com/mozilla/gecko-dev.git
57 строки
1.6 KiB
JavaScript
57 строки
1.6 KiB
JavaScript
|
/* 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"
|
||
|
|
||
|
function debug(s) {
|
||
|
// dump("-*- SettingsChangeNotifier: " + s + "\n");
|
||
|
}
|
||
|
|
||
|
const Cu = Components.utils;
|
||
|
const Cc = Components.classes;
|
||
|
const Ci = Components.interfaces;
|
||
|
|
||
|
let EXPORTED_SYMBOLS = ["SettingsChangeNotifier"];
|
||
|
|
||
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||
|
Cu.import("resource://gre/modules/Services.jsm");
|
||
|
|
||
|
XPCOMUtils.defineLazyGetter(this, "ppmm", function() {
|
||
|
return Cc["@mozilla.org/parentprocessmessagemanager;1"].getService(Ci.nsIFrameMessageManager);
|
||
|
});
|
||
|
|
||
|
|
||
|
let SettingsChangeNotifier = {
|
||
|
init: function() {
|
||
|
debug("init");
|
||
|
ppmm.addMessageListener("Settings:Changed", this);
|
||
|
Services.obs.addObserver(this, "xpcom-shutdown", false);
|
||
|
},
|
||
|
|
||
|
observe: function(aSubject, aTopic, aData) {
|
||
|
debug("observe");
|
||
|
ppmm.removeMessageListener("Settings:Changed", this);
|
||
|
Services.obs.removeObserver(this, "xpcom-shutdown");
|
||
|
ppmm = null;
|
||
|
},
|
||
|
|
||
|
receiveMessage: function(aMessage) {
|
||
|
debug("receiveMessage");
|
||
|
let msg = aMessage.json;
|
||
|
switch (aMessage.name) {
|
||
|
case "Settings:Changed":
|
||
|
ppmm.sendAsyncMessage("Settings:Change:Return:OK", { key: msg.key, value: msg.value });
|
||
|
Services.obs.notifyObservers(this, "mozsettings-changed", JSON.stringify({
|
||
|
key: msg.key,
|
||
|
value: msg.value
|
||
|
}));
|
||
|
break;
|
||
|
default:
|
||
|
debug("Wrong message: " + aMessage.name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SettingsChangeNotifier.init();
|