| 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 COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_ | 5 #ifndef COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_ |
| 6 #define COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_ | 6 #define COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| 11 #include <set> | 11 #include <set> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
| 16 #include "base/timer/timer.h" | 16 #include "base/timer/timer.h" |
| 17 #include "components/mus/public/interfaces/display.mojom.h" | |
| 18 #include "components/mus/public/interfaces/window_tree.mojom.h" | 17 #include "components/mus/public/interfaces/window_tree.mojom.h" |
| 19 #include "components/mus/public/interfaces/window_tree_host.mojom.h" | 18 #include "components/mus/public/interfaces/window_tree_host.mojom.h" |
| 20 #include "components/mus/surfaces/surfaces_state.h" | 19 #include "components/mus/surfaces/surfaces_state.h" |
| 21 #include "components/mus/ws/ids.h" | 20 #include "components/mus/ws/ids.h" |
| 22 #include "components/mus/ws/operation.h" | 21 #include "components/mus/ws/operation.h" |
| 23 #include "components/mus/ws/server_window_delegate.h" | 22 #include "components/mus/ws/server_window_delegate.h" |
| 24 #include "components/mus/ws/server_window_observer.h" | 23 #include "components/mus/ws/server_window_observer.h" |
| 25 #include "components/mus/ws/window_tree_host_impl.h" | 24 #include "components/mus/ws/window_tree_host_impl.h" |
| 26 #include "mojo/common/weak_binding_set.h" | |
| 27 #include "mojo/common/weak_interface_ptr_set.h" | |
| 28 #include "mojo/converters/surfaces/custom_surface_converter.h" | 25 #include "mojo/converters/surfaces/custom_surface_converter.h" |
| 29 #include "mojo/public/cpp/bindings/array.h" | 26 #include "mojo/public/cpp/bindings/array.h" |
| 30 #include "mojo/public/cpp/bindings/binding.h" | 27 #include "mojo/public/cpp/bindings/binding.h" |
| 31 | 28 |
| 32 namespace mus { | 29 namespace mus { |
| 33 namespace ws { | 30 namespace ws { |
| 34 | 31 |
| 35 class ClientConnection; | 32 class ClientConnection; |
| 36 class ConnectionManagerDelegate; | 33 class ConnectionManagerDelegate; |
| 37 class ServerWindow; | 34 class ServerWindow; |
| 38 class WindowTreeHostConnection; | 35 class WindowTreeHostConnection; |
| 39 class WindowTreeImpl; | 36 class WindowTreeImpl; |
| 40 | 37 |
| 41 // ConnectionManager manages the set of connections to the window server (all | 38 // ConnectionManager manages the set of connections to the window server (all |
| 42 // the WindowTreeImpls) as well as providing the root of the hierarchy. | 39 // the WindowTreeImpls) as well as providing the root of the hierarchy. |
| 43 // | |
| 44 // TODO(sky): this class is doing too much. Refactor to make responsibilities | |
| 45 // clearer. | |
| 46 class ConnectionManager : public ServerWindowDelegate, | 40 class ConnectionManager : public ServerWindowDelegate, |
| 47 public ServerWindowObserver, | 41 public ServerWindowObserver { |
| 48 public mojom::DisplayManager { | |
| 49 public: | 42 public: |
| 50 ConnectionManager(ConnectionManagerDelegate* delegate, | 43 ConnectionManager(ConnectionManagerDelegate* delegate, |
| 51 const scoped_refptr<mus::SurfacesState>& surfaces_state); | 44 const scoped_refptr<mus::SurfacesState>& surfaces_state); |
| 52 ~ConnectionManager() override; | 45 ~ConnectionManager() override; |
| 53 | 46 |
| 54 // Adds a WindowTreeHost. | 47 // Adds a WindowTreeHost. |
| 55 void AddHost(WindowTreeHostConnection* connection); | 48 void AddHost(WindowTreeHostConnection* connection); |
| 56 | 49 |
| 57 // Creates a new ServerWindow. The return value is owned by the caller, but | 50 // Creates a new ServerWindow. The return value is owned by the caller, but |
| 58 // must be destroyed before ConnectionManager. | 51 // must be destroyed before ConnectionManager. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 WindowTreeHostImpl* GetWindowTreeHostByWindow(const ServerWindow* window); | 118 WindowTreeHostImpl* GetWindowTreeHostByWindow(const ServerWindow* window); |
| 126 const WindowTreeHostImpl* GetWindowTreeHostByWindow( | 119 const WindowTreeHostImpl* GetWindowTreeHostByWindow( |
| 127 const ServerWindow* window) const; | 120 const ServerWindow* window) const; |
| 128 | 121 |
| 129 WindowTreeHostImpl* GetActiveWindowTreeHost(); | 122 WindowTreeHostImpl* GetActiveWindowTreeHost(); |
| 130 | 123 |
| 131 bool has_tree_host_connections() const { | 124 bool has_tree_host_connections() const { |
| 132 return !host_connection_map_.empty(); | 125 return !host_connection_map_.empty(); |
| 133 } | 126 } |
| 134 | 127 |
| 135 void AddDisplayManagerBinding( | |
| 136 mojo::InterfaceRequest<mojom::DisplayManager> request); | |
| 137 | |
| 138 // Returns a change id for the window manager that is associated with | 128 // Returns a change id for the window manager that is associated with |
| 139 // |source| and |client_change_id|. When the window manager replies | 129 // |source| and |client_change_id|. When the window manager replies |
| 140 // WindowManagerChangeCompleted() is called to obtain the original source | 130 // WindowManagerChangeCompleted() is called to obtain the original source |
| 141 // and client supplied change_id that initiated the called. | 131 // and client supplied change_id that initiated the called. |
| 142 uint32_t GenerateWindowManagerChangeId(WindowTreeImpl* source, | 132 uint32_t GenerateWindowManagerChangeId(WindowTreeImpl* source, |
| 143 uint32_t client_change_id); | 133 uint32_t client_change_id); |
| 144 | 134 |
| 145 // Called when a response from the window manager is obtained. Calls to | 135 // Called when a response from the window manager is obtained. Calls to |
| 146 // the client that initiated the change with the change id originally | 136 // the client that initiated the change with the change id originally |
| 147 // supplied by the client. | 137 // supplied by the client. |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 const std::vector<uint8_t>* new_data) override; | 247 const std::vector<uint8_t>* new_data) override; |
| 258 void OnWindowPredefinedCursorChanged(ServerWindow* window, | 248 void OnWindowPredefinedCursorChanged(ServerWindow* window, |
| 259 int32_t cursor_id) override; | 249 int32_t cursor_id) override; |
| 260 void OnWindowTextInputStateChanged(ServerWindow* window, | 250 void OnWindowTextInputStateChanged(ServerWindow* window, |
| 261 const ui::TextInputState& state) override; | 251 const ui::TextInputState& state) override; |
| 262 void OnTransientWindowAdded(ServerWindow* window, | 252 void OnTransientWindowAdded(ServerWindow* window, |
| 263 ServerWindow* transient_child) override; | 253 ServerWindow* transient_child) override; |
| 264 void OnTransientWindowRemoved(ServerWindow* window, | 254 void OnTransientWindowRemoved(ServerWindow* window, |
| 265 ServerWindow* transient_child) override; | 255 ServerWindow* transient_child) override; |
| 266 | 256 |
| 267 // Overriden from mojom::DisplayManager: | |
| 268 void AddObserver(mojom::DisplayManagerObserverPtr observer) override; | |
| 269 | |
| 270 ConnectionManagerDelegate* delegate_; | 257 ConnectionManagerDelegate* delegate_; |
| 271 | 258 |
| 272 // State for rendering into a Surface. | 259 // State for rendering into a Surface. |
| 273 scoped_refptr<mus::SurfacesState> surfaces_state_; | 260 scoped_refptr<mus::SurfacesState> surfaces_state_; |
| 274 | 261 |
| 275 // ID to use for next WindowTreeImpl. | 262 // ID to use for next WindowTreeImpl. |
| 276 ConnectionSpecificId next_connection_id_; | 263 ConnectionSpecificId next_connection_id_; |
| 277 | 264 |
| 278 // ID to use for next WindowTreeHostImpl. | 265 // ID to use for next WindowTreeHostImpl. |
| 279 uint16_t next_host_id_; | 266 uint16_t next_host_id_; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 290 | 277 |
| 291 bool in_destructor_; | 278 bool in_destructor_; |
| 292 | 279 |
| 293 // Maps from window manager change id to the client that initiated the | 280 // Maps from window manager change id to the client that initiated the |
| 294 // request. | 281 // request. |
| 295 InFlightWindowManagerChangeMap in_flight_wm_change_map_; | 282 InFlightWindowManagerChangeMap in_flight_wm_change_map_; |
| 296 | 283 |
| 297 // Next id supplied to the window manager. | 284 // Next id supplied to the window manager. |
| 298 uint32_t next_wm_change_id_; | 285 uint32_t next_wm_change_id_; |
| 299 | 286 |
| 300 mojo::WeakBindingSet<mojom::DisplayManager> display_manager_bindings_; | |
| 301 mojo::WeakInterfacePtrSet<mojom::DisplayManagerObserver> | |
| 302 display_manager_observers_; | |
| 303 | |
| 304 DISALLOW_COPY_AND_ASSIGN(ConnectionManager); | 287 DISALLOW_COPY_AND_ASSIGN(ConnectionManager); |
| 305 }; | 288 }; |
| 306 | 289 |
| 307 } // namespace ws | 290 } // namespace ws |
| 308 } // namespace mus | 291 } // namespace mus |
| 309 | 292 |
| 310 #endif // COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_ | 293 #endif // COMPONENTS_MUS_WS_CONNECTION_MANAGER_H_ |
| OLD | NEW |