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 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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.x, | 214 start_0_ = gfx::PointF(touch_event.touches[0].position); |
215 touch_event.touches[0].position.y); | 215 start_1_ = gfx::PointF(touch_event.touches[1].position); |
216 start_1_ = gfx::PointF(touch_event.touches[1].position.x, | |
217 touch_event.touches[1].position.y); | |
218 last_pointer_distance_ = (start_0_ - start_1_).Length(); | 216 last_pointer_distance_ = (start_0_ - start_1_).Length(); |
219 | 217 |
220 started_ = true; | 218 started_ = true; |
221 } else { | 219 } else { |
222 ASSERT_NE(touch_event.type, WebInputEvent::TouchStart); | 220 ASSERT_NE(touch_event.type, WebInputEvent::TouchStart); |
223 ASSERT_NE(touch_event.type, WebInputEvent::TouchCancel); | 221 ASSERT_NE(touch_event.type, WebInputEvent::TouchCancel); |
224 | 222 |
225 gfx::PointF current_0 = gfx::PointF(touch_event.touches[0].position.x, | 223 gfx::PointF current_0 = gfx::PointF(touch_event.touches[0].position); |
226 touch_event.touches[0].position.y); | 224 gfx::PointF current_1 = gfx::PointF(touch_event.touches[1].position); |
227 gfx::PointF current_1 = gfx::PointF(touch_event.touches[1].position.x, | |
228 touch_event.touches[1].position.y); | |
229 | 225 |
230 total_num_pixels_covered_ = | 226 total_num_pixels_covered_ = |
231 (current_0 - start_0_).Length() + (current_1 - start_1_).Length(); | 227 (current_0 - start_0_).Length() + (current_1 - start_1_).Length(); |
232 float pointer_distance = (current_0 - current_1).Length(); | 228 float pointer_distance = (current_0 - current_1).Length(); |
233 | 229 |
234 if (last_pointer_distance_ != pointer_distance) { | 230 if (last_pointer_distance_ != pointer_distance) { |
235 if (zoom_direction_ == ZOOM_DIRECTION_UNKNOWN) | 231 if (zoom_direction_ == ZOOM_DIRECTION_UNKNOWN) |
236 zoom_direction_ = | 232 zoom_direction_ = |
237 ComputeZoomDirection(last_pointer_distance_, pointer_distance); | 233 ComputeZoomDirection(last_pointer_distance_, pointer_distance); |
238 else | 234 else |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 gfx::PointF position() const { return position_; } | 269 gfx::PointF position() const { return position_; } |
274 base::TimeDelta GetDuration() const { return stop_time_ - start_time_; } | 270 base::TimeDelta GetDuration() const { return stop_time_ - start_time_; } |
275 | 271 |
276 protected: | 272 protected: |
277 enum GestureState { | 273 enum GestureState { |
278 NOT_STARTED, | 274 NOT_STARTED, |
279 STARTED, | 275 STARTED, |
280 FINISHED | 276 FINISHED |
281 }; | 277 }; |
282 | 278 |
283 // TODO(tdresser): clean up accesses to position_ once WebTouchPoint stores | |
284 // its location as a WebFloatPoint. See crbug.com/336807. | |
285 gfx::PointF position_; | 279 gfx::PointF position_; |
286 base::TimeDelta start_time_; | 280 base::TimeDelta start_time_; |
287 base::TimeDelta stop_time_; | 281 base::TimeDelta stop_time_; |
288 GestureState state_; | 282 GestureState state_; |
289 }; | 283 }; |
290 | 284 |
291 class MockSyntheticTapTouchTarget : public MockSyntheticTapGestureTarget { | 285 class MockSyntheticTapTouchTarget : public MockSyntheticTapGestureTarget { |
292 public: | 286 public: |
293 MockSyntheticTapTouchTarget() {} | 287 MockSyntheticTapTouchTarget() {} |
294 virtual ~MockSyntheticTapTouchTarget() {} | 288 virtual ~MockSyntheticTapTouchTarget() {} |
295 | 289 |
296 virtual void DispatchInputEventToPlatform( | 290 virtual void DispatchInputEventToPlatform( |
297 const WebInputEvent& event) OVERRIDE { | 291 const WebInputEvent& event) OVERRIDE { |
298 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); | 292 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); |
299 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); | 293 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); |
300 ASSERT_EQ(touch_event.touchesLength, 1U); | 294 ASSERT_EQ(touch_event.touchesLength, 1U); |
301 | 295 |
302 switch (state_) { | 296 switch (state_) { |
303 case NOT_STARTED: | 297 case NOT_STARTED: |
304 EXPECT_EQ(touch_event.type, WebInputEvent::TouchStart); | 298 EXPECT_EQ(touch_event.type, WebInputEvent::TouchStart); |
305 position_ = gfx::PointF(touch_event.touches[0].position.x, | 299 position_ = gfx::PointF(touch_event.touches[0].position); |
306 touch_event.touches[0].position.y); | |
307 start_time_ = base::TimeDelta::FromMilliseconds( | 300 start_time_ = base::TimeDelta::FromMilliseconds( |
308 static_cast<int64>(touch_event.timeStampSeconds * 1000)); | 301 static_cast<int64>(touch_event.timeStampSeconds * 1000)); |
309 state_ = STARTED; | 302 state_ = STARTED; |
310 break; | 303 break; |
311 case STARTED: | 304 case STARTED: |
312 EXPECT_EQ(touch_event.type, WebInputEvent::TouchEnd); | 305 EXPECT_EQ(touch_event.type, WebInputEvent::TouchEnd); |
313 EXPECT_EQ(position_, gfx::PointF(touch_event.touches[0].position.x, | 306 EXPECT_EQ(position_, gfx::PointF(touch_event.touches[0].position)); |
314 touch_event.touches[0].position.y)); | |
315 stop_time_ = base::TimeDelta::FromMilliseconds( | 307 stop_time_ = base::TimeDelta::FromMilliseconds( |
316 static_cast<int64>(touch_event.timeStampSeconds * 1000)); | 308 static_cast<int64>(touch_event.timeStampSeconds * 1000)); |
317 state_ = FINISHED; | 309 state_ = FINISHED; |
318 break; | 310 break; |
319 case FINISHED: | 311 case FINISHED: |
320 EXPECT_FALSE(true); | 312 EXPECT_FALSE(true); |
321 break; | 313 break; |
322 } | 314 } |
323 } | 315 } |
324 }; | 316 }; |
325 | 317 |
326 class MockSyntheticTapMouseTarget : public MockSyntheticTapGestureTarget { | 318 class MockSyntheticTapMouseTarget : public MockSyntheticTapGestureTarget { |
327 public: | 319 public: |
328 MockSyntheticTapMouseTarget() {} | 320 MockSyntheticTapMouseTarget() {} |
329 virtual ~MockSyntheticTapMouseTarget() {} | 321 virtual ~MockSyntheticTapMouseTarget() {} |
330 | 322 |
331 virtual void DispatchInputEventToPlatform( | 323 virtual void DispatchInputEventToPlatform( |
332 const WebInputEvent& event) OVERRIDE { | 324 const WebInputEvent& event) OVERRIDE { |
333 ASSERT_TRUE(WebInputEvent::isMouseEventType(event.type)); | 325 ASSERT_TRUE(WebInputEvent::isMouseEventType(event.type)); |
334 const WebMouseEvent& mouse_event = static_cast<const WebMouseEvent&>(event); | 326 const WebMouseEvent& mouse_event = static_cast<const WebMouseEvent&>(event); |
335 | 327 |
336 switch (state_) { | 328 switch (state_) { |
337 case NOT_STARTED: | 329 case NOT_STARTED: |
338 EXPECT_EQ(mouse_event.type, WebInputEvent::MouseDown); | 330 EXPECT_EQ(mouse_event.type, WebInputEvent::MouseDown); |
339 EXPECT_EQ(mouse_event.button, WebMouseEvent::ButtonLeft); | 331 EXPECT_EQ(mouse_event.button, WebMouseEvent::ButtonLeft); |
340 EXPECT_EQ(mouse_event.clickCount, 1); | 332 EXPECT_EQ(mouse_event.clickCount, 1); |
341 position_ = gfx::Point(mouse_event.x, mouse_event.y); | 333 position_ = gfx::PointF(mouse_event.x, mouse_event.y); |
342 start_time_ = base::TimeDelta::FromMilliseconds( | 334 start_time_ = base::TimeDelta::FromMilliseconds( |
343 static_cast<int64>(mouse_event.timeStampSeconds * 1000)); | 335 static_cast<int64>(mouse_event.timeStampSeconds * 1000)); |
344 state_ = STARTED; | 336 state_ = STARTED; |
345 break; | 337 break; |
346 case STARTED: | 338 case STARTED: |
347 EXPECT_EQ(mouse_event.type, WebInputEvent::MouseUp); | 339 EXPECT_EQ(mouse_event.type, WebInputEvent::MouseUp); |
348 EXPECT_EQ(mouse_event.button, WebMouseEvent::ButtonLeft); | 340 EXPECT_EQ(mouse_event.button, WebMouseEvent::ButtonLeft); |
349 EXPECT_EQ(mouse_event.clickCount, 1); | 341 EXPECT_EQ(mouse_event.clickCount, 1); |
350 EXPECT_EQ(position_, gfx::Point(mouse_event.x, mouse_event.y)); | 342 EXPECT_EQ(position_, gfx::PointF(mouse_event.x, mouse_event.y)); |
351 stop_time_ = base::TimeDelta::FromMilliseconds( | 343 stop_time_ = base::TimeDelta::FromMilliseconds( |
352 static_cast<int64>(mouse_event.timeStampSeconds * 1000)); | 344 static_cast<int64>(mouse_event.timeStampSeconds * 1000)); |
353 state_ = FINISHED; | 345 state_ = FINISHED; |
354 break; | 346 break; |
355 case FINISHED: | 347 case FINISHED: |
356 EXPECT_FALSE(true); | 348 EXPECT_FALSE(true); |
357 break; | 349 break; |
358 } | 350 } |
359 } | 351 } |
360 }; | 352 }; |
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
957 EXPECT_TRUE(tap_target->GestureFinished()); | 949 EXPECT_TRUE(tap_target->GestureFinished()); |
958 EXPECT_EQ(tap_target->position(), params.position); | 950 EXPECT_EQ(tap_target->position(), params.position); |
959 EXPECT_EQ(tap_target->GetDuration().InMilliseconds(), params.duration_ms); | 951 EXPECT_EQ(tap_target->GetDuration().InMilliseconds(), params.duration_ms); |
960 EXPECT_GE(GetTotalTime(), | 952 EXPECT_GE(GetTotalTime(), |
961 base::TimeDelta::FromMilliseconds(params.duration_ms)); | 953 base::TimeDelta::FromMilliseconds(params.duration_ms)); |
962 } | 954 } |
963 | 955 |
964 } // namespace | 956 } // namespace |
965 | 957 |
966 } // namespace content | 958 } // namespace content |
OLD | NEW |