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

Side by Side Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 1345353003: Fix detection of RenderViewHosts pending deletion in CreateRenderViewHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tweak test per Nasko's suggestions; fix pending RVH check Created 5 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/render_frame_host_manager.h" 5 #include "content/browser/frame_host/render_frame_host_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 896
897 if (render_frame_host) { 897 if (render_frame_host) {
898 // We won't be coming back, so delete this one. 898 // We won't be coming back, so delete this one.
899 ShutdownProxiesIfLastActiveFrameInSiteInstance(render_frame_host.get()); 899 ShutdownProxiesIfLastActiveFrameInSiteInstance(render_frame_host.get());
900 render_frame_host.reset(); 900 render_frame_host.reset();
901 } 901 }
902 } 902 }
903 903
904 void RenderFrameHostManager::MoveToPendingDeleteHosts( 904 void RenderFrameHostManager::MoveToPendingDeleteHosts(
905 scoped_ptr<RenderFrameHostImpl> render_frame_host) { 905 scoped_ptr<RenderFrameHostImpl> render_frame_host) {
906 // If this is the main frame going away, mark the corresponding
907 // RenderViewHost for deletion as well so that we don't try to reuse it.
908 if (render_frame_host->frame_tree_node()->IsMainFrame())
909 render_frame_host->render_view_host()->set_pending_deletion();
910
906 // |render_frame_host| will be deleted when its SwapOut ACK is received, or 911 // |render_frame_host| will be deleted when its SwapOut ACK is received, or
907 // when the timer times out, or when the RFHM itself is deleted (whichever 912 // when the timer times out, or when the RFHM itself is deleted (whichever
908 // comes first). 913 // comes first).
909 pending_delete_hosts_.push_back( 914 pending_delete_hosts_.push_back(
910 linked_ptr<RenderFrameHostImpl>(render_frame_host.release())); 915 linked_ptr<RenderFrameHostImpl>(render_frame_host.release()));
911 } 916 }
912 917
913 bool RenderFrameHostManager::IsPendingDeletion( 918 bool RenderFrameHostManager::IsPendingDeletion(
914 RenderFrameHostImpl* render_frame_host) { 919 RenderFrameHostImpl* render_frame_host) {
915 for (const auto& rfh : pending_delete_hosts_) { 920 for (const auto& rfh : pending_delete_hosts_) {
(...skipping 1659 matching lines...) Expand 10 before | Expand all | Expand 10 after
2575 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { 2580 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) {
2576 if (!frame_tree_node_->opener()) 2581 if (!frame_tree_node_->opener())
2577 return MSG_ROUTING_NONE; 2582 return MSG_ROUTING_NONE;
2578 2583
2579 return frame_tree_node_->opener() 2584 return frame_tree_node_->opener()
2580 ->render_manager() 2585 ->render_manager()
2581 ->GetRoutingIdForSiteInstance(instance); 2586 ->GetRoutingIdForSiteInstance(instance);
2582 } 2587 }
2583 2588
2584 } // namespace content 2589 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698