Index: chrome/browser/ui/cocoa/browser_window_controller.mm |
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.mm b/chrome/browser/ui/cocoa/browser_window_controller.mm |
index 232a11952408d0a771340e36f51c3749b97b4ade..9c637694dab9e74dfe3286c27a0f4d2cbed505b8 100644 |
--- a/chrome/browser/ui/cocoa/browser_window_controller.mm |
+++ b/chrome/browser/ui/cocoa/browser_window_controller.mm |
@@ -594,11 +594,18 @@ enum { |
[self saveWindowPositionIfNeeded]; |
if (!browser_->tab_strip_model()->empty()) { |
- // Tab strip isn't empty. Hide the frame (so it appears to have closed |
+ // Tab strip isn't empty. Hide the window (so it appears to have closed |
// immediately) and close all the tabs, allowing the renderers to shut |
// down. When the tab strip is empty we'll be called back again. |
[[self window] orderOut:self]; |
browser_->OnWindowClosing(); |
+ browser_->tab_strip_model()->CloseAllTabs(); |
+ return NO; |
+ } else if (!browser_->HasCompletedUnloadProcessing()) { |
+ // The browser needs to finish running unload handlers. |
+ // Hide the window (so it appears to have closed immediately), and |
+ // the browser will call us back again when it is ready to close. |
+ [[self window] orderOut:self]; |
return NO; |
} |