Index: chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc |
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc |
index 18c2b4596da5e27f26aff2cf58a30f0ecb948c4a..a3f03e398e5686b0781777b7aaad8ea06f2a9d5e 100644 |
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc |
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc |
@@ -19,6 +19,7 @@ |
#include "chrome/browser/ui/browser_commands.h" |
#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" |
#include "chrome/browser/ui/exclusive_access/fullscreen_controller_test.h" |
+#include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" |
#include "chrome/browser/ui/views/frame/browser_view.h" |
#include "chrome/browser/ui/views/frame/immersive_mode_controller.h" |
#include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h" |
@@ -26,6 +27,7 @@ |
#include "chrome/browser/ui/views/tabs/tab.h" |
#include "chrome/test/base/in_process_browser_test.h" |
#include "components/signin/core/account_id/account_id.h" |
+#include "ui/aura/client/aura_constants.h" |
#include "ui/base/hit_test.h" |
#include "ui/compositor/scoped_animation_duration_scale_mode.h" |
#include "ui/views/widget/widget.h" |
@@ -291,3 +293,33 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, |
bounds(); |
EXPECT_EQ(initial, after_restore); |
} |
+ |
+// Tests that browser frame minimum size constraint is updated in response to |
+// browser view layout. |
+IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, |
+ FrameMinSizeIsUpdated) { |
+ BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); |
+ Widget* widget = browser_view->GetWidget(); |
+ // We know we're using Ash, so static cast. |
+ BrowserNonClientFrameViewAsh* frame_view = |
+ static_cast<BrowserNonClientFrameViewAsh*>( |
+ widget->non_client_view()->frame_view()); |
+ |
+ BookmarkBarView* bookmark_bar = browser_view->GetBookmarkBarView(); |
+ EXPECT_FALSE(bookmark_bar->visible()); |
+ const int min_height_no_bookmarks = frame_view->GetMinimumSize().height(); |
+ |
+ // Setting non-zero bookmark bar preferred size forces it to be visible and |
+ // triggers BrowserView layout update. |
+ bookmark_bar->SetPreferredSize(gfx::Size(50, 5)); |
+ EXPECT_TRUE(bookmark_bar->visible()); |
+ |
+ // Minimum window size should grow with the bookmark bar shown. |
+ // kMinimumSize window property should get updated. |
+ aura::Window* window = browser()->window()->GetNativeWindow(); |
+ const gfx::Size* min_window_size = |
+ window->GetProperty(aura::client::kMinimumSize); |
+ ASSERT_NE(nullptr, min_window_size); |
+ EXPECT_GT(min_window_size->height(), min_height_no_bookmarks); |
+ EXPECT_EQ(*min_window_size, frame_view->GetMinimumSize()); |
+} |