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/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "base/timer/timer.h" | 9 #include "base/timer/timer.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 swipe_left_(false), | 83 swipe_left_(false), |
84 swipe_right_(false), | 84 swipe_right_(false), |
85 swipe_up_(false), | 85 swipe_up_(false), |
86 swipe_down_(false), | 86 swipe_down_(false), |
87 scroll_x_(0), | 87 scroll_x_(0), |
88 scroll_y_(0), | 88 scroll_y_(0), |
89 scroll_velocity_x_(0), | 89 scroll_velocity_x_(0), |
90 scroll_velocity_y_(0), | 90 scroll_velocity_y_(0), |
91 velocity_x_(0), | 91 velocity_x_(0), |
92 velocity_y_(0), | 92 velocity_y_(0), |
| 93 scroll_x_ordinal_(0), |
| 94 scroll_y_ordinal_(0), |
| 95 scroll_velocity_x_ordinal_(0), |
| 96 scroll_velocity_y_ordinal_(0), |
| 97 velocity_x_ordinal_(0), |
| 98 velocity_y_ordinal_(0), |
93 tap_count_(0), | 99 tap_count_(0), |
94 wait_until_event_(ui::ET_UNKNOWN) { | 100 wait_until_event_(ui::ET_UNKNOWN) { |
95 } | 101 } |
96 | 102 |
97 virtual ~GestureEventConsumeDelegate() {} | 103 virtual ~GestureEventConsumeDelegate() {} |
98 | 104 |
99 void Reset() { | 105 void Reset() { |
100 events_.clear(); | 106 events_.clear(); |
101 tap_ = false; | 107 tap_ = false; |
102 tap_down_ = false; | 108 tap_down_ = false; |
(...skipping 16 matching lines...) Expand all Loading... |
119 | 125 |
120 scroll_begin_position_.SetPoint(0, 0); | 126 scroll_begin_position_.SetPoint(0, 0); |
121 tap_location_.SetPoint(0, 0); | 127 tap_location_.SetPoint(0, 0); |
122 | 128 |
123 scroll_x_ = 0; | 129 scroll_x_ = 0; |
124 scroll_y_ = 0; | 130 scroll_y_ = 0; |
125 scroll_velocity_x_ = 0; | 131 scroll_velocity_x_ = 0; |
126 scroll_velocity_y_ = 0; | 132 scroll_velocity_y_ = 0; |
127 velocity_x_ = 0; | 133 velocity_x_ = 0; |
128 velocity_y_ = 0; | 134 velocity_y_ = 0; |
| 135 scroll_x_ordinal_ = 0; |
| 136 scroll_y_ordinal_ = 0; |
| 137 scroll_velocity_x_ordinal_ = 0; |
| 138 scroll_velocity_y_ordinal_ = 0; |
| 139 velocity_x_ordinal_ = 0; |
| 140 velocity_y_ordinal_ = 0; |
129 tap_count_ = 0; | 141 tap_count_ = 0; |
130 } | 142 } |
131 | 143 |
132 const std::vector<ui::EventType>& events() const { return events_; }; | 144 const std::vector<ui::EventType>& events() const { return events_; }; |
133 | 145 |
134 bool tap() const { return tap_; } | 146 bool tap() const { return tap_; } |
135 bool tap_down() const { return tap_down_; } | 147 bool tap_down() const { return tap_down_; } |
136 bool tap_cancel() const { return tap_cancel_; } | 148 bool tap_cancel() const { return tap_cancel_; } |
137 bool begin() const { return begin_; } | 149 bool begin() const { return begin_; } |
138 bool end() const { return end_; } | 150 bool end() const { return end_; } |
(...skipping 17 matching lines...) Expand all Loading... |
156 } | 168 } |
157 | 169 |
158 const gfx::Point tap_location() const { | 170 const gfx::Point tap_location() const { |
159 return tap_location_; | 171 return tap_location_; |
160 } | 172 } |
161 | 173 |
162 float scroll_x() const { return scroll_x_; } | 174 float scroll_x() const { return scroll_x_; } |
163 float scroll_y() const { return scroll_y_; } | 175 float scroll_y() const { return scroll_y_; } |
164 float scroll_velocity_x() const { return scroll_velocity_x_; } | 176 float scroll_velocity_x() const { return scroll_velocity_x_; } |
165 float scroll_velocity_y() const { return scroll_velocity_y_; } | 177 float scroll_velocity_y() const { return scroll_velocity_y_; } |
166 int touch_id() const { return touch_id_; } | |
167 float velocity_x() const { return velocity_x_; } | 178 float velocity_x() const { return velocity_x_; } |
168 float velocity_y() const { return velocity_y_; } | 179 float velocity_y() const { return velocity_y_; } |
| 180 float scroll_x_ordinal() const { return scroll_x_ordinal_; } |
| 181 float scroll_y_ordinal() const { return scroll_y_ordinal_; } |
| 182 float scroll_velocity_x_ordinal() const { return scroll_velocity_x_ordinal_; } |
| 183 float scroll_velocity_y_ordinal() const { return scroll_velocity_y_ordinal_; } |
| 184 float velocity_x_ordinal() const { return velocity_x_ordinal_; } |
| 185 float velocity_y_ordinal() const { return velocity_y_ordinal_; } |
| 186 int touch_id() const { return touch_id_; } |
169 const gfx::Rect& bounding_box() const { return bounding_box_; } | 187 const gfx::Rect& bounding_box() const { return bounding_box_; } |
170 int tap_count() const { return tap_count_; } | 188 int tap_count() const { return tap_count_; } |
171 | 189 |
172 void WaitUntilReceivedGesture(ui::EventType type) { | 190 void WaitUntilReceivedGesture(ui::EventType type) { |
173 wait_until_event_ = type; | 191 wait_until_event_ = type; |
174 run_loop_.reset(new base::RunLoop( | 192 run_loop_.reset(new base::RunLoop( |
175 Env::GetInstance()->GetDispatcher())); | 193 Env::GetInstance()->GetDispatcher())); |
176 run_loop_->Run(); | 194 run_loop_->Run(); |
177 } | 195 } |
178 | 196 |
(...skipping 21 matching lines...) Expand all Loading... |
200 case ui::ET_GESTURE_SCROLL_BEGIN: | 218 case ui::ET_GESTURE_SCROLL_BEGIN: |
201 scroll_begin_ = true; | 219 scroll_begin_ = true; |
202 scroll_begin_position_ = gesture->location(); | 220 scroll_begin_position_ = gesture->location(); |
203 break; | 221 break; |
204 case ui::ET_GESTURE_SCROLL_UPDATE: | 222 case ui::ET_GESTURE_SCROLL_UPDATE: |
205 scroll_update_ = true; | 223 scroll_update_ = true; |
206 scroll_x_ += gesture->details().scroll_x(); | 224 scroll_x_ += gesture->details().scroll_x(); |
207 scroll_y_ += gesture->details().scroll_y(); | 225 scroll_y_ += gesture->details().scroll_y(); |
208 scroll_velocity_x_ = gesture->details().velocity_x(); | 226 scroll_velocity_x_ = gesture->details().velocity_x(); |
209 scroll_velocity_y_ = gesture->details().velocity_y(); | 227 scroll_velocity_y_ = gesture->details().velocity_y(); |
| 228 scroll_x_ordinal_ += gesture->details().scroll_x_ordinal(); |
| 229 scroll_y_ordinal_ += gesture->details().scroll_y_ordinal(); |
| 230 scroll_velocity_x_ordinal_ = gesture->details().velocity_x_ordinal(); |
| 231 scroll_velocity_y_ordinal_ = gesture->details().velocity_y_ordinal(); |
210 break; | 232 break; |
211 case ui::ET_GESTURE_SCROLL_END: | 233 case ui::ET_GESTURE_SCROLL_END: |
212 EXPECT_TRUE(velocity_x_ == 0 && velocity_y_ == 0); | 234 EXPECT_TRUE(velocity_x_ == 0 && velocity_y_ == 0); |
213 scroll_end_ = true; | 235 scroll_end_ = true; |
214 break; | 236 break; |
215 case ui::ET_GESTURE_PINCH_BEGIN: | 237 case ui::ET_GESTURE_PINCH_BEGIN: |
216 pinch_begin_ = true; | 238 pinch_begin_ = true; |
217 break; | 239 break; |
218 case ui::ET_GESTURE_PINCH_UPDATE: | 240 case ui::ET_GESTURE_PINCH_UPDATE: |
219 pinch_update_ = true; | 241 pinch_update_ = true; |
220 break; | 242 break; |
221 case ui::ET_GESTURE_PINCH_END: | 243 case ui::ET_GESTURE_PINCH_END: |
222 pinch_end_ = true; | 244 pinch_end_ = true; |
223 break; | 245 break; |
224 case ui::ET_GESTURE_LONG_PRESS: | 246 case ui::ET_GESTURE_LONG_PRESS: |
225 long_press_ = true; | 247 long_press_ = true; |
226 touch_id_ = gesture->details().touch_id(); | 248 touch_id_ = gesture->details().touch_id(); |
227 break; | 249 break; |
228 case ui::ET_GESTURE_LONG_TAP: | 250 case ui::ET_GESTURE_LONG_TAP: |
229 long_tap_ = true; | 251 long_tap_ = true; |
230 break; | 252 break; |
231 case ui::ET_SCROLL_FLING_START: | 253 case ui::ET_SCROLL_FLING_START: |
232 EXPECT_TRUE(gesture->details().velocity_x() != 0 || | 254 EXPECT_TRUE(gesture->details().velocity_x() != 0 || |
233 gesture->details().velocity_y() != 0); | 255 gesture->details().velocity_y() != 0); |
234 EXPECT_FALSE(scroll_end_); | 256 EXPECT_FALSE(scroll_end_); |
235 fling_ = true; | 257 fling_ = true; |
236 velocity_x_ = gesture->details().velocity_x(); | 258 velocity_x_ = gesture->details().velocity_x(); |
237 velocity_y_ = gesture->details().velocity_y(); | 259 velocity_y_ = gesture->details().velocity_y(); |
| 260 velocity_x_ordinal_ = gesture->details().velocity_x_ordinal(); |
| 261 velocity_y_ordinal_ = gesture->details().velocity_y_ordinal(); |
238 break; | 262 break; |
239 case ui::ET_GESTURE_TWO_FINGER_TAP: | 263 case ui::ET_GESTURE_TWO_FINGER_TAP: |
240 two_finger_tap_ = true; | 264 two_finger_tap_ = true; |
241 break; | 265 break; |
242 case ui::ET_GESTURE_MULTIFINGER_SWIPE: | 266 case ui::ET_GESTURE_MULTIFINGER_SWIPE: |
243 swipe_left_ = gesture->details().swipe_left(); | 267 swipe_left_ = gesture->details().swipe_left(); |
244 swipe_right_ = gesture->details().swipe_right(); | 268 swipe_right_ = gesture->details().swipe_right(); |
245 swipe_up_ = gesture->details().swipe_up(); | 269 swipe_up_ = gesture->details().swipe_up(); |
246 swipe_down_ = gesture->details().swipe_down(); | 270 swipe_down_ = gesture->details().swipe_down(); |
247 break; | 271 break; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 | 305 |
282 gfx::Point scroll_begin_position_; | 306 gfx::Point scroll_begin_position_; |
283 gfx::Point tap_location_; | 307 gfx::Point tap_location_; |
284 | 308 |
285 float scroll_x_; | 309 float scroll_x_; |
286 float scroll_y_; | 310 float scroll_y_; |
287 float scroll_velocity_x_; | 311 float scroll_velocity_x_; |
288 float scroll_velocity_y_; | 312 float scroll_velocity_y_; |
289 float velocity_x_; | 313 float velocity_x_; |
290 float velocity_y_; | 314 float velocity_y_; |
| 315 float scroll_x_ordinal_; |
| 316 float scroll_y_ordinal_; |
| 317 float scroll_velocity_x_ordinal_; |
| 318 float scroll_velocity_y_ordinal_; |
| 319 float velocity_x_ordinal_; |
| 320 float velocity_y_ordinal_; |
291 int touch_id_; | 321 int touch_id_; |
292 gfx::Rect bounding_box_; | 322 gfx::Rect bounding_box_; |
293 int tap_count_; | 323 int tap_count_; |
294 | 324 |
295 ui::EventType wait_until_event_; | 325 ui::EventType wait_until_event_; |
296 | 326 |
297 DISALLOW_COPY_AND_ASSIGN(GestureEventConsumeDelegate); | 327 DISALLOW_COPY_AND_ASSIGN(GestureEventConsumeDelegate); |
298 }; | 328 }; |
299 | 329 |
300 class QueueTouchEventDelegate : public GestureEventConsumeDelegate { | 330 class QueueTouchEventDelegate : public GestureEventConsumeDelegate { |
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1096 delegate.get(), -1234, bounds, root_window())); | 1126 delegate.get(), -1234, bounds, root_window())); |
1097 | 1127 |
1098 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1128 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
1099 kTouchId, tes.Now()); | 1129 kTouchId, tes.Now()); |
1100 root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press); | 1130 root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press); |
1101 | 1131 |
1102 // Move the touch-point horizontally enough that it is considered a | 1132 // Move the touch-point horizontally enough that it is considered a |
1103 // horizontal scroll. | 1133 // horizontal scroll. |
1104 tes.SendScrollEvent(root_window(), 20, 1, kTouchId, delegate.get()); | 1134 tes.SendScrollEvent(root_window(), 20, 1, kTouchId, delegate.get()); |
1105 EXPECT_EQ(0, delegate->scroll_y()); | 1135 EXPECT_EQ(0, delegate->scroll_y()); |
| 1136 EXPECT_EQ(1, delegate->scroll_y_ordinal()); |
1106 EXPECT_EQ(20, delegate->scroll_x()); | 1137 EXPECT_EQ(20, delegate->scroll_x()); |
| 1138 EXPECT_EQ(20, delegate->scroll_x_ordinal()); |
1107 | 1139 |
1108 // Get a high x velocity, while still staying on the rail | 1140 // Get a high x velocity, while still staying on the rail |
1109 tes.SendScrollEvents(root_window(), 1, 1, | 1141 tes.SendScrollEvents(root_window(), 1, 1, |
1110 100, 10, kTouchId, 1, | 1142 100, 10, kTouchId, 1, |
1111 ui::GestureConfiguration::points_buffered_for_velocity(), | 1143 ui::GestureConfiguration::points_buffered_for_velocity(), |
1112 delegate.get()); | 1144 delegate.get()); |
1113 // The y-velocity during the scroll should be 0 since this is in a horizontal | 1145 // The y-velocity during the scroll should be 0 since this is in a horizontal |
1114 // rail scroll. | 1146 // rail scroll. |
1115 EXPECT_GT(delegate->scroll_velocity_x(), 0); | 1147 EXPECT_GT(delegate->scroll_velocity_x(), 0); |
1116 EXPECT_EQ(0, delegate->scroll_velocity_y()); | 1148 EXPECT_EQ(0, delegate->scroll_velocity_y()); |
(...skipping 21 matching lines...) Expand all Loading... |
1138 delegate.get(), -1234, bounds, root_window())); | 1170 delegate.get(), -1234, bounds, root_window())); |
1139 | 1171 |
1140 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1172 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
1141 kTouchId, tes.Now()); | 1173 kTouchId, tes.Now()); |
1142 root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press); | 1174 root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press); |
1143 | 1175 |
1144 // Move the touch-point vertically enough that it is considered a | 1176 // Move the touch-point vertically enough that it is considered a |
1145 // vertical scroll. | 1177 // vertical scroll. |
1146 tes.SendScrollEvent(root_window(), 1, 20, kTouchId, delegate.get()); | 1178 tes.SendScrollEvent(root_window(), 1, 20, kTouchId, delegate.get()); |
1147 EXPECT_EQ(20, delegate->scroll_y()); | 1179 EXPECT_EQ(20, delegate->scroll_y()); |
| 1180 EXPECT_EQ(20, delegate->scroll_y_ordinal()); |
1148 EXPECT_EQ(0, delegate->scroll_x()); | 1181 EXPECT_EQ(0, delegate->scroll_x()); |
| 1182 EXPECT_EQ(1, delegate->scroll_x_ordinal()); |
1149 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1183 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
| 1184 EXPECT_GT(delegate->scroll_velocity_x_ordinal(), 0); |
1150 | 1185 |
1151 // Get a high y velocity, while still staying on the rail | 1186 // Get a high y velocity, while still staying on the rail |
1152 tes.SendScrollEvents(root_window(), 1, 1, | 1187 tes.SendScrollEvents(root_window(), 1, 1, |
1153 10, 100, kTouchId, 1, | 1188 10, 100, kTouchId, 1, |
1154 ui::GestureConfiguration::points_buffered_for_velocity(), | 1189 ui::GestureConfiguration::points_buffered_for_velocity(), |
1155 delegate.get()); | 1190 delegate.get()); |
1156 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1191 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
1157 EXPECT_GT(delegate->scroll_velocity_y(), 0); | 1192 EXPECT_GT(delegate->scroll_velocity_y(), 0); |
1158 | 1193 |
1159 delegate->Reset(); | 1194 delegate->Reset(); |
(...skipping 2218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3378 tes.LeapForward(40)); | 3413 tes.LeapForward(40)); |
3379 root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&move4); | 3414 root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&move4); |
3380 EXPECT_TRUE(delegate->scroll_update()); | 3415 EXPECT_TRUE(delegate->scroll_update()); |
3381 EXPECT_EQ(-1, delegate->scroll_y()); | 3416 EXPECT_EQ(-1, delegate->scroll_y()); |
3382 | 3417 |
3383 delegate->Reset(); | 3418 delegate->Reset(); |
3384 } | 3419 } |
3385 | 3420 |
3386 } // namespace test | 3421 } // namespace test |
3387 } // namespace aura | 3422 } // namespace aura |
OLD | NEW |