summaryrefslogtreecommitdiffstats
path: root/views/view_unittest.cc
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-29 15:06:04 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-29 15:06:04 +0000
commita1f4eb5b056e68cbd81829e8b1d459c68649814f (patch)
treee065d24054d09e8861372977f1ad9b8f3b3d2da6 /views/view_unittest.cc
parent3973da97f5942403c845e2427f365bb0f99ee23d (diff)
downloadchromium_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.cc48
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();