Index: ui/aura/gestures/gesture_recognizer_unittest.cc |
diff --git a/ui/aura/gestures/gesture_recognizer_unittest.cc b/ui/aura/gestures/gesture_recognizer_unittest.cc |
index 872fdede73b3a46f0bbaded3c096556a68cd98fc..e7a7d62bbe3ebe41728312b61d894861c8b02c4e 100644 |
--- a/ui/aura/gestures/gesture_recognizer_unittest.cc |
+++ b/ui/aura/gestures/gesture_recognizer_unittest.cc |
@@ -349,6 +349,9 @@ class QueueTouchEventDelegate : public GestureEventConsumeDelegate { |
virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE { |
if (queue_events_) { |
+ if (event->IsTouchEvent()) |
+ dispatcher_->OnForwardingTouchEvent(event, window_); |
+ |
queue_.push(new ui::TouchEvent(*event, window_, window_)); |
event->StopPropagation(); |
} |
@@ -4426,6 +4429,44 @@ TEST_P(GestureRecognizerTest, GestureEventLongPressDeletingWindow) { |
EXPECT_EQ(NULL, window); |
} |
+TEST_P(GestureRecognizerTest, EagerGestureDetection) { |
+ if (!UsingUnifiedGR()) |
+ return; |
+ |
+ scoped_ptr<QueueTouchEventDelegate> delegate( |
+ new QueueTouchEventDelegate(host()->dispatcher())); |
+ TimedEvents tes; |
+ const int kTouchId = 2; |
+ gfx::Rect bounds(100, 200, 100, 100); |
+ scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
+ delegate.get(), -1234, bounds, root_window())); |
+ delegate->set_window(window.get()); |
+ |
+ delegate->Reset(); |
+ ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
+ kTouchId, tes.Now()); |
+ DispatchEventUsingWindowDispatcher(&press); |
+ ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
+ kTouchId, tes.LeapForward(50)); |
+ DispatchEventUsingWindowDispatcher(&release); |
+ |
+ delegate->Reset(); |
+ delegate->ReceivedAck(); |
+ EXPECT_TRUE(delegate->tap_down()); |
+ |
+ delegate->Reset(); |
+ base::MessageLoop::current()->PostDelayedTask( |
+ FROM_HERE, |
+ base::MessageLoop::QuitClosure(), |
+ base::TimeDelta::FromSecondsD( |
+ ui::GestureConfiguration::long_press_time_in_seconds() * 1.1)); |
+ base::MessageLoop::current()->Run(); |
+ |
+ delegate->ReceivedAck(); |
+ EXPECT_TRUE(delegate->tap()); |
+ EXPECT_FALSE(delegate->long_press()); |
+} |
+ |
INSTANTIATE_TEST_CASE_P(GestureRecognizer, |
GestureRecognizerTest, |
::testing::Bool()); |