Index: ui/aura/toplevel_window_event_filter_unittest.cc |
diff --git a/ui/aura/toplevel_window_event_filter_unittest.cc b/ui/aura/toplevel_window_event_filter_unittest.cc |
index 5aaee9244b0deb1bf94e35776dcc66d885430c9e..2df3c9e14eaa36c40df72a9e4669edfff4535643 100644 |
--- a/ui/aura/toplevel_window_event_filter_unittest.cc |
+++ b/ui/aura/toplevel_window_event_filter_unittest.cc |
@@ -9,8 +9,10 @@ |
#include "ui/aura/event.h" |
#include "ui/aura/hit_test.h" |
#include "ui/aura/test/aura_test_base.h" |
+#include "ui/aura/test/event_generator.h" |
#include "ui/aura/test/test_desktop_delegate.h" |
#include "ui/aura/test/test_window_delegate.h" |
+#include "ui/gfx/screen.h" |
#if defined(OS_WIN) |
// Windows headers define macros for these function names which screw with us. |
@@ -65,15 +67,10 @@ class ToplevelWindowEventFilterTest : public AuraTestBase { |
return w1; |
} |
- void DragFromCenterBy(Window* window, int x, int y) { |
- gfx::Point click = window->bounds().CenterPoint(); |
- Desktop* desktop= Desktop::GetInstance(); |
- Window::ConvertPointToWindow(window->parent(), desktop->window(), &click); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_MOVED, click, 0)); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, click, 0)); |
- click.Offset(x, y); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_DRAGGED, click, 0)); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_RELEASED, click, 0)); |
+ void DragFromCenterBy(Window* window, int dx, int dy) { |
+ EventGenerator generator; |
+ generator.MoveMouseToCenterOf(window); |
Ben Goodger (Google)
2011/10/16 22:23:33
Can't you replace this with:
EventGenerator gener
oshima
2011/10/17 19:30:57
It's slightly different because it doesn't generat
|
+ generator.DragMouseBy(dx, dy); |
} |
private: |
@@ -105,11 +102,26 @@ TEST_F(ToplevelWindowEventFilterTest, BottomRight) { |
TEST_F(ToplevelWindowEventFilterTest, GrowBox) { |
scoped_ptr<Window> w1(CreateWindow(HTGROWBOX)); |
gfx::Point position = w1->bounds().origin(); |
- DragFromCenterBy(w1.get(), 100, 100); |
+ w1->set_minimum_size(gfx::Size(50, 50)); |
+ EventGenerator generator; |
+ generator.MoveMouseToCenterOf(w1.get()); |
+ generator.DragMouseBy(100, 100); |
// Position should not have changed. |
EXPECT_EQ(position, w1->bounds().origin()); |
// Size should have increased by 100,100. |
EXPECT_EQ(gfx::Size(200, 200), w1->bounds().size()); |
+ |
+ // Shrink the wnidow by (-100, -100). |
+ generator.DragMouseBy(-100, -100); |
+ // Position should not have changed. |
+ EXPECT_EQ(position, w1->bounds().origin()); |
+ // Size should have decreased by 100,100. |
+ EXPECT_EQ(gfx::Size(100, 100), w1->bounds().size()); |
+ |
+ // Enforce minimum size. |
+ generator.DragMouseBy(-60, -60); |
+ EXPECT_EQ(position, w1->bounds().origin()); |
+ EXPECT_EQ(gfx::Size(50, 50), w1->bounds().size()); |
} |
TEST_F(ToplevelWindowEventFilterTest, Right) { |
@@ -185,5 +197,31 @@ TEST_F(ToplevelWindowEventFilterTest, Client) { |
EXPECT_EQ(bounds, w1->bounds()); |
} |
+TEST_F(ToplevelWindowEventFilterTest, Maximized) { |
+ scoped_ptr<Window> w1(CreateWindow(HTCLIENT)); |
+ gfx::Rect workarea = gfx::Screen::GetMonitorWorkAreaNearestWindow(w1.get()); |
+ // Maximized window cannot be dragged. |
+ gfx::Rect original_bounds = w1->bounds(); |
+ w1->Maximize(); |
+ EXPECT_EQ(workarea, w1->bounds()); |
+ DragFromCenterBy(w1.get(), 100, 100); |
+ EXPECT_EQ(workarea, w1->bounds()); |
+ w1->Restore(); |
+ EXPECT_EQ(original_bounds, w1->bounds()); |
+} |
+ |
+TEST_F(ToplevelWindowEventFilterTest, Fullscreen) { |
+ scoped_ptr<Window> w1(CreateWindow(HTCLIENT)); |
+ gfx::Rect monitor = gfx::Screen::GetMonitorAreaNearestWindow(w1.get()); |
+ // Fullscreen window cannot be dragged. |
+ gfx::Rect original_bounds = w1->bounds(); |
+ w1->Fullscreen(); |
+ EXPECT_EQ(monitor, w1->bounds()); |
+ DragFromCenterBy(w1.get(), 100, 100); |
+ EXPECT_EQ(monitor, w1->bounds()); |
+ w1->Restore(); |
+ EXPECT_EQ(original_bounds, w1->bounds()); |
+} |
+ |
} // namespace test |
} // namespace aura |