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

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

Issue 1545243002: Convert Pass()→std::move() in //content/browser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 // the request. 467 // the request.
468 if (cross_site_transferring_request_.get() && 468 if (cross_site_transferring_request_.get() &&
469 cross_site_transferring_request_->request_id() == 469 cross_site_transferring_request_->request_id() ==
470 entry.transferred_global_request_id()) { 470 entry.transferred_global_request_id()) {
471 cross_site_transferring_request_->ReleaseRequest(); 471 cross_site_transferring_request_->ReleaseRequest();
472 472
473 // The navigating RenderFrameHost should take ownership of the 473 // The navigating RenderFrameHost should take ownership of the
474 // NavigationHandle that came from the transferring RenderFrameHost. 474 // NavigationHandle that came from the transferring RenderFrameHost.
475 DCHECK(transfer_navigation_handle_); 475 DCHECK(transfer_navigation_handle_);
476 dest_render_frame_host->SetNavigationHandle( 476 dest_render_frame_host->SetNavigationHandle(
477 transfer_navigation_handle_.Pass()); 477 std::move(transfer_navigation_handle_));
478 } 478 }
479 DCHECK(!transfer_navigation_handle_); 479 DCHECK(!transfer_navigation_handle_);
480 480
481 return dest_render_frame_host; 481 return dest_render_frame_host;
482 } 482 }
483 483
484 void RenderFrameHostManager::Stop() { 484 void RenderFrameHostManager::Stop() {
485 render_frame_host_->Stop(); 485 render_frame_host_->Stop();
486 486
487 // If a cross-process navigation is happening, the pending RenderFrameHost 487 // If a cross-process navigation is happening, the pending RenderFrameHost
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 610
611 // A transfer should only have come from our pending or current RFH. 611 // A transfer should only have come from our pending or current RFH.
612 // TODO(creis): We need to handle the case that the pending RFH has changed 612 // TODO(creis): We need to handle the case that the pending RFH has changed
613 // in the mean time, while this was being posted from the IO thread. We 613 // in the mean time, while this was being posted from the IO thread. We
614 // should probably cancel the request in that case. 614 // should probably cancel the request in that case.
615 DCHECK(pending_render_frame_host == pending_render_frame_host_.get() || 615 DCHECK(pending_render_frame_host == pending_render_frame_host_.get() ||
616 pending_render_frame_host == render_frame_host_.get()); 616 pending_render_frame_host == render_frame_host_.get());
617 617
618 // Store the transferring request so that we can release it if the transfer 618 // Store the transferring request so that we can release it if the transfer
619 // navigation matches. 619 // navigation matches.
620 cross_site_transferring_request_ = cross_site_transferring_request.Pass(); 620 cross_site_transferring_request_ = std::move(cross_site_transferring_request);
621 621
622 // Store the NavigationHandle to give it to the appropriate RenderFrameHost 622 // Store the NavigationHandle to give it to the appropriate RenderFrameHost
623 // after it started navigating. 623 // after it started navigating.
624 transfer_navigation_handle_ = 624 transfer_navigation_handle_ =
625 pending_render_frame_host->PassNavigationHandleOwnership(); 625 pending_render_frame_host->PassNavigationHandleOwnership();
626 DCHECK(transfer_navigation_handle_); 626 DCHECK(transfer_navigation_handle_);
627 627
628 // Sanity check that the params are for the correct frame and process. 628 // Sanity check that the params are for the correct frame and process.
629 // These should match the RenderFrameHost that made the request. 629 // These should match the RenderFrameHost that made the request.
630 // If it started as a cross-process navigation via OpenURL, this is the 630 // If it started as a cross-process navigation via OpenURL, this is the
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 // a proxy. 851 // a proxy.
852 size_t active_frame_count = 852 size_t active_frame_count =
853 old_render_frame_host->GetSiteInstance()->active_frame_count(); 853 old_render_frame_host->GetSiteInstance()->active_frame_count();
854 if (active_frame_count <= 1) { 854 if (active_frame_count <= 1) {
855 // Clear out any proxies from this SiteInstance, in case this was the 855 // Clear out any proxies from this SiteInstance, in case this was the
856 // last one keeping other proxies alive. 856 // last one keeping other proxies alive.
857 ShutdownProxiesIfLastActiveFrameInSiteInstance(old_render_frame_host.get()); 857 ShutdownProxiesIfLastActiveFrameInSiteInstance(old_render_frame_host.get());
858 858
859 // Tell the old RenderFrameHost to swap out, with no proxy to replace it. 859 // Tell the old RenderFrameHost to swap out, with no proxy to replace it.
860 old_render_frame_host->SwapOut(nullptr, true); 860 old_render_frame_host->SwapOut(nullptr, true);
861 MoveToPendingDeleteHosts(old_render_frame_host.Pass()); 861 MoveToPendingDeleteHosts(std::move(old_render_frame_host));
862 return; 862 return;
863 } 863 }
864 864
865 // Otherwise there are active views and we need a proxy for the old RFH. 865 // Otherwise there are active views and we need a proxy for the old RFH.
866 // (There should not be one yet.) 866 // (There should not be one yet.)
867 RenderFrameProxyHost* proxy = new RenderFrameProxyHost( 867 RenderFrameProxyHost* proxy = new RenderFrameProxyHost(
868 old_render_frame_host->GetSiteInstance(), 868 old_render_frame_host->GetSiteInstance(),
869 old_render_frame_host->render_view_host(), frame_tree_node_); 869 old_render_frame_host->render_view_host(), frame_tree_node_);
870 proxy_hosts_->Add(old_site_instance_id, make_scoped_ptr(proxy)); 870 proxy_hosts_->Add(old_site_instance_id, make_scoped_ptr(proxy));
871 871
872 // Tell the old RenderFrameHost to swap out and be replaced by the proxy. 872 // Tell the old RenderFrameHost to swap out and be replaced by the proxy.
873 old_render_frame_host->SwapOut(proxy, true); 873 old_render_frame_host->SwapOut(proxy, true);
874 874
875 // SwapOut creates a RenderFrameProxy, so set the proxy to be initialized. 875 // SwapOut creates a RenderFrameProxy, so set the proxy to be initialized.
876 proxy->set_render_frame_proxy_created(true); 876 proxy->set_render_frame_proxy_created(true);
877 877
878 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { 878 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) {
879 // In --site-per-process, frames delete their RFH rather than storing it 879 // In --site-per-process, frames delete their RFH rather than storing it
880 // in the proxy. Schedule it for deletion once the SwapOutACK comes in. 880 // in the proxy. Schedule it for deletion once the SwapOutACK comes in.
881 // TODO(creis): This will be the default when we remove swappedout://. 881 // TODO(creis): This will be the default when we remove swappedout://.
882 MoveToPendingDeleteHosts(old_render_frame_host.Pass()); 882 MoveToPendingDeleteHosts(std::move(old_render_frame_host));
883 } else { 883 } else {
884 // We shouldn't get here for subframes, since we only swap subframes when 884 // We shouldn't get here for subframes, since we only swap subframes when
885 // --site-per-process is used. 885 // --site-per-process is used.
886 DCHECK(frame_tree_node_->IsMainFrame()); 886 DCHECK(frame_tree_node_->IsMainFrame());
887 887
888 // The old RenderFrameHost will stay alive inside the proxy so that existing 888 // The old RenderFrameHost will stay alive inside the proxy so that existing
889 // JavaScript window references to it stay valid. 889 // JavaScript window references to it stay valid.
890 proxy->TakeFrameHostOwnership(old_render_frame_host.Pass()); 890 proxy->TakeFrameHostOwnership(std::move(old_render_frame_host));
891 } 891 }
892 } 892 }
893 893
894 void RenderFrameHostManager::DiscardUnusedFrame( 894 void RenderFrameHostManager::DiscardUnusedFrame(
895 scoped_ptr<RenderFrameHostImpl> render_frame_host) { 895 scoped_ptr<RenderFrameHostImpl> render_frame_host) {
896 // TODO(carlosk): this code is very similar to what can be found in 896 // TODO(carlosk): this code is very similar to what can be found in
897 // SwapOutOldFrame and we should see that these are unified at some point. 897 // SwapOutOldFrame and we should see that these are unified at some point.
898 898
899 // If the SiteInstance for the pending RFH is being used by others don't 899 // If the SiteInstance for the pending RFH is being used by others don't
900 // delete the RFH. Just swap it out and it can be reused at a later point. 900 // delete the RFH. Just swap it out and it can be reused at a later point.
(...skipping 21 matching lines...) Expand all
922 DCHECK(frame_tree_node_->IsMainFrame()); 922 DCHECK(frame_tree_node_->IsMainFrame());
923 923
924 // When using swapped out RenderFrameHosts, it is possible for the pending 924 // When using swapped out RenderFrameHosts, it is possible for the pending
925 // RenderFrameHost to be an existing one in swapped out state. Since it 925 // RenderFrameHost to be an existing one in swapped out state. Since it
926 // has been used to start a navigation, it could have committed a 926 // has been used to start a navigation, it could have committed a
927 // document. Check if |render_frame_host| is already swapped out, to avoid 927 // document. Check if |render_frame_host| is already swapped out, to avoid
928 // swapping it out again. 928 // swapping it out again.
929 if (!render_frame_host->is_swapped_out()) 929 if (!render_frame_host->is_swapped_out())
930 render_frame_host->SwapOut(proxy, false); 930 render_frame_host->SwapOut(proxy, false);
931 931
932 proxy->TakeFrameHostOwnership(render_frame_host.Pass()); 932 proxy->TakeFrameHostOwnership(std::move(render_frame_host));
933 } 933 }
934 } 934 }
935 935
936 if (render_frame_host) { 936 if (render_frame_host) {
937 // We won't be coming back, so delete this one. 937 // We won't be coming back, so delete this one.
938 ShutdownProxiesIfLastActiveFrameInSiteInstance(render_frame_host.get()); 938 ShutdownProxiesIfLastActiveFrameInSiteInstance(render_frame_host.get());
939 render_frame_host.reset(); 939 render_frame_host.reset();
940 } 940 }
941 } 941 }
942 942
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1134 render_frame_host_->ClearPendingWebUI(); 1134 render_frame_host_->ClearPendingWebUI();
1135 if (speculative_render_frame_host_) 1135 if (speculative_render_frame_host_)
1136 DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); 1136 DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost());
1137 } 1137 }
1138 1138
1139 // PlzNavigate 1139 // PlzNavigate
1140 scoped_ptr<RenderFrameHostImpl> 1140 scoped_ptr<RenderFrameHostImpl>
1141 RenderFrameHostManager::UnsetSpeculativeRenderFrameHost() { 1141 RenderFrameHostManager::UnsetSpeculativeRenderFrameHost() {
1142 CHECK(IsBrowserSideNavigationEnabled()); 1142 CHECK(IsBrowserSideNavigationEnabled());
1143 speculative_render_frame_host_->GetProcess()->RemovePendingView(); 1143 speculative_render_frame_host_->GetProcess()->RemovePendingView();
1144 return speculative_render_frame_host_.Pass(); 1144 return std::move(speculative_render_frame_host_);
1145 } 1145 }
1146 1146
1147 void RenderFrameHostManager::OnDidStartLoading() { 1147 void RenderFrameHostManager::OnDidStartLoading() {
1148 for (const auto& pair : *proxy_hosts_) { 1148 for (const auto& pair : *proxy_hosts_) {
1149 pair.second->Send( 1149 pair.second->Send(
1150 new FrameMsg_DidStartLoading(pair.second->GetRoutingID())); 1150 new FrameMsg_DidStartLoading(pair.second->GetRoutingID()));
1151 } 1151 }
1152 } 1152 }
1153 1153
1154 void RenderFrameHostManager::OnDidStopLoading() { 1154 void RenderFrameHostManager::OnDidStopLoading() {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1212 // Delete the proxy. If it is for a main frame (and thus the RFH is stored 1212 // Delete the proxy. If it is for a main frame (and thus the RFH is stored
1213 // in the proxy) and it was still pending swap out, move the RFH to the 1213 // in the proxy) and it was still pending swap out, move the RFH to the
1214 // pending deletion list first. 1214 // pending deletion list first.
1215 if (node->IsMainFrame() && 1215 if (node->IsMainFrame() &&
1216 proxy->render_frame_host() && 1216 proxy->render_frame_host() &&
1217 proxy->render_frame_host()->rfh_state() == 1217 proxy->render_frame_host()->rfh_state() ==
1218 RenderFrameHostImpl::STATE_PENDING_SWAP_OUT) { 1218 RenderFrameHostImpl::STATE_PENDING_SWAP_OUT) {
1219 DCHECK(!SiteIsolationPolicy::IsSwappedOutStateForbidden()); 1219 DCHECK(!SiteIsolationPolicy::IsSwappedOutStateForbidden());
1220 scoped_ptr<RenderFrameHostImpl> swapped_out_rfh = 1220 scoped_ptr<RenderFrameHostImpl> swapped_out_rfh =
1221 proxy->PassFrameHostOwnership(); 1221 proxy->PassFrameHostOwnership();
1222 node->render_manager()->MoveToPendingDeleteHosts(swapped_out_rfh.Pass()); 1222 node->render_manager()->MoveToPendingDeleteHosts(
1223 std::move(swapped_out_rfh));
1223 } 1224 }
1224 node->render_manager()->proxy_hosts_->Remove(site_instance_id); 1225 node->render_manager()->proxy_hosts_->Remove(site_instance_id);
1225 } 1226 }
1226 1227
1227 return true; 1228 return true;
1228 } 1229 }
1229 1230
1230 // static. 1231 // static.
1231 bool RenderFrameHostManager::ResetProxiesInSiteInstance( 1232 bool RenderFrameHostManager::ResetProxiesInSiteInstance(
1232 int32_t site_instance_id, 1233 int32_t site_instance_id,
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
1873 1874
1874 // Prevent the process from exiting while we're trying to navigate in it. 1875 // Prevent the process from exiting while we're trying to navigate in it.
1875 // Otherwise, if the new RFH is swapped out already, store it. 1876 // Otherwise, if the new RFH is swapped out already, store it.
1876 if (!swapped_out) { 1877 if (!swapped_out) {
1877 new_render_frame_host->GetProcess()->AddPendingView(); 1878 new_render_frame_host->GetProcess()->AddPendingView();
1878 } else { 1879 } else {
1879 proxy = new RenderFrameProxyHost( 1880 proxy = new RenderFrameProxyHost(
1880 new_render_frame_host->GetSiteInstance(), 1881 new_render_frame_host->GetSiteInstance(),
1881 new_render_frame_host->render_view_host(), frame_tree_node_); 1882 new_render_frame_host->render_view_host(), frame_tree_node_);
1882 proxy_hosts_->Add(instance->GetId(), make_scoped_ptr(proxy)); 1883 proxy_hosts_->Add(instance->GetId(), make_scoped_ptr(proxy));
1883 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass()); 1884 proxy->TakeFrameHostOwnership(std::move(new_render_frame_host));
1884 } 1885 }
1885 1886
1886 if (frame_tree_node_->IsMainFrame()) { 1887 if (frame_tree_node_->IsMainFrame()) {
1887 success = InitRenderView(render_view_host, proxy); 1888 success = InitRenderView(render_view_host, proxy);
1888 1889
1889 // If we are reusing the RenderViewHost and it doesn't already have a 1890 // If we are reusing the RenderViewHost and it doesn't already have a
1890 // RenderWidgetHostView, we need to create one if this is the main frame. 1891 // RenderWidgetHostView, we need to create one if this is the main frame.
1891 if (!swapped_out && !render_view_host->GetWidget()->GetView()) 1892 if (!swapped_out && !render_view_host->GetWidget()->GetView())
1892 delegate_->CreateRenderWidgetHostViewForRenderManager(render_view_host); 1893 delegate_->CreateRenderWidgetHostViewForRenderManager(render_view_host);
1893 } else { 1894 } else {
(...skipping 22 matching lines...) Expand all
1916 1917
1917 if (success) { 1918 if (success) {
1918 if (view_routing_id_ptr) 1919 if (view_routing_id_ptr)
1919 *view_routing_id_ptr = render_view_host->GetRoutingID(); 1920 *view_routing_id_ptr = render_view_host->GetRoutingID();
1920 } 1921 }
1921 } 1922 }
1922 1923
1923 // Returns the new RFH if it isn't swapped out. 1924 // Returns the new RFH if it isn't swapped out.
1924 if (success && !swapped_out) { 1925 if (success && !swapped_out) {
1925 DCHECK(new_render_frame_host->GetSiteInstance() == instance); 1926 DCHECK(new_render_frame_host->GetSiteInstance() == instance);
1926 return new_render_frame_host.Pass(); 1927 return new_render_frame_host;
1927 } 1928 }
1928 return nullptr; 1929 return nullptr;
1929 } 1930 }
1930 1931
1931 int RenderFrameHostManager::CreateRenderFrameProxy(SiteInstance* instance) { 1932 int RenderFrameHostManager::CreateRenderFrameProxy(SiteInstance* instance) {
1932 // A RenderFrameProxyHost should never be created in the same SiteInstance as 1933 // A RenderFrameProxyHost should never be created in the same SiteInstance as
1933 // the current RFH. 1934 // the current RFH.
1934 CHECK(instance); 1935 CHECK(instance);
1935 CHECK_NE(instance, render_frame_host_->GetSiteInstance()); 1936 CHECK_NE(instance, render_frame_host_->GetSiteInstance());
1936 1937
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
2164 2165
2165 // While the old frame is still current, remove its children from the tree. 2166 // While the old frame is still current, remove its children from the tree.
2166 frame_tree_node_->ResetForNewProcess(); 2167 frame_tree_node_->ResetForNewProcess();
2167 2168
2168 // Swap in the pending or speculative frame and make it active. Also ensure 2169 // Swap in the pending or speculative frame and make it active. Also ensure
2169 // the FrameTree stays in sync. 2170 // the FrameTree stays in sync.
2170 scoped_ptr<RenderFrameHostImpl> old_render_frame_host; 2171 scoped_ptr<RenderFrameHostImpl> old_render_frame_host;
2171 if (!IsBrowserSideNavigationEnabled()) { 2172 if (!IsBrowserSideNavigationEnabled()) {
2172 DCHECK(!speculative_render_frame_host_); 2173 DCHECK(!speculative_render_frame_host_);
2173 old_render_frame_host = 2174 old_render_frame_host =
2174 SetRenderFrameHost(pending_render_frame_host_.Pass()); 2175 SetRenderFrameHost(std::move(pending_render_frame_host_));
2175 } else { 2176 } else {
2176 // PlzNavigate 2177 // PlzNavigate
2177 DCHECK(speculative_render_frame_host_); 2178 DCHECK(speculative_render_frame_host_);
2178 old_render_frame_host = 2179 old_render_frame_host =
2179 SetRenderFrameHost(speculative_render_frame_host_.Pass()); 2180 SetRenderFrameHost(std::move(speculative_render_frame_host_));
2180 } 2181 }
2181 2182
2182 // The process will no longer try to exit, so we can decrement the count. 2183 // The process will no longer try to exit, so we can decrement the count.
2183 render_frame_host_->GetProcess()->RemovePendingView(); 2184 render_frame_host_->GetProcess()->RemovePendingView();
2184 2185
2185 // Show the new view (or a sad tab) if necessary. 2186 // Show the new view (or a sad tab) if necessary.
2186 bool new_rfh_has_view = !!render_frame_host_->GetView(); 2187 bool new_rfh_has_view = !!render_frame_host_->GetView();
2187 if (!delegate_->IsHidden() && new_rfh_has_view) { 2188 if (!delegate_->IsHidden() && new_rfh_has_view) {
2188 // In most cases, we need to show the new view. 2189 // In most cases, we need to show the new view.
2189 render_frame_host_->GetView()->Show(); 2190 render_frame_host_->GetView()->Show();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2237 old_render_frame_host->render_view_host()->set_main_frame_routing_id( 2238 old_render_frame_host->render_view_host()->set_main_frame_routing_id(
2238 MSG_ROUTING_NONE); 2239 MSG_ROUTING_NONE);
2239 } 2240 }
2240 2241
2241 // Swap out the old frame now that the new one is visible. 2242 // Swap out the old frame now that the new one is visible.
2242 // This will swap it out and then put it on the proxy list (if there are other 2243 // This will swap it out and then put it on the proxy list (if there are other
2243 // active views in its SiteInstance) or schedule it for deletion when the swap 2244 // active views in its SiteInstance) or schedule it for deletion when the swap
2244 // out ack arrives (or immediately if the process isn't live). 2245 // out ack arrives (or immediately if the process isn't live).
2245 // In the --site-per-process case, old subframe RFHs are not kept alive inside 2246 // In the --site-per-process case, old subframe RFHs are not kept alive inside
2246 // the proxy. 2247 // the proxy.
2247 SwapOutOldFrame(old_render_frame_host.Pass()); 2248 SwapOutOldFrame(std::move(old_render_frame_host));
2248 2249
2249 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { 2250 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) {
2250 // Since the new RenderFrameHost is now committed, there must be no proxies 2251 // Since the new RenderFrameHost is now committed, there must be no proxies
2251 // for its SiteInstance. Delete any existing ones. 2252 // for its SiteInstance. Delete any existing ones.
2252 proxy_hosts_->Remove(render_frame_host_->GetSiteInstance()->GetId()); 2253 proxy_hosts_->Remove(render_frame_host_->GetSiteInstance()->GetId());
2253 } 2254 }
2254 2255
2255 // If this is a subframe, it should have a CrossProcessFrameConnector 2256 // If this is a subframe, it should have a CrossProcessFrameConnector
2256 // created already. Use it to link the new RFH's view to the proxy that 2257 // created already. Use it to link the new RFH's view to the proxy that
2257 // belongs to the parent frame's SiteInstance. If this navigation causes 2258 // belongs to the parent frame's SiteInstance. If this navigation causes
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
2483 void RenderFrameHostManager::CancelPending() { 2484 void RenderFrameHostManager::CancelPending() {
2484 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", 2485 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending",
2485 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); 2486 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id());
2486 render_frame_host_->ClearPendingWebUI(); 2487 render_frame_host_->ClearPendingWebUI();
2487 DiscardUnusedFrame(UnsetPendingRenderFrameHost()); 2488 DiscardUnusedFrame(UnsetPendingRenderFrameHost());
2488 } 2489 }
2489 2490
2490 scoped_ptr<RenderFrameHostImpl> 2491 scoped_ptr<RenderFrameHostImpl>
2491 RenderFrameHostManager::UnsetPendingRenderFrameHost() { 2492 RenderFrameHostManager::UnsetPendingRenderFrameHost() {
2492 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host = 2493 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host =
2493 pending_render_frame_host_.Pass(); 2494 std::move(pending_render_frame_host_);
2494 2495
2495 RenderFrameDevToolsAgentHost::OnCancelPendingNavigation( 2496 RenderFrameDevToolsAgentHost::OnCancelPendingNavigation(
2496 pending_render_frame_host.get(), 2497 pending_render_frame_host.get(),
2497 render_frame_host_.get()); 2498 render_frame_host_.get());
2498 2499
2499 // We no longer need to prevent the process from exiting. 2500 // We no longer need to prevent the process from exiting.
2500 pending_render_frame_host->GetProcess()->RemovePendingView(); 2501 pending_render_frame_host->GetProcess()->RemovePendingView();
2501 2502
2502 return pending_render_frame_host.Pass(); 2503 return pending_render_frame_host;
2503 } 2504 }
2504 2505
2505 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::SetRenderFrameHost( 2506 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::SetRenderFrameHost(
2506 scoped_ptr<RenderFrameHostImpl> render_frame_host) { 2507 scoped_ptr<RenderFrameHostImpl> render_frame_host) {
2507 // Swap the two. 2508 // Swap the two.
2508 scoped_ptr<RenderFrameHostImpl> old_render_frame_host = 2509 scoped_ptr<RenderFrameHostImpl> old_render_frame_host =
2509 render_frame_host_.Pass(); 2510 std::move(render_frame_host_);
2510 render_frame_host_ = render_frame_host.Pass(); 2511 render_frame_host_ = std::move(render_frame_host);
2511 2512
2512 if (frame_tree_node_->IsMainFrame()) { 2513 if (frame_tree_node_->IsMainFrame()) {
2513 // Update the count of top-level frames using this SiteInstance. All 2514 // Update the count of top-level frames using this SiteInstance. All
2514 // subframes are in the same BrowsingInstance as the main frame, so we only 2515 // subframes are in the same BrowsingInstance as the main frame, so we only
2515 // count top-level ones. This makes the value easier for consumers to 2516 // count top-level ones. This makes the value easier for consumers to
2516 // interpret. 2517 // interpret.
2517 if (render_frame_host_) { 2518 if (render_frame_host_) {
2518 render_frame_host_->GetSiteInstance()-> 2519 render_frame_host_->GetSiteInstance()->
2519 IncrementRelatedActiveContentsCount(); 2520 IncrementRelatedActiveContentsCount();
2520 } 2521 }
2521 if (old_render_frame_host) { 2522 if (old_render_frame_host) {
2522 old_render_frame_host->GetSiteInstance()-> 2523 old_render_frame_host->GetSiteInstance()->
2523 DecrementRelatedActiveContentsCount(); 2524 DecrementRelatedActiveContentsCount();
2524 } 2525 }
2525 } 2526 }
2526 2527
2527 return old_render_frame_host.Pass(); 2528 return old_render_frame_host;
2528 } 2529 }
2529 2530
2530 bool RenderFrameHostManager::IsRVHOnSwappedOutList( 2531 bool RenderFrameHostManager::IsRVHOnSwappedOutList(
2531 RenderViewHostImpl* rvh) const { 2532 RenderViewHostImpl* rvh) const {
2532 RenderFrameProxyHost* proxy = GetRenderFrameProxyHost( 2533 RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(
2533 rvh->GetSiteInstance()); 2534 rvh->GetSiteInstance());
2534 if (!proxy) 2535 if (!proxy)
2535 return false; 2536 return false;
2536 // If there is a proxy without RFH, it is for a subframe in the SiteInstance 2537 // If there is a proxy without RFH, it is for a subframe in the SiteInstance
2537 // of |rvh|. Subframes should be ignored in this case. 2538 // of |rvh|. Subframes should be ignored in this case.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
2682 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { 2683 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) {
2683 if (!frame_tree_node_->opener()) 2684 if (!frame_tree_node_->opener())
2684 return MSG_ROUTING_NONE; 2685 return MSG_ROUTING_NONE;
2685 2686
2686 return frame_tree_node_->opener() 2687 return frame_tree_node_->opener()
2687 ->render_manager() 2688 ->render_manager()
2688 ->GetRoutingIdForSiteInstance(instance); 2689 ->GetRoutingIdForSiteInstance(instance);
2689 } 2690 }
2690 2691
2691 } // namespace content 2692 } // namespace content
OLDNEW
« 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