/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_mobilemessage_MobileMessageManager_h #define mozilla_dom_mobilemessage_MobileMessageManager_h #include "mozilla/Attributes.h" #include "mozilla/DOMEventTargetHelper.h" #include "nsIObserver.h" class nsISmsService; namespace mozilla { namespace dom { class Promise; class DOMRequest; class DOMCursor; class MmsMessage; struct MmsParameters; struct MmsSendParameters; struct MobileMessageFilter; class OwningLongOrSmsMessageOrMmsMessage; class SmsMessage; struct SmsSendParameters; struct SmscAddress; class MobileMessageManager final : public DOMEventTargetHelper , public nsIObserver { public: NS_DECL_ISUPPORTS_INHERITED NS_DECL_NSIOBSERVER NS_REALLY_FORWARD_NSIDOMEVENTTARGET(DOMEventTargetHelper) explicit MobileMessageManager(nsPIDOMWindow* aWindow); void Init(); void Shutdown(); nsPIDOMWindow* GetParentObject() const { return GetOwner(); } // WrapperCache virtual JSObject* WrapObject(JSContext* aCx, JS::Handle aGivenProto) override; // WebIDL Interface already_AddRefed GetSegmentInfoForText(const nsAString& aText, ErrorResult& aRv); already_AddRefed Send(const nsAString& aNumber, const nsAString& aText, const SmsSendParameters& aSendParams, ErrorResult& aRv); void Send(const Sequence& aNumbers, const nsAString& aText, const SmsSendParameters& aSendParams, nsTArray>& aReturn, ErrorResult& aRv); already_AddRefed SendMMS(const MmsParameters& aParameters, const MmsSendParameters& aSendParams, ErrorResult& aRv); already_AddRefed GetMessage(int32_t aId, ErrorResult& aRv); already_AddRefed Delete(int32_t aId, ErrorResult& aRv); already_AddRefed Delete(SmsMessage& aMessage, ErrorResult& aRv); already_AddRefed Delete(MmsMessage& aMessage, ErrorResult& aRv); already_AddRefed Delete(const Sequence& aParams, ErrorResult& aRv); already_AddRefed GetMessages(const MobileMessageFilter& aFilter, bool aReverse, ErrorResult& aRv); already_AddRefed MarkMessageRead(int32_t aId, bool aRead, bool aSendReadReport, ErrorResult& aRv); already_AddRefed GetThreads(ErrorResult& aRv); already_AddRefed RetrieveMMS(int32_t aId, ErrorResult& aRv); already_AddRefed RetrieveMMS(MmsMessage& aMessage, ErrorResult& aRv); already_AddRefed GetSmscAddress(const Optional& aServiceId, ErrorResult& aRv); already_AddRefed SetSmscAddress(const SmscAddress& aSmscAddress, const Optional& aServiceId, ErrorResult& aRv); IMPL_EVENT_HANDLER(received) IMPL_EVENT_HANDLER(retrieving) IMPL_EVENT_HANDLER(sending) IMPL_EVENT_HANDLER(sent) IMPL_EVENT_HANDLER(failed) IMPL_EVENT_HANDLER(deliverysuccess) IMPL_EVENT_HANDLER(deliveryerror) IMPL_EVENT_HANDLER(readsuccess) IMPL_EVENT_HANDLER(readerror) IMPL_EVENT_HANDLER(deleted) private: ~MobileMessageManager() {} /** * Internal Send() method used to send one message. */ already_AddRefed Send(nsISmsService* aSmsService, uint32_t aServiceId, const nsAString& aNumber, const nsAString& aText, ErrorResult& aRv); already_AddRefed Delete(int32_t* aIdArray, uint32_t aSize, ErrorResult& aRv); nsresult DispatchTrustedSmsEventToSelf(const char* aTopic, const nsAString& aEventName, nsISupports* aMsg); nsresult DispatchTrustedDeletedEventToSelf(nsISupports* aDeletedInfo); }; } // namespace dom } // namespace mozilla #endif // mozilla_dom_mobilemessage_MobileMessageManager_h