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

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

Powered by Google App Engine
This is Rietveld 408576698