From 8ff8099d18034bbde88070aa64b0b10d98753647 Mon Sep 17 00:00:00 2001 From: Vicamo Yang Date: Wed, 6 Mar 2013 17:53:31 +0800 Subject: [PATCH] Bug 834160 - Part 7/7: Fix RILContentHelper. r=htsai,allstars.chh --- dom/system/gonk/RILContentHelper.js | 236 +++++++++++++------------ dom/system/gonk/RadioInterfaceLayer.js | 115 ++++++------ 2 files changed, 185 insertions(+), 166 deletions(-) diff --git a/dom/system/gonk/RILContentHelper.js b/dom/system/gonk/RILContentHelper.js index 4aa73832c6f1..ddc567bf08b1 100644 --- a/dom/system/gonk/RILContentHelper.js +++ b/dom/system/gonk/RILContentHelper.js @@ -84,17 +84,6 @@ const RIL_IPC_MSG_NAMES = [ "RIL:IccExchangeAPDU" ]; -const kVoiceChangedTopic = "mobile-connection-voice-changed"; -const kDataChangedTopic = "mobile-connection-data-changed"; -const kCardStateChangedTopic = "mobile-connection-cardstate-changed"; -const kIccInfoChangedTopic = "mobile-connection-iccinfo-changed"; -const kUssdReceivedTopic = "mobile-connection-ussd-received"; -const kStkCommandTopic = "icc-manager-stk-command"; -const kStkSessionEndTopic = "icc-manager-stk-session-end"; -const kDataErrorTopic = "mobile-connection-data-error"; -const kIccCardLockErrorTopic = "mobile-connection-icccardlock-error"; -const kCfStateChangedTopic = "mobile-connection-cfstate-change"; - XPCOMUtils.defineLazyServiceGetter(this, "cpmm", "@mozilla.org/childprocessmessagemanager;1", "nsISyncMessageSender"); @@ -335,13 +324,19 @@ RILContentHelper.prototype = { __proto__: DOMRequestIpcHelper.prototype, QueryInterface: XPCOMUtils.generateQI([Ci.nsIMobileConnectionProvider, - Ci.nsIRILContentHelper, + Ci.nsICellBroadcastProvider, + Ci.nsIVoicemailProvider, + Ci.nsITelephonyProvider, + Ci.nsIIccProvider, Ci.nsIObserver]), classID: RILCONTENTHELPER_CID, classInfo: XPCOMUtils.generateCI({classID: RILCONTENTHELPER_CID, classDescription: "RILContentHelper", interfaces: [Ci.nsIMobileConnectionProvider, - Ci.nsIRILContentHelper]}), + Ci.nsICellBroadcastProvider, + Ci.nsIVoicemailProvider, + Ci.nsITelephonyProvider, + Ci.nsIIccProvider]}), // An utility function to copy objects. updateInfo: function updateInfo(srcInfo, destInfo) { @@ -710,8 +705,11 @@ RILContentHelper.prototype = { return request; }, - _telephonyCallbacks: null, - _voicemailCallbacks: null, + _mobileConnectionListeners: null, + _telephonyListeners: null, + _cellBroadcastListeners: null, + _voicemailListeners: null, + _iccListeners: null, _enumerateTelephonyCallbacks: null, voicemailStatus: null, @@ -736,85 +734,91 @@ RILContentHelper.prototype = { return this.getVoicemailInfo().displayName; }, - registerCallback: function registerCallback(callbackType, callback) { - let callbacks = this[callbackType]; - if (!callbacks) { - callbacks = this[callbackType] = []; + registerListener: function registerListener(listenerType, listener) { + let listeners = this[listenerType]; + if (!listeners) { + listeners = this[listenerType] = []; } - if (callbacks.indexOf(callback) != -1) { - throw new Error("Already registered this callback!"); + if (listeners.indexOf(listener) != -1) { + throw new Error("Already registered this listener!"); } - callbacks.push(callback); - if (DEBUG) debug("Registered " + callbackType + " callback: " + callback); + listeners.push(listener); + if (DEBUG) debug("Registered " + listenerType + " listener: " + listener); }, - unregisterCallback: function unregisterCallback(callbackType, callback) { - let callbacks = this[callbackType]; - if (!callbacks) { + unregisterListener: function unregisterListener(listenerType, listener) { + let listeners = this[listenerType]; + if (!listeners) { return; } - let index = callbacks.indexOf(callback); + let index = listeners.indexOf(listener); if (index != -1) { - callbacks.splice(index, 1); - if (DEBUG) debug("Unregistered telephony callback: " + callback); + listeners.splice(index, 1); + if (DEBUG) debug("Unregistered listener: " + listener); } }, - registerTelephonyCallback: function registerTelephonyCallback(callback) { - this.registerCallback("_telephonyCallbacks", callback); - }, - - unregisterTelephonyCallback: function unregisteTelephonyCallback(callback) { - this.unregisterCallback("_telephonyCallbacks", callback); - - // We also need to make sure the callback is removed from - // _enumerateTelephonyCallbacks. - let index = this._enumerateTelephonyCallbacks.indexOf(callback); - if (index != -1) { - this._enumerateTelephonyCallbacks.splice(index, 1); - if (DEBUG) debug("Unregistered enumerateTelephony callback: " + callback); - } - }, - - registerVoicemailCallback: function registerVoicemailCallback(callback) { - this.registerCallback("_voicemailCallbacks", callback); - }, - - unregisterVoicemailCallback: function unregisteVoicemailCallback(callback) { - this.unregisterCallback("_voicemailCallbacks", callback); - }, - - registerCellBroadcastCallback: function registerCellBroadcastCallback(callback) { - this.registerCallback("_cellBroadcastCallbacks", callback); - }, - - unregisterCellBroadcastCallback: function unregisterCellBroadcastCallback(callback) { - this.unregisterCallback("_cellBroadcastCallbacks", callback); - }, - - registerTelephonyMsg: function registerTelephonyMsg() { - debug("Registering for telephony-related messages"); - cpmm.sendAsyncMessage("RIL:RegisterTelephonyMsg"); - }, - - registerMobileConnectionMsg: function registerMobileConnectionMsg() { - debug("Registering for mobile connection-related messages"); + registerMobileConnectionMsg: function registerMobileConnectionMsg(listener) { + debug("Registering for mobile connection related messages"); + this.registerListener("_mobileConnectionListeners", listener); cpmm.sendAsyncMessage("RIL:RegisterMobileConnectionMsg"); }, - registerVoicemailMsg: function registerVoicemailMsg() { + unregisterMobileConnectionMsg: function unregisteMobileConnectionMsg(listener) { + this.unregisterListener("_mobileConnectionListeners", listener); + }, + + registerTelephonyMsg: function registerTelephonyMsg(listener) { + debug("Registering for telephony-related messages"); + this.registerListener("_telephonyListeners", listener); + cpmm.sendAsyncMessage("RIL:RegisterTelephonyMsg"); + }, + + unregisterTelephonyMsg: function unregisteTelephonyMsg(listener) { + this.unregisterListener("_telephonyListeners", listener); + + // We also need to make sure the listener is removed from + // _enumerateTelephonyCallbacks. + let index = this._enumerateTelephonyCallbacks.indexOf(listener); + if (index != -1) { + this._enumerateTelephonyCallbacks.splice(index, 1); + if (DEBUG) debug("Unregistered enumerateTelephony callback: " + listener); + } + }, + + registerVoicemailMsg: function registerVoicemailMsg(listener) { debug("Registering for voicemail-related messages"); + this.registerListener("_voicemailListeners", listener); cpmm.sendAsyncMessage("RIL:RegisterVoicemailMsg"); }, - registerCellBroadcastMsg: function registerCellBroadcastMsg() { + unregisterVoicemailMsg: function unregisteVoicemailMsg(listener) { + this.unregisterListener("_voicemailListeners", listener); + }, + + registerCellBroadcastMsg: function registerCellBroadcastMsg(listener) { debug("Registering for Cell Broadcast related messages"); + this.registerListener("_cellBroadcastListeners", listener); cpmm.sendAsyncMessage("RIL:RegisterCellBroadcastMsg"); }, + unregisterCellBroadcastMsg: function unregisterCellBroadcastMsg(listener) { + this.unregisterListener("_cellBroadcastListeners", listener); + }, + + registerIccMsg: function registerIccMsg(listener) { + debug("Registering for ICC related messages"); + this.registerListener("_iccListeners", listener); + cpmm.sendAsyncMessage("RIL:RegisterIccMsg"); + }, + + unregisterIccMsg: function unregisterIccMsg(listener) { + this.unregisterListener("_iccListeners", listener); + }, + enumerateCalls: function enumerateCalls(callback) { debug("Requesting enumeration of calls for callback: " + callback); // We need 'requestId' to meet the 'RILContentHelper <--> RadioInterfaceLayer' @@ -951,20 +955,27 @@ RILContentHelper.prototype = { case "RIL:CardStateChanged": if (this.rilContext.cardState != msg.json.cardState) { this.rilContext.cardState = msg.json.cardState; - Services.obs.notifyObservers(null, kCardStateChangedTopic, null); + this._deliverEvent("_mobileConnectionListeners", + "notifyCardStateChanged", + null); } break; case "RIL:IccInfoChanged": this.updateInfo(msg.json, this.rilContext.iccInfo); - Services.obs.notifyObservers(null, kIccInfoChangedTopic, null); + this._deliverEvent("_mobileConnectionListeners", + "notifyIccInfoChanged", null); break; case "RIL:VoiceInfoChanged": this.updateConnectionInfo(msg.json, this.rilContext.voiceConnectionInfo); - Services.obs.notifyObservers(null, kVoiceChangedTopic, null); + this._deliverEvent("_mobileConnectionListeners", + "notifyVoiceChanged", + null); break; case "RIL:DataInfoChanged": this.updateConnectionInfo(msg.json, this.rilContext.dataConnectionInfo); - Services.obs.notifyObservers(null, kDataChangedTopic, null); + this._deliverEvent("_mobileConnectionListeners", + "notifyDataChanged", + null); break; case "RIL:EnumerateCalls": this.handleEnumerateCalls(msg.json.calls); @@ -984,16 +995,15 @@ RILContentHelper.prototype = { RIL.GECKO_NETWORK_SELECTION_AUTOMATIC); break; case "RIL:CallStateChanged": - this._deliverCallback("_telephonyCallbacks", - "callStateChanged", - [msg.json.callIndex, msg.json.state, - msg.json.number, msg.json.isActive]); + this._deliverEvent("_telephonyListeners", + "callStateChanged", + [msg.json.callIndex, msg.json.state, + msg.json.number, msg.json.isActive]); break; case "RIL:CallError": - this._deliverCallback("_telephonyCallbacks", - "notifyError", - [msg.json.callIndex, - msg.json.error]); + this._deliverEvent("_telephonyListeners", + "notifyError", + [msg.json.callIndex, msg.json.error]); break; case "RIL:VoicemailNotification": this.handleVoicemailNotification(msg.json); @@ -1008,10 +1018,9 @@ RILContentHelper.prototype = { } else { if (msg.json.rilMessageType == "iccSetCardLock" || msg.json.rilMessageType == "iccUnlockCardLock") { - let result = JSON.stringify({lockType: msg.json.lockType, - retryCount: msg.json.retryCount}); - Services.obs.notifyObservers(null, kIccCardLockErrorTopic, - result); + this._deliverEvent("_mobileConnectionListeners", + "notifyIccCardLockError", + [msg.json.lockType, msg.json.retryCount]); } this.fireRequestError(msg.json.requestId, msg.json.errorMsg); } @@ -1019,7 +1028,9 @@ RILContentHelper.prototype = { case "RIL:USSDReceived": let res = JSON.stringify({message: msg.json.message, sessionEnded: msg.json.sessionEnded}); - Services.obs.notifyObservers(null, kUssdReceivedTopic, res); + this._deliverEvent("_mobileConnectionListeners", + "notifyUssdReceived", + [msg.json.message, msg.json.sessionEnded]); break; case "RIL:SendMMI:Return:OK": case "RIL:CancelMMI:Return:OK": @@ -1033,11 +1044,11 @@ RILContentHelper.prototype = { } break; case "RIL:StkCommand": - let jsonString = JSON.stringify(msg.json); - Services.obs.notifyObservers(null, kStkCommandTopic, jsonString); + this._deliverEvent("_iccListeners", "notifyStkCommand", + [JSON.stringify(msg.json)]); break; case "RIL:StkSessionEnd": - Services.obs.notifyObservers(null, kStkSessionEndTopic, null); + this._deliverEvent("_iccListeners", "notifyStkSessionEnd", null); break; case "RIL:IccOpenChannel": this.handleIccOpenChannel(msg.json); @@ -1050,7 +1061,8 @@ RILContentHelper.prototype = { break; case "RIL:DataError": this.updateConnectionInfo(msg.json, this.rilContext.dataConnectionInfo); - Services.obs.notifyObservers(null, kDataErrorTopic, msg.json.error); + this._deliverEvent("_mobileConnectionListeners", "notifyDataError", + [msg.json.error]); break; case "RIL:GetCallForwardingOption": this.handleGetCallForwardingOption(msg.json); @@ -1059,19 +1071,17 @@ RILContentHelper.prototype = { this.handleSetCallForwardingOption(msg.json); break; case "RIL:CfStateChanged": - let result = JSON.stringify({success: msg.json.success, - action: msg.json.action, - reason: msg.json.reason, - number: msg.json.number, - timeSeconds: msg.json.timeSeconds, - serviceClass: msg.json.serviceClass}); - Services.obs.notifyObservers(null, kCfStateChangedTopic, result); + this._deliverEvent("_mobileConnectionListeners", + "notifyCFStateChange", + [msg.json.success, msg.json.action, + msg.json.reason, msg.json.number, + msg.json.timeSeconds, msg.json.serviceClass]); break; case "RIL:CellBroadcastReceived": let message = new CellBroadcastMessage(msg.json); - this._deliverCallback("_cellBroadcastCallbacks", - "notifyMessageReceived", - [message]); + this._deliverEvent("_cellBroadcastListeners", + "notifyMessageReceived", + [message]); break; } }, @@ -1187,9 +1197,9 @@ RILContentHelper.prototype = { } if (changed) { - this._deliverCallback("_voicemailCallbacks", - "voicemailNotification", - [this.voicemailStatus]); + this._deliverEvent("_voicemailListeners", + "voicemailNotification", + [this.voicemailStatus]); } }, @@ -1253,25 +1263,25 @@ RILContentHelper.prototype = { return gUUIDGenerator.generateUUID().toString(); }, - _deliverCallback: function _deliverCallback(callbackType, name, args) { - let thisCallbacks = this[callbackType]; - if (!thisCallbacks) { + _deliverEvent: function _deliverEvent(listenerType, name, args) { + let thisListeners = this[listenerType]; + if (!thisListeners) { return; } - let callbacks = thisCallbacks.slice(); - for each (let callback in callbacks) { - if (thisCallbacks.indexOf(callback) == -1) { + let listeners = thisListeners.slice(); + for each (let listener in listeners) { + if (thisListeners.indexOf(listener) == -1) { continue; } - let handler = callback[name]; + let handler = listener[name]; if (typeof handler != "function") { throw new Error("No handler for " + name); } try { - handler.apply(callback, args); + handler.apply(listener, args); } catch (e) { - debug("callback handler for " + name + " threw an exception: " + e); + debug("listener for " + name + " threw an exception: " + e); } } }, diff --git a/dom/system/gonk/RadioInterfaceLayer.js b/dom/system/gonk/RadioInterfaceLayer.js index 11603d27c0db..caa527032a64 100644 --- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -100,6 +100,7 @@ const RIL_IPC_MOBILECONNECTION_MSG_NAMES = [ "RIL:IccExchangeAPDU", "RIL:IccCloseChannel", "RIL:RegisterMobileConnectionMsg", + "RIL:RegisterIccMsg", "RIL:SetCallForwardingOption", "RIL:GetCallForwardingOption" ]; @@ -314,9 +315,10 @@ function RadioInterfaceLayer() { this._messageManagerByRequest = {}; - // Manage message targets in terms of permission. Only the authorized and + // Manage message targets in terms of topic. Only the authorized and // registered contents can receive related messages. - this._messageManagerByPermission = {}; + this._messageManagerByTopic = {}; + this._topicList = []; ppmm.addMessageListener("child-process-shutdown", this); for (let msgname of RIL_IPC_TELEPHONY_MSG_NAMES) { @@ -511,6 +513,9 @@ RadioInterfaceLayer.prototype = { case "RIL:RegisterMobileConnectionMsg": this.registerMessageTarget("mobileconnection", msg.target); break; + case "RIL:RegisterIccMsg": + this.registerMessageTarget("icc", msg.target); + break; case "RIL:RegisterVoicemailMsg": this.registerMessageTarget("voicemail", msg.target); break; @@ -610,7 +615,7 @@ RadioInterfaceLayer.prototype = { break; case "cardstatechange": this.rilContext.cardState = message.cardState; - this._sendTargetMessage("mobileconnection", "RIL:CardStateChanged", message); + this._sendMobileConnectionMessage("RIL:CardStateChanged", message); break; case "setCallWaiting": this.handleCallWaitingStatusChange(message); @@ -635,8 +640,7 @@ RadioInterfaceLayer.prototype = { return; case "cellbroadcast-received": message.timestamp = Date.now(); - this._sendTargetMessage("cellbroadcast", "RIL:CellBroadcastReceived", - message); + this._sendCellBroadcastMessage("RIL:CellBroadcastReceived", message); break; case "datacallstatechange": this.handleDataCallState(message); @@ -700,7 +704,7 @@ RadioInterfaceLayer.prototype = { this.handleStkProactiveCommand(message); break; case "stksessionend": - this._sendTargetMessage("mobileconnection", "RIL:StkSessionEnd", null); + this._sendIccMessage("RIL:StkSessionEnd", null); break; case "setPreferredNetworkType": this.handleSetPreferredNetworkType(message); @@ -742,18 +746,15 @@ RadioInterfaceLayer.prototype = { target.sendAsyncMessage(requestType, options); }, - _messageManagerByPermission: null, - _permissionList: null, - registerMessageTarget: function registerMessageTarget(permission, target) { - let targets = this._messageManagerByPermission[permission]; - if (!this._permissionList) { - this._permissionList = []; - } + _messageManagerByTopic: null, + _topicList: null, + registerMessageTarget: function registerMessageTarget(topic, target) { + let targets = this._messageManagerByTopic[topic]; if (!targets) { - targets = this._messageManagerByPermission[permission] = []; - let list = this._permissionList; - if (list.indexOf(permission) == -1) { - list.push(permission); + targets = this._messageManagerByTopic[topic] = []; + let list = this._topicList; + if (list.indexOf(topic) == -1) { + list.push(topic); } } @@ -763,20 +764,20 @@ RadioInterfaceLayer.prototype = { } targets.push(target); - debug("Registered " + permission + " target: " + target); + debug("Registered " + topic + " target: " + target); }, - unregisterMessageTarget: function unregisterMessageTarget(permission, target) { - if (permission == null) { - // Unregister the target for every permission when no permission is specified. - for (let type of this._permissionList) { + unregisterMessageTarget: function unregisterMessageTarget(topic, target) { + if (topic == null) { + // Unregister the target for every topic when no topic is specified. + for (let type of this._topicList) { this.unregisterMessageTarget(type, target); } return; } - // Unregister the target for a specified permission. - let targets = this._messageManagerByPermission[permission]; + // Unregister the target for a specified topic. + let targets = this._messageManagerByTopic[topic]; if (!targets) { return; } @@ -784,18 +785,18 @@ RadioInterfaceLayer.prototype = { let index = targets.indexOf(target); if (index != -1) { targets.splice(index, 1); - debug("Unregistered " + permission + " target: " + target); + debug("Unregistered " + topic + " target: " + target); } }, - _sendTargetMessage: function _sendTargetMessage(permission, message, options) { + _sendTargetMessage: function _sendTargetMessage(topic, message, options) { if (!this._sysMsgListenerReady) { - this._enqueueTargetMessage(permission, message, options); + this._enqueueTargetMessage(topic, message, options); return; } - let targets = this._messageManagerByPermission[permission]; + let targets = this._messageManagerByTopic[topic]; if (!targets) { return; } @@ -817,6 +818,14 @@ RadioInterfaceLayer.prototype = { this._sendTargetMessage("voicemail", message, options); }, + _sendCellBroadcastMessage: function sendCellBroadcastMessage(message, options) { + this._sendTargetMessage("cellbroadcast", message, options); + }, + + _sendIccMessage: function sendIccMessage(message, options) { + this._sendTargetMessage("icc", message, options); + }, + updateNetworkInfo: function updateNetworkInfo(message) { let voiceMessage = message[RIL.NETWORK_INFO_VOICE_REGISTRATION_STATE]; let dataMessage = message[RIL.NETWORK_INFO_DATA_REGISTRATION_STATE]; @@ -846,10 +855,10 @@ RadioInterfaceLayer.prototype = { this.checkRoamingBetweenOperators(data); if (voiceMessage || operatorMessage) { - this._sendTargetMessage("mobileconnection", "RIL:VoiceInfoChanged", voice); + this._sendMobileConnectionMessage("RIL:VoiceInfoChanged", voice); } if (dataMessage || operatorMessage) { - this._sendTargetMessage("mobileconnection", "RIL:DataInfoChanged", data); + this._sendMobileConnectionMessage("RIL:DataInfoChanged", data); } if (selectionMessage) { @@ -917,7 +926,7 @@ RadioInterfaceLayer.prototype = { } if (!newInfo.batch) { - this._sendTargetMessage("mobileconnection", "RIL:VoiceInfoChanged", voiceInfo); + this._sendMobileConnectionMessage("RIL:VoiceInfoChanged", voiceInfo); } }, @@ -947,7 +956,7 @@ RadioInterfaceLayer.prototype = { } if (!newInfo.batch) { - this._sendTargetMessage("mobileconnection", "RIL:DataInfoChanged", dataInfo); + this._sendMobileConnectionMessage("RIL:DataInfoChanged", dataInfo); } this.updateRILNetworkInterface(); }, @@ -958,7 +967,7 @@ RadioInterfaceLayer.prototype = { handleDataCallError: function handleDataCallError(message) { // Notify data call error only for data APN if (message.apn == this.dataCallSettings["apn"]) { - this._sendTargetMessage("mobileconnection", "RIL:DataError", message); + this._sendMobileConnectionMessage("RIL:DataError", message); } this._deliverDataCallCallback("dataCallError", [message]); @@ -1025,7 +1034,7 @@ RadioInterfaceLayer.prototype = { voiceInfo.relSignalStrength != message.gsmRelative) { voiceInfo.signalStrength = message.gsmDBM; voiceInfo.relSignalStrength = message.gsmRelative; - this._sendTargetMessage("mobileconnection", "RIL:VoiceInfoChanged", voiceInfo); + this._sendMobileConnectionMessage("RIL:VoiceInfoChanged", voiceInfo); } let dataInfo = this.rilContext.data; @@ -1033,7 +1042,7 @@ RadioInterfaceLayer.prototype = { dataInfo.relSignalStrength != message.gsmRelative) { dataInfo.signalStrength = message.gsmDBM; dataInfo.relSignalStrength = message.gsmRelative; - this._sendTargetMessage("mobileconnection", "RIL:DataInfoChanged", dataInfo); + this._sendMobileConnectionMessage("RIL:DataInfoChanged", dataInfo); } }, @@ -1064,14 +1073,14 @@ RadioInterfaceLayer.prototype = { voice.network = message; if (!message.batch) { - this._sendTargetMessage("mobileconnection", "RIL:VoiceInfoChanged", voice); + this._sendMobileConnectionMessage("RIL:VoiceInfoChanged", voice); } } if (this.networkChanged(message, data.network)) { data.network = message; if (!message.batch) { - this._sendTargetMessage("mobileconnection", "RIL:DataInfoChanged", data); + this._sendMobileConnectionMessage("RIL:DataInfoChanged", data); } } }, @@ -1089,8 +1098,8 @@ RadioInterfaceLayer.prototype = { this._ensureRadioState(); }, - _enqueueTargetMessage: function _enqueueTargetMessage(permission, message, options) { - let msg = { permission : permission, + _enqueueTargetMessage: function _enqueueTargetMessage(topic, message, options) { + let msg = { topic : topic, message : message, options : options }; // Remove previous queued message of same message type, only one message @@ -1114,7 +1123,7 @@ RadioInterfaceLayer.prototype = { // Dequeue and resend messages. for each (let msg in this._targetMessageQueue) { - this._sendTargetMessage(msg.permission, msg.message, msg.options); + this._sendTargetMessage(msg.topic, msg.message, msg.options); } this._targetMessageQueue = null; }, @@ -1354,7 +1363,7 @@ RadioInterfaceLayer.prototype = { gSystemMessenger.broadcastMessage("telephony-new-call", {}); } this.updateCallAudioState(call); - this._sendTargetMessage("telephony", "RIL:CallStateChanged", call); + this._sendTelephonyMessage("RIL:CallStateChanged", call); }, /** @@ -1372,7 +1381,7 @@ RadioInterfaceLayer.prototype = { }; gSystemMessenger.broadcastMessage("telephony-call-ended", data); this.updateCallAudioState(call); - this._sendTargetMessage("telephony", "RIL:CallStateChanged", call); + this._sendTelephonyMessage("RIL:CallStateChanged", call); }, /** @@ -1426,7 +1435,7 @@ RadioInterfaceLayer.prototype = { */ updateNetworkSelectionMode: function updateNetworkSelectionMode(message) { debug("updateNetworkSelectionMode: " + JSON.stringify(message)); - this._sendTargetMessage("mobileconnection", "RIL:NetworkSelectionModeChanged", message); + this._sendMobileConnectionMessage("RIL:NetworkSelectionModeChanged", message); }, /** @@ -1449,7 +1458,7 @@ RadioInterfaceLayer.prototype = { * Handle call error. */ handleCallError: function handleCallError(message) { - this._sendTargetMessage("telephony", "RIL:CallError", message); + this._sendTelephonyMessage("RIL:CallError", message); }, /** @@ -1527,7 +1536,7 @@ RadioInterfaceLayer.prototype = { if (mwi) { mwi.returnNumber = message.sender; mwi.returnMessage = message.fullBody; - this._sendTargetMessage("voicemail", "RIL:VoicemailNotification", mwi); + this._sendVoicemailMessage("RIL:VoicemailNotification", mwi); return true; } @@ -1691,7 +1700,7 @@ RadioInterfaceLayer.prototype = { if (datacall.ifname && datacall.apn == this.dataCallSettings["apn"]) { data.connected = (datacall.state == RIL.GECKO_NETWORK_STATE_CONNECTED); - this._sendTargetMessage("mobileconnection", "RIL:DataInfoChanged", data); + this._sendMobileConnectionMessage("RIL:DataInfoChanged", data); } this._deliverDataCallCallback("dataCallStateChanged", @@ -1762,7 +1771,7 @@ RadioInterfaceLayer.prototype = { voicemailInfo.number = message.number; voicemailInfo.displayName = message.alphaId; - this._sendTargetMessage("voicemail", "RIL:VoicemailInfoChanged", voicemailInfo); + this._sendVoicemailMessage("RIL:VoicemailInfoChanged", voicemailInfo); }, handleICCInfoChange: function handleICCInfoChange(message) { @@ -1782,7 +1791,7 @@ RadioInterfaceLayer.prototype = { } // RIL:IccInfoChanged corresponds to a DOM event that gets fired only // when the MCC or MNC codes have changed. - this._sendTargetMessage("mobileconnection", "RIL:IccInfoChanged", message); + this._sendMobileConnectionMessage("RIL:IccInfoChanged", message); // If spn becomes available, we should check roaming again. let oldSpn = oldIccInfo ? oldIccInfo.spn : null; @@ -1794,10 +1803,10 @@ RadioInterfaceLayer.prototype = { this.checkRoamingBetweenOperators(voice); this.checkRoamingBetweenOperators(data); if (voiceRoaming != voice.roaming) { - this._sendTargetMessage("mobileconnection", "RIL:VoiceInfoChanged", voice); + this._sendMobileConnectionMessage("RIL:VoiceInfoChanged", voice); } if (dataRoaming != data.roaming) { - this._sendTargetMessage("mobileconnection", "RIL:DataInfoChanged", data); + this._sendMobileConnectionMessage("RIL:DataInfoChanged", data); } } }, @@ -1809,7 +1818,7 @@ RadioInterfaceLayer.prototype = { handleUSSDReceived: function handleUSSDReceived(ussd) { debug("handleUSSDReceived " + JSON.stringify(ussd)); gSystemMessenger.broadcastMessage("ussd-received", ussd); - this._sendTargetMessage("mobileconnection", "RIL:USSDReceived", ussd); + this._sendMobileConnectionMessage("RIL:USSDReceived", ussd); }, handleSendMMI: function handleSendMMI(message) { @@ -1829,7 +1838,7 @@ RadioInterfaceLayer.prototype = { handleStkProactiveCommand: function handleStkProactiveCommand(message) { debug("handleStkProactiveCommand " + JSON.stringify(message)); gSystemMessenger.broadcastMessage("icc-stkcommand", message); - this._sendTargetMessage("mobileconnection", "RIL:StkCommand", message); + this._sendIccMessage("RIL:StkCommand", message); }, handleQueryCallForwardStatus: function handleQueryCallForwardStatus(message) { @@ -1839,7 +1848,7 @@ RadioInterfaceLayer.prototype = { handleSetCallForward: function handleSetCallForward(message) { debug("handleSetCallForward: " + JSON.stringify(message)); - this._sendTargetMessage("mobileconnection", "RIL:CfStateChanged", message); + this._sendMobileConnectionMessage("RIL:CfStateChanged", message); let messageType; if (message.isSendMMI) {