OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MOJO_SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_APP_H_ | 5 #ifndef MOJO_SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_APP_H_ |
6 #define MOJO_SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_APP_H_ | 6 #define MOJO_SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_APP_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "mojo/aura/window_tree_host_mojo_delegate.h" | 11 #include "mojo/aura/window_tree_host_mojo_delegate.h" |
12 #include "mojo/public/cpp/application/application_delegate.h" | 12 #include "mojo/public/cpp/application/application_delegate.h" |
| 13 #include "mojo/public/cpp/bindings/string.h" |
| 14 #include "mojo/services/public/cpp/view_manager/node_observer.h" |
13 #include "mojo/services/public/cpp/view_manager/types.h" | 15 #include "mojo/services/public/cpp/view_manager/types.h" |
14 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" | 16 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" |
| 17 #include "ui/aura/client/focus_change_observer.h" |
| 18 #include "ui/wm/public/activation_change_observer.h" |
15 | 19 |
16 namespace aura { | 20 namespace aura { |
| 21 namespace client { |
| 22 class ActivationClient; |
| 23 class FocusClient; |
| 24 } |
17 class Window; | 25 class Window; |
18 } | 26 } |
19 | 27 |
20 namespace wm { | 28 namespace wm { |
21 class ScopedCaptureClient; | 29 class ScopedCaptureClient; |
22 } | 30 } |
23 | 31 |
24 namespace mojo { | 32 namespace mojo { |
25 | 33 |
26 class AuraInit; | 34 class AuraInit; |
27 class WindowManagerServiceImpl; | 35 class WindowManagerServiceImpl; |
28 class WindowTreeHostMojo; | 36 class WindowTreeHostMojo; |
29 | 37 |
30 class WindowManagerApp : public ApplicationDelegate, | 38 class WindowManagerApp : public ApplicationDelegate, |
31 public view_manager::ViewManagerDelegate, | 39 public view_manager::ViewManagerDelegate, |
32 public WindowTreeHostMojoDelegate { | 40 public view_manager::NodeObserver, |
| 41 public WindowTreeHostMojoDelegate, |
| 42 public aura::client::FocusChangeObserver, |
| 43 public aura::client::ActivationChangeObserver { |
33 public: | 44 public: |
34 WindowManagerApp(); | 45 WindowManagerApp(); |
35 virtual ~WindowManagerApp(); | 46 virtual ~WindowManagerApp(); |
36 | 47 |
37 void AddConnection(WindowManagerServiceImpl* connection); | 48 void AddConnection(WindowManagerServiceImpl* connection); |
38 void RemoveConnection(WindowManagerServiceImpl* connection); | 49 void RemoveConnection(WindowManagerServiceImpl* connection); |
39 | 50 |
40 view_manager::Id OpenWindow(); | 51 view_manager::Id OpenWindow(); |
| 52 view_manager::Id OpenWindowWithURL(const String& url); |
41 void SetCapture(view_manager::Id node); | 53 void SetCapture(view_manager::Id node); |
| 54 void FocusWindow(view_manager::Id node); |
| 55 void ActivateWindow(view_manager::Id node); |
42 | 56 |
43 bool IsReady() const; | 57 bool IsReady() const; |
44 | 58 |
45 private: | 59 private: |
46 typedef std::set<WindowManagerServiceImpl*> Connections; | 60 typedef std::set<WindowManagerServiceImpl*> Connections; |
| 61 typedef std::map<view_manager::Id, aura::Window*> NodeIdToWindowMap; |
47 | 62 |
48 // Overridden from ApplicationDelegate: | 63 // Overridden from ApplicationDelegate: |
49 virtual void Initialize(ApplicationImpl* impl) MOJO_OVERRIDE; | 64 virtual void Initialize(ApplicationImpl* impl) MOJO_OVERRIDE; |
50 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) | 65 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) |
51 MOJO_OVERRIDE; | 66 MOJO_OVERRIDE; |
52 | 67 |
53 // Overridden from view_manager::ViewManagerDelegate: | 68 // Overridden from view_manager::ViewManagerDelegate: |
54 virtual void OnRootAdded(view_manager::ViewManager* view_manager, | 69 virtual void OnRootAdded(view_manager::ViewManager* view_manager, |
55 view_manager::Node* root) MOJO_OVERRIDE; | 70 view_manager::Node* root) MOJO_OVERRIDE; |
56 virtual void OnViewManagerDisconnected( | 71 virtual void OnViewManagerDisconnected( |
57 view_manager::ViewManager* view_manager) MOJO_OVERRIDE; | 72 view_manager::ViewManager* view_manager) MOJO_OVERRIDE; |
58 | 73 |
| 74 // Overridden from view_manager::NodeObserver: |
| 75 virtual void OnTreeChanged( |
| 76 const view_manager::NodeObserver::TreeChangeParams& params) MOJO_OVERRIDE; |
| 77 |
59 // Overridden from WindowTreeHostMojoDelegate: | 78 // Overridden from WindowTreeHostMojoDelegate: |
60 virtual void CompositorContentsChanged(const SkBitmap& bitmap) MOJO_OVERRIDE; | 79 virtual void CompositorContentsChanged(const SkBitmap& bitmap) MOJO_OVERRIDE; |
61 | 80 |
| 81 // Overridden from aura::client::FocusChangeObserver: |
| 82 virtual void OnWindowFocused(aura::Window* gained_focus, |
| 83 aura::Window* lost_focus) MOJO_OVERRIDE; |
| 84 |
| 85 // Overridden from aura::client::ActivationChangeObserver: |
| 86 virtual void OnWindowActivated(aura::Window* gained_active, |
| 87 aura::Window* lost_active) MOJO_OVERRIDE; |
| 88 |
62 aura::Window* GetWindowForNodeId(view_manager::Id node) const; | 89 aura::Window* GetWindowForNodeId(view_manager::Id node) const; |
63 | 90 |
| 91 // Creates an aura::Window for every node in the hierarchy beneath |id|, |
| 92 // and adds to the registry so that it can be retrieved later via |
| 93 // GetWindowForNodeId(). |
| 94 // TODO(beng): perhaps Node should have a property bag. |
| 95 void RegisterSubtree(view_manager::Id id, aura::Window* parent); |
| 96 // Deletes the aura::Windows associated with the hierarchy beneath |id|, |
| 97 // and removes from the registry. |
| 98 void UnregisterSubtree(view_manager::Id id); |
| 99 |
64 view_manager::ViewManager* view_manager_; | 100 view_manager::ViewManager* view_manager_; |
65 view_manager::Node* root_; | 101 view_manager::Node* root_; |
66 | 102 |
67 scoped_ptr<AuraInit> aura_init_; | 103 scoped_ptr<AuraInit> aura_init_; |
68 scoped_ptr<WindowTreeHostMojo> window_tree_host_; | 104 scoped_ptr<WindowTreeHostMojo> window_tree_host_; |
69 | 105 |
70 scoped_ptr<wm::ScopedCaptureClient> capture_client_; | 106 scoped_ptr<wm::ScopedCaptureClient> capture_client_; |
| 107 scoped_ptr<aura::client::FocusClient> focus_client_; |
| 108 aura::client::ActivationClient* activation_client_; |
71 | 109 |
72 Connections connections_; | 110 Connections connections_; |
| 111 NodeIdToWindowMap node_id_to_window_map_; |
73 | 112 |
74 DISALLOW_COPY_AND_ASSIGN(WindowManagerApp); | 113 DISALLOW_COPY_AND_ASSIGN(WindowManagerApp); |
75 }; | 114 }; |
76 | 115 |
77 } // namespace mojo | 116 } // namespace mojo |
78 | 117 |
79 #endif // MOJO_SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_APP_H_ | 118 #endif // MOJO_SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_APP_H_ |
OLD | NEW |