Chromium Code Reviews| 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 |