Index: components/mus/ws/connection_manager.h |
diff --git a/components/mus/ws/connection_manager.h b/components/mus/ws/connection_manager.h |
index 79210b5548038457892405dc2346e7033c5f9546..922ac5f637abb18bdb8a95484100cd967c6bee88 100644 |
--- a/components/mus/ws/connection_manager.h |
+++ b/components/mus/ws/connection_manager.h |
@@ -14,6 +14,7 @@ |
#include "base/macros.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/timer/timer.h" |
+#include "components/mus/public/interfaces/display.mojom.h" |
#include "components/mus/public/interfaces/window_tree.mojom.h" |
#include "components/mus/public/interfaces/window_tree_host.mojom.h" |
#include "components/mus/surfaces/surfaces_state.h" |
@@ -22,6 +23,8 @@ |
#include "components/mus/ws/server_window_delegate.h" |
#include "components/mus/ws/server_window_observer.h" |
#include "components/mus/ws/window_tree_host_impl.h" |
+#include "mojo/common/weak_binding_set.h" |
+#include "mojo/common/weak_interface_ptr_set.h" |
#include "mojo/converters/surfaces/custom_surface_converter.h" |
#include "mojo/public/cpp/bindings/array.h" |
#include "mojo/public/cpp/bindings/binding.h" |
@@ -37,8 +40,12 @@ class WindowTreeImpl; |
// ConnectionManager manages the set of connections to the window server (all |
// the WindowTreeImpls) as well as providing the root of the hierarchy. |
+// |
+// TODO(sky): this class is doing too much. Refactor to make responsibilities |
+// clearer. |
class ConnectionManager : public ServerWindowDelegate, |
- public ServerWindowObserver { |
+ public ServerWindowObserver, |
+ public mojom::DisplayManager { |
public: |
ConnectionManager(ConnectionManagerDelegate* delegate, |
const scoped_refptr<mus::SurfacesState>& surfaces_state); |
@@ -125,6 +132,9 @@ class ConnectionManager : public ServerWindowDelegate, |
return !host_connection_map_.empty(); |
} |
+ void AddDisplayManagerBinding( |
+ mojo::InterfaceRequest<mojom::DisplayManager> request); |
+ |
// Returns a change id for the window manager that is associated with |
// |source| and |client_change_id|. When the window manager replies |
// WindowManagerChangeCompleted() is called to obtain the original source |
@@ -254,6 +264,9 @@ class ConnectionManager : public ServerWindowDelegate, |
void OnTransientWindowRemoved(ServerWindow* window, |
ServerWindow* transient_child) override; |
+ // Overriden from mojom::DisplayManager: |
+ void AddObserver(mojom::DisplayManagerObserverPtr observer) override; |
+ |
ConnectionManagerDelegate* delegate_; |
// State for rendering into a Surface. |
@@ -284,6 +297,10 @@ class ConnectionManager : public ServerWindowDelegate, |
// Next id supplied to the window manager. |
uint32_t next_wm_change_id_; |
+ mojo::WeakBindingSet<mojom::DisplayManager> display_manager_bindings_; |
+ mojo::WeakInterfacePtrSet<mojom::DisplayManagerObserver> |
+ display_manager_observers_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ConnectionManager); |
}; |