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 |