OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/logging.h" | 6 #include "base/logging.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 } | 250 } |
251 | 251 |
252 void SetMinMaxGestureBoundsLength(float min_gesture_bound_length, | 252 void SetMinMaxGestureBoundsLength(float min_gesture_bound_length, |
253 float max_gesture_bound_length) { | 253 float max_gesture_bound_length) { |
254 GestureProvider::Config config = GetDefaultConfig(); | 254 GestureProvider::Config config = GetDefaultConfig(); |
255 config.min_gesture_bounds_length = min_gesture_bound_length; | 255 config.min_gesture_bounds_length = min_gesture_bound_length; |
256 config.max_gesture_bounds_length = max_gesture_bound_length; | 256 config.max_gesture_bounds_length = max_gesture_bound_length; |
257 SetUpWithConfig(config); | 257 SetUpWithConfig(config); |
258 } | 258 } |
259 | 259 |
| 260 void SetShowPressAndLongPressTimeout(base::TimeDelta showpress_timeout, |
| 261 base::TimeDelta longpress_timeout) { |
| 262 GestureProvider::Config config = GetDefaultConfig(); |
| 263 config.gesture_detector_config.showpress_timeout = showpress_timeout; |
| 264 config.gesture_detector_config.longpress_timeout = longpress_timeout; |
| 265 SetUpWithConfig(config); |
| 266 } |
| 267 |
260 bool HasDownEvent() const { return gesture_provider_->current_down_event(); } | 268 bool HasDownEvent() const { return gesture_provider_->current_down_event(); } |
261 | 269 |
262 protected: | 270 protected: |
263 void CheckScrollEventSequenceForEndActionType( | 271 void CheckScrollEventSequenceForEndActionType( |
264 MotionEvent::Action end_action_type) { | 272 MotionEvent::Action end_action_type) { |
265 base::TimeTicks event_time = base::TimeTicks::Now(); | 273 base::TimeTicks event_time = base::TimeTicks::Now(); |
266 const float scroll_to_x = kFakeCoordX + 100; | 274 const float scroll_to_x = kFakeCoordX + 100; |
267 const float scroll_to_y = kFakeCoordY + 100; | 275 const float scroll_to_y = kFakeCoordY + 100; |
268 int motion_event_id = 0; | 276 int motion_event_id = 0; |
269 | 277 |
(...skipping 2121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2391 EXPECT_EQ(0.f, GetMostRecentGestureEvent().details.bounding_box_f().height()); | 2399 EXPECT_EQ(0.f, GetMostRecentGestureEvent().details.bounding_box_f().height()); |
2392 | 2400 |
2393 event = | 2401 event = |
2394 ObtainMotionEvent(event_time + kOneMicrosecond, MotionEvent::ACTION_UP); | 2402 ObtainMotionEvent(event_time + kOneMicrosecond, MotionEvent::ACTION_UP); |
2395 event.SetTouchMajor(1); | 2403 event.SetTouchMajor(1); |
2396 event.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); | 2404 event.SetToolType(0, MotionEvent::TOOL_TYPE_STYLUS); |
2397 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 2405 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
2398 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); | 2406 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); |
2399 EXPECT_EQ(MotionEvent::TOOL_TYPE_STYLUS, | 2407 EXPECT_EQ(MotionEvent::TOOL_TYPE_STYLUS, |
2400 GetMostRecentGestureEvent().primary_tool_type); | 2408 GetMostRecentGestureEvent().primary_tool_type); |
2401 EXPECT_EQ(1.f, GetMostRecentGestureEvent().details.bounding_box_f().width()); | 2409 EXPECT_EQ(0, GetMostRecentGestureEvent().details.bounding_box_f().width()); |
2402 EXPECT_EQ(1.f, GetMostRecentGestureEvent().details.bounding_box_f().height()); | 2410 EXPECT_EQ(0, GetMostRecentGestureEvent().details.bounding_box_f().height()); |
2403 | 2411 |
2404 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); | 2412 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); |
2405 event.SetTouchMajor(2.f * kMaxGestureBoundsLength); | 2413 event.SetTouchMajor(2.f * kMaxGestureBoundsLength); |
2406 event.SetToolType(0, MotionEvent::TOOL_TYPE_MOUSE); | 2414 event.SetToolType(0, MotionEvent::TOOL_TYPE_MOUSE); |
2407 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 2415 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
2408 EXPECT_EQ(MotionEvent::TOOL_TYPE_MOUSE, | 2416 EXPECT_EQ(MotionEvent::TOOL_TYPE_MOUSE, |
2409 GetMostRecentGestureEvent().primary_tool_type); | 2417 GetMostRecentGestureEvent().primary_tool_type); |
2410 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); | 2418 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
2411 EXPECT_EQ(2.f * kMaxGestureBoundsLength, | 2419 EXPECT_EQ(2.f * kMaxGestureBoundsLength, |
2412 GetMostRecentGestureEvent().details.bounding_box_f().width()); | 2420 GetMostRecentGestureEvent().details.bounding_box_f().width()); |
2413 EXPECT_EQ(2.f * kMaxGestureBoundsLength, | 2421 EXPECT_EQ(2.f * kMaxGestureBoundsLength, |
2414 GetMostRecentGestureEvent().details.bounding_box_f().height()); | 2422 GetMostRecentGestureEvent().details.bounding_box_f().height()); |
2415 | 2423 |
2416 event = | 2424 event = |
2417 ObtainMotionEvent(event_time + kOneMicrosecond, MotionEvent::ACTION_UP); | 2425 ObtainMotionEvent(event_time + kOneMicrosecond, MotionEvent::ACTION_UP); |
2418 event.SetTouchMajor(2.f * kMaxGestureBoundsLength); | 2426 event.SetTouchMajor(2.f * kMaxGestureBoundsLength); |
2419 event.SetToolType(0, MotionEvent::TOOL_TYPE_ERASER); | 2427 event.SetToolType(0, MotionEvent::TOOL_TYPE_ERASER); |
2420 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); | 2428 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
2421 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); | 2429 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); |
2422 EXPECT_EQ(MotionEvent::TOOL_TYPE_ERASER, | 2430 EXPECT_EQ(MotionEvent::TOOL_TYPE_ERASER, |
2423 GetMostRecentGestureEvent().primary_tool_type); | 2431 GetMostRecentGestureEvent().primary_tool_type); |
2424 EXPECT_EQ(2.f * kMaxGestureBoundsLength, | 2432 EXPECT_EQ(2.f * kMaxGestureBoundsLength, |
2425 GetMostRecentGestureEvent().details.bounding_box_f().width()); | 2433 GetMostRecentGestureEvent().details.bounding_box_f().width()); |
2426 EXPECT_EQ(2.f * kMaxGestureBoundsLength, | 2434 EXPECT_EQ(2.f * kMaxGestureBoundsLength, |
2427 GetMostRecentGestureEvent().details.bounding_box_f().height()); | 2435 GetMostRecentGestureEvent().details.bounding_box_f().height()); |
2428 } | 2436 } |
2429 | 2437 |
| 2438 // Test the bounding box for show press and tap gestures. |
| 2439 TEST_F(GestureProviderTest, BoundingBoxForShowPressAndTapGesture) { |
| 2440 base::TimeTicks event_time = base::TimeTicks::Now(); |
| 2441 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(false); |
| 2442 base::TimeDelta showpress_timeout = kOneMicrosecond; |
| 2443 base::TimeDelta longpress_timeout = kOneSecond; |
| 2444 SetShowPressAndLongPressTimeout(showpress_timeout, longpress_timeout); |
| 2445 |
| 2446 MockMotionEvent event = |
| 2447 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN, 10, 10); |
| 2448 event.SetTouchMajor(10); |
| 2449 |
| 2450 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
| 2451 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); |
| 2452 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
| 2453 EXPECT_EQ(gfx::RectF(5, 5, 10, 10), |
| 2454 GetMostRecentGestureEvent().details.bounding_box()); |
| 2455 |
| 2456 event = ObtainMotionEvent( |
| 2457 event_time + kOneMicrosecond, MotionEvent::ACTION_MOVE, 11, 9); |
| 2458 event.SetTouchMajor(20); |
| 2459 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
| 2460 event = ObtainMotionEvent( |
| 2461 event_time + kOneMicrosecond, MotionEvent::ACTION_MOVE, 8, 11); |
| 2462 event.SetTouchMajor(10); |
| 2463 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
| 2464 RunTasksAndWait(showpress_timeout + kOneMicrosecond); |
| 2465 EXPECT_EQ(ET_GESTURE_SHOW_PRESS, GetMostRecentGestureEventType()); |
| 2466 EXPECT_EQ(gfx::RectF(0, 0, 20, 20), |
| 2467 GetMostRecentGestureEvent().details.bounding_box()); |
| 2468 |
| 2469 event = |
| 2470 ObtainMotionEvent(event_time + kOneMicrosecond, MotionEvent::ACTION_UP); |
| 2471 event.SetTouchMajor(30); |
| 2472 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); |
| 2473 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); |
| 2474 |
| 2475 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); |
| 2476 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); |
| 2477 EXPECT_EQ(gfx::RectF(0, 0, 20, 20), |
| 2478 GetMostRecentGestureEvent().details.bounding_box()); |
| 2479 } |
| 2480 |
2430 } // namespace ui | 2481 } // namespace ui |
OLD | NEW |