diff --git a/dom/mobilemessage/src/MobileMessageManager.cpp b/dom/mobilemessage/src/MobileMessageManager.cpp index 483a01ff672c..6f46a3707737 100644 --- a/dom/mobilemessage/src/MobileMessageManager.cpp +++ b/dom/mobilemessage/src/MobileMessageManager.cpp @@ -127,15 +127,14 @@ MobileMessageManager::GetSegmentInfoForText(const nsAString& aText, } nsresult -MobileMessageManager::Send(JSContext* aCx, JS::Handle aGlobal, +MobileMessageManager::Send(JSContext* aCx, + JS::Handle aGlobal, + nsISmsService* aSmsService, uint32_t aServiceId, JS::Handle aNumber, - const nsAString& aMessage, + const nsAString& aText, JS::MutableHandle aRequest) { - nsCOMPtr smsService = do_GetService(SMS_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(smsService, NS_ERROR_FAILURE); - nsDependentJSString number; number.init(aCx, aNumber); @@ -144,8 +143,8 @@ MobileMessageManager::Send(JSContext* aCx, JS::Handle aGlobal, new MobileMessageCallback(request); // By default, we don't send silent messages via MobileMessageManager. - nsresult rv = smsService->Send(aServiceId, number, aMessage, - false, msgCallback); + nsresult rv = aSmsService->Send(aServiceId, number, aText, + false, msgCallback); NS_ENSURE_SUCCESS(rv, rv); js::AssertSameCompartment(aCx, aGlobal); @@ -162,7 +161,7 @@ MobileMessageManager::Send(JSContext* aCx, JS::Handle aGlobal, NS_IMETHODIMP MobileMessageManager::Send(JS::Handle aNumber, - const nsAString& aMessage, + const nsAString& aText, JS::Handle aSendParams, JSContext* aCx, uint8_t aArgc, @@ -190,23 +189,25 @@ MobileMessageManager::Send(JS::Handle aNumber, // Use the default one unless |aSendParams.serviceId| is available. uint32_t serviceId; - rv = smsService->GetSmsDefaultServiceId(&serviceId); - NS_ENSURE_SUCCESS(rv, rv); + RootedDictionary sendParams(aCx); - if (aArgc == 1) { + if (aArgc >= 1) { JS::Rooted param(aCx, aSendParams); - RootedDictionary sendParams(aCx); if (!sendParams.Init(aCx, param)) { return NS_ERROR_TYPE_ERR; } - if (sendParams.mServiceId.WasPassed()) { - serviceId = sendParams.mServiceId.Value(); - } + } + + if (sendParams.mServiceId.WasPassed()) { + serviceId = sendParams.mServiceId.Value(); + } else { + rv = smsService->GetSmsDefaultServiceId(&serviceId); + NS_ENSURE_SUCCESS(rv, rv); } if (aNumber.isString()) { JS::Rooted str(aCx, aNumber.toString()); - return Send(aCx, global, serviceId, str, aMessage, aReturn); + return Send(aCx, global, smsService, serviceId, str, aText, aReturn); } // Must be an array then. @@ -234,7 +235,7 @@ MobileMessageManager::Send(JS::Handle aNumber, return NS_ERROR_FAILURE; } - nsresult rv = Send(aCx, global, serviceId, str, aMessage, requests[i]); + nsresult rv = Send(aCx, global, smsService, serviceId, str, aText, requests[i]); NS_ENSURE_SUCCESS(rv, rv); } @@ -260,18 +261,21 @@ MobileMessageManager::SendMMS(JS::Handle aParams, // Use the default one unless |aSendParams.serviceId| is available. uint32_t serviceId; - nsresult rv = mmsService->GetMmsDefaultServiceId(&serviceId); - NS_ENSURE_SUCCESS(rv, rv); + RootedDictionary sendParams(aCx); + nsresult rv; - if (aArgc == 1) { + if (aArgc >= 1) { JS::Rooted param(aCx, aSendParams); - RootedDictionary sendParams(aCx); if (!sendParams.Init(aCx, param)) { return NS_ERROR_TYPE_ERR; } - if (sendParams.mServiceId.WasPassed()) { - serviceId = sendParams.mServiceId.Value(); - } + } + + if (sendParams.mServiceId.WasPassed()) { + serviceId = sendParams.mServiceId.Value(); + } else { + rv = mmsService->GetMmsDefaultServiceId(&serviceId); + NS_ENSURE_SUCCESS(rv, rv); } nsRefPtr request = new DOMRequest(GetOwner()); @@ -284,15 +288,16 @@ MobileMessageManager::SendMMS(JS::Handle aParams, } NS_IMETHODIMP -MobileMessageManager::GetMessageMoz(int32_t aId, nsIDOMDOMRequest** aRequest) +MobileMessageManager::GetMessageMoz(int32_t aId, + nsIDOMDOMRequest** aRequest) { - nsCOMPtr mobileMessageDBService = + nsCOMPtr dbService = do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(mobileMessageDBService, NS_ERROR_FAILURE); + NS_ENSURE_TRUE(dbService, NS_ERROR_FAILURE); nsRefPtr request = new DOMRequest(GetOwner()); nsCOMPtr msgCallback = new MobileMessageCallback(request); - nsresult rv = mobileMessageDBService->GetMessageMoz(aId, msgCallback); + nsresult rv = dbService->GetMessageMoz(aId, msgCallback); NS_ENSURE_SUCCESS(rv, rv); request.forget(aRequest); @@ -319,7 +324,8 @@ MobileMessageManager::GetMessageId(JSContext* aCx, } NS_IMETHODIMP -MobileMessageManager::Delete(JS::Handle aParam, JSContext* aCx, +MobileMessageManager::Delete(JS::Handle aParam, + JSContext* aCx, nsIDOMDOMRequest** aRequest) { // We expect Int32, SmsMessage, MmsMessage, Int32[], SmsMessage[], MmsMessage[] @@ -414,19 +420,19 @@ MobileMessageManager::GetMessages(nsIDOMMozSmsFilter* aFilter, } NS_IMETHODIMP -MobileMessageManager::MarkMessageRead(int32_t aId, bool aValue, +MobileMessageManager::MarkMessageRead(int32_t aId, + bool aValue, bool aSendReadReport, nsIDOMDOMRequest** aRequest) { - nsCOMPtr mobileMessageDBService = + nsCOMPtr dbService = do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(mobileMessageDBService, NS_ERROR_FAILURE); + NS_ENSURE_TRUE(dbService, NS_ERROR_FAILURE); nsRefPtr request = new DOMRequest(GetOwner()); nsCOMPtr msgCallback = new MobileMessageCallback(request); - nsresult rv = mobileMessageDBService->MarkMessageRead(aId, aValue, - aSendReadReport, - msgCallback); + nsresult rv = dbService->MarkMessageRead(aId, aValue, aSendReadReport, + msgCallback); NS_ENSURE_SUCCESS(rv, rv); request.forget(aRequest); @@ -455,20 +461,20 @@ MobileMessageManager::GetThreads(nsIDOMDOMCursor** aCursor) } NS_IMETHODIMP -MobileMessageManager::RetrieveMMS(int32_t id, +MobileMessageManager::RetrieveMMS(int32_t aId, nsIDOMDOMRequest** aRequest) { - nsCOMPtr mmsService = do_GetService(MMS_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(mmsService, NS_ERROR_FAILURE); + nsCOMPtr mmsService = do_GetService(MMS_SERVICE_CONTRACTID); + NS_ENSURE_TRUE(mmsService, NS_ERROR_FAILURE); - nsRefPtr request = new DOMRequest(GetOwner()); - nsCOMPtr msgCallback = new MobileMessageCallback(request); + nsRefPtr request = new DOMRequest(GetOwner()); + nsCOMPtr msgCallback = new MobileMessageCallback(request); - nsresult rv = mmsService->Retrieve(id, msgCallback); - NS_ENSURE_SUCCESS(rv, rv); + nsresult rv = mmsService->Retrieve(aId, msgCallback); + NS_ENSURE_SUCCESS(rv, rv); - request.forget(aRequest); - return NS_OK; + request.forget(aRequest); + return NS_OK; } nsresult @@ -552,14 +558,15 @@ MobileMessageManager::Observe(nsISupports* aSubject, const char* aTopic, } NS_IMETHODIMP -MobileMessageManager::GetSmscAddress(uint32_t aServiceId, uint8_t aArgc, +MobileMessageManager::GetSmscAddress(uint32_t aServiceId, + uint8_t aArgc, nsIDOMDOMRequest** aRequest) { nsCOMPtr smsService = do_GetService(SMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(smsService, NS_ERROR_FAILURE); nsresult rv; - if (aArgc != 1) { + if (aArgc == 0) { rv = smsService->GetSmsDefaultServiceId(&aServiceId); NS_ENSURE_SUCCESS(rv, rv); } diff --git a/dom/mobilemessage/src/MobileMessageManager.h b/dom/mobilemessage/src/MobileMessageManager.h index f53e0306279c..a100ae16ac4e 100644 --- a/dom/mobilemessage/src/MobileMessageManager.h +++ b/dom/mobilemessage/src/MobileMessageManager.h @@ -10,6 +10,7 @@ #include "nsIDOMMobileMessageManager.h" #include "nsIObserver.h" +class nsISmsService; class nsIDOMMozSmsMessage; class nsIDOMMozMmsMessage; @@ -34,21 +35,27 @@ private: /** * Internal Send() method used to send one message. */ - nsresult Send(JSContext* aCx, JS::Handle aGlobal, - uint32_t aServiceId, - JS::Handle aNumber, - const nsAString& aMessage, - JS::MutableHandle aRequest); + nsresult + Send(JSContext* aCx, + JS::Handle aGlobal, + nsISmsService* aSmsService, + uint32_t aServiceId, + JS::Handle aNumber, + const nsAString& aText, + JS::MutableHandle aRequest); - nsresult DispatchTrustedSmsEventToSelf(const char* aTopic, - const nsAString& aEventName, - nsISupports* aMsg); + nsresult + DispatchTrustedSmsEventToSelf(const char* aTopic, + const nsAString& aEventName, + nsISupports* aMsg); /** * Helper to get message ID from SMS/MMS Message object */ - nsresult GetMessageId(JSContext* aCx, const JS::Value& aMessage, - int32_t* aId); + nsresult + GetMessageId(JSContext* aCx, + const JS::Value& aMessage, + int32_t* aId); }; } // namespace dom