diff --git a/dom/system/gonk/RadioInterfaceLayer.js b/dom/system/gonk/RadioInterfaceLayer.js index 468046888958..3ff4351b420c 100644 --- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -1021,6 +1021,10 @@ RadioInterface.prototype = { message.callIndex, message.notification); break; + case "conferenceError": + gTelephonyProvider.notifyConferenceError(message.errorName, + message.errorMsg); + break; case "emergencyCbModeChange": this.handleEmergencyCbModeChange(message); break; diff --git a/dom/system/gonk/ril_worker.js b/dom/system/gonk/ril_worker.js index 75da97ed3d76..e4832de3e1df 100644 --- a/dom/system/gonk/ril_worker.js +++ b/dom/system/gonk/ril_worker.js @@ -5040,6 +5040,10 @@ RIL[REQUEST_SWITCH_HOLDING_AND_ACTIVE] = function REQUEST_SWITCH_HOLDING_AND_ACT RIL[REQUEST_CONFERENCE] = function REQUEST_CONFERENCE(length, options) { if (options.rilRequestError) { this._hasConferenceRequest = false; + options = {rilMessageType: "conferenceError", + errorName: "addError", + errorMsg: RIL_ERROR_TO_GECKO_ERROR[options.rilRequestError]}; + this.sendChromeMessage(options); return; } }; @@ -5629,7 +5633,15 @@ RIL[REQUEST_BASEBAND_VERSION] = function REQUEST_BASEBAND_VERSION(length, option this.basebandVersion = Buf.readString(); if (DEBUG) debug("Baseband version: " + this.basebandVersion); }; -RIL[REQUEST_SEPARATE_CONNECTION] = null; +RIL[REQUEST_SEPARATE_CONNECTION] = function REQUEST_SEPARATE_CONNECTION(length, options) { + if (options.rilRequestError) { + options = {rilMessageType: "conferenceError", + errorName: "removeError", + errorMsg: RIL_ERROR_TO_GECKO_ERROR[options.rilRequestError]}; + this.sendChromeMessage(options); + return; + } +}; RIL[REQUEST_SET_MUTE] = null; RIL[REQUEST_GET_MUTE] = null; RIL[REQUEST_QUERY_CLIP] = function REQUEST_QUERY_CLIP(length, options) { diff --git a/dom/telephony/gonk/TelephonyProvider.js b/dom/telephony/gonk/TelephonyProvider.js index 4b235dacba1a..c54cf40322c8 100644 --- a/dom/telephony/gonk/TelephonyProvider.js +++ b/dom/telephony/gonk/TelephonyProvider.js @@ -574,6 +574,12 @@ TelephonyProvider.prototype = { this._notifyAllListeners("conferenceCallStateChanged", [aState]); }, + notifyConferenceError: function notifyConferenceError(aName, aMessage) { + if (DEBUG) debug("handleConferenceError: " + aName + "." + + " Error details: " + aMessage); + this._notifyAllListeners("notifyConferenceError", [aName, aMessage]); + }, + /** * nsIObserver interface. */