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