| Index: ui/events/gesture_detection/gesture_provider_unittest.cc
|
| diff --git a/ui/events/gesture_detection/gesture_provider_unittest.cc b/ui/events/gesture_detection/gesture_provider_unittest.cc
|
| index ddeb191ed250e3c932cd873d3e0d879e9fd593ed..1339c3fbbb6415665bc5cdcaf7607c732cbb39df 100644
|
| --- a/ui/events/gesture_detection/gesture_provider_unittest.cc
|
| +++ b/ui/events/gesture_detection/gesture_provider_unittest.cc
|
| @@ -516,6 +516,57 @@ TEST_F(GestureProviderTest, ScrollUpdateValues) {
|
| EXPECT_EQ(-delta_y / 2, gesture.details.scroll_update.delta_y);
|
| }
|
|
|
| +// Verify that fractional scroll deltas are rounded as expected and that
|
| +// fractional scrolling doesn't break scroll snapping.
|
| +TEST_F(GestureProviderTest, FractionalScroll) {
|
| + const float delta_x = 0.4f;
|
| + const float delta_y = 5.2f;
|
| +
|
| + const base::TimeTicks event_time = TimeTicks::Now();
|
| +
|
| + MockMotionEvent event =
|
| + ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN);
|
| + EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
|
| +
|
| + // Skip past the touch slop and move back.
|
| + event = ObtainMotionEvent(event_time,
|
| + MotionEvent::ACTION_MOVE,
|
| + kFakeCoordX,
|
| + kFakeCoordY + 100);
|
| + EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
|
| + event = ObtainMotionEvent(event_time,
|
| + MotionEvent::ACTION_MOVE);
|
| + EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
|
| +
|
| + // Now move up slowly, mostly vertically but with a (fractional) bit of
|
| + // horizontal motion.
|
| + for(int i = 1; i <= 10; i++) {
|
| + event = ObtainMotionEvent(event_time + kFiveMilliseconds * i,
|
| + MotionEvent::ACTION_MOVE,
|
| + kFakeCoordX + delta_x * i,
|
| + kFakeCoordY + delta_y * i);
|
| + EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
|
| +
|
| + ASSERT_LT(0U, GetReceivedGestureCount());
|
| + GestureEventData gesture = GetMostRecentGestureEvent();
|
| + EXPECT_EQ(ET_GESTURE_SCROLL_UPDATE, gesture.type);
|
| + EXPECT_EQ(event_time + kFiveMilliseconds * i, gesture.time);
|
| +
|
| + // Verify that the event co-ordinates are still the precise values we
|
| + // supplied.
|
| + EXPECT_EQ(kFakeCoordX + delta_x * i, gesture.x);
|
| + EXPECT_EQ(kFakeCoordY + delta_y * i, gesture.y);
|
| +
|
| + // Verify that we're scrolling vertically by the expected amount
|
| + // (modulo rounding).
|
| + EXPECT_GE(gesture.details.scroll_update.delta_y, (int)delta_y);
|
| + EXPECT_LE(gesture.details.scroll_update.delta_y, ((int)delta_y) + 1);
|
| +
|
| + // And that there has been no horizontal motion at all.
|
| + EXPECT_EQ(0, gesture.details.scroll_update.delta_x);
|
| + }
|
| +}
|
| +
|
| // Generate a scroll gesture and verify that the resulting scroll begin event
|
| // has the expected hint values.
|
| TEST_F(GestureProviderTest, ScrollBeginValues) {
|
|
|