diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-29 15:06:04 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-29 15:06:04 +0000 |
commit | a1f4eb5b056e68cbd81829e8b1d459c68649814f (patch) | |
tree | e065d24054d09e8861372977f1ad9b8f3b3d2da6 /views/view_unittest.cc | |
parent | 3973da97f5942403c845e2427f365bb0f99ee23d (diff) | |
download | chromium_src-a1f4eb5b056e68cbd81829e8b1d459c68649814f.zip chromium_src-a1f4eb5b056e68cbd81829e8b1d459c68649814f.tar.gz chromium_src-a1f4eb5b056e68cbd81829e8b1d459c68649814f.tar.bz2 |
Convert the rect to the widget's coordinates correctly.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/7276053
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90952 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/view_unittest.cc')
-rw-r--r-- | views/view_unittest.cc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/views/view_unittest.cc b/views/view_unittest.cc index 8afc10a..73e7a75 100644 --- a/views/view_unittest.cc +++ b/views/view_unittest.cc @@ -1902,6 +1902,54 @@ TEST_F(ViewTest, ConvertPointToViewWithTransform) { } } +// Tests conversion methods for rectangles. +TEST_F(ViewTest, ConvertRectWithTransform) { + scoped_ptr<Widget> widget(new Widget); + Widget::InitParams params(Widget::InitParams::TYPE_POPUP); + params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; + params.bounds = gfx::Rect(50, 50, 650, 650); + widget->Init(params); + View* root = widget->GetRootView(); + + TestView* v1 = new TestView; + TestView* v2 = new TestView; + root->AddChildView(v1); + v1->AddChildView(v2); + + v1->SetBounds(10, 10, 500, 500); + v2->SetBounds(20, 20, 100, 200); + + // |v2| now occupies (30, 30) to (130, 230) in |widget| + gfx::Rect rect(5, 5, 15, 40); + EXPECT_EQ(gfx::Rect(25, 25, 15, 40), v2->ConvertRectToParent(rect)); + EXPECT_EQ(gfx::Rect(35, 35, 15, 40), v2->ConvertRectToWidget(rect)); + + // Rotate |v2| + ui::Transform t2; + t2.SetRotate(-90.0f); + t2.SetTranslateY(100.0f); + v2->SetTransform(t2); + + // |v2| now occupies (30, 30) to (230, 130) in |widget| + EXPECT_EQ(gfx::Rect(25, 100, 40, 15), v2->ConvertRectToParent(rect)); + EXPECT_EQ(gfx::Rect(35, 110, 40, 15), v2->ConvertRectToWidget(rect)); + + // Scale down |v1| + ui::Transform t1; + t1.SetScale(0.5, 0.5); + v1->SetTransform(t1); + + // The rectangle should remain the same for |v1|. + EXPECT_EQ(gfx::Rect(25, 100, 40, 15), v2->ConvertRectToParent(rect)); + + // |v2| now occupies (20, 20) to (120, 70) in |widget| + // There are some rounding of floating values here. These values may change if + // floating operations are improved/changed. + EXPECT_EQ(gfx::Rect(22, 60, 20, 7), v2->ConvertRectToWidget(rect)); + + widget->CloseNow(); +} + class ObserverView : public View { public: ObserverView(); |