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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
7 #include "ui/events/event.h" | 7 #include "ui/events/event.h" |
8 #include "ui/events/event_utils.h" | 8 #include "ui/events/event_utils.h" |
9 #include "ui/events/keycodes/dom3/dom_code.h" | 9 #include "ui/events/keycodes/dom3/dom_code.h" |
10 #include "ui/events/keycodes/dom4/keycode_converter.h" | 10 #include "ui/events/keycodes/dom4/keycode_converter.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 0); | 72 0); |
73 MouseEvent mouse_ev2(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), 0, | 73 MouseEvent mouse_ev2(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), 0, |
74 0); | 74 0); |
75 LocatedEventTestApi test_ev1(&mouse_ev1); | 75 LocatedEventTestApi test_ev1(&mouse_ev1); |
76 LocatedEventTestApi test_ev2(&mouse_ev2); | 76 LocatedEventTestApi test_ev2(&mouse_ev2); |
77 | 77 |
78 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 78 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); |
79 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); | 79 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); |
80 base::TimeDelta later = start + base::TimeDelta::FromMilliseconds(1000); | 80 base::TimeDelta later = start + base::TimeDelta::FromMilliseconds(1000); |
81 | 81 |
| 82 // Same event. |
| 83 test_ev1.set_location(gfx::Point(0, 0)); |
| 84 test_ev2.set_location(gfx::Point(1, 0)); |
| 85 test_ev1.set_time_stamp(start); |
| 86 test_ev2.set_time_stamp(start); |
| 87 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); |
| 88 MouseEvent mouse_ev3(mouse_ev1); |
| 89 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev3)); |
| 90 |
82 // Close point. | 91 // Close point. |
83 test_ev1.set_location(gfx::Point(0, 0)); | 92 test_ev1.set_location(gfx::Point(0, 0)); |
84 test_ev2.set_location(gfx::Point(1, 0)); | 93 test_ev2.set_location(gfx::Point(1, 0)); |
85 test_ev1.set_time_stamp(start); | 94 test_ev1.set_time_stamp(start); |
86 test_ev2.set_time_stamp(soon); | 95 test_ev2.set_time_stamp(soon); |
87 EXPECT_TRUE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); | 96 EXPECT_TRUE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); |
88 | 97 |
89 // Too far. | 98 // Too far. |
90 test_ev1.set_location(gfx::Point(0, 0)); | 99 test_ev1.set_location(gfx::Point(0, 0)); |
91 test_ev2.set_location(gfx::Point(10, 0)); | 100 test_ev2.set_location(gfx::Point(10, 0)); |
(...skipping 11 matching lines...) Expand all Loading... |
103 | 112 |
104 // Tests that an event only increases the click count and gets marked as a | 113 // Tests that an event only increases the click count and gets marked as a |
105 // double click if a release event was seen for the previous click. This | 114 // double click if a release event was seen for the previous click. This |
106 // prevents the same PRESSED event from being processed twice: | 115 // prevents the same PRESSED event from being processed twice: |
107 // http://crbug.com/389162 | 116 // http://crbug.com/389162 |
108 TEST(EventTest, DoubleClickRequiresRelease) { | 117 TEST(EventTest, DoubleClickRequiresRelease) { |
109 const gfx::Point origin1(0, 0); | 118 const gfx::Point origin1(0, 0); |
110 const gfx::Point origin2(100, 0); | 119 const gfx::Point origin2(100, 0); |
111 scoped_ptr<MouseEvent> ev; | 120 scoped_ptr<MouseEvent> ev; |
112 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 121 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); |
| 122 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); |
113 | 123 |
114 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), | 124 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), |
115 0, 0)); | 125 0, 0)); |
116 ev->set_time_stamp(start); | 126 ev->set_time_stamp(start); |
117 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 127 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
118 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), | 128 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), |
119 0, 0)); | 129 0, 0)); |
120 ev->set_time_stamp(start); | 130 ev->set_time_stamp(start); |
121 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 131 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
122 | 132 |
123 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin2, origin2, EventTimeForNow(), | 133 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin2, origin2, EventTimeForNow(), |
124 0, 0)); | 134 0, 0)); |
125 ev->set_time_stamp(start); | 135 ev->set_time_stamp(start); |
126 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 136 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
127 ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin2, origin2, | 137 ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin2, origin2, |
128 EventTimeForNow(), 0, 0)); | 138 EventTimeForNow(), 0, 0)); |
129 ev->set_time_stamp(start); | 139 ev->set_time_stamp(start); |
130 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 140 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
131 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin2, origin2, EventTimeForNow(), | 141 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin2, origin2, EventTimeForNow(), |
132 0, 0)); | 142 0, 0)); |
133 ev->set_time_stamp(start); | 143 ev->set_time_stamp(soon); |
134 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); | 144 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); |
135 ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin2, origin2, | 145 ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin2, origin2, |
136 EventTimeForNow(), 0, 0)); | 146 EventTimeForNow(), 0, 0)); |
137 ev->set_time_stamp(start); | 147 ev->set_time_stamp(soon); |
138 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); | 148 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); |
139 MouseEvent::ResetLastClickForTest(); | 149 MouseEvent::ResetLastClickForTest(); |
140 } | 150 } |
141 | 151 |
142 // Tests that clicking right and then left clicking does not generate a double | 152 // Tests that clicking right and then left clicking does not generate a double |
143 // click. | 153 // click. |
144 TEST(EventTest, SingleClickRightLeft) { | 154 TEST(EventTest, SingleClickRightLeft) { |
145 const gfx::Point origin(0, 0); | 155 const gfx::Point origin(0, 0); |
146 scoped_ptr<MouseEvent> ev; | 156 scoped_ptr<MouseEvent> ev; |
147 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 157 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); |
| 158 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); |
148 | 159 |
149 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), | 160 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), |
150 ui::EF_RIGHT_MOUSE_BUTTON, | 161 ui::EF_RIGHT_MOUSE_BUTTON, |
151 ui::EF_RIGHT_MOUSE_BUTTON)); | 162 ui::EF_RIGHT_MOUSE_BUTTON)); |
152 ev->set_time_stamp(start); | 163 ev->set_time_stamp(start); |
153 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 164 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
154 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), | 165 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), |
155 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); | 166 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
156 ev->set_time_stamp(start); | 167 ev->set_time_stamp(start); |
157 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 168 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
158 ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin, origin, EventTimeForNow(), | 169 ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin, origin, EventTimeForNow(), |
159 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); | 170 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
160 ev->set_time_stamp(start); | 171 ev->set_time_stamp(start); |
161 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 172 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
162 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), | 173 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), |
163 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); | 174 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
164 ev->set_time_stamp(start); | 175 ev->set_time_stamp(soon); |
165 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); | 176 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); |
166 MouseEvent::ResetLastClickForTest(); | 177 MouseEvent::ResetLastClickForTest(); |
167 } | 178 } |
168 | 179 |
169 TEST(EventTest, KeyEvent) { | 180 TEST(EventTest, KeyEvent) { |
170 static const struct { | 181 static const struct { |
171 KeyboardCode key_code; | 182 KeyboardCode key_code; |
172 int flags; | 183 int flags; |
173 uint16 character; | 184 uint16 character; |
174 } kTestData[] = { | 185 } kTestData[] = { |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
588 | 599 |
589 { | 600 { |
590 const float angle_too_big = 400; | 601 const float angle_too_big = 400; |
591 TouchEvent event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, | 602 TouchEvent event(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, time, |
592 radius_x, radius_y, angle_too_big, 0); | 603 radius_x, radius_y, angle_too_big, 0); |
593 EXPECT_FLOAT_EQ(400 - 360, event.rotation_angle()); | 604 EXPECT_FLOAT_EQ(400 - 360, event.rotation_angle()); |
594 } | 605 } |
595 } | 606 } |
596 | 607 |
597 } // namespace ui | 608 } // namespace ui |
OLD | NEW |