| 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_VIEW_MANAGER_CONNECTION_MANAGER_H_ | 5 #ifndef MOJO_SERVICES_VIEW_MANAGER_CONNECTION_MANAGER_H_ |
| 6 #define MOJO_SERVICES_VIEW_MANAGER_CONNECTION_MANAGER_H_ | 6 #define MOJO_SERVICES_VIEW_MANAGER_CONNECTION_MANAGER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 #include "mojo/services/view_manager/view_manager_export.h" | 21 #include "mojo/services/view_manager/view_manager_export.h" |
| 22 | 22 |
| 23 namespace mojo { | 23 namespace mojo { |
| 24 | 24 |
| 25 class ApplicationConnection; | 25 class ApplicationConnection; |
| 26 | 26 |
| 27 namespace service { | 27 namespace service { |
| 28 | 28 |
| 29 class ConnectionManagerDelegate; | 29 class ConnectionManagerDelegate; |
| 30 class ViewManagerServiceImpl; | 30 class ViewManagerServiceImpl; |
| 31 class WindowManagerInternalClientImpl; |
| 31 | 32 |
| 32 // ConnectionManager manages the set of connections to the ViewManager (all the | 33 // ConnectionManager manages the set of connections to the ViewManager (all the |
| 33 // ViewManagerServiceImpls) as well as providing the root of the hierarchy. | 34 // ViewManagerServiceImpls) as well as providing the root of the hierarchy. |
| 34 class MOJO_VIEW_MANAGER_EXPORT ConnectionManager | 35 class MOJO_VIEW_MANAGER_EXPORT ConnectionManager |
| 35 : public ServerViewDelegate, | 36 : public ServerViewDelegate, |
| 36 public WindowManagerInternalClient, | 37 public WindowManagerInternalClient, |
| 37 public InterfaceFactory<ViewManagerService>, | 38 public InterfaceFactory<ViewManagerService>, |
| 39 public InterfaceFactory<WindowManagerInternalClient>, |
| 38 public ErrorHandler { | 40 public ErrorHandler { |
| 39 public: | 41 public: |
| 40 // Create when a ViewManagerServiceImpl is about to make a change. Ensures | 42 // Create when a ViewManagerServiceImpl is about to make a change. Ensures |
| 41 // clients are notified correctly. | 43 // clients are notified correctly. |
| 42 class ScopedChange { | 44 class ScopedChange { |
| 43 public: | 45 public: |
| 44 ScopedChange(ViewManagerServiceImpl* connection, | 46 ScopedChange(ViewManagerServiceImpl* connection, |
| 45 ConnectionManager* connection_manager, | 47 ConnectionManager* connection_manager, |
| 46 bool is_delete_view); | 48 bool is_delete_view); |
| 47 ~ScopedChange(); | 49 ~ScopedChange(); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 // Returns true if OnConnectionMessagedClient() was invoked for id. | 110 // Returns true if OnConnectionMessagedClient() was invoked for id. |
| 109 bool DidConnectionMessageClient(ConnectionSpecificId id) const; | 111 bool DidConnectionMessageClient(ConnectionSpecificId id) const; |
| 110 | 112 |
| 111 // Returns the ViewManagerServiceImpl that has |id| as a root. | 113 // Returns the ViewManagerServiceImpl that has |id| as a root. |
| 112 ViewManagerServiceImpl* GetConnectionWithRoot(const ViewId& id) { | 114 ViewManagerServiceImpl* GetConnectionWithRoot(const ViewId& id) { |
| 113 return const_cast<ViewManagerServiceImpl*>( | 115 return const_cast<ViewManagerServiceImpl*>( |
| 114 const_cast<const ConnectionManager*>(this)->GetConnectionWithRoot(id)); | 116 const_cast<const ConnectionManager*>(this)->GetConnectionWithRoot(id)); |
| 115 } | 117 } |
| 116 const ViewManagerServiceImpl* GetConnectionWithRoot(const ViewId& id) const; | 118 const ViewManagerServiceImpl* GetConnectionWithRoot(const ViewId& id) const; |
| 117 | 119 |
| 118 void DispatchViewInputEventToDelegate(EventPtr event); | |
| 119 | |
| 120 // These functions trivially delegate to all ViewManagerServiceImpls, which in | 120 // These functions trivially delegate to all ViewManagerServiceImpls, which in |
| 121 // term notify their clients. | 121 // term notify their clients. |
| 122 void ProcessViewDestroyed(ServerView* view); | 122 void ProcessViewDestroyed(ServerView* view); |
| 123 void ProcessViewBoundsChanged(const ServerView* view, | 123 void ProcessViewBoundsChanged(const ServerView* view, |
| 124 const gfx::Rect& old_bounds, | 124 const gfx::Rect& old_bounds, |
| 125 const gfx::Rect& new_bounds); | 125 const gfx::Rect& new_bounds); |
| 126 void ProcessWillChangeViewHierarchy(const ServerView* view, | 126 void ProcessWillChangeViewHierarchy(const ServerView* view, |
| 127 const ServerView* new_parent, | 127 const ServerView* new_parent, |
| 128 const ServerView* old_parent); | 128 const ServerView* old_parent); |
| 129 void ProcessViewHierarchyChanged(const ServerView* view, | 129 void ProcessViewHierarchyChanged(const ServerView* view, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 const std::vector<uint8_t>* new_data) override; | 177 const std::vector<uint8_t>* new_data) override; |
| 178 | 178 |
| 179 // WindowManagerInternalClient: | 179 // WindowManagerInternalClient: |
| 180 virtual void DispatchInputEventToView(Id transport_view_id, | 180 virtual void DispatchInputEventToView(Id transport_view_id, |
| 181 EventPtr event) override; | 181 EventPtr event) override; |
| 182 | 182 |
| 183 // InterfaceFactory<ViewManagerService>: | 183 // InterfaceFactory<ViewManagerService>: |
| 184 virtual void Create(ApplicationConnection* connection, | 184 virtual void Create(ApplicationConnection* connection, |
| 185 InterfaceRequest<ViewManagerService> request) override; | 185 InterfaceRequest<ViewManagerService> request) override; |
| 186 | 186 |
| 187 // InterfaceFactory<WindowManagerInternalClient>: |
| 188 virtual void Create( |
| 189 ApplicationConnection* connection, |
| 190 InterfaceRequest<WindowManagerInternalClient> request) override; |
| 191 |
| 187 // ErrorHandler: | 192 // ErrorHandler: |
| 188 void OnConnectionError() override; | 193 void OnConnectionError() override; |
| 189 | 194 |
| 190 ApplicationConnection* app_connection_; | 195 ApplicationConnection* app_connection_; |
| 191 | 196 |
| 192 ConnectionManagerDelegate* delegate_; | 197 ConnectionManagerDelegate* delegate_; |
| 193 | 198 |
| 194 // The ViewManager implementation provided to the initial connection (the | 199 // The ViewManager implementation provided to the initial connection (the |
| 195 // WindowManager). | 200 // WindowManager). |
| 196 // NOTE: |window_manager_vm_service_| is also in |connection_map_|. | 201 // NOTE: |window_manager_vm_service_| is also in |connection_map_|. |
| 197 ViewManagerServiceImpl* window_manager_vm_service_; | 202 ViewManagerServiceImpl* window_manager_vm_service_; |
| 198 | 203 |
| 199 WindowManagerInternalServicePtr window_manager_; | |
| 200 | |
| 201 // ID to use for next ViewManagerServiceImpl. | 204 // ID to use for next ViewManagerServiceImpl. |
| 202 ConnectionSpecificId next_connection_id_; | 205 ConnectionSpecificId next_connection_id_; |
| 203 | 206 |
| 204 // Set of ViewManagerServiceImpls. | 207 // Set of ViewManagerServiceImpls. |
| 205 ConnectionMap connection_map_; | 208 ConnectionMap connection_map_; |
| 206 | 209 |
| 207 DisplayManager display_manager_; | 210 DisplayManager display_manager_; |
| 208 | 211 |
| 209 scoped_ptr<ServerView> root_; | 212 scoped_ptr<ServerView> root_; |
| 210 | 213 |
| 214 scoped_ptr<WindowManagerInternalClientImpl> wm_internal_client_impl_; |
| 215 |
| 211 // If non-null we're processing a change. The ScopedChange is not owned by us | 216 // If non-null we're processing a change. The ScopedChange is not owned by us |
| 212 // (it's created on the stack by ViewManagerServiceImpl). | 217 // (it's created on the stack by ViewManagerServiceImpl). |
| 213 ScopedChange* current_change_; | 218 ScopedChange* current_change_; |
| 214 | 219 |
| 215 bool in_destructor_; | 220 bool in_destructor_; |
| 216 | 221 |
| 217 DISALLOW_COPY_AND_ASSIGN(ConnectionManager); | 222 DISALLOW_COPY_AND_ASSIGN(ConnectionManager); |
| 218 }; | 223 }; |
| 219 | 224 |
| 220 } // namespace service | 225 } // namespace service |
| 221 } // namespace mojo | 226 } // namespace mojo |
| 222 | 227 |
| 223 #endif // MOJO_SERVICES_VIEW_MANAGER_CONNECTION_MANAGER_H_ | 228 #endif // MOJO_SERVICES_VIEW_MANAGER_CONNECTION_MANAGER_H_ |
| OLD | NEW |