Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index f23358b8e002621ad315c0021ede1e5ff117485b..a7586b358b8a5a03ddc6c2367d08e689b70df6ac 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -79,6 +79,7 @@ |
#include "content/public/common/page_state.h" |
#include "content/public/common/resource_response.h" |
#include "content/public/common/service_manager_connection.h" |
+#include "content/public/common/service_names.h" |
#include "content/public/common/url_constants.h" |
#include "content/public/common/url_utils.h" |
#include "content/public/renderer/browser_plugin_delegate.h" |
@@ -1126,7 +1127,7 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
// TODO(beng): We should fix this, so we can apply policy about which |
// interfaces get exposed. |
interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>( |
- service_manager::Identity(), service_manager::InterfaceProviderSpec()); |
+ mojom::kNavigation_FrameSpec); |
service_manager::mojom::InterfaceProviderPtr remote_interfaces; |
pending_remote_interface_provider_request_ = GetProxy(&remote_interfaces); |
remote_interfaces_.reset(new service_manager::InterfaceProvider); |
@@ -2642,9 +2643,21 @@ bool RenderFrameImpl::IsPasting() const { |
void RenderFrameImpl::GetInterfaceProvider( |
service_manager::mojom::InterfaceProviderRequest request) { |
- interface_registry_->Bind(std::move(request), |
- service_manager::Identity(), |
- service_manager::InterfaceProviderSpec()); |
+ service_manager::ServiceInfo child_info = |
+ ChildThreadImpl::current()->GetChildServiceInfo(); |
+ service_manager::ServiceInfo browser_info = |
+ ChildThreadImpl::current()->GetBrowserServiceInfo(); |
+ |
+ service_manager::InterfaceProviderSpec child_spec, browser_spec; |
+ // TODO(beng): CHECK these return true. |
+ service_manager::GetInterfaceProviderSpec( |
+ mojom::kNavigation_FrameSpec, child_info.interface_provider_specs, |
+ &child_spec); |
+ service_manager::GetInterfaceProviderSpec( |
+ mojom::kNavigation_FrameSpec, browser_info.interface_provider_specs, |
+ &browser_spec); |
+ interface_registry_->Bind(std::move(request), child_info.identity, child_spec, |
+ browser_info.identity, browser_spec); |
} |
// mojom::HostZoom implementation ---------------------------------------------- |