Index: chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_unit_test.mm |
diff --git a/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_unit_test.mm b/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_unit_test.mm |
index 6d714ae2d772ee1837b866b1c5779e9d81634f37..a9c9f95980773f071b4c35fb72779ea8e6b5b0d7 100644 |
--- a/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_unit_test.mm |
+++ b/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_unit_test.mm |
@@ -283,6 +283,7 @@ TEST_F(MacHistorySwiperTest, SwipeDiagonal) { |
startGestureInMiddle(); |
moveGestureInMiddle(); |
+ moveGestureInMiddle(); |
moveGestureAtPoint(makePoint(0.6, 0.59)); |
endGestureAtPoint(makePoint(0.6, 0.59)); |
@@ -372,8 +373,12 @@ TEST_F(MacHistorySwiperTest, NoSwipe) { |
startGestureInMiddle(); |
moveGestureInMiddle(); |
- moveGestureAtPoint(makePoint(0.5, 0.5)); |
- endGestureAtPoint(makePoint(0.5, 0.5)); |
+ |
+ // Starts the gesture. |
+ moveGestureAtPoint(makePoint(0.44, 0.44)); |
+ |
+ // No movement. |
+ endGestureAtPoint(makePoint(0.44, 0.44)); |
EXPECT_EQ(begin_count_, 1); |
EXPECT_EQ(end_count_, 1); |
@@ -405,3 +410,44 @@ TEST_F(MacHistorySwiperTest, TouchEventAfterGestureFinishes) { |
NSEvent* beganEvent = scrollWheelEventWithPhase(NSEventPhaseBegan); |
EXPECT_FALSE([historySwiper_ handleEvent:beganEvent]); |
} |
+ |
+// The history swipe logic should be resilient against the timing of the |
+// different callbacks that result from scrolling. |
+TEST_F(MacHistorySwiperTest, SwipeRightEventOrdering) { |
+ // These tests require 10.7+ APIs. |
+ if (![NSEvent |
+ respondsToSelector:@selector(isSwipeTrackingFromScrollEventsEnabled)]) |
+ return; |
+ |
+ // Touches began. |
+ NSEvent* scrollEvent = scrollWheelEventWithPhase(NSEventPhaseBegan); |
+ NSEvent* event = mockEventWithPoint(makePoint(0.5, 0.5), NSEventTypeGesture); |
+ [historySwiper_ touchesBeganWithEvent:event]; |
+ [historySwiper_ handleEvent:scrollEvent]; |
+ rendererACKForBeganEvent(); |
+ |
+ // Touches moved. |
+ moveGestureAtPoint(makePoint(0.5, 0.5)); |
+ EXPECT_EQ(begin_count_, 0); |
Lei Zhang
2014/09/25 21:12:37
nit: EXPECT_EQ(expected, actual);
No need to fix
|
+ EXPECT_EQ(end_count_, 0); |
+ |
+ // Touches moved. |
+ moveGestureAtPoint(makePoint(0.52, 0.5)); |
+ |
+ // Begin gesture callback is delayed. |
+ [historySwiper_ beginGestureWithEvent:event]; |
+ |
+ // Touches moved. |
+ moveGestureAtPoint(makePoint(0.52, 0.5)); |
+ |
+ // Complete the rest of the gesture. |
+ moveGestureAtPoint(makePoint(0.60, 0.5)); |
+ scrollEvent = scrollWheelEventWithPhase(NSEventPhaseChanged); |
+ [historySwiper_ handleEvent:scrollEvent]; |
+ endGestureAtPoint(makePoint(0.70, 0.5)); |
+ |
+ EXPECT_EQ(begin_count_, 1); |
+ EXPECT_EQ(end_count_, 1); |
+ EXPECT_TRUE(navigated_right_); |
+ EXPECT_FALSE(navigated_left_); |
+} |