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 9986ff6686d9b1f4b136e33816a1a20056bc5b80..c46d4419bb238cb416c66d00c74d6173b073d41b 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -113,6 +113,7 @@ |
#include "content/browser/renderer_host/pepper/pepper_message_filter.h" |
#include "content/browser/renderer_host/pepper/pepper_renderer_connection.h" |
#include "content/browser/renderer_host/render_message_filter.h" |
+#include "content/browser/renderer_host/render_message_filter_ui.h" |
#include "content/browser/renderer_host/render_view_host_delegate.h" |
#include "content/browser/renderer_host/render_view_host_impl.h" |
#include "content/browser/renderer_host/render_widget_helper.h" |
@@ -1190,11 +1191,17 @@ void RenderProcessHostImpl::CreateMessageFilters() { |
void RenderProcessHostImpl::RegisterMojoInterfaces() { |
auto registry = base::MakeUnique<service_manager::BinderRegistry>(); |
+ associated_registry_.reset(new AssociatedInterfaceRegistryImpl()); |
channel_->AddAssociatedInterfaceForIOThread( |
base::Bind(&IndexedDBDispatcherHost::AddBinding, |
base::Unretained(indexed_db_factory_.get()))); |
+ static_cast<AssociatedInterfaceRegistry*>(associated_registry_.get()) |
+ ->AddInterface(base::Bind( |
+ &RenderMessageFilterUI::CreateFilter, base::Unretained(this), |
+ base::RetainedRef(storage_partition_impl_->GetDOMStorageContext()))); |
+ |
#if defined(OS_ANDROID) |
AddUIThreadInterface( |
registry.get(), GetGlobalJavaInterfaces() |
@@ -2083,6 +2090,8 @@ void RenderProcessHostImpl::OnAssociatedInterfaceRequest( |
mojom::RouteProviderAssociatedRequest request; |
request.Bind(std::move(handle)); |
route_provider_binding_.Bind(std::move(request)); |
+ } else if (associated_registry_->CanBindRequest(interface_name)) { |
+ associated_registry_->BindRequest(interface_name, std::move(handle)); |
} else { |
LOG(ERROR) << "Request for unknown Channel-associated interface: " |
<< interface_name; |