Index: content/browser/web_contents/render_view_host_manager.cc |
diff --git a/content/browser/web_contents/render_view_host_manager.cc b/content/browser/web_contents/render_view_host_manager.cc |
index 208829ab3f7882a414b0497dfc1cef5c7b2d00d6..4cbd0fc4f7d6cbe424b7bbe592b79eb1652f073d 100644 |
--- a/content/browser/web_contents/render_view_host_manager.cc |
+++ b/content/browser/web_contents/render_view_host_manager.cc |
@@ -832,10 +832,6 @@ RenderViewHostImpl* RenderViewHostManager::UpdateRendererStateForNavigate( |
} |
// Otherwise, it's safe to treat this as a pending cross-site transition. |
- // Make sure the old render view stops, in case a load is in progress. |
- render_view_host_->Send( |
- new ViewMsg_Stop(render_view_host_->GetRoutingID())); |
- |
// We need to wait until the beforeunload handler has run, unless we are |
// transferring an existing request (in which case it has already run). |
// Suspend the new render view (i.e., don't let it send the cross-site |
@@ -846,6 +842,12 @@ RenderViewHostImpl* RenderViewHostManager::UpdateRendererStateForNavigate( |
bool is_transfer = |
entry.transferred_global_request_id() != GlobalRequestID(); |
if (!is_transfer) { |
+ // Also make sure the old render view stops, in case a load is in |
+ // progress. (We don't want to do this for transfers, since it will |
+ // interrupt the transfer with an unexpected DidStopLoading.) |
+ render_view_host_->Send( |
+ new ViewMsg_Stop(render_view_host_->GetRoutingID())); |
+ |
pending_render_view_host_->SetNavigationsSuspended(true, |
base::TimeTicks()); |
} |