author | Philipp von Weitershausen <philipp@weitershausen.de> |
Tue, 27 Nov 2012 20:28:43 -0500 | |
changeset 114313 | 0c18c15c4985db3c4dd9c4492e3959f927c3e564 |
parent 114312 | 3f225d53e909d8820c308bf42fc0e07f8d68d2f4 |
child 114314 | 448ae175d6b9035b13b6a0eb375c21be5b153b76 |
push id | 23913 |
push user | emorley@mozilla.com |
push date | Wed, 28 Nov 2012 17:11:31 +0000 |
treeherder | mozilla-central@17c267a881cf [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | hsinyi |
bugs | 812368 |
milestone | 20.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
dom/system/gonk/RadioInterfaceLayer.js | file | annotate | diff | comparison | revisions | |
dom/system/gonk/ril_worker.js | file | annotate | diff | comparison | revisions |
--- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -468,16 +468,19 @@ RadioInterfaceLayer.prototype = { * (1) Update local state. * (2) Update state in related systems such as the audio. * (3) Multiplex the message to callbacks / listeners (typically the DOM). */ onmessage: function onmessage(event) { let message = event.data; debug("Received message from worker: " + JSON.stringify(message)); switch (message.rilMessageType) { + case "callRing": + this.handleCallRing(); + break; case "callStateChange": // This one will handle its own notifications. this.handleCallStateChange(message.call); break; case "callDisconnected": // This one will handle its own notifications. this.handleCallDisconnected(message.call); break; @@ -1133,27 +1136,35 @@ RadioInterfaceLayer.prototype = { } debug("Active call, put audio system into PHONE_STATE_IN_CALL: " + gAudioManager.phoneState); break; } }, /** + * Handle an incoming call. + * + * Not much is known about this call at this point, but it's enough + * to start bringing up the Phone app already. + */ + handleCallRing: function handleCallRing() { + gSystemMessenger.broadcastMessage("telephony-new-call"); + }, + + /** * Handle call state changes by updating our current state and the audio * system. */ handleCallStateChange: function handleCallStateChange(call) { debug("handleCallStateChange: " + JSON.stringify(call)); call.state = convertRILCallState(call.state); - if (call.state == nsIRadioInterfaceLayer.CALL_STATE_INCOMING || - call.state == nsIRadioInterfaceLayer.CALL_STATE_DIALING) { - gSystemMessenger.broadcastMessage("telephony-new-call", {number: call.number, - state: call.state}); + if (call.state == nsIRadioInterfaceLayer.CALL_STATE_DIALING) { + gSystemMessenger.broadcastMessage("telephony-new-call"); } if (call.isActive) { this._activeCall = call; } else if (this._activeCall && this._activeCall.callIndex == call.callIndex) { // Previously active call is not active now. this._activeCall = null;
--- a/dom/system/gonk/ril_worker.js +++ b/dom/system/gonk/ril_worker.js @@ -5164,28 +5164,29 @@ RIL[UNSOLICITED_STK_PROACTIVE_COMMAND] = }; RIL[UNSOLICITED_STK_EVENT_NOTIFY] = function UNSOLICITED_STK_EVENT_NOTIFY() { this.processStkProactiveCommand(); }; RIL[UNSOLICITED_STK_CALL_SETUP] = null; RIL[UNSOLICITED_SIM_SMS_STORAGE_FULL] = null; RIL[UNSOLICITED_SIM_REFRESH] = null; RIL[UNSOLICITED_CALL_RING] = function UNSOLICITED_CALL_RING() { - let info; + let info = {rilMessageType: "callRing"}; let isCDMA = false; //XXX TODO hard-code this for now if (isCDMA) { - info = { - isPresent: Buf.readUint32(), - signalType: Buf.readUint32(), - alertPitch: Buf.readUint32(), - signal: Buf.readUint32() - }; + info.isPresent = Buf.readUint32(); + info.signalType = Buf.readUint32(); + info.alertPitch = Buf.readUint32(); + info.signal = Buf.readUint32(); } - // For now we don't need to do anything here because we'll also get a - // call state changed notification. + // At this point we don't know much other than the fact there's an incoming + // call, but that's enough to bring up the Phone app already. We'll know + // details once we get a call state changed notification and can then + // dispatch DOM events etc. + this.sendDOMMessage(info); }; RIL[UNSOLICITED_RESPONSE_SIM_STATUS_CHANGED] = function UNSOLICITED_RESPONSE_SIM_STATUS_CHANGED() { this.getICCStatus(); }; RIL[UNSOLICITED_RESPONSE_CDMA_NEW_SMS] = null; RIL[UNSOLICITED_RESPONSE_NEW_BROADCAST_SMS] = null; RIL[UNSOLICITED_CDMA_RUIM_SMS_STORAGE_FULL] = null; RIL[UNSOLICITED_RESTRICTED_STATE_CHANGED] = null;