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 "content/renderer/scheduler/renderer_scheduler_impl.h" | 5 #include "content/renderer/scheduler/renderer_scheduler_impl.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "cc/output/begin_frame_args.h" | 8 #include "cc/output/begin_frame_args.h" |
9 #include "cc/test/ordered_simple_task_runner.h" | 9 #include "cc/test/ordered_simple_task_runner.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 | 378 |
379 scheduler_->DidAnimateForInputOnCompositorThread(); | 379 scheduler_->DidAnimateForInputOnCompositorThread(); |
380 EnableIdleTasks(); | 380 EnableIdleTasks(); |
381 RunUntilIdle(); | 381 RunUntilIdle(); |
382 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("C2"), | 382 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("C2"), |
383 std::string("D1"), std::string("D2"), | 383 std::string("D1"), std::string("D2"), |
384 std::string("I1"))); | 384 std::string("I1"))); |
385 } | 385 } |
386 | 386 |
387 TEST_F(RendererSchedulerImplTest, | 387 TEST_F(RendererSchedulerImplTest, |
388 DidReceiveInputEventOnCompositorThread_IgnoresMouseEvents) { | 388 DidReceiveInputEventOnCompositorThread_IgnoresMouseMove_InIsolation) { |
389 std::vector<std::string> order; | 389 std::vector<std::string> order; |
390 | 390 |
391 idle_task_runner_->PostIdleTask( | 391 idle_task_runner_->PostIdleTask( |
392 FROM_HERE, | 392 FROM_HERE, |
393 base::Bind(&AppendToVectorIdleTestTask, &order, std::string("I1"))); | 393 base::Bind(&AppendToVectorIdleTestTask, &order, std::string("I1"))); |
394 default_task_runner_->PostTask( | 394 default_task_runner_->PostTask( |
395 FROM_HERE, | 395 FROM_HERE, |
396 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); | 396 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); |
397 compositor_task_runner_->PostTask( | 397 compositor_task_runner_->PostTask( |
398 FROM_HERE, | 398 FROM_HERE, |
399 base::Bind(&AppendToVectorTestTask, &order, std::string("C1"))); | 399 base::Bind(&AppendToVectorTestTask, &order, std::string("C1"))); |
400 default_task_runner_->PostTask( | 400 default_task_runner_->PostTask( |
401 FROM_HERE, | 401 FROM_HERE, |
402 base::Bind(&AppendToVectorTestTask, &order, std::string("D2"))); | 402 base::Bind(&AppendToVectorTestTask, &order, std::string("D2"))); |
403 compositor_task_runner_->PostTask( | 403 compositor_task_runner_->PostTask( |
404 FROM_HERE, | 404 FROM_HERE, |
405 base::Bind(&AppendToVectorTestTask, &order, std::string("C2"))); | 405 base::Bind(&AppendToVectorTestTask, &order, std::string("C2"))); |
406 | 406 |
407 scheduler_->DidReceiveInputEventOnCompositorThread( | 407 scheduler_->DidReceiveInputEventOnCompositorThread( |
408 blink::WebInputEvent::MouseMove); | 408 blink::WebInputEvent::MouseMove); |
409 EnableIdleTasks(); | 409 EnableIdleTasks(); |
410 RunUntilIdle(); | 410 RunUntilIdle(); |
411 // Note compositor tasks are not prioritized. | 411 // Note compositor tasks are not prioritized. |
412 EXPECT_THAT(order, testing::ElementsAre(std::string("D1"), std::string("C1"), | 412 EXPECT_THAT(order, testing::ElementsAre(std::string("D1"), std::string("C1"), |
413 std::string("D2"), std::string("C2"), | 413 std::string("D2"), std::string("C2"), |
414 std::string("I1"))); | 414 std::string("I1"))); |
415 } | 415 } |
416 | 416 |
417 TEST_F(RendererSchedulerImplTest, | 417 TEST_F(RendererSchedulerImplTest, |
| 418 DidReceiveInputEventOnCompositorThread_IgnoresMouseMove_WhenMouseUp) { |
| 419 std::vector<std::string> order; |
| 420 |
| 421 idle_task_runner_->PostIdleTask( |
| 422 FROM_HERE, |
| 423 base::Bind(&AppendToVectorIdleTestTask, &order, std::string("I1"))); |
| 424 default_task_runner_->PostTask( |
| 425 FROM_HERE, |
| 426 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); |
| 427 compositor_task_runner_->PostTask( |
| 428 FROM_HERE, |
| 429 base::Bind(&AppendToVectorTestTask, &order, std::string("C1"))); |
| 430 default_task_runner_->PostTask( |
| 431 FROM_HERE, |
| 432 base::Bind(&AppendToVectorTestTask, &order, std::string("D2"))); |
| 433 compositor_task_runner_->PostTask( |
| 434 FROM_HERE, |
| 435 base::Bind(&AppendToVectorTestTask, &order, std::string("C2"))); |
| 436 |
| 437 scheduler_->DidReceiveInputEventOnCompositorThread( |
| 438 blink::WebInputEvent::MouseDown); |
| 439 scheduler_->DidReceiveInputEventOnCompositorThread( |
| 440 blink::WebInputEvent::MouseUp); |
| 441 scheduler_->DidReceiveInputEventOnCompositorThread( |
| 442 blink::WebInputEvent::MouseMove); |
| 443 EnableIdleTasks(); |
| 444 RunUntilIdle(); |
| 445 // Note compositor tasks are not prioritized. |
| 446 EXPECT_THAT(order, testing::ElementsAre(std::string("D1"), std::string("C1"), |
| 447 std::string("D2"), std::string("C2"), |
| 448 std::string("I1"))); |
| 449 } |
| 450 |
| 451 TEST_F(RendererSchedulerImplTest, |
| 452 DidReceiveInputEventOnCompositorThread_MouseMove_WhenMouseDown) { |
| 453 std::vector<std::string> order; |
| 454 |
| 455 idle_task_runner_->PostIdleTask( |
| 456 FROM_HERE, |
| 457 base::Bind(&AppendToVectorIdleTestTask, &order, std::string("I1"))); |
| 458 default_task_runner_->PostTask( |
| 459 FROM_HERE, |
| 460 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); |
| 461 compositor_task_runner_->PostTask( |
| 462 FROM_HERE, |
| 463 base::Bind(&AppendToVectorTestTask, &order, std::string("C1"))); |
| 464 default_task_runner_->PostTask( |
| 465 FROM_HERE, |
| 466 base::Bind(&AppendToVectorTestTask, &order, std::string("D2"))); |
| 467 compositor_task_runner_->PostTask( |
| 468 FROM_HERE, |
| 469 base::Bind(&AppendToVectorTestTask, &order, std::string("C2"))); |
| 470 |
| 471 scheduler_->DidReceiveInputEventOnCompositorThread( |
| 472 blink::WebInputEvent::MouseDown); |
| 473 scheduler_->DidReceiveInputEventOnCompositorThread( |
| 474 blink::WebInputEvent::MouseMove); |
| 475 EnableIdleTasks(); |
| 476 RunUntilIdle(); |
| 477 // Note compositor tasks are not prioritized. |
| 478 EXPECT_THAT(order, testing::ElementsAre(std::string("C1"), std::string("C2"), |
| 479 std::string("D1"), std::string("D2"), |
| 480 std::string("I1"))); |
| 481 } |
| 482 |
| 483 TEST_F(RendererSchedulerImplTest, |
418 DidReceiveInputEventOnCompositorThread_IgnoresKeyboardEvents) { | 484 DidReceiveInputEventOnCompositorThread_IgnoresKeyboardEvents) { |
419 std::vector<std::string> order; | 485 std::vector<std::string> order; |
420 | 486 |
421 idle_task_runner_->PostIdleTask( | 487 idle_task_runner_->PostIdleTask( |
422 FROM_HERE, | 488 FROM_HERE, |
423 base::Bind(&AppendToVectorIdleTestTask, &order, std::string("I1"))); | 489 base::Bind(&AppendToVectorIdleTestTask, &order, std::string("I1"))); |
424 default_task_runner_->PostTask( | 490 default_task_runner_->PostTask( |
425 FROM_HERE, | 491 FROM_HERE, |
426 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); | 492 base::Bind(&AppendToVectorTestTask, &order, std::string("D1"))); |
427 compositor_task_runner_->PostTask( | 493 compositor_task_runner_->PostTask( |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), | 647 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), |
582 compositor_task_runner_, true, &should_yield_before, | 648 compositor_task_runner_, true, &should_yield_before, |
583 &should_yield_after)); | 649 &should_yield_after)); |
584 RunUntilIdle(); | 650 RunUntilIdle(); |
585 // We should be able to switch to compositor priority mid-task. | 651 // We should be able to switch to compositor priority mid-task. |
586 EXPECT_FALSE(should_yield_before); | 652 EXPECT_FALSE(should_yield_before); |
587 EXPECT_TRUE(should_yield_after); | 653 EXPECT_TRUE(should_yield_after); |
588 } | 654 } |
589 | 655 |
590 } // namespace content | 656 } // namespace content |
OLD | NEW |