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

Side by Side Diff: content/renderer/input/input_event_filter_unittest.cc

Issue 2162143002: Don't use PostTask queueing between compositor and main thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't ack mouse move right away send them unthrottled Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <new> 7 #include <new>
8 #include <tuple> 8 #include <tuple>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 const WebInputEvent* event = event_recorder_.record_at(i); 203 const WebInputEvent* event = event_recorder_.record_at(i);
204 ASSERT_TRUE(event); 204 ASSERT_TRUE(event);
205 205
206 EXPECT_EQ(kEvents[i].size, event->size); 206 EXPECT_EQ(kEvents[i].size, event->size);
207 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 207 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0);
208 } 208 }
209 209
210 event_recorder_.set_send_to_widget(true); 210 event_recorder_.set_send_to_widget(true);
211 211
212 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); 212 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
213 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); 213 EXPECT_EQ(2 * arraysize(kEvents), ipc_sink_.message_count());
214 EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count()); 214 EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count());
215 EXPECT_EQ(arraysize(kEvents), message_recorder_.message_count()); 215 EXPECT_EQ(1u, message_recorder_.message_count());
216 216
217 for (size_t i = 0; i < arraysize(kEvents); ++i) { 217 {
tdresser 2016/07/20 20:52:27 Should we get rid of the {}?
dtapuska 2016/07/27 05:29:00 I was trying to scope the local variables that I w
218 const IPC::Message& message = message_recorder_.message_at(i); 218 const IPC::Message& message = message_recorder_.message_at(0);
219 219
220 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 220 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
221 InputMsg_HandleInputEvent::Param params; 221 InputMsg_HandleInputEvent::Param params;
222 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 222 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
223 const WebInputEvent* event = std::get<0>(params); 223 const WebInputEvent* event = std::get<0>(params);
224 224
225 EXPECT_EQ(kEvents[i].size, event->size); 225 EXPECT_EQ(kEvents[2].size, event->size);
226 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 226 EXPECT_TRUE(memcmp(&kEvents[2], event, event->size) == 0);
227 } 227 }
228 228
229 // Now reset everything, and test that DidHandleInputEvent is called. 229 // Now reset everything, and test that DidHandleInputEvent is called.
230 230
231 ipc_sink_.ClearMessages(); 231 ipc_sink_.ClearMessages();
232 event_recorder_.Clear(); 232 event_recorder_.Clear();
233 message_recorder_.Clear(); 233 message_recorder_.Clear();
234 234
235 event_recorder_.set_handle_events(true); 235 event_recorder_.set_handle_events(true);
236 236
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 // We should have sent all messages back to the main thread and preserved 306 // We should have sent all messages back to the main thread and preserved
307 // their relative order. 307 // their relative order.
308 ASSERT_EQ(message_recorder_.message_count(), messages.size()); 308 ASSERT_EQ(message_recorder_.message_count(), messages.size());
309 for (size_t i = 0; i < messages.size(); ++i) { 309 for (size_t i = 0; i < messages.size(); ++i) {
310 EXPECT_EQ(message_recorder_.message_at(i).type(), messages[i].type()) << i; 310 EXPECT_EQ(message_recorder_.message_at(i).type(), messages[i].type()) << i;
311 } 311 }
312 } 312 }
313 313
314 TEST_F(InputEventFilterTest, NonBlockingWheel) { 314 TEST_F(InputEventFilterTest, NonBlockingWheel) {
315 WebMouseWheelEvent kEvents[4] = { 315 WebMouseWheelEvent kEvents[4] = {
316 SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, 53, 0, false), 316 SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, 53, 1, false),
317 SyntheticWebMouseWheelEventBuilder::Build(20, 20, 0, 53, 0, false), 317 SyntheticWebMouseWheelEventBuilder::Build(20, 20, 0, 53, 0, false),
318 SyntheticWebMouseWheelEventBuilder::Build(30, 30, 0, 53, 1, false), 318 SyntheticWebMouseWheelEventBuilder::Build(30, 30, 0, 53, 1, false),
319 SyntheticWebMouseWheelEventBuilder::Build(30, 30, 0, 53, 1, false), 319 SyntheticWebMouseWheelEventBuilder::Build(30, 30, 0, 53, 1, false),
320 }; 320 };
321 321
322 filter_->RegisterRoutingID(kTestRoutingID); 322 filter_->RegisterRoutingID(kTestRoutingID);
323 event_recorder_.set_send_to_widget(true); 323 event_recorder_.set_send_to_widget(true);
324 event_recorder_.set_passive(true); 324 event_recorder_.set_passive(true);
325 325
326 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); 326 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
327 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); 327 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count());
328 ASSERT_EQ(4u, ipc_sink_.message_count()); 328 ASSERT_EQ(4u, ipc_sink_.message_count());
329 329
330 // First event is sent right away. 330 // All events are handled, one is coalesced.
331 EXPECT_EQ(1u, message_recorder_.message_count());
332
333 // Second event was queued; ack the first.
334 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::MouseWheel,
335 INPUT_EVENT_ACK_STATE_CONSUMED);
336 base::RunLoop().RunUntilIdle();
337 ASSERT_EQ(4u, ipc_sink_.message_count());
338 EXPECT_EQ(2u, message_recorder_.message_count());
339
340 // Third event won't be coalesced into the second because modifiers are
341 // different.
342 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::MouseWheel,
343 INPUT_EVENT_ACK_STATE_CONSUMED);
344 base::RunLoop().RunUntilIdle();
345 EXPECT_EQ(3u, message_recorder_.message_count());
346
347 // The last events will be coalesced.
348 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::MouseWheel,
349 INPUT_EVENT_ACK_STATE_CONSUMED);
350 base::RunLoop().RunUntilIdle();
351 EXPECT_EQ(3u, message_recorder_.message_count()); 331 EXPECT_EQ(3u, message_recorder_.message_count());
352 332
353 // First two messages should be identical. 333 // First two messages should be identical.
354 for (size_t i = 0; i < 2; ++i) { 334 for (size_t i = 0; i < 2; ++i) {
355 const IPC::Message& message = message_recorder_.message_at(i); 335 const IPC::Message& message = message_recorder_.message_at(i);
356 336
357 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 337 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
358 InputMsg_HandleInputEvent::Param params; 338 InputMsg_HandleInputEvent::Param params;
359 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 339 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
360 const WebInputEvent* event = std::get<0>(params); 340 const WebInputEvent* event = std::get<0>(params);
361 InputEventDispatchType dispatch_type = std::get<2>(params); 341 InputEventDispatchType dispatch_type = std::get<2>(params);
362 342
363 EXPECT_EQ(kEvents[i].size, event->size); 343 EXPECT_EQ(kEvents[i].size, event->size);
364 kEvents[i].dispatchType = 344 kEvents[i].dispatchType =
365 WebInputEvent::DispatchType::ListenersNonBlockingPassive; 345 WebInputEvent::DispatchType::ListenersNonBlockingPassive;
366 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 346 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0);
367 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, 347 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING,
368 dispatch_type); 348 dispatch_type);
369 } 349 }
370 350
371 // Third message is coalesced. 351 // Third message is coalesced.
372 { 352 {
373 const IPC::Message& message = message_recorder_.message_at(2); 353 const IPC::Message& message = message_recorder_.message_at(2);
374 354
375 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 355 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
376 InputMsg_HandleInputEvent::Param params; 356 InputMsg_HandleInputEvent::Param params;
377 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 357 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
378 const WebMouseWheelEvent* event = 358 const WebMouseWheelEvent* event =
379 static_cast<const WebMouseWheelEvent*>(std::get<0>(params)); 359 static_cast<const WebMouseWheelEvent*>(std::get<0>(params));
380 InputEventDispatchType dispatch_type = std::get<2>(params); 360 InputEventDispatchType dispatch_type = std::get<2>(params);
381 361
382 kEvents[2].dispatchType = 362 kEvents[2].dispatchType =
383 WebInputEvent::DispatchType::ListenersNonBlockingPassive; 363 WebInputEvent::DispatchType::ListenersNonBlockingPassive;
384 EXPECT_EQ(kEvents[2].size, event->size); 364 EXPECT_EQ(kEvents[2].size, event->size);
385 EXPECT_EQ(kEvents[2].deltaX + kEvents[3].deltaX, event->deltaX); 365 EXPECT_EQ(kEvents[2].deltaX + kEvents[3].deltaX, event->deltaX);
386 EXPECT_EQ(kEvents[2].deltaY + kEvents[3].deltaY, event->deltaY); 366 EXPECT_EQ(kEvents[2].deltaY + kEvents[3].deltaY, event->deltaY);
387 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, 367 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING,
388 dispatch_type); 368 dispatch_type);
389 } 369 }
390 } 370 }
391 371
392 TEST_F(InputEventFilterTest, NonBlockingTouch) { 372 TEST_F(InputEventFilterTest, NonBlockingTouch) {
393 SyntheticWebTouchEvent kEvents[4]; 373 SyntheticWebTouchEvent kEvents[4];
394 kEvents[0].PressPoint(10, 10); 374 kEvents[0].PressPoint(10, 10);
395 kEvents[1].PressPoint(10, 10); 375 kEvents[1].PressPoint(10, 10);
396 kEvents[1].modifiers = 1; 376 kEvents[1].modifiers = 1;
397 kEvents[1].MovePoint(0, 20, 20); 377 kEvents[1].MovePoint(0, 20, 20);
398 kEvents[2].PressPoint(10, 10); 378 kEvents[2].PressPoint(10, 10);
399 kEvents[2].MovePoint(0, 30, 30); 379 kEvents[2].MovePoint(0, 30, 30);
400 kEvents[3].PressPoint(10, 10); 380 kEvents[3].PressPoint(10, 10);
401 kEvents[3].MovePoint(0, 35, 35); 381 kEvents[3].MovePoint(0, 35, 35);
402 382
403 filter_->RegisterRoutingID(kTestRoutingID); 383 filter_->RegisterRoutingID(kTestRoutingID);
404 event_recorder_.set_send_to_widget(true); 384 event_recorder_.set_send_to_widget(true);
405 event_recorder_.set_passive(true); 385 event_recorder_.set_passive(true);
406 386
407 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); 387 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
408 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); 388 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count());
409 ASSERT_EQ(4u, ipc_sink_.message_count()); 389 ASSERT_EQ(4u, ipc_sink_.message_count());
410 390
411 // First event is sent right away. 391 // All events are handled and one set was coalesced.
412 EXPECT_EQ(1u, message_recorder_.message_count());
413
414 // Second event was queued; ack the first.
415 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchStart,
416 INPUT_EVENT_ACK_STATE_CONSUMED);
417 base::RunLoop().RunUntilIdle();
418 ASSERT_EQ(4u, ipc_sink_.message_count());
419 EXPECT_EQ(2u, message_recorder_.message_count());
420
421 // Third event won't be coalesced into the second because modifiers are
422 // different.
423 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchMove,
424 INPUT_EVENT_ACK_STATE_CONSUMED);
425 base::RunLoop().RunUntilIdle();
426 EXPECT_EQ(3u, message_recorder_.message_count());
427
428 // The last events will be coalesced.
429 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchMove,
430 INPUT_EVENT_ACK_STATE_CONSUMED);
431 base::RunLoop().RunUntilIdle();
432 EXPECT_EQ(3u, message_recorder_.message_count()); 392 EXPECT_EQ(3u, message_recorder_.message_count());
433 393
434 // First two messages should be identical. 394 // First two messages should be identical.
435 for (size_t i = 0; i < 2; ++i) { 395 for (size_t i = 0; i < 2; ++i) {
436 const IPC::Message& message = message_recorder_.message_at(i); 396 const IPC::Message& message = message_recorder_.message_at(i);
437 397
438 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 398 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
439 InputMsg_HandleInputEvent::Param params; 399 InputMsg_HandleInputEvent::Param params;
440 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 400 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
441 const WebInputEvent* event = std::get<0>(params); 401 const WebInputEvent* event = std::get<0>(params);
442 InputEventDispatchType dispatch_type = std::get<2>(params); 402 InputEventDispatchType dispatch_type = std::get<2>(params);
443 403
444 EXPECT_EQ(kEvents[i].size, event->size); 404 EXPECT_EQ(kEvents[i].size, event->size);
445 kEvents[i].dispatchType = 405 kEvents[i].dispatchType =
446 WebInputEvent::DispatchType::ListenersNonBlockingPassive; 406 WebInputEvent::DispatchType::ListenersNonBlockingPassive;
447 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 407 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0);
448 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, 408 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING,
449 dispatch_type); 409 dispatch_type);
450 } 410 }
451 411
452 // Third message is coalesced. 412 // Third message is coalesced.
453 { 413 {
454 const IPC::Message& message = message_recorder_.message_at(2); 414 const IPC::Message& message = message_recorder_.message_at(2);
455 415
456 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 416 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
457 InputMsg_HandleInputEvent::Param params; 417 InputMsg_HandleInputEvent::Param params;
458 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 418 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
459 const WebTouchEvent* event = 419 const WebTouchEvent* event =
460 static_cast<const WebTouchEvent*>(std::get<0>(params)); 420 static_cast<const WebTouchEvent*>(std::get<0>(params));
461 InputEventDispatchType dispatch_type = std::get<2>(params); 421 InputEventDispatchType dispatch_type = std::get<2>(params);
462 422
463 EXPECT_EQ(kEvents[3].size, event->size); 423 EXPECT_EQ(kEvents[3].size, event->size);
464 EXPECT_EQ(1u, kEvents[3].touchesLength); 424 EXPECT_EQ(1u, kEvents[3].touchesLength);
465 EXPECT_EQ(kEvents[3].touches[0].position.x, event->touches[0].position.x); 425 EXPECT_EQ(kEvents[3].touches[0].position.x, event->touches[0].position.x);
466 EXPECT_EQ(kEvents[3].touches[0].position.y, event->touches[0].position.y); 426 EXPECT_EQ(kEvents[3].touches[0].position.y, event->touches[0].position.y);
467 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, 427 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING,
468 dispatch_type); 428 dispatch_type);
469 } 429 }
470 } 430 }
471 431
472 TEST_F(InputEventFilterTest, IntermingledNonBlockingTouch) { 432 TEST_F(InputEventFilterTest, IntermingledNonBlockingTouch) {
473 SyntheticWebTouchEvent kEvents[2]; 433 SyntheticWebTouchEvent kEvents[2];
474 kEvents[0].PressPoint(10, 10); 434 kEvents[0].PressPoint(10, 10);
475 kEvents[1].PressPoint(10, 10); 435 kEvents[1].PressPoint(10, 10);
476 kEvents[1].ReleasePoint(0); 436 kEvents[1].ReleasePoint(0);
477 SyntheticWebTouchEvent kBlockingEvents[1]; 437 SyntheticWebTouchEvent kBlockingEvents[1];
478 kBlockingEvents[0].PressPoint(10, 10); 438 kBlockingEvents[0].PressPoint(10, 10);
479 439
480 filter_->RegisterRoutingID(kTestRoutingID); 440 filter_->RegisterRoutingID(kTestRoutingID);
481 event_recorder_.set_send_to_widget(true); 441 event_recorder_.set_send_to_widget(true);
482 event_recorder_.set_passive(true); 442 event_recorder_.set_passive(true);
483 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); 443 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
484 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); 444 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count());
485 445
486 event_recorder_.set_passive(false); 446 event_recorder_.set_passive(false);
487 AddEventsToFilter(filter_.get(), kBlockingEvents, arraysize(kBlockingEvents)); 447 AddEventsToFilter(filter_.get(), kBlockingEvents, arraysize(kBlockingEvents));
488 EXPECT_EQ(arraysize(kEvents) + arraysize(kBlockingEvents), 448 EXPECT_EQ(arraysize(kEvents) + arraysize(kBlockingEvents),
489 event_recorder_.record_count()); 449 event_recorder_.record_count());
490 ASSERT_EQ(3u, event_recorder_.record_count()); 450 ASSERT_EQ(3u, event_recorder_.record_count());
451 EXPECT_EQ(3u, message_recorder_.message_count());
491 452
492 { 453 {
493 // First event is sent right away.
494 EXPECT_EQ(1u, message_recorder_.message_count());
495
496 const IPC::Message& message = message_recorder_.message_at(0); 454 const IPC::Message& message = message_recorder_.message_at(0);
497 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 455 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
498 InputMsg_HandleInputEvent::Param params; 456 InputMsg_HandleInputEvent::Param params;
499 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 457 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
500 const WebInputEvent* event = std::get<0>(params); 458 const WebInputEvent* event = std::get<0>(params);
501 InputEventDispatchType dispatch_type = std::get<2>(params); 459 InputEventDispatchType dispatch_type = std::get<2>(params);
502 460
503 EXPECT_EQ(kEvents[0].size, event->size); 461 EXPECT_EQ(kEvents[0].size, event->size);
504 kEvents[0].dispatchType = 462 kEvents[0].dispatchType =
505 WebInputEvent::DispatchType::ListenersNonBlockingPassive; 463 WebInputEvent::DispatchType::ListenersNonBlockingPassive;
506 EXPECT_TRUE(memcmp(&kEvents[0], event, event->size) == 0); 464 EXPECT_TRUE(memcmp(&kEvents[0], event, event->size) == 0);
507 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, 465 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING,
508 dispatch_type); 466 dispatch_type);
509 } 467 }
510 468
511 { 469 {
512 // Second event was queued; ack the first.
513 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchStart,
514 INPUT_EVENT_ACK_STATE_CONSUMED);
515 base::RunLoop().RunUntilIdle();
516 EXPECT_EQ(2u, message_recorder_.message_count());
517
518 const IPC::Message& message = message_recorder_.message_at(1); 470 const IPC::Message& message = message_recorder_.message_at(1);
519 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 471 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
520 InputMsg_HandleInputEvent::Param params; 472 InputMsg_HandleInputEvent::Param params;
521 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 473 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
522 const WebInputEvent* event = std::get<0>(params); 474 const WebInputEvent* event = std::get<0>(params);
523 InputEventDispatchType dispatch_type = std::get<2>(params); 475 InputEventDispatchType dispatch_type = std::get<2>(params);
524 476
525 EXPECT_EQ(kEvents[1].size, event->size); 477 EXPECT_EQ(kEvents[1].size, event->size);
526 kEvents[1].dispatchType = 478 kEvents[1].dispatchType =
527 WebInputEvent::DispatchType::ListenersNonBlockingPassive; 479 WebInputEvent::DispatchType::ListenersNonBlockingPassive;
528 EXPECT_TRUE(memcmp(&kEvents[1], event, event->size) == 0); 480 EXPECT_TRUE(memcmp(&kEvents[1], event, event->size) == 0);
529 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, 481 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING,
530 dispatch_type); 482 dispatch_type);
531 } 483 }
532 484
533 { 485 {
534 // Third event should be put in the queue.
535 filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchEnd,
536 INPUT_EVENT_ACK_STATE_CONSUMED);
537 base::RunLoop().RunUntilIdle();
538 EXPECT_EQ(3u, message_recorder_.message_count());
539
540 const IPC::Message& message = message_recorder_.message_at(2); 486 const IPC::Message& message = message_recorder_.message_at(2);
541 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 487 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
542 InputMsg_HandleInputEvent::Param params; 488 InputMsg_HandleInputEvent::Param params;
543 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params)); 489 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, &params));
544 const WebInputEvent* event = std::get<0>(params); 490 const WebInputEvent* event = std::get<0>(params);
545 InputEventDispatchType dispatch_type = std::get<2>(params); 491 InputEventDispatchType dispatch_type = std::get<2>(params);
546 492
547 EXPECT_EQ(kBlockingEvents[0].size, event->size); 493 EXPECT_EQ(kBlockingEvents[0].size, event->size);
548 EXPECT_TRUE(memcmp(&kBlockingEvents[0], event, event->size) == 0); 494 EXPECT_TRUE(memcmp(&kBlockingEvents[0], event, event->size) == 0);
549 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN, 495 EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_BLOCKING, dispatch_type);
550 dispatch_type);
551 } 496 }
552 } 497 }
553 498
554 } // namespace content 499 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698