| 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 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 950 if (selected_web_contents) | 950 if (selected_web_contents) |
| 951 selected_web_contents->RestoreFocus(); | 951 selected_web_contents->RestoreFocus(); |
| 952 } | 952 } |
| 953 | 953 |
| 954 void BrowserView::FullscreenStateChanged() { | 954 void BrowserView::FullscreenStateChanged() { |
| 955 CHECK(!IsFullscreen()); | 955 CHECK(!IsFullscreen()); |
| 956 ProcessFullscreen(false, NORMAL_FULLSCREEN, GURL(), FEB_TYPE_NONE); | 956 ProcessFullscreen(false, NORMAL_FULLSCREEN, GURL(), FEB_TYPE_NONE); |
| 957 } | 957 } |
| 958 | 958 |
| 959 void BrowserView::ToolbarSizeChanged(bool is_animating) { | 959 void BrowserView::ToolbarSizeChanged(bool is_animating) { |
| 960 // The call to InfoBarContainer::SetMaxTopArrowHeight() below can result in | 960 // The call to SetMaxTopArrowHeight() below can result in reentrancy; |
| 961 // reentrancy; |call_state| tracks whether we're reentrant. We can't just | 961 // |call_state| tracks whether we're reentrant. We can't just early-return in |
| 962 // early-return in this case because we need to layout again so the infobar | 962 // this case because we need to layout again so the infobar container's bounds |
| 963 // container's bounds are set correctly. | 963 // are set correctly. |
| 964 static CallState call_state = NORMAL; | 964 static CallState call_state = NORMAL; |
| 965 | 965 |
| 966 // A reentrant call can (and should) use the fast resize path unless both it | 966 // A reentrant call can (and should) use the fast resize path unless both it |
| 967 // and the normal call are both non-animating. | 967 // and the normal call are both non-animating. |
| 968 bool use_fast_resize = | 968 bool use_fast_resize = |
| 969 is_animating || (call_state == REENTRANT_FORCE_FAST_RESIZE); | 969 is_animating || (call_state == REENTRANT_FORCE_FAST_RESIZE); |
| 970 if (use_fast_resize) | 970 if (use_fast_resize) |
| 971 contents_web_view_->SetFastResize(true); | 971 contents_web_view_->SetFastResize(true); |
| 972 UpdateUIForContents(GetActiveWebContents()); | 972 UpdateUIForContents(GetActiveWebContents()); |
| 973 if (use_fast_resize) | 973 if (use_fast_resize) |
| 974 contents_web_view_->SetFastResize(false); | 974 contents_web_view_->SetFastResize(false); |
| 975 | 975 |
| 976 // Inform the InfoBarContainer that the distance to the location icon may have | 976 // Inform the InfoBarContainer that the distance to the location icon may have |
| 977 // changed. We have to do this after the block above so that the toolbars are | 977 // changed. We have to do this after the block above so that the toolbars are |
| 978 // laid out correctly for calculating the maximum arrow height below. | 978 // laid out correctly for calculating the maximum arrow height below. |
| 979 { | 979 { |
| 980 base::AutoReset<CallState> resetter(&call_state, | 980 base::AutoReset<CallState> resetter(&call_state, |
| 981 is_animating ? REENTRANT_FORCE_FAST_RESIZE : REENTRANT); | 981 is_animating ? REENTRANT_FORCE_FAST_RESIZE : REENTRANT); |
| 982 infobar_container_->SetMaxTopArrowHeight(GetMaxTopInfoBarArrowHeight()); | 982 SetMaxTopArrowHeight(GetMaxTopInfoBarArrowHeight(), infobar_container_); |
| 983 } | 983 } |
| 984 | 984 |
| 985 // When transitioning from animating to not animating we need to make sure the | 985 // When transitioning from animating to not animating we need to make sure the |
| 986 // contents_container_ gets layed out. If we don't do this and the bounds | 986 // contents_container_ gets layed out. If we don't do this and the bounds |
| 987 // haven't changed contents_container_ won't get a Layout out and we'll end up | 987 // haven't changed contents_container_ won't get a Layout out and we'll end up |
| 988 // with a gray rect because the clip wasn't updated. Note that a reentrant | 988 // with a gray rect because the clip wasn't updated. Note that a reentrant |
| 989 // call never needs to do this, because after it returns, the normal call | 989 // call never needs to do this, because after it returns, the normal call |
| 990 // wrapping it will do it. | 990 // wrapping it will do it. |
| 991 if ((call_state == NORMAL) && !is_animating) { | 991 if ((call_state == NORMAL) && !is_animating) { |
| 992 contents_web_view_->InvalidateLayout(); | 992 contents_web_view_->InvalidateLayout(); |
| (...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1892 | 1892 |
| 1893 chrome::BrowserCommandController* controller = browser_->command_controller(); | 1893 chrome::BrowserCommandController* controller = browser_->command_controller(); |
| 1894 if (!controller->block_command_execution()) | 1894 if (!controller->block_command_execution()) |
| 1895 UpdateAcceleratorMetrics(accelerator, command_id); | 1895 UpdateAcceleratorMetrics(accelerator, command_id); |
| 1896 return chrome::ExecuteCommand(browser_.get(), command_id); | 1896 return chrome::ExecuteCommand(browser_.get(), command_id); |
| 1897 } | 1897 } |
| 1898 | 1898 |
| 1899 /////////////////////////////////////////////////////////////////////////////// | 1899 /////////////////////////////////////////////////////////////////////////////// |
| 1900 // BrowserView, OmniboxPopupModelObserver overrides: | 1900 // BrowserView, OmniboxPopupModelObserver overrides: |
| 1901 void BrowserView::OnOmniboxPopupShownOrHidden() { | 1901 void BrowserView::OnOmniboxPopupShownOrHidden() { |
| 1902 infobar_container_->SetMaxTopArrowHeight(GetMaxTopInfoBarArrowHeight()); | 1902 SetMaxTopArrowHeight(GetMaxTopInfoBarArrowHeight(), infobar_container_); |
| 1903 } | 1903 } |
| 1904 | 1904 |
| 1905 /////////////////////////////////////////////////////////////////////////////// | 1905 /////////////////////////////////////////////////////////////////////////////// |
| 1906 // BrowserView, InfoBarContainer::Delegate overrides: | 1906 // BrowserView, InfoBarContainerDelegate overrides: |
| 1907 |
| 1908 const int InfoBarContainerDelegate::kSeparatorLineHeight = |
| 1909 views::NonClientFrameView::kClientEdgeThickness; |
| 1910 const int InfoBarContainerDelegate::kDefaultArrowTargetHeight = 9; |
| 1907 | 1911 |
| 1908 SkColor BrowserView::GetInfoBarSeparatorColor() const { | 1912 SkColor BrowserView::GetInfoBarSeparatorColor() const { |
| 1909 // NOTE: Keep this in sync with ToolbarView::OnPaint()! | 1913 // NOTE: Keep this in sync with ToolbarView::OnPaint()! |
| 1910 return (IsTabStripVisible() || !frame_->ShouldUseNativeFrame()) ? | 1914 return (IsTabStripVisible() || !frame_->ShouldUseNativeFrame()) ? |
| 1911 ThemeProperties::GetDefaultColor( | 1915 ThemeProperties::GetDefaultColor( |
| 1912 ThemeProperties::COLOR_TOOLBAR_SEPARATOR) : | 1916 ThemeProperties::COLOR_TOOLBAR_SEPARATOR) : |
| 1913 SK_ColorBLACK; | 1917 SK_ColorBLACK; |
| 1914 } | 1918 } |
| 1915 | 1919 |
| 1916 void BrowserView::InfoBarContainerStateChanged(bool is_animating) { | 1920 void BrowserView::InfoBarContainerStateChanged(bool is_animating) { |
| (...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2524 !GetLocationBar()->GetOmniboxView()->model()->popup_model()->IsOpen()) { | 2528 !GetLocationBar()->GetOmniboxView()->model()->popup_model()->IsOpen()) { |
| 2525 gfx::Point icon_bottom( | 2529 gfx::Point icon_bottom( |
| 2526 toolbar_->location_bar()->GetLocationBarAnchorPoint()); | 2530 toolbar_->location_bar()->GetLocationBarAnchorPoint()); |
| 2527 ConvertPointToTarget(toolbar_->location_bar(), this, &icon_bottom); | 2531 ConvertPointToTarget(toolbar_->location_bar(), this, &icon_bottom); |
| 2528 gfx::Point infobar_top(0, infobar_container_->GetVerticalOverlap(nullptr)); | 2532 gfx::Point infobar_top(0, infobar_container_->GetVerticalOverlap(nullptr)); |
| 2529 ConvertPointToTarget(infobar_container_, this, &infobar_top); | 2533 ConvertPointToTarget(infobar_container_, this, &infobar_top); |
| 2530 top_arrow_height = infobar_top.y() - icon_bottom.y(); | 2534 top_arrow_height = infobar_top.y() - icon_bottom.y(); |
| 2531 } | 2535 } |
| 2532 return top_arrow_height; | 2536 return top_arrow_height; |
| 2533 } | 2537 } |
| OLD | NEW |