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 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
509 EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, gesture.type); | 509 EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, gesture.type); |
510 EXPECT_EQ(event_time + kFiveMilliseconds * 2, gesture.time); | 510 EXPECT_EQ(event_time + kFiveMilliseconds * 2, gesture.time); |
511 EXPECT_EQ(kFakeCoordX - delta_x, gesture.x); | 511 EXPECT_EQ(kFakeCoordX - delta_x, gesture.x); |
512 EXPECT_EQ(kFakeCoordY - delta_y, gesture.y); | 512 EXPECT_EQ(kFakeCoordY - delta_y, gesture.y); |
513 | 513 |
514 // No horizontal delta because of snapping. | 514 // No horizontal delta because of snapping. |
515 EXPECT_EQ(0, gesture.details.scroll_update.delta_x); | 515 EXPECT_EQ(0, gesture.details.scroll_update.delta_x); |
516 EXPECT_EQ(-delta_y / 2, gesture.details.scroll_update.delta_y); | 516 EXPECT_EQ(-delta_y / 2, gesture.details.scroll_update.delta_y); |
517 } | 517 } |
518 | 518 |
519 // Verify that fractional scroll deltas are rounded as expected and that | |
520 // fractional scrolling doesn't break scroll snapping. | |
521 TEST_F(GestureProviderTest, FractionalScroll) { | |
Rick Byers
2014/03/07 20:58:53
This was a case I initially thought was broken but
jdduke (slow)
2014/03/07 21:07:32
Yeah this is great. I can hold off with the timin
| |
522 const float delta_x = 0.4; | |
523 const float delta_y = 5.2; | |
524 | |
525 const base::TimeTicks event_time = TimeTicks::Now(); | |
526 | |
527 MockMotionEvent event = | |
528 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | |
529 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | |
530 | |
531 // Skip past the touch slop and move back. | |
532 event = ObtainMotionEvent(event_time, | |
533 MotionEvent::ACTION_MOVE, | |
534 kFakeCoordX, | |
535 kFakeCoordY + 100); | |
536 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | |
537 event = ObtainMotionEvent(event_time, | |
538 MotionEvent::ACTION_MOVE); | |
539 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | |
540 | |
541 // Now move up slowly, mostly vertically but with a (fractional) bit of | |
542 // horizontal motion. | |
543 for(int i = 1; i <= 10; i++) { | |
544 event = ObtainMotionEvent(event_time + kFiveMilliseconds * i, | |
545 MotionEvent::ACTION_MOVE, | |
546 kFakeCoordX + delta_x * i, | |
547 kFakeCoordY + delta_y * i); | |
548 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | |
549 | |
550 ASSERT_LT(0U, GetReceivedGestureCount()); | |
551 GestureEventData gesture = GetMostRecentGestureEvent(); | |
552 EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, gesture.type); | |
553 EXPECT_EQ(event_time + kFiveMilliseconds * i, gesture.time); | |
554 | |
555 // Verify that the event co-ordinates are still the precise values we | |
556 // supplied. | |
557 EXPECT_EQ(kFakeCoordX + delta_x * i, gesture.x); | |
558 EXPECT_EQ(kFakeCoordY + delta_y * i, gesture.y); | |
559 | |
560 // Verify that we're scrolling vertically by the expected amount | |
561 // (modulo rounding). | |
562 EXPECT_GE(gesture.details.scroll_update.delta_y, (int)delta_y); | |
563 EXPECT_LE(gesture.details.scroll_update.delta_y, ((int)delta_y) + 1); | |
564 | |
565 // And that there has been no horizontal motion at all. | |
566 EXPECT_EQ(0, gesture.details.scroll_update.delta_x); | |
567 } | |
568 } | |
569 | |
519 // Generate a scroll gesture and verify that the resulting scroll begin event | 570 // Generate a scroll gesture and verify that the resulting scroll begin event |
520 // has the expected hint values. | 571 // has the expected hint values. |
521 TEST_F(GestureProviderTest, ScrollBeginValues) { | 572 TEST_F(GestureProviderTest, ScrollBeginValues) { |
522 const int delta_x = 13; | 573 const int delta_x = 13; |
523 const int delta_y = 89; | 574 const int delta_y = 89; |
524 | 575 |
525 const base::TimeTicks event_time = TimeTicks::Now(); | 576 const base::TimeTicks event_time = TimeTicks::Now(); |
526 | 577 |
527 MockMotionEvent event = | 578 MockMotionEvent event = |
528 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 579 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1012 MotionEvent::ACTION_UP); | 1063 MotionEvent::ACTION_UP); |
1013 EXPECT_FALSE(gesture_provider_->OnTouchEvent(event)); | 1064 EXPECT_FALSE(gesture_provider_->OnTouchEvent(event)); |
1014 | 1065 |
1015 event = ObtainMotionEvent(event_time + kFiveMilliseconds * 3, | 1066 event = ObtainMotionEvent(event_time + kFiveMilliseconds * 3, |
1016 MotionEvent::ACTION_DOWN); | 1067 MotionEvent::ACTION_DOWN); |
1017 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 1068 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
1018 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); | 1069 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
1019 } | 1070 } |
1020 | 1071 |
1021 } // namespace ui | 1072 } // namespace ui |
OLD | NEW |