Chromium Code Reviews| Index: ash/system/web_notification/web_notification_tray.h |
| diff --git a/ash/system/web_notification/web_notification_tray.h b/ash/system/web_notification/web_notification_tray.h |
| index 0ecd334726bdbee3245912f55df022d8098c39d7..3634f7e6bb249eab56227c6143d168e2db8173f9 100644 |
| --- a/ash/system/web_notification/web_notification_tray.h |
| +++ b/ash/system/web_notification/web_notification_tray.h |
| @@ -7,10 +7,12 @@ |
| #include "ash/ash_export.h" |
| #include "ash/system/tray/tray_background_view.h" |
| -#include "ash/system/tray/tray_views.h" |
| #include "ash/system/user/login_status.h" |
| #include "base/gtest_prod_util.h" |
| -#include "ui/message_center/message_center.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "ui/message_center/message_center_tray.h" |
| +#include "ui/message_center/message_center_tray_host.h" |
| +#include "ui/views/bubble/tray_bubble_view.h" |
| #include "ui/views/widget/widget_observer.h" |
| // Status area tray for showing browser and app notifications. This hosts |
| @@ -21,46 +23,45 @@ |
| // generated by SystemTrayItem). Visibility of one notification type or other |
| // is controlled by StatusAreaWidget. |
| -namespace aura { |
| -class LocatedEvent; |
| -} |
| - |
| -namespace gfx { |
| -class ImageSkia; |
| -} |
| - |
| -namespace views { |
| -class ImageButton; |
| -class TrayBubbleView; |
| -class Widget; |
| -} |
| - |
| namespace message_center { |
| -class MessageCenterBubble; |
| -class MessagePopupBubble; |
| -class QuietModeBubble; |
| +class MessageCenter; |
| } |
| +FORWARD_DECLARE_TEST(WebNotificationTrayTest, |
| + ManyMessageCenterNotifications); |
| + |
| namespace ash { |
| namespace internal { |
| class StatusAreaWidget; |
| -class WebNotificationBubbleWrapper; |
| } |
| class ASH_EXPORT WebNotificationTray |
| : public internal::TrayBackgroundView, |
| - public views::TrayBubbleView::Delegate, |
| - public message_center::MessageCenter::Observer, |
| + public ui::MessageCenterTrayHost, |
| public views::ButtonListener, |
| public views::WidgetObserver { |
| public: |
| - explicit WebNotificationTray(internal::StatusAreaWidget* status_area_widget); |
| + explicit WebNotificationTray( |
| + internal::StatusAreaWidget* status_area_widget); |
| virtual ~WebNotificationTray(); |
| + virtual bool CanShowMessageCenter(); |
| + |
| + // MessageCenterTrayHost implementation part one. |
| + virtual message_center::MessageCenter* message_center() OVERRIDE; |
| + virtual void OnShowMessageCenterBubble() OVERRIDE; |
| + virtual void OnHideMessageCenterBubble() OVERRIDE; |
| + |
| // Set whether or not the popup notifications should be hidden. |
| void SetHidePopupBubble(bool hide); |
| + // MessageCenterTrayHost implementation part two. |
| + virtual bool CanShowPopups() OVERRIDE; |
| + |
| + // Displays the quiet mode bubble and adds |this| as an observer. |
|
Pete Williamson
2013/01/16 19:43:20
The comment makes it sound like the function does
dewittj
2013/01/16 22:30:40
This isn't a functionality change, just updated co
|
| + void ShowQuietModeBubble(); |
| + |
| // Updates tray visibility login status of the system changes. |
| void UpdateAfterLoginStatusChange(user::LoginStatus login_status); |
| @@ -73,96 +74,57 @@ class ASH_EXPORT WebNotificationTray |
| // Returns true if the mouse is inside the notification bubble. |
| bool IsMouseInNotificationBubble() const; |
| - message_center::MessageCenter* message_center() { |
| - return message_center_; |
| - } |
| - |
| // Overridden from TrayBackgroundView. |
| virtual void SetShelfAlignment(ShelfAlignment alignment) OVERRIDE; |
| virtual void AnchorUpdated() OVERRIDE; |
| virtual string16 GetAccessibleNameForTray() OVERRIDE; |
| virtual void HideBubbleWithView( |
| const views::TrayBubbleView* bubble_view) OVERRIDE; |
| - virtual bool ClickedOutsideBubble() OVERRIDE; |
| // Overridden from internal::ActionableView. |
| virtual bool PerformAction(const ui::Event& event) OVERRIDE; |
| - // Overridden from views::TrayBubbleView::Delegate. |
| - virtual void BubbleViewDestroyed() OVERRIDE; |
| - virtual void OnMouseEnteredView() OVERRIDE; |
| - virtual void OnMouseExitedView() OVERRIDE; |
| + // MessageCenterTrayHost implementation part three. |
| virtual string16 GetAccessibleNameForBubble() OVERRIDE; |
| - virtual gfx::Rect GetAnchorRect(views::Widget* anchor_widget, |
| - AnchorType anchor_type, |
| - AnchorAlignment anchor_alignment) OVERRIDE; |
| - virtual void HideBubble(const views::TrayBubbleView* bubble_view) OVERRIDE; |
| - |
| - // Overridden from message_center::MessageCenter::Observer. |
| - virtual void OnMessageCenterChanged(bool new_notification) OVERRIDE; |
| + virtual gfx::Rect GetAnchorRect( |
| + views::Widget* anchor_widget, |
| + views::TrayBubbleView::AnchorType anchor_type, |
| + views::TrayBubbleView::AnchorAlignment anchor_alignment) OVERRIDE; |
| - // Overridden from ButtonListener. |
| + // Overridden from views::ButtonListener. |
| virtual void ButtonPressed(views::Button* sender, |
| const ui::Event& event) OVERRIDE; |
| - // Overridden from WidgetObserver. |
| + // Overridden from views::WidgetObserver. |
| virtual void OnWidgetClosing(views::Widget* widget) OVERRIDE; |
| - private: |
| - FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayTest, WebNotifications); |
| - FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayTest, WebNotificationPopupBubble); |
| - FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayTest, |
| - ManyMessageCenterNotifications); |
| - FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayTest, ManyPopupNotifications); |
| + // MessageCenterTrayHost implementation part four. |
| + virtual gfx::NativeView GetBubbleWindowContainer() OVERRIDE; |
| + virtual views::View* GetAnchorView() OVERRIDE; |
| + virtual views::TrayBubbleView::AnchorAlignment GetAnchorAlignment() OVERRIDE; |
| + virtual void UpdateInitParams( |
| + views::TrayBubbleView::InitParams* init_params) OVERRIDE; |
| + virtual void OnMessageCenterTrayChanged() OVERRIDE; |
| - // Shows or hides the message center bubble. |
| - void ToggleMessageCenterBubble(); |
| - |
| - // Shows or updates the message center bubble and hides the popup bubble. |
| - void ShowMessageCenterBubble(); |
| - |
| - // Hides the message center bubble if visible. |
| - void HideMessageCenterBubble(); |
| - |
| - // Shows or updates the popup notification bubble if appropriate. |
| - void ShowPopupBubble(); |
| - |
| - // Hides the notification bubble if visible. |
| - void HidePopupBubble(); |
| - |
| - // Returns true if it should show the quiet mode bubble. |
| - bool ShouldShowQuietModeBubble(const ui::Event& event); |
| - |
| - // Shows the quiet mode bubble. |
| - void ShowQuietModeBubble(); |
| - |
| - // Updates the tray icon and visibility. |
| - void UpdateTray(); |
| - |
| - internal::WebNotificationBubbleWrapper* message_center_bubble() const { |
| - return message_center_bubble_.get(); |
| - } |
| + // Overridden from TrayBackgroundView. |
| + virtual bool ClickedOutsideBubble() OVERRIDE; |
| - internal::WebNotificationBubbleWrapper* popup_bubble() const { |
| - return popup_bubble_.get(); |
| - } |
| + // Tells the tray to show the MessageCenter bubble. |
| + void ShowMessageCenter(); |
| - message_center::QuietModeBubble* quiet_mode_bubble() const { |
| - return quiet_mode_bubble_.get(); |
| - } |
| + bool IsPopupVisible() const; |
| - // Testing accessors. |
| - message_center::MessageCenterBubble* GetMessageCenterBubbleForTest(); |
| - message_center::MessagePopupBubble* GetPopupBubbleForTest(); |
| + private: |
| + FRIEND_TEST_ALL_PREFIXES(::WebNotificationTrayTest, |
| + ManyMessageCenterNotifications); |
| + views::ImageButton* button_; |
| - message_center::MessageCenter* message_center_; |
| - scoped_ptr<internal::WebNotificationBubbleWrapper> message_center_bubble_; |
| - scoped_ptr<internal::WebNotificationBubbleWrapper> popup_bubble_; |
| scoped_ptr<message_center::QuietModeBubble> quiet_mode_bubble_; |
| - views::ImageButton* button_; |
| + scoped_ptr<ui::MessageCenterTray> message_center_tray_; |
| + |
| bool show_message_center_on_unlock_; |
| + bool message_center_visible_; |
| - DISALLOW_COPY_AND_ASSIGN(WebNotificationTray); |
| }; |
| } // namespace ash |