| Index: content/browser/mojo/mojo_application_host.h
|
| diff --git a/content/browser/mojo/mojo_application_host.h b/content/browser/mojo/mojo_application_host.h
|
| index b1bc026cfdc93dfed3504b9b1fd4b1e761a1a539..50fdfdf63fb4709259ff03046bb3cbb8fb9c6dc0 100644
|
| --- a/content/browser/mojo/mojo_application_host.h
|
| +++ b/content/browser/mojo/mojo_application_host.h
|
| @@ -9,9 +9,13 @@
|
| #include <string>
|
|
|
| #include "base/macros.h"
|
| +#include "base/process/process_handle.h"
|
| #include "build/build_config.h"
|
| #include "content/common/application_setup.mojom.h"
|
| +#include "content/common/mojo/channel_init.h"
|
| #include "content/common/mojo/service_registry_impl.h"
|
| +#include "mojo/edk/embedder/scoped_platform_handle.h"
|
| +#include "mojo/public/cpp/system/message_pipe.h"
|
|
|
| #if defined(OS_ANDROID)
|
| #include "content/public/browser/android/service_registry_android.h"
|
| @@ -24,18 +28,24 @@
|
| namespace content {
|
|
|
| // MojoApplicationHost represents the code needed on the browser side to setup
|
| -// a child process as a Mojo application. The child process should use the token
|
| -// from GetToken() to initialize its MojoApplication. MojoApplicationHost makes
|
| -// the ServiceRegistry interface available so that child-provided services can
|
| -// be invoked.
|
| +// a child process as a Mojo application via Chrome IPC. The child process
|
| +// should use MojoApplication to handle messages generated by an instance of
|
| +// MojoApplicationHost. MojoApplicationHost makes the ServiceRegistry interface
|
| +// available so that child-provided services can be invoked.
|
| class CONTENT_EXPORT MojoApplicationHost {
|
| public:
|
| MojoApplicationHost();
|
| ~MojoApplicationHost();
|
|
|
| - // Returns a token to pass to the child process to initialize its
|
| - // MojoApplication.
|
| - const std::string& GetToken() { return token_; }
|
| + // Two-phase initialization:
|
| + // 1- Init makes service_registry() available synchronously.
|
| + // 2- Activate establishes the actual connection to the peer process.
|
| + bool Init();
|
| + void Activate(IPC::Sender* sender, base::ProcessHandle process_handle);
|
| +
|
| + // Use a shared token to initialize the application. Returns a token to pass
|
| + // to the child process.
|
| + std::string InitWithToken();
|
|
|
| ServiceRegistry* service_registry() { return &service_registry_; }
|
|
|
| @@ -45,11 +55,19 @@
|
| }
|
| #endif
|
|
|
| + void OverrideIOTaskRunnerForTest(
|
| + scoped_refptr<base::TaskRunner> io_task_runner);
|
| +
|
| private:
|
| - const std::string token_;
|
| + ChannelInit channel_init_;
|
| + mojo::edk::ScopedPlatformHandle client_handle_;
|
| +
|
| + bool did_activate_;
|
|
|
| std::unique_ptr<mojom::ApplicationSetup> application_setup_;
|
| ServiceRegistryImpl service_registry_;
|
| +
|
| + scoped_refptr<base::TaskRunner> io_task_runner_override_;
|
|
|
| #if defined(OS_ANDROID)
|
| std::unique_ptr<ServiceRegistryAndroid> service_registry_android_;
|
|
|