| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/frame/browser_view.h" | 5 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 1831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1842 // session. | 1842 // session. |
| 1843 if (tabstrip_ && !tabstrip_->IsTabStripCloseable()) | 1843 if (tabstrip_ && !tabstrip_->IsTabStripCloseable()) |
| 1844 return false; | 1844 return false; |
| 1845 | 1845 |
| 1846 // Give beforeunload handlers the chance to cancel the close before we hide | 1846 // Give beforeunload handlers the chance to cancel the close before we hide |
| 1847 // the window below. | 1847 // the window below. |
| 1848 if (!browser_->ShouldCloseWindow()) | 1848 if (!browser_->ShouldCloseWindow()) |
| 1849 return false; | 1849 return false; |
| 1850 | 1850 |
| 1851 if (!browser_->tab_strip_model()->empty()) { | 1851 if (!browser_->tab_strip_model()->empty()) { |
| 1852 // Tab strip isn't empty. Hide the frame (so it appears to have closed |
| 1853 // immediately) and close all the tabs, allowing the renderers to shut |
| 1854 // down. When the tab strip is empty we'll be called back again. |
| 1852 frame_->Hide(); | 1855 frame_->Hide(); |
| 1853 browser_->OnWindowClosing(); | 1856 browser_->OnWindowClosing(); |
| 1854 browser_->tab_strip_model()->CloseAllTabs(); | |
| 1855 return false; | |
| 1856 } else if (!browser_->HasCompletedUnloadProcessing()) { | |
| 1857 // The browser needs to finish running unload handlers. | |
| 1858 // Hide the window (so it appears to have closed immediately), and | |
| 1859 // the browser will call us back again when it is ready to close. | |
| 1860 frame_->Hide(); | |
| 1861 return false; | 1857 return false; |
| 1862 } | 1858 } |
| 1863 | 1859 |
| 1864 // Empty TabStripModel, it's now safe to allow the Window to be closed. | 1860 // Empty TabStripModel, it's now safe to allow the Window to be closed. |
| 1865 content::NotificationService::current()->Notify( | 1861 content::NotificationService::current()->Notify( |
| 1866 chrome::NOTIFICATION_WINDOW_CLOSED, | 1862 chrome::NOTIFICATION_WINDOW_CLOSED, |
| 1867 content::Source<gfx::NativeWindow>(frame_->GetNativeWindow()), | 1863 content::Source<gfx::NativeWindow>(frame_->GetNativeWindow()), |
| 1868 content::NotificationService::NoDetails()); | 1864 content::NotificationService::NoDetails()); |
| 1869 return true; | 1865 return true; |
| 1870 } | 1866 } |
| (...skipping 866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2737 | 2733 |
| 2738 Browser* modal_browser = | 2734 Browser* modal_browser = |
| 2739 chrome::FindBrowserWithWebContents(active_dialog->web_contents()); | 2735 chrome::FindBrowserWithWebContents(active_dialog->web_contents()); |
| 2740 if (modal_browser && (browser_ != modal_browser)) { | 2736 if (modal_browser && (browser_ != modal_browser)) { |
| 2741 modal_browser->window()->FlashFrame(true); | 2737 modal_browser->window()->FlashFrame(true); |
| 2742 modal_browser->window()->Activate(); | 2738 modal_browser->window()->Activate(); |
| 2743 } | 2739 } |
| 2744 | 2740 |
| 2745 AppModalDialogQueue::GetInstance()->ActivateModalDialog(); | 2741 AppModalDialogQueue::GetInstance()->ActivateModalDialog(); |
| 2746 } | 2742 } |
| OLD | NEW |