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 virtual void OnWidgetBoundsChanged(views::Widget* widget, 33 const gfx::Rect& new_bounds) OVERRIDE; 34 35 const TrayBackgroundView* tray() const { return tray_; } 36 TrayBackgroundView* tray() { return tray_; } 37 const views::TrayBubbleView* bubble_view() const { return bubble_view_; } 38 const views::Widget* bubble_widget() const { return bubble_widget_; } 39 40 private: 41 TrayBackgroundView* tray_; 42 views::TrayBubbleView* bubble_view_; // unowned 43 views::Widget* bubble_widget_; 44 45 DISALLOW_COPY_AND_ASSIGN(TrayBubbleWrapper); 46 }; 47 48 } // namespace internal 49 } // namespace ash 50 51 #endif // ASH_SYSTEM_TRAY_TRAY_BUBBLE_WRAPPER_H_ 52