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

Side by Side Diff: ui/events/gesture_detection/gesture_provider_unittest.cc

Issue 1358263002: [Android] Support double-tap selection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix aura Created 5 years, 2 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 unified diff | Download patch
OLDNEW
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 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 259 }
260 260
261 void SetShowPressAndLongPressTimeout(base::TimeDelta showpress_timeout, 261 void SetShowPressAndLongPressTimeout(base::TimeDelta showpress_timeout,
262 base::TimeDelta longpress_timeout) { 262 base::TimeDelta longpress_timeout) {
263 GestureProvider::Config config = GetDefaultConfig(); 263 GestureProvider::Config config = GetDefaultConfig();
264 config.gesture_detector_config.showpress_timeout = showpress_timeout; 264 config.gesture_detector_config.showpress_timeout = showpress_timeout;
265 config.gesture_detector_config.longpress_timeout = longpress_timeout; 265 config.gesture_detector_config.longpress_timeout = longpress_timeout;
266 SetUpWithConfig(config); 266 SetUpWithConfig(config);
267 } 267 }
268 268
269 void SetSingleTapRepeatLength(int repeat_length) {
270 GestureProvider::Config config = GetDefaultConfig();
271 config.gesture_detector_config.single_tap_repeat_length = repeat_length;
272 SetUpWithConfig(config);
273 }
274
269 bool HasDownEvent() const { return gesture_provider_->current_down_event(); } 275 bool HasDownEvent() const { return gesture_provider_->current_down_event(); }
270 276
271 protected: 277 protected:
272 void CheckScrollEventSequenceForEndActionType( 278 void CheckScrollEventSequenceForEndActionType(
273 MotionEvent::Action end_action_type) { 279 MotionEvent::Action end_action_type) {
274 base::TimeTicks event_time = base::TimeTicks::Now(); 280 base::TimeTicks event_time = base::TimeTicks::Now();
275 const float scroll_to_x = kFakeCoordX + 100; 281 const float scroll_to_x = kFakeCoordX + 100;
276 const float scroll_to_y = kFakeCoordY + 100; 282 const float scroll_to_y = kFakeCoordY + 100;
277 int motion_event_id = 3; 283 int motion_event_id = 3;
278 int motion_event_flags = EF_SHIFT_DOWN | EF_CAPS_LOCK_DOWN; 284 int motion_event_flags = EF_SHIFT_DOWN | EF_CAPS_LOCK_DOWN;
(...skipping 2237 matching lines...) Expand 10 before | Expand all | Expand 10 after
2516 event.SetTouchMajor(30); 2522 event.SetTouchMajor(30);
2517 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 2523 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2518 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType()); 2524 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
2519 2525
2520 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count()); 2526 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count());
2521 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); 2527 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points());
2522 EXPECT_EQ(gfx::RectF(0, 0, 20, 20), 2528 EXPECT_EQ(gfx::RectF(0, 0, 20, 20),
2523 GetMostRecentGestureEvent().details.bounding_box_f()); 2529 GetMostRecentGestureEvent().details.bounding_box_f());
2524 } 2530 }
2525 2531
2532 TEST_F(GestureProviderTest, SingleTapRepeat) {
2533 SetSingleTapRepeatLength(3);
tdresser 2015/09/23 14:10:46 Do we have adequate coverage of when the repeat le
jdduke (slow) 2015/09/23 19:56:04 Probably not, I'll add a test.
2534
2535 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(false);
2536
2537 base::TimeTicks event_time = base::TimeTicks::Now();
2538
2539 MockMotionEvent event =
2540 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN);
2541 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2542 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP);
2543 gesture_provider_->OnTouchEvent(event);
2544 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
2545 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count());
2546
2547 // A secondary tap within the tap repeat period should increment
2548 // the tap count.
2549 event_time += GetValidDoubleTapDelay();
2550 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN);
2551 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2552 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP);
2553 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2554 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
2555 EXPECT_EQ(2, GetMostRecentGestureEvent().details.tap_count());
2556
2557 // A secondary tap within the tap repeat location threshold should increment
2558 // the tap count.
2559 event_time += GetValidDoubleTapDelay();
2560 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN, kFakeCoordX,
2561 kFakeCoordY + GetTouchSlop() / 2);
2562 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2563 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP);
2564 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2565 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
2566 EXPECT_EQ(3, GetMostRecentGestureEvent().details.tap_count());
2567
2568 // The tap count should reset after hitting the repeat length.
2569 event_time += GetValidDoubleTapDelay();
2570 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN);
2571 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2572 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP);
2573 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2574 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
2575 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count());
2576
2577 // If double-tap is enabled, the tap repeat count should always be 1.
2578 gesture_provider_->SetDoubleTapSupportForPlatformEnabled(true);
2579 event_time += GetValidDoubleTapDelay();
2580 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN);
2581 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2582 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP);
2583 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2584 RunTasksAndWait(GetDoubleTapTimeout());
2585 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
2586 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count());
2587
2588 event_time += GetValidDoubleTapDelay();
2589 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN);
2590 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2591 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP);
2592 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2593 RunTasksAndWait(GetDoubleTapTimeout());
2594 EXPECT_EQ(ET_GESTURE_TAP, GetMostRecentGestureEventType());
2595 EXPECT_EQ(1, GetMostRecentGestureEvent().details.tap_count());
2596 }
2597
2526 } // namespace ui 2598 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698