Index: chrome/browser/ui/views/frame/browser_view_layout.cc |
diff --git a/chrome/browser/ui/views/frame/browser_view_layout.cc b/chrome/browser/ui/views/frame/browser_view_layout.cc |
index e346939d6fc4d0abc55dcb5b8e12a1be15d3d568..bb05f6e583031e202df23863c3bf494b63e5304a 100644 |
--- a/chrome/browser/ui/views/frame/browser_view_layout.cc |
+++ b/chrome/browser/ui/views/frame/browser_view_layout.cc |
@@ -204,7 +204,8 @@ gfx::Size BrowserViewLayout::GetMinimumSize() { |
gfx::Size contents_size(contents_split_->GetMinimumSize()); |
- int min_height = tabstrip_size.height() + toolbar_size.height() + |
+ int min_height = delegate_->GetTopInsetInBrowserView() + |
+ tabstrip_size.height() + toolbar_size.height() + |
bookmark_bar_size.height() + contents_size.height(); |
int widths[] = { |
tabstrip_size.width(), |
@@ -532,8 +533,11 @@ void BrowserViewLayout::LayoutContentsSplitView(int top, int bottom) { |
void BrowserViewLayout::UpdateTopContainerBounds() { |
gfx::Rect top_container_bounds(top_container_->GetPreferredSize()); |
- // If the immersive mode controller is animating the top-of-window views, |
- // part of the top container may be offscreen. |
+ // If the immersive mode controller is animating the top container, it may be |
+ // partly offscreen. The top container is positioned relative to the top of |
+ // the client view instead of relative to GetTopInsetInBrowserView() because |
+ // the top container paints parts of the frame (title, window controls) during |
+ // an immersive reveal. |
top_container_bounds.set_y( |
immersive_mode_controller_->GetTopContainerVerticalOffset( |
top_container_bounds.size())); |