1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef ASH_SYSTEM_TRAY_TRAY_BUBBLE_WRAPPER_H_ 6 #define ASH_SYSTEM_TRAY_TRAY_BUBBLE_WRAPPER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "ui/views/widget/widget_observer.h" 11 12 namespace views { 13 class TrayBubbleView; 14 } 15 16 namespace ash { 17 namespace internal { 18 19 class TrayBackgroundView; 20 class TrayEventFilter; 21 22 // Creates and manages the Widget and EventFilter components of a bubble. 23 24 class TrayBubbleWrapper : public views::WidgetObserver { 25 public: 26 TrayBubbleWrapper(TrayBackgroundView* tray, 27 views::TrayBubbleView* bubble_view); 28 virtual ~TrayBubbleWrapper(); 29 30 // views::WidgetObserver overrides: 31 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; 32 33 const TrayBackgroundView* tray() const { return tray_; } 34 TrayBackgroundView* tray() { return tray_; } 35 const views::TrayBubbleView* bubble_view() const { return bubble_view_; } 36 const views::Widget* bubble_widget() const { return bubble_widget_; } 37 38 private: 39 TrayBackgroundView* tray_; 40 views::TrayBubbleView* bubble_view_; // unowned 41 views::Widget* bubble_widget_; 42 43 DISALLOW_COPY_AND_ASSIGN(TrayBubbleWrapper); 44 }; 45 46 } // namespace internal 47 } // namespace ash 48 49 #endif // ASH_SYSTEM_TRAY_TRAY_BUBBLE_WRAPPER_H_ 50