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..b0d363df8de1249ecc73ae664ad2e951ec4cd34b 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; |
+ |
+ // Adds an observer. |
+ virtual void AddObserver(Observer* observer) = 0; |
+ // Removes the observer. |
+ virtual void RemoveObserver(Observer* observer) = 0; |
+ |
+ // Increments |window_ref_count_| and a CreateNotificationWindow request |
+ // is sent when |window_ref_count_| goes from zero to one. |
+ virtual void IncrementWindowRefCount() = 0; |
+ |
+ // Decrements |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 |