Index: ui/aura/window_unittest.cc |
diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc |
index 5932a4cc74acd96a075b08a5a0587d3d82e03f5b..59c87f11420f64c5be2b774ffe30037c3139553e 100644 |
--- a/ui/aura/window_unittest.cc |
+++ b/ui/aura/window_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "ui/aura/event.h" |
#include "ui/aura/layout_manager.h" |
#include "ui/aura/root_window.h" |
+#include "ui/aura/root_window_host.h" |
#include "ui/aura/root_window_observer.h" |
#include "ui/aura/test/aura_test_base.h" |
#include "ui/aura/test/event_generator.h" |
@@ -302,6 +303,104 @@ TEST_F(WindowTest, ConvertPointToWindow) { |
EXPECT_EQ(reference_point, test_point); |
} |
+TEST_F(WindowTest, MoveCursorTo) { |
+ scoped_ptr<Window> w1( |
+ CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), NULL)); |
+ scoped_ptr<Window> w11( |
+ CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get())); |
+ scoped_ptr<Window> w111( |
+ CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get())); |
+ scoped_ptr<Window> w1111( |
+ CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get())); |
+ |
+ RootWindow* root = root_window(); |
+ root->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("10,10", root->last_mouse_location().ToString()); |
+ w1->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("20,20", root->last_mouse_location().ToString()); |
+ w11->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("25,25", root->last_mouse_location().ToString()); |
+ w111->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("30,30", root->last_mouse_location().ToString()); |
+ w1111->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("35,35", root->last_mouse_location().ToString()); |
+} |
+ |
+// Test Window::ConvertPointToWindow() with transform to root_window. |
+TEST_F(WindowTest, MoveCursorToWithTransformRootWindow) { |
+ RootWindow* root = root_window(); |
+ ui::Transform transform; |
+ transform.ConcatScale(2, 5); |
+ transform.ConcatRotate(90.0f); |
+ transform.ConcatTranslate(100, 100); |
+ root->SetTransform(transform); |
+ root->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("50,120", root->QueryMouseLocationForTest().ToString()); |
+ EXPECT_EQ("10,10", root->last_mouse_location().ToString()); |
+} |
+ |
+// Tests Window::ConvertPointToWindow() with transform to non-root windows. |
+TEST_F(WindowTest, MoveCursorToWithTransformWindow) { |
+ scoped_ptr<Window> w1( |
+ CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), NULL)); |
+ |
+ RootWindow* root = root_window(); |
+ ui::Transform transform1; |
+ transform1.ConcatScale(2, 2); |
+ w1->SetTransform(transform1); |
+ w1->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("30,30", root->last_mouse_location().ToString()); |
+ |
+ ui::Transform transform2; |
+ transform2.ConcatTranslate(-10, 20); |
+ w1->SetTransform(transform2); |
+ w1->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("10,40", root->last_mouse_location().ToString()); |
+ |
+ ui::Transform transform3; |
+ transform3.ConcatRotate(90.0f); |
+ w1->SetTransform(transform3); |
+ w1->MoveCursorTo(gfx::Point(5, 5)); |
+ EXPECT_EQ("5,15", root->last_mouse_location().ToString()); |
+ |
+ ui::Transform transform4; |
+ transform4.ConcatScale(2, 5); |
+ transform4.ConcatRotate(90.0f); |
+ transform4.ConcatTranslate(100, 100); |
+ w1->SetTransform(transform4); |
+ w1->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("60,130", root->last_mouse_location().ToString()); |
+} |
+ |
+// Test Window::ConvertPointToWindow() with complex transforms to both root and |
+// non-root windows. |
+TEST_F(WindowTest, MoveCursorToWithComplexTransform) { |
+ scoped_ptr<Window> w1( |
+ CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 500, 500), NULL)); |
+ scoped_ptr<Window> w11( |
+ CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(5, 5, 100, 100), w1.get())); |
+ scoped_ptr<Window> w111( |
+ CreateTestWindow(SK_ColorCYAN, 111, gfx::Rect(5, 5, 75, 75), w11.get())); |
+ scoped_ptr<Window> w1111( |
+ CreateTestWindow(SK_ColorRED, 1111, gfx::Rect(5, 5, 50, 50), w111.get())); |
+ |
+ RootWindow* root = root_window(); |
+ ui::Transform transform; |
+ transform.ConcatScale(0.3f, 0.5f); |
+ transform.ConcatRotate(10.0f); |
+ transform.ConcatTranslate(10, 20); |
+ |
+ root->SetTransform(transform); |
+ w1->SetTransform(transform); |
+ w11->SetTransform(transform); |
+ w111->SetTransform(transform); |
+ w1111->SetTransform(transform); |
+ |
+ w1111->MoveCursorTo(gfx::Point(10, 10)); |
+ EXPECT_EQ("11,47", root->QueryMouseLocationForTest().ToString()); |
+ EXPECT_EQ("20,53", root->last_mouse_location().ToString()); |
+} |
+ |
TEST_F(WindowTest, HitTest) { |
Window w1(new ColorTestWindowDelegate(SK_ColorWHITE)); |
w1.set_id(1); |