OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/shared_memory.h" | 7 #include "base/shared_memory.h" |
8 #include "base/timer.h" | 8 #include "base/timer.h" |
9 #include "content/browser/browser_thread_impl.h" | 9 #include "content/browser/browser_thread_impl.h" |
10 #include "content/browser/renderer_host/backing_store.h" | 10 #include "content/browser/renderer_host/backing_store.h" |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 }; | 133 }; |
134 | 134 |
135 bool unresponsive_timer_fired() const { | 135 bool unresponsive_timer_fired() const { |
136 return unresponsive_timer_fired_; | 136 return unresponsive_timer_fired_; |
137 } | 137 } |
138 | 138 |
139 void set_hung_renderer_delay_ms(int delay_ms) { | 139 void set_hung_renderer_delay_ms(int delay_ms) { |
140 hung_renderer_delay_ms_ = delay_ms; | 140 hung_renderer_delay_ms_ = delay_ms; |
141 } | 141 } |
142 | 142 |
| 143 unsigned GestureEventLastQueueEventSize() { |
| 144 return gesture_event_filter_->coalesced_gesture_events_.size(); |
| 145 } |
| 146 |
| 147 WebGestureEvent GestureEventSecondFromLastQueueEvent() { |
| 148 return gesture_event_filter_->coalesced_gesture_events_.at( |
| 149 GestureEventLastQueueEventSize() - 2); |
| 150 } |
| 151 |
143 WebGestureEvent GestureEventLastQueueEvent() { | 152 WebGestureEvent GestureEventLastQueueEvent() { |
144 return gesture_event_filter_->coalesced_gesture_events_.back(); | 153 return gesture_event_filter_->coalesced_gesture_events_.back(); |
145 } | 154 } |
146 | 155 |
147 unsigned GestureEventLastQueueEventSize() { | |
148 return gesture_event_filter_->coalesced_gesture_events_.size(); | |
149 } | |
150 | |
151 unsigned GestureEventDebouncingQueueSize() { | 156 unsigned GestureEventDebouncingQueueSize() { |
152 return gesture_event_filter_->debouncing_deferral_queue_.size(); | 157 return gesture_event_filter_->debouncing_deferral_queue_.size(); |
153 } | 158 } |
154 | 159 |
155 WebGestureEvent GestureEventQueueEventAt(int i) { | 160 WebGestureEvent GestureEventQueueEventAt(int i) { |
156 return gesture_event_filter_->coalesced_gesture_events_.at(i); | 161 return gesture_event_filter_->coalesced_gesture_events_.at(i); |
157 } | 162 } |
158 | 163 |
159 bool shouldDeferTapDownEvents() { | 164 bool shouldDeferTapDownEvents() { |
160 return gesture_event_filter_->maximum_tap_gap_time_ms_ != 0; | 165 return gesture_event_filter_->maximum_tap_gap_time_ms_ != 0; |
161 } | 166 } |
162 | 167 |
163 bool ScrollingInProgress() { | 168 bool ScrollingInProgress() { |
164 return gesture_event_filter_->scrolling_in_progress_; | 169 return gesture_event_filter_->scrolling_in_progress_; |
165 } | 170 } |
166 | 171 |
167 bool FlingInProgress() { | 172 bool FlingInProgress() { |
168 return gesture_event_filter_->fling_in_progress_; | 173 return gesture_event_filter_->fling_in_progress_; |
169 } | 174 } |
170 | 175 |
| 176 bool WillIgnoreNextACK() { |
| 177 return gesture_event_filter_->ignore_next_ack_; |
| 178 } |
| 179 |
171 TapSuppressionState TapSuppressionControllerState() { | 180 TapSuppressionState TapSuppressionControllerState() { |
172 return static_cast<TapSuppressionState>( | 181 return static_cast<TapSuppressionState>( |
173 gesture_event_filter_->tap_suppression_controller_->state_); | 182 gesture_event_filter_->tap_suppression_controller_->state_); |
174 } | 183 } |
175 | 184 |
176 void SetupForOverscrollControllerTest() { | 185 void SetupForOverscrollControllerTest() { |
177 SetOverscrollControllerEnabled(true); | 186 SetOverscrollControllerEnabled(true); |
178 overscroll_delegate_.reset(new TestOverscrollDelegate); | 187 overscroll_delegate_.reset(new TestOverscrollDelegate); |
179 overscroll_controller_->set_delegate(overscroll_delegate_.get()); | 188 overscroll_controller_->set_delegate(overscroll_delegate_.get()); |
180 } | 189 } |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 | 589 |
581 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { | 590 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { |
582 WebGestureEvent gesture_event; | 591 WebGestureEvent gesture_event; |
583 gesture_event.data.scrollUpdate.deltaX = dX; | 592 gesture_event.data.scrollUpdate.deltaX = dX; |
584 gesture_event.data.scrollUpdate.deltaY = dY; | 593 gesture_event.data.scrollUpdate.deltaY = dY; |
585 gesture_event.modifiers = modifiers; | 594 gesture_event.modifiers = modifiers; |
586 SimulateGestureEventCore(WebInputEvent::GestureScrollUpdate, | 595 SimulateGestureEventCore(WebInputEvent::GestureScrollUpdate, |
587 WebGestureEvent::Touchscreen, &gesture_event); | 596 WebGestureEvent::Touchscreen, &gesture_event); |
588 } | 597 } |
589 | 598 |
| 599 void SimulateGesturePinchUpdateEvent(float scale, |
| 600 float anchorX, |
| 601 float anchorY, |
| 602 int modifiers) { |
| 603 WebGestureEvent gesture_event; |
| 604 gesture_event.data.pinchUpdate.scale = scale; |
| 605 gesture_event.x = anchorX; |
| 606 gesture_event.y = anchorY; |
| 607 gesture_event.modifiers = modifiers; |
| 608 SimulateGestureEventCore(WebInputEvent::GesturePinchUpdate, |
| 609 WebGestureEvent::Touchscreen, &gesture_event); |
| 610 } |
| 611 |
590 // Inject synthetic GestureFlingStart events. | 612 // Inject synthetic GestureFlingStart events. |
591 void SimulateGestureFlingStartEvent( | 613 void SimulateGestureFlingStartEvent( |
592 float velocityX, | 614 float velocityX, |
593 float velocityY, | 615 float velocityY, |
594 WebGestureEvent::SourceDevice sourceDevice) { | 616 WebGestureEvent::SourceDevice sourceDevice) { |
595 WebGestureEvent gesture_event; | 617 WebGestureEvent gesture_event; |
596 gesture_event.data.flingStart.velocityX = velocityX; | 618 gesture_event.data.flingStart.velocityX = velocityX; |
597 gesture_event.data.flingStart.velocityY = velocityY; | 619 gesture_event.data.flingStart.velocityY = velocityY; |
598 SimulateGestureEventCore(WebInputEvent::GestureFlingStart, sourceDevice, | 620 SimulateGestureEventCore(WebInputEvent::GestureFlingStart, sourceDevice, |
599 &gesture_event); | 621 &gesture_event); |
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1154 GetInputEventFromMessage(*process_->sink().GetMessageAt(2)); | 1176 GetInputEventFromMessage(*process_->sink().GetMessageAt(2)); |
1155 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); | 1177 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); |
1156 const WebMouseWheelEvent* wheel_event = | 1178 const WebMouseWheelEvent* wheel_event = |
1157 static_cast<const WebMouseWheelEvent*>(input_event); | 1179 static_cast<const WebMouseWheelEvent*>(input_event); |
1158 ASSERT_EQ(WebMouseWheelEvent::PhaseEnded, wheel_event->phase); | 1180 ASSERT_EQ(WebMouseWheelEvent::PhaseEnded, wheel_event->phase); |
1159 | 1181 |
1160 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(3)); | 1182 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(3)); |
1161 EXPECT_EQ(WebInputEvent::GestureScrollEnd, input_event->type); | 1183 EXPECT_EQ(WebInputEvent::GestureScrollEnd, input_event->type); |
1162 } | 1184 } |
1163 | 1185 |
1164 TEST_F(RenderWidgetHostTest, CoalescesGesturesEvents) { | 1186 TEST_F(RenderWidgetHostTest, CoalescesScrollGestureEvents) { |
1165 // Turn off debounce handling for test isolation. | 1187 // Turn off debounce handling for test isolation. |
1166 host_->set_debounce_interval_time_ms(0); | 1188 host_->set_debounce_interval_time_ms(0); |
1167 process_->sink().ClearMessages(); | 1189 process_->sink().ClearMessages(); |
1168 // Only GestureScrollUpdate events can be coalesced. | 1190 // Test coalescing of only GestureScrollUpdate events. |
1169 // Simulate gesture events. | 1191 // Simulate gesture events. |
1170 | 1192 |
1171 // Sent. | 1193 // Sent. |
1172 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1194 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
1173 WebGestureEvent::Touchscreen); | 1195 WebGestureEvent::Touchscreen); |
1174 | 1196 |
1175 // Enqueued. | 1197 // Enqueued. |
1176 SimulateGestureScrollUpdateEvent(8, -5, 0); | 1198 SimulateGestureScrollUpdateEvent(8, -5, 0); |
1177 | 1199 |
1178 // Make sure that the queue contains what we think it should. | 1200 // Make sure that the queue contains what we think it should. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1235 ViewMsg_HandleInputEvent::ID)); | 1257 ViewMsg_HandleInputEvent::ID)); |
1236 process_->sink().ClearMessages(); | 1258 process_->sink().ClearMessages(); |
1237 | 1259 |
1238 // After the final ack, the queue should be empty. | 1260 // After the final ack, the queue should be empty. |
1239 SendInputEventACK(WebInputEvent::GestureScrollEnd, | 1261 SendInputEventACK(WebInputEvent::GestureScrollEnd, |
1240 INPUT_EVENT_ACK_STATE_CONSUMED); | 1262 INPUT_EVENT_ACK_STATE_CONSUMED); |
1241 MessageLoop::current()->RunUntilIdle(); | 1263 MessageLoop::current()->RunUntilIdle(); |
1242 EXPECT_EQ(0U, process_->sink().message_count()); | 1264 EXPECT_EQ(0U, process_->sink().message_count()); |
1243 } | 1265 } |
1244 | 1266 |
| 1267 TEST_F(RenderWidgetHostTest, CoalescesScrollAndPinchEvents) { |
| 1268 // Turn off debounce handling for test isolation. |
| 1269 host_->set_debounce_interval_time_ms(0); |
| 1270 process_->sink().ClearMessages(); |
| 1271 // Test coalescing of only GestureScrollUpdate events. |
| 1272 // Simulate gesture events. |
| 1273 |
| 1274 // Sent. |
| 1275 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1276 WebGestureEvent::Touchscreen); |
| 1277 |
| 1278 // Sent. |
| 1279 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, |
| 1280 WebGestureEvent::Touchscreen); |
| 1281 |
| 1282 // Enqueued. |
| 1283 SimulateGestureScrollUpdateEvent(8, -4, 1); |
| 1284 |
| 1285 // Make sure that the queue contains what we think it should. |
| 1286 WebGestureEvent merged_event = host_->GestureEventLastQueueEvent(); |
| 1287 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); |
| 1288 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1289 |
| 1290 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring |
| 1291 // from a poinht that is not the origin should still give us the wight scroll. |
| 1292 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1); |
| 1293 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); |
| 1294 merged_event = host_->GestureEventLastQueueEvent(); |
| 1295 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1296 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); |
| 1297 EXPECT_EQ(1, merged_event.modifiers); |
| 1298 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1299 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1300 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX); |
| 1301 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY); |
| 1302 EXPECT_EQ(1, merged_event.modifiers); |
| 1303 |
| 1304 // Enqueued. |
| 1305 SimulateGestureScrollUpdateEvent(6, -3, 1); |
| 1306 |
| 1307 // Check whether coalesced correctly. |
| 1308 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); |
| 1309 merged_event = host_->GestureEventLastQueueEvent(); |
| 1310 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1311 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); |
| 1312 EXPECT_EQ(1, merged_event.modifiers); |
| 1313 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1314 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1315 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
| 1316 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
| 1317 EXPECT_EQ(1, merged_event.modifiers); |
| 1318 |
| 1319 // Enqueued. |
| 1320 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); |
| 1321 |
| 1322 // Check whether coalesced correctly. |
| 1323 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); |
| 1324 merged_event = host_->GestureEventLastQueueEvent(); |
| 1325 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1326 EXPECT_EQ(3, merged_event.data.pinchUpdate.scale); |
| 1327 EXPECT_EQ(1, merged_event.modifiers); |
| 1328 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1329 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1330 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
| 1331 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
| 1332 EXPECT_EQ(1, merged_event.modifiers); |
| 1333 |
| 1334 // Enqueued. |
| 1335 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); |
| 1336 |
| 1337 // Check whether coalesced correctly. |
| 1338 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); |
| 1339 merged_event = host_->GestureEventLastQueueEvent(); |
| 1340 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1341 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
| 1342 EXPECT_EQ(1, merged_event.modifiers); |
| 1343 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1344 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1345 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
| 1346 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
| 1347 EXPECT_EQ(1, merged_event.modifiers); |
| 1348 |
| 1349 // Check that only the first event was sent. |
| 1350 EXPECT_EQ(1U, process_->sink().message_count()); |
| 1351 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 1352 ViewMsg_HandleInputEvent::ID)); |
| 1353 process_->sink().ClearMessages(); |
| 1354 |
| 1355 // Check that the ACK sends the second message. |
| 1356 SendInputEventACK(WebInputEvent::GestureScrollBegin, |
| 1357 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1358 MessageLoop::current()->RunUntilIdle(); |
| 1359 EXPECT_EQ(1U, process_->sink().message_count()); |
| 1360 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 1361 ViewMsg_HandleInputEvent::ID)); |
| 1362 process_->sink().ClearMessages(); |
| 1363 |
| 1364 // Enqueued. |
| 1365 SimulateGestureScrollUpdateEvent(6, -6, 1); |
| 1366 |
| 1367 // Check whether coalesced correctly. |
| 1368 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); |
| 1369 merged_event = host_->GestureEventLastQueueEvent(); |
| 1370 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1371 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
| 1372 EXPECT_EQ(1, merged_event.modifiers); |
| 1373 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1374 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1375 EXPECT_EQ(13, merged_event.data.scrollUpdate.deltaX); |
| 1376 EXPECT_EQ(-7, merged_event.data.scrollUpdate.deltaY); |
| 1377 EXPECT_EQ(1, merged_event.modifiers); |
| 1378 |
| 1379 // At this point ACKs shouldn't be getting ignored. |
| 1380 EXPECT_FALSE(host_->WillIgnoreNextACK()); |
| 1381 |
| 1382 // Check that the ACK sends both scroll and pinch updates. |
| 1383 SendInputEventACK(WebInputEvent::GesturePinchBegin, |
| 1384 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1385 MessageLoop::current()->RunUntilIdle(); |
| 1386 EXPECT_EQ(2U, process_->sink().message_count()); |
| 1387 EXPECT_TRUE(process_->sink().GetFirstMessageMatching( |
| 1388 ViewMsg_HandleInputEvent::ID)); |
| 1389 EXPECT_FALSE(process_->sink().GetUniqueMessageMatching( |
| 1390 ViewMsg_HandleInputEvent::ID)); |
| 1391 process_->sink().ClearMessages(); |
| 1392 |
| 1393 // The next ACK should be getting ignored. |
| 1394 EXPECT_TRUE(host_->WillIgnoreNextACK()); |
| 1395 |
| 1396 // Enqueued. |
| 1397 SimulateGestureScrollUpdateEvent(1, -1, 1); |
| 1398 |
| 1399 // Check whether coalesced correctly. |
| 1400 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); |
| 1401 merged_event = host_->GestureEventLastQueueEvent(); |
| 1402 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1403 EXPECT_EQ(1, merged_event.data.scrollUpdate.deltaX); |
| 1404 EXPECT_EQ(-1, merged_event.data.scrollUpdate.deltaY); |
| 1405 EXPECT_EQ(1, merged_event.modifiers); |
| 1406 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1407 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1408 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
| 1409 EXPECT_EQ(1, merged_event.modifiers); |
| 1410 |
| 1411 // Enqueued. |
| 1412 SimulateGestureScrollUpdateEvent(2, -2, 1); |
| 1413 |
| 1414 // Coalescing scrolls should still work. |
| 1415 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); |
| 1416 merged_event = host_->GestureEventLastQueueEvent(); |
| 1417 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1418 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); |
| 1419 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); |
| 1420 EXPECT_EQ(1, merged_event.modifiers); |
| 1421 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1422 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1423 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
| 1424 EXPECT_EQ(1, merged_event.modifiers); |
| 1425 |
| 1426 // Enqueued. |
| 1427 SimulateGesturePinchUpdateEvent(0.5, 60, 60, 1); |
| 1428 |
| 1429 // Check whether coalesced correctly. |
| 1430 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); |
| 1431 merged_event = host_->GestureEventLastQueueEvent(); |
| 1432 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1433 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); |
| 1434 EXPECT_EQ(1, merged_event.modifiers); |
| 1435 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1436 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1437 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); |
| 1438 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); |
| 1439 EXPECT_EQ(1, merged_event.modifiers); |
| 1440 |
| 1441 // Check that the ACK gets ignored. |
| 1442 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
| 1443 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1444 MessageLoop::current()->RunUntilIdle(); |
| 1445 EXPECT_EQ(0U, process_->sink().message_count()); |
| 1446 // The flag should have been flipped back to false. |
| 1447 EXPECT_FALSE(host_->WillIgnoreNextACK()); |
| 1448 |
| 1449 // Enqueued. |
| 1450 SimulateGestureScrollUpdateEvent(2, -2, 2); |
| 1451 |
| 1452 // Shouldn't coalesce with different modifiers. |
| 1453 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); |
| 1454 merged_event = host_->GestureEventLastQueueEvent(); |
| 1455 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
| 1456 EXPECT_EQ(2, merged_event.data.scrollUpdate.deltaX); |
| 1457 EXPECT_EQ(-2, merged_event.data.scrollUpdate.deltaY); |
| 1458 EXPECT_EQ(2, merged_event.modifiers); |
| 1459 merged_event = host_->GestureEventSecondFromLastQueueEvent(); |
| 1460 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
| 1461 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); |
| 1462 EXPECT_EQ(1, merged_event.modifiers); |
| 1463 |
| 1464 // Check that the ACK sends the next scroll pinch pair. |
| 1465 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
| 1466 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1467 MessageLoop::current()->RunUntilIdle(); |
| 1468 EXPECT_EQ(2U, process_->sink().message_count()); |
| 1469 EXPECT_TRUE(process_->sink().GetFirstMessageMatching( |
| 1470 ViewMsg_HandleInputEvent::ID)); |
| 1471 EXPECT_FALSE(process_->sink().GetUniqueMessageMatching( |
| 1472 ViewMsg_HandleInputEvent::ID)); |
| 1473 process_->sink().ClearMessages(); |
| 1474 |
| 1475 // Check that the ACK sends the second message. |
| 1476 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
| 1477 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1478 MessageLoop::current()->RunUntilIdle(); |
| 1479 EXPECT_EQ(0U, process_->sink().message_count()); |
| 1480 |
| 1481 // Check that the ACK sends the second message. |
| 1482 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
| 1483 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1484 MessageLoop::current()->RunUntilIdle(); |
| 1485 EXPECT_EQ(1U, process_->sink().message_count()); |
| 1486 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 1487 ViewMsg_HandleInputEvent::ID)); |
| 1488 process_->sink().ClearMessages(); |
| 1489 |
| 1490 // Check that the queue is empty after ACK and no messages get sent. |
| 1491 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
| 1492 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1493 MessageLoop::current()->RunUntilIdle(); |
| 1494 EXPECT_EQ(0U, process_->sink().message_count()); |
| 1495 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
| 1496 } |
| 1497 |
1245 #if GTEST_HAS_PARAM_TEST | 1498 #if GTEST_HAS_PARAM_TEST |
1246 TEST_P(RenderWidgetHostWithSourceTest, GestureFlingCancelsFiltered) { | 1499 TEST_P(RenderWidgetHostWithSourceTest, GestureFlingCancelsFiltered) { |
1247 WebGestureEvent::SourceDevice source_device = GetParam(); | 1500 WebGestureEvent::SourceDevice source_device = GetParam(); |
1248 | 1501 |
1249 // Turn off debounce handling for test isolation. | 1502 // Turn off debounce handling for test isolation. |
1250 host_->set_debounce_interval_time_ms(0); | 1503 host_->set_debounce_interval_time_ms(0); |
1251 process_->sink().ClearMessages(); | 1504 process_->sink().ClearMessages(); |
1252 // GFC without previous GFS is dropped. | 1505 // GFC without previous GFS is dropped. |
1253 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 1506 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
1254 EXPECT_EQ(0U, process_->sink().message_count()); | 1507 EXPECT_EQ(0U, process_->sink().message_count()); |
(...skipping 2367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3622 EXPECT_EQ(0U, host_->GestureEventDebouncingQueueSize()); | 3875 EXPECT_EQ(0U, host_->GestureEventDebouncingQueueSize()); |
3623 | 3876 |
3624 SendInputEventACK(WebKit::WebInputEvent::GestureScrollEnd, | 3877 SendInputEventACK(WebKit::WebInputEvent::GestureScrollEnd, |
3625 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 3878 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
3626 EXPECT_EQ(0U, process_->sink().message_count()); | 3879 EXPECT_EQ(0U, process_->sink().message_count()); |
3627 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); | 3880 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
3628 EXPECT_EQ(0U, host_->GestureEventDebouncingQueueSize()); | 3881 EXPECT_EQ(0U, host_->GestureEventDebouncingQueueSize()); |
3629 } | 3882 } |
3630 | 3883 |
3631 } // namespace content | 3884 } // namespace content |
OLD | NEW |