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 { 17class TrayBackgroundView; 18class TrayEventFilter; 19 20// Creates and manages the Widget and EventFilter components of a bubble. 21 22class 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 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 ash 47 48#endif // ASH_SYSTEM_TRAY_TRAY_BUBBLE_WRAPPER_H_ 49