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

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: Response to reviews 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 1f228805e7651e4c4876b0ca92393e503dc9ec18..d45a2b02eb5f30213fd20ce479308f66def01dd2 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -209,20 +209,7 @@ RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host,
GetSiteInstance()->increment_active_frame_count();
}
- if (GetProcess()->GetServiceRegistry()) {
- 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_));
-#endif
- }
+ SetUpMojoIfNeeded();
swapout_event_monitor_timeout_.reset(new TimeoutMonitor(base::Bind(
&RenderFrameHostImpl::OnSwappedOut, weak_ptr_factory_.GetWeakPtr())));
@@ -322,7 +309,7 @@ RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() {
}
ServiceRegistry* RenderFrameHostImpl::GetServiceRegistry() {
- return &service_registry_;
+ return service_registry_.get();
}
bool RenderFrameHostImpl::Send(IPC::Message* message) {
@@ -1442,6 +1429,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();
qsr 2014/10/27 11:45:41 This is not that big a deal, but this should be re
+#endif
+}
+
void RenderFrameHostImpl::PlatformNotificationPermissionRequestDone(
int request_id, blink::WebNotificationPermission permission) {
Send(new PlatformNotificationMsg_PermissionRequestComplete(
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.h ('k') | content/browser/frame_host/render_frame_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698