Chromium Code Reviews| Index: chrome/browser/ui/views/message_center/web_notification_tray_win.h |
| diff --git a/chrome/browser/ui/views/message_center/web_notification_tray_win.h b/chrome/browser/ui/views/message_center/web_notification_tray_win.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f380e465cfebd2b3aec7d4cf76328036fc58c13b |
| --- /dev/null |
| +++ b/chrome/browser/ui/views/message_center/web_notification_tray_win.h |
| @@ -0,0 +1,93 @@ |
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_UI_VIEWS_MESSAGE_CENTER_WEB_NOTIFICATION_TRAY_WIN_H_ |
| +#define CHROME_BROWSER_UI_VIEWS_MESSAGE_CENTER_WEB_NOTIFICATION_TRAY_WIN_H_ |
| + |
| +#include "chrome/browser/status_icons/status_icon_observer.h" |
| +#include "ui/message_center/message_center_tray.h" |
| +#include "ui/message_center/message_center_tray_delegate.h" |
| +#include "ui/views/bubble/tray_bubble_view.h" |
| + |
| +class StatusIcon; |
| + |
| +namespace message_center { |
| +class MessageCenter; |
| +class MessageCenterBubble; |
| +class MessagePopupBubble; |
| +} |
| + |
| +namespace views { |
| +class Widget; |
| +} |
| + |
| +namespace message_center { |
| + |
| +namespace internal { |
| +class NotificationBubbleWrapperWin; |
| +} |
| + |
| +// A MessageCenterTrayDelegate implementation that exposes the MessageCenterTray |
| +// via a system tray icon. The notification popups will be displayed in the |
| +// corner of the screen and the message center will be displayed by the system |
| +// tray icon on click. |
| +// TODO(dewittj): Quiet mode. |
| +class WebNotificationTrayWin |
| + : public message_center::MessageCenterTrayDelegate, |
| + public StatusIconObserver { |
| + public: |
| + WebNotificationTrayWin(); |
| + virtual ~WebNotificationTrayWin(); |
| + |
| + virtual message_center::MessageCenter* message_center(); |
| + |
| + // MessageCenterTrayDelegate implementation. |
| + virtual bool ShowPopups() OVERRIDE; |
| + virtual void HidePopups() OVERRIDE; |
| + virtual bool ShowMessageCenter() OVERRIDE; |
| + virtual void HideMessageCenter() OVERRIDE; |
| + virtual void UpdateMessageCenter() OVERRIDE; |
| + virtual void UpdatePopups() OVERRIDE; |
| + virtual void OnMessageCenterTrayChanged() OVERRIDE; |
| + |
| + virtual gfx::Rect GetAnchorRect( |
|
miket_OOO
2013/01/25 17:14:48
It's unclear from the comments whether these shoul
dewittj
2013/01/25 19:38:46
Comments updated - they are not actually overrides
|
| + gfx::Size preferred_size, |
| + views::TrayBubbleView::AnchorType anchor_type, |
| + views::TrayBubbleView::AnchorAlignment anchor_alignment); |
| + virtual gfx::NativeView GetBubbleWindowContainer(); |
| + virtual views::TrayBubbleView::AnchorAlignment GetAnchorAlignment(); |
| + |
| + // StatusIconObserver override. |
| + virtual void OnStatusIconClicked() OVERRIDE; |
| + |
| + virtual void HideBubbleWithView( |
| + const views::TrayBubbleView* bubble_view); |
| + |
| + private: |
| + FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayWinTest, WebNotifications); |
| + FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayWinTest, |
| + WebNotificationPopupBubble); |
| + FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayWinTest, |
| + ManyMessageCenterNotifications); |
| + FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayWinTest, ManyPopupNotifications); |
| + |
| + void UpdateAnchorRect(); |
| + message_center::MessagePopupBubble* GetPopupBubbleForTest(); |
| + message_center::MessageCenterBubble* GetMessageCenterBubbleForTest(); |
| + |
| + scoped_ptr<internal::NotificationBubbleWrapperWin> popup_bubble_; |
| + scoped_ptr<internal::NotificationBubbleWrapperWin> message_center_bubble_; |
| + |
| + StatusIcon* status_icon_; |
| + bool message_center_visible_; |
| + scoped_ptr<MessageCenterTray> message_center_tray_; |
| + gfx::Rect message_center_anchor_rect_; |
| + gfx::Rect popup_anchor_rect_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(WebNotificationTrayWin); |
| +}; |
| + |
| +} // namespace message_center |
| + |
| +#endif // CHROME_BROWSER_UI_VIEWS_MESSAGE_CENTER_WEB_NOTIFICATION_TRAY_WIN_H_ |