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

Unified Diff: content/browser/frame_host/render_frame_host_impl.cc

Issue 666563005: Set up Mojo connection when RenderFrameHost is reused for new RenderFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 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/browser/frame_host/render_frame_host_impl.cc
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index c1c14271a73a2558628c21240503339c22e31346..5fa0e31e1ada885fd0f1d757b6033673b1d850b7 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -202,20 +202,7 @@ RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
GetSiteInstance()->increment_active_frame_count();
}
- if (GetProcess()->GetServiceRegistry()) {
- GetProcess()->GetServiceRegistry()->ConnectToRemoteService(
- &render_frame_setup_);
- mojo::ServiceProviderPtr service_provider;
- render_frame_setup_->GetServiceProviderForFrame(
- routing_id_, mojo::GetProxy(&service_provider));
- service_registry_.BindRemoteServiceProvider(
- service_provider.PassMessagePipe());
-
-#if defined(OS_ANDROID)
- service_registry_android_.reset(
- new ServiceRegistryAndroid(&service_registry_));
-#endif
- }
+ SetUpMojoIfNeeded();
swapout_event_monitor_timeout_.reset(new TimeoutMonitor(base::Bind(
&RenderFrameHostImpl::OnSwappedOut, weak_ptr_factory_.GetWeakPtr())));
@@ -315,7 +302,7 @@ RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() {
}
ServiceRegistry* RenderFrameHostImpl::GetServiceRegistry() {
- return &service_registry_;
+ return service_registry_.get();
}
bool RenderFrameHostImpl::Send(IPC::Message* message) {
@@ -1413,6 +1400,35 @@ void RenderFrameHostImpl::CommitNavigation(
stream_handle_ = body.Pass();
}
+void RenderFrameHostImpl::SetUpMojoIfNeeded() {
+ if (service_registry_.get())
+ return;
+
+ service_registry_.reset(new ServiceRegistryImpl());
+ if (!GetProcess()->GetServiceRegistry())
+ return;
+
+ RenderFrameSetupPtr setup;
+ GetProcess()->GetServiceRegistry()->ConnectToRemoteService(&setup);
+ mojo::ServiceProviderPtr service_provider;
+ setup->GetServiceProviderForFrame(routing_id_,
+ mojo::GetProxy(&service_provider));
+ service_registry_->BindRemoteServiceProvider(
+ service_provider.PassMessagePipe());
+
+#if defined(OS_ANDROID)
+ service_registry_android_.reset(
+ new ServiceRegistryAndroid(service_registry_.get()));
+#endif
+}
+
+void RenderFrameHostImpl::InvalidateMojoConnection() {
+ service_registry_.reset();
+#if defined(OS_ANDROID)
+ service_registry_android_.reset();
+#endif
+}
+
void RenderFrameHostImpl::PlatformNotificationPermissionRequestDone(
int request_id, blink::WebNotificationPermission permission) {
Send(new PlatformNotificationMsg_PermissionRequestComplete(

Powered by Google App Engine
This is Rietveld 408576698