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> |