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 |