| Index: mojo/application_manager/application_manager.cc
|
| diff --git a/mojo/application_manager/application_manager.cc b/mojo/application_manager/application_manager.cc
|
| index 2ff28c3d1527aa7df5dab9a4ea1db4f8293cb1ee..86e14cbdaa91764be8a56b752692d120ec2d3d1b 100644
|
| --- a/mojo/application_manager/application_manager.cc
|
| +++ b/mojo/application_manager/application_manager.cc
|
| @@ -71,9 +71,10 @@ class ApplicationManager::ShellImpl : public Shell, public ErrorHandler {
|
| ~ShellImpl() override {}
|
|
|
| void ConnectToClient(const GURL& requestor_url,
|
| - ServiceProviderPtr service_provider) {
|
| - client()->AcceptConnection(String::From(requestor_url),
|
| - service_provider.Pass());
|
| + InterfaceRequest<ServiceProvider> services,
|
| + ServiceProviderPtr exported_services) {
|
| + client()->AcceptConnection(String::From(requestor_url), services.Pass(),
|
| + exported_services.Pass());
|
| }
|
|
|
| Application* client() { return binding_.client(); }
|
| @@ -92,17 +93,16 @@ class ApplicationManager::ShellImpl : public Shell, public ErrorHandler {
|
| }
|
|
|
| // Shell implementation:
|
| - void ConnectToApplication(
|
| - const String& app_url,
|
| - InterfaceRequest<ServiceProvider> in_service_provider) override {
|
| - ServiceProviderPtr out_service_provider;
|
| - out_service_provider.Bind(in_service_provider.PassMessagePipe());
|
| + void ConnectToApplication(const String& app_url,
|
| + InterfaceRequest<ServiceProvider> services,
|
| + ServiceProviderPtr exported_services) override {
|
| GURL app_gurl(app_url);
|
| if (!app_gurl.is_valid()) {
|
| LOG(ERROR) << "Error: invalid URL: " << app_url;
|
| return;
|
| }
|
| - manager_->ConnectToApplication(app_gurl, url_, out_service_provider.Pass());
|
| + manager_->ConnectToApplication(app_gurl, url_, services.Pass(),
|
| + exported_services.Pass());
|
| }
|
|
|
| // ErrorHandler implementation:
|
| @@ -121,12 +121,10 @@ class ApplicationManager::ContentHandlerConnection : public ErrorHandler {
|
| ContentHandlerConnection(ApplicationManager* manager,
|
| const GURL& content_handler_url)
|
| : manager_(manager), content_handler_url_(content_handler_url) {
|
| - ServiceProviderPtr service_provider;
|
| - StubServiceProvider* service_provider_impl =
|
| - BindToProxy(new StubServiceProvider, &service_provider);
|
| - manager->ConnectToApplication(
|
| - content_handler_url, GURL(), service_provider.Pass());
|
| - mojo::ConnectToService(service_provider_impl->client(), &content_handler_);
|
| + ServiceProviderPtr services;
|
| + manager->ConnectToApplication(content_handler_url, GURL(),
|
| + GetProxy(&services), ServiceProviderPtr());
|
| + mojo::ConnectToService(services.get(), &content_handler_);
|
| content_handler_.set_error_handler(this);
|
| }
|
|
|
| @@ -181,13 +179,14 @@ void ApplicationManager::TerminateShellConnections() {
|
| void ApplicationManager::ConnectToApplication(
|
| const GURL& requested_url,
|
| const GURL& requestor_url,
|
| - ServiceProviderPtr service_provider) {
|
| + InterfaceRequest<ServiceProvider> services,
|
| + ServiceProviderPtr exported_services) {
|
| DCHECK(requested_url.is_valid());
|
| ApplicationLoader* loader = GetLoaderForURL(requested_url,
|
| DONT_INCLUDE_DEFAULT_LOADER);
|
| if (loader) {
|
| ConnectToApplicationImpl(requested_url, requested_url, requestor_url,
|
| - service_provider.Pass(), loader);
|
| + services.Pass(), exported_services.Pass(), loader);
|
| return;
|
| }
|
|
|
| @@ -195,7 +194,7 @@ void ApplicationManager::ConnectToApplication(
|
| loader = GetLoaderForURL(resolved_url, INCLUDE_DEFAULT_LOADER);
|
| if (loader) {
|
| ConnectToApplicationImpl(requested_url, resolved_url, requestor_url,
|
| - service_provider.Pass(), loader);
|
| + services.Pass(), exported_services.Pass(), loader);
|
| return;
|
| }
|
|
|
| @@ -207,7 +206,8 @@ void ApplicationManager::ConnectToApplicationImpl(
|
| const GURL& requested_url,
|
| const GURL& resolved_url,
|
| const GURL& requestor_url,
|
| - ServiceProviderPtr service_provider,
|
| + InterfaceRequest<ServiceProvider> services,
|
| + ServiceProviderPtr exported_services,
|
| ApplicationLoader* loader) {
|
| ShellImpl* shell = nullptr;
|
| URLToShellImplMap::const_iterator shell_it =
|
| @@ -225,14 +225,18 @@ void ApplicationManager::ConnectToApplicationImpl(
|
| base::Bind(&ApplicationManager::LoadWithContentHandler,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
| - ConnectToClient(shell, resolved_url, requestor_url, service_provider.Pass());
|
| + ConnectToClient(shell, resolved_url, requestor_url, services.Pass(),
|
| + exported_services.Pass());
|
| }
|
|
|
| -void ApplicationManager::ConnectToClient(ShellImpl* shell_impl,
|
| - const GURL& url,
|
| - const GURL& requestor_url,
|
| - ServiceProviderPtr service_provider) {
|
| - shell_impl->ConnectToClient(requestor_url, service_provider.Pass());
|
| +void ApplicationManager::ConnectToClient(
|
| + ShellImpl* shell_impl,
|
| + const GURL& url,
|
| + const GURL& requestor_url,
|
| + InterfaceRequest<ServiceProvider> services,
|
| + ServiceProviderPtr exported_services) {
|
| + shell_impl->ConnectToClient(requestor_url, services.Pass(),
|
| + exported_services.Pass());
|
| }
|
|
|
| void ApplicationManager::RegisterExternalApplication(
|
| @@ -325,13 +329,11 @@ void ApplicationManager::OnContentHandlerError(
|
| ScopedMessagePipeHandle ApplicationManager::ConnectToServiceByName(
|
| const GURL& application_url,
|
| const std::string& interface_name) {
|
| - StubServiceProvider* stub_sp = new StubServiceProvider;
|
| - ServiceProviderPtr spp;
|
| - BindToProxy(stub_sp, &spp);
|
| - ConnectToApplication(application_url, GURL(), spp.Pass());
|
| + ServiceProviderPtr services;
|
| + ConnectToApplication(application_url, GURL(), GetProxy(&services),
|
| + ServiceProviderPtr());
|
| MessagePipe pipe;
|
| - stub_sp->GetRemoteServiceProvider()->ConnectToService(interface_name,
|
| - pipe.handle1.Pass());
|
| + services->ConnectToService(interface_name, pipe.handle1.Pass());
|
| return pipe.handle0.Pass();
|
| }
|
|
|
|
|