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

Unified Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 1199313006: Disable support for swapped out RenderFrame(Host) on desktop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698