Index: ui/aura_shell/desktop_event_filter_unittest.cc |
=================================================================== |
--- ui/aura_shell/desktop_event_filter_unittest.cc (revision 109647) |
+++ ui/aura_shell/desktop_event_filter_unittest.cc (working copy) |
@@ -14,6 +14,7 @@ |
#include "ui/aura/test/test_stacking_client.h" |
#include "ui/aura_shell/shell_window_ids.h" |
#include "ui/base/hit_test.h" |
+#include "ui/gfx/screen.h" |
namespace aura_shell { |
namespace test { |
@@ -315,5 +316,44 @@ |
EXPECT_EQ(aura::kCursorNull, desktop->last_cursor()); |
} |
+TEST_F(DefaultEventFilterTest, TransformActivate) { |
+ aura::Desktop* desktop = aura::Desktop::GetInstance(); |
+ gfx::Size size = desktop->GetHostSize(); |
+ EXPECT_EQ(gfx::Rect(size), |
+ gfx::Screen::GetMonitorAreaNearestPoint(gfx::Point())); |
+ |
+ // Rotate it clock-wise 90 degrees. |
+ ui::Transform transform; |
+ transform.SetRotate(90.0f); |
+ transform.ConcatTranslate(size.width(), 0); |
+ desktop->SetTransform(transform); |
+ |
+ aura::test::ActivateWindowDelegate d1; |
+ scoped_ptr<aura::Window> w1( |
+ CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(0, 10, 50, 50), NULL)); |
+ w1->Show(); |
+ |
+ gfx::Point miss_point(5, 5); |
+ transform.TransformPoint(miss_point); |
+ aura::MouseEvent mouseev1(ui::ET_MOUSE_PRESSED, |
+ miss_point, |
+ ui::EF_LEFT_BUTTON_DOWN); |
+ desktop->DispatchMouseEvent(&mouseev1); |
+ EXPECT_FALSE(w1->GetFocusManager()->GetFocusedWindow()); |
+ aura::MouseEvent mouseup(ui::ET_MOUSE_RELEASED, |
+ miss_point, |
+ ui::EF_LEFT_BUTTON_DOWN); |
+ desktop->DispatchMouseEvent(&mouseup); |
+ |
+ gfx::Point hit_point(5, 15); |
+ transform.TransformPoint(hit_point); |
+ aura::MouseEvent mouseev2(ui::ET_MOUSE_PRESSED, |
+ hit_point, |
+ ui::EF_LEFT_BUTTON_DOWN); |
+ desktop->DispatchMouseEvent(&mouseev2); |
+ EXPECT_EQ(w1.get(), desktop->active_window()); |
+ EXPECT_EQ(w1.get(), w1->GetFocusManager()->GetFocusedWindow()); |
+} |
+ |
} // namespace test |
} // namespace aura_shell |