mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-24 16:54:08 +00:00
Bug 727319 - Part 2: notify SMS send failed. r=philikon
This commit is contained in:
parent
747d303ac0
commit
308d1f7157
@ -262,6 +262,9 @@ RadioInterfaceLayer.prototype = {
|
||||
case "sms-delivered":
|
||||
this.handleSmsDelivered(message);
|
||||
return;
|
||||
case "sms-send-failed":
|
||||
this.handleSmsSendFailed(message);
|
||||
return;
|
||||
case "datacallstatechange":
|
||||
this.handleDataCallState(message.datacall);
|
||||
break;
|
||||
@ -468,7 +471,6 @@ RadioInterfaceLayer.prototype = {
|
||||
options.sms = sms;
|
||||
}
|
||||
|
||||
//TODO handle errors (bug 727319)
|
||||
gSmsRequestManager.notifySmsSent(options.requestId, sms);
|
||||
},
|
||||
|
||||
@ -484,6 +486,25 @@ RadioInterfaceLayer.prototype = {
|
||||
Services.obs.notifyObservers(options.sms, kSmsDeliveredObserverTopic, null);
|
||||
},
|
||||
|
||||
handleSmsSendFailed: function handleSmsSendFailed(message) {
|
||||
debug("handleSmsSendFailed: " + JSON.stringify(message));
|
||||
|
||||
let options = this._sentSmsEnvelopes[message.envelopeId];
|
||||
if (!options) {
|
||||
return;
|
||||
}
|
||||
delete this._sentSmsEnvelopes[message.envelopeId];
|
||||
|
||||
let error = gSmsRequestManager.UNKNOWN_ERROR;
|
||||
switch (message.error) {
|
||||
case RIL.ERROR_RADIO_NOT_AVAILABLE:
|
||||
error = gSmsRequestManager.NO_SIGNAL_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
gSmsRequestManager.notifySmsSendFailed(options.requestId, error);
|
||||
},
|
||||
|
||||
/**
|
||||
* Handle data call state changes.
|
||||
*/
|
||||
|
@ -241,6 +241,11 @@ const ERROR_SS_MODIFIED_TO_USSD = 24;
|
||||
const ERROR_SS_MODIFIED_TO_SS = 25;
|
||||
const ERROR_SUBSCRIPTION_NOT_SUPPORTED = 26;
|
||||
|
||||
// 3GPP 23.040 clause 9.2.3.6 TP-Message-Reference(TP-MR):
|
||||
// The number of times the MS automatically repeats the SMS-SUBMIT shall be in
|
||||
// the range 1 to 3 but the precise number is an implementation matter.
|
||||
const SMS_RETRY_MAX = 3;
|
||||
|
||||
const RADIO_STATE_OFF = 0;
|
||||
const RADIO_STATE_UNAVAILABLE = 1;
|
||||
const RADIO_STATE_ON = 2;
|
||||
|
@ -1026,6 +1026,10 @@ let RIL = {
|
||||
|
||||
//TODO: verify values on 'options'
|
||||
|
||||
if (!options.retryCount) {
|
||||
options.retryCount = 0;
|
||||
}
|
||||
|
||||
if (options.segmentMaxSeq > 1) {
|
||||
if (!options.segmentSeq) {
|
||||
// Fist segment to send
|
||||
@ -1572,7 +1576,8 @@ let RIL = {
|
||||
delete this._pendingSentSmsMap[message.messageRef];
|
||||
|
||||
if ((status >>> 5) != 0x00) {
|
||||
// TODO: bug 727319 - Notify SMS send failures
|
||||
// It seems unlikely to get a result code for a failure to deliver.
|
||||
// Even if, we don't want to do anything with this.
|
||||
return PDU_FCS_OK;
|
||||
}
|
||||
|
||||
@ -1954,7 +1959,24 @@ RIL[REQUEST_RADIO_POWER] = null;
|
||||
RIL[REQUEST_DTMF] = null;
|
||||
RIL[REQUEST_SEND_SMS] = function REQUEST_SEND_SMS(length, options) {
|
||||
if (options.rilRequestError) {
|
||||
//TODO handle errors (bug 727319)
|
||||
switch (options.rilRequestError) {
|
||||
case ERROR_SMS_SEND_FAIL_RETRY:
|
||||
if (options.retryCount < SMS_RETRY_MAX) {
|
||||
options.retryCount++;
|
||||
// TODO: bug 736702 TP-MR, retry interval, retry timeout
|
||||
this.sendSMS(options);
|
||||
break;
|
||||
}
|
||||
|
||||
// Fallback to default error handling if it meets max retry count.
|
||||
default:
|
||||
this.sendDOMMessage({
|
||||
type: "sms-send-failed",
|
||||
envelopeId: options.envelopeId,
|
||||
error: options.rilRequestError,
|
||||
});
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2211,8 +2233,13 @@ RIL[REQUEST_DEVICE_IDENTITY] = null;
|
||||
RIL[REQUEST_EXIT_EMERGENCY_CALLBACK_MODE] = null;
|
||||
RIL[REQUEST_GET_SMSC_ADDRESS] = function REQUEST_GET_SMSC_ADDRESS(length, options) {
|
||||
if (options.rilRequestError) {
|
||||
//TODO: notify main thread if we fail retrieving the SMSC, especially
|
||||
// if there was a pending SMS (bug 727319).
|
||||
if (options.body) {
|
||||
this.sendDOMMessage({
|
||||
type: "sms-send-failed",
|
||||
envelopeId: options.envelopeId,
|
||||
error: options.rilRequestError,
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user