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

Unified Diff: content/browser/renderer_host/input/input_router_impl_unittest.cc

Issue 2740613002: Reland fix unit tests to enable them testing with the rAF aligned touch input. (Closed)
Patch Set: Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/input/input_router_impl_unittest.cc
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc
index 5fb59d75813ec82fa8fe04a4d20d0d317386b193..2cff6c1bf32606f0582874931e9e70024b92aaa4 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -150,7 +150,7 @@ bool EventListIsSubset(const ScopedVector<ui::TouchEvent>& subset,
class InputRouterImplTest : public testing::Test {
public:
- InputRouterImplTest(bool raf_aligned_touch = false) {
+ InputRouterImplTest(bool raf_aligned_touch = true) {
if (raf_aligned_touch) {
feature_list_.InitFromCommandLine(
features::kRafAlignedTouchInputEvents.name, "");
@@ -376,9 +376,9 @@ class InputRouterImplTest : public testing::Test {
std::unique_ptr<TestBrowserContext> browser_context_;
};
-class InputRouterImplRafAlignedTouchEnabledTest : public InputRouterImplTest {
+class InputRouterImplRafAlignedTouchDisabledTest : public InputRouterImplTest {
public:
- InputRouterImplRafAlignedTouchEnabledTest() : InputRouterImplTest(true) {}
+ InputRouterImplRafAlignedTouchDisabledTest() : InputRouterImplTest(false) {}
};
TEST_F(InputRouterImplTest, CoalescesRangeSelection) {
@@ -806,7 +806,7 @@ TEST_F(InputRouterImplTest, CoalescesWheelEvents) {
}
// Tests that touch-events are queued properly.
-TEST_F(InputRouterImplTest, TouchEventQueue) {
+TEST_F(InputRouterImplRafAlignedTouchDisabledTest, TouchEventQueue) {
OnHasTouchEventHandlers(true);
PressTouchPoint(1, 1);
@@ -840,6 +840,41 @@ TEST_F(InputRouterImplTest, TouchEventQueue) {
EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
}
+// Tests that touch-events are sent properly.
+TEST_F(InputRouterImplTest, TouchEventQueue) {
+ OnHasTouchEventHandlers(true);
+
+ PressTouchPoint(1, 1);
+ uint32_t touch_press_event_id = SendTouchEvent();
+ EXPECT_TRUE(client_->GetAndResetFilterEventCalled());
+ EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
+ EXPECT_FALSE(TouchEventQueueEmpty());
+
+ // The second touch should be sent right away.
+ MoveTouchPoint(0, 5, 5);
+ uint32_t touch_move_event_id = SendTouchEvent();
+ EXPECT_TRUE(client_->GetAndResetFilterEventCalled());
+ EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
+ EXPECT_FALSE(TouchEventQueueEmpty());
+
+ // Receive an ACK for the first touch-event.
+ SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED,
+ touch_press_event_id);
+ EXPECT_FALSE(TouchEventQueueEmpty());
+ EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
+ EXPECT_EQ(WebInputEvent::TouchStart,
+ ack_handler_->acked_touch_event().event.type());
+ EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
+
+ SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED,
+ touch_move_event_id);
+ EXPECT_TRUE(TouchEventQueueEmpty());
+ EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
+ EXPECT_EQ(WebInputEvent::TouchMove,
+ ack_handler_->acked_touch_event().event.type());
+ EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
+}
+
// Tests that the touch-queue is emptied after a page stops listening for touch
// events and the outstanding ack is received.
TEST_F(InputRouterImplTest, TouchEventQueueFlush) {
@@ -1061,7 +1096,10 @@ TEST_F(InputRouterImplTest, GestureTypesIgnoringAck) {
WebInputEvent::Type type = eventTypes[i];
if (ShouldBlockEventStream(GetEventWithType(type))) {
SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen);
- EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
+ if (type == WebInputEvent::GestureScrollUpdate)
+ EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
+ else
+ EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
EXPECT_EQ(1, client_->in_flight_event_count());
EXPECT_TRUE(HasPendingEvents());
@@ -1144,7 +1182,7 @@ TEST_F(InputRouterImplTest, GestureTypesIgnoringAckInterleaved) {
SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
blink::WebGestureDeviceTouchscreen);
- ASSERT_EQ(1U, GetSentMessageCountAndResetSink());
+ ASSERT_EQ(2U, GetSentMessageCountAndResetSink());
EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
EXPECT_EQ(1, client_->in_flight_event_count());
@@ -1396,7 +1434,7 @@ TEST_F(InputRouterImplTest, TouchActionResetBeforeEventReachesRenderer) {
// Ensure touch action is still none, as the next touch start hasn't been
// acked yet. ScrollBegin and ScrollEnd don't require acks.
- EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
+ EXPECT_EQ(6U, GetSentMessageCountAndResetSink());
SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
blink::WebGestureDeviceTouchscreen);
EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
@@ -1414,7 +1452,7 @@ TEST_F(InputRouterImplTest, TouchActionResetBeforeEventReachesRenderer) {
touch_press_event_id2);
SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED,
touch_move_event_id2);
- EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
+ EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
blink::WebGestureDeviceTouchscreen);
EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
@@ -1454,7 +1492,7 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHasNoConsumer) {
// Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require
// acks.
- EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
+ EXPECT_EQ(6U, GetSentMessageCountAndResetSink());
SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
blink::WebGestureDeviceTouchscreen);
EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
@@ -1469,7 +1507,7 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHasNoConsumer) {
touch_press_event_id2);
// Ensure touch action has been set to auto, as the touch had no consumer.
- EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
+ EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
blink::WebGestureDeviceTouchscreen);
EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
@@ -1490,15 +1528,15 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) {
OnSetTouchAction(TOUCH_ACTION_NONE);
ReleaseTouchPoint(0);
uint32_t touch_release_event_id = SendTouchEvent();
- EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
+ EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
// Ensure we have touch-action:none, suppressing scroll events.
SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED,
touch_press_event_id);
- EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
+ EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
SendTouchEventACK(WebInputEvent::TouchMove,
INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id);
- EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
+ EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
blink::WebGestureDeviceTouchscreen);
EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
@@ -1524,8 +1562,7 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) {
}
// Tests that async touch-moves are ack'd from the browser side.
-TEST_F(InputRouterImplRafAlignedTouchEnabledTest,
- AsyncTouchMoveAckedImmediately) {
+TEST_F(InputRouterImplTest, AsyncTouchMoveAckedImmediately) {
OnHasTouchEventHandlers(true);
PressTouchPoint(1, 1);
@@ -1556,8 +1593,7 @@ TEST_F(InputRouterImplRafAlignedTouchEnabledTest,
// Test that the double tap gesture depends on the touch action of the first
// tap.
-TEST_F(InputRouterImplRafAlignedTouchEnabledTest,
- DoubleTapGestureDependsOnFirstTap) {
+TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) {
OnHasTouchEventHandlers(true);
// Sequence 1.
@@ -1624,7 +1660,8 @@ TEST_F(InputRouterImplRafAlignedTouchEnabledTest,
// Test that the double tap gesture depends on the touch action of the first
// tap.
-TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) {
+TEST_F(InputRouterImplRafAlignedTouchDisabledTest,
+ DoubleTapGestureDependsOnFirstTap) {
OnHasTouchEventHandlers(true);
// Sequence 1.
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698