| Index: content/renderer/render_thread_impl.cc
|
| diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
|
| index 605769b9e6bd1c8adde074de5f3644b54ae62b42..71d394774146737523813e75a0e419485c19dbc5 100644
|
| --- a/content/renderer/render_thread_impl.cc
|
| +++ b/content/renderer/render_thread_impl.cc
|
| @@ -588,7 +588,8 @@ RenderThreadImpl::RenderThreadImpl(
|
| .ConnectToBrowser(true)
|
| .Build()),
|
| renderer_scheduler_(std::move(scheduler)),
|
| - categorized_worker_pool_(new CategorizedWorkerPool()) {
|
| + categorized_worker_pool_(new CategorizedWorkerPool()),
|
| + route_provider_binding_(this) {
|
| Init(resource_task_queue);
|
| }
|
|
|
| @@ -604,7 +605,8 @@ RenderThreadImpl::RenderThreadImpl(
|
| .Build()),
|
| renderer_scheduler_(std::move(scheduler)),
|
| main_message_loop_(std::move(main_message_loop)),
|
| - categorized_worker_pool_(new CategorizedWorkerPool()) {
|
| + categorized_worker_pool_(new CategorizedWorkerPool()),
|
| + route_provider_binding_(this) {
|
| scoped_refptr<base::SingleThreadTaskRunner> test_task_counter;
|
| Init(test_task_counter);
|
| }
|
| @@ -713,6 +715,9 @@ void RenderThreadImpl::Init(
|
| }
|
| #endif
|
|
|
| + GetChannel()->AddAssociatedInterface(base::Bind(
|
| + &RenderThreadImpl::OnRouteProviderRequest, base::Unretained(this)));
|
| +
|
| // Must be called before RenderThreadStarted() below.
|
| StartMojoShellConnection();
|
|
|
| @@ -1040,6 +1045,7 @@ void RenderThreadImpl::AddRoute(int32_t routing_id, IPC::Listener* listener) {
|
|
|
| void RenderThreadImpl::RemoveRoute(int32_t routing_id) {
|
| ChildThreadImpl::GetRouter()->RemoveRoute(routing_id);
|
| + routed_interface_providers_.erase(routing_id);
|
| }
|
|
|
| void RenderThreadImpl::AddEmbeddedWorkerRoute(int32_t routing_id,
|
| @@ -1081,6 +1087,20 @@ int RenderThreadImpl::GenerateRoutingID() {
|
| return routing_id;
|
| }
|
|
|
| +void RenderThreadImpl::AddRoutedInterfaces(
|
| + int32_t routing_id,
|
| + mojom::RoutedInterfaceProvider* provider) {
|
| + auto result =
|
| + routed_interface_providers_.insert(std::make_pair(routing_id, provider));
|
| + DCHECK(result.second);
|
| +}
|
| +
|
| +mojom::RouteProvider* RenderThreadImpl::GetRemoteRouteProvider() {
|
| + if (!remote_route_provider_)
|
| + channel()->GetRemoteAssociatedInterface(&remote_route_provider_);
|
| + return remote_route_provider_.get();
|
| +}
|
| +
|
| void RenderThreadImpl::AddFilter(IPC::MessageFilter* filter) {
|
| channel()->AddFilter(filter);
|
| }
|
| @@ -2232,5 +2252,20 @@ void RenderThreadImpl::OnTrimMemoryImmediately() {
|
| }
|
| }
|
|
|
| +void RenderThreadImpl::OnRouteProviderRequest(
|
| + mojom::RouteProviderAssociatedRequest request) {
|
| + DCHECK(!route_provider_binding_.is_bound());
|
| + route_provider_binding_.Bind(std::move(request));
|
| +}
|
| +
|
| +void RenderThreadImpl::GetRoutedInterfaces(
|
| + int32_t routing_id,
|
| + mojom::RoutedInterfaceProviderAssociatedRequest request) {
|
| + auto it = routed_interface_providers_.find(routing_id);
|
| + if (it == routed_interface_providers_.end())
|
| + return;
|
| + routed_interface_provider_bindings_.AddBinding(it->second,
|
| + std::move(request));
|
| +}
|
|
|
| } // namespace content
|
|
|