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
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 internal
47}  // namespace ash
48
49#endif  // ASH_SYSTEM_TRAY_TRAY_BUBBLE_WRAPPER_H_
50