| 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 "ui/events/event.h" | 5 #include "ui/events/event.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 | 82 |
| 83 TEST(EventTest, RepeatedClick) { | 83 TEST(EventTest, RepeatedClick) { |
| 84 const gfx::Point origin(0, 0); | 84 const gfx::Point origin(0, 0); |
| 85 MouseEvent mouse_ev1(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), 0, | 85 MouseEvent mouse_ev1(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), 0, |
| 86 0); | 86 0); |
| 87 MouseEvent mouse_ev2(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), 0, | 87 MouseEvent mouse_ev2(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), 0, |
| 88 0); | 88 0); |
| 89 LocatedEventTestApi test_ev1(&mouse_ev1); | 89 LocatedEventTestApi test_ev1(&mouse_ev1); |
| 90 LocatedEventTestApi test_ev2(&mouse_ev2); | 90 LocatedEventTestApi test_ev2(&mouse_ev2); |
| 91 | 91 |
| 92 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 92 base::TimeTicks start = base::TimeTicks(); |
| 93 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); | 93 base::TimeTicks soon = start + base::TimeDelta::FromMilliseconds(1); |
| 94 base::TimeDelta later = start + base::TimeDelta::FromMilliseconds(1000); | 94 base::TimeTicks later = start + base::TimeDelta::FromMilliseconds(1000); |
| 95 | 95 |
| 96 // Same event. | 96 // Same event. |
| 97 test_ev1.set_location(gfx::Point(0, 0)); | 97 test_ev1.set_location(gfx::Point(0, 0)); |
| 98 test_ev2.set_location(gfx::Point(1, 0)); | 98 test_ev2.set_location(gfx::Point(1, 0)); |
| 99 test_ev1.set_time_stamp(start); | 99 test_ev1.set_time_stamp(start); |
| 100 test_ev2.set_time_stamp(start); | 100 test_ev2.set_time_stamp(start); |
| 101 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); | 101 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); |
| 102 MouseEvent mouse_ev3(mouse_ev1); | 102 MouseEvent mouse_ev3(mouse_ev1); |
| 103 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev3)); | 103 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev3)); |
| 104 | 104 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 125 } | 125 } |
| 126 | 126 |
| 127 // Tests that an event only increases the click count and gets marked as a | 127 // Tests that an event only increases the click count and gets marked as a |
| 128 // double click if a release event was seen for the previous click. This | 128 // double click if a release event was seen for the previous click. This |
| 129 // prevents the same PRESSED event from being processed twice: | 129 // prevents the same PRESSED event from being processed twice: |
| 130 // http://crbug.com/389162 | 130 // http://crbug.com/389162 |
| 131 TEST(EventTest, DoubleClickRequiresRelease) { | 131 TEST(EventTest, DoubleClickRequiresRelease) { |
| 132 const gfx::Point origin1(0, 0); | 132 const gfx::Point origin1(0, 0); |
| 133 const gfx::Point origin2(100, 0); | 133 const gfx::Point origin2(100, 0); |
| 134 std::unique_ptr<MouseEvent> ev; | 134 std::unique_ptr<MouseEvent> ev; |
| 135 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 135 base::TimeTicks start = base::TimeTicks(); |
| 136 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); | 136 base::TimeTicks soon = start + base::TimeDelta::FromMilliseconds(1); |
| 137 | 137 |
| 138 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), | 138 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), |
| 139 0, 0)); | 139 0, 0)); |
| 140 ev->set_time_stamp(start); | 140 ev->set_time_stamp(start); |
| 141 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 141 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
| 142 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), | 142 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), |
| 143 0, 0)); | 143 0, 0)); |
| 144 ev->set_time_stamp(start); | 144 ev->set_time_stamp(start); |
| 145 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 145 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
| 146 | 146 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 161 ev->set_time_stamp(soon); | 161 ev->set_time_stamp(soon); |
| 162 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); | 162 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); |
| 163 MouseEvent::ResetLastClickForTest(); | 163 MouseEvent::ResetLastClickForTest(); |
| 164 } | 164 } |
| 165 | 165 |
| 166 // Tests that clicking right and then left clicking does not generate a double | 166 // Tests that clicking right and then left clicking does not generate a double |
| 167 // click. | 167 // click. |
| 168 TEST(EventTest, SingleClickRightLeft) { | 168 TEST(EventTest, SingleClickRightLeft) { |
| 169 const gfx::Point origin(0, 0); | 169 const gfx::Point origin(0, 0); |
| 170 std::unique_ptr<MouseEvent> ev; | 170 std::unique_ptr<MouseEvent> ev; |
| 171 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 171 base::TimeTicks start = base::TimeTicks(); |
| 172 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); | 172 base::TimeTicks soon = start + base::TimeDelta::FromMilliseconds(1); |
| 173 | 173 |
| 174 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), | 174 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), |
| 175 ui::EF_RIGHT_MOUSE_BUTTON, | 175 ui::EF_RIGHT_MOUSE_BUTTON, |
| 176 ui::EF_RIGHT_MOUSE_BUTTON)); | 176 ui::EF_RIGHT_MOUSE_BUTTON)); |
| 177 ev->set_time_stamp(start); | 177 ev->set_time_stamp(start); |
| 178 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 178 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
| 179 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), | 179 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), |
| 180 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); | 180 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| 181 ev->set_time_stamp(start); | 181 ev->set_time_stamp(start); |
| 182 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 182 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 EXPECT_FALSE(key_a1.is_repeat()); | 560 EXPECT_FALSE(key_a1.is_repeat()); |
| 561 | 561 |
| 562 KeyEvent key_a1_with_same_event(native_event_a_pressed); | 562 KeyEvent key_a1_with_same_event(native_event_a_pressed); |
| 563 EXPECT_FALSE(key_a1_with_same_event.is_repeat()); | 563 EXPECT_FALSE(key_a1_with_same_event.is_repeat()); |
| 564 } | 564 } |
| 565 #endif | 565 #endif |
| 566 } | 566 } |
| 567 #endif // USE_X11 || OS_WIN | 567 #endif // USE_X11 || OS_WIN |
| 568 | 568 |
| 569 TEST(EventTest, TouchEventRadiusDefaultsToOtherAxis) { | 569 TEST(EventTest, TouchEventRadiusDefaultsToOtherAxis) { |
| 570 const base::TimeDelta time = base::TimeDelta::FromMilliseconds(0); | 570 const base::TimeTicks time = base::TimeTicks(); |
| 571 const float non_zero_length1 = 30; | 571 const float non_zero_length1 = 30; |
| 572 const float non_zero_length2 = 46; | 572 const float non_zero_length2 = 46; |
| 573 | 573 |
| 574 TouchEvent event1(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, | 574 TouchEvent event1(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, |
| 575 non_zero_length1, 0, 0, 0); | 575 non_zero_length1, 0, 0, 0); |
| 576 EXPECT_EQ(non_zero_length1, event1.pointer_details().radius_x); | 576 EXPECT_EQ(non_zero_length1, event1.pointer_details().radius_x); |
| 577 EXPECT_EQ(non_zero_length1, event1.pointer_details().radius_y); | 577 EXPECT_EQ(non_zero_length1, event1.pointer_details().radius_y); |
| 578 | 578 |
| 579 TouchEvent event2(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, | 579 TouchEvent event2(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, |
| 580 0, non_zero_length2, 0, 0); | 580 0, non_zero_length2, 0, 0); |
| 581 EXPECT_EQ(non_zero_length2, event2.pointer_details().radius_x); | 581 EXPECT_EQ(non_zero_length2, event2.pointer_details().radius_x); |
| 582 EXPECT_EQ(non_zero_length2, event2.pointer_details().radius_y); | 582 EXPECT_EQ(non_zero_length2, event2.pointer_details().radius_y); |
| 583 } | 583 } |
| 584 | 584 |
| 585 TEST(EventTest, TouchEventRotationAngleFixing) { | 585 TEST(EventTest, TouchEventRotationAngleFixing) { |
| 586 const base::TimeDelta time = base::TimeDelta::FromMilliseconds(0); | 586 const base::TimeTicks time = base::TimeTicks(); |
| 587 const float radius_x = 20; | 587 const float radius_x = 20; |
| 588 const float radius_y = 10; | 588 const float radius_y = 10; |
| 589 | 589 |
| 590 { | 590 { |
| 591 const float angle_in_range = 0; | 591 const float angle_in_range = 0; |
| 592 TouchEvent event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, | 592 TouchEvent event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, |
| 593 radius_x, radius_y, angle_in_range, 0); | 593 radius_x, radius_y, angle_in_range, 0); |
| 594 EXPECT_FLOAT_EQ(angle_in_range, event.rotation_angle()); | 594 EXPECT_FLOAT_EQ(angle_in_range, event.rotation_angle()); |
| 595 } | 595 } |
| 596 | 596 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 EXPECT_EQ(-45.0f, touch_event.pointer_details().tilt_y); | 726 EXPECT_EQ(-45.0f, touch_event.pointer_details().tilt_y); |
| 727 EXPECT_EQ(5.0f, touch_event.pointer_details().radius_x); | 727 EXPECT_EQ(5.0f, touch_event.pointer_details().radius_x); |
| 728 EXPECT_EQ(6.0f, touch_event.pointer_details().radius_y); | 728 EXPECT_EQ(6.0f, touch_event.pointer_details().radius_y); |
| 729 | 729 |
| 730 ui::TouchEvent touch_event_copy(touch_event); | 730 ui::TouchEvent touch_event_copy(touch_event); |
| 731 EXPECT_EQ(touch_event.pointer_details(), touch_event_copy.pointer_details()); | 731 EXPECT_EQ(touch_event.pointer_details(), touch_event_copy.pointer_details()); |
| 732 } | 732 } |
| 733 | 733 |
| 734 TEST(EventTest, PointerEventCanConvertFrom) { | 734 TEST(EventTest, PointerEventCanConvertFrom) { |
| 735 const gfx::Point point; | 735 const gfx::Point point; |
| 736 const base::TimeDelta time; | 736 const base::TimeTicks time; |
| 737 | 737 |
| 738 // Common mouse events can be converted. | 738 // Common mouse events can be converted. |
| 739 const EventType mouse_allowed[] = { | 739 const EventType mouse_allowed[] = { |
| 740 ET_MOUSE_PRESSED, | 740 ET_MOUSE_PRESSED, |
| 741 ET_MOUSE_DRAGGED, | 741 ET_MOUSE_DRAGGED, |
| 742 ET_MOUSE_MOVED, | 742 ET_MOUSE_MOVED, |
| 743 ET_MOUSE_ENTERED, | 743 ET_MOUSE_ENTERED, |
| 744 ET_MOUSE_EXITED, | 744 ET_MOUSE_EXITED, |
| 745 ET_MOUSE_RELEASED | 745 ET_MOUSE_RELEASED |
| 746 }; | 746 }; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 }; | 788 }; |
| 789 const ui::EventType kTouchTypeMap[][2] = { | 789 const ui::EventType kTouchTypeMap[][2] = { |
| 790 {ui::ET_TOUCH_PRESSED, ui::ET_POINTER_DOWN}, | 790 {ui::ET_TOUCH_PRESSED, ui::ET_POINTER_DOWN}, |
| 791 {ui::ET_TOUCH_MOVED, ui::ET_POINTER_MOVED}, | 791 {ui::ET_TOUCH_MOVED, ui::ET_POINTER_MOVED}, |
| 792 {ui::ET_TOUCH_RELEASED, ui::ET_POINTER_UP}, | 792 {ui::ET_TOUCH_RELEASED, ui::ET_POINTER_UP}, |
| 793 {ui::ET_TOUCH_CANCELLED, ui::ET_POINTER_CANCELLED}, | 793 {ui::ET_TOUCH_CANCELLED, ui::ET_POINTER_CANCELLED}, |
| 794 }; | 794 }; |
| 795 | 795 |
| 796 for (size_t i = 0; i < arraysize(kMouseTypeMap); i++) { | 796 for (size_t i = 0; i < arraysize(kMouseTypeMap); i++) { |
| 797 ui::MouseEvent mouse_event(kMouseTypeMap[i][0], gfx::Point(0, 0), | 797 ui::MouseEvent mouse_event(kMouseTypeMap[i][0], gfx::Point(0, 0), |
| 798 gfx::Point(0, 0), base::TimeDelta(), 0, 0); | 798 gfx::Point(0, 0), base::TimeTicks(), 0, 0); |
| 799 ui::PointerEvent pointer_event(mouse_event); | 799 ui::PointerEvent pointer_event(mouse_event); |
| 800 EXPECT_EQ(kMouseTypeMap[i][1], pointer_event.type()); | 800 EXPECT_EQ(kMouseTypeMap[i][1], pointer_event.type()); |
| 801 EXPECT_FALSE(pointer_event.IsMouseEvent()); | 801 EXPECT_FALSE(pointer_event.IsMouseEvent()); |
| 802 EXPECT_FALSE(pointer_event.IsTouchEvent()); | 802 EXPECT_FALSE(pointer_event.IsTouchEvent()); |
| 803 EXPECT_TRUE(pointer_event.IsPointerEvent()); | 803 EXPECT_TRUE(pointer_event.IsPointerEvent()); |
| 804 } | 804 } |
| 805 | 805 |
| 806 for (size_t i = 0; i < arraysize(kTouchTypeMap); i++) { | 806 for (size_t i = 0; i < arraysize(kTouchTypeMap); i++) { |
| 807 ui::TouchEvent touch_event(kTouchTypeMap[i][0], gfx::Point(0, 0), 0, | 807 ui::TouchEvent touch_event(kTouchTypeMap[i][0], gfx::Point(0, 0), 0, |
| 808 base::TimeDelta()); | 808 base::TimeTicks()); |
| 809 ui::PointerEvent pointer_event(touch_event); | 809 ui::PointerEvent pointer_event(touch_event); |
| 810 EXPECT_EQ(kTouchTypeMap[i][1], pointer_event.type()); | 810 EXPECT_EQ(kTouchTypeMap[i][1], pointer_event.type()); |
| 811 EXPECT_FALSE(pointer_event.IsMouseEvent()); | 811 EXPECT_FALSE(pointer_event.IsMouseEvent()); |
| 812 EXPECT_FALSE(pointer_event.IsTouchEvent()); | 812 EXPECT_FALSE(pointer_event.IsTouchEvent()); |
| 813 EXPECT_TRUE(pointer_event.IsPointerEvent()); | 813 EXPECT_TRUE(pointer_event.IsPointerEvent()); |
| 814 } | 814 } |
| 815 } | 815 } |
| 816 | 816 |
| 817 TEST(EventTest, PointerEventId) { | 817 TEST(EventTest, PointerEventId) { |
| 818 { | 818 { |
| 819 ui::MouseEvent mouse_event(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), | 819 ui::MouseEvent mouse_event(ui::ET_MOUSE_PRESSED, gfx::Point(0, 0), |
| 820 gfx::Point(0, 0), base::TimeDelta(), 0, 0); | 820 gfx::Point(0, 0), base::TimeTicks(), 0, 0); |
| 821 ui::PointerEvent pointer_event(mouse_event); | 821 ui::PointerEvent pointer_event(mouse_event); |
| 822 EXPECT_EQ(pointer_event.pointer_id(), ui::PointerEvent::kMousePointerId); | 822 EXPECT_EQ(pointer_event.pointer_id(), ui::PointerEvent::kMousePointerId); |
| 823 } | 823 } |
| 824 | 824 |
| 825 for (int touch_id = 0; touch_id < 8; touch_id++) { | 825 for (int touch_id = 0; touch_id < 8; touch_id++) { |
| 826 ui::TouchEvent touch_event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), touch_id, | 826 ui::TouchEvent touch_event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), touch_id, |
| 827 base::TimeDelta()); | 827 base::TimeTicks()); |
| 828 ui::PointerEvent pointer_event(touch_event); | 828 ui::PointerEvent pointer_event(touch_event); |
| 829 EXPECT_EQ(pointer_event.pointer_id(), touch_id); | 829 EXPECT_EQ(pointer_event.pointer_id(), touch_id); |
| 830 } | 830 } |
| 831 } | 831 } |
| 832 | 832 |
| 833 TEST(EventTest, PointerDetailsPointer) { | 833 TEST(EventTest, PointerDetailsPointer) { |
| 834 const float kRadiusX = 10.0f; | 834 const float kRadiusX = 10.0f; |
| 835 const float kRadiusY = 5.0f; | 835 const float kRadiusY = 5.0f; |
| 836 const float kForce = 15.0f; | 836 const float kForce = 15.0f; |
| 837 ui::TouchEvent touch_event(ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, | 837 ui::TouchEvent touch_event(ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 | 880 |
| 881 EXPECT_EQ(ptr_event.type(), clone_as_ptr->type()); | 881 EXPECT_EQ(ptr_event.type(), clone_as_ptr->type()); |
| 882 EXPECT_EQ(ptr_event.pointer_id(), clone_as_ptr->pointer_id()); | 882 EXPECT_EQ(ptr_event.pointer_id(), clone_as_ptr->pointer_id()); |
| 883 EXPECT_EQ(ptr_event.pointer_details(), clone_as_ptr->pointer_details()); | 883 EXPECT_EQ(ptr_event.pointer_details(), clone_as_ptr->pointer_details()); |
| 884 EXPECT_EQ(ptr_event.location(), clone_as_ptr->location()); | 884 EXPECT_EQ(ptr_event.location(), clone_as_ptr->location()); |
| 885 EXPECT_EQ(ptr_event.root_location(), clone_as_ptr->root_location()); | 885 EXPECT_EQ(ptr_event.root_location(), clone_as_ptr->root_location()); |
| 886 } | 886 } |
| 887 } | 887 } |
| 888 | 888 |
| 889 } // namespace ui | 889 } // namespace ui |
| OLD | NEW |