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 12namespace views { 13class TrayBubbleView; 14} 15 16namespace ash { 17namespace internal { 18 19class TrayBackgroundView; 20class TrayEventFilter; 21 22// Creates and manages the Widget and EventFilter components of a bubble. 23 24class 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