Index: components/view_manager/connection_manager.h |
diff --git a/components/view_manager/connection_manager.h b/components/view_manager/connection_manager.h |
index 2cfc37980b84113070c31f6bfc30d5c7b918d0e5..e2c99c6a60cf6edffd945a0782ae0544ac83ced5 100644 |
--- a/components/view_manager/connection_manager.h |
+++ b/components/view_manager/connection_manager.h |
@@ -11,6 +11,8 @@ |
#include "base/basictypes.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/timer/timer.h" |
+#include "cc/surfaces/surface_factory.h" |
+#include "cc/surfaces/surface_factory_client.h" |
#include "components/view_manager/animation_runner.h" |
#include "components/view_manager/event_dispatcher.h" |
#include "components/view_manager/focus_controller_delegate.h" |
@@ -19,6 +21,7 @@ |
#include "components/view_manager/public/interfaces/view_manager_root.mojom.h" |
#include "components/view_manager/server_view_delegate.h" |
#include "components/view_manager/server_view_observer.h" |
+#include "components/view_manager/surfaces/surfaces_state.h" |
#include "components/view_manager/view_manager_root_impl.h" |
#include "third_party/mojo/src/mojo/public/cpp/bindings/array.h" |
#include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" |
@@ -36,7 +39,8 @@ class ViewManagerServiceImpl; |
// ViewManagerServiceImpls) as well as providing the root of the hierarchy. |
class ConnectionManager : public ServerViewDelegate, |
public ServerViewObserver, |
- public FocusControllerDelegate { |
+ public FocusControllerDelegate, |
+ public cc::SurfaceFactoryClient { |
public: |
// Create when a ViewManagerServiceImpl is about to make a change. Ensures |
// clients are notified correctly. |
@@ -71,7 +75,9 @@ class ConnectionManager : public ServerViewDelegate, |
DISALLOW_COPY_AND_ASSIGN(ScopedChange); |
}; |
- explicit ConnectionManager(ConnectionManagerDelegate* delegate); |
+ ConnectionManager( |
+ ConnectionManagerDelegate* delegate, |
+ const scoped_refptr<surfaces::SurfacesState>& surfaces_state); |
~ConnectionManager() override; |
// Adds a ViewManagerRoot. |
@@ -193,6 +199,9 @@ class ConnectionManager : public ServerViewDelegate, |
const mojo::OrderDirection direction); |
void ProcessViewDeleted(const ViewId& view); |
+ // SurfaceFactoryClient implementation. |
+ void ReturnResources(const cc::ReturnedResourceArray& resources) override; |
+ |
private: |
using ConnectionMap = std::map<mojo::ConnectionSpecificId, ClientConnection*>; |
using RootConnectionMap = |
@@ -224,6 +233,9 @@ class ConnectionManager : public ServerViewDelegate, |
ViewManagerRootImpl* GetViewManagerRootByView(const ServerView* view) const; |
// Overridden from ServerViewDelegate: |
+ void SubmitCompositorFrame(ServerView* view, |
+ mojo::CompositorFramePtr frame, |
+ const mojo::Closure& callback) override; |
void PrepareToDestroyView(ServerView* view) override; |
void PrepareToChangeViewHierarchy(ServerView* view, |
ServerView* new_parent, |
@@ -262,6 +274,11 @@ class ConnectionManager : public ServerViewDelegate, |
ConnectionManagerDelegate* delegate_; |
+ // State for rendering into a Surface. |
+ scoped_refptr<surfaces::SurfacesState> surfaces_state_; |
+ scoped_ptr<cc::SurfaceIdAllocator> surface_id_allocator_; |
+ scoped_ptr<cc::SurfaceFactory> surface_factory_; |
+ |
// ID to use for next ViewManagerServiceImpl. |
mojo::ConnectionSpecificId next_connection_id_; |