OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/logging.h" | 6 #include "base/logging.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 } | 267 } |
268 | 268 |
269 bool HasDownEvent() const { return gesture_provider_->current_down_event(); } | 269 bool HasDownEvent() const { return gesture_provider_->current_down_event(); } |
270 | 270 |
271 protected: | 271 protected: |
272 void CheckScrollEventSequenceForEndActionType( | 272 void CheckScrollEventSequenceForEndActionType( |
273 MotionEvent::Action end_action_type) { | 273 MotionEvent::Action end_action_type) { |
274 base::TimeTicks event_time = base::TimeTicks::Now(); | 274 base::TimeTicks event_time = base::TimeTicks::Now(); |
275 const float scroll_to_x = kFakeCoordX + 100; | 275 const float scroll_to_x = kFakeCoordX + 100; |
276 const float scroll_to_y = kFakeCoordY + 100; | 276 const float scroll_to_y = kFakeCoordY + 100; |
277 int motion_event_id = 0; | 277 int motion_event_id = 3; |
278 int motion_event_flags = EF_SHIFT_DOWN | EF_CAPS_LOCK_DOWN; | 278 int motion_event_flags = EF_SHIFT_DOWN | EF_CAPS_LOCK_DOWN; |
279 | 279 |
280 MockMotionEvent event = | 280 MockMotionEvent event = |
281 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 281 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
282 event.set_id(++motion_event_id); | 282 event.SetPrimaryPointerId(motion_event_id); |
283 event.set_flags(motion_event_flags); | 283 event.set_flags(motion_event_flags); |
284 | 284 |
285 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 285 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
286 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 286 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
287 | 287 |
288 event = ObtainMotionEvent(event_time + kOneSecond, | 288 event = ObtainMotionEvent(event_time + kOneSecond, |
289 MotionEvent::ACTION_MOVE, | 289 MotionEvent::ACTION_MOVE, |
290 scroll_to_x, | 290 scroll_to_x, |
291 scroll_to_y); | 291 scroll_to_y); |
292 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); | 292 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); |
293 event.set_id(++motion_event_id); | 293 event.SetPrimaryPointerId(motion_event_id); |
294 event.set_flags(motion_event_flags); | 294 event.set_flags(motion_event_flags); |
295 | 295 |
296 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 296 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
297 EXPECT_TRUE(gesture_provider_->IsScrollInProgress()); | 297 EXPECT_TRUE(gesture_provider_->IsScrollInProgress()); |
298 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); | 298 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); |
299 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 299 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
300 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 300 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
301 EXPECT_EQ(event.GetToolType(0), | 301 EXPECT_EQ(event.GetToolType(0), |
302 GetMostRecentGestureEvent().primary_tool_type); | 302 GetMostRecentGestureEvent().primary_tool_type); |
303 EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, GetMostRecentGestureEventType()); | 303 EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, GetMostRecentGestureEventType()); |
304 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(scroll_to_x, scroll_to_y), | 304 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(scroll_to_x, scroll_to_y), |
305 GetMostRecentGestureEvent().details.bounding_box()); | 305 GetMostRecentGestureEvent().details.bounding_box()); |
306 ASSERT_EQ(3U, GetReceivedGestureCount()) << "Only TapDown, " | 306 ASSERT_EQ(3U, GetReceivedGestureCount()) << "Only TapDown, " |
307 "ScrollBegin and ScrollBy " | 307 "ScrollBegin and ScrollBy " |
308 "should have been sent"; | 308 "should have been sent"; |
309 | 309 |
310 EXPECT_EQ(ET_GESTURE_SCROLL_BEGIN, GetReceivedGesture(1).type()); | 310 EXPECT_EQ(ET_GESTURE_SCROLL_BEGIN, GetReceivedGesture(1).type()); |
311 EXPECT_EQ(motion_event_id, GetReceivedGesture(1).motion_event_id); | 311 EXPECT_EQ(motion_event_id, GetReceivedGesture(1).motion_event_id); |
312 EXPECT_EQ(event_time + kOneSecond, GetReceivedGesture(1).time) | 312 EXPECT_EQ(event_time + kOneSecond, GetReceivedGesture(1).time) |
313 << "ScrollBegin should have the time of the ACTION_MOVE"; | 313 << "ScrollBegin should have the time of the ACTION_MOVE"; |
314 | 314 |
315 event = ObtainMotionEvent( | 315 event = ObtainMotionEvent( |
316 event_time + kOneSecond, end_action_type, scroll_to_x, scroll_to_y); | 316 event_time + kOneSecond, end_action_type, scroll_to_x, scroll_to_y); |
317 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); | 317 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); |
318 event.set_id(++motion_event_id); | 318 event.SetPrimaryPointerId(motion_event_id); |
319 | 319 |
320 gesture_provider_->OnTouchEvent(event); | 320 gesture_provider_->OnTouchEvent(event); |
321 EXPECT_FALSE(gesture_provider_->IsScrollInProgress()); | 321 EXPECT_FALSE(gesture_provider_->IsScrollInProgress()); |
322 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_END)); | 322 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_END)); |
323 EXPECT_EQ(ET_GESTURE_SCROLL_END, GetMostRecentGestureEventType()); | 323 EXPECT_EQ(ET_GESTURE_SCROLL_END, GetMostRecentGestureEventType()); |
324 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 324 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
325 EXPECT_EQ(event.GetToolType(0), | 325 EXPECT_EQ(event.GetToolType(0), |
326 GetMostRecentGestureEvent().primary_tool_type); | 326 GetMostRecentGestureEvent().primary_tool_type); |
327 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 327 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
328 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(scroll_to_x, scroll_to_y), | 328 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(scroll_to_x, scroll_to_y), |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 | 409 |
410 std::vector<GestureEventData> gestures_; | 410 std::vector<GestureEventData> gestures_; |
411 scoped_ptr<GestureProvider> gesture_provider_; | 411 scoped_ptr<GestureProvider> gesture_provider_; |
412 scoped_ptr<GestureEventData> active_scroll_begin_event_; | 412 scoped_ptr<GestureEventData> active_scroll_begin_event_; |
413 base::MessageLoopForUI message_loop_; | 413 base::MessageLoopForUI message_loop_; |
414 }; | 414 }; |
415 | 415 |
416 // Verify that a DOWN followed shortly by an UP will trigger a single tap. | 416 // Verify that a DOWN followed shortly by an UP will trigger a single tap. |
417 TEST_F(GestureProviderTest, GestureTap) { | 417 TEST_F(GestureProviderTest, GestureTap) { |
418 base::TimeTicks event_time = base::TimeTicks::Now(); | 418 base::TimeTicks event_time = base::TimeTicks::Now(); |
419 int motion_event_id = 0; | 419 int motion_event_id = 6; |
420 int motion_event_flags = EF_CONTROL_DOWN | EF_ALT_DOWN; | 420 int motion_event_flags = EF_CONTROL_DOWN | EF_ALT_DOWN; |
421 | 421 |
422 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(false); | 422 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(false); |
423 | 423 |
424 MockMotionEvent event = | 424 MockMotionEvent event = |
425 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 425 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
426 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); | 426 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); |
427 event.set_id(++motion_event_id); | 427 event.SetPrimaryPointerId(motion_event_id); |
428 event.set_flags(motion_event_flags); | 428 event.set_flags(motion_event_flags); |
429 | 429 |
430 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 430 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
431 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); | 431 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
432 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 432 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
433 EXPECT_EQ(event.GetToolType(0), | 433 EXPECT_EQ(event.GetToolType(0), |
434 GetMostRecentGestureEvent().primary_tool_type); | 434 GetMostRecentGestureEvent().primary_tool_type); |
435 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 435 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
436 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), | 436 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), |
437 GetMostRecentGestureEvent().details.bounding_box()); | 437 GetMostRecentGestureEvent().details.bounding_box()); |
438 | 438 |
439 event = ObtainMotionEvent(event_time + kOneMicrosecond, | 439 event = ObtainMotionEvent(event_time + kOneMicrosecond, |
440 MotionEvent::ACTION_UP); | 440 MotionEvent::ACTION_UP); |
441 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); | 441 event.SetToolType(0, MotionEvent::TOOL_TYPE_FINGER); |
442 event.set_id(++motion_event_id); | 442 event.SetPrimaryPointerId(motion_event_id); |
443 event.set_flags(motion_event_flags); | 443 event.set_flags(motion_event_flags); |
444 | 444 |
445 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 445 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
446 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); | 446 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); |
447 // Ensure tap details have been set. | 447 // Ensure tap details have been set. |
448 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); | 448 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); |
449 EXPECT_EQ(event.GetToolType(0), | 449 EXPECT_EQ(event.GetToolType(0), |
450 GetMostRecentGestureEvent().primary_tool_type); | 450 GetMostRecentGestureEvent().primary_tool_type); |
451 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 451 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
452 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 452 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
453 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 453 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
454 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), | 454 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), |
455 GetMostRecentGestureEvent().details.bounding_box()); | 455 GetMostRecentGestureEvent().details.bounding_box()); |
456 } | 456 } |
457 | 457 |
458 // Verify that a DOWN followed shortly by an UP will trigger | 458 // Verify that a DOWN followed shortly by an UP will trigger |
459 // a ET_GESTURE_TAP_UNCONFIRMED event if double-tap is enabled. | 459 // a ET_GESTURE_TAP_UNCONFIRMED event if double-tap is enabled. |
460 TEST_F(GestureProviderTest, GestureTapWithDelay) { | 460 TEST_F(GestureProviderTest, GestureTapWithDelay) { |
461 base::TimeTicks event_time = base::TimeTicks::Now(); | 461 base::TimeTicks event_time = base::TimeTicks::Now(); |
462 int motion_event_id = 0; | 462 int motion_event_id = 6; |
463 int motion_event_flags = EF_CONTROL_DOWN | EF_ALT_DOWN | EF_CAPS_LOCK_DOWN; | 463 int motion_event_flags = EF_CONTROL_DOWN | EF_ALT_DOWN | EF_CAPS_LOCK_DOWN; |
464 | 464 |
465 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(true); | 465 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(true); |
466 | 466 |
467 MockMotionEvent event = | 467 MockMotionEvent event = |
468 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 468 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
469 event.set_id(++motion_event_id); | 469 event.SetPrimaryPointerId(motion_event_id); |
470 event.set_flags(motion_event_flags); | 470 event.set_flags(motion_event_flags); |
471 | 471 |
472 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 472 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
473 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); | 473 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
474 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 474 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
475 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 475 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
476 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 476 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
477 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), | 477 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), |
478 GetMostRecentGestureEvent().details.bounding_box()); | 478 GetMostRecentGestureEvent().details.bounding_box()); |
479 | 479 |
480 event = ObtainMotionEvent(event_time + kOneMicrosecond, | 480 event = ObtainMotionEvent(event_time + kOneMicrosecond, |
481 MotionEvent::ACTION_UP); | 481 MotionEvent::ACTION_UP); |
482 event.set_id(++motion_event_id); | 482 event.SetPrimaryPointerId(motion_event_id); |
483 event.set_flags(motion_event_flags); | 483 event.set_flags(motion_event_flags); |
484 | 484 |
485 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 485 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
486 EXPECT_EQ(ET_GESTURE_TAP_UNCONFIRMED, GetMostRecentGestureEventType()); | 486 EXPECT_EQ(ET_GESTURE_TAP_UNCONFIRMED, GetMostRecentGestureEventType()); |
487 // Ensure tap details have been set. | 487 // Ensure tap details have been set. |
488 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); | 488 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); |
489 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 489 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
490 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 490 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
491 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 491 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
492 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), | 492 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), |
493 GetMostRecentGestureEvent().details.bounding_box()); | 493 GetMostRecentGestureEvent().details.bounding_box()); |
494 EXPECT_EQ(event.GetEventTime(), GetMostRecentGestureEvent().time); | 494 EXPECT_EQ(event.GetEventTime(), GetMostRecentGestureEvent().time); |
495 | 495 |
496 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_TAP)); | 496 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_TAP)); |
497 RunTasksAndWait(GetDoubleTapTimeout()); | 497 RunTasksAndWait(GetDoubleTapTimeout()); |
498 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_TAP)); | 498 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_TAP)); |
499 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 499 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
500 EXPECT_EQ(event.GetEventTime(), GetMostRecentGestureEvent().time); | 500 EXPECT_EQ(event.GetEventTime(), GetMostRecentGestureEvent().time); |
501 } | 501 } |
502 | 502 |
503 // Verify that a DOWN followed by a MOVE will trigger fling (but not LONG). | 503 // Verify that a DOWN followed by a MOVE will trigger fling (but not LONG). |
504 TEST_F(GestureProviderTest, GestureFlingAndCancelLongPress) { | 504 TEST_F(GestureProviderTest, GestureFlingAndCancelLongPress) { |
505 base::TimeTicks event_time = TimeTicks::Now(); | 505 base::TimeTicks event_time = TimeTicks::Now(); |
506 base::TimeDelta delta_time = kDeltaTimeForFlingSequences; | 506 base::TimeDelta delta_time = kDeltaTimeForFlingSequences; |
507 int motion_event_id = 0; | 507 int motion_event_id = 6; |
508 int motion_event_flags = EF_ALT_DOWN; | 508 int motion_event_flags = EF_ALT_DOWN; |
509 | 509 |
510 MockMotionEvent event = | 510 MockMotionEvent event = |
511 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 511 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
512 event.set_id(++motion_event_id); | 512 event.SetPrimaryPointerId(motion_event_id); |
513 event.set_flags(motion_event_flags); | 513 event.set_flags(motion_event_flags); |
514 | 514 |
515 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 515 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
516 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); | 516 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
517 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 517 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
518 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 518 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
519 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 519 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
520 | 520 |
521 event = ObtainMotionEvent(event_time + delta_time, | 521 event = ObtainMotionEvent(event_time + delta_time, |
522 MotionEvent::ACTION_MOVE, | 522 MotionEvent::ACTION_MOVE, |
523 kFakeCoordX * 10, | 523 kFakeCoordX * 10, |
524 kFakeCoordY * 10); | 524 kFakeCoordY * 10); |
525 event.set_id(++motion_event_id); | 525 event.SetPrimaryPointerId(motion_event_id); |
526 event.set_flags(motion_event_flags); | 526 event.set_flags(motion_event_flags); |
527 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 527 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
528 | 528 |
529 event = ObtainMotionEvent(event_time + delta_time * 2, | 529 event = ObtainMotionEvent(event_time + delta_time * 2, |
530 MotionEvent::ACTION_UP, | 530 MotionEvent::ACTION_UP, |
531 kFakeCoordX * 10, | 531 kFakeCoordX * 10, |
532 kFakeCoordY * 10); | 532 kFakeCoordY * 10); |
533 event.set_id(++motion_event_id); | 533 event.SetPrimaryPointerId(motion_event_id); |
534 event.set_flags(motion_event_flags); | 534 event.set_flags(motion_event_flags); |
535 | 535 |
536 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 536 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
537 EXPECT_EQ(ET_SCROLL_FLING_START, GetMostRecentGestureEventType()); | 537 EXPECT_EQ(ET_SCROLL_FLING_START, GetMostRecentGestureEventType()); |
538 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 538 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
539 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); | 539 EXPECT_EQ(motion_event_flags, GetMostRecentGestureEvent().flags); |
540 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 540 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
541 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_PRESS)); | 541 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_PRESS)); |
542 EXPECT_EQ( | 542 EXPECT_EQ( |
543 BoundsForSingleMockTouchAtLocation(kFakeCoordX * 10, kFakeCoordY * 10), | 543 BoundsForSingleMockTouchAtLocation(kFakeCoordX * 10, kFakeCoordY * 10), |
(...skipping 16 matching lines...) Expand all Loading... |
560 CheckScrollEventSequenceForEndActionType(MotionEvent::ACTION_CANCEL); | 560 CheckScrollEventSequenceForEndActionType(MotionEvent::ACTION_CANCEL); |
561 } | 561 } |
562 | 562 |
563 // Verify that for a normal fling (fling after scroll) the following events are | 563 // Verify that for a normal fling (fling after scroll) the following events are |
564 // sent: | 564 // sent: |
565 // - ET_GESTURE_SCROLL_BEGIN | 565 // - ET_GESTURE_SCROLL_BEGIN |
566 // - ET_SCROLL_FLING_START | 566 // - ET_SCROLL_FLING_START |
567 TEST_F(GestureProviderTest, FlingEventSequence) { | 567 TEST_F(GestureProviderTest, FlingEventSequence) { |
568 base::TimeTicks event_time = base::TimeTicks::Now(); | 568 base::TimeTicks event_time = base::TimeTicks::Now(); |
569 base::TimeDelta delta_time = kDeltaTimeForFlingSequences; | 569 base::TimeDelta delta_time = kDeltaTimeForFlingSequences; |
570 int motion_event_id = 0; | 570 int motion_event_id = 6; |
571 | 571 |
572 MockMotionEvent event = | 572 MockMotionEvent event = |
573 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 573 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
574 event.set_id(++motion_event_id); | 574 event.SetPrimaryPointerId(motion_event_id); |
575 | 575 |
576 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 576 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
577 | 577 |
578 event = ObtainMotionEvent(event_time + delta_time, | 578 event = ObtainMotionEvent(event_time + delta_time, |
579 MotionEvent::ACTION_MOVE, | 579 MotionEvent::ACTION_MOVE, |
580 kFakeCoordX * 5, | 580 kFakeCoordX * 5, |
581 kFakeCoordY * 5); | 581 kFakeCoordY * 5); |
582 event.set_id(++motion_event_id); | 582 event.SetPrimaryPointerId(motion_event_id); |
583 | 583 |
584 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 584 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
585 EXPECT_TRUE(gesture_provider_->IsScrollInProgress()); | 585 EXPECT_TRUE(gesture_provider_->IsScrollInProgress()); |
586 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); | 586 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); |
587 EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, GetMostRecentGestureEventType()); | 587 EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, GetMostRecentGestureEventType()); |
588 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 588 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
589 ASSERT_EQ(3U, GetReceivedGestureCount()); | 589 ASSERT_EQ(3U, GetReceivedGestureCount()); |
590 ASSERT_EQ(ET_GESTURE_SCROLL_BEGIN, GetReceivedGesture(1).type()); | 590 ASSERT_EQ(ET_GESTURE_SCROLL_BEGIN, GetReceivedGesture(1).type()); |
591 EXPECT_EQ(motion_event_id, GetReceivedGesture(1).motion_event_id); | 591 EXPECT_EQ(motion_event_id, GetReceivedGesture(1).motion_event_id); |
592 | 592 |
593 // We don't want to take a dependency here on exactly how hints are calculated | 593 // We don't want to take a dependency here on exactly how hints are calculated |
594 // for a fling (eg. may depend on velocity), so just validate the direction. | 594 // for a fling (eg. may depend on velocity), so just validate the direction. |
595 int hint_x = GetReceivedGesture(1).details.scroll_x_hint(); | 595 int hint_x = GetReceivedGesture(1).details.scroll_x_hint(); |
596 int hint_y = GetReceivedGesture(1).details.scroll_y_hint(); | 596 int hint_y = GetReceivedGesture(1).details.scroll_y_hint(); |
597 EXPECT_TRUE(hint_x > 0 && hint_y > 0 && hint_x > hint_y) | 597 EXPECT_TRUE(hint_x > 0 && hint_y > 0 && hint_x > hint_y) |
598 << "ScrollBegin hint should be in positive X axis"; | 598 << "ScrollBegin hint should be in positive X axis"; |
599 | 599 |
600 event = ObtainMotionEvent(event_time + delta_time * 2, | 600 event = ObtainMotionEvent(event_time + delta_time * 2, |
601 MotionEvent::ACTION_UP, | 601 MotionEvent::ACTION_UP, |
602 kFakeCoordX * 10, | 602 kFakeCoordX * 10, |
603 kFakeCoordY * 10); | 603 kFakeCoordY * 10); |
604 event.set_id(++motion_event_id); | 604 event.SetPrimaryPointerId(motion_event_id); |
605 | 605 |
606 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 606 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
607 EXPECT_FALSE(gesture_provider_->IsScrollInProgress()); | 607 EXPECT_FALSE(gesture_provider_->IsScrollInProgress()); |
608 EXPECT_EQ(ET_SCROLL_FLING_START, GetMostRecentGestureEventType()); | 608 EXPECT_EQ(ET_SCROLL_FLING_START, GetMostRecentGestureEventType()); |
609 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 609 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
610 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 610 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
611 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_SCROLL_END)); | 611 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_SCROLL_END)); |
612 EXPECT_EQ(event_time + delta_time * 2, GetMostRecentGestureEvent().time) | 612 EXPECT_EQ(event_time + delta_time * 2, GetMostRecentGestureEvent().time) |
613 << "FlingStart should have the time of the ACTION_UP"; | 613 << "FlingStart should have the time of the ACTION_UP"; |
614 } | 614 } |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1005 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); | 1005 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); |
1006 | 1006 |
1007 event = ObtainMotionEvent(event_time + long_press_timeout, | 1007 event = ObtainMotionEvent(event_time + long_press_timeout, |
1008 MotionEvent::ACTION_UP); | 1008 MotionEvent::ACTION_UP); |
1009 gesture_provider_->OnTouchEvent(event); | 1009 gesture_provider_->OnTouchEvent(event); |
1010 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_TAP)); | 1010 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_TAP)); |
1011 } | 1011 } |
1012 | 1012 |
1013 TEST_F(GestureProviderTest, NoGestureLongPressDuringDoubleTap) { | 1013 TEST_F(GestureProviderTest, NoGestureLongPressDuringDoubleTap) { |
1014 base::TimeTicks event_time = base::TimeTicks::Now(); | 1014 base::TimeTicks event_time = base::TimeTicks::Now(); |
1015 int motion_event_id = 0; | 1015 int motion_event_id = 6; |
1016 | 1016 |
1017 MockMotionEvent event = ObtainMotionEvent( | 1017 MockMotionEvent event = ObtainMotionEvent( |
1018 event_time, MotionEvent::ACTION_DOWN, kFakeCoordX, kFakeCoordY); | 1018 event_time, MotionEvent::ACTION_DOWN, kFakeCoordX, kFakeCoordY); |
1019 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1019 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1020 | 1020 |
1021 event = ObtainMotionEvent(event_time + kOneMicrosecond, | 1021 event = ObtainMotionEvent(event_time + kOneMicrosecond, |
1022 MotionEvent::ACTION_UP, | 1022 MotionEvent::ACTION_UP, |
1023 kFakeCoordX, | 1023 kFakeCoordX, |
1024 kFakeCoordY); | 1024 kFakeCoordY); |
1025 gesture_provider_->OnTouchEvent(event); | 1025 gesture_provider_->OnTouchEvent(event); |
(...skipping 12 matching lines...) Expand all Loading... |
1038 | 1038 |
1039 const base::TimeDelta long_press_timeout = | 1039 const base::TimeDelta long_press_timeout = |
1040 GetLongPressTimeout() + GetShowPressTimeout() + kOneMicrosecond; | 1040 GetLongPressTimeout() + GetShowPressTimeout() + kOneMicrosecond; |
1041 RunTasksAndWait(long_press_timeout); | 1041 RunTasksAndWait(long_press_timeout); |
1042 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_PRESS)); | 1042 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_PRESS)); |
1043 | 1043 |
1044 event = ObtainMotionEvent(event_time + long_press_timeout, | 1044 event = ObtainMotionEvent(event_time + long_press_timeout, |
1045 MotionEvent::ACTION_MOVE, | 1045 MotionEvent::ACTION_MOVE, |
1046 kFakeCoordX + 20, | 1046 kFakeCoordX + 20, |
1047 kFakeCoordY + 20); | 1047 kFakeCoordY + 20); |
1048 event.set_id(++motion_event_id); | 1048 event.SetPrimaryPointerId(motion_event_id); |
1049 | 1049 |
1050 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1050 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1051 EXPECT_EQ(ET_GESTURE_PINCH_BEGIN, GetMostRecentGestureEventType()); | 1051 EXPECT_EQ(ET_GESTURE_PINCH_BEGIN, GetMostRecentGestureEventType()); |
1052 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 1052 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
1053 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 1053 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
1054 EXPECT_TRUE(gesture_provider_->IsDoubleTapInProgress()); | 1054 EXPECT_TRUE(gesture_provider_->IsDoubleTapInProgress()); |
1055 | 1055 |
1056 event = ObtainMotionEvent(event_time + long_press_timeout + kOneMicrosecond, | 1056 event = ObtainMotionEvent(event_time + long_press_timeout + kOneMicrosecond, |
1057 MotionEvent::ACTION_UP, | 1057 MotionEvent::ACTION_UP, |
1058 kFakeCoordX, | 1058 kFakeCoordX, |
1059 kFakeCoordY + 1); | 1059 kFakeCoordY + 1); |
1060 event.set_id(++motion_event_id); | 1060 event.SetPrimaryPointerId(motion_event_id); |
1061 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1061 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1062 EXPECT_EQ(ET_GESTURE_SCROLL_END, GetMostRecentGestureEventType()); | 1062 EXPECT_EQ(ET_GESTURE_SCROLL_END, GetMostRecentGestureEventType()); |
1063 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 1063 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
1064 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 1064 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
1065 EXPECT_FALSE(gesture_provider_->IsDoubleTapInProgress()); | 1065 EXPECT_FALSE(gesture_provider_->IsDoubleTapInProgress()); |
1066 } | 1066 } |
1067 | 1067 |
1068 // Verify that the touch slop region is removed from the first scroll delta to | 1068 // Verify that the touch slop region is removed from the first scroll delta to |
1069 // avoid a jump when starting to scroll. | 1069 // avoid a jump when starting to scroll. |
1070 TEST_F(GestureProviderTest, TouchSlopRemovedFromScroll) { | 1070 TEST_F(GestureProviderTest, TouchSlopRemovedFromScroll) { |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1484 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1484 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1485 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_PINCH_END)); | 1485 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_PINCH_END)); |
1486 } | 1486 } |
1487 | 1487 |
1488 // Verify that pinch zoom sends the proper event sequence. | 1488 // Verify that pinch zoom sends the proper event sequence. |
1489 TEST_F(GestureProviderTest, PinchZoom) { | 1489 TEST_F(GestureProviderTest, PinchZoom) { |
1490 base::TimeTicks event_time = base::TimeTicks::Now(); | 1490 base::TimeTicks event_time = base::TimeTicks::Now(); |
1491 const float touch_slop = GetTouchSlop(); | 1491 const float touch_slop = GetTouchSlop(); |
1492 const float raw_offset_x = 3.2f; | 1492 const float raw_offset_x = 3.2f; |
1493 const float raw_offset_y = 4.3f; | 1493 const float raw_offset_y = 4.3f; |
1494 int motion_event_id = 0; | 1494 int motion_event_id = 6; |
1495 | 1495 |
1496 gesture_provider_->SetDoubleTapSupportForPageEnabled(false); | 1496 gesture_provider_->SetDoubleTapSupportForPageEnabled(false); |
1497 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(true); | 1497 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(true); |
1498 gesture_provider_->SetMultiTouchZoomSupportEnabled(true); | 1498 gesture_provider_->SetMultiTouchZoomSupportEnabled(true); |
1499 | 1499 |
1500 int secondary_coord_x = kFakeCoordX + 20 * touch_slop; | 1500 int secondary_coord_x = kFakeCoordX + 20 * touch_slop; |
1501 int secondary_coord_y = kFakeCoordY + 20 * touch_slop; | 1501 int secondary_coord_y = kFakeCoordY + 20 * touch_slop; |
1502 | 1502 |
1503 MockMotionEvent event = | 1503 MockMotionEvent event = |
1504 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 1504 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
1505 event.set_id(++motion_event_id); | 1505 event.SetPrimaryPointerId(motion_event_id); |
1506 event.SetRawOffset(raw_offset_x, raw_offset_y); | 1506 event.SetRawOffset(raw_offset_x, raw_offset_y); |
1507 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1507 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1508 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); | 1508 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
1509 EXPECT_EQ(kFakeCoordX, GetMostRecentGestureEvent().x); | 1509 EXPECT_EQ(kFakeCoordX, GetMostRecentGestureEvent().x); |
1510 EXPECT_EQ(kFakeCoordY, GetMostRecentGestureEvent().y); | 1510 EXPECT_EQ(kFakeCoordY, GetMostRecentGestureEvent().y); |
1511 EXPECT_EQ(kFakeCoordX + raw_offset_x, GetMostRecentGestureEvent().raw_x); | 1511 EXPECT_EQ(kFakeCoordX + raw_offset_x, GetMostRecentGestureEvent().raw_x); |
1512 EXPECT_EQ(kFakeCoordY + raw_offset_y, GetMostRecentGestureEvent().raw_y); | 1512 EXPECT_EQ(kFakeCoordY + raw_offset_y, GetMostRecentGestureEvent().raw_y); |
1513 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 1513 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
1514 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), | 1514 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), |
1515 GetMostRecentGestureEvent().details.bounding_box()); | 1515 GetMostRecentGestureEvent().details.bounding_box()); |
1516 | 1516 |
1517 // Toggling double-tap support should not take effect until the next sequence. | 1517 // Toggling double-tap support should not take effect until the next sequence. |
1518 gesture_provider_->SetDoubleTapSupportForPageEnabled(true); | 1518 gesture_provider_->SetDoubleTapSupportForPageEnabled(true); |
1519 | 1519 |
1520 event = ObtainMotionEvent(event_time, | 1520 event = ObtainMotionEvent(event_time, |
1521 MotionEvent::ACTION_POINTER_DOWN, | 1521 MotionEvent::ACTION_POINTER_DOWN, |
1522 kFakeCoordX, | 1522 kFakeCoordX, |
1523 kFakeCoordY, | 1523 kFakeCoordY, |
1524 secondary_coord_x, | 1524 secondary_coord_x, |
1525 secondary_coord_y); | 1525 secondary_coord_y); |
1526 event.set_id(++motion_event_id); | 1526 event.SetPrimaryPointerId(motion_event_id); |
1527 event.SetRawOffset(raw_offset_x, raw_offset_y); | 1527 event.SetRawOffset(raw_offset_x, raw_offset_y); |
1528 | 1528 |
1529 gesture_provider_->OnTouchEvent(event); | 1529 gesture_provider_->OnTouchEvent(event); |
1530 EXPECT_EQ(1U, GetReceivedGestureCount()); | 1530 EXPECT_EQ(1U, GetReceivedGestureCount()); |
1531 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 1531 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
1532 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), | 1532 EXPECT_EQ(BoundsForSingleMockTouchAtLocation(kFakeCoordX, kFakeCoordY), |
1533 GetMostRecentGestureEvent().details.bounding_box()); | 1533 GetMostRecentGestureEvent().details.bounding_box()); |
1534 | 1534 |
1535 secondary_coord_x += 5 * touch_slop; | 1535 secondary_coord_x += 5 * touch_slop; |
1536 secondary_coord_y += 5 * touch_slop; | 1536 secondary_coord_y += 5 * touch_slop; |
1537 event = ObtainMotionEvent(event_time, | 1537 event = ObtainMotionEvent(event_time, |
1538 MotionEvent::ACTION_MOVE, | 1538 MotionEvent::ACTION_MOVE, |
1539 kFakeCoordX, | 1539 kFakeCoordX, |
1540 kFakeCoordY, | 1540 kFakeCoordY, |
1541 secondary_coord_x, | 1541 secondary_coord_x, |
1542 secondary_coord_y); | 1542 secondary_coord_y); |
1543 event.set_id(++motion_event_id); | 1543 event.SetPrimaryPointerId(motion_event_id); |
1544 event.SetRawOffset(raw_offset_x, raw_offset_y); | 1544 event.SetRawOffset(raw_offset_x, raw_offset_y); |
1545 | 1545 |
1546 // Toggling double-tap support should not take effect until the next sequence. | 1546 // Toggling double-tap support should not take effect until the next sequence. |
1547 gesture_provider_->SetDoubleTapSupportForPageEnabled(false); | 1547 gesture_provider_->SetDoubleTapSupportForPageEnabled(false); |
1548 | 1548 |
1549 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1549 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1550 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 1550 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
1551 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); | 1551 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); |
1552 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_PINCH_BEGIN)); | 1552 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_PINCH_BEGIN)); |
1553 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); | 1553 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); |
(...skipping 14 matching lines...) Expand all Loading... |
1568 GetMostRecentGestureEvent().details.bounding_box()); | 1568 GetMostRecentGestureEvent().details.bounding_box()); |
1569 | 1569 |
1570 secondary_coord_x += 2 * touch_slop; | 1570 secondary_coord_x += 2 * touch_slop; |
1571 secondary_coord_y += 2 * touch_slop; | 1571 secondary_coord_y += 2 * touch_slop; |
1572 event = ObtainMotionEvent(event_time, | 1572 event = ObtainMotionEvent(event_time, |
1573 MotionEvent::ACTION_MOVE, | 1573 MotionEvent::ACTION_MOVE, |
1574 kFakeCoordX, | 1574 kFakeCoordX, |
1575 kFakeCoordY, | 1575 kFakeCoordY, |
1576 secondary_coord_x, | 1576 secondary_coord_x, |
1577 secondary_coord_y); | 1577 secondary_coord_y); |
1578 event.set_id(++motion_event_id); | 1578 event.SetPrimaryPointerId(motion_event_id); |
1579 | 1579 |
1580 // Toggling double-tap support should not take effect until the next sequence. | 1580 // Toggling double-tap support should not take effect until the next sequence. |
1581 gesture_provider_->SetDoubleTapSupportForPageEnabled(true); | 1581 gesture_provider_->SetDoubleTapSupportForPageEnabled(true); |
1582 | 1582 |
1583 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1583 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1584 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 1584 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
1585 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_UPDATE)); | 1585 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_UPDATE)); |
1586 EXPECT_EQ(ET_GESTURE_PINCH_UPDATE, GetMostRecentGestureEventType()); | 1586 EXPECT_EQ(ET_GESTURE_PINCH_UPDATE, GetMostRecentGestureEventType()); |
1587 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); | 1587 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); |
1588 EXPECT_LT(1.f, GetMostRecentGestureEvent().details.scale()); | 1588 EXPECT_LT(1.f, GetMostRecentGestureEvent().details.scale()); |
1589 EXPECT_EQ( | 1589 EXPECT_EQ( |
1590 gfx::RectF(kFakeCoordX - kMockTouchRadius, | 1590 gfx::RectF(kFakeCoordX - kMockTouchRadius, |
1591 kFakeCoordY - kMockTouchRadius, | 1591 kFakeCoordY - kMockTouchRadius, |
1592 secondary_coord_x - kFakeCoordX + kMockTouchRadius * 2, | 1592 secondary_coord_x - kFakeCoordX + kMockTouchRadius * 2, |
1593 secondary_coord_y - kFakeCoordY + kMockTouchRadius * 2), | 1593 secondary_coord_y - kFakeCoordY + kMockTouchRadius * 2), |
1594 GetMostRecentGestureEvent().details.bounding_box()); | 1594 GetMostRecentGestureEvent().details.bounding_box()); |
1595 | 1595 |
1596 event = ObtainMotionEvent(event_time, | 1596 event = ObtainMotionEvent(event_time, |
1597 MotionEvent::ACTION_POINTER_UP, | 1597 MotionEvent::ACTION_POINTER_UP, |
1598 kFakeCoordX, | 1598 kFakeCoordX, |
1599 kFakeCoordY, | 1599 kFakeCoordY, |
1600 secondary_coord_x, | 1600 secondary_coord_x, |
1601 secondary_coord_y); | 1601 secondary_coord_y); |
1602 event.set_id(++motion_event_id); | 1602 event.SetPrimaryPointerId(motion_event_id); |
1603 | 1603 |
1604 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1604 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1605 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 1605 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
1606 EXPECT_EQ(ET_GESTURE_PINCH_END, GetMostRecentGestureEventType()); | 1606 EXPECT_EQ(ET_GESTURE_PINCH_END, GetMostRecentGestureEventType()); |
1607 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); | 1607 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); |
1608 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_SCROLL_END)); | 1608 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_SCROLL_END)); |
1609 EXPECT_EQ( | 1609 EXPECT_EQ( |
1610 gfx::RectF(kFakeCoordX - kMockTouchRadius, | 1610 gfx::RectF(kFakeCoordX - kMockTouchRadius, |
1611 kFakeCoordY - kMockTouchRadius, | 1611 kFakeCoordY - kMockTouchRadius, |
1612 secondary_coord_x - kFakeCoordX + kMockTouchRadius * 2, | 1612 secondary_coord_x - kFakeCoordX + kMockTouchRadius * 2, |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1831 event = ObtainMotionEvent(event_time + long_press_timeout, | 1831 event = ObtainMotionEvent(event_time + long_press_timeout, |
1832 MotionEvent::ACTION_UP); | 1832 MotionEvent::ACTION_UP); |
1833 gesture_provider_->OnTouchEvent(event); | 1833 gesture_provider_->OnTouchEvent(event); |
1834 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_TAP)); | 1834 EXPECT_FALSE(HasReceivedGesture(ET_GESTURE_LONG_TAP)); |
1835 } | 1835 } |
1836 | 1836 |
1837 // Verify that inserting a touch cancel event will trigger proper touch and | 1837 // Verify that inserting a touch cancel event will trigger proper touch and |
1838 // gesture sequence cancellation. | 1838 // gesture sequence cancellation. |
1839 TEST_F(GestureProviderTest, CancelActiveTouchSequence) { | 1839 TEST_F(GestureProviderTest, CancelActiveTouchSequence) { |
1840 base::TimeTicks event_time = base::TimeTicks::Now(); | 1840 base::TimeTicks event_time = base::TimeTicks::Now(); |
1841 int motion_event_id = 0; | 1841 int motion_event_id = 6; |
1842 | 1842 |
1843 EXPECT_FALSE(CancelActiveTouchSequence()); | 1843 EXPECT_FALSE(CancelActiveTouchSequence()); |
1844 EXPECT_EQ(0U, GetReceivedGestureCount()); | 1844 EXPECT_EQ(0U, GetReceivedGestureCount()); |
1845 | 1845 |
1846 MockMotionEvent event = | 1846 MockMotionEvent event = |
1847 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 1847 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
1848 event.set_id(++motion_event_id); | 1848 event.SetPrimaryPointerId(motion_event_id); |
1849 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1849 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1850 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); | 1850 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
1851 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); | 1851 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); |
1852 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 1852 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
1853 | 1853 |
1854 ASSERT_TRUE(CancelActiveTouchSequence()); | 1854 ASSERT_TRUE(CancelActiveTouchSequence()); |
1855 EXPECT_FALSE(HasDownEvent()); | 1855 EXPECT_FALSE(HasDownEvent()); |
1856 | 1856 |
1857 // Subsequent MotionEvent's are dropped until ACTION_DOWN. | 1857 // Subsequent MotionEvent's are dropped until ACTION_DOWN. |
1858 event = ObtainMotionEvent(event_time + kOneMicrosecond, | 1858 event = ObtainMotionEvent(event_time + kOneMicrosecond, |
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2520 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 2520 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
2521 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); | 2521 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); |
2522 | 2522 |
2523 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); | 2523 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); |
2524 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); | 2524 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
2525 EXPECT_EQ(gfx::RectF(0, 0, 20, 20), | 2525 EXPECT_EQ(gfx::RectF(0, 0, 20, 20), |
2526 GetMostRecentGestureEvent().details.bounding_box()); | 2526 GetMostRecentGestureEvent().details.bounding_box()); |
2527 } | 2527 } |
2528 | 2528 |
2529 } // namespace ui | 2529 } // namespace ui |
OLD | NEW |