Index: ui/aura/window_unittest.cc |
diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc |
index e1d8cb593c48f09708aaf70a09c5e26d117dc404..a1258b8af0381cf0e3f5dad5339e917ced82a5bd 100644 |
--- a/ui/aura/window_unittest.cc |
+++ b/ui/aura/window_unittest.cc |
@@ -15,6 +15,7 @@ |
#include "ui/aura/hit_test.h" |
#include "ui/aura/root_window.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/aura/window_delegate.h" |
@@ -375,7 +376,7 @@ TEST_F(WindowTest, MoveChildToFront) { |
// Various destruction assertions. |
TEST_F(WindowTest, CaptureTests) { |
- Desktop* desktop = Desktop::GetInstance(); |
+ aura::Desktop* desktop = aura::Desktop::GetInstance(); |
CaptureWindowDelegateImpl delegate; |
scoped_ptr<Window> window(CreateTestWindowWithDelegate( |
&delegate, 0, gfx::Rect(0, 0, 20, 20), NULL)); |
@@ -385,12 +386,11 @@ TEST_F(WindowTest, CaptureTests) { |
window->SetCapture(); |
EXPECT_TRUE(window->HasCapture()); |
EXPECT_EQ(0, delegate.capture_lost_count()); |
- |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(50, 50), |
- ui::EF_LEFT_BUTTON_DOWN)); |
+ EventGenerator generator(gfx::Point(50, 50)); |
+ generator.PressLeftButton(); |
EXPECT_EQ(1, delegate.mouse_event_count()); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_RELEASED, gfx::Point(50, 50), |
- ui::EF_LEFT_BUTTON_DOWN)); |
+ generator.ReleaseLeftButton(); |
+ |
EXPECT_EQ(2, delegate.mouse_event_count()); |
delegate.set_mouse_event_count(0); |
@@ -403,8 +403,7 @@ TEST_F(WindowTest, CaptureTests) { |
EXPECT_FALSE(window->HasCapture()); |
EXPECT_EQ(1, delegate.capture_lost_count()); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(50, 50), |
- ui::EF_LEFT_BUTTON_DOWN)); |
+ generator.PressLeftButton(); |
EXPECT_EQ(0, delegate.mouse_event_count()); |
desktop->OnTouchEvent(TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(50, 50), |
@@ -503,6 +502,13 @@ class ActivateWindowDelegate : public TestWindowDelegate { |
should_activate_count_(0) { |
} |
+ ActivateWindowDelegate(bool activate) |
+ : activate_(activate), |
+ activated_count_(0), |
+ lost_active_count_(0), |
+ should_activate_count_(0) { |
+ } |
+ |
void set_activate(bool v) { activate_ = v; } |
int activated_count() const { return activated_count_; } |
int lost_active_count() const { return lost_active_count_; } |
@@ -557,8 +563,8 @@ TEST_F(WindowTest, ActivateOnMouse) { |
// Click on window2. |
gfx::Point press_point = w2->bounds().CenterPoint(); |
Window::ConvertPointToWindow(w2->parent(), desktop->window(), &press_point); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, press_point, 0)); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_RELEASED, press_point, 0)); |
+ EventGenerator generator(press_point); |
+ generator.ClickLeftButton(); |
// Window2 should have become active. |
EXPECT_EQ(w2.get(), desktop->active_window()); |
@@ -574,8 +580,7 @@ TEST_F(WindowTest, ActivateOnMouse) { |
press_point = w1->bounds().CenterPoint(); |
Window::ConvertPointToWindow(w1->parent(), desktop->window(), &press_point); |
d1.set_activate(false); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_PRESSED, press_point, 0)); |
- desktop->OnMouseEvent(MouseEvent(ui::ET_MOUSE_RELEASED, press_point, 0)); |
+ generator.ClickLeftButton(); |
// Window2 should still be active and focused. |
EXPECT_EQ(w2.get(), desktop->active_window()); |
@@ -820,13 +825,22 @@ TEST_F(WindowTest, Fullscreen) { |
EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); |
EXPECT_EQ(original_bounds, w->bounds()); |
- // Fullscreen twice |
+ // Calling Fullscreen() twice should have no additional effect. |
w->Fullscreen(); |
w->Fullscreen(); |
EXPECT_EQ(desktop_bounds, w->bounds()); |
w->Restore(); |
EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); |
EXPECT_EQ(original_bounds, w->bounds()); |
+ |
+ // Calling SetBounds() in fullscreen mode should only update the |
+ // restore bounds not change the bounds of the window. |
+ gfx::Rect new_bounds(50, 50, 50, 50); |
+ w->Fullscreen(); |
+ w->SetBounds(new_bounds); |
+ EXPECT_EQ(desktop_bounds, w->bounds()); |
+ w->Restore(); |
+ EXPECT_EQ(new_bounds, w->bounds()); |
} |
TEST_F(WindowTest, Maximized) { |
@@ -868,6 +882,15 @@ TEST_F(WindowTest, Maximized) { |
w->Restore(); |
EXPECT_EQ(ui::SHOW_STATE_NORMAL, w->show_state()); |
EXPECT_EQ(original_bounds, w->bounds()); |
+ |
+ // Calling SetBounds() in maximized mode mode should only update the |
+ // restore bounds not change the bounds of the window. |
+ gfx::Rect new_bounds(50, 50, 50, 50); |
+ w->Maximize(); |
+ w->SetBounds(new_bounds); |
+ EXPECT_EQ(max_bounds, w->bounds()); |
+ w->Restore(); |
+ EXPECT_EQ(new_bounds, w->bounds()); |
} |
// Various assertions for activating/deactivating. |
@@ -917,6 +940,48 @@ TEST_F(WindowTest, IsOrContainsFullscreenWindow) { |
EXPECT_FALSE(root->IsOrContainsFullscreenWindow()); |
} |
+class ToplevelWindowTest : public WindowTest { |
+ public: |
+ ToplevelWindowTest() {} |
+ virtual ~ToplevelWindowTest() {} |
+ |
+ virtual void SetUp() OVERRIDE { |
+ WindowTest::SetUp(); |
+ toplevel_container_.Init(); |
+ toplevel_container_.SetParent(aura::Desktop::GetInstance()->window()); |
+ toplevel_container_.SetBounds( |
+ aura::Desktop::GetInstance()->window()->bounds()); |
+ toplevel_container_.Show(); |
+ } |
+ |
+ virtual void TearDown() OVERRIDE { |
+ toplevel_container_.Hide(); |
+ toplevel_container_.SetParent(NULL); |
+ WindowTest::TearDown(); |
+ } |
+ |
+ Window* CreateTestToplevelWindow( |
+ WindowDelegate* delegate, const gfx::Rect& bounds) { |
+ return CreateTestWindowWithDelegate( |
+ delegate, 0 /* id */, bounds, &toplevel_container_); |
+ } |
+ |
+ ToplevelWindowContainer toplevel_container_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(ToplevelWindowTest); |
+}; |
+ |
+TEST_F(ToplevelWindowTest, TopMostActivate) { |
+ ActivateWindowDelegate activate; |
+ ActivateWindowDelegate non_activate(false); |
+ |
+ scoped_ptr<Window> w1(CreateTestToplevelWindow(&non_activate, gfx::Rect())); |
+ scoped_ptr<Window> w2(CreateTestToplevelWindow(&activate, gfx::Rect())); |
+ scoped_ptr<Window> w3(CreateTestToplevelWindow(&non_activate, gfx::Rect())); |
+ EXPECT_EQ(w2.get(), toplevel_container_.GetTopmostWindowToActivate(NULL)); |
+} |
+ |
class WindowObserverTest : public WindowTest, |
public WindowObserver { |
public: |