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 1813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1824 // the window below. | 1824 // the window below. |
1825 if (!browser_->ShouldCloseWindow()) | 1825 if (!browser_->ShouldCloseWindow()) |
1826 return false; | 1826 return false; |
1827 | 1827 |
1828 if (!browser_->tab_strip_model()->empty()) { | 1828 if (!browser_->tab_strip_model()->empty()) { |
1829 // Tab strip isn't empty. Hide the frame (so it appears to have closed | 1829 // Tab strip isn't empty. Hide the frame (so it appears to have closed |
1830 // immediately) and close all the tabs, allowing the renderers to shut | 1830 // immediately) and close all the tabs, allowing the renderers to shut |
1831 // down. When the tab strip is empty we'll be called back again. | 1831 // down. When the tab strip is empty we'll be called back again. |
1832 frame_->Hide(); | 1832 frame_->Hide(); |
1833 browser_->OnWindowClosing(); | 1833 browser_->OnWindowClosing(); |
| 1834 browser_->tab_strip_model()->CloseAllTabs(); |
| 1835 return false; |
| 1836 } else if (!browser_->HasCompletedUnloadProcessing()) { |
| 1837 // The browser needs to finish running unload handlers. |
| 1838 // Hide the frame (so it appears to have closed immediately), and |
| 1839 // the browser will call us back again when it is ready to close. |
| 1840 frame_->Hide(); |
1834 return false; | 1841 return false; |
1835 } | 1842 } |
1836 | 1843 |
1837 // Empty TabStripModel, it's now safe to allow the Window to be closed. | 1844 // Empty TabStripModel, it's now safe to allow the Window to be closed. |
1838 content::NotificationService::current()->Notify( | 1845 content::NotificationService::current()->Notify( |
1839 chrome::NOTIFICATION_WINDOW_CLOSED, | 1846 chrome::NOTIFICATION_WINDOW_CLOSED, |
1840 content::Source<gfx::NativeWindow>(frame_->GetNativeWindow()), | 1847 content::Source<gfx::NativeWindow>(frame_->GetNativeWindow()), |
1841 content::NotificationService::NoDetails()); | 1848 content::NotificationService::NoDetails()); |
1842 return true; | 1849 return true; |
1843 } | 1850 } |
(...skipping 923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2767 // The +1 in the next line creates a 1-px gap between icon and arrow tip. | 2774 // The +1 in the next line creates a 1-px gap between icon and arrow tip. |
2768 gfx::Point icon_bottom(0, location_icon_view->GetImageBounds().bottom() - | 2775 gfx::Point icon_bottom(0, location_icon_view->GetImageBounds().bottom() - |
2769 LocationBarView::kIconInternalPadding + 1); | 2776 LocationBarView::kIconInternalPadding + 1); |
2770 ConvertPointToTarget(location_icon_view, this, &icon_bottom); | 2777 ConvertPointToTarget(location_icon_view, this, &icon_bottom); |
2771 gfx::Point infobar_top(0, infobar_container_->GetVerticalOverlap(NULL)); | 2778 gfx::Point infobar_top(0, infobar_container_->GetVerticalOverlap(NULL)); |
2772 ConvertPointToTarget(infobar_container_, this, &infobar_top); | 2779 ConvertPointToTarget(infobar_container_, this, &infobar_top); |
2773 top_arrow_height = infobar_top.y() - icon_bottom.y(); | 2780 top_arrow_height = infobar_top.y() - icon_bottom.y(); |
2774 } | 2781 } |
2775 return top_arrow_height; | 2782 return top_arrow_height; |
2776 } | 2783 } |
OLD | NEW |