| Index: ui/aura_shell/root_window_event_filter_unittest.cc
|
| ===================================================================
|
| --- ui/aura_shell/root_window_event_filter_unittest.cc (revision 114022)
|
| +++ ui/aura_shell/root_window_event_filter_unittest.cc (working copy)
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "ui/aura_shell/root_window_event_filter.h"
|
|
|
| +#include "ui/aura/client/activation_delegate.h"
|
| +#include "ui/aura/client/aura_constants.h"
|
| #include "ui/aura/cursor.h"
|
| #include "ui/aura/event.h"
|
| #include "ui/aura/root_window.h"
|
| @@ -13,7 +15,10 @@
|
| #include "ui/aura/test/test_event_filter.h"
|
| #include "ui/aura/test/test_window_delegate.h"
|
| #include "ui/aura/test/test_stacking_client.h"
|
| +#include "ui/aura_shell/activation_controller.h"
|
| #include "ui/aura_shell/shell_window_ids.h"
|
| +#include "ui/aura_shell/test/test_activation_delegate.h"
|
| +#include "ui/aura_shell/window_util.h"
|
| #include "ui/base/hit_test.h"
|
| #include "ui/gfx/screen.h"
|
|
|
| @@ -31,12 +36,17 @@
|
| aura::RootWindow::GetInstance()->stacking_client());
|
| stacking_client->default_container()->set_id(
|
| internal::kShellWindowId_DefaultContainer);
|
| + activation_controller_.reset(new internal::ActivationController);
|
| + activation_controller_->set_default_container_for_test(
|
| + stacking_client->default_container());
|
| }
|
| virtual ~RootWindowEventFilterTest() {
|
| aura::RootWindow::GetInstance()->SetEventFilter(NULL);
|
| }
|
|
|
| private:
|
| + scoped_ptr<internal::ActivationController> activation_controller_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(RootWindowEventFilterTest);
|
| };
|
|
|
| @@ -124,63 +134,72 @@
|
| TEST_F(RootWindowEventFilterTest, ActivateOnMouse) {
|
| aura::RootWindow* root_window = aura::RootWindow::GetInstance();
|
|
|
| - aura::test::ActivateWindowDelegate d1;
|
| + TestActivationDelegate d1;
|
| + aura::test::TestWindowDelegate wd;
|
| scoped_ptr<aura::Window> w1(aura::test::CreateTestWindowWithDelegate(
|
| - &d1, 1, gfx::Rect(10, 10, 50, 50), NULL));
|
| - aura::test::ActivateWindowDelegate d2;
|
| + &wd, 1, gfx::Rect(10, 10, 50, 50), NULL));
|
| + d1.SetWindow(w1.get());
|
| + TestActivationDelegate d2;
|
| scoped_ptr<aura::Window> w2(aura::test::CreateTestWindowWithDelegate(
|
| - &d2, 2, gfx::Rect(70, 70, 50, 50), NULL));
|
| + &wd, 2, gfx::Rect(70, 70, 50, 50), NULL));
|
| + d2.SetWindow(w2.get());
|
| +
|
| aura::internal::FocusManager* focus_manager = w1->GetFocusManager();
|
|
|
| d1.Clear();
|
| d2.Clear();
|
|
|
| // Activate window1.
|
| - root_window->SetActiveWindow(w1.get(), NULL);
|
| - EXPECT_EQ(w1.get(), root_window->active_window());
|
| + aura_shell::ActivateWindow(w1.get());
|
| + EXPECT_TRUE(IsActiveWindow(w1.get()));
|
| EXPECT_EQ(w1.get(), focus_manager->GetFocusedWindow());
|
| EXPECT_EQ(1, d1.activated_count());
|
| EXPECT_EQ(0, d1.lost_active_count());
|
| d1.Clear();
|
|
|
| - // Click on window2.
|
| - gfx::Point press_point = w2->bounds().CenterPoint();
|
| - aura::Window::ConvertPointToWindow(w2->parent(), root_window, &press_point);
|
| - aura::test::EventGenerator generator(press_point);
|
| - generator.ClickLeftButton();
|
| + {
|
| + // Click on window2.
|
| + gfx::Point press_point = w2->bounds().CenterPoint();
|
| + aura::Window::ConvertPointToWindow(w2->parent(), root_window, &press_point);
|
| + aura::test::EventGenerator generator(press_point);
|
| + generator.ClickLeftButton();
|
|
|
| - // Window2 should have become active.
|
| - EXPECT_EQ(w2.get(), root_window->active_window());
|
| - EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow());
|
| - EXPECT_EQ(0, d1.activated_count());
|
| - EXPECT_EQ(1, d1.lost_active_count());
|
| - EXPECT_EQ(1, d2.activated_count());
|
| - EXPECT_EQ(0, d2.lost_active_count());
|
| - d1.Clear();
|
| - d2.Clear();
|
| + // Window2 should have become active.
|
| + EXPECT_TRUE(IsActiveWindow(w2.get()));
|
| + EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow());
|
| + EXPECT_EQ(0, d1.activated_count());
|
| + EXPECT_EQ(1, d1.lost_active_count());
|
| + EXPECT_EQ(1, d2.activated_count());
|
| + EXPECT_EQ(0, d2.lost_active_count());
|
| + d1.Clear();
|
| + d2.Clear();
|
| + }
|
|
|
| - // Click back on window1, but set it up so w1 doesn't activate on click.
|
| - press_point = w1->bounds().CenterPoint();
|
| - aura::Window::ConvertPointToWindow(w1->parent(), root_window, &press_point);
|
| - d1.set_activate(false);
|
| - generator.ClickLeftButton();
|
| + {
|
| + // Click back on window1, but set it up so w1 doesn't activate on click.
|
| + gfx::Point press_point = w1->bounds().CenterPoint();
|
| + aura::Window::ConvertPointToWindow(w1->parent(), root_window, &press_point);
|
| + aura::test::EventGenerator generator(press_point);
|
| + d1.set_activate(false);
|
| + generator.ClickLeftButton();
|
|
|
| - // Window2 should still be active and focused.
|
| - EXPECT_EQ(w2.get(), root_window->active_window());
|
| - EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow());
|
| - EXPECT_EQ(0, d1.activated_count());
|
| - EXPECT_EQ(0, d1.lost_active_count());
|
| - EXPECT_EQ(0, d2.activated_count());
|
| - EXPECT_EQ(0, d2.lost_active_count());
|
| - d1.Clear();
|
| - d2.Clear();
|
| + // Window2 should still be active and focused.
|
| + EXPECT_TRUE(IsActiveWindow(w2.get()));
|
| + EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow());
|
| + EXPECT_EQ(0, d1.activated_count());
|
| + EXPECT_EQ(0, d1.lost_active_count());
|
| + EXPECT_EQ(0, d2.activated_count());
|
| + EXPECT_EQ(0, d2.lost_active_count());
|
| + d1.Clear();
|
| + d2.Clear();
|
| + }
|
|
|
| // Destroy window2, this should make window1 active.
|
| d1.set_activate(true);
|
| w2.reset();
|
| EXPECT_EQ(0, d2.activated_count());
|
| EXPECT_EQ(0, d2.lost_active_count());
|
| - EXPECT_EQ(w1.get(), root_window->active_window());
|
| + EXPECT_TRUE(IsActiveWindow(w1.get()));
|
| EXPECT_EQ(w1.get(), focus_manager->GetFocusedWindow());
|
| EXPECT_EQ(1, d1.activated_count());
|
| EXPECT_EQ(0, d1.lost_active_count());
|
| @@ -190,20 +209,24 @@
|
| TEST_F(RootWindowEventFilterTest, ActivateOnTouch) {
|
| aura::RootWindow* root_window = aura::RootWindow::GetInstance();
|
|
|
| - aura::test::ActivateWindowDelegate d1;
|
| + TestActivationDelegate d1;
|
| + aura::test::TestWindowDelegate wd;
|
| scoped_ptr<aura::Window> w1(aura::test::CreateTestWindowWithDelegate(
|
| - &d1, -1, gfx::Rect(10, 10, 50, 50), NULL));
|
| - aura::test::ActivateWindowDelegate d2;
|
| + &wd, -1, gfx::Rect(10, 10, 50, 50), NULL));
|
| + d1.SetWindow(w1.get());
|
| + TestActivationDelegate d2;
|
| scoped_ptr<aura::Window> w2(aura::test::CreateTestWindowWithDelegate(
|
| - &d2, -2, gfx::Rect(70, 70, 50, 50), NULL));
|
| + &wd, -2, gfx::Rect(70, 70, 50, 50), NULL));
|
| + d2.SetWindow(w2.get());
|
| +
|
| aura::internal::FocusManager* focus_manager = w1->GetFocusManager();
|
|
|
| d1.Clear();
|
| d2.Clear();
|
|
|
| // Activate window1.
|
| - root_window->SetActiveWindow(w1.get(), NULL);
|
| - EXPECT_EQ(w1.get(), root_window->active_window());
|
| + aura_shell::ActivateWindow(w1.get());
|
| + EXPECT_TRUE(IsActiveWindow(w1.get()));
|
| EXPECT_EQ(w1.get(), focus_manager->GetFocusedWindow());
|
| EXPECT_EQ(1, d1.activated_count());
|
| EXPECT_EQ(0, d1.lost_active_count());
|
| @@ -216,7 +239,7 @@
|
| root_window->DispatchTouchEvent(&touchev1);
|
|
|
| // Window2 should have become active.
|
| - EXPECT_EQ(w2.get(), root_window->active_window());
|
| + EXPECT_TRUE(IsActiveWindow(w2.get()));
|
| EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow());
|
| EXPECT_EQ(0, d1.activated_count());
|
| EXPECT_EQ(1, d1.lost_active_count());
|
| @@ -233,7 +256,7 @@
|
| root_window->DispatchTouchEvent(&touchev2);
|
|
|
| // Window2 should still be active and focused.
|
| - EXPECT_EQ(w2.get(), root_window->active_window());
|
| + EXPECT_TRUE(IsActiveWindow(w2.get()));
|
| EXPECT_EQ(w2.get(), focus_manager->GetFocusedWindow());
|
| EXPECT_EQ(0, d1.activated_count());
|
| EXPECT_EQ(0, d1.lost_active_count());
|
| @@ -247,7 +270,7 @@
|
| w2.reset();
|
| EXPECT_EQ(0, d2.activated_count());
|
| EXPECT_EQ(0, d2.lost_active_count());
|
| - EXPECT_EQ(w1.get(), root_window->active_window());
|
| + EXPECT_TRUE(IsActiveWindow(w1.get()));
|
| EXPECT_EQ(w1.get(), focus_manager->GetFocusedWindow());
|
| EXPECT_EQ(1, d1.activated_count());
|
| EXPECT_EQ(0, d1.lost_active_count());
|
| @@ -329,9 +352,11 @@
|
| transform.ConcatTranslate(size.width(), 0);
|
| root_window->SetTransform(transform);
|
|
|
| - aura::test::ActivateWindowDelegate d1;
|
| + TestActivationDelegate d1;
|
| + aura::test::TestWindowDelegate wd;
|
| scoped_ptr<aura::Window> w1(
|
| - CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(0, 10, 50, 50), NULL));
|
| + CreateTestWindowWithDelegate(&wd, 1, gfx::Rect(0, 10, 50, 50), NULL));
|
| + d1.SetWindow(w1.get());
|
| w1->Show();
|
|
|
| gfx::Point miss_point(5, 5);
|
| @@ -352,7 +377,7 @@
|
| hit_point,
|
| ui::EF_LEFT_BUTTON_DOWN);
|
| root_window->DispatchMouseEvent(&mouseev2);
|
| - EXPECT_EQ(w1.get(), root_window->active_window());
|
| + EXPECT_TRUE(IsActiveWindow(w1.get()));
|
| EXPECT_EQ(w1.get(), w1->GetFocusManager()->GetFocusedWindow());
|
| }
|
|
|
| @@ -362,7 +387,7 @@
|
| // Creates a window and make it active
|
| scoped_ptr<aura::Window> w1(aura::test::CreateTestWindow(
|
| SK_ColorWHITE, -1, gfx::Rect(0, 0, 100, 100), NULL));
|
| - root_window->SetActiveWindow(w1.get(), NULL);
|
| + aura_shell::ActivateWindow(w1.get());
|
|
|
| // Creates two addition filters
|
| scoped_ptr<aura::test::TestEventFilter> f1(
|
|
|