diff -r 000000000000 -r 6474c204b198 dom/src/notification/Notification.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/src/notification/Notification.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,158 @@ +/* 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_notification_h__ +#define mozilla_dom_notification_h__ + +#include "mozilla/DOMEventTargetHelper.h" +#include "mozilla/dom/NotificationBinding.h" + +#include "nsIObserver.h" + +#include "nsCycleCollectionParticipant.h" + +class nsIPrincipal; + +namespace mozilla { +namespace dom { + + +class NotificationObserver; +class Promise; + +class Notification : public DOMEventTargetHelper +{ + friend class NotificationTask; + friend class NotificationPermissionRequest; + friend class NotificationObserver; + friend class NotificationStorageCallback; + +public: + IMPL_EVENT_HANDLER(click) + IMPL_EVENT_HANDLER(show) + IMPL_EVENT_HANDLER(error) + IMPL_EVENT_HANDLER(close) + + static already_AddRefed Constructor(const GlobalObject& aGlobal, + const nsAString& aTitle, + const NotificationOptions& aOption, + ErrorResult& aRv); + void GetID(nsAString& aRetval) { + aRetval = mID; + } + + void GetTitle(nsAString& aRetval) + { + aRetval = mTitle; + } + + NotificationDirection Dir() + { + return mDir; + } + + void GetLang(nsAString& aRetval) + { + aRetval = mLang; + } + + void GetBody(nsAString& aRetval) + { + aRetval = mBody; + } + + void GetTag(nsAString& aRetval) + { + aRetval = mTag; + } + + void GetIcon(nsAString& aRetval) + { + aRetval = mIconUrl; + } + + static void RequestPermission(const GlobalObject& aGlobal, + const Optional >& aCallback, + ErrorResult& aRv); + + static NotificationPermission GetPermission(const GlobalObject& aGlobal, + ErrorResult& aRv); + + static already_AddRefed Get(const GlobalObject& aGlobal, + const GetNotificationOptions& aFilter, + ErrorResult& aRv); + + void Close(); + + nsPIDOMWindow* GetParentObject() + { + return GetOwner(); + } + + virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE; +protected: + Notification(const nsAString& aID, const nsAString& aTitle, const nsAString& aBody, + NotificationDirection aDir, const nsAString& aLang, + const nsAString& aTag, const nsAString& aIconUrl, + nsPIDOMWindow* aWindow); + + static already_AddRefed CreateInternal(nsPIDOMWindow* aWindow, + const nsAString& aID, + const nsAString& aTitle, + const NotificationOptions& aOptions); + + void ShowInternal(); + void CloseInternal(); + + static NotificationPermission GetPermissionInternal(nsISupports* aGlobal, + ErrorResult& rv); + + static const nsString DirectionToString(NotificationDirection aDirection) + { + switch (aDirection) { + case NotificationDirection::Ltr: + return NS_LITERAL_STRING("ltr"); + case NotificationDirection::Rtl: + return NS_LITERAL_STRING("rtl"); + default: + return NS_LITERAL_STRING("auto"); + } + } + + static const NotificationDirection StringToDirection(const nsAString& aDirection) + { + if (aDirection.EqualsLiteral("ltr")) { + return NotificationDirection::Ltr; + } + if (aDirection.EqualsLiteral("rtl")) { + return NotificationDirection::Rtl; + } + return NotificationDirection::Auto; + } + + static nsresult GetOrigin(nsPIDOMWindow* aWindow, nsString& aOrigin); + + nsresult GetAlertName(nsString& aAlertName); + + nsString mID; + nsString mTitle; + nsString mBody; + NotificationDirection mDir; + nsString mLang; + nsString mTag; + nsString mIconUrl; + + bool mIsClosed; + + static uint32_t sCount; + +private: + nsIPrincipal* GetPrincipal(); +}; + +} // namespace dom +} // namespace mozilla + +#endif // mozilla_dom_notification_h__ +