Bug 824717 - Part 6: Notify SendMesageFailed with saved DOM Message if available. r=vyang

This commit is contained in:
Bevis Tseng 2014-04-28 13:28:12 +08:00
parent 36b02ef228
commit 2d3aaf05cd
2 changed files with 29 additions and 10 deletions

View File

@ -1955,8 +1955,7 @@ MmsService.prototype = {
.setMessageReadStatusByEnvelopeId(envelopeId, address, readStatus, .setMessageReadStatusByEnvelopeId(envelopeId, address, readStatus,
(function(aRv, aDomMessage) { (function(aRv, aDomMessage) {
if (!Components.isSuccessCode(aRv)) { if (!Components.isSuccessCode(aRv)) {
// Notifying observers the read status is error. if (DEBUG) debug("Failed to update read status: " + aRv);
Services.obs.notifyObservers(aDomMessage, kSmsReadSuccessObserverTopic, null);
return; return;
} }
@ -2171,7 +2170,7 @@ MmsService.prototype = {
// If the messsage has been deleted (because the sending process is // If the messsage has been deleted (because the sending process is
// cancelled), we don't need to reset the its delievery state/status. // cancelled), we don't need to reset the its delievery state/status.
if (aErrorCode == Ci.nsIMobileMessageCallback.NOT_FOUND_ERROR) { if (aErrorCode == Ci.nsIMobileMessageCallback.NOT_FOUND_ERROR) {
aRequest.notifySendMessageFailed(aErrorCode); aRequest.notifySendMessageFailed(aErrorCode, aDomMessage);
Services.obs.notifyObservers(aDomMessage, kSmsFailedObserverTopic, null); Services.obs.notifyObservers(aDomMessage, kSmsFailedObserverTopic, null);
return; return;
} }
@ -2188,7 +2187,7 @@ MmsService.prototype = {
// TODO bug 832140 handle !Components.isSuccessCode(aRv) // TODO bug 832140 handle !Components.isSuccessCode(aRv)
if (!isSentSuccess) { if (!isSentSuccess) {
if (DEBUG) debug("Sending MMS failed."); if (DEBUG) debug("Sending MMS failed.");
aRequest.notifySendMessageFailed(aErrorCode); aRequest.notifySendMessageFailed(aErrorCode, aDomMessage);
Services.obs.notifyObservers(aDomMessage, kSmsFailedObserverTopic, null); Services.obs.notifyObservers(aDomMessage, kSmsFailedObserverTopic, null);
return; return;
} }
@ -2214,7 +2213,8 @@ MmsService.prototype = {
if (!Components.isSuccessCode(aRv)) { if (!Components.isSuccessCode(aRv)) {
if (DEBUG) debug("Error! Fail to save sending message! rv = " + aRv); if (DEBUG) debug("Error! Fail to save sending message! rv = " + aRv);
aRequest.notifySendMessageFailed( aRequest.notifySendMessageFailed(
gMobileMessageDatabaseService.translateCrErrorToMessageCallbackError(aRv)); gMobileMessageDatabaseService.translateCrErrorToMessageCallbackError(aRv),
aDomMessage);
Services.obs.notifyObservers(aDomMessage, kSmsFailedObserverTopic, null); Services.obs.notifyObservers(aDomMessage, kSmsFailedObserverTopic, null);
return; return;
} }

View File

@ -4082,7 +4082,8 @@ RadioInterface.prototype = {
if (!Components.isSuccessCode(rv)) { if (!Components.isSuccessCode(rv)) {
if (DEBUG) this.debug("Error! Fail to save sending message! rv = " + rv); if (DEBUG) this.debug("Error! Fail to save sending message! rv = " + rv);
request.notifySendMessageFailed( request.notifySendMessageFailed(
gMobileMessageDatabaseService.translateCrErrorToMessageCallbackError(rv)); gMobileMessageDatabaseService.translateCrErrorToMessageCallbackError(rv),
domMessage);
Services.obs.notifyObservers(domMessage, kSmsFailedObserverTopic, null); Services.obs.notifyObservers(domMessage, kSmsFailedObserverTopic, null);
return; return;
} }
@ -4108,7 +4109,7 @@ RadioInterface.prototype = {
} }
if (errorCode) { if (errorCode) {
if (silent) { if (silent) {
request.notifySendMessageFailed(errorCode); request.notifySendMessageFailed(errorCode, domMessage);
return; return;
} }
@ -4120,7 +4121,7 @@ RadioInterface.prototype = {
null, null,
function notifyResult(rv, domMessage) { function notifyResult(rv, domMessage) {
// TODO bug 832140 handle !Components.isSuccessCode(rv) // TODO bug 832140 handle !Components.isSuccessCode(rv)
request.notifySendMessageFailed(errorCode); request.notifySendMessageFailed(errorCode, domMessage);
Services.obs.notifyObservers(domMessage, kSmsFailedObserverTopic, null); Services.obs.notifyObservers(domMessage, kSmsFailedObserverTopic, null);
}); });
return; return;
@ -4150,7 +4151,25 @@ RadioInterface.prototype = {
} }
if (context.silent) { if (context.silent) {
context.request.notifySendMessageFailed(error); // There is no way to modify nsIDOMMozSmsMessage attributes as they
// are read only so we just create a new sms instance to send along
// with the notification.
let sms = context.sms;
context.request.notifySendMessageFailed(
error,
gMobileMessageService.createSmsMessage(sms.id,
sms.threadId,
sms.iccId,
DOM_MOBILE_MESSAGE_DELIVERY_ERROR,
RIL.GECKO_SMS_DELIVERY_STATUS_ERROR,
sms.sender,
sms.receiver,
sms.body,
sms.messageClass,
sms.timestamp,
0,
0,
sms.read));
return false; return false;
} }
@ -4162,7 +4181,7 @@ RadioInterface.prototype = {
null, null,
function notifyResult(rv, domMessage) { function notifyResult(rv, domMessage) {
// TODO bug 832140 handle !Components.isSuccessCode(rv) // TODO bug 832140 handle !Components.isSuccessCode(rv)
context.request.notifySendMessageFailed(error); context.request.notifySendMessageFailed(error, domMessage);
Services.obs.notifyObservers(domMessage, kSmsFailedObserverTopic, null); Services.obs.notifyObservers(domMessage, kSmsFailedObserverTopic, null);
}); });
return false; return false;