| Index: chrome/browser/ui/views/message_center/notification_bubble_wrapper_win.h | 
| diff --git a/chrome/browser/ui/views/message_center/notification_bubble_wrapper_win.h b/chrome/browser/ui/views/message_center/notification_bubble_wrapper_win.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..011657bd3b37efbc5d919ac322a872bd1f26990b | 
| --- /dev/null | 
| +++ b/chrome/browser/ui/views/message_center/notification_bubble_wrapper_win.h | 
| @@ -0,0 +1,62 @@ | 
| +// 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_NOTIFICATION_BUBBLE_WRAPPER_WIN_H_ | 
| +#define CHROME_BROWSER_UI_VIEWS_MESSAGE_CENTER_NOTIFICATION_BUBBLE_WRAPPER_WIN_H_ | 
| + | 
| +#include "chrome/browser/ui/views/message_center/web_notification_tray_win.h" | 
| +#include "ui/views/bubble/tray_bubble_view.h" | 
| +#include "ui/views/widget/widget.h" | 
| + | 
| +namespace ui { | 
| + | 
| +namespace internal { | 
| + | 
| +// NotificationBubbleWrapperWin is a class that manages the views associated | 
| +// with a MessageBubbleBase object and that notifies the WebNotificationTrayWin | 
| +// when the widget closes.  Delegates GetAnchorRect to the | 
| +// WebNotificationTrayWin. | 
| +class NotificationBubbleWrapperWin | 
| +    : public views::WidgetObserver, | 
| +      public views::TrayBubbleView::Delegate { | 
| + public: | 
| +  // Takes ownership of |bubble|. | 
| +  NotificationBubbleWrapperWin(WebNotificationTrayWin* tray, | 
| +                               message_center::MessageBubbleBase* bubble, | 
| +                               AnchorType anchor_type); | 
| +  ~NotificationBubbleWrapperWin(); | 
| + | 
| +  // Overridden from views::WidgetObserver. | 
| +  void OnWidgetClosing(views::Widget* widget); | 
| + | 
| +  // TrayBubbleView::Delegate implementation. | 
| +  virtual void BubbleViewDestroyed(); | 
| +  virtual void OnMouseEnteredView(); | 
| +  virtual void OnMouseExitedView(); | 
| +  virtual string16 GetAccessibleNameForBubble(); | 
| +  // GetAnchorRect passes responsibility for BubbleDelegateView::GetAnchorRect | 
| +  // to the delegate. | 
| +  virtual gfx::Rect GetAnchorRect(views::Widget* anchor_widget, | 
| +                                  AnchorType anchor_type, | 
| +                                  AnchorAlignment anchor_alignment); | 
| +  virtual void HideBubble(const views::TrayBubbleView* bubble_view); | 
| + | 
| +  // Convenience accessors. | 
| +  views::TrayBubbleView* bubble_view() const { return bubble_view_; } | 
| +  views::Widget* bubble_widget() const { return bubble_widget_; } | 
| +  message_center::MessageBubbleBase* bubble() const { return bubble_.get(); } | 
| + | 
| + private: | 
| +  scoped_ptr<message_center::MessageBubbleBase> bubble_; | 
| +  // |bubble_view_| is unowned. | 
| +  views::TrayBubbleView* bubble_view_; | 
| +  views::Widget* bubble_widget_; | 
| +  WebNotificationTrayWin* tray_; | 
| +}; | 
| + | 
| +}  // namespace internal | 
| + | 
| +}  // namespace ui | 
| + | 
| +#endif  // CHROME_BROWSER_UI_VIEWS_MESSAGE_CENTER_NOTIFICATION_BUBBLE_WRAPPER_WIN_H_ | 
|  |