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 class TrayBackgroundView; 18 class TrayEventFilter; 19 20 // Creates and manages the Widget and EventFilter components of a bubble. 21 22 class TrayBubbleWrapper : public views::WidgetObserver { 23 public: 24 TrayBubbleWrapper(TrayBackgroundView* tray, 25 views::TrayBubbleView* bubble_view); 26 virtual ~TrayBubbleWrapper(); 27 28 // views::WidgetObserver overrides: 29 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; 30 virtual void OnWidgetBoundsChanged(views::Widget* widget, 31 const gfx::Rect& new_bounds) OVERRIDE; 32 tray()33 const TrayBackgroundView* tray() const { return tray_; } tray()34 TrayBackgroundView* tray() { return tray_; } bubble_view()35 const views::TrayBubbleView* bubble_view() const { return bubble_view_; } bubble_widget()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 ash 47 48 #endif // ASH_SYSTEM_TRAY_TRAY_BUBBLE_WRAPPER_H_ 49