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