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 007bbba1093445f257e0efe93e9bc9bebdf92da9..05e9dc58d2a0718fde7ce453db310848fa6d9964 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.cc |
+++ b/content/browser/frame_host/render_frame_host_manager.cc |
@@ -52,8 +52,7 @@ bool RenderFrameHostManager::ClearRFHsPendingShutdown(FrameTreeNode* node) { |
// static |
bool RenderFrameHostManager::IsSwappedOutStateForbidden() { |
Avi (use Gerrit)
2015/06/24 14:59:43
Looking forward to this function going away. :)
|
- return base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kSitePerProcess); |
+ return true; |
} |
RenderFrameHostManager::RenderFrameHostManager( |
@@ -71,6 +70,8 @@ RenderFrameHostManager::RenderFrameHostManager( |
should_reuse_web_ui_(false), |
weak_factory_(this) { |
DCHECK(frame_tree_node_); |
+ LOG(ERROR) << "RFHM[" << this << "]::RFHM:" |
+ << " parent:" << frame_tree_node_->parent(); |
} |
RenderFrameHostManager::~RenderFrameHostManager() { |
@@ -205,11 +206,17 @@ RenderFrameHostImpl* RenderFrameHostManager::Navigate( |
if (!dest_render_frame_host) |
return NULL; // We weren't able to create a pending render frame host. |
+ LOG(ERROR) << "RFHM[" << this << "]::Navigate:" |
+ << " rfh:" << render_frame_host_ |
+ << " dest_rfh:" << dest_render_frame_host; |
+ |
// If the current render_frame_host_ isn't live, we should create it so |
// that we don't show a sad tab while the dest_render_frame_host fetches |
// its first page. (Bug 1145340) |
if (dest_render_frame_host != render_frame_host_ && |
!render_frame_host_->IsRenderFrameLive()) { |
+ LOG(ERROR) << "RFHM[" << this << "]::Navigate:" |
+ << " dest rfh != rfh and rfh not live"; |
// Note: we don't call InitRenderView here because we are navigating away |
// soon anyway, and we don't have the NavigationEntry for this host. |
delegate_->CreateRenderViewForRenderManager( |
@@ -221,6 +228,8 @@ RenderFrameHostImpl* RenderFrameHostManager::Navigate( |
// If the renderer crashed, then try to create a new one to satisfy this |
// navigation request. |
if (!dest_render_frame_host->IsRenderFrameLive()) { |
+ LOG(ERROR) << "RFHM[" << this << "]::Navigate:" |
+ << " dest rfh not live"; |
// Instruct the destination render frame host to set up a Mojo connection |
// with the new render frame if necessary. Note that this call needs to |
// occur before initializing the RenderView; the flow of creating the |
@@ -266,6 +275,7 @@ RenderFrameHostImpl* RenderFrameHostManager::Navigate( |
cross_site_transferring_request_->ReleaseRequest(); |
} |
+ LOG(ERROR) << "RFHM[" << this << "]::Navigate: " << dest_render_frame_host; |
return dest_render_frame_host; |
} |
@@ -526,6 +536,8 @@ void RenderFrameHostManager::CommitPendingSandboxFlags() { |
void RenderFrameHostManager::RendererProcessClosing( |
RenderProcessHost* render_process_host) { |
+ LOG(ERROR) << "RFHM[" << this << "]::RendererProcessClosing:"; |
+ |
// Remove any swapped out RVHs from this process, so that we don't try to |
// swap them back in while the process is exiting. Start by finding them, |
// since there could be more than one. |
@@ -613,6 +625,9 @@ void RenderFrameHostManager::SwapOutOldFrame( |
old_render_frame_host->render_view_host(), frame_tree_node_); |
CHECK(proxy_hosts_.insert(std::make_pair(old_site_instance_id, proxy)).second) |
<< "Inserting a duplicate item."; |
+ LOG(ERROR) << "RFHM[" << this << "]::SwapOutOldFrame: " |
+ << " created proxy for SI:" << proxy->GetSiteInstance()->GetId() |
+ << "," << proxy->GetSiteInstance()->GetSiteURL(); |
// Tell the old RenderFrameHost to swap out and be replaced by the proxy. |
old_render_frame_host->SwapOut(proxy, true); |
@@ -1544,12 +1559,11 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame( |
if (render_view_host->GetView()) |
render_view_host->GetView()->Hide(); |
} |
- // With --site-per-process, RenderViewHost for |instance| might exist |
- // prior to calling CreateRenderFrame, due to a subframe in |
- // |instance|. In such a case, InitRenderView will not create the |
+ // RenderViewHost for |instance| might exist prior to calling |
+ // CreateRenderFrame. In such a case, InitRenderView will not create the |
// RenderFrame in the renderer process and it needs to be done |
// explicitly. |
- if (is_site_per_process) { |
+ if (swapped_out_forbidden) { |
// Init the RFH, so a RenderFrame is created in the renderer. |
DCHECK(new_render_frame_host); |
success = InitRenderFrame(new_render_frame_host.get()); |
@@ -1595,9 +1609,16 @@ int RenderFrameHostManager::CreateRenderFrameProxy(SiteInstance* instance) { |
// Ensure a RenderViewHost exists for |instance|, as it creates the page |
// level structure in Blink. |
+ LOG(ERROR) << "RFHM[" << this << "]::CreateRenderFrameProxy:" |
+ << " main_frame:" << frame_tree_node_->IsMainFrame() |
+ << " site:" << instance->GetId() << "," << instance->GetSiteURL() |
+ << " ft:" << frame_tree_node_->frame_tree(); |
+ |
if (RenderFrameHostManager::IsSwappedOutStateForbidden()) { |
render_view_host = |
frame_tree_node_->frame_tree()->GetRenderViewHost(instance); |
+ LOG(ERROR) << "RFHM[" << this << "]::CreateRenderFrameProxy:" |
+ << " rvh:" << render_view_host; |
if (!render_view_host) { |
CHECK(frame_tree_node_->IsMainFrame()); |
render_view_host = frame_tree_node_->frame_tree()->CreateRenderViewHost( |
@@ -1606,8 +1627,11 @@ int RenderFrameHostManager::CreateRenderFrameProxy(SiteInstance* instance) { |
} |
RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(instance); |
- if (proxy && proxy->is_render_frame_proxy_live()) |
+ if (proxy && proxy->is_render_frame_proxy_live()) { |
+ LOG(ERROR) << "RFHM[" << this << "]::CreateRenderFrameProxy:" |
+ << " proxy exists and live:" << proxy; |
return proxy->GetRoutingID(); |
+ } |
if (!proxy) { |
proxy = new RenderFrameProxyHost( |
@@ -1617,10 +1641,16 @@ int RenderFrameHostManager::CreateRenderFrameProxy(SiteInstance* instance) { |
if (RenderFrameHostManager::IsSwappedOutStateForbidden() && |
frame_tree_node_->IsMainFrame()) { |
- InitRenderView( |
+ LOG(ERROR) << "RFHM[" << this << "]::CreateRenderFrameProxy:" |
+ << " init rv"; |
+ bool success = InitRenderView( |
render_view_host, MSG_ROUTING_NONE, proxy->GetRoutingID(), true); |
+ LOG(ERROR) << "RFHM[" << this << "]::CreateRenderFrameProxy:" |
+ << " init rv:" << success; |
proxy->set_render_frame_proxy_created(true); |
} else { |
+ LOG(ERROR) << "RFHM[" << this << "]::CreateRenderFrameProxy:" |
+ << " init proxy"; |
proxy->InitRenderFrameProxy(); |
} |
@@ -1657,12 +1687,17 @@ bool RenderFrameHostManager::InitRenderView( |
bool for_main_frame_navigation) { |
// Ensure the renderer process is initialized before creating the |
// RenderView. |
+ LOG(ERROR) << "RFHM[" << this << "]::InitRenderView: " |
+ << " rvh:" << render_view_host; |
if (!render_view_host->GetProcess()->Init()) |
return false; |
// We may have initialized this RenderViewHost for another RenderFrameHost. |
- if (render_view_host->IsRenderViewLive()) |
+ if (render_view_host->IsRenderViewLive()) { |
+ LOG(ERROR) << "RFHM[" << this << "]::InitRenderView: " |
+ << " rvh already live."; |
return true; |
+ } |
// If the ongoing navigation is to a WebUI and the RenderView is not in a |
// guest process, tell the RenderViewHost about any bindings it will need |
@@ -1696,8 +1731,14 @@ bool RenderFrameHostManager::InitRenderView( |
bool RenderFrameHostManager::InitRenderFrame( |
RenderFrameHostImpl* render_frame_host) { |
- if (render_frame_host->IsRenderFrameLive()) |
+ LOG(ERROR) << "RFHM[" << this << "]::InitRenderFrame: " |
+ << " rfh:" << render_frame_host; |
+ |
+ if (render_frame_host->IsRenderFrameLive()) { |
+ LOG(ERROR) << "RFHM[" << this << "]::InitRenderFrame: " |
+ << " rfh already live."; |
return true; |
+ } |
int parent_routing_id = MSG_ROUTING_NONE; |
int previous_sibling_routing_id = MSG_ROUTING_NONE; |
@@ -1820,6 +1861,11 @@ void RenderFrameHostManager::CommitPending() { |
old_render_frame_host = |
SetRenderFrameHost(speculative_render_frame_host_.Pass()); |
} |
+ LOG(ERROR) << "RFHM[" << this << "]::CommitPending:" |
+ << " old:" << old_render_frame_host.get() |
+ << "," << old_render_frame_host->GetSiteInstance()->GetSiteURL() |
+ << " new:" << render_frame_host_.get() |
+ << "," << render_frame_host_->GetSiteInstance()->GetSiteURL(); |
// Remove the children of the old frame from the tree. |
frame_tree_node_->ResetForNewProcess(); |
@@ -1985,6 +2031,10 @@ RenderFrameHostImpl* RenderFrameHostManager::UpdateStateForNavigate( |
DCHECK(!pending_render_frame_host_); |
if (new_instance.get() != current_instance) { |
+ LOG(ERROR) << "RFHM[" << this << "]::UpdateStateForNavigate:" |
+ << " navigating from:" << current_instance->GetSiteURL() |
+ << " to:" << new_instance->GetSiteURL(); |
+ |
TRACE_EVENT_INSTANT2( |
"navigation", |
"RenderFrameHostManager::UpdateStateForNavigate:New SiteInstance", |
@@ -2053,6 +2103,9 @@ RenderFrameHostImpl* RenderFrameHostManager::UpdateStateForNavigate( |
return pending_render_frame_host_.get(); |
} |
+ LOG(ERROR) << "RFHM[" << this << "]::UpdateStateForNavigate:" |
+ << " to:" << new_instance->GetSiteURL(); |
+ |
// Otherwise the same SiteInstance can be used. Navigate render_frame_host_. |
// It's possible to swap out the current RFH and then decide to navigate in it |
@@ -2238,11 +2291,7 @@ int RenderFrameHostManager::CreateOpenerProxies(SiteInstance* instance) { |
// setting its opener to the given route_id. Since the opener can point to |
// a subframe, do this on the root frame of the opener's frame tree. |
// Return the new view's route_id. |
- frame_tree->root()->render_manager()-> |
- CreateRenderFrame(instance, nullptr, opener_route_id, |
- CREATE_RF_FOR_MAIN_FRAME_NAVIGATION | |
- CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, |
- &render_view_routing_id); |
+ frame_tree->root()->render_manager()->CreateRenderFrameProxy(instance); |
} |
return render_view_routing_id; |
} |