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