Chromium Code Reviews| Index: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| index 69cc3ad877245729c87083aefde410efd4eac8d7..3b44b0c086c269e552cd25ecd721e210f4f0a240 100644 |
| --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| @@ -445,9 +445,17 @@ class RenderWidgetHostViewAuraTest : public testing::Test { |
| void SendInputEventACK(WebInputEvent::Type type, |
| InputEventAckState ack_result) { |
| - InputHostMsg_HandleInputEvent_ACK_Params ack; |
| - ack.type = type; |
| - ack.state = ack_result; |
| + DCHECK(!WebInputEvent::isTouchEventType(type)); |
| + InputEventAck ack(type, ack_result); |
| + InputHostMsg_HandleInputEvent_ACK response(0, ack); |
| + widget_host_->OnMessageReceived(response); |
| + } |
| + |
| + void SendTouchEventACK(WebInputEvent::Type type, |
| + InputEventAckState ack_result, |
| + uint32 event_id) { |
| + DCHECK(WebInputEvent::isTouchEventType(type)); |
| + InputEventAck ack(type, ack_result, event_id); |
| InputHostMsg_HandleInputEvent_ACK response(0, ack); |
| widget_host_->OnMessageReceived(response); |
| } |
| @@ -458,7 +466,8 @@ class RenderWidgetHostViewAuraTest : public testing::Test { |
| return count; |
| } |
| - void AckLastSentInputEventIfNecessary(InputEventAckState ack_result) { |
| + void AckLastSentInputEventIfNecessary(InputEventAckState ack_result, |
| + uint32 event_id) { |
| if (!sink_->message_count()) |
| return; |
| @@ -468,10 +477,10 @@ class RenderWidgetHostViewAuraTest : public testing::Test { |
| return; |
| } |
| - if (WebInputEventTraits::IgnoresAckDisposition(*get<0>(params))) |
| + if (!WebInputEventTraits::WillReceiveAckFromRenderer(*get<0>(params))) |
| return; |
| - SendInputEventACK(get<0>(params)->type, ack_result); |
| + SendTouchEventACK(get<0>(params)->type, ack_result, event_id); |
|
jdduke (slow)
2015/05/14 21:00:06
Since we're already extracting the event from the
|
| } |
| protected: |
| @@ -698,25 +707,24 @@ class RenderWidgetHostViewAuraOverscrollTest |
| return overscroll_delegate_.get(); |
| } |
| - void SendTouchEvent() { |
| + uint32 SendTouchEvent() { |
| + uint32 touch_event_id = touch_event_.uniqueTouchEventId; |
| widget_host_->ForwardTouchEventWithLatencyInfo(touch_event_, |
| ui::LatencyInfo()); |
| touch_event_.ResetPoints(); |
| + return touch_event_id; |
| } |
| void PressTouchPoint(int x, int y) { |
| touch_event_.PressPoint(x, y); |
| - SendTouchEvent(); |
| } |
| void MoveTouchPoint(int index, int x, int y) { |
| touch_event_.MovePoint(index, x, y); |
| - SendTouchEvent(); |
| } |
| void ReleaseTouchPoint(int index) { |
| touch_event_.ReleasePoint(index); |
| - SendTouchEvent(); |
| } |
| SyntheticWebTouchEvent touch_event_; |
| @@ -1104,9 +1112,9 @@ TEST_F(RenderWidgetHostViewAuraTest, TouchEventState) { |
| widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false)); |
| // Ack'ing the outstanding event should flush the pending touch queue. |
| - InputHostMsg_HandleInputEvent_ACK_Params ack; |
| - ack.type = blink::WebInputEvent::TouchStart; |
| - ack.state = INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS; |
| + InputEventAck ack(blink::WebInputEvent::TouchStart, |
| + INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, |
| + press.unique_event_id()); |
| widget_host_->OnMessageReceived(InputHostMsg_HandleInputEvent_ACK(0, ack)); |
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| @@ -1138,8 +1146,9 @@ TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) { |
| ui::EventTimeForNow()); |
| view_->OnTouchEvent(&press0); |
| - SendInputEventACK(blink::WebInputEvent::TouchStart, |
| - INPUT_EVENT_ACK_STATE_CONSUMED); |
| + SendTouchEventACK(blink::WebInputEvent::TouchStart, |
| + INPUT_EVENT_ACK_STATE_CONSUMED, |
| + press0.unique_event_id()); |
| EXPECT_EQ(blink::WebInputEvent::TouchStart, view_->touch_event_->type); |
| EXPECT_EQ(1U, view_->touch_event_->touchesLength); |
| EXPECT_EQ(1U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); |
| @@ -1148,8 +1157,9 @@ TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) { |
| ui::EventTimeForNow()); |
| view_->OnTouchEvent(&move0); |
| - SendInputEventACK(blink::WebInputEvent::TouchMove, |
| - INPUT_EVENT_ACK_STATE_CONSUMED); |
| + SendTouchEventACK(blink::WebInputEvent::TouchMove, |
| + INPUT_EVENT_ACK_STATE_CONSUMED, |
| + move0.unique_event_id()); |
| EXPECT_EQ(blink::WebInputEvent::TouchMove, view_->touch_event_->type); |
| EXPECT_EQ(1U, view_->touch_event_->touchesLength); |
| EXPECT_EQ(1U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); |
| @@ -1160,8 +1170,9 @@ TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) { |
| ui::EventTimeForNow()); |
| view_->OnTouchEvent(&press1); |
| - SendInputEventACK(blink::WebInputEvent::TouchStart, |
| - INPUT_EVENT_ACK_STATE_CONSUMED); |
| + SendTouchEventACK(blink::WebInputEvent::TouchStart, |
| + INPUT_EVENT_ACK_STATE_CONSUMED, |
| + press1.unique_event_id()); |
| EXPECT_EQ(blink::WebInputEvent::TouchStart, view_->touch_event_->type); |
| EXPECT_EQ(2U, view_->touch_event_->touchesLength); |
| EXPECT_EQ(1U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); |
| @@ -1172,8 +1183,9 @@ TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) { |
| ui::EventTimeForNow()); |
| view_->OnTouchEvent(&move1); |
| - SendInputEventACK(blink::WebInputEvent::TouchMove, |
| - INPUT_EVENT_ACK_STATE_CONSUMED); |
| + SendTouchEventACK(blink::WebInputEvent::TouchMove, |
| + INPUT_EVENT_ACK_STATE_CONSUMED, |
| + move1.unique_event_id()); |
| EXPECT_EQ(blink::WebInputEvent::TouchMove, view_->touch_event_->type); |
| EXPECT_EQ(2U, view_->touch_event_->touchesLength); |
| EXPECT_EQ(1U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); |
| @@ -1184,8 +1196,9 @@ TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) { |
| ui::EventTimeForNow()); |
| view_->OnTouchEvent(&move2); |
| - SendInputEventACK(blink::WebInputEvent::TouchMove, |
| - INPUT_EVENT_ACK_STATE_CONSUMED); |
| + SendTouchEventACK(blink::WebInputEvent::TouchMove, |
| + INPUT_EVENT_ACK_STATE_CONSUMED, |
| + move2.unique_event_id()); |
| EXPECT_EQ(blink::WebInputEvent::TouchMove, view_->touch_event_->type); |
| EXPECT_EQ(2U, view_->touch_event_->touchesLength); |
| EXPECT_EQ(1U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); |
| @@ -2864,14 +2877,16 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) { |
| // The test sends an intermingled sequence of touch and gesture events. |
| PressTouchPoint(0, 1); |
| - SendInputEventACK(WebInputEvent::TouchStart, |
| - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + uint32 touch_press_event_id1 = SendTouchEvent(); |
| + SendTouchEventACK(WebInputEvent::TouchStart, |
| + INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_press_event_id1); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| MoveTouchPoint(0, 20, 5); |
| + uint32 touch_move_event_id1 = SendTouchEvent(); |
| + SendTouchEventACK(WebInputEvent::TouchMove, |
| + INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id1); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| - SendInputEventACK(WebInputEvent::TouchMove, |
| - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
| EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
| @@ -2890,7 +2905,9 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) { |
| // started yet. Note that touch events sent during the scroll period may |
| // not require an ack (having been marked uncancelable). |
| MoveTouchPoint(0, 65, 10); |
| - AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + uint32 touch_move_event_id2 = SendTouchEvent(); |
| + AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| + touch_move_event_id2); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| SimulateGestureScrollUpdateEvent(45, 0, 0); |
| @@ -2906,12 +2923,14 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) { |
| // Send another touch event. The page should get the touch-move event, even |
| // though overscroll has started. |
| MoveTouchPoint(0, 55, 5); |
| + uint32 touch_move_event_id3 = SendTouchEvent(); |
| EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
| EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
| EXPECT_EQ(65.f, overscroll_delta_x()); |
| EXPECT_EQ(15.f, overscroll_delegate()->delta_x()); |
| EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); |
| - AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| + touch_move_event_id3); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| SimulateGestureScrollUpdateEvent(-10, 0, 0); |
| @@ -2923,7 +2942,9 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) { |
| EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); |
| PressTouchPoint(255, 5); |
| - AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + uint32 touch_press_event_id2 = SendTouchEvent(); |
| + AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| + touch_press_event_id2); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| SimulateGestureScrollUpdateEvent(200, 0, 0); |
| @@ -2937,10 +2958,14 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) { |
| // The touch-end/cancel event should always reach the renderer if the page has |
| // touch handlers. |
| ReleaseTouchPoint(1); |
| - AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + uint32 touch_release_event_id1 = SendTouchEvent(); |
| + AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| + touch_release_event_id1); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| ReleaseTouchPoint(0); |
| - AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + uint32 touch_release_event_id2 = SendTouchEvent(); |
| + AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| + touch_release_event_id2); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| SimulateGestureEvent(blink::WebInputEvent::GestureScrollEnd, |
| @@ -3305,7 +3330,8 @@ TEST_F(RenderWidgetHostViewAuraTest, |
| view_->OnTouchEvent(&press); |
| EXPECT_TRUE(press.synchronous_handling_disabled()); |
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| - AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_CONSUMED); |
| + AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_CONSUMED, |
| + press.unique_event_id()); |
| // Invalid move is handled synchronously, but is consumed. It should not |
| // be forwarded to the renderer. |
| @@ -3396,14 +3422,14 @@ TEST_F(RenderWidgetHostViewAuraTest, CorrectNumberOfAcksAreDispatched) { |
| ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0, ui::EventTimeForNow()); |
| view_->OnTouchEvent(&press1); |
| - SendInputEventACK(blink::WebInputEvent::TouchStart, |
| - INPUT_EVENT_ACK_STATE_CONSUMED); |
| + SendTouchEventACK(blink::WebInputEvent::TouchStart, |
| + INPUT_EVENT_ACK_STATE_CONSUMED, press1.unique_event_id()); |
| ui::TouchEvent press2( |
| ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), 1, ui::EventTimeForNow()); |
| view_->OnTouchEvent(&press2); |
| - SendInputEventACK(blink::WebInputEvent::TouchStart, |
| - INPUT_EVENT_ACK_STATE_CONSUMED); |
| + SendTouchEventACK(blink::WebInputEvent::TouchStart, |
| + INPUT_EVENT_ACK_STATE_CONSUMED, press2.unique_event_id()); |
| EXPECT_EQ(2U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); |
| } |