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

Side by Side Diff: content/browser/renderer_host/input/gesture_event_queue_unittest.cc

Issue 304793003: use enum to specify deviceSource for fling animation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased for parallel breaking changes Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/time/time.h" 11 #include "base/time/time.h"
12 #include "content/browser/renderer_host/input/gesture_event_queue.h" 12 #include "content/browser/renderer_host/input/gesture_event_queue.h"
13 #include "content/browser/renderer_host/input/touchpad_tap_suppression_controlle r.h" 13 #include "content/browser/renderer_host/input/touchpad_tap_suppression_controlle r.h"
14 #include "content/common/input/input_event_ack_state.h" 14 #include "content/common/input/input_event_ack_state.h"
15 #include "content/common/input/synthetic_web_input_event_builders.h" 15 #include "content/common/input/synthetic_web_input_event_builders.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "third_party/WebKit/public/web/WebInputEvent.h" 17 #include "third_party/WebKit/public/web/WebInputEvent.h"
18 18
19 using base::TimeDelta; 19 using base::TimeDelta;
20 using blink::WebGestureDevice;
20 using blink::WebGestureEvent; 21 using blink::WebGestureEvent;
21 using blink::WebInputEvent; 22 using blink::WebInputEvent;
22 23
23 namespace content { 24 namespace content {
24 25
25 class GestureEventQueueTest : public testing::Test, 26 class GestureEventQueueTest : public testing::Test,
26 public GestureEventQueueClient, 27 public GestureEventQueueClient,
27 public TouchpadTapSuppressionControllerClient { 28 public TouchpadTapSuppressionControllerClient {
28 public: 29 public:
29 GestureEventQueueTest() 30 GestureEventQueueTest()
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 GestureEventWithLatencyInfo gesture_with_latency(gesture, 82 GestureEventWithLatencyInfo gesture_with_latency(gesture,
82 ui::LatencyInfo()); 83 ui::LatencyInfo());
83 if (queue()->ShouldForward(gesture_with_latency)) { 84 if (queue()->ShouldForward(gesture_with_latency)) {
84 SendGestureEventImmediately(gesture_with_latency); 85 SendGestureEventImmediately(gesture_with_latency);
85 return true; 86 return true;
86 } 87 }
87 return false; 88 return false;
88 } 89 }
89 90
90 void SimulateGestureEvent(WebInputEvent::Type type, 91 void SimulateGestureEvent(WebInputEvent::Type type,
91 WebGestureEvent::SourceDevice sourceDevice) { 92 WebGestureDevice sourceDevice) {
92 SimulateGestureEvent( 93 SimulateGestureEvent(
93 SyntheticWebGestureEventBuilder::Build(type, sourceDevice)); 94 SyntheticWebGestureEventBuilder::Build(type, sourceDevice));
94 } 95 }
95 96
96 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { 97 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) {
97 SimulateGestureEvent( 98 SimulateGestureEvent(
98 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers)); 99 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers));
99 } 100 }
100 101
101 void SimulateGesturePinchUpdateEvent(float scale, 102 void SimulateGesturePinchUpdateEvent(float scale,
102 float anchorX, 103 float anchorX,
103 float anchorY, 104 float anchorY,
104 int modifiers) { 105 int modifiers) {
105 SimulateGestureEvent(SyntheticWebGestureEventBuilder::BuildPinchUpdate( 106 SimulateGestureEvent(SyntheticWebGestureEventBuilder::BuildPinchUpdate(
106 scale, anchorX, anchorY, modifiers, WebGestureEvent::Touchscreen)); 107 scale,
108 anchorX,
109 anchorY,
110 modifiers,
111 blink::WebGestureDeviceTouchscreen));
107 } 112 }
108 113
109 void SimulateGestureFlingStartEvent( 114 void SimulateGestureFlingStartEvent(float velocityX,
110 float velocityX, 115 float velocityY,
111 float velocityY, 116 WebGestureDevice sourceDevice) {
112 WebGestureEvent::SourceDevice sourceDevice) {
113 SimulateGestureEvent( 117 SimulateGestureEvent(
114 SyntheticWebGestureEventBuilder::BuildFling(velocityX, 118 SyntheticWebGestureEventBuilder::BuildFling(velocityX,
115 velocityY, 119 velocityY,
116 sourceDevice)); 120 sourceDevice));
117 } 121 }
118 122
119 void SendInputEventACK(WebInputEvent::Type type, 123 void SendInputEventACK(WebInputEvent::Type type,
120 InputEventAckState ack) { 124 InputEventAckState ack) {
121 queue()->ProcessGestureAck(ack, type, ui::LatencyInfo()); 125 queue()->ProcessGestureAck(ack, type, ui::LatencyInfo());
122 } 126 }
(...skipping 16 matching lines...) Expand all
139 143
140 const WebGestureEvent& last_acked_event() const { 144 const WebGestureEvent& last_acked_event() const {
141 return last_acked_event_; 145 return last_acked_event_;
142 } 146 }
143 147
144 void set_synchronous_ack(InputEventAckState ack_result) { 148 void set_synchronous_ack(InputEventAckState ack_result) {
145 sync_ack_result_.reset(new InputEventAckState(ack_result)); 149 sync_ack_result_.reset(new InputEventAckState(ack_result));
146 } 150 }
147 151
148 void set_sync_followup_event(WebInputEvent::Type type, 152 void set_sync_followup_event(WebInputEvent::Type type,
149 WebGestureEvent::SourceDevice sourceDevice) { 153 WebGestureDevice sourceDevice) {
150 sync_followup_event_.reset(new WebGestureEvent( 154 sync_followup_event_.reset(new WebGestureEvent(
151 SyntheticWebGestureEventBuilder::Build(type, sourceDevice))); 155 SyntheticWebGestureEventBuilder::Build(type, sourceDevice)));
152 } 156 }
153 157
154 unsigned GestureEventQueueSize() { 158 unsigned GestureEventQueueSize() {
155 return queue()->coalesced_gesture_events_.size(); 159 return queue()->coalesced_gesture_events_.size();
156 } 160 }
157 161
158 WebGestureEvent GestureEventSecondFromLastQueueEvent() { 162 WebGestureEvent GestureEventSecondFromLastQueueEvent() {
159 return queue()->coalesced_gesture_events_.at( 163 return queue()->coalesced_gesture_events_.at(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 WebGestureEvent last_acked_event_; 199 WebGestureEvent last_acked_event_;
196 scoped_ptr<InputEventAckState> sync_ack_result_; 200 scoped_ptr<InputEventAckState> sync_ack_result_;
197 scoped_ptr<WebGestureEvent> sync_followup_event_; 201 scoped_ptr<WebGestureEvent> sync_followup_event_;
198 base::MessageLoopForUI message_loop_; 202 base::MessageLoopForUI message_loop_;
199 }; 203 };
200 204
201 #if GTEST_HAS_PARAM_TEST 205 #if GTEST_HAS_PARAM_TEST
202 // This is for tests that are to be run for all source devices. 206 // This is for tests that are to be run for all source devices.
203 class GestureEventQueueWithSourceTest 207 class GestureEventQueueWithSourceTest
204 : public GestureEventQueueTest, 208 : public GestureEventQueueTest,
205 public testing::WithParamInterface<WebGestureEvent::SourceDevice> { 209 public testing::WithParamInterface<WebGestureDevice> {};
206 };
207 #endif // GTEST_HAS_PARAM_TEST 210 #endif // GTEST_HAS_PARAM_TEST
208 211
209 TEST_F(GestureEventQueueTest, CoalescesScrollGestureEvents) { 212 TEST_F(GestureEventQueueTest, CoalescesScrollGestureEvents) {
210 // Test coalescing of only GestureScrollUpdate events. 213 // Test coalescing of only GestureScrollUpdate events.
211 // Simulate gesture events. 214 // Simulate gesture events.
212 215
213 // Sent. 216 // Sent.
214 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 217 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
215 WebGestureEvent::Touchscreen); 218 blink::WebGestureDeviceTouchscreen);
216 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 219 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
217 220
218 // Enqueued. 221 // Enqueued.
219 SimulateGestureScrollUpdateEvent(8, -5, 0); 222 SimulateGestureScrollUpdateEvent(8, -5, 0);
220 223
221 // Make sure that the queue contains what we think it should. 224 // Make sure that the queue contains what we think it should.
222 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 225 WebGestureEvent merged_event = GestureEventLastQueueEvent();
223 EXPECT_EQ(2U, GestureEventQueueSize()); 226 EXPECT_EQ(2U, GestureEventQueueSize());
224 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 227 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
225 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 228 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
226 229
227 // Coalesced. 230 // Coalesced.
228 SimulateGestureScrollUpdateEvent(8, -6, 0); 231 SimulateGestureScrollUpdateEvent(8, -6, 0);
229 232
230 // Check that coalescing updated the correct values. 233 // Check that coalescing updated the correct values.
231 merged_event = GestureEventLastQueueEvent(); 234 merged_event = GestureEventLastQueueEvent();
232 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 235 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
233 EXPECT_EQ(0, merged_event.modifiers); 236 EXPECT_EQ(0, merged_event.modifiers);
234 EXPECT_EQ(16, merged_event.data.scrollUpdate.deltaX); 237 EXPECT_EQ(16, merged_event.data.scrollUpdate.deltaX);
235 EXPECT_EQ(-11, merged_event.data.scrollUpdate.deltaY); 238 EXPECT_EQ(-11, merged_event.data.scrollUpdate.deltaY);
236 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 239 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
237 240
238 // Enqueued. 241 // Enqueued.
239 SimulateGestureScrollUpdateEvent(8, -7, 1); 242 SimulateGestureScrollUpdateEvent(8, -7, 1);
240 243
241 // Check that we didn't wrongly coalesce. 244 // Check that we didn't wrongly coalesce.
242 merged_event = GestureEventLastQueueEvent(); 245 merged_event = GestureEventLastQueueEvent();
243 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 246 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
244 EXPECT_EQ(1, merged_event.modifiers); 247 EXPECT_EQ(1, merged_event.modifiers);
245 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 248 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
246 249
247 // Different. 250 // Different.
248 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 251 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
249 WebGestureEvent::Touchscreen); 252 blink::WebGestureDeviceTouchscreen);
250 253
251 // Check that only the first event was sent. 254 // Check that only the first event was sent.
252 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 255 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
253 256
254 // Check that the ACK sends the second message. 257 // Check that the ACK sends the second message.
255 SendInputEventACK(WebInputEvent::GestureScrollBegin, 258 SendInputEventACK(WebInputEvent::GestureScrollBegin,
256 INPUT_EVENT_ACK_STATE_CONSUMED); 259 INPUT_EVENT_ACK_STATE_CONSUMED);
257 RunUntilIdle(); 260 RunUntilIdle();
258 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); 261 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount());
259 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 262 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
(...skipping 20 matching lines...) Expand all
280 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 283 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
281 } 284 }
282 285
283 TEST_F(GestureEventQueueTest, 286 TEST_F(GestureEventQueueTest,
284 DoesNotCoalesceScrollGestureEventsFromDifferentDevices) { 287 DoesNotCoalesceScrollGestureEventsFromDifferentDevices) {
285 // Test that GestureScrollUpdate events from Touchscreen and Touchpad do not 288 // Test that GestureScrollUpdate events from Touchscreen and Touchpad do not
286 // coalesce. 289 // coalesce.
287 290
288 // Sent. 291 // Sent.
289 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 292 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
290 WebGestureEvent::Touchscreen); 293 blink::WebGestureDeviceTouchscreen);
291 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 294 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
292 295
293 // Enqueued. 296 // Enqueued.
294 SimulateGestureScrollUpdateEvent(8, -5, 0); 297 SimulateGestureScrollUpdateEvent(8, -5, 0);
295 298
296 // Make sure that the queue contains what we think it should. 299 // Make sure that the queue contains what we think it should.
297 EXPECT_EQ(2U, GestureEventQueueSize()); 300 EXPECT_EQ(2U, GestureEventQueueSize());
298 EXPECT_EQ(WebGestureEvent::Touchscreen, 301 EXPECT_EQ(blink::WebGestureDeviceTouchscreen,
299 GestureEventLastQueueEvent().sourceDevice); 302 GestureEventLastQueueEvent().sourceDevice);
300 303
301 // Coalesced. 304 // Coalesced.
302 SimulateGestureScrollUpdateEvent(8, -6, 0); 305 SimulateGestureScrollUpdateEvent(8, -6, 0);
303 EXPECT_EQ(2U, GestureEventQueueSize()); 306 EXPECT_EQ(2U, GestureEventQueueSize());
304 EXPECT_EQ(WebGestureEvent::Touchscreen, 307 EXPECT_EQ(blink::WebGestureDeviceTouchscreen,
305 GestureEventLastQueueEvent().sourceDevice); 308 GestureEventLastQueueEvent().sourceDevice);
306 309
307 // Enqueued. 310 // Enqueued.
308 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 311 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
309 WebGestureEvent::Touchpad); 312 blink::WebGestureDeviceTouchpad);
310 EXPECT_EQ(3U, GestureEventQueueSize()); 313 EXPECT_EQ(3U, GestureEventQueueSize());
311 EXPECT_EQ(WebGestureEvent::Touchpad, 314 EXPECT_EQ(blink::WebGestureDeviceTouchpad,
312 GestureEventLastQueueEvent().sourceDevice); 315 GestureEventLastQueueEvent().sourceDevice);
313 316
314 // Coalesced. 317 // Coalesced.
315 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 318 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
316 WebGestureEvent::Touchpad); 319 blink::WebGestureDeviceTouchpad);
317 EXPECT_EQ(3U, GestureEventQueueSize()); 320 EXPECT_EQ(3U, GestureEventQueueSize());
318 EXPECT_EQ(WebGestureEvent::Touchpad, 321 EXPECT_EQ(blink::WebGestureDeviceTouchpad,
319 GestureEventLastQueueEvent().sourceDevice); 322 GestureEventLastQueueEvent().sourceDevice);
320 323
321 // Enqueued. 324 // Enqueued.
322 SimulateGestureScrollUpdateEvent(8, -7, 0); 325 SimulateGestureScrollUpdateEvent(8, -7, 0);
323 EXPECT_EQ(4U, GestureEventQueueSize()); 326 EXPECT_EQ(4U, GestureEventQueueSize());
324 EXPECT_EQ(WebGestureEvent::Touchscreen, 327 EXPECT_EQ(blink::WebGestureDeviceTouchscreen,
325 GestureEventLastQueueEvent().sourceDevice); 328 GestureEventLastQueueEvent().sourceDevice);
326 } 329 }
327 330
328 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEvents) { 331 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEvents) {
329 // Test coalescing of only GestureScrollUpdate events. 332 // Test coalescing of only GestureScrollUpdate events.
330 // Simulate gesture events. 333 // Simulate gesture events.
331 334
332 // Sent. 335 // Sent.
333 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 336 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
334 WebGestureEvent::Touchscreen); 337 blink::WebGestureDeviceTouchscreen);
335 338
336 // Sent. 339 // Sent.
337 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 340 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
338 WebGestureEvent::Touchscreen); 341 blink::WebGestureDeviceTouchscreen);
339 342
340 // Enqueued. 343 // Enqueued.
341 SimulateGestureScrollUpdateEvent(8, -4, 1); 344 SimulateGestureScrollUpdateEvent(8, -4, 1);
342 345
343 // Make sure that the queue contains what we think it should. 346 // Make sure that the queue contains what we think it should.
344 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 347 WebGestureEvent merged_event = GestureEventLastQueueEvent();
345 EXPECT_EQ(3U, GestureEventQueueSize()); 348 EXPECT_EQ(3U, GestureEventQueueSize());
346 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 349 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
347 350
348 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 351 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring
349 // from a point that is not the origin should still give us the right scroll. 352 // from a point that is not the origin should still give us the right scroll.
350 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1); 353 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1);
351 EXPECT_EQ(4U, GestureEventQueueSize()); 354 EXPECT_EQ(4U, GestureEventQueueSize());
352 merged_event = GestureEventLastQueueEvent(); 355 merged_event = GestureEventLastQueueEvent();
353 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 356 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
354 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 357 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
355 EXPECT_EQ(1, merged_event.modifiers); 358 EXPECT_EQ(1, merged_event.modifiers);
356 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 359 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
357 merged_event = GestureEventSecondFromLastQueueEvent(); 360 merged_event = GestureEventSecondFromLastQueueEvent();
358 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 361 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
359 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX); 362 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX);
360 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY); 363 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY);
361 EXPECT_EQ(1, merged_event.modifiers); 364 EXPECT_EQ(1, merged_event.modifiers);
362 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 365 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
363 366
364 // Enqueued. 367 // Enqueued.
365 SimulateGestureScrollUpdateEvent(6, -3, 1); 368 SimulateGestureScrollUpdateEvent(6, -3, 1);
366 369
367 // Check whether coalesced correctly. 370 // Check whether coalesced correctly.
368 EXPECT_EQ(4U, GestureEventQueueSize()); 371 EXPECT_EQ(4U, GestureEventQueueSize());
369 merged_event = GestureEventLastQueueEvent(); 372 merged_event = GestureEventLastQueueEvent();
370 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 373 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
371 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 374 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
372 EXPECT_EQ(1, merged_event.modifiers); 375 EXPECT_EQ(1, merged_event.modifiers);
373 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 376 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
374 merged_event = GestureEventSecondFromLastQueueEvent(); 377 merged_event = GestureEventSecondFromLastQueueEvent();
375 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 378 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
376 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 379 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
377 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 380 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
378 EXPECT_EQ(1, merged_event.modifiers); 381 EXPECT_EQ(1, merged_event.modifiers);
379 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 382 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
380 383
381 // Enqueued. 384 // Enqueued.
382 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); 385 SimulateGesturePinchUpdateEvent(2, 60, 60, 1);
383 386
384 // Check whether coalesced correctly. 387 // Check whether coalesced correctly.
385 EXPECT_EQ(4U, GestureEventQueueSize()); 388 EXPECT_EQ(4U, GestureEventQueueSize());
386 merged_event = GestureEventLastQueueEvent(); 389 merged_event = GestureEventLastQueueEvent();
387 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 390 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
388 EXPECT_EQ(3, merged_event.data.pinchUpdate.scale); 391 EXPECT_EQ(3, merged_event.data.pinchUpdate.scale);
389 EXPECT_EQ(1, merged_event.modifiers); 392 EXPECT_EQ(1, merged_event.modifiers);
390 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 393 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
391 merged_event = GestureEventSecondFromLastQueueEvent(); 394 merged_event = GestureEventSecondFromLastQueueEvent();
392 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 395 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
393 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 396 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
394 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 397 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
395 EXPECT_EQ(1, merged_event.modifiers); 398 EXPECT_EQ(1, merged_event.modifiers);
396 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 399 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
397 400
398 // Enqueued. 401 // Enqueued.
399 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); 402 SimulateGesturePinchUpdateEvent(2, 60, 60, 1);
400 403
401 // Check whether coalesced correctly. 404 // Check whether coalesced correctly.
402 EXPECT_EQ(4U, GestureEventQueueSize()); 405 EXPECT_EQ(4U, GestureEventQueueSize());
403 merged_event = GestureEventLastQueueEvent(); 406 merged_event = GestureEventLastQueueEvent();
404 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 407 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
405 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 408 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
406 EXPECT_EQ(1, merged_event.modifiers); 409 EXPECT_EQ(1, merged_event.modifiers);
407 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 410 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
408 merged_event = GestureEventSecondFromLastQueueEvent(); 411 merged_event = GestureEventSecondFromLastQueueEvent();
409 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 412 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
410 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 413 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
411 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 414 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
412 EXPECT_EQ(1, merged_event.modifiers); 415 EXPECT_EQ(1, merged_event.modifiers);
413 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 416 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
414 417
415 // Check that only the first event was sent. 418 // Check that only the first event was sent.
416 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 419 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
417 420
418 // Check that the ACK sends the second message. 421 // Check that the ACK sends the second message.
419 SendInputEventACK(WebInputEvent::GestureScrollBegin, 422 SendInputEventACK(WebInputEvent::GestureScrollBegin,
420 INPUT_EVENT_ACK_STATE_CONSUMED); 423 INPUT_EVENT_ACK_STATE_CONSUMED);
421 RunUntilIdle(); 424 RunUntilIdle();
422 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 425 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
423 426
424 // Enqueued. 427 // Enqueued.
425 SimulateGestureScrollUpdateEvent(6, -6, 1); 428 SimulateGestureScrollUpdateEvent(6, -6, 1);
426 429
427 // Check whether coalesced correctly. 430 // Check whether coalesced correctly.
428 EXPECT_EQ(3U, GestureEventQueueSize()); 431 EXPECT_EQ(3U, GestureEventQueueSize());
429 merged_event = GestureEventLastQueueEvent(); 432 merged_event = GestureEventLastQueueEvent();
430 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 433 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
431 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 434 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
432 EXPECT_EQ(1, merged_event.modifiers); 435 EXPECT_EQ(1, merged_event.modifiers);
433 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 436 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
434 merged_event = GestureEventSecondFromLastQueueEvent(); 437 merged_event = GestureEventSecondFromLastQueueEvent();
435 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 438 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
436 EXPECT_EQ(13, merged_event.data.scrollUpdate.deltaX); 439 EXPECT_EQ(13, merged_event.data.scrollUpdate.deltaX);
437 EXPECT_EQ(-7, merged_event.data.scrollUpdate.deltaY); 440 EXPECT_EQ(-7, merged_event.data.scrollUpdate.deltaY);
438 EXPECT_EQ(1, merged_event.modifiers); 441 EXPECT_EQ(1, merged_event.modifiers);
439 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 442 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
440 443
441 // At this point ACKs shouldn't be getting ignored. 444 // At this point ACKs shouldn't be getting ignored.
442 EXPECT_FALSE(WillIgnoreNextACK()); 445 EXPECT_FALSE(WillIgnoreNextACK());
443 446
444 // Check that the ACK sends both scroll and pinch updates. 447 // Check that the ACK sends both scroll and pinch updates.
445 SendInputEventACK(WebInputEvent::GesturePinchBegin, 448 SendInputEventACK(WebInputEvent::GesturePinchBegin,
446 INPUT_EVENT_ACK_STATE_CONSUMED); 449 INPUT_EVENT_ACK_STATE_CONSUMED);
447 RunUntilIdle(); 450 RunUntilIdle();
448 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 451 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
449 452
450 // The next ACK should be getting ignored. 453 // The next ACK should be getting ignored.
451 EXPECT_TRUE(WillIgnoreNextACK()); 454 EXPECT_TRUE(WillIgnoreNextACK());
452 455
453 // Enqueued. 456 // Enqueued.
454 SimulateGestureScrollUpdateEvent(1, -1, 1); 457 SimulateGestureScrollUpdateEvent(1, -1, 1);
455 458
456 // Check whether coalesced correctly. 459 // Check whether coalesced correctly.
457 EXPECT_EQ(3U, GestureEventQueueSize()); 460 EXPECT_EQ(3U, GestureEventQueueSize());
458 merged_event = GestureEventLastQueueEvent(); 461 merged_event = GestureEventLastQueueEvent();
459 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 462 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
460 EXPECT_EQ(1, merged_event.data.scrollUpdate.deltaX); 463 EXPECT_EQ(1, merged_event.data.scrollUpdate.deltaX);
461 EXPECT_EQ(-1, merged_event.data.scrollUpdate.deltaY); 464 EXPECT_EQ(-1, merged_event.data.scrollUpdate.deltaY);
462 EXPECT_EQ(1, merged_event.modifiers); 465 EXPECT_EQ(1, merged_event.modifiers);
463 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 466 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
464 merged_event = GestureEventSecondFromLastQueueEvent(); 467 merged_event = GestureEventSecondFromLastQueueEvent();
465 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 468 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
466 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 469 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
467 EXPECT_EQ(1, merged_event.modifiers); 470 EXPECT_EQ(1, merged_event.modifiers);
468 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 471 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
469 472
470 // Enqueued. 473 // Enqueued.
471 SimulateGestureScrollUpdateEvent(2, -2, 1); 474 SimulateGestureScrollUpdateEvent(2, -2, 1);
472 475
473 // Coalescing scrolls should still work. 476 // Coalescing scrolls should still work.
474 EXPECT_EQ(3U, GestureEventQueueSize()); 477 EXPECT_EQ(3U, GestureEventQueueSize());
475 merged_event = GestureEventLastQueueEvent(); 478 merged_event = GestureEventLastQueueEvent();
476 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 479 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
477 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); 480 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX);
478 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); 481 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY);
479 EXPECT_EQ(1, merged_event.modifiers); 482 EXPECT_EQ(1, merged_event.modifiers);
480 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 483 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
481 merged_event = GestureEventSecondFromLastQueueEvent(); 484 merged_event = GestureEventSecondFromLastQueueEvent();
482 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 485 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
483 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 486 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
484 EXPECT_EQ(1, merged_event.modifiers); 487 EXPECT_EQ(1, merged_event.modifiers);
485 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 488 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
486 489
487 // Enqueued. 490 // Enqueued.
488 SimulateGesturePinchUpdateEvent(0.5, 60, 60, 1); 491 SimulateGesturePinchUpdateEvent(0.5, 60, 60, 1);
489 492
490 // Check whether coalesced correctly. 493 // Check whether coalesced correctly.
491 EXPECT_EQ(4U, GestureEventQueueSize()); 494 EXPECT_EQ(4U, GestureEventQueueSize());
492 merged_event = GestureEventLastQueueEvent(); 495 merged_event = GestureEventLastQueueEvent();
493 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 496 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
494 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); 497 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale);
495 EXPECT_EQ(1, merged_event.modifiers); 498 EXPECT_EQ(1, merged_event.modifiers);
496 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 499 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
497 merged_event = GestureEventSecondFromLastQueueEvent(); 500 merged_event = GestureEventSecondFromLastQueueEvent();
498 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 501 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
499 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); 502 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX);
500 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); 503 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY);
501 EXPECT_EQ(1, merged_event.modifiers); 504 EXPECT_EQ(1, merged_event.modifiers);
502 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 505 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
503 506
504 // Check that the ACK gets ignored. 507 // Check that the ACK gets ignored.
505 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 508 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
506 INPUT_EVENT_ACK_STATE_CONSUMED); 509 INPUT_EVENT_ACK_STATE_CONSUMED);
507 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 510 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type);
508 RunUntilIdle(); 511 RunUntilIdle();
509 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 512 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
510 // The flag should have been flipped back to false. 513 // The flag should have been flipped back to false.
511 EXPECT_FALSE(WillIgnoreNextACK()); 514 EXPECT_FALSE(WillIgnoreNextACK());
512 515
513 // Enqueued. 516 // Enqueued.
514 SimulateGestureScrollUpdateEvent(2, -2, 2); 517 SimulateGestureScrollUpdateEvent(2, -2, 2);
515 518
516 // Shouldn't coalesce with different modifiers. 519 // Shouldn't coalesce with different modifiers.
517 EXPECT_EQ(4U, GestureEventQueueSize()); 520 EXPECT_EQ(4U, GestureEventQueueSize());
518 merged_event = GestureEventLastQueueEvent(); 521 merged_event = GestureEventLastQueueEvent();
519 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 522 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
520 EXPECT_EQ(2, merged_event.data.scrollUpdate.deltaX); 523 EXPECT_EQ(2, merged_event.data.scrollUpdate.deltaX);
521 EXPECT_EQ(-2, merged_event.data.scrollUpdate.deltaY); 524 EXPECT_EQ(-2, merged_event.data.scrollUpdate.deltaY);
522 EXPECT_EQ(2, merged_event.modifiers); 525 EXPECT_EQ(2, merged_event.modifiers);
523 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 526 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
524 merged_event = GestureEventSecondFromLastQueueEvent(); 527 merged_event = GestureEventSecondFromLastQueueEvent();
525 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 528 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type);
526 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); 529 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale);
527 EXPECT_EQ(1, merged_event.modifiers); 530 EXPECT_EQ(1, merged_event.modifiers);
528 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); 531 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
529 532
530 // Check that the ACK sends the next scroll pinch pair. 533 // Check that the ACK sends the next scroll pinch pair.
531 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 534 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
532 INPUT_EVENT_ACK_STATE_CONSUMED); 535 INPUT_EVENT_ACK_STATE_CONSUMED);
533 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 536 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type);
534 RunUntilIdle(); 537 RunUntilIdle();
535 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 538 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
536 539
537 // Check that the ACK sends the second message. 540 // Check that the ACK sends the second message.
538 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 541 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
(...skipping 14 matching lines...) Expand all
553 INPUT_EVENT_ACK_STATE_CONSUMED); 556 INPUT_EVENT_ACK_STATE_CONSUMED);
554 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 557 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type);
555 RunUntilIdle(); 558 RunUntilIdle();
556 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 559 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
557 EXPECT_EQ(0U, GestureEventQueueSize()); 560 EXPECT_EQ(0U, GestureEventQueueSize());
558 } 561 }
559 562
560 TEST_F(GestureEventQueueTest, CoalescesMultiplePinchEventSequences) { 563 TEST_F(GestureEventQueueTest, CoalescesMultiplePinchEventSequences) {
561 // Simulate a pinch sequence. 564 // Simulate a pinch sequence.
562 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 565 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
563 WebGestureEvent::Touchscreen); 566 blink::WebGestureDeviceTouchscreen);
564 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 567 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
565 WebGestureEvent::Touchscreen); 568 blink::WebGestureDeviceTouchscreen);
566 569
567 SimulateGestureScrollUpdateEvent(8, -4, 1); 570 SimulateGestureScrollUpdateEvent(8, -4, 1);
568 // Make sure that the queue contains what we think it should. 571 // Make sure that the queue contains what we think it should.
569 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 572 WebGestureEvent merged_event = GestureEventLastQueueEvent();
570 size_t expected_events_in_queue = 3; 573 size_t expected_events_in_queue = 3;
571 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); 574 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize());
572 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 575 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
573 576
574 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 577 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring
575 // from a point that is not the origin should still give us the right scroll. 578 // from a point that is not the origin should still give us the right scroll.
(...skipping 19 matching lines...) Expand all
595 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 598 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
596 EXPECT_EQ(1, merged_event.modifiers); 599 EXPECT_EQ(1, merged_event.modifiers);
597 merged_event = GestureEventSecondFromLastQueueEvent(); 600 merged_event = GestureEventSecondFromLastQueueEvent();
598 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 601 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
599 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 602 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
600 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 603 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
601 EXPECT_EQ(1, merged_event.modifiers); 604 EXPECT_EQ(1, merged_event.modifiers);
602 605
603 // Now start another sequence before the previous sequence has been ack'ed. 606 // Now start another sequence before the previous sequence has been ack'ed.
604 SimulateGestureEvent(WebInputEvent::GesturePinchEnd, 607 SimulateGestureEvent(WebInputEvent::GesturePinchEnd,
605 WebGestureEvent::Touchscreen); 608 blink::WebGestureDeviceTouchscreen);
606 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 609 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
607 WebGestureEvent::Touchscreen); 610 blink::WebGestureDeviceTouchscreen);
608 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 611 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
609 WebGestureEvent::Touchscreen); 612 blink::WebGestureDeviceTouchscreen);
610 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 613 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
611 WebGestureEvent::Touchscreen); 614 blink::WebGestureDeviceTouchscreen);
612 615
613 SimulateGestureScrollUpdateEvent(8, -4, 1); 616 SimulateGestureScrollUpdateEvent(8, -4, 1);
614 // Make sure that the queue contains what we think it should. 617 // Make sure that the queue contains what we think it should.
615 expected_events_in_queue += 5; 618 expected_events_in_queue += 5;
616 merged_event = GestureEventLastQueueEvent(); 619 merged_event = GestureEventLastQueueEvent();
617 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); 620 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize());
618 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 621 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
619 622
620 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 623 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring
621 // from a point that is not the origin should still give us the right scroll. 624 // from a point that is not the origin should still give us the right scroll.
(...skipping 20 matching lines...) Expand all
642 EXPECT_EQ(1, merged_event.modifiers); 645 EXPECT_EQ(1, merged_event.modifiers);
643 merged_event = GestureEventSecondFromLastQueueEvent(); 646 merged_event = GestureEventSecondFromLastQueueEvent();
644 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 647 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
645 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 648 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
646 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 649 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
647 EXPECT_EQ(1, merged_event.modifiers); 650 EXPECT_EQ(1, merged_event.modifiers);
648 } 651 }
649 652
650 TEST_F(GestureEventQueueTest, CoalescesPinchSequencesWithEarlyAck) { 653 TEST_F(GestureEventQueueTest, CoalescesPinchSequencesWithEarlyAck) {
651 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 654 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
652 WebGestureEvent::Touchscreen); 655 blink::WebGestureDeviceTouchscreen);
653 SendInputEventACK(WebInputEvent::GestureScrollBegin, 656 SendInputEventACK(WebInputEvent::GestureScrollBegin,
654 INPUT_EVENT_ACK_STATE_CONSUMED); 657 INPUT_EVENT_ACK_STATE_CONSUMED);
655 658
656 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 659 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
657 WebGestureEvent::Touchscreen); 660 blink::WebGestureDeviceTouchscreen);
658 SendInputEventACK(WebInputEvent::GesturePinchBegin, 661 SendInputEventACK(WebInputEvent::GesturePinchBegin,
659 INPUT_EVENT_ACK_STATE_CONSUMED); 662 INPUT_EVENT_ACK_STATE_CONSUMED);
660 // ScrollBegin and PinchBegin have been sent 663 // ScrollBegin and PinchBegin have been sent
661 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 664 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
662 EXPECT_EQ(0U, GestureEventQueueSize()); 665 EXPECT_EQ(0U, GestureEventQueueSize());
663 666
664 SimulateGestureScrollUpdateEvent(5, 5, 1); 667 SimulateGestureScrollUpdateEvent(5, 5, 1);
665 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 668 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
666 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, 669 EXPECT_EQ(WebInputEvent::GestureScrollUpdate,
667 GestureEventLastQueueEvent().type); 670 GestureEventLastQueueEvent().type);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 709 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type);
707 EXPECT_EQ(2.f * 3.f * 4.f, last_acked_event().data.pinchUpdate.scale); 710 EXPECT_EQ(2.f * 3.f * 4.f, last_acked_event().data.pinchUpdate.scale);
708 711
709 EXPECT_EQ(0U, GestureEventQueueSize()); 712 EXPECT_EQ(0U, GestureEventQueueSize());
710 } 713 }
711 714
712 TEST_F(GestureEventQueueTest, 715 TEST_F(GestureEventQueueTest,
713 DoesNotCoalescePinchGestureEventsWithDifferentModifiers) { 716 DoesNotCoalescePinchGestureEventsWithDifferentModifiers) {
714 // Insert an event to force queueing of gestures. 717 // Insert an event to force queueing of gestures.
715 SimulateGestureEvent(WebInputEvent::GestureTapCancel, 718 SimulateGestureEvent(WebInputEvent::GestureTapCancel,
716 WebGestureEvent::Touchscreen); 719 blink::WebGestureDeviceTouchscreen);
717 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 720 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
718 EXPECT_EQ(1U, GestureEventQueueSize()); 721 EXPECT_EQ(1U, GestureEventQueueSize());
719 722
720 SimulateGestureScrollUpdateEvent(5, 5, 1); 723 SimulateGestureScrollUpdateEvent(5, 5, 1);
721 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 724 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
722 EXPECT_EQ(2U, GestureEventQueueSize()); 725 EXPECT_EQ(2U, GestureEventQueueSize());
723 726
724 SimulateGesturePinchUpdateEvent(3, 60, 60, 1); 727 SimulateGesturePinchUpdateEvent(3, 60, 60, 1);
725 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 728 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
726 EXPECT_EQ(3U, GestureEventQueueSize()); 729 EXPECT_EQ(3U, GestureEventQueueSize());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 772 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
770 INPUT_EVENT_ACK_STATE_CONSUMED); 773 INPUT_EVENT_ACK_STATE_CONSUMED);
771 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 774 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type);
772 EXPECT_EQ(6.f, last_acked_event().data.pinchUpdate.scale); 775 EXPECT_EQ(6.f, last_acked_event().data.pinchUpdate.scale);
773 EXPECT_EQ(0U, GestureEventQueueSize()); 776 EXPECT_EQ(0U, GestureEventQueueSize());
774 } 777 }
775 778
776 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventsIdentity) { 779 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventsIdentity) {
777 // Insert an event to force queueing of gestures. 780 // Insert an event to force queueing of gestures.
778 SimulateGestureEvent(WebInputEvent::GestureTapCancel, 781 SimulateGestureEvent(WebInputEvent::GestureTapCancel,
779 WebGestureEvent::Touchscreen); 782 blink::WebGestureDeviceTouchscreen);
780 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 783 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
781 EXPECT_EQ(1U, GestureEventQueueSize()); 784 EXPECT_EQ(1U, GestureEventQueueSize());
782 785
783 // Ensure that coalescing yields an identity transform for any pinch/scroll 786 // Ensure that coalescing yields an identity transform for any pinch/scroll
784 // pair combined with its inverse. 787 // pair combined with its inverse.
785 SimulateGestureScrollUpdateEvent(5, 5, 1); 788 SimulateGestureScrollUpdateEvent(5, 5, 1);
786 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 789 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
787 EXPECT_EQ(2U, GestureEventQueueSize()); 790 EXPECT_EQ(2U, GestureEventQueueSize());
788 791
789 SimulateGesturePinchUpdateEvent(5, 10, 10, 1); 792 SimulateGesturePinchUpdateEvent(5, 10, 10, 1);
(...skipping 20 matching lines...) Expand all
810 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY); 813 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY);
811 814
812 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 815 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
813 INPUT_EVENT_ACK_STATE_CONSUMED); 816 INPUT_EVENT_ACK_STATE_CONSUMED);
814 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 817 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type);
815 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); 818 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale);
816 EXPECT_EQ(0U, GestureEventQueueSize()); 819 EXPECT_EQ(0U, GestureEventQueueSize());
817 820
818 // Insert an event to force queueing of gestures. 821 // Insert an event to force queueing of gestures.
819 SimulateGestureEvent(WebInputEvent::GestureTapCancel, 822 SimulateGestureEvent(WebInputEvent::GestureTapCancel,
820 WebGestureEvent::Touchscreen); 823 blink::WebGestureDeviceTouchscreen);
821 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 824 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
822 EXPECT_EQ(1U, GestureEventQueueSize()); 825 EXPECT_EQ(1U, GestureEventQueueSize());
823 826
824 // Ensure that coalescing yields an identity transform for any pinch/scroll 827 // Ensure that coalescing yields an identity transform for any pinch/scroll
825 // pair combined with its inverse. 828 // pair combined with its inverse.
826 SimulateGesturePinchUpdateEvent(2, 10, 10, 1); 829 SimulateGesturePinchUpdateEvent(2, 10, 10, 1);
827 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 830 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
828 EXPECT_EQ(2U, GestureEventQueueSize()); 831 EXPECT_EQ(2U, GestureEventQueueSize());
829 832
830 SimulateGestureScrollUpdateEvent(20, 20, 1); 833 SimulateGestureScrollUpdateEvent(20, 20, 1);
(...skipping 22 matching lines...) Expand all
853 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 856 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
854 INPUT_EVENT_ACK_STATE_CONSUMED); 857 INPUT_EVENT_ACK_STATE_CONSUMED);
855 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 858 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type);
856 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); 859 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale);
857 } 860 }
858 861
859 // Tests a single event with an synchronous ack. 862 // Tests a single event with an synchronous ack.
860 TEST_F(GestureEventQueueTest, SimpleSyncAck) { 863 TEST_F(GestureEventQueueTest, SimpleSyncAck) {
861 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); 864 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED);
862 SimulateGestureEvent(WebInputEvent::GestureTapDown, 865 SimulateGestureEvent(WebInputEvent::GestureTapDown,
863 WebGestureEvent::Touchscreen); 866 blink::WebGestureDeviceTouchscreen);
864 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 867 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
865 EXPECT_EQ(0U, GestureEventQueueSize()); 868 EXPECT_EQ(0U, GestureEventQueueSize());
866 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); 869 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount());
867 } 870 }
868 871
869 // Tests an event with an synchronous ack which enqueues an additional event. 872 // Tests an event with an synchronous ack which enqueues an additional event.
870 TEST_F(GestureEventQueueTest, SyncAckQueuesEvent) { 873 TEST_F(GestureEventQueueTest, SyncAckQueuesEvent) {
871 scoped_ptr<WebGestureEvent> queued_event; 874 scoped_ptr<WebGestureEvent> queued_event;
872 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); 875 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED);
873 set_sync_followup_event(WebInputEvent::GestureShowPress, 876 set_sync_followup_event(WebInputEvent::GestureShowPress,
874 WebGestureEvent::Touchscreen); 877 blink::WebGestureDeviceTouchscreen);
875 // This event enqueues the show press event. 878 // This event enqueues the show press event.
876 SimulateGestureEvent(WebInputEvent::GestureTapDown, 879 SimulateGestureEvent(WebInputEvent::GestureTapDown,
877 WebGestureEvent::Touchscreen); 880 blink::WebGestureDeviceTouchscreen);
878 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 881 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
879 EXPECT_EQ(1U, GestureEventQueueSize()); 882 EXPECT_EQ(1U, GestureEventQueueSize());
880 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); 883 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount());
881 884
882 SendInputEventACK(WebInputEvent::GestureShowPress, 885 SendInputEventACK(WebInputEvent::GestureShowPress,
883 INPUT_EVENT_ACK_STATE_CONSUMED); 886 INPUT_EVENT_ACK_STATE_CONSUMED);
884 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 887 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
885 EXPECT_EQ(0U, GestureEventQueueSize()); 888 EXPECT_EQ(0U, GestureEventQueueSize());
886 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); 889 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount());
887 } 890 }
888 891
889 // Tests an event with an async ack followed by an event with a sync ack. 892 // Tests an event with an async ack followed by an event with a sync ack.
890 TEST_F(GestureEventQueueTest, AsyncThenSyncAck) { 893 TEST_F(GestureEventQueueTest, AsyncThenSyncAck) {
891 SimulateGestureEvent(WebInputEvent::GestureTapDown, 894 SimulateGestureEvent(WebInputEvent::GestureTapDown,
892 WebGestureEvent::Touchscreen); 895 blink::WebGestureDeviceTouchscreen);
893 896
894 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 897 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
895 EXPECT_EQ(1U, GestureEventQueueSize()); 898 EXPECT_EQ(1U, GestureEventQueueSize());
896 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount()); 899 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount());
897 900
898 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 901 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
899 WebGestureEvent::Touchscreen); 902 blink::WebGestureDeviceTouchscreen);
900 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); 903 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED);
901 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 904 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
902 EXPECT_EQ(2U, GestureEventQueueSize()); 905 EXPECT_EQ(2U, GestureEventQueueSize());
903 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount()); 906 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount());
904 907
905 SendInputEventACK(WebInputEvent::GestureTapDown, 908 SendInputEventACK(WebInputEvent::GestureTapDown,
906 INPUT_EVENT_ACK_STATE_CONSUMED); 909 INPUT_EVENT_ACK_STATE_CONSUMED);
907 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 910 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
908 EXPECT_EQ(0U, GestureEventQueueSize()); 911 EXPECT_EQ(0U, GestureEventQueueSize());
909 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount()); 912 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount());
910 } 913 }
911 914
912 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventWithSyncAck) { 915 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventWithSyncAck) {
913 // Simulate a pinch sequence. 916 // Simulate a pinch sequence.
914 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 917 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
915 WebGestureEvent::Touchscreen); 918 blink::WebGestureDeviceTouchscreen);
916 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 919 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
917 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 920 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
918 WebGestureEvent::Touchscreen); 921 blink::WebGestureDeviceTouchscreen);
919 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 922 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
920 923
921 SimulateGestureScrollUpdateEvent(8, -4, 1); 924 SimulateGestureScrollUpdateEvent(8, -4, 1);
922 // Make sure that the queue contains what we think it should. 925 // Make sure that the queue contains what we think it should.
923 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 926 WebGestureEvent merged_event = GestureEventLastQueueEvent();
924 EXPECT_EQ(3U, GestureEventQueueSize()); 927 EXPECT_EQ(3U, GestureEventQueueSize());
925 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 928 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type);
926 929
927 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 930 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring
928 // from a point that is not the origin should still give us the right scroll. 931 // from a point that is not the origin should still give us the right scroll.
(...skipping 18 matching lines...) Expand all
947 // Ack the final GesturePinchUpdate. 950 // Ack the final GesturePinchUpdate.
948 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 951 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
949 INPUT_EVENT_ACK_STATE_CONSUMED); 952 INPUT_EVENT_ACK_STATE_CONSUMED);
950 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 953 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type);
951 EXPECT_EQ(0U, GestureEventQueueSize()); 954 EXPECT_EQ(0U, GestureEventQueueSize());
952 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 955 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
953 } 956 }
954 957
955 #if GTEST_HAS_PARAM_TEST 958 #if GTEST_HAS_PARAM_TEST
956 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) { 959 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) {
957 WebGestureEvent::SourceDevice source_device = GetParam(); 960 WebGestureDevice source_device = GetParam();
958 961
959 // GFC without previous GFS is dropped. 962 // GFC without previous GFS is dropped.
960 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); 963 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
961 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 964 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
962 EXPECT_EQ(0U, GestureEventQueueSize()); 965 EXPECT_EQ(0U, GestureEventQueueSize());
963 966
964 // GFC after previous GFS is dispatched and acked. 967 // GFC after previous GFS is dispatched and acked.
965 SimulateGestureFlingStartEvent(0, -10, source_device); 968 SimulateGestureFlingStartEvent(0, -10, source_device);
966 EXPECT_TRUE(FlingInProgress()); 969 EXPECT_TRUE(FlingInProgress());
967 SendInputEventACK(WebInputEvent::GestureFlingStart, 970 SendInputEventACK(WebInputEvent::GestureFlingStart,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 // Adding another GFC with a GFC already there is dropped. 1039 // Adding another GFC with a GFC already there is dropped.
1037 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); 1040 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
1038 merged_event = GestureEventLastQueueEvent(); 1041 merged_event = GestureEventLastQueueEvent();
1039 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); 1042 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type);
1040 EXPECT_FALSE(FlingInProgress()); 1043 EXPECT_FALSE(FlingInProgress());
1041 EXPECT_EQ(5U, GestureEventQueueSize()); 1044 EXPECT_EQ(5U, GestureEventQueueSize());
1042 } 1045 }
1043 1046
1044 INSTANTIATE_TEST_CASE_P(AllSources, 1047 INSTANTIATE_TEST_CASE_P(AllSources,
1045 GestureEventQueueWithSourceTest, 1048 GestureEventQueueWithSourceTest,
1046 testing::Values(WebGestureEvent::Touchscreen, 1049 testing::Values(blink::WebGestureDeviceTouchscreen,
1047 WebGestureEvent::Touchpad)); 1050 blink::WebGestureDeviceTouchpad));
1048 #endif // GTEST_HAS_PARAM_TEST 1051 #endif // GTEST_HAS_PARAM_TEST
1049 1052
1050 // Test that a GestureScrollEnd | GestureFlingStart are deferred during the 1053 // Test that a GestureScrollEnd | GestureFlingStart are deferred during the
1051 // debounce interval, that Scrolls are not and that the deferred events are 1054 // debounce interval, that Scrolls are not and that the deferred events are
1052 // sent after that timer fires. 1055 // sent after that timer fires.
1053 TEST_F(GestureEventQueueTest, DebounceDefersFollowingGestureEvents) { 1056 TEST_F(GestureEventQueueTest, DebounceDefersFollowingGestureEvents) {
1054 SetUpForDebounce(3); 1057 SetUpForDebounce(3);
1055 1058
1056 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1059 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1057 WebGestureEvent::Touchscreen); 1060 blink::WebGestureDeviceTouchscreen);
1058 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 1061 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
1059 EXPECT_EQ(1U, GestureEventQueueSize()); 1062 EXPECT_EQ(1U, GestureEventQueueSize());
1060 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); 1063 EXPECT_EQ(0U, GestureEventDebouncingQueueSize());
1061 EXPECT_TRUE(ScrollingInProgress()); 1064 EXPECT_TRUE(ScrollingInProgress());
1062 1065
1063 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1066 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1064 WebGestureEvent::Touchscreen); 1067 blink::WebGestureDeviceTouchscreen);
1065 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1068 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1066 EXPECT_EQ(2U, GestureEventQueueSize()); 1069 EXPECT_EQ(2U, GestureEventQueueSize());
1067 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); 1070 EXPECT_EQ(0U, GestureEventDebouncingQueueSize());
1068 EXPECT_TRUE(ScrollingInProgress()); 1071 EXPECT_TRUE(ScrollingInProgress());
1069 1072
1070 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1073 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1071 WebGestureEvent::Touchscreen); 1074 blink::WebGestureDeviceTouchscreen);
1072 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1075 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1073 EXPECT_EQ(2U, GestureEventQueueSize()); 1076 EXPECT_EQ(2U, GestureEventQueueSize());
1074 EXPECT_EQ(1U, GestureEventDebouncingQueueSize()); 1077 EXPECT_EQ(1U, GestureEventDebouncingQueueSize());
1075 1078
1076 SimulateGestureFlingStartEvent(0, 10, WebGestureEvent::Touchscreen); 1079 SimulateGestureFlingStartEvent(0, 10, blink::WebGestureDeviceTouchscreen);
1077 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1080 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1078 EXPECT_EQ(2U, GestureEventQueueSize()); 1081 EXPECT_EQ(2U, GestureEventQueueSize());
1079 EXPECT_EQ(2U, GestureEventDebouncingQueueSize()); 1082 EXPECT_EQ(2U, GestureEventDebouncingQueueSize());
1080 1083
1081 SimulateGestureEvent(WebInputEvent::GestureTapDown, 1084 SimulateGestureEvent(WebInputEvent::GestureTapDown,
1082 WebGestureEvent::Touchscreen); 1085 blink::WebGestureDeviceTouchscreen);
1083 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1086 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1084 EXPECT_EQ(2U, GestureEventQueueSize()); 1087 EXPECT_EQ(2U, GestureEventQueueSize());
1085 EXPECT_EQ(3U, GestureEventDebouncingQueueSize()); 1088 EXPECT_EQ(3U, GestureEventDebouncingQueueSize());
1086 1089
1087 base::MessageLoop::current()->PostDelayedTask( 1090 base::MessageLoop::current()->PostDelayedTask(
1088 FROM_HERE, 1091 FROM_HERE,
1089 base::MessageLoop::QuitClosure(), 1092 base::MessageLoop::QuitClosure(),
1090 TimeDelta::FromMilliseconds(5)); 1093 TimeDelta::FromMilliseconds(5));
1091 base::MessageLoop::current()->Run(); 1094 base::MessageLoop::current()->Run();
1092 1095
(...skipping 19 matching lines...) Expand all
1112 1115
1113 // Test that non-scroll events are deferred while scrolling during the debounce 1116 // Test that non-scroll events are deferred while scrolling during the debounce
1114 // interval and are discarded if a GestureScrollUpdate event arrives before the 1117 // interval and are discarded if a GestureScrollUpdate event arrives before the
1115 // interval end. 1118 // interval end.
1116 TEST_F(GestureEventQueueTest, DebounceDropsDeferredEvents) { 1119 TEST_F(GestureEventQueueTest, DebounceDropsDeferredEvents) {
1117 SetUpForDebounce(3); 1120 SetUpForDebounce(3);
1118 1121
1119 EXPECT_FALSE(ScrollingInProgress()); 1122 EXPECT_FALSE(ScrollingInProgress());
1120 1123
1121 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1124 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1122 WebGestureEvent::Touchscreen); 1125 blink::WebGestureDeviceTouchscreen);
1123 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 1126 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
1124 EXPECT_EQ(1U, GestureEventQueueSize()); 1127 EXPECT_EQ(1U, GestureEventQueueSize());
1125 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); 1128 EXPECT_EQ(0U, GestureEventDebouncingQueueSize());
1126 EXPECT_TRUE(ScrollingInProgress()); 1129 EXPECT_TRUE(ScrollingInProgress());
1127 1130
1128 // This event should get discarded. 1131 // This event should get discarded.
1129 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1132 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1130 WebGestureEvent::Touchscreen); 1133 blink::WebGestureDeviceTouchscreen);
1131 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1134 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1132 EXPECT_EQ(1U, GestureEventQueueSize()); 1135 EXPECT_EQ(1U, GestureEventQueueSize());
1133 EXPECT_EQ(1U, GestureEventDebouncingQueueSize()); 1136 EXPECT_EQ(1U, GestureEventDebouncingQueueSize());
1134 1137
1135 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1138 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1136 WebGestureEvent::Touchscreen); 1139 blink::WebGestureDeviceTouchscreen);
1137 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1140 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1138 EXPECT_EQ(2U, GestureEventQueueSize()); 1141 EXPECT_EQ(2U, GestureEventQueueSize());
1139 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); 1142 EXPECT_EQ(0U, GestureEventDebouncingQueueSize());
1140 EXPECT_TRUE(ScrollingInProgress()); 1143 EXPECT_TRUE(ScrollingInProgress());
1141 1144
1142 // Verify that the coalescing queue contains the correct events. 1145 // Verify that the coalescing queue contains the correct events.
1143 WebInputEvent::Type expected[] = { 1146 WebInputEvent::Type expected[] = {
1144 WebInputEvent::GestureScrollUpdate, 1147 WebInputEvent::GestureScrollUpdate,
1145 WebInputEvent::GestureScrollUpdate}; 1148 WebInputEvent::GestureScrollUpdate};
1146 1149
1147 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type); 1150 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type);
1148 i++) { 1151 i++) {
1149 WebGestureEvent merged_event = GestureEventQueueEventAt(i); 1152 WebGestureEvent merged_event = GestureEventQueueEventAt(i);
1150 EXPECT_EQ(expected[i], merged_event.type); 1153 EXPECT_EQ(expected[i], merged_event.type);
1151 } 1154 }
1152 } 1155 }
1153 1156
1154 } // namespace content 1157 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/gesture_event_queue.cc ('k') | content/browser/renderer_host/input/input_router_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698