| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/shell.h" | 5 #include "ash/shell.h" |
| 6 #include "ash/shell_window_ids.h" | 6 #include "ash/shell_window_ids.h" |
| 7 #include "ash/test/ash_test_base.h" | 7 #include "ash/test/ash_test_base.h" |
| 8 #include "ash/test/shell_test_api.h" | 8 #include "ash/test/shell_test_api.h" |
| 9 #include "ash/test/test_activation_delegate.h" | 9 #include "ash/test/test_activation_delegate.h" |
| 10 #include "ash/wm/window_util.h" | 10 #include "ash/wm/window_util.h" |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 | 176 |
| 177 // Click on a sub-window (w121) to focus it. | 177 // Click on a sub-window (w121) to focus it. |
| 178 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), | 178 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), |
| 179 w121.get()); | 179 w121.get()); |
| 180 generator.ClickLeftButton(); | 180 generator.ClickLeftButton(); |
| 181 | 181 |
| 182 aura::client::FocusClient* focus_client = | 182 aura::client::FocusClient* focus_client = |
| 183 aura::client::GetFocusClient(w121.get()); | 183 aura::client::GetFocusClient(w121.get()); |
| 184 EXPECT_EQ(w121.get(), focus_client->GetFocusedWindow()); | 184 EXPECT_EQ(w121.get(), focus_client->GetFocusedWindow()); |
| 185 | 185 |
| 186 aura::WindowEventDispatcher* dispatcher = root_window->GetDispatcher(); | 186 aura::WindowEventDispatcher* dispatcher = |
| 187 root_window->GetHost()->dispatcher(); |
| 187 | 188 |
| 188 // The key press should be sent to the focused sub-window. | 189 // The key press should be sent to the focused sub-window. |
| 189 ui::KeyEvent keyev(ui::ET_KEY_PRESSED, ui::VKEY_E, 0, false); | 190 ui::KeyEvent keyev(ui::ET_KEY_PRESSED, ui::VKEY_E, 0, false); |
| 190 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&keyev); | 191 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&keyev); |
| 191 ASSERT_FALSE(details.dispatcher_destroyed); | 192 ASSERT_FALSE(details.dispatcher_destroyed); |
| 192 EXPECT_EQ(ui::VKEY_E, w121delegate->last_key_code()); | 193 EXPECT_EQ(ui::VKEY_E, w121delegate->last_key_code()); |
| 193 | 194 |
| 194 // Touch on a sub-window (w122) to focus it. | 195 // Touch on a sub-window (w122) to focus it. |
| 195 gfx::Point click_point = w122->bounds().CenterPoint(); | 196 gfx::Point click_point = w122->bounds().CenterPoint(); |
| 196 aura::Window::ConvertPointToTarget(w122->parent(), root_window, &click_point); | 197 aura::Window::ConvertPointToTarget(w122->parent(), root_window, &click_point); |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 EXPECT_EQ(w1.get(), focus_client->GetFocusedWindow()); | 440 EXPECT_EQ(w1.get(), focus_client->GetFocusedWindow()); |
| 440 EXPECT_EQ(1, d1.activated_count()); | 441 EXPECT_EQ(1, d1.activated_count()); |
| 441 EXPECT_EQ(0, d1.lost_active_count()); | 442 EXPECT_EQ(0, d1.lost_active_count()); |
| 442 d1.Clear(); | 443 d1.Clear(); |
| 443 | 444 |
| 444 // Touch window2. | 445 // Touch window2. |
| 445 gfx::Point press_point = w2->bounds().CenterPoint(); | 446 gfx::Point press_point = w2->bounds().CenterPoint(); |
| 446 aura::Window::ConvertPointToTarget(w2->parent(), root_window, &press_point); | 447 aura::Window::ConvertPointToTarget(w2->parent(), root_window, &press_point); |
| 447 ui::TouchEvent touchev1(ui::ET_TOUCH_PRESSED, press_point, 0, getTime()); | 448 ui::TouchEvent touchev1(ui::ET_TOUCH_PRESSED, press_point, 0, getTime()); |
| 448 | 449 |
| 449 aura::WindowEventDispatcher* dispatcher = root_window->GetDispatcher(); | 450 aura::WindowEventDispatcher* dispatcher = |
| 451 root_window->GetHost()->dispatcher(); |
| 450 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&touchev1); | 452 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&touchev1); |
| 451 ASSERT_FALSE(details.dispatcher_destroyed); | 453 ASSERT_FALSE(details.dispatcher_destroyed); |
| 452 | 454 |
| 453 // Window2 should have become active. | 455 // Window2 should have become active. |
| 454 EXPECT_TRUE(wm::IsActiveWindow(w2.get())); | 456 EXPECT_TRUE(wm::IsActiveWindow(w2.get())); |
| 455 EXPECT_EQ(w2.get(), focus_client->GetFocusedWindow()); | 457 EXPECT_EQ(w2.get(), focus_client->GetFocusedWindow()); |
| 456 EXPECT_EQ(0, d1.activated_count()); | 458 EXPECT_EQ(0, d1.activated_count()); |
| 457 EXPECT_EQ(1, d1.lost_active_count()); | 459 EXPECT_EQ(1, d1.lost_active_count()); |
| 458 EXPECT_EQ(1, d2.activated_count()); | 460 EXPECT_EQ(1, d2.activated_count()); |
| 459 EXPECT_EQ(0, d2.lost_active_count()); | 461 EXPECT_EQ(0, d2.lost_active_count()); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 -1, | 503 -1, |
| 502 gfx::Rect(kWindowLeft, kWindowTop, 640, 480))); | 504 gfx::Rect(kWindowLeft, kWindowTop, 640, 480))); |
| 503 | 505 |
| 504 // Create two mouse movement events we can switch between. | 506 // Create two mouse movement events we can switch between. |
| 505 gfx::Point point1(kWindowLeft, kWindowTop); | 507 gfx::Point point1(kWindowLeft, kWindowTop); |
| 506 aura::Window::ConvertPointToTarget(window->parent(), root_window, &point1); | 508 aura::Window::ConvertPointToTarget(window->parent(), root_window, &point1); |
| 507 | 509 |
| 508 gfx::Point point2(kWindowLeft + 1, kWindowTop + 1); | 510 gfx::Point point2(kWindowLeft + 1, kWindowTop + 1); |
| 509 aura::Window::ConvertPointToTarget(window->parent(), root_window, &point2); | 511 aura::Window::ConvertPointToTarget(window->parent(), root_window, &point2); |
| 510 | 512 |
| 511 aura::WindowEventDispatcher* dispatcher = root_window->GetDispatcher(); | 513 aura::WindowEventDispatcher* dispatcher = |
| 514 root_window->GetHost()->dispatcher(); |
| 512 | 515 |
| 513 // Cursor starts as a pointer (set during Shell::Init()). | 516 // Cursor starts as a pointer (set during Shell::Init()). |
| 514 EXPECT_EQ(ui::kCursorPointer, | 517 EXPECT_EQ(ui::kCursorPointer, |
| 515 dispatcher->host()->last_cursor().native_type()); | 518 dispatcher->host()->last_cursor().native_type()); |
| 516 | 519 |
| 517 { | 520 { |
| 518 // Resize edges and corners show proper cursors. | 521 // Resize edges and corners show proper cursors. |
| 519 window_delegate.set_hittest_code(HTBOTTOM); | 522 window_delegate.set_hittest_code(HTBOTTOM); |
| 520 ui::MouseEvent move1(ui::ET_MOUSE_MOVED, point1, point1, 0, 0); | 523 ui::MouseEvent move1(ui::ET_MOUSE_MOVED, point1, point1, 0, 0); |
| 521 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&move1); | 524 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&move1); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 609 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
| 607 gfx::Size size = root_window->bounds().size(); | 610 gfx::Size size = root_window->bounds().size(); |
| 608 EXPECT_EQ(gfx::Rect(size).ToString(), | 611 EXPECT_EQ(gfx::Rect(size).ToString(), |
| 609 Shell::GetScreen()->GetDisplayNearestPoint( | 612 Shell::GetScreen()->GetDisplayNearestPoint( |
| 610 gfx::Point()).bounds().ToString()); | 613 gfx::Point()).bounds().ToString()); |
| 611 | 614 |
| 612 // Rotate it clock-wise 90 degrees. | 615 // Rotate it clock-wise 90 degrees. |
| 613 gfx::Transform transform; | 616 gfx::Transform transform; |
| 614 transform.Translate(size.width(), 0); | 617 transform.Translate(size.width(), 0); |
| 615 transform.Rotate(90.0f); | 618 transform.Rotate(90.0f); |
| 616 root_window->GetDispatcher()->host()->SetTransform(transform); | 619 root_window->GetHost()->SetTransform(transform); |
| 617 | 620 |
| 618 test::TestActivationDelegate d1; | 621 test::TestActivationDelegate d1; |
| 619 aura::test::TestWindowDelegate wd; | 622 aura::test::TestWindowDelegate wd; |
| 620 scoped_ptr<aura::Window> w1( | 623 scoped_ptr<aura::Window> w1( |
| 621 CreateTestWindowInShellWithDelegate(&wd, 1, gfx::Rect(0, 15, 50, 50))); | 624 CreateTestWindowInShellWithDelegate(&wd, 1, gfx::Rect(0, 15, 50, 50))); |
| 622 d1.SetWindow(w1.get()); | 625 d1.SetWindow(w1.get()); |
| 623 w1->Show(); | 626 w1->Show(); |
| 624 | 627 |
| 625 gfx::Point miss_point(5, 5); | 628 gfx::Point miss_point(5, 5); |
| 626 transform.TransformPoint(&miss_point); | 629 transform.TransformPoint(&miss_point); |
| 627 ui::MouseEvent mouseev1(ui::ET_MOUSE_PRESSED, | 630 ui::MouseEvent mouseev1(ui::ET_MOUSE_PRESSED, |
| 628 miss_point, | 631 miss_point, |
| 629 miss_point, | 632 miss_point, |
| 630 ui::EF_LEFT_MOUSE_BUTTON, | 633 ui::EF_LEFT_MOUSE_BUTTON, |
| 631 ui::EF_LEFT_MOUSE_BUTTON); | 634 ui::EF_LEFT_MOUSE_BUTTON); |
| 632 aura::WindowEventDispatcher* dispatcher = root_window->GetDispatcher(); | 635 aura::WindowEventDispatcher* dispatcher = |
| 636 root_window->GetHost()->dispatcher(); |
| 633 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&mouseev1); | 637 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&mouseev1); |
| 634 ASSERT_FALSE(details.dispatcher_destroyed); | 638 ASSERT_FALSE(details.dispatcher_destroyed); |
| 635 EXPECT_EQ(NULL, aura::client::GetFocusClient(w1.get())->GetFocusedWindow()); | 639 EXPECT_EQ(NULL, aura::client::GetFocusClient(w1.get())->GetFocusedWindow()); |
| 636 ui::MouseEvent mouseup(ui::ET_MOUSE_RELEASED, | 640 ui::MouseEvent mouseup(ui::ET_MOUSE_RELEASED, |
| 637 miss_point, | 641 miss_point, |
| 638 miss_point, | 642 miss_point, |
| 639 ui::EF_LEFT_MOUSE_BUTTON, | 643 ui::EF_LEFT_MOUSE_BUTTON, |
| 640 ui::EF_LEFT_MOUSE_BUTTON); | 644 ui::EF_LEFT_MOUSE_BUTTON); |
| 641 details = dispatcher->OnEventFromSource(&mouseup); | 645 details = dispatcher->OnEventFromSource(&mouseup); |
| 642 ASSERT_FALSE(details.dispatcher_destroyed); | 646 ASSERT_FALSE(details.dispatcher_destroyed); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 scoped_ptr<CustomEventHandler> f2(new CustomEventHandler); | 678 scoped_ptr<CustomEventHandler> f2(new CustomEventHandler); |
| 675 | 679 |
| 676 // Adds them to root window event filter. | 680 // Adds them to root window event filter. |
| 677 views::corewm::CompoundEventFilter* env_filter = | 681 views::corewm::CompoundEventFilter* env_filter = |
| 678 Shell::GetInstance()->env_filter(); | 682 Shell::GetInstance()->env_filter(); |
| 679 env_filter->AddHandler(f1.get()); | 683 env_filter->AddHandler(f1.get()); |
| 680 env_filter->AddHandler(f2.get()); | 684 env_filter->AddHandler(f2.get()); |
| 681 | 685 |
| 682 // Dispatches mouse and keyboard events. | 686 // Dispatches mouse and keyboard events. |
| 683 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, 0, false); | 687 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, 0, false); |
| 684 aura::WindowEventDispatcher* dispatcher = root_window->GetDispatcher(); | 688 aura::WindowEventDispatcher* dispatcher = |
| 689 root_window->GetHost()->dispatcher(); |
| 685 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&key_event); | 690 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&key_event); |
| 686 ASSERT_FALSE(details.dispatcher_destroyed); | 691 ASSERT_FALSE(details.dispatcher_destroyed); |
| 687 ui::MouseEvent mouse_pressed( | 692 ui::MouseEvent mouse_pressed( |
| 688 ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), 0, 0); | 693 ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), 0, 0); |
| 689 details = dispatcher->OnEventFromSource(&mouse_pressed); | 694 details = dispatcher->OnEventFromSource(&mouse_pressed); |
| 690 ASSERT_FALSE(details.dispatcher_destroyed); | 695 ASSERT_FALSE(details.dispatcher_destroyed); |
| 691 | 696 |
| 692 // Both filters should get the events. | 697 // Both filters should get the events. |
| 693 EXPECT_EQ(1, f1->num_key_events()); | 698 EXPECT_EQ(1, f1->num_key_events()); |
| 694 EXPECT_EQ(1, f1->num_mouse_events()); | 699 EXPECT_EQ(1, f1->num_mouse_events()); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 840 observer_a.reset(); | 845 observer_a.reset(); |
| 841 observer_b.reset(); | 846 observer_b.reset(); |
| 842 generator.MoveMouseTo(50, 50); | 847 generator.MoveMouseTo(50, 50); |
| 843 EXPECT_TRUE(observer_a.did_visibility_change()); | 848 EXPECT_TRUE(observer_a.did_visibility_change()); |
| 844 EXPECT_FALSE(observer_b.did_visibility_change()); | 849 EXPECT_FALSE(observer_b.did_visibility_change()); |
| 845 EXPECT_TRUE(observer_a.is_cursor_visible()); | 850 EXPECT_TRUE(observer_a.is_cursor_visible()); |
| 846 } | 851 } |
| 847 #endif // defined(OS_CHROMEOS) | 852 #endif // defined(OS_CHROMEOS) |
| 848 | 853 |
| 849 } // namespace ash | 854 } // namespace ash |
| OLD | NEW |