/* -*- indent-tabs-mode: nil; js-indent-level: 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/. */ "use strict"; const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); const NS_PREFBRANCH_PREFCHANGE_TOPIC_ID = "nsPref:changed"; const kPrefRilDebuggingEnabled = "ril.debugging.enabled"; var DEBUG; function debug(s) { dump("USSDReceivedWrapper: " + s + "\n"); } XPCOMUtils.defineLazyGetter(this, "RIL", function () { let obj = {}; Cu.import("resource://gre/modules/ril_consts.js", obj); return obj; }); /** * This implements nsISystemMessagesWrapper.wrapMessage(), which provides a * plugable way to wrap a "ussd-received" type system message. * * Please see SystemMessageManager.js to know how it customizes the wrapper. */ function USSDReceivedWrapper() { this._updateDebugFlag(); Services.prefs.addObserver(kPrefRilDebuggingEnabled, this, false); if (DEBUG) debug("USSDReceivedWrapper()"); } USSDReceivedWrapper.prototype = { _updateDebugFlag: function() { try { DEBUG = RIL.DEBUG_RIL || Services.prefs.getBoolPref(kPrefRilDebuggingEnabled); } catch (e) {} }, /** * nsIObserver interface. */ observe: function(aSubject, aTopic, aData) { switch (aTopic) { case NS_PREFBRANCH_PREFCHANGE_TOPIC_ID: if (aData === kPrefRilDebuggingEnabled) { this._updateDebugFlag(); } break; } }, // nsISystemMessagesWrapper implementation. wrapMessage: function(aMessage, aWindow) { if (DEBUG) debug("wrapMessage: " + JSON.stringify(aMessage)); let session = aMessage.sessionEnded ? null : new aWindow.USSDSession(aMessage.serviceId); let event = new aWindow.USSDReceivedEvent("ussdreceived", { serviceId: aMessage.serviceId, message: aMessage.message, session: session }); return event; }, classDescription: "USSDReceivedWrapper", classID: Components.ID("{d03684ed-ede4-4210-8206-f4f32772d9f5}"), contractID: "@mozilla.org/dom/system-messages/wrapper/ussd-received;1", QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISystemMessagesWrapper]) }; this.NSGetFactory = XPCOMUtils.generateNSGetFactory([USSDReceivedWrapper]);