Chromium Code Reviews| Index: ui/arc/notification/arc_notification_item.h |
| diff --git a/ui/arc/notification/arc_notification_item.h b/ui/arc/notification/arc_notification_item.h |
| index 555225c2b316be66c546e27aeb844ff5310748e0..0308da7552c56cbc9c957dd64434624fcc04c5c0 100644 |
| --- a/ui/arc/notification/arc_notification_item.h |
| +++ b/ui/arc/notification/arc_notification_item.h |
| @@ -5,104 +5,76 @@ |
| #ifndef UI_ARC_NOTIFICATION_ARC_NOTIFICATION_ITEM_H_ |
| #define UI_ARC_NOTIFICATION_ARC_NOTIFICATION_ITEM_H_ |
| -#include <memory> |
| -#include <string> |
| - |
| #include "base/macros.h" |
| -#include "base/memory/weak_ptr.h" |
| -#include "base/threading/thread_checker.h" |
| #include "components/arc/common/notifications.mojom.h" |
| -#include "components/signin/core/account_id/account_id.h" |
| -#include "third_party/skia/include/core/SkBitmap.h" |
| -#include "ui/arc/notification/arc_notification_manager.h" |
| -#include "ui/message_center/message_center.h" |
| +#include "ui/gfx/image/image_skia.h" |
| namespace arc { |
| -// The class represents each ARC notification. One instance of this class |
| -// corresponds to one ARC notification. |
| class ArcNotificationItem { |
| public: |
| - ArcNotificationItem(ArcNotificationManager* manager, |
| - message_center::MessageCenter* message_center, |
| - const std::string& notification_key, |
| - const AccountId& profile_id); |
| - virtual ~ArcNotificationItem(); |
| - |
| - virtual void UpdateWithArcNotificationData( |
| - mojom::ArcNotificationDataPtr data); |
| - |
| - // Methods called from ArcNotificationManager: |
| - void OnClosedFromAndroid(); |
| - |
| - // Methods called from ArcNotificationItemDelegate: |
| - void Close(bool by_user); |
| - void Click(); |
| - void ButtonClick(int button_index); |
| - void OpenSettings(); |
| - bool IsOpeningSettingsSupported() const; |
| - void ToggleExpansion(); |
| - |
| - const std::string& notification_key() const { return notification_key_; } |
| - |
| - protected: |
| - static int ConvertAndroidPriority( |
| - mojom::ArcNotificationPriority android_priority); |
| - |
| - // Checks whether there is on-going |notification_|. |
| - bool HasPendingNotification(); |
| - // Cache the |data| in |newer_data_|. |
| - void CacheArcNotificationData(mojom::ArcNotificationDataPtr data); |
| - |
| - // Sets the pending |notification_|. |
| - void SetNotification( |
| - std::unique_ptr<message_center::Notification> notification); |
| - |
| - // Add |notification_| to message center and update again if there is |
| - // |newer_data_|. |
| - void AddToMessageCenter(); |
| - |
| - bool CalledOnValidThread() const; |
| - |
| - const AccountId& profile_id() const { return profile_id_; } |
| - const std::string& notification_id() const { return notification_id_; } |
| - message_center::MessageCenter* message_center() { return message_center_; } |
| - ArcNotificationManager* manager() { return manager_; } |
| - |
| - message_center::Notification* pending_notification() { |
| - return notification_.get(); |
| - } |
| - |
| - private: |
| - void OnImageDecoded(const SkBitmap& bitmap); |
| - |
| - ArcNotificationManager* const manager_; |
| - message_center::MessageCenter* const message_center_; |
| - const AccountId profile_id_; |
| - |
| - const std::string notification_key_; |
| - const std::string notification_id_; |
| - |
| - // Stores on-going notification data during the image decoding. |
| - // This field will be removed after removing async task of image decoding. |
| - std::unique_ptr<message_center::Notification> notification_; |
| - |
| - // The flag to indicate that the removing is initiated by the manager and we |
| - // don't need to notify a remove event to the manager. |
| - // This is true only when: |
| - // (1) the notification is being removed |
| - // (2) the removing is initiated by manager |
| - bool being_removed_by_manager_ = false; |
| - |
| - // Stores the latest notification data which is newer than the on-going data. |
| - // If the on-going data is either none or the latest, this is null. |
| - // This field will be removed after removing async task of image decoding. |
| - mojom::ArcNotificationDataPtr newer_data_; |
| - |
| - base::ThreadChecker thread_checker_; |
| - base::WeakPtrFactory<ArcNotificationItem> weak_ptr_factory_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(ArcNotificationItem); |
| + class Observer { |
| + public: |
| + // Invoked when the notification data for this item has changed. |
| + virtual void OnItemDestroying() = 0; |
| + |
| + // Invoked when the notification data for the item is updated. |
| + virtual void OnItemUpdated() = 0; |
| + |
| + protected: |
| + virtual ~Observer() = default; |
| + }; |
| + |
| + virtual ~ArcNotificationItem() = default; |
| + |
| + // Called when the notification is closed on Android-side. This is called from |
| + // ArcNotificationManager. |
| + virtual void OnClosedFromAndroid() = 0; |
| + // Called when the notification is updated on Android-side. This is called |
| + // from ArcNotificationManager. |
| + virtual void OnUpdatedFromAndroid(mojom::ArcNotificationDataPtr data) = 0; |
| + |
| + // Called when the notification is closed on Chrome-side. This is called from |
| + // ArcNotificationDelegate. |
| + virtual void Close(bool by_user) = 0; |
| + // Called when the notification is clicked by user. This is called from |
| + // ArcNotificationDelegate. |
| + virtual void Click() = 0; |
| + |
| + // Called when the user wants to open an intrinsic setting of notification. |
| + // This is called from ArcCustomNotificationView. |
| + virtual void OpenSettings() = 0; |
| + // Called when the user wants to toggle expansio of notification. This is |
| + // called from ArcCustomNotificationView. |
| + virtual void ToggleExpansion() = 0; |
| + // Returns true if this notification has an intrinsic setting which shown |
| + // inside the notification content area. This is called from |
| + // ArcCustomNotificationView. |
| + virtual bool IsOpeningSettingsSupported() const = 0; |
| + |
| + // Add an observer. |
|
hidehiko
2017/05/08 09:34:41
nit: Adds.
yoshiki
2017/05/08 09:51:52
Done.
|
| + virtual void AddObserver(Observer* observer) = 0; |
| + // Remove the observer. |
|
hidehiko
2017/05/08 09:34:41
nit: Removes.
yoshiki
2017/05/08 09:51:52
Done.
|
| + virtual void RemoveObserver(Observer* observer) = 0; |
| + |
| + // Increment |window_ref_count_| and a CreateNotificationWindow request |
| + // is sent when |window_ref_count_| goes from zero to one. |
| + virtual void IncrementWindowRefCount() = 0; |
| + |
| + // Decrement |window_ref_count_| and a CloseNotificationWindow request |
| + // is sent when |window_ref_count_| goes from one to zero. |
| + virtual void DecrementWindowRefCount() = 0; |
| + |
| + // Returns the current pinned state. |
| + virtual bool GetPinned() const = 0; |
| + // Returns the current snapshot. |
| + virtual const gfx::ImageSkia& GetSnapshot() const = 0; |
| + // Returns the current expand state. |
| + virtual mojom::ArcNotificationExpandState GetExpandState() const = 0; |
| + // Returns the current type of shown contents. |
| + virtual mojom::ArcNotificationShownContents GetShownContents() const = 0; |
| + // Returns the notification key passed from Android-side. |
| + virtual const std::string& GetNotificationKey() const = 0; |
| }; |
| } // namespace arc |