Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(284)

Unified Diff: content/renderer/render_frame_impl.cc

Issue 2456493003: Add frame-specific InterfaceProviderSpec. (Closed)
Patch Set: . Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 ----------------------------------------------
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/service_worker/embedded_worker_instance_client_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698