OLD | NEW |
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 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
905 if (notify_webui_of_rv_creation && GetNavigatingWebUI()) | 905 if (notify_webui_of_rv_creation && GetNavigatingWebUI()) |
906 GetNavigatingWebUI()->RenderViewCreated(navigation_rfh->render_view_host()); | 906 GetNavigatingWebUI()->RenderViewCreated(navigation_rfh->render_view_host()); |
907 | 907 |
908 return navigation_rfh; | 908 return navigation_rfh; |
909 } | 909 } |
910 | 910 |
911 // PlzNavigate | 911 // PlzNavigate |
912 void RenderFrameHostManager::CleanUpNavigation() { | 912 void RenderFrameHostManager::CleanUpNavigation() { |
913 CHECK(IsBrowserSideNavigationEnabled()); | 913 CHECK(IsBrowserSideNavigationEnabled()); |
914 render_frame_host_->ClearPendingWebUI(); | 914 render_frame_host_->ClearPendingWebUI(); |
915 if (speculative_render_frame_host_) | 915 if (speculative_render_frame_host_) { |
| 916 bool was_loading = speculative_render_frame_host_->is_loading(); |
916 DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); | 917 DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); |
| 918 if (was_loading) |
| 919 frame_tree_node_->DidStopLoading(); |
| 920 } |
917 } | 921 } |
918 | 922 |
919 // PlzNavigate | 923 // PlzNavigate |
920 scoped_ptr<RenderFrameHostImpl> | 924 scoped_ptr<RenderFrameHostImpl> |
921 RenderFrameHostManager::UnsetSpeculativeRenderFrameHost() { | 925 RenderFrameHostManager::UnsetSpeculativeRenderFrameHost() { |
922 CHECK(IsBrowserSideNavigationEnabled()); | 926 CHECK(IsBrowserSideNavigationEnabled()); |
923 speculative_render_frame_host_->GetProcess()->RemovePendingView(); | 927 speculative_render_frame_host_->GetProcess()->RemovePendingView(); |
924 return std::move(speculative_render_frame_host_); | 928 return std::move(speculative_render_frame_host_); |
925 } | 929 } |
926 | 930 |
(...skipping 1068 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1995 if (!delegate_->IsHidden() && new_rfh_has_view) { | 1999 if (!delegate_->IsHidden() && new_rfh_has_view) { |
1996 // In most cases, we need to show the new view. | 2000 // In most cases, we need to show the new view. |
1997 render_frame_host_->GetView()->Show(); | 2001 render_frame_host_->GetView()->Show(); |
1998 } | 2002 } |
1999 if (!new_rfh_has_view) { | 2003 if (!new_rfh_has_view) { |
2000 // If the view is gone, then this RenderViewHost died while it was hidden. | 2004 // If the view is gone, then this RenderViewHost died while it was hidden. |
2001 // We ignored the RenderProcessGone call at the time, so we should send it | 2005 // We ignored the RenderProcessGone call at the time, so we should send it |
2002 // now to make sure the sad tab shows up, etc. | 2006 // now to make sure the sad tab shows up, etc. |
2003 DCHECK(!render_frame_host_->IsRenderFrameLive()); | 2007 DCHECK(!render_frame_host_->IsRenderFrameLive()); |
2004 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); | 2008 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); |
| 2009 render_frame_host_->ResetLoadingState(); |
2005 delegate_->RenderProcessGoneFromRenderManager( | 2010 delegate_->RenderProcessGoneFromRenderManager( |
2006 render_frame_host_->render_view_host()); | 2011 render_frame_host_->render_view_host()); |
2007 } | 2012 } |
2008 | 2013 |
2009 // For top-level frames, also hide the old RenderViewHost's view. | 2014 // For top-level frames, also hide the old RenderViewHost's view. |
2010 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on | 2015 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on |
2011 // subframe navigations or we will interfere with the top-level frame. | 2016 // subframe navigations or we will interfere with the top-level frame. |
2012 if (is_main_frame && | 2017 if (is_main_frame && |
2013 old_render_frame_host->render_view_host()->GetWidget()->GetView()) { | 2018 old_render_frame_host->render_view_host()->GetWidget()->GetView()) { |
2014 old_render_frame_host->render_view_host()->GetWidget()->GetView()->Hide(); | 2019 old_render_frame_host->render_view_host()->GetWidget()->GetView()->Hide(); |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2246 render_frame_host_->pending_web_ui()->RenderViewCreated( | 2251 render_frame_host_->pending_web_ui()->RenderViewCreated( |
2247 render_frame_host_->render_view_host()); | 2252 render_frame_host_->render_view_host()); |
2248 } | 2253 } |
2249 } | 2254 } |
2250 } | 2255 } |
2251 | 2256 |
2252 void RenderFrameHostManager::CancelPending() { | 2257 void RenderFrameHostManager::CancelPending() { |
2253 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", | 2258 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", |
2254 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); | 2259 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); |
2255 render_frame_host_->ClearPendingWebUI(); | 2260 render_frame_host_->ClearPendingWebUI(); |
| 2261 |
| 2262 bool pending_was_loading = pending_render_frame_host_->is_loading(); |
2256 DiscardUnusedFrame(UnsetPendingRenderFrameHost()); | 2263 DiscardUnusedFrame(UnsetPendingRenderFrameHost()); |
| 2264 if (pending_was_loading) |
| 2265 frame_tree_node_->DidStopLoading(); |
2257 } | 2266 } |
2258 | 2267 |
2259 scoped_ptr<RenderFrameHostImpl> | 2268 scoped_ptr<RenderFrameHostImpl> |
2260 RenderFrameHostManager::UnsetPendingRenderFrameHost() { | 2269 RenderFrameHostManager::UnsetPendingRenderFrameHost() { |
2261 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host = | 2270 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host = |
2262 std::move(pending_render_frame_host_); | 2271 std::move(pending_render_frame_host_); |
2263 | 2272 |
2264 RenderFrameDevToolsAgentHost::OnCancelPendingNavigation( | 2273 RenderFrameDevToolsAgentHost::OnCancelPendingNavigation( |
2265 pending_render_frame_host.get(), | 2274 pending_render_frame_host.get(), |
2266 render_frame_host_.get()); | 2275 render_frame_host_.get()); |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2480 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { | 2489 int RenderFrameHostManager::GetOpenerRoutingID(SiteInstance* instance) { |
2481 if (!frame_tree_node_->opener()) | 2490 if (!frame_tree_node_->opener()) |
2482 return MSG_ROUTING_NONE; | 2491 return MSG_ROUTING_NONE; |
2483 | 2492 |
2484 return frame_tree_node_->opener() | 2493 return frame_tree_node_->opener() |
2485 ->render_manager() | 2494 ->render_manager() |
2486 ->GetRoutingIdForSiteInstance(instance); | 2495 ->GetRoutingIdForSiteInstance(instance); |
2487 } | 2496 } |
2488 | 2497 |
2489 } // namespace content | 2498 } // namespace content |
OLD | NEW |