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 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; |
| } |