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 edd5723d8bb547db8e48c0e3ab20d4c5e3457dbd..e6e93d96f64bbbbcb7c1d75d017efb528f705af2 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.cc |
+++ b/content/browser/frame_host/render_frame_host_manager.cc |
@@ -239,7 +239,13 @@ void RenderFrameHostManager::SetIsLoading(bool is_loading) { |
} |
bool RenderFrameHostManager::ShouldCloseTabOnUnresponsiveRenderer() { |
- if (!cross_navigation_pending_) |
+ // If we're waiting for a close ACK, then the tab should close whether there's |
+ // a navigation in progress or not. Unfortunately, we also need to check for |
+ // cases that we arrive here with no navigation in progress, since there are |
+ // some tab closure paths that don't set is_waiting_for_close_ack to true. |
+ // TODO(creis): Clean this up in http://crbug.com/418266. |
+ if (!cross_navigation_pending_ || |
+ render_frame_host_->render_view_host()->is_waiting_for_close_ack()) |
return true; |
// We should always have a pending RFH when there's a cross-process navigation |