Bug 774621 - Part 2/5: DOM implementation, r=sicking

This commit is contained in:
Vicamo Yang 2012-12-11 17:09:42 +08:00
parent 17ab87ad12
commit aab0e9d617
14 changed files with 105 additions and 135 deletions

View File

@ -700,6 +700,7 @@ GK_ATOM(ondragstart, "ondragstart")
GK_ATOM(ondrop, "ondrop")
GK_ATOM(onenabled, "onenabled")
GK_ATOM(onerror, "onerror")
GK_ATOM(onfailed, "onfailed")
GK_ATOM(onfocus, "onfocus")
GK_ATOM(onget, "onget")
GK_ATOM(onhashchange, "onhashchange")
@ -766,6 +767,7 @@ GK_ATOM(onMozBeforeResize, "onMozBeforeResize")
GK_ATOM(onresize, "onresize")
GK_ATOM(onscroll, "onscroll")
GK_ATOM(onselect, "onselect")
GK_ATOM(onsending, "onsending")
GK_ATOM(onsent, "onsent")
GK_ATOM(onset, "onset")
GK_ATOM(onshow, "onshow")

View File

@ -17,12 +17,6 @@ interface nsISmsRequest;
[scriptable, uuid(c2cb2af7-6b96-4915-bcc8-54ad705d6110)]
interface nsISmsDatabaseService : nsISupports
{
// Takes some information required to save the message and returns its id.
long saveReceivedMessage(in DOMString aSender, in DOMString aBody, in DOMString aMessageClass, in unsigned long long aDate);
// Takes some information required to save the message and returns its id.
long saveSentMessage(in DOMString aReceiver, in DOMString aBody, in unsigned long long aDate);
void setMessageDeliveryStatus(in long aMessageId, in DOMString aDeliveryStatus);
[binaryname(GetMessageMoz)]
void getMessage(in long messageId, in nsISmsRequest request);
void deleteMessage(in long messageId, in nsISmsRequest request);

View File

@ -8,7 +8,9 @@ namespace dom {
namespace sms {
const char* kSmsReceivedObserverTopic = "sms-received";
const char* kSmsSendingObserverTopic = "sms-sending";
const char* kSmsSentObserverTopic = "sms-sent";
const char* kSmsFailedObserverTopic = "sms-failed";
const char* kSmsDeliverySuccessObserverTopic = "sms-delivery-success";
const char* kSmsDeliveryErrorObserverTopic = "sms-delivery-error";

View File

@ -10,13 +10,18 @@ namespace mozilla {
namespace dom {
namespace sms {
extern const char* kSmsReceivedObserverTopic; // Defined in the .cpp.
extern const char* kSmsSentObserverTopic; // Defined in the .cpp.
extern const char* kSmsDeliverySuccessObserverTopic; // Defined in the .cpp.
extern const char* kSmsDeliveryErrorObserverTopic; // Defined in the .cpp.
// Defined in the .cpp.
extern const char* kSmsReceivedObserverTopic;
extern const char* kSmsSendingObserverTopic;
extern const char* kSmsSentObserverTopic;
extern const char* kSmsFailedObserverTopic;
extern const char* kSmsDeliverySuccessObserverTopic;
extern const char* kSmsDeliveryErrorObserverTopic;
#define DELIVERY_RECEIVED NS_LITERAL_STRING("received")
#define DELIVERY_SENDING NS_LITERAL_STRING("sending")
#define DELIVERY_SENT NS_LITERAL_STRING("sent")
#define DELIVERY_ERROR NS_LITERAL_STRING("error")
#define DELIVERY_STATUS_NOT_APPLICABLE NS_LITERAL_STRING("not-applicable")
#define DELIVERY_STATUS_SUCCESS NS_LITERAL_STRING("success")

View File

@ -21,7 +21,9 @@
#include "nsIPermissionManager.h"
#define RECEIVED_EVENT_NAME NS_LITERAL_STRING("received")
#define SENDING_EVENT_NAME NS_LITERAL_STRING("sending")
#define SENT_EVENT_NAME NS_LITERAL_STRING("sent")
#define FAILED_EVENT_NAME NS_LITERAL_STRING("failed")
#define DELIVERY_SUCCESS_EVENT_NAME NS_LITERAL_STRING("deliverysuccess")
#define DELIVERY_ERROR_EVENT_NAME NS_LITERAL_STRING("deliveryerror")
@ -44,7 +46,9 @@ NS_IMPL_ADDREF_INHERITED(SmsManager, nsDOMEventTargetHelper)
NS_IMPL_RELEASE_INHERITED(SmsManager, nsDOMEventTargetHelper)
NS_IMPL_EVENT_HANDLER(SmsManager, received)
NS_IMPL_EVENT_HANDLER(SmsManager, sending)
NS_IMPL_EVENT_HANDLER(SmsManager, sent)
NS_IMPL_EVENT_HANDLER(SmsManager, failed)
NS_IMPL_EVENT_HANDLER(SmsManager, deliverysuccess)
NS_IMPL_EVENT_HANDLER(SmsManager, deliveryerror)
@ -101,7 +105,9 @@ SmsManager::Init(nsPIDOMWindow *aWindow)
}
obs->AddObserver(this, kSmsReceivedObserverTopic, false);
obs->AddObserver(this, kSmsSendingObserverTopic, false);
obs->AddObserver(this, kSmsSentObserverTopic, false);
obs->AddObserver(this, kSmsFailedObserverTopic, false);
obs->AddObserver(this, kSmsDeliverySuccessObserverTopic, false);
obs->AddObserver(this, kSmsDeliveryErrorObserverTopic, false);
}
@ -116,7 +122,9 @@ SmsManager::Shutdown()
}
obs->RemoveObserver(this, kSmsReceivedObserverTopic);
obs->RemoveObserver(this, kSmsSendingObserverTopic);
obs->RemoveObserver(this, kSmsSentObserverTopic);
obs->RemoveObserver(this, kSmsFailedObserverTopic);
obs->RemoveObserver(this, kSmsDeliverySuccessObserverTopic);
obs->RemoveObserver(this, kSmsDeliveryErrorObserverTopic);
}
@ -335,6 +343,17 @@ SmsManager::Observe(nsISupports* aSubject, const char* aTopic,
return NS_OK;
}
if (!strcmp(aTopic, kSmsSendingObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {
NS_ERROR("Got a 'sms-sending' topic without a valid message!");
return NS_OK;
}
DispatchTrustedSmsEventToSelf(SENDING_EVENT_NAME, message);
return NS_OK;
}
if (!strcmp(aTopic, kSmsSentObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {
@ -346,6 +365,17 @@ SmsManager::Observe(nsISupports* aSubject, const char* aTopic,
return NS_OK;
}
if (!strcmp(aTopic, kSmsFailedObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {
NS_ERROR("Got a 'sms-failed' topic without a valid message!");
return NS_OK;
}
DispatchTrustedSmsEventToSelf(FAILED_EVENT_NAME, message);
return NS_OK;
}
if (!strcmp(aTopic, kSmsDeliverySuccessObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {

View File

@ -69,8 +69,12 @@ SmsMessage::Create(int32_t aId,
if (aDelivery.Equals(DELIVERY_RECEIVED)) {
data.delivery() = eDeliveryState_Received;
} else if (aDelivery.Equals(DELIVERY_SENDING)) {
data.delivery() = eDeliveryState_Sending;
} else if (aDelivery.Equals(DELIVERY_SENT)) {
data.delivery() = eDeliveryState_Sent;
} else if (aDelivery.Equals(DELIVERY_ERROR)) {
data.delivery() = eDeliveryState_Error;
} else {
return NS_ERROR_INVALID_ARG;
}
@ -144,9 +148,15 @@ SmsMessage::GetDelivery(nsAString& aDelivery)
case eDeliveryState_Received:
aDelivery = DELIVERY_RECEIVED;
break;
case eDeliveryState_Sending:
aDelivery = DELIVERY_SENDING;
break;
case eDeliveryState_Sent:
aDelivery = DELIVERY_SENT;
break;
case eDeliveryState_Error:
aDelivery = DELIVERY_ERROR;
break;
case eDeliveryState_Unknown:
case eDeliveryState_EndGuard:
default:

View File

@ -18,6 +18,8 @@ namespace sms {
enum DeliveryState {
eDeliveryState_Sent = 0,
eDeliveryState_Received,
eDeliveryState_Sending,
eDeliveryState_Error,
eDeliveryState_Unknown,
// This state should stay at the end.
eDeliveryState_EndGuard

View File

@ -11,36 +11,6 @@ namespace sms {
NS_IMPL_ISUPPORTS1(SmsDatabaseService, nsISmsDatabaseService)
NS_IMETHODIMP
SmsDatabaseService::SaveReceivedMessage(const nsAString& aSender,
const nsAString& aBody,
const nsAString& aMessageClass,
uint64_t aDate,
int32_t* aId)
{
*aId = -1;
NS_ERROR("We should not be here!");
return NS_OK;
}
NS_IMETHODIMP
SmsDatabaseService::SaveSentMessage(const nsAString& aReceiver,
const nsAString& aBody,
uint64_t aDate, int32_t* aId)
{
*aId = -1;
NS_ERROR("We should not be here!");
return NS_OK;
}
NS_IMETHODIMP
SmsDatabaseService::SetMessageDeliveryStatus(int32_t aMessageId,
const nsAString& aDeliveryStatus)
{
NS_ERROR("We should not be here!");
return NS_OK;
}
NS_IMETHODIMP
SmsDatabaseService::GetMessageMoz(int32_t aMessageId,
nsISmsRequest* aRequest)

View File

@ -75,8 +75,12 @@ sync protocol PSms {
child:
NotifyReceivedMessage(SmsMessageData aMessageData);
NotifySendingMessage(SmsMessageData aMessageData);
NotifySentMessage(SmsMessageData aMessageData);
NotifyFailedMessage(SmsMessageData aMessageData);
NotifyDeliverySuccessMessage(SmsMessageData aMessageData);
NotifyDeliveryErrorMessage(SmsMessageData aMessageData);
@ -98,14 +102,6 @@ parent:
sync GetNumberOfMessagesForText(nsString aText)
returns (uint16_t aNumber);
sync SaveReceivedMessage(nsString aSender, nsString aBody, nsString aMessageClass, uint64_t aDate)
returns (int32_t aId);
sync SaveSentMessage(nsString aReceiver, nsString aBody, uint64_t aDate)
returns (int32_t aId);
SetMessageDeliveryStatus(int32_t aMessageId, nsString aDeliveryStatus);
ClearMessageList(int32_t aListId);
};

View File

@ -56,6 +56,13 @@ SmsChild::RecvNotifyReceivedMessage(const SmsMessageData& aMessageData)
return true;
}
bool
SmsChild::RecvNotifySendingMessage(const SmsMessageData& aMessageData)
{
NotifyObserversWithSmsMessage(kSmsSendingObserverTopic, aMessageData);
return true;
}
bool
SmsChild::RecvNotifySentMessage(const SmsMessageData& aMessageData)
{
@ -63,6 +70,13 @@ SmsChild::RecvNotifySentMessage(const SmsMessageData& aMessageData)
return true;
}
bool
SmsChild::RecvNotifyFailedMessage(const SmsMessageData& aMessageData)
{
NotifyObserversWithSmsMessage(kSmsFailedObserverTopic, aMessageData);
return true;
}
bool
SmsChild::RecvNotifyDeliverySuccessMessage(const SmsMessageData& aMessageData)
{

View File

@ -29,9 +29,15 @@ protected:
virtual bool
RecvNotifyReceivedMessage(const SmsMessageData& aMessage) MOZ_OVERRIDE;
virtual bool
RecvNotifySendingMessage(const SmsMessageData& aMessage) MOZ_OVERRIDE;
virtual bool
RecvNotifySentMessage(const SmsMessageData& aMessage) MOZ_OVERRIDE;
virtual bool
RecvNotifyFailedMessage(const SmsMessageData& aMessage) MOZ_OVERRIDE;
virtual bool
RecvNotifyDeliverySuccessMessage(const SmsMessageData& aMessage) MOZ_OVERRIDE;

View File

@ -95,40 +95,6 @@ SmsIPCService::CreateSmsMessage(int32_t aId,
/*
* Implementation of nsISmsDatabaseService.
*/
NS_IMETHODIMP
SmsIPCService::SaveReceivedMessage(const nsAString& aSender,
const nsAString& aBody,
const nsAString& aMessageClass,
uint64_t aDate,
int32_t* aId)
{
GetSmsChild()->SendSaveReceivedMessage(nsString(aSender), nsString(aBody),
nsString(aMessageClass), aDate, aId);
return NS_OK;
}
NS_IMETHODIMP
SmsIPCService::SaveSentMessage(const nsAString& aReceiver,
const nsAString& aBody,
uint64_t aDate, int32_t* aId)
{
GetSmsChild()->SendSaveSentMessage(nsString(aReceiver), nsString(aBody),
aDate, aId);
return NS_OK;
}
NS_IMETHODIMP
SmsIPCService::SetMessageDeliveryStatus(int32_t aMessageId,
const nsAString& aDeliveryStatus)
{
GetSmsChild()->SendSetMessageDeliveryStatus(aMessageId,
nsString(aDeliveryStatus));
return NS_OK;
}
NS_IMETHODIMP
SmsIPCService::GetMessageMoz(int32_t aMessageId,
nsISmsRequest* aRequest)

View File

@ -30,7 +30,9 @@ SmsParent::SmsParent()
}
obs->AddObserver(this, kSmsReceivedObserverTopic, false);
obs->AddObserver(this, kSmsSendingObserverTopic, false);
obs->AddObserver(this, kSmsSentObserverTopic, false);
obs->AddObserver(this, kSmsFailedObserverTopic, false);
obs->AddObserver(this, kSmsDeliverySuccessObserverTopic, false);
obs->AddObserver(this, kSmsDeliveryErrorObserverTopic, false);
}
@ -49,7 +51,9 @@ SmsParent::ActorDestroy(ActorDestroyReason why)
}
obs->RemoveObserver(this, kSmsReceivedObserverTopic);
obs->RemoveObserver(this, kSmsSendingObserverTopic);
obs->RemoveObserver(this, kSmsSentObserverTopic);
obs->RemoveObserver(this, kSmsFailedObserverTopic);
obs->RemoveObserver(this, kSmsDeliverySuccessObserverTopic);
obs->RemoveObserver(this, kSmsDeliveryErrorObserverTopic);
}
@ -69,6 +73,17 @@ SmsParent::Observe(nsISupports* aSubject, const char* aTopic,
return NS_OK;
}
if (!strcmp(aTopic, kSmsSendingObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {
NS_ERROR("Got a 'sms-sending' topic without a valid message!");
return NS_OK;
}
unused << SendNotifySendingMessage(static_cast<SmsMessage*>(message.get())->GetData());
return NS_OK;
}
if (!strcmp(aTopic, kSmsSentObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {
@ -80,6 +95,17 @@ SmsParent::Observe(nsISupports* aSubject, const char* aTopic,
return NS_OK;
}
if (!strcmp(aTopic, kSmsFailedObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {
NS_ERROR("Got a 'sms-failed' topic without a valid message!");
return NS_OK;
}
unused << SendNotifyFailedMessage(static_cast<SmsMessage*>(message.get())->GetData());
return NS_OK;
}
if (!strcmp(aTopic, kSmsDeliverySuccessObserverTopic)) {
nsCOMPtr<nsIDOMMozSmsMessage> message = do_QueryInterface(aSubject);
if (!message) {
@ -129,50 +155,6 @@ SmsParent::RecvGetNumberOfMessagesForText(const nsString& aText, uint16_t* aResu
return true;
}
bool
SmsParent::RecvSaveReceivedMessage(const nsString& aSender,
const nsString& aBody,
const nsString& aMessageClass,
const uint64_t& aDate,
int32_t* aId)
{
*aId = -1;
nsCOMPtr<nsISmsDatabaseService> smsDBService =
do_GetService(SMS_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(smsDBService, true);
smsDBService->SaveReceivedMessage(aSender, aBody, aMessageClass, aDate, aId);
return true;
}
bool
SmsParent::RecvSaveSentMessage(const nsString& aRecipient,
const nsString& aBody,
const uint64_t& aDate, int32_t* aId)
{
*aId = -1;
nsCOMPtr<nsISmsDatabaseService> smsDBService =
do_GetService(SMS_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(smsDBService, true);
smsDBService->SaveSentMessage(aRecipient, aBody, aDate, aId);
return true;
}
bool
SmsParent::RecvSetMessageDeliveryStatus(const int32_t& aMessageId,
const nsString& aDeliveryStatus)
{
nsCOMPtr<nsISmsDatabaseService> smsDBService =
do_GetService(SMS_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(smsDBService, true);
smsDBService->SetMessageDeliveryStatus(aMessageId, aDeliveryStatus);
return true;
}
bool
SmsParent::RecvClearMessageList(const int32_t& aListId)
{

View File

@ -40,15 +40,6 @@ protected:
virtual bool
RecvGetNumberOfMessagesForText(const nsString& aText, uint16_t* aResult) MOZ_OVERRIDE;
virtual bool
RecvSaveReceivedMessage(const nsString& aSender, const nsString& aBody, const nsString& aMessageClass, const uint64_t& aDate, int32_t* aId) MOZ_OVERRIDE;
virtual bool
RecvSaveSentMessage(const nsString& aRecipient, const nsString& aBody, const uint64_t& aDate, int32_t* aId) MOZ_OVERRIDE;
virtual bool
RecvSetMessageDeliveryStatus(const int32_t& aMessageId, const nsString& aDeliveryStatus) MOZ_OVERRIDE;
virtual bool
RecvClearMessageList(const int32_t& aListId) MOZ_OVERRIDE;