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 093dd4a5fa85ed7230706417ef6207286ebcef31..0d058d11194a1d573b23ea3455e3e1f5f5073e25 100644 |
| --- a/content/browser/frame_host/render_frame_host_manager.cc |
| +++ b/content/browser/frame_host/render_frame_host_manager.cc |
| @@ -958,8 +958,12 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation( |
| void RenderFrameHostManager::CleanUpNavigation() { |
| CHECK(IsBrowserSideNavigationEnabled()); |
| render_frame_host_->ClearPendingWebUI(); |
| - if (speculative_render_frame_host_) |
| + if (speculative_render_frame_host_) { |
| + bool was_loading = speculative_render_frame_host_->is_loading(); |
| DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost()); |
| + if (was_loading) |
| + frame_tree_node_->DidStopLoading(); |
| + } |
| } |
| // PlzNavigate |
| @@ -1029,6 +1033,19 @@ RenderFrameHostManager::SiteInstanceDescriptor::SiteInstanceDescriptor( |
| } |
| void RenderFrameHostManager::RenderProcessGone(SiteInstanceImpl* instance) { |
| + // Reset the loading state of any RenderFrameHost with SiteInstance |
| + // |instance|. |
| + if (render_frame_host_->GetSiteInstance() == instance) |
| + render_frame_host_->ResetLoadingState(); |
| + if (pending_render_frame_host_ && |
| + pending_render_frame_host_->GetSiteInstance() == instance) { |
| + pending_render_frame_host_->ResetLoadingState(); |
| + } |
| + if (IsBrowserSideNavigationEnabled() && speculative_render_frame_host_ && |
|
carlosk
2016/01/15 17:24:04
nit: why not do an if-else on the IsBrowserSideNav
nasko
2016/01/16 00:13:51
Agreed. Having a clear switch with exclusive use o
clamy
2016/01/19 13:31:18
Done.
|
| + speculative_render_frame_host_->GetSiteInstance() == instance) { |
| + speculative_render_frame_host_->ResetLoadingState(); |
| + } |
| + |
| GetRenderFrameProxyHost(instance)->set_render_frame_proxy_created(false); |
| } |
| @@ -2022,6 +2039,7 @@ void RenderFrameHostManager::CommitPending() { |
| // now to make sure the sad tab shows up, etc. |
| DCHECK(!render_frame_host_->IsRenderFrameLive()); |
| DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); |
| + render_frame_host_->ResetLoadingState(); |
| delegate_->RenderProcessGoneFromRenderManager( |
| render_frame_host_->render_view_host()); |
| } |
| @@ -2273,7 +2291,11 @@ void RenderFrameHostManager::CancelPending() { |
| TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", |
| "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); |
| render_frame_host_->ClearPendingWebUI(); |
| + |
| + bool pending_was_loading = pending_render_frame_host_->is_loading(); |
| DiscardUnusedFrame(UnsetPendingRenderFrameHost()); |
| + if (pending_was_loading) |
| + frame_tree_node_->DidStopLoading(); |
| } |
| scoped_ptr<RenderFrameHostImpl> |