Index: content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc |
diff --git a/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc b/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc |
index baefa695d1338af6557bd5b28f498b5aee0b23ac..8bf145083202af067afc6da517a56c1f58783a0c 100644 |
--- a/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc |
+++ b/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc |
@@ -25,6 +25,7 @@ namespace { |
const int kFlushInputRateInMs = 16; |
const int kPointerAssumedStoppedTimeMs = 43; |
+const int kTouchSlopInDips = 7; |
class MockSyntheticGesture : public SyntheticGesture { |
public: |
@@ -100,6 +101,10 @@ class MockSyntheticGestureTarget : public SyntheticGestureTarget { |
pointer_assumed_stopped_time_ms_ = time_ms; |
} |
+ virtual int GetTouchSlopInDips() const OVERRIDE { |
+ return kTouchSlopInDips; |
+ } |
+ |
int num_success() const { return num_success_; } |
int num_failure() const { return num_failure_; } |
@@ -373,7 +378,7 @@ TEST_F(SyntheticGestureControllerTest, SmoothScrollGestureTouch) { |
EXPECT_EQ(1, target_->num_success()); |
EXPECT_EQ(0, target_->num_failure()); |
- EXPECT_FLOAT_EQ(params.distance, |
+ EXPECT_FLOAT_EQ(params.distance + target_->GetTouchSlopInDips(), |
static_cast<MockSyntheticSmoothScrollTouchTarget*>(target_) |
->scroll_distance()); |
} |
@@ -397,12 +402,30 @@ TEST_F(SyntheticGestureControllerTest, SmoothScrollGestureTouchLongStop) { |
EXPECT_EQ(1, target_->num_success()); |
EXPECT_EQ(0, target_->num_failure()); |
- EXPECT_FLOAT_EQ(params.distance, |
+ EXPECT_FLOAT_EQ(params.distance + target_->GetTouchSlopInDips(), |
static_cast<MockSyntheticSmoothScrollTouchTarget*>(target_) |
->scroll_distance()); |
EXPECT_GE(GetTotalTime(), target_->PointerAssumedStoppedTime()); |
} |
+TEST_F(SyntheticGestureControllerTest, SmoothScrollGestureTouchZeroDistance) { |
+ CreateControllerAndTarget<MockSyntheticSmoothScrollTouchTarget>(); |
+ |
+ SyntheticSmoothScrollGestureParams params; |
+ params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; |
+ params.distance = 0; |
+ |
+ scoped_ptr<SyntheticSmoothScrollGesture> gesture( |
+ new SyntheticSmoothScrollGesture(params)); |
+ controller_->QueueSyntheticGesture(gesture.PassAs<SyntheticGesture>()); |
+ FlushInputUntilComplete(); |
+ |
+ EXPECT_EQ(1, target_->num_success()); |
+ EXPECT_EQ(0, target_->num_failure()); |
+ EXPECT_FLOAT_EQ(0, static_cast<MockSyntheticSmoothScrollTouchTarget*>(target_) |
+ ->scroll_distance()); |
+} |
+ |
TEST_F(SyntheticGestureControllerTest, SmoothScrollGestureMouse) { |
CreateControllerAndTarget<MockSyntheticSmoothScrollMouseTarget>(); |
@@ -439,9 +462,10 @@ TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomIn) { |
EXPECT_EQ( |
static_cast<MockSyntheticPinchTouchTarget*>(target_)->zoom_direction(), |
MockSyntheticPinchTouchTarget::ZOOM_IN); |
- EXPECT_FLOAT_EQ(params.total_num_pixels_covered, |
- static_cast<MockSyntheticPinchTouchTarget*>(target_) |
- ->total_num_pixels_covered()); |
+ EXPECT_FLOAT_EQ( |
+ params.total_num_pixels_covered + 2 * target_->GetTouchSlopInDips(), |
+ static_cast<MockSyntheticPinchTouchTarget*>(target_) |
+ ->total_num_pixels_covered()); |
} |
TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomOut) { |
@@ -461,9 +485,31 @@ TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomOut) { |
EXPECT_EQ( |
static_cast<MockSyntheticPinchTouchTarget*>(target_)->zoom_direction(), |
MockSyntheticPinchTouchTarget::ZOOM_OUT); |
- EXPECT_FLOAT_EQ(params.total_num_pixels_covered, |
- static_cast<MockSyntheticPinchTouchTarget*>(target_) |
- ->total_num_pixels_covered()); |
+ EXPECT_FLOAT_EQ( |
+ params.total_num_pixels_covered + 2 * target_->GetTouchSlopInDips(), |
+ static_cast<MockSyntheticPinchTouchTarget*>(target_) |
+ ->total_num_pixels_covered()); |
+} |
+ |
+TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZeroPixelsCovered) { |
+ CreateControllerAndTarget<MockSyntheticPinchTouchTarget>(); |
+ |
+ SyntheticPinchGestureParams params; |
+ params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; |
+ params.zoom_in = true; |
+ params.total_num_pixels_covered = 0; |
+ |
+ scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); |
+ controller_->QueueSyntheticGesture(gesture.PassAs<SyntheticGesture>()); |
+ FlushInputUntilComplete(); |
+ |
+ EXPECT_EQ(1, target_->num_success()); |
+ EXPECT_EQ(0, target_->num_failure()); |
+ EXPECT_EQ( |
+ static_cast<MockSyntheticPinchTouchTarget*>(target_)->zoom_direction(), |
+ MockSyntheticPinchTouchTarget::ZOOM_DIRECTION_UNKNOWN); |
+ EXPECT_FLOAT_EQ(0, static_cast<MockSyntheticPinchTouchTarget*>(target_) |
+ ->total_num_pixels_covered()); |
} |
} // namespace |