| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/time/time.h" | 7 #include "base/time/time.h" |
| 8 #include "content/browser/renderer_host/input/synthetic_gesture.h" | 8 #include "content/browser/renderer_host/input/synthetic_gesture.h" |
| 9 #include "content/browser/renderer_host/input/synthetic_gesture_controller.h" | 9 #include "content/browser/renderer_host/input/synthetic_gesture_controller.h" |
| 10 #include "content/browser/renderer_host/input/synthetic_gesture_target.h" | 10 #include "content/browser/renderer_host/input/synthetic_gesture_target.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 public: | 43 public: |
| 44 MockSyntheticGesture(bool* finished, int num_steps) | 44 MockSyntheticGesture(bool* finished, int num_steps) |
| 45 : finished_(finished), | 45 : finished_(finished), |
| 46 num_steps_(num_steps), | 46 num_steps_(num_steps), |
| 47 step_count_(0) { | 47 step_count_(0) { |
| 48 *finished_ = false; | 48 *finished_ = false; |
| 49 } | 49 } |
| 50 virtual ~MockSyntheticGesture() {} | 50 virtual ~MockSyntheticGesture() {} |
| 51 | 51 |
| 52 virtual Result ForwardInputEvents(const base::TimeTicks& timestamp, | 52 virtual Result ForwardInputEvents(const base::TimeTicks& timestamp, |
| 53 SyntheticGestureTarget* target) OVERRIDE { | 53 SyntheticGestureTarget* target) override { |
| 54 step_count_++; | 54 step_count_++; |
| 55 if (step_count_ == num_steps_) { | 55 if (step_count_ == num_steps_) { |
| 56 *finished_ = true; | 56 *finished_ = true; |
| 57 return SyntheticGesture::GESTURE_FINISHED; | 57 return SyntheticGesture::GESTURE_FINISHED; |
| 58 } else if (step_count_ > num_steps_) { | 58 } else if (step_count_ > num_steps_) { |
| 59 *finished_ = true; | 59 *finished_ = true; |
| 60 // Return arbitrary failure. | 60 // Return arbitrary failure. |
| 61 return SyntheticGesture::GESTURE_SOURCE_TYPE_NOT_IMPLEMENTED; | 61 return SyntheticGesture::GESTURE_SOURCE_TYPE_NOT_IMPLEMENTED; |
| 62 } | 62 } |
| 63 | 63 |
| 64 return SyntheticGesture::GESTURE_RUNNING; | 64 return SyntheticGesture::GESTURE_RUNNING; |
| 65 } | 65 } |
| 66 | 66 |
| 67 protected: | 67 protected: |
| 68 bool* finished_; | 68 bool* finished_; |
| 69 int num_steps_; | 69 int num_steps_; |
| 70 int step_count_; | 70 int step_count_; |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 class MockSyntheticGestureTarget : public SyntheticGestureTarget { | 73 class MockSyntheticGestureTarget : public SyntheticGestureTarget { |
| 74 public: | 74 public: |
| 75 MockSyntheticGestureTarget() | 75 MockSyntheticGestureTarget() |
| 76 : flush_requested_(false), | 76 : flush_requested_(false), |
| 77 pointer_assumed_stopped_time_ms_(kPointerAssumedStoppedTimeMs) {} | 77 pointer_assumed_stopped_time_ms_(kPointerAssumedStoppedTimeMs) {} |
| 78 virtual ~MockSyntheticGestureTarget() {} | 78 virtual ~MockSyntheticGestureTarget() {} |
| 79 | 79 |
| 80 // SyntheticGestureTarget: | 80 // SyntheticGestureTarget: |
| 81 virtual void DispatchInputEventToPlatform( | 81 virtual void DispatchInputEventToPlatform( |
| 82 const WebInputEvent& event) OVERRIDE {} | 82 const WebInputEvent& event) override {} |
| 83 | 83 |
| 84 virtual void SetNeedsFlush() OVERRIDE { | 84 virtual void SetNeedsFlush() override { |
| 85 flush_requested_ = true; | 85 flush_requested_ = true; |
| 86 } | 86 } |
| 87 | 87 |
| 88 virtual SyntheticGestureParams::GestureSourceType | 88 virtual SyntheticGestureParams::GestureSourceType |
| 89 GetDefaultSyntheticGestureSourceType() const OVERRIDE { | 89 GetDefaultSyntheticGestureSourceType() const override { |
| 90 return SyntheticGestureParams::TOUCH_INPUT; | 90 return SyntheticGestureParams::TOUCH_INPUT; |
| 91 } | 91 } |
| 92 | 92 |
| 93 virtual base::TimeDelta PointerAssumedStoppedTime() const OVERRIDE { | 93 virtual base::TimeDelta PointerAssumedStoppedTime() const override { |
| 94 return base::TimeDelta::FromMilliseconds(pointer_assumed_stopped_time_ms_); | 94 return base::TimeDelta::FromMilliseconds(pointer_assumed_stopped_time_ms_); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void set_pointer_assumed_stopped_time_ms(int time_ms) { | 97 void set_pointer_assumed_stopped_time_ms(int time_ms) { |
| 98 pointer_assumed_stopped_time_ms_ = time_ms; | 98 pointer_assumed_stopped_time_ms_ = time_ms; |
| 99 } | 99 } |
| 100 | 100 |
| 101 virtual float GetTouchSlopInDips() const OVERRIDE { | 101 virtual float GetTouchSlopInDips() const override { |
| 102 return kTouchSlopInDips; | 102 return kTouchSlopInDips; |
| 103 } | 103 } |
| 104 | 104 |
| 105 virtual float GetMinScalingSpanInDips() const OVERRIDE { | 105 virtual float GetMinScalingSpanInDips() const override { |
| 106 return kMinScalingSpanInDips; | 106 return kMinScalingSpanInDips; |
| 107 } | 107 } |
| 108 | 108 |
| 109 bool flush_requested() const { return flush_requested_; } | 109 bool flush_requested() const { return flush_requested_; } |
| 110 void ClearFlushRequest() { flush_requested_ = false; } | 110 void ClearFlushRequest() { flush_requested_ = false; } |
| 111 | 111 |
| 112 private: | 112 private: |
| 113 bool flush_requested_; | 113 bool flush_requested_; |
| 114 | 114 |
| 115 int pointer_assumed_stopped_time_ms_; | 115 int pointer_assumed_stopped_time_ms_; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 131 gfx::Vector2dF start_to_end_distance_; | 131 gfx::Vector2dF start_to_end_distance_; |
| 132 float total_abs_scroll_distance_length_; | 132 float total_abs_scroll_distance_length_; |
| 133 }; | 133 }; |
| 134 | 134 |
| 135 class MockScrollMouseTarget : public MockScrollGestureTarget { | 135 class MockScrollMouseTarget : public MockScrollGestureTarget { |
| 136 public: | 136 public: |
| 137 MockScrollMouseTarget() {} | 137 MockScrollMouseTarget() {} |
| 138 virtual ~MockScrollMouseTarget() {} | 138 virtual ~MockScrollMouseTarget() {} |
| 139 | 139 |
| 140 virtual void DispatchInputEventToPlatform( | 140 virtual void DispatchInputEventToPlatform( |
| 141 const WebInputEvent& event) OVERRIDE { | 141 const WebInputEvent& event) override { |
| 142 ASSERT_EQ(event.type, WebInputEvent::MouseWheel); | 142 ASSERT_EQ(event.type, WebInputEvent::MouseWheel); |
| 143 const WebMouseWheelEvent& mouse_wheel_event = | 143 const WebMouseWheelEvent& mouse_wheel_event = |
| 144 static_cast<const WebMouseWheelEvent&>(event); | 144 static_cast<const WebMouseWheelEvent&>(event); |
| 145 gfx::Vector2dF delta(mouse_wheel_event.deltaX, mouse_wheel_event.deltaY); | 145 gfx::Vector2dF delta(mouse_wheel_event.deltaX, mouse_wheel_event.deltaY); |
| 146 start_to_end_distance_ += delta; | 146 start_to_end_distance_ += delta; |
| 147 total_abs_scroll_distance_length_ += delta.Length(); | 147 total_abs_scroll_distance_length_ += delta.Length(); |
| 148 } | 148 } |
| 149 }; | 149 }; |
| 150 | 150 |
| 151 class MockScrollTouchTarget : public MockScrollGestureTarget { | 151 class MockScrollTouchTarget : public MockScrollGestureTarget { |
| 152 public: | 152 public: |
| 153 MockScrollTouchTarget() : started_(false) {} | 153 MockScrollTouchTarget() : started_(false) {} |
| 154 virtual ~MockScrollTouchTarget() {} | 154 virtual ~MockScrollTouchTarget() {} |
| 155 | 155 |
| 156 virtual void DispatchInputEventToPlatform( | 156 virtual void DispatchInputEventToPlatform( |
| 157 const WebInputEvent& event) OVERRIDE { | 157 const WebInputEvent& event) override { |
| 158 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); | 158 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); |
| 159 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); | 159 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); |
| 160 ASSERT_EQ(touch_event.touchesLength, 1U); | 160 ASSERT_EQ(touch_event.touchesLength, 1U); |
| 161 | 161 |
| 162 if (!started_) { | 162 if (!started_) { |
| 163 ASSERT_EQ(touch_event.type, WebInputEvent::TouchStart); | 163 ASSERT_EQ(touch_event.type, WebInputEvent::TouchStart); |
| 164 start_.SetPoint(touch_event.touches[0].position.x, | 164 start_.SetPoint(touch_event.touches[0].position.x, |
| 165 touch_event.touches[0].position.y); | 165 touch_event.touches[0].position.y); |
| 166 last_touch_point_ = start_; | 166 last_touch_point_ = start_; |
| 167 started_ = true; | 167 started_ = true; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 196 }; | 196 }; |
| 197 | 197 |
| 198 MockSyntheticPinchTouchTarget() | 198 MockSyntheticPinchTouchTarget() |
| 199 : initial_pointer_distance_(0), | 199 : initial_pointer_distance_(0), |
| 200 last_pointer_distance_(0), | 200 last_pointer_distance_(0), |
| 201 zoom_direction_(ZOOM_DIRECTION_UNKNOWN), | 201 zoom_direction_(ZOOM_DIRECTION_UNKNOWN), |
| 202 started_(false) {} | 202 started_(false) {} |
| 203 virtual ~MockSyntheticPinchTouchTarget() {} | 203 virtual ~MockSyntheticPinchTouchTarget() {} |
| 204 | 204 |
| 205 virtual void DispatchInputEventToPlatform( | 205 virtual void DispatchInputEventToPlatform( |
| 206 const WebInputEvent& event) OVERRIDE { | 206 const WebInputEvent& event) override { |
| 207 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); | 207 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); |
| 208 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); | 208 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); |
| 209 ASSERT_EQ(touch_event.touchesLength, 2U); | 209 ASSERT_EQ(touch_event.touchesLength, 2U); |
| 210 | 210 |
| 211 if (!started_) { | 211 if (!started_) { |
| 212 ASSERT_EQ(touch_event.type, WebInputEvent::TouchStart); | 212 ASSERT_EQ(touch_event.type, WebInputEvent::TouchStart); |
| 213 | 213 |
| 214 start_0_ = gfx::PointF(touch_event.touches[0].position); | 214 start_0_ = gfx::PointF(touch_event.touches[0].position); |
| 215 start_1_ = gfx::PointF(touch_event.touches[1].position); | 215 start_1_ = gfx::PointF(touch_event.touches[1].position); |
| 216 last_pointer_distance_ = (start_0_ - start_1_).Length(); | 216 last_pointer_distance_ = (start_0_ - start_1_).Length(); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 base::TimeDelta stop_time_; | 296 base::TimeDelta stop_time_; |
| 297 GestureState state_; | 297 GestureState state_; |
| 298 }; | 298 }; |
| 299 | 299 |
| 300 class MockSyntheticTapTouchTarget : public MockSyntheticTapGestureTarget { | 300 class MockSyntheticTapTouchTarget : public MockSyntheticTapGestureTarget { |
| 301 public: | 301 public: |
| 302 MockSyntheticTapTouchTarget() {} | 302 MockSyntheticTapTouchTarget() {} |
| 303 virtual ~MockSyntheticTapTouchTarget() {} | 303 virtual ~MockSyntheticTapTouchTarget() {} |
| 304 | 304 |
| 305 virtual void DispatchInputEventToPlatform( | 305 virtual void DispatchInputEventToPlatform( |
| 306 const WebInputEvent& event) OVERRIDE { | 306 const WebInputEvent& event) override { |
| 307 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); | 307 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); |
| 308 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); | 308 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); |
| 309 ASSERT_EQ(touch_event.touchesLength, 1U); | 309 ASSERT_EQ(touch_event.touchesLength, 1U); |
| 310 | 310 |
| 311 switch (state_) { | 311 switch (state_) { |
| 312 case NOT_STARTED: | 312 case NOT_STARTED: |
| 313 EXPECT_EQ(touch_event.type, WebInputEvent::TouchStart); | 313 EXPECT_EQ(touch_event.type, WebInputEvent::TouchStart); |
| 314 position_ = gfx::PointF(touch_event.touches[0].position); | 314 position_ = gfx::PointF(touch_event.touches[0].position); |
| 315 start_time_ = base::TimeDelta::FromMilliseconds( | 315 start_time_ = base::TimeDelta::FromMilliseconds( |
| 316 static_cast<int64>(touch_event.timeStampSeconds * 1000)); | 316 static_cast<int64>(touch_event.timeStampSeconds * 1000)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 329 } | 329 } |
| 330 } | 330 } |
| 331 }; | 331 }; |
| 332 | 332 |
| 333 class MockSyntheticTapMouseTarget : public MockSyntheticTapGestureTarget { | 333 class MockSyntheticTapMouseTarget : public MockSyntheticTapGestureTarget { |
| 334 public: | 334 public: |
| 335 MockSyntheticTapMouseTarget() {} | 335 MockSyntheticTapMouseTarget() {} |
| 336 virtual ~MockSyntheticTapMouseTarget() {} | 336 virtual ~MockSyntheticTapMouseTarget() {} |
| 337 | 337 |
| 338 virtual void DispatchInputEventToPlatform( | 338 virtual void DispatchInputEventToPlatform( |
| 339 const WebInputEvent& event) OVERRIDE { | 339 const WebInputEvent& event) override { |
| 340 ASSERT_TRUE(WebInputEvent::isMouseEventType(event.type)); | 340 ASSERT_TRUE(WebInputEvent::isMouseEventType(event.type)); |
| 341 const WebMouseEvent& mouse_event = static_cast<const WebMouseEvent&>(event); | 341 const WebMouseEvent& mouse_event = static_cast<const WebMouseEvent&>(event); |
| 342 | 342 |
| 343 switch (state_) { | 343 switch (state_) { |
| 344 case NOT_STARTED: | 344 case NOT_STARTED: |
| 345 EXPECT_EQ(mouse_event.type, WebInputEvent::MouseDown); | 345 EXPECT_EQ(mouse_event.type, WebInputEvent::MouseDown); |
| 346 EXPECT_EQ(mouse_event.button, WebMouseEvent::ButtonLeft); | 346 EXPECT_EQ(mouse_event.button, WebMouseEvent::ButtonLeft); |
| 347 EXPECT_EQ(mouse_event.clickCount, 1); | 347 EXPECT_EQ(mouse_event.clickCount, 1); |
| 348 position_ = gfx::PointF(mouse_event.x, mouse_event.y); | 348 position_ = gfx::PointF(mouse_event.x, mouse_event.y); |
| 349 start_time_ = base::TimeDelta::FromMilliseconds( | 349 start_time_ = base::TimeDelta::FromMilliseconds( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 372 virtual ~SyntheticGestureControllerTest() {} | 372 virtual ~SyntheticGestureControllerTest() {} |
| 373 | 373 |
| 374 protected: | 374 protected: |
| 375 template<typename MockGestureTarget> | 375 template<typename MockGestureTarget> |
| 376 void CreateControllerAndTarget() { | 376 void CreateControllerAndTarget() { |
| 377 target_ = new MockGestureTarget(); | 377 target_ = new MockGestureTarget(); |
| 378 controller_.reset(new SyntheticGestureController( | 378 controller_.reset(new SyntheticGestureController( |
| 379 scoped_ptr<SyntheticGestureTarget>(target_))); | 379 scoped_ptr<SyntheticGestureTarget>(target_))); |
| 380 } | 380 } |
| 381 | 381 |
| 382 virtual void SetUp() OVERRIDE { | 382 virtual void SetUp() override { |
| 383 start_time_ = base::TimeTicks::Now(); | 383 start_time_ = base::TimeTicks::Now(); |
| 384 time_ = start_time_; | 384 time_ = start_time_; |
| 385 num_success_ = 0; | 385 num_success_ = 0; |
| 386 num_failure_ = 0; | 386 num_failure_ = 0; |
| 387 } | 387 } |
| 388 | 388 |
| 389 virtual void TearDown() OVERRIDE { | 389 virtual void TearDown() override { |
| 390 controller_.reset(); | 390 controller_.reset(); |
| 391 target_ = NULL; | 391 target_ = NULL; |
| 392 time_ = base::TimeTicks(); | 392 time_ = base::TimeTicks(); |
| 393 } | 393 } |
| 394 | 394 |
| 395 void QueueSyntheticGesture(scoped_ptr<SyntheticGesture> gesture) { | 395 void QueueSyntheticGesture(scoped_ptr<SyntheticGesture> gesture) { |
| 396 controller_->QueueSyntheticGesture(gesture.Pass(), | 396 controller_->QueueSyntheticGesture(gesture.Pass(), |
| 397 base::Bind(&SyntheticGestureControllerTest::OnSyntheticGestureCompleted, | 397 base::Bind(&SyntheticGestureControllerTest::OnSyntheticGestureCompleted, |
| 398 base::Unretained(this))); | 398 base::Unretained(this))); |
| 399 } | 399 } |
| (...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 995 EXPECT_TRUE(tap_target->GestureFinished()); | 995 EXPECT_TRUE(tap_target->GestureFinished()); |
| 996 EXPECT_EQ(tap_target->position(), params.position); | 996 EXPECT_EQ(tap_target->position(), params.position); |
| 997 EXPECT_EQ(tap_target->GetDuration().InMilliseconds(), params.duration_ms); | 997 EXPECT_EQ(tap_target->GetDuration().InMilliseconds(), params.duration_ms); |
| 998 EXPECT_GE(GetTotalTime(), | 998 EXPECT_GE(GetTotalTime(), |
| 999 base::TimeDelta::FromMilliseconds(params.duration_ms)); | 999 base::TimeDelta::FromMilliseconds(params.duration_ms)); |
| 1000 } | 1000 } |
| 1001 | 1001 |
| 1002 } // namespace | 1002 } // namespace |
| 1003 | 1003 |
| 1004 } // namespace content | 1004 } // namespace content |
| OLD | NEW |