// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_VIEW_MANAGER_VIEW_MANAGER_APP_H_ #define COMPONENTS_VIEW_MANAGER_VIEW_MANAGER_APP_H_ #include #include "base/memory/scoped_ptr.h" #include "cc/surfaces/surface_manager.h" #include "components/view_manager/connection_manager_delegate.h" #include "components/view_manager/public/interfaces/gpu.mojom.h" #include "components/view_manager/public/interfaces/view_tree.mojom.h" #include "components/view_manager/public/interfaces/view_tree_host.mojom.h" #include "mojo/application/public/cpp/app_lifetime_helper.h" #include "mojo/application/public/cpp/application_delegate.h" #include "mojo/application/public/cpp/interface_factory.h" #include "mojo/common/tracing_impl.h" #include "mojo/common/weak_binding_set.h" namespace gles2 { class GpuState; } namespace mojo { class ApplicationImpl; } namespace surfaces { class SurfacesScheduler; class SurfacesState; } namespace ui { class PlatformEventSource; } namespace view_manager { class ConnectionManager; class ViewManagerApp : public mojo::ApplicationDelegate, public ConnectionManagerDelegate, public mojo::InterfaceFactory, public mojo::InterfaceFactory, public mojo::ViewTreeHostFactory { public: ViewManagerApp(); ~ViewManagerApp() override; private: // ApplicationDelegate: void Initialize(mojo::ApplicationImpl* app) override; bool ConfigureIncomingConnection( mojo::ApplicationConnection* connection) override; // ConnectionManagerDelegate: void OnNoMoreRootConnections() override; ClientConnection* CreateClientConnectionForEmbedAtView( ConnectionManager* connection_manager, mojo::InterfaceRequest tree_request, mojo::ConnectionSpecificId creator_id, mojo::URLRequestPtr request, const ViewId& root_id) override; ClientConnection* CreateClientConnectionForEmbedAtView( ConnectionManager* connection_manager, mojo::InterfaceRequest tree_request, mojo::ConnectionSpecificId creator_id, const ViewId& root_id, mojo::ViewTreeClientPtr client) override; // mojo::InterfaceFactory: void Create( mojo::ApplicationConnection* connection, mojo::InterfaceRequest request) override; // mojo::InterfaceFactory implementation. void Create(mojo::ApplicationConnection* connection, mojo::InterfaceRequest request) override; // mojo::ViewTreeHostFactory implementation. void CreateViewTreeHost(mojo::InterfaceRequest host, mojo::ViewTreeHostClientPtr host_client, mojo::ViewTreeClientPtr tree_client) override; mojo::WeakBindingSet factory_bindings_; mojo::ApplicationImpl* app_impl_; scoped_ptr connection_manager_; mojo::TracingImpl tracing_; scoped_refptr gpu_state_; scoped_ptr event_source_; bool is_headless_; // Surfaces scoped_refptr surfaces_state_; DISALLOW_COPY_AND_ASSIGN(ViewManagerApp); }; } // namespace view_manager #endif // COMPONENTS_VIEW_MANAGER_VIEW_MANAGER_APP_H_