OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/common/wm/workspace_controller.h" | 5 #include "ash/common/wm/workspace_controller.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "ash/common/session/session_controller.h" | 9 #include "ash/common/session/session_controller.h" |
10 #include "ash/common/shelf/shelf_layout_manager.h" | 10 #include "ash/common/shelf/shelf_layout_manager.h" |
(...skipping 1463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1474 std::unique_ptr<Window> first(aura::test::CreateTestWindowWithDelegate( | 1474 std::unique_ptr<Window> first(aura::test::CreateTestWindowWithDelegate( |
1475 &d_first, 123, gfx::Rect(20, 10, 100, 50), NULL)); | 1475 &d_first, 123, gfx::Rect(20, 10, 100, 50), NULL)); |
1476 ParentWindowInPrimaryRootWindow(first.get()); | 1476 ParentWindowInPrimaryRootWindow(first.get()); |
1477 first->Show(); | 1477 first->Show(); |
1478 | 1478 |
1479 std::unique_ptr<Window> second(aura::test::CreateTestWindowWithDelegate( | 1479 std::unique_ptr<Window> second(aura::test::CreateTestWindowWithDelegate( |
1480 &d_second, 234, gfx::Rect(30, 40, 40, 10), NULL)); | 1480 &d_second, 234, gfx::Rect(30, 40, 40, 10), NULL)); |
1481 ParentWindowInPrimaryRootWindow(second.get()); | 1481 ParentWindowInPrimaryRootWindow(second.get()); |
1482 second->Show(); | 1482 second->Show(); |
1483 | 1483 |
1484 aura::Window* root = first->GetRootWindow(); | 1484 ui::EventTarget* root = first->GetRootWindow(); |
1485 ui::EventTargeter* targeter = | 1485 ui::EventTargeter* targeter = root->GetEventTargeter(); |
1486 root->GetHost()->dispatcher()->GetDefaultEventTargeter(); | |
1487 | 1486 |
1488 // The windows overlap, and |second| is on top of |first|. Events targeted | 1487 // The windows overlap, and |second| is on top of |first|. Events targeted |
1489 // slightly outside the edges of the |second| window should still be targeted | 1488 // slightly outside the edges of the |second| window should still be targeted |
1490 // to |second| to allow resizing the windows easily. | 1489 // to |second| to allow resizing the windows easily. |
1491 | 1490 |
1492 const int kNumPoints = 4; | 1491 const int kNumPoints = 4; |
1493 struct { | 1492 struct { |
1494 const char* direction; | 1493 const char* direction; |
1495 gfx::Point location; | 1494 gfx::Point location; |
1496 } points[kNumPoints] = { | 1495 } points[kNumPoints] = { |
(...skipping 27 matching lines...) Expand all Loading... |
1524 transform.Translate(70, 40); | 1523 transform.Translate(70, 40); |
1525 second->SetTransform(transform); | 1524 second->SetTransform(transform); |
1526 } | 1525 } |
1527 } | 1526 } |
1528 | 1527 |
1529 // Verifies mouse event targeting just outside the window edges for panels. | 1528 // Verifies mouse event targeting just outside the window edges for panels. |
1530 TEST_F(WorkspaceControllerTest, WindowEdgeMouseHitTestPanel) { | 1529 TEST_F(WorkspaceControllerTest, WindowEdgeMouseHitTestPanel) { |
1531 aura::test::TestWindowDelegate delegate; | 1530 aura::test::TestWindowDelegate delegate; |
1532 std::unique_ptr<Window> window( | 1531 std::unique_ptr<Window> window( |
1533 CreateTestPanel(&delegate, gfx::Rect(20, 10, 100, 50))); | 1532 CreateTestPanel(&delegate, gfx::Rect(20, 10, 100, 50))); |
1534 aura::Window* root = window->GetRootWindow(); | 1533 ui::EventTarget* root = window->GetRootWindow(); |
1535 ui::EventTargeter* targeter = | 1534 ui::EventTargeter* targeter = root->GetEventTargeter(); |
1536 root->GetHost()->dispatcher()->GetDefaultEventTargeter(); | |
1537 const gfx::Rect bounds = window->bounds(); | 1535 const gfx::Rect bounds = window->bounds(); |
1538 const int kNumPoints = 5; | 1536 const int kNumPoints = 5; |
1539 struct { | 1537 struct { |
1540 const char* direction; | 1538 const char* direction; |
1541 gfx::Point location; | 1539 gfx::Point location; |
1542 bool is_target_hit; | 1540 bool is_target_hit; |
1543 } points[kNumPoints] = { | 1541 } points[kNumPoints] = { |
1544 {"left", gfx::Point(bounds.x() - 2, bounds.y() + 10), true}, | 1542 {"left", gfx::Point(bounds.x() - 2, bounds.y() + 10), true}, |
1545 {"top", gfx::Point(bounds.x() + 10, bounds.y() - 2), true}, | 1543 {"top", gfx::Point(bounds.x() + 10, bounds.y() - 2), true}, |
1546 {"right", gfx::Point(bounds.right() + 2, bounds.y() + 10), true}, | 1544 {"right", gfx::Point(bounds.right() + 2, bounds.y() + 10), true}, |
(...skipping 14 matching lines...) Expand all Loading... |
1561 } | 1559 } |
1562 | 1560 |
1563 // Verifies touch event targeting just outside the window edges for panels. | 1561 // Verifies touch event targeting just outside the window edges for panels. |
1564 // The shelf is aligned to the bottom by default, and so touches just below | 1562 // The shelf is aligned to the bottom by default, and so touches just below |
1565 // the bottom edge of the panel should not target the panel itself because | 1563 // the bottom edge of the panel should not target the panel itself because |
1566 // an AttachedPanelWindowTargeter is installed on the panel container. | 1564 // an AttachedPanelWindowTargeter is installed on the panel container. |
1567 TEST_F(WorkspaceControllerTest, WindowEdgeTouchHitTestPanel) { | 1565 TEST_F(WorkspaceControllerTest, WindowEdgeTouchHitTestPanel) { |
1568 aura::test::TestWindowDelegate delegate; | 1566 aura::test::TestWindowDelegate delegate; |
1569 std::unique_ptr<Window> window( | 1567 std::unique_ptr<Window> window( |
1570 CreateTestPanel(&delegate, gfx::Rect(20, 10, 100, 50))); | 1568 CreateTestPanel(&delegate, gfx::Rect(20, 10, 100, 50))); |
1571 aura::Window* root = window->GetRootWindow(); | 1569 ui::EventTarget* root = window->GetRootWindow(); |
1572 ui::EventTargeter* targeter = | 1570 ui::EventTargeter* targeter = root->GetEventTargeter(); |
1573 root->GetHost()->dispatcher()->GetDefaultEventTargeter(); | |
1574 const gfx::Rect bounds = window->bounds(); | 1571 const gfx::Rect bounds = window->bounds(); |
1575 const int kNumPoints = 5; | 1572 const int kNumPoints = 5; |
1576 struct { | 1573 struct { |
1577 const char* direction; | 1574 const char* direction; |
1578 gfx::Point location; | 1575 gfx::Point location; |
1579 bool is_target_hit; | 1576 bool is_target_hit; |
1580 } points[kNumPoints] = { | 1577 } points[kNumPoints] = { |
1581 {"left", gfx::Point(bounds.x() - 2, bounds.y() + 10), true}, | 1578 {"left", gfx::Point(bounds.x() - 2, bounds.y() + 10), true}, |
1582 {"top", gfx::Point(bounds.x() + 10, bounds.y() - 2), true}, | 1579 {"top", gfx::Point(bounds.x() + 10, bounds.y() - 2), true}, |
1583 {"right", gfx::Point(bounds.right() + 2, bounds.y() + 10), true}, | 1580 {"right", gfx::Point(bounds.right() + 2, bounds.y() + 10), true}, |
(...skipping 19 matching lines...) Expand all Loading... |
1603 // Make window smaller than the minimum docked area so that the window edges | 1600 // Make window smaller than the minimum docked area so that the window edges |
1604 // are exposed. | 1601 // are exposed. |
1605 delegate.set_maximum_size(gfx::Size(180, 200)); | 1602 delegate.set_maximum_size(gfx::Size(180, 200)); |
1606 std::unique_ptr<Window> window(aura::test::CreateTestWindowWithDelegate( | 1603 std::unique_ptr<Window> window(aura::test::CreateTestWindowWithDelegate( |
1607 &delegate, 123, gfx::Rect(20, 10, 100, 50), NULL)); | 1604 &delegate, 123, gfx::Rect(20, 10, 100, 50), NULL)); |
1608 ParentWindowInPrimaryRootWindow(window.get()); | 1605 ParentWindowInPrimaryRootWindow(window.get()); |
1609 aura::Window* docked_container = Shell::GetContainer( | 1606 aura::Window* docked_container = Shell::GetContainer( |
1610 window->GetRootWindow(), kShellWindowId_DockedContainer); | 1607 window->GetRootWindow(), kShellWindowId_DockedContainer); |
1611 docked_container->AddChild(window.get()); | 1608 docked_container->AddChild(window.get()); |
1612 window->Show(); | 1609 window->Show(); |
1613 aura::Window* root = window->GetRootWindow(); | 1610 ui::EventTarget* root = window->GetRootWindow(); |
1614 ui::EventTargeter* targeter = | 1611 ui::EventTargeter* targeter = root->GetEventTargeter(); |
1615 root->GetHost()->dispatcher()->GetDefaultEventTargeter(); | |
1616 const gfx::Rect bounds = window->bounds(); | 1612 const gfx::Rect bounds = window->bounds(); |
1617 const int kNumPoints = 5; | 1613 const int kNumPoints = 5; |
1618 struct { | 1614 struct { |
1619 const char* direction; | 1615 const char* direction; |
1620 gfx::Point location; | 1616 gfx::Point location; |
1621 bool is_target_hit; | 1617 bool is_target_hit; |
1622 } points[kNumPoints] = { | 1618 } points[kNumPoints] = { |
1623 {"left", gfx::Point(bounds.x() - 2, bounds.y() + 10), true}, | 1619 {"left", gfx::Point(bounds.x() - 2, bounds.y() + 10), true}, |
1624 {"top", gfx::Point(bounds.x() + 10, bounds.y() - 2), true}, | 1620 {"top", gfx::Point(bounds.x() + 10, bounds.y() - 2), true}, |
1625 {"right", gfx::Point(bounds.right() + 2, bounds.y() + 10), true}, | 1621 {"right", gfx::Point(bounds.right() + 2, bounds.y() + 10), true}, |
(...skipping 15 matching lines...) Expand all Loading... |
1641 ui::EventTimeForNow()); | 1637 ui::EventTimeForNow()); |
1642 target = targeter->FindTargetForEvent(root, &touch); | 1638 target = targeter->FindTargetForEvent(root, &touch); |
1643 if (points[i].is_target_hit) | 1639 if (points[i].is_target_hit) |
1644 EXPECT_EQ(window.get(), target); | 1640 EXPECT_EQ(window.get(), target); |
1645 else | 1641 else |
1646 EXPECT_NE(window.get(), target); | 1642 EXPECT_NE(window.get(), target); |
1647 } | 1643 } |
1648 } | 1644 } |
1649 | 1645 |
1650 } // namespace ash | 1646 } // namespace ash |
OLD | NEW |