Chromium Code Reviews| Index: content/browser/renderer_host/render_process_host_impl.cc |
| diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
| index a61f179800d488780e4cf85c69ba42f69e70aa89..dd7845082677621eb03736d7d3ab9d2f63df0e97 100644 |
| --- a/content/browser/renderer_host/render_process_host_impl.cc |
| +++ b/content/browser/renderer_host/render_process_host_impl.cc |
| @@ -1376,8 +1376,12 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { |
| base::Unretained( |
| memory_instrumentation::CoordinatorImpl::GetInstance()))); |
| - GetContentClient()->browser()->ExposeInterfacesToRenderer(registry.get(), |
| - this); |
| + associated_interfaces_.reset(new AssociatedInterfaceRegistryImpl()); |
| + GetContentClient()->browser()->ExposeInterfacesToRenderer( |
| + registry.get(), associated_interfaces_.get(), this); |
| + static_cast<AssociatedInterfaceRegistry*>(associated_interfaces_.get()) |
| + ->AddInterface(base::Bind(&RenderProcessHostImpl::BindRouteProvider, |
| + base::Unretained(this))); |
| ServiceManagerConnection* service_manager_connection = |
| BrowserContext::GetServiceManagerConnectionFor(browser_context_); |
| @@ -1389,6 +1393,13 @@ void RenderProcessHostImpl::RegisterMojoInterfaces() { |
| std::move(connection_filter)); |
| } |
| +void RenderProcessHostImpl::BindRouteProvider( |
| + mojom::RouteProviderAssociatedRequest request) { |
| + if (route_provider_binding_.is_bound()) |
| + return; |
| + route_provider_binding_.Bind(std::move(request)); |
| +} |
| + |
| void RenderProcessHostImpl::GetRoute( |
| int32_t routing_id, |
| mojom::AssociatedInterfaceProviderAssociatedRequest request) { |
| @@ -2138,12 +2149,9 @@ bool RenderProcessHostImpl::OnMessageReceived(const IPC::Message& msg) { |
| void RenderProcessHostImpl::OnAssociatedInterfaceRequest( |
| const std::string& interface_name, |
| mojo::ScopedInterfaceEndpointHandle handle) { |
| - if (interface_name == mojom::RouteProvider::Name_) { |
| - if (route_provider_binding_.is_bound()) |
| - return; |
| - mojom::RouteProviderAssociatedRequest request; |
| - request.Bind(std::move(handle)); |
| - route_provider_binding_.Bind(std::move(request)); |
| + if ((associated_interfaces_) && |
|
Ken Rockot(use gerrit already)
2017/04/28 19:20:10
nit: please remove the redundant parenthesis from
nigeltao1
2017/04/29 07:07:57
Done.
|
| + (associated_interfaces_->CanBindRequest(interface_name))) { |
| + associated_interfaces_->BindRequest(interface_name, std::move(handle)); |
| } else { |
| LOG(ERROR) << "Request for unknown Channel-associated interface: " |
| << interface_name; |
| @@ -2803,6 +2811,7 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead, |
| is_dead_ = true; |
| if (route_provider_binding_.is_bound()) |
| route_provider_binding_.Close(); |
| + associated_interfaces_.reset(NULL); |
|
Ken Rockot(use gerrit already)
2017/04/28 19:20:10
nit: please use nullptr instead of NULL in new cod
nigeltao1
2017/04/29 07:07:57
Done.
|
| ResetChannelProxy(); |
| UpdateProcessPriority(); |