Index: content/browser/frame_host/render_frame_host_manager.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc |
index e19b9fa3212da70629e2d0e8f8c9ed8b1fc4e978..b11364e69ff24a98af173e7343e875ffdb8cb5a5 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.cc |
+++ b/content/browser/frame_host/render_frame_host_manager.cc |
@@ -913,6 +913,15 @@ void RenderFrameHostManager::DiscardUnusedFrame( |
render_frame_host->SwapOut(proxy, false); |
proxy->TakeFrameHostOwnership(render_frame_host.Pass()); |
+ } else { |
+ // If |render_frame_host| is the RenderViewHost's main frame, it must |
+ // be cleared, as it will be deleted at the end of this method. |
Charlie Reis
2015/10/16 17:02:23
s/, it must be cleared/, then the RenderViewHost m
|
+ if (frame_tree_node_->IsMainFrame() && |
+ render_frame_host->render_view_host()->GetMainFrame() == |
+ render_frame_host.get()) { |
+ render_frame_host->render_view_host()->set_main_frame_routing_id( |
+ MSG_ROUTING_NONE); |
+ } |
} |
} |
@@ -1830,6 +1839,12 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame( |
} |
if (frame_tree_node_->IsMainFrame()) { |
+ if (!render_view_host->GetMainFrame()) { |
Charlie Reis
2015/10/16 17:02:23
What would happen if it had a main frame routing I
|
+ CHECK(!render_view_host->is_active()); |
+ render_view_host->set_main_frame_routing_id( |
+ new_render_frame_host->GetRoutingID()); |
+ } |
+ |
success = InitRenderView(render_view_host, proxy_routing_id); |
// If we are reusing the RenderViewHost and it doesn't already have a |