Chromium Code Reviews| 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 1ffbbaa4861f5795c19410c982d11b26da767cdd..79a477d1e020d3b3b20b25c1fb7d121c842a1110 100644 |
| --- a/content/browser/frame_host/render_frame_host_manager.cc |
| +++ b/content/browser/frame_host/render_frame_host_manager.cc |
| @@ -912,10 +912,13 @@ void RenderFrameHostManager::DiscardUnusedFrame( |
| void RenderFrameHostManager::MoveToPendingDeleteHosts( |
| scoped_ptr<RenderFrameHostImpl> render_frame_host) { |
| - // If this is the main frame going away, mark the corresponding |
| - // RenderViewHost for deletion as well so that we don't try to reuse it. |
| - if (render_frame_host->frame_tree_node()->IsMainFrame()) |
| + // If this is the main frame going away and there are no more references to |
| + // its RenderViewHost, mark it for deletion as well so that we don't try to |
| + // reuse it. |
|
Charlie Reis
2015/09/30 21:08:03
I'm trying to understand how this relates to the c
|
| + if (render_frame_host->frame_tree_node()->IsMainFrame() && |
| + render_frame_host->render_view_host()->ref_count() <= 1) { |
| render_frame_host->render_view_host()->set_pending_deletion(); |
| + } |
| // |render_frame_host| will be deleted when its SwapOut ACK is received, or |
| // when the timer times out, or when the RFHM itself is deleted (whichever |