| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |