Index: ui/aura/window_event_dispatcher_unittest.cc |
diff --git a/ui/aura/window_event_dispatcher_unittest.cc b/ui/aura/window_event_dispatcher_unittest.cc |
index 9c3a77ec15ac8d33d605fc36c8a93d740c2faa69..6cd0db922ab940d58a636efe0c12ac85688e8caa 100644 |
--- a/ui/aura/window_event_dispatcher_unittest.cc |
+++ b/ui/aura/window_event_dispatcher_unittest.cc |
@@ -395,14 +395,16 @@ TEST_F(WindowEventDispatcherTest, TouchEventsOutsideBounds) { |
gfx::Point position = root_window()->bounds().origin(); |
position.Offset(-10, -10); |
- ui::TouchEvent press(ui::ET_TOUCH_PRESSED, position, 0, base::TimeDelta()); |
+ ui::TouchEvent press( |
+ ui::ET_TOUCH_PRESSED, position, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&press); |
EXPECT_EQ(1, handler.num_touch_events()); |
position = root_window()->bounds().origin(); |
position.Offset(root_window()->bounds().width() + 10, |
root_window()->bounds().height() + 10); |
- ui::TouchEvent release(ui::ET_TOUCH_RELEASED, position, 0, base::TimeDelta()); |
+ ui::TouchEvent release( |
+ ui::ET_TOUCH_RELEASED, position, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&release); |
EXPECT_EQ(2, handler.num_touch_events()); |
} |
@@ -499,6 +501,14 @@ class EventFilterRecorder : public ui::EventHandler { |
touch_locations_.push_back(event->location()); |
} |
+ bool HasReceivedEvent(ui::EventType type) { |
+ for (size_t i = 0; i < events_.size(); ++i) { |
+ if (events_[i] == type) |
+ return true; |
+ } |
sadrul
2014/06/02 13:31:23
Use std::find instead
tdresser
2014/06/02 14:00:38
Done.
|
+ return false; |
+ } |
+ |
private: |
scoped_ptr<base::RunLoop> run_loop_; |
ui::EventType wait_until_event_; |
@@ -727,8 +737,8 @@ TEST_F(WindowEventDispatcherTest, TouchMovesHeld) { |
// Starting the touch and throwing out the first few events, since the system |
// is going to generate synthetic mouse events that are not relevant to the |
// test. |
- ui::TouchEvent touch_pressed_event(ui::ET_TOUCH_PRESSED, touch_location, |
- 0, base::TimeDelta()); |
+ ui::TouchEvent touch_pressed_event( |
+ ui::ET_TOUCH_PRESSED, touch_location, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&touch_pressed_event); |
recorder.WaitUntilReceivedEvent(ui::ET_GESTURE_SHOW_PRESS); |
recorder.Reset(); |
@@ -736,8 +746,8 @@ TEST_F(WindowEventDispatcherTest, TouchMovesHeld) { |
host()->dispatcher()->HoldPointerMoves(); |
// Check that we don't immediately dispatch the TOUCH_MOVED event. |
- ui::TouchEvent touch_moved_event(ui::ET_TOUCH_MOVED, touch_location, |
- 0, base::TimeDelta()); |
+ ui::TouchEvent touch_moved_event( |
+ ui::ET_TOUCH_MOVED, touch_location, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&touch_moved_event); |
EXPECT_TRUE(recorder.events().empty()); |
@@ -753,13 +763,13 @@ TEST_F(WindowEventDispatcherTest, TouchMovesHeld) { |
// If another touch event occurs then the held touch should be dispatched |
// immediately before it. |
- ui::TouchEvent touch_released_event(ui::ET_TOUCH_RELEASED, touch_location, |
- 0, base::TimeDelta()); |
+ ui::TouchEvent touch_released_event( |
+ ui::ET_TOUCH_RELEASED, touch_location, 0, ui::EventTimeForNow()); |
recorder.Reset(); |
host()->dispatcher()->HoldPointerMoves(); |
DispatchEventUsingWindowDispatcher(&touch_moved_event); |
DispatchEventUsingWindowDispatcher(&touch_released_event); |
- EXPECT_EQ("TOUCH_MOVED TOUCH_RELEASED GESTURE_TAP_CANCEL GESTURE_END", |
+ EXPECT_EQ("TOUCH_MOVED TOUCH_RELEASED GESTURE_TAP GESTURE_END", |
EventTypesToString(recorder.events())); |
recorder.Reset(); |
host()->dispatcher()->ReleasePointerMoves(); |
@@ -1213,14 +1223,13 @@ TEST_F(WindowEventDispatcherTest, RepostTapdownGestureTest) { |
ui::GestureEventDetails details(ui::ET_GESTURE_TAP_DOWN, 0.0f, 0.0f); |
gfx::Point point(10, 10); |
- ui::GestureEvent event( |
- ui::ET_GESTURE_TAP_DOWN, |
- point.x(), |
- point.y(), |
- 0, |
- ui::EventTimeForNow(), |
- details, |
- 0); |
+ ui::GestureEvent event(ui::ET_GESTURE_TAP_DOWN, |
+ point.x(), |
+ point.y(), |
+ 0, |
+ ui::EventTimeForNow(), |
+ details, |
+ 0); |
host()->dispatcher()->RepostEvent(event); |
RunAllPendingInMessageLoop(); |
// TODO(rbyers): Currently disabled - crbug.com/170987 |
@@ -1574,7 +1583,8 @@ TEST_F(WindowEventDispatcherTest, WindowHideCancelsActiveTouches) { |
&delegate, 1, gfx::Rect(0, 0, 100, 100), root_window())); |
gfx::Point position1 = root_window()->bounds().origin(); |
- ui::TouchEvent press(ui::ET_TOUCH_PRESSED, position1, 0, base::TimeDelta()); |
+ ui::TouchEvent press( |
+ ui::ET_TOUCH_PRESSED, position1, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&press); |
EXPECT_EQ("TOUCH_PRESSED GESTURE_BEGIN GESTURE_TAP_DOWN", |
@@ -1582,8 +1592,10 @@ TEST_F(WindowEventDispatcherTest, WindowHideCancelsActiveTouches) { |
window->Hide(); |
- EXPECT_EQ("TOUCH_CANCELLED GESTURE_TAP_CANCEL GESTURE_END", |
- EventTypesToString(recorder.events())); |
+ EXPECT_EQ(ui::ET_TOUCH_CANCELLED, recorder.events()[0]); |
+ EXPECT_TRUE(recorder.HasReceivedEvent(ui::ET_GESTURE_TAP_CANCEL)); |
+ EXPECT_TRUE(recorder.HasReceivedEvent(ui::ET_GESTURE_END)); |
sadrul
2014/06/02 13:31:23
Can we check that the TAP_CANCEL and END are recei
tdresser
2014/06/02 14:00:38
The unified GR at this point will fire the GESTURE
sadrul
2014/06/02 14:28:18
Probably not, but this seems unfortunate. Can you
tdresser
2014/06/02 14:43:47
crbug.com/379772
|
+ EXPECT_EQ(3U, recorder.events().size()); |
root_window()->RemovePreTargetHandler(&recorder); |
} |
@@ -1597,25 +1609,45 @@ TEST_F(WindowEventDispatcherTest, WindowHideCancelsActiveGestures) { |
gfx::Point position1 = root_window()->bounds().origin(); |
gfx::Point position2 = root_window()->bounds().CenterPoint(); |
- ui::TouchEvent press(ui::ET_TOUCH_PRESSED, position1, 0, base::TimeDelta()); |
+ ui::TouchEvent press( |
+ ui::ET_TOUCH_PRESSED, position1, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&press); |
- ui::TouchEvent move(ui::ET_TOUCH_MOVED, position2, 0, base::TimeDelta()); |
+ ui::TouchEvent move( |
+ ui::ET_TOUCH_MOVED, position2, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&move); |
- ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, position1, 1, base::TimeDelta()); |
+ ui::TouchEvent press2( |
+ ui::ET_TOUCH_PRESSED, position1, 1, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&press2); |
- EXPECT_EQ("TOUCH_PRESSED GESTURE_BEGIN GESTURE_TAP_DOWN TOUCH_MOVED " |
- "GESTURE_TAP_CANCEL GESTURE_SCROLL_BEGIN GESTURE_SCROLL_UPDATE " |
- "TOUCH_PRESSED GESTURE_BEGIN GESTURE_PINCH_BEGIN", |
- EventTypesToString(recorder.GetAndResetEvents())); |
+ // TODO(tdresser): once the unified Gesture Recognizer has stuck, remove the |
+ // special casing here. See crbug.com/332418 for details. |
+ std::string expected = |
+ "TOUCH_PRESSED GESTURE_BEGIN GESTURE_TAP_DOWN TOUCH_MOVED " |
+ "GESTURE_TAP_CANCEL GESTURE_SCROLL_BEGIN GESTURE_SCROLL_UPDATE " |
+ "TOUCH_PRESSED GESTURE_BEGIN GESTURE_PINCH_BEGIN"; |
+ |
+ std::string expected_ugr = |
+ "TOUCH_PRESSED GESTURE_BEGIN GESTURE_TAP_DOWN TOUCH_MOVED " |
+ "GESTURE_TAP_CANCEL GESTURE_SCROLL_BEGIN GESTURE_SCROLL_UPDATE " |
+ "TOUCH_PRESSED GESTURE_BEGIN"; |
+ |
+ std::string events_string = EventTypesToString(recorder.GetAndResetEvents()); |
+ EXPECT_TRUE((expected == events_string) || (expected_ugr == events_string)); |
window->Hide(); |
- EXPECT_EQ("TOUCH_CANCELLED GESTURE_PINCH_END GESTURE_END TOUCH_CANCELLED " |
- "GESTURE_SCROLL_END GESTURE_END", |
- EventTypesToString(recorder.events())); |
+ expected = |
+ "TOUCH_CANCELLED GESTURE_PINCH_END GESTURE_END TOUCH_CANCELLED " |
+ "GESTURE_SCROLL_END GESTURE_END"; |
+ expected_ugr = |
+ "TOUCH_CANCELLED GESTURE_SCROLL_END GESTURE_END GESTURE_END " |
+ "TOUCH_CANCELLED"; |
+ |
+ events_string = EventTypesToString(recorder.GetAndResetEvents()); |
+ EXPECT_TRUE((expected == events_string) || (expected_ugr == events_string)); |
+ |
root_window()->RemovePreTargetHandler(&recorder); |
} |
@@ -1635,11 +1667,13 @@ TEST_F(WindowEventDispatcherTest, EndingEventDoesntRetarget) { |
window2->AddPreTargetHandler(&recorder2); |
gfx::Point position = window1->bounds().origin(); |
- ui::TouchEvent press(ui::ET_TOUCH_PRESSED, position, 0, base::TimeDelta()); |
+ ui::TouchEvent press( |
+ ui::ET_TOUCH_PRESSED, position, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&press); |
gfx::Point position2 = window1->bounds().CenterPoint(); |
- ui::TouchEvent move(ui::ET_TOUCH_MOVED, position2, 0, base::TimeDelta()); |
+ ui::TouchEvent move( |
+ ui::ET_TOUCH_MOVED, position2, 0, ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&move); |
window2->SetCapture(); |