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

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

Issue 606113005: Move RenderViewHost swap out state to RenderFrameHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix review suggestions Created 6 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 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 0663346d8ce240e2b519724cc500d4d0b7f5a644..8d557ace789b3b3c784bab09ebaa946467840a5b 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -283,15 +283,14 @@ bool RenderFrameHostManager::ShouldCloseTabOnUnresponsiveRenderer() {
// If the tab becomes unresponsive during {before}unload while doing a
// cross-site navigation, proceed with the navigation. (This assumes that
// the pending RenderFrameHost is still responsive.)
- if (render_frame_host_->render_view_host()->IsWaitingForUnloadACK()) {
+ if (render_frame_host_->IsWaitingForUnloadACK()) {
// The request has been started and paused while we're waiting for the
// unload handler to finish. We'll pretend that it did. The pending
// renderer will then be swapped in as part of the usual DidNavigate logic.
// (If the unload handler later finishes, this call will be ignored because
// the pending_nav_params_ state will already be cleaned up.)
- current_host()->OnSwappedOut(true);
- } else if (render_frame_host_->render_view_host()->
- is_waiting_for_beforeunload_ack()) {
+ current_frame_host()->OnSwappedOut();
+ } else if (render_frame_host_->is_waiting_for_beforeunload_ack()) {
// Haven't gotten around to starting the request, because we're still
// waiting for the beforeunload handler to finish. We'll pretend that it
// did finish, to let the navigation proceed. Note that there's a danger
@@ -690,8 +689,8 @@ bool RenderFrameHostManager::ClearProxiesInSiteInstance(
RenderFrameProxyHost* proxy = iter->second;
// If the RVH is pending swap out, it needs to switch state to
// pending shutdown. Otherwise it is deleted.
- if (proxy->GetRenderViewHost()->rvh_state() ==
- RenderViewHostImpl::STATE_PENDING_SWAP_OUT) {
+ if (proxy->render_frame_host()->rfh_state() ==
+ RenderFrameHostImpl::STATE_PENDING_SWAP_OUT) {
scoped_ptr<RenderFrameHostImpl> swapped_out_rfh =
proxy->PassFrameHostOwnership();
@@ -1224,7 +1223,7 @@ bool RenderFrameHostManager::InitRenderView(
} else {
// Ensure that we don't create an unprivileged RenderView in a WebUI-enabled
// process unless it's swapped out.
- if (!render_view_host->IsSwappedOut()) {
+ if (render_view_host->is_active()) {
CHECK(!ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings(
render_view_host->GetProcess()->GetID()));
}
@@ -1332,10 +1331,9 @@ void RenderFrameHostManager::CommitPending() {
SwapOutOldPage(old_render_frame_host.get());
// Schedule the old frame to shut down after it swaps out, if there are no
- // other active views in its SiteInstance.
- if (!static_cast<SiteInstanceImpl*>(
- old_render_frame_host->GetSiteInstance())->active_view_count()) {
- old_render_frame_host->render_view_host()->SetPendingShutdown(base::Bind(
+ // other active frames in its SiteInstance.
+ if (!old_render_frame_host->GetSiteInstance()->active_frame_count()) {
+ old_render_frame_host->SetPendingShutdown(base::Bind(
&RenderFrameHostManager::ClearPendingShutdownRFHForSiteInstance,
weak_factory_.GetWeakPtr(),
old_site_instance_id,
@@ -1369,18 +1367,17 @@ void RenderFrameHostManager::CommitPending() {
// If the old RFH is live, we are swapping it out and should keep track of
// it in case we navigate back to it, or it is waiting for the unload event
// to execute in the background.
- // TODO(creis): Swap out the subframe in --site-per-process.
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess)) {
DCHECK(old_render_frame_host->is_swapped_out() ||
- !RenderViewHostImpl::IsRVHStateActive(
- old_render_frame_host->render_view_host()->rvh_state()));
+ !RenderFrameHostImpl::IsRFHStateActive(
+ old_render_frame_host->rfh_state()));
}
// If the RenderViewHost backing the RenderFrameHost is pending shutdown,
// the RenderFrameHost should be put in the map of RenderFrameHosts pending
// shutdown. Otherwise, it is stored in the map of proxy hosts.
- if (old_render_frame_host->render_view_host()->rvh_state() ==
- RenderViewHostImpl::STATE_PENDING_SHUTDOWN) {
+ if (old_render_frame_host->rfh_state() ==
+ RenderFrameHostImpl::STATE_PENDING_SHUTDOWN) {
// The proxy for this RenderFrameHost is created when sending the
// SwapOut message, so check if it already exists and delete it.
RenderFrameProxyHostMap::iterator iter =
@@ -1400,12 +1397,11 @@ void RenderFrameHostManager::CommitPending() {
CHECK(proxy_hosts_.find(render_frame_host_->GetSiteInstance()->GetId()) ==
proxy_hosts_.end());
- // Capture the active view count on the old RFH SiteInstance, since the
+ // Capture the active frame count on the old RFH SiteInstance, since the
// ownership might be passed into the proxy and the pointer will be
// invalid.
- int active_view_count =
- static_cast<SiteInstanceImpl*>(old_render_frame_host->GetSiteInstance())
- ->active_view_count();
+ int active_frame_count =
+ old_render_frame_host->GetSiteInstance()->active_frame_count();
if (is_main_frame) {
RenderFrameProxyHostMap::iterator iter =
@@ -1414,23 +1410,23 @@ void RenderFrameHostManager::CommitPending() {
iter->second->TakeFrameHostOwnership(old_render_frame_host.Pass());
}
- // If there are no active views in this SiteInstance, it means that
+ // If there are no active frames in this SiteInstance, it means that
// this RFH was the last active one in the SiteInstance. Now that we
// know that all RFHs are swapped out, we can delete all the RFPHs and
// RVHs in this SiteInstance.
- if (!active_view_count) {
+ if (!active_frame_count) {
ShutdownRenderFrameProxyHostsInSiteInstance(old_site_instance_id);
- } else {
- // If this is a subframe, it should have a CrossProcessFrameConnector
- // created already and we just need to link it to the proper view in the
- // new process.
- if (!is_main_frame) {
- RenderFrameProxyHost* proxy = GetProxyToParent();
- if (proxy) {
- proxy->SetChildRWHView(
- render_frame_host_->render_view_host()->GetView());
- }
- }
+ }
+ }
+
+ // If this is a subframe, it should have a CrossProcessFrameConnector
+ // created already and we just need to link it to the proper view in the
+ // new process.
+ if (!is_main_frame) {
+ RenderFrameProxyHost* proxy = GetProxyToParent();
+ if (proxy) {
+ proxy->SetChildRWHView(
+ render_frame_host_->render_view_host()->GetView());
}
}
}
@@ -1619,9 +1615,9 @@ void RenderFrameHostManager::CancelPending() {
// If the SiteInstance for the pending RFH is being used by others, don't
// delete the RFH, just swap it out and it can be reused at a later point.
- SiteInstanceImpl* site_instance = static_cast<SiteInstanceImpl*>(
- pending_render_frame_host->GetSiteInstance());
- if (site_instance->active_view_count() > 1) {
+ SiteInstanceImpl* site_instance =
+ pending_render_frame_host->GetSiteInstance();
+ if (site_instance->active_frame_count() > 1) {
// Any currently suspended navigations are no longer needed.
pending_render_frame_host->CancelSuspendedNavigations();
@@ -1653,11 +1649,11 @@ scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::SetRenderFrameHost(
// count top-level ones. This makes the value easier for consumers to
// interpret.
if (render_frame_host_) {
- static_cast<SiteInstanceImpl*>(render_frame_host_->GetSiteInstance())->
+ render_frame_host_->GetSiteInstance()->
IncrementRelatedActiveContentsCount();
}
if (old_render_frame_host) {
- static_cast<SiteInstanceImpl*>(old_render_frame_host->GetSiteInstance())->
+ old_render_frame_host->GetSiteInstance()->
DecrementRelatedActiveContentsCount();
}
}
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/browser/frame_host/render_frame_host_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698