Index: trunk/src/content/browser/mojo/mojo_application_host.h |
=================================================================== |
--- trunk/src/content/browser/mojo/mojo_application_host.h (revision 279559) |
+++ trunk/src/content/browser/mojo/mojo_application_host.h (working copy) |
@@ -6,9 +6,9 @@ |
#define CONTENT_BROWSER_MOJO_MOJO_APPLICATION_HOST_H_ |
#include "base/process/process_handle.h" |
-#include "content/common/mojo/service_registry_impl.h" |
#include "mojo/embedder/channel_init.h" |
#include "mojo/embedder/scoped_platform_handle.h" |
+#include "mojo/public/interfaces/service_provider/service_provider.mojom.h" |
namespace IPC { |
class Sender; |
@@ -19,31 +19,49 @@ |
// MojoApplicationHost represents the code needed on the browser side to setup |
// 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. |
+// MojoApplicationHost. MojoApplicationHost makes the mojo::ShellClient |
+// interface available so that child-provided services can be invoked. |
class MojoApplicationHost { |
public: |
MojoApplicationHost(); |
virtual ~MojoApplicationHost(); |
// Two-phase initialization: |
- // 1- Init makes service_registry() available synchronously. |
+ // 1- Init makes the shell_client() available synchronously. |
// 2- Activate establishes the actual connection to the peer process. |
bool Init(); |
bool Activate(IPC::Sender* sender, base::ProcessHandle process_handle); |
bool did_activate() const { return did_activate_; } |
- ServiceRegistry* service_registry() { return &service_registry_; } |
+ mojo::ServiceProvider* service_provider() { |
+ DCHECK(child_service_provider_.get()); |
+ return child_service_provider_->client(); |
+ } |
private: |
+ class ServiceProviderImpl |
+ : public mojo::InterfaceImpl<mojo::ServiceProvider> { |
+ public: |
+ virtual void OnConnectionError() OVERRIDE { |
+ // TODO(darin): How should we handle this error? |
+ } |
+ |
+ // mojo::ServiceProvider methods: |
+ virtual void ConnectToService( |
+ const mojo::String& service_url, |
+ const mojo::String& service_name, |
+ mojo::ScopedMessagePipeHandle handle, |
+ const mojo::String& requestor_url) OVERRIDE; |
+ }; |
+ |
mojo::embedder::ChannelInit channel_init_; |
mojo::embedder::ScopedPlatformHandle client_handle_; |
+ scoped_ptr<ServiceProviderImpl> child_service_provider_; |
+ |
bool did_activate_; |
- ServiceRegistryImpl service_registry_; |
- |
DISALLOW_COPY_AND_ASSIGN(MojoApplicationHost); |
}; |