Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Unified Diff: content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc

Issue 293683002: Synthetic pinch gesture take scale factor as parameter. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/input/synthetic_gesture_target.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d9cdbf441136eaf48bf561abb9885ecf3b4363e2..b79e797aad271faa7568235e22a5e39d00ca5b1e 100644
--- a/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
+++ b/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
@@ -36,7 +36,8 @@ namespace {
const int kFlushInputRateInMs = 16;
const int kPointerAssumedStoppedTimeMs = 43;
-const int kTouchSlopInDips = 7;
+const float kTouchSlopInDips = 7.0f;
+const float kMinScalingSpanInDips = 27.5f;
class MockSyntheticGesture : public SyntheticGesture {
public:
@@ -97,10 +98,14 @@ class MockSyntheticGestureTarget : public SyntheticGestureTarget {
pointer_assumed_stopped_time_ms_ = time_ms;
}
- virtual int GetTouchSlopInDips() const OVERRIDE {
+ virtual float GetTouchSlopInDips() const OVERRIDE {
return kTouchSlopInDips;
}
+ virtual float GetMinScalingSpanInDips() const OVERRIDE {
+ return kMinScalingSpanInDips;
+ }
+
bool flush_requested() const { return flush_requested_; }
void ClearFlushRequest() { flush_requested_ = false; }
@@ -191,7 +196,7 @@ class MockSyntheticPinchTouchTarget : public MockSyntheticGestureTarget {
};
MockSyntheticPinchTouchTarget()
- : total_num_pixels_covered_(0),
+ : initial_pointer_distance_(0),
last_pointer_distance_(0),
zoom_direction_(ZOOM_DIRECTION_UNKNOWN),
started_(false) {}
@@ -209,6 +214,8 @@ class MockSyntheticPinchTouchTarget : public MockSyntheticGestureTarget {
start_0_ = gfx::PointF(touch_event.touches[0].position);
start_1_ = gfx::PointF(touch_event.touches[1].position);
last_pointer_distance_ = (start_0_ - start_1_).Length();
+ initial_pointer_distance_ = last_pointer_distance_;
+ EXPECT_GE(initial_pointer_distance_, GetMinScalingSpanInDips());
started_ = true;
} else {
@@ -218,8 +225,6 @@ class MockSyntheticPinchTouchTarget : public MockSyntheticGestureTarget {
gfx::PointF current_0 = gfx::PointF(touch_event.touches[0].position);
gfx::PointF current_1 = gfx::PointF(touch_event.touches[1].position);
- total_num_pixels_covered_ =
- (current_0 - start_0_).Length() + (current_1 - start_1_).Length();
float pointer_distance = (current_0 - current_1).Length();
if (last_pointer_distance_ != pointer_distance) {
@@ -236,9 +241,24 @@ class MockSyntheticPinchTouchTarget : public MockSyntheticGestureTarget {
}
}
- float total_num_pixels_covered() const { return total_num_pixels_covered_; }
ZoomDirection zoom_direction() const { return zoom_direction_; }
+ float ComputeScaleFactor() const {
+ switch (zoom_direction_) {
+ case ZOOM_IN:
+ return last_pointer_distance_ /
+ (initial_pointer_distance_ + 2 * GetTouchSlopInDips());
+ case ZOOM_OUT:
+ return last_pointer_distance_ /
+ (initial_pointer_distance_ - 2 * GetTouchSlopInDips());
+ case ZOOM_DIRECTION_UNKNOWN:
+ return 1.0f;
+ default:
+ NOTREACHED();
+ return 0.0f;
+ }
+ }
+
private:
ZoomDirection ComputeZoomDirection(float last_pointer_distance,
float current_pointer_distance) {
@@ -247,7 +267,7 @@ class MockSyntheticPinchTouchTarget : public MockSyntheticGestureTarget {
: ZOOM_OUT;
}
- float total_num_pixels_covered_;
+ float initial_pointer_distance_;
float last_pointer_distance_;
ZoomDirection zoom_direction_;
gfx::PointF start_0_;
@@ -883,8 +903,7 @@ TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomIn) {
SyntheticPinchGestureParams params;
params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT;
- params.zoom_in = true;
- params.total_num_pixels_covered = 345;
+ params.scale_factor = 2.3f;
params.anchor.SetPoint(54, 89);
scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params));
@@ -897,8 +916,7 @@ TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomIn) {
EXPECT_EQ(0, num_failure_);
EXPECT_EQ(pinch_target->zoom_direction(),
MockSyntheticPinchTouchTarget::ZOOM_IN);
- EXPECT_EQ(params.total_num_pixels_covered + 2 * target_->GetTouchSlopInDips(),
- pinch_target->total_num_pixels_covered());
+ EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor());
}
TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomOut) {
@@ -906,8 +924,7 @@ TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomOut) {
SyntheticPinchGestureParams params;
params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT;
- params.zoom_in = false;
- params.total_num_pixels_covered = 456;
+ params.scale_factor = 0.4f;
params.anchor.SetPoint(-12, 93);
scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params));
@@ -920,17 +937,15 @@ TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomOut) {
EXPECT_EQ(0, num_failure_);
EXPECT_EQ(pinch_target->zoom_direction(),
MockSyntheticPinchTouchTarget::ZOOM_OUT);
- EXPECT_EQ(params.total_num_pixels_covered + 2 * target_->GetTouchSlopInDips(),
- pinch_target->total_num_pixels_covered());
+ EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor());
}
-TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZeroPixelsCovered) {
+TEST_F(SyntheticGestureControllerTest, PinchGestureTouchNoScaling) {
CreateControllerAndTarget<MockSyntheticPinchTouchTarget>();
SyntheticPinchGestureParams params;
params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT;
- params.zoom_in = true;
- params.total_num_pixels_covered = 0;
+ params.scale_factor = 1.0f;
scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params));
QueueSyntheticGesture(gesture.PassAs<SyntheticGesture>());
@@ -942,7 +957,7 @@ TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZeroPixelsCovered) {
EXPECT_EQ(0, num_failure_);
EXPECT_EQ(pinch_target->zoom_direction(),
MockSyntheticPinchTouchTarget::ZOOM_DIRECTION_UNKNOWN);
- EXPECT_EQ(0, pinch_target->total_num_pixels_covered());
+ EXPECT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor());
}
TEST_F(SyntheticGestureControllerTest, TapGestureTouch) {
« no previous file with comments | « no previous file | content/browser/renderer_host/input/synthetic_gesture_target.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698