1// Copyright 2014 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 MOJO_VIEWS_NATIVE_WIDGET_VIEW_MANAGER_H_
6#define MOJO_VIEWS_NATIVE_WIDGET_VIEW_MANAGER_H_
7
8#include "mojo/aura/window_tree_host_mojo_delegate.h"
9#include "mojo/services/public/cpp/view_manager/view_observer.h"
10#include "ui/views/widget/native_widget_aura.h"
11
12namespace aura {
13namespace client {
14class DefaultCaptureClient;
15}
16}
17
18namespace ui {
19namespace internal {
20class InputMethodDelegate;
21}
22}
23
24namespace wm {
25class FocusController;
26}
27
28namespace mojo {
29
30class WindowTreeHostMojo;
31
32class NativeWidgetViewManager : public views::NativeWidgetAura,
33                                public WindowTreeHostMojoDelegate,
34                                public ViewObserver {
35 public:
36  NativeWidgetViewManager(views::internal::NativeWidgetDelegate* delegate,
37                          View* view);
38  virtual ~NativeWidgetViewManager();
39
40 private:
41  // Overridden from internal::NativeWidgetAura:
42  virtual void InitNativeWidget(
43      const views::Widget::InitParams& in_params) OVERRIDE;
44
45  // WindowTreeHostMojoDelegate:
46  virtual void CompositorContentsChanged(const SkBitmap& bitmap) OVERRIDE;
47
48  // ViewObserver:
49  virtual void OnViewDestroyed(View* view) OVERRIDE;
50  virtual void OnViewBoundsChanged(View* view,
51                                   const gfx::Rect& old_bounds,
52                                   const gfx::Rect& new_bounds) OVERRIDE;
53  virtual void OnViewInputEvent(View* view, const EventPtr& event) OVERRIDE;
54
55  scoped_ptr<WindowTreeHostMojo> window_tree_host_;
56
57  scoped_ptr<wm::FocusController> focus_client_;
58
59  scoped_ptr<ui::internal::InputMethodDelegate> ime_filter_;
60
61  View* view_;
62
63  scoped_ptr<aura::client::DefaultCaptureClient> capture_client_;
64
65  DISALLOW_COPY_AND_ASSIGN(NativeWidgetViewManager);
66};
67
68}  // namespace mojo
69
70#endif  // MOJO_VIEWS_NATIVE_WIDGET_VIEW_MANAGER_H_
71