Index: content/common/mojo/mojo_shell_connection_impl.h |
diff --git a/content/common/mojo/mojo_shell_connection_impl.h b/content/common/mojo/mojo_shell_connection_impl.h |
index 6a6882413a0c9e0e004dd17e0dab73e984fd9ecd..c262c9ec780db228f00ccd532748883a54f7ad78 100644 |
--- a/content/common/mojo/mojo_shell_connection_impl.h |
+++ b/content/common/mojo/mojo_shell_connection_impl.h |
@@ -6,68 +6,73 @@ |
#define CONTENT_COMMON_MOJO_SHELL_CONNECTION_IMPL_H_ |
#include <memory> |
-#include <vector> |
#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/weak_ptr.h" |
+#include "base/sequenced_task_runner.h" |
#include "content/public/common/mojo_shell_connection.h" |
-#include "mojo/public/cpp/bindings/binding_set.h" |
+#include "mojo/public/cpp/bindings/string.h" |
#include "mojo/public/cpp/system/message_pipe.h" |
-#include "services/shell/public/cpp/service.h" |
-#include "services/shell/public/cpp/service_context.h" |
-#include "services/shell/public/interfaces/service_factory.mojom.h" |
+#include "services/shell/public/cpp/identity.h" |
+#include "services/shell/public/interfaces/service.mojom.h" |
+ |
+namespace shell { |
+class Connector; |
+} |
namespace content { |
class EmbeddedApplicationRunner; |
-class MojoShellConnectionImpl |
- : public MojoShellConnection, |
- public shell::Service, |
- public shell::InterfaceFactory<shell::mojom::ServiceFactory>, |
- public shell::mojom::ServiceFactory { |
- |
+class MojoShellConnectionImpl : public MojoShellConnection { |
public: |
- explicit MojoShellConnectionImpl(shell::mojom::ServiceRequest request); |
+ explicit MojoShellConnectionImpl( |
+ shell::mojom::ServiceRequest request, |
+ scoped_refptr<base::SequencedTaskRunner> io_task_runner); |
~MojoShellConnectionImpl() override; |
private: |
+ class IOThreadContext; |
+ |
// MojoShellConnection: |
- shell::ServiceContext* GetShellConnection() override; |
+ void Start() override; |
+ void SetInitializeHandler(const base::Closure& handler) override; |
shell::Connector* GetConnector() override; |
const shell::Identity& GetIdentity() const override; |
void SetConnectionLostClosure(const base::Closure& closure) override; |
- void MergeService(std::unique_ptr<shell::Service> service) override; |
- void MergeService(shell::Service* service) override; |
+ void SetupInterfaceRequestProxies( |
+ shell::InterfaceRegistry* registry, |
+ shell::InterfaceProvider* provider) override; |
+ void AddConnectionFilter(std::unique_ptr<ConnectionFilter> filter) override; |
void AddEmbeddedService(const std::string& name, |
const MojoApplicationInfo& info) override; |
void AddServiceRequestHandler( |
const std::string& name, |
const ServiceRequestHandler& handler) override; |
- // shell::Service: |
- void OnStart(shell::Connector* connector, |
- const shell::Identity& identity, |
- uint32_t id) override; |
- bool OnConnect(shell::Connection* connection) override; |
- shell::InterfaceRegistry* GetInterfaceRegistryForConnection() override; |
- shell::InterfaceProvider* GetInterfaceProviderForConnection() override; |
+ void OnContextInitialized(const shell::Identity& identity); |
+ void OnConnectionLost(); |
+ void CreateService(shell::mojom::ServiceRequest request, |
+ const mojo::String& name); |
+ void GetInterface(shell::mojom::InterfaceProvider* provider, |
+ const mojo::String& interface_name, |
+ mojo::ScopedMessagePipeHandle request_handle); |
- // shell::InterfaceFactory<shell::mojom::ServiceFactory>: |
- void Create(shell::Connection* connection, |
- shell::mojom::ServiceFactoryRequest request) override; |
+ shell::Identity identity_; |
- // shell::mojom::ServiceFactory: |
- void CreateService(shell::mojom::ServiceRequest request, |
- const mojo::String& name) override; |
+ std::unique_ptr<shell::Connector> connector_; |
+ scoped_refptr<IOThreadContext> context_; |
+ |
+ base::Closure initialize_handler_; |
+ base::Closure connection_lost_handler_; |
- std::unique_ptr<shell::ServiceContext> shell_connection_; |
- mojo::BindingSet<shell::mojom::ServiceFactory> factory_bindings_; |
- std::vector<shell::Service*> embedded_services_; |
- std::vector<std::unique_ptr<shell::Service>> owned_services_; |
std::unordered_map<std::string, std::unique_ptr<EmbeddedApplicationRunner>> |
embedded_apps_; |
std::unordered_map<std::string, ServiceRequestHandler> request_handlers_; |
+ base::WeakPtrFactory<MojoShellConnectionImpl> weak_factory_; |
+ |
DISALLOW_COPY_AND_ASSIGN(MojoShellConnectionImpl); |
}; |