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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 997283002: Coalesce async touch move events until the ack back from render (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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
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 aba2b57322ef07d0fe0960cff38befe6ac9c07b5..bc8c1856769d7c238a12bef340e007f42f59ca97 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
@@ -443,9 +443,16 @@ 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, uint32 event_id,
+ InputEventAckState ack_result) {
+ DCHECK(WebInputEvent::isTouchEventType(type));
+ InputEventAck ack(type, ack_result, event_id);
InputHostMsg_HandleInputEvent_ACK response(0, ack);
widget_host_->OnMessageReceived(response);
}
@@ -466,10 +473,23 @@ 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, LastSentEventID(), ack_result);
+ }
+
+ uint32 LastSentEventID() {
+ uint32 last_sent_event_id = 0;
jdduke (slow) 2015/05/12 16:07:11 Again, I don't think we should use this logic. Let
lanwei 2015/05/13 21:01:53 Done.
+ size_t count = sink_->message_count();
+ DCHECK_GT(count, 0U);
+ for (size_t i = 0; i < count; ++i) {
+ const WebInputEvent* input_event =
+ GetInputEventFromMessage(*sink_->GetMessageAt(i));
+ last_sent_event_id =
+ WebInputEventTraits::GetUniqueTouchEventId(*input_event);
+ }
+ return last_sent_event_id;
}
protected:
@@ -1102,9 +1122,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());
@@ -2780,14 +2800,14 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) {
// The test sends an intermingled sequence of touch and gesture events.
PressTouchPoint(0, 1);
jdduke (slow) 2015/05/12 16:07:11 Looks like only 2 methods use the |PressTouchPoint
lanwei 2015/05/13 21:01:53 Done.
- SendInputEventACK(WebInputEvent::TouchStart,
+ SendTouchEventACK(WebInputEvent::TouchStart, LastSentEventID(),
INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
MoveTouchPoint(0, 20, 5);
- EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
- SendInputEventACK(WebInputEvent::TouchMove,
+ SendTouchEventACK(WebInputEvent::TouchMove, LastSentEventID(),
INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
@@ -3312,13 +3332,13 @@ TEST_F(RenderWidgetHostViewAuraTest, CorrectNumberOfAcksAreDispatched) {
ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0, ui::EventTimeForNow());
view_->OnTouchEvent(&press1);
- SendInputEventACK(blink::WebInputEvent::TouchStart,
+ SendTouchEventACK(blink::WebInputEvent::TouchStart, press1.unique_event_id(),
INPUT_EVENT_ACK_STATE_CONSUMED);
ui::TouchEvent press2(
ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), 1, ui::EventTimeForNow());
view_->OnTouchEvent(&press2);
- SendInputEventACK(blink::WebInputEvent::TouchStart,
+ SendTouchEventACK(blink::WebInputEvent::TouchStart, press2.unique_event_id(),
INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(2U, view_->dispatcher_->processed_touch_event_count());

Powered by Google App Engine
This is Rietveld 408576698