Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2840)

Unified Diff: ash/wm/custom_frame_view_ash_unittest.cc

Issue 183793011: App windows on ChromeOS cannot be sized to their maximum height (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@appwindow_chromeos_insets
Patch Set: Addressed review comments Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/wm/custom_frame_view_ash.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/custom_frame_view_ash_unittest.cc
diff --git a/ash/wm/custom_frame_view_ash_unittest.cc b/ash/wm/custom_frame_view_ash_unittest.cc
index 97d37f19e60ac4617c0ed2c95264bda235a62b87..953b55c37c3f3761d8cf68ebe8080ca0dcdc9718 100644
--- a/ash/wm/custom_frame_view_ash_unittest.cc
+++ b/ash/wm/custom_frame_view_ash_unittest.cc
@@ -14,8 +14,6 @@
namespace ash {
-namespace {
-
// A views::WidgetDelegate which uses a CustomFrameViewAsh.
class TestWidgetDelegate : public views::WidgetDelegateView {
public:
@@ -30,7 +28,7 @@ class TestWidgetDelegate : public views::WidgetDelegateView {
return custom_frame_view_;
}
- CustomFrameViewAsh* custom_frame_view() {
+ CustomFrameViewAsh* custom_frame_view() const {
return custom_frame_view_;
}
@@ -41,22 +39,74 @@ class TestWidgetDelegate : public views::WidgetDelegateView {
DISALLOW_COPY_AND_ASSIGN(TestWidgetDelegate);
};
-} // namespace
+class TestWidgetConstraintsDelegate : public TestWidgetDelegate {
+ public:
+ TestWidgetConstraintsDelegate() {
+ }
+ virtual ~TestWidgetConstraintsDelegate() {
+ }
+
+ // views::View implementation.
+ virtual gfx::Size GetMinimumSize() OVERRIDE {
+ return minimum_size_;
+ }
+
+ virtual gfx::Size GetMaximumSize() OVERRIDE {
+ return maximum_size_;
+ }
+
+ virtual views::View* GetContentsView() OVERRIDE {
+ // Set this instance as the contents view so that the maximum and minimum
+ // size constraints will be used.
+ return this;
+ }
+
+ void set_minimum_size(const gfx::Size& min_size) {
+ minimum_size_ = min_size;
+ }
+
+ void set_maximum_size(const gfx::Size& max_size) {
+ maximum_size_ = max_size;
+ }
+
+ int GetTitleBarHeight() const {
+ return custom_frame_view()->NonClientTopBorderHeight();
+ }
+
+ private:
+ gfx::Size minimum_size_;
+ gfx::Size maximum_size_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestWidgetConstraintsDelegate);
+};
+
+class CustomFrameViewAshTest : public test::AshTestBase {
+ public:
+ CustomFrameViewAshTest() {}
+ virtual ~CustomFrameViewAshTest() {}
+
+ protected:
+ scoped_ptr<views::Widget> CreateWidget(TestWidgetDelegate* delegate) {
+ scoped_ptr<views::Widget> widget(new views::Widget);
+ views::Widget::InitParams params;
+ params.delegate = delegate;
+ params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ params.bounds = gfx::Rect(0, 0, 100, 100);
+ params.context = CurrentContext();
+ widget->Init(params);
+ return widget.Pass();
+ }
-typedef test::AshTestBase CustomFrameViewAshTest;
+ private:
+ DISALLOW_COPY_AND_ASSIGN(CustomFrameViewAshTest);
+};
// Test that the height of the header is correct upon initially displaying
// the widget.
TEST_F(CustomFrameViewAshTest, HeaderHeight) {
TestWidgetDelegate* delegate = new TestWidgetDelegate;
- scoped_ptr<views::Widget> widget(new views::Widget);
- views::Widget::InitParams params;
- params.delegate = delegate;
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- params.bounds = gfx::Rect(0, 0, 100, 100);
- params.context = CurrentContext();
- widget->Init(params);
+ scoped_ptr<views::Widget> widget(CreateWidget(delegate));
widget->Show();
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
@@ -79,4 +129,43 @@ TEST_F(CustomFrameViewAshTest, HeaderHeight) {
delegate->custom_frame_view()->GetHeaderView()->height());
}
+// Verify that CustomFrameViewAsh returns the correct minimum and maximum frame
+// sizes when the client view does not specify any size constraints.
+TEST_F(CustomFrameViewAshTest, NoSizeConstraints) {
+ TestWidgetConstraintsDelegate* delegate = new TestWidgetConstraintsDelegate;
+ scoped_ptr<views::Widget> widget(CreateWidget(delegate));
+
+ CustomFrameViewAsh* custom_frame_view = delegate->custom_frame_view();
+ gfx::Size min_frame_size = custom_frame_view->GetMinimumSize();
+ gfx::Size max_frame_size = custom_frame_view->GetMaximumSize();
+
+ EXPECT_EQ(delegate->GetTitleBarHeight(), min_frame_size.height());
+
+ // A width and height constraint of 0 denotes unbounded.
+ EXPECT_EQ(0, max_frame_size.width());
+ EXPECT_EQ(0, max_frame_size.height());
+}
+
+// Verify that CustomFrameViewAsh returns the correct minimum and maximum frame
+// sizes when the client view specifies size constraints.
+TEST_F(CustomFrameViewAshTest, MinimumAndMaximumSize) {
+ gfx::Size min_client_size(500, 500);
+ gfx::Size max_client_size(800, 800);
+ TestWidgetConstraintsDelegate* delegate = new TestWidgetConstraintsDelegate;
+ delegate->set_minimum_size(min_client_size);
+ delegate->set_maximum_size(max_client_size);
+ scoped_ptr<views::Widget> widget(CreateWidget(delegate));
+
+ CustomFrameViewAsh* custom_frame_view = delegate->custom_frame_view();
+ gfx::Size min_frame_size = custom_frame_view->GetMinimumSize();
+ gfx::Size max_frame_size = custom_frame_view->GetMaximumSize();
+
+ EXPECT_EQ(min_client_size.width(), min_frame_size.width());
+ EXPECT_EQ(max_client_size.width(), max_frame_size.width());
+ EXPECT_EQ(min_client_size.height() + delegate->GetTitleBarHeight(),
+ min_frame_size.height());
+ EXPECT_EQ(max_client_size.height() + delegate->GetTitleBarHeight(),
+ max_frame_size.height());
+}
+
} // namespace ash
« no previous file with comments | « ash/wm/custom_frame_view_ash.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698