OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/scheduler/scheduler.h" | 5 #include "cc/scheduler/scheduler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 EXPECT_SCOPED(client.AdvanceFrame()); | 486 EXPECT_SCOPED(client.AdvanceFrame()); |
487 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); | 487 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); |
488 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); | 488 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
489 client.Reset(); | 489 client.Reset(); |
490 | 490 |
491 client.task_runner().RunPendingTasks(); // Run posted deadline. | 491 client.task_runner().RunPendingTasks(); // Run posted deadline. |
492 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); | 492 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); |
493 client.Reset(); | 493 client.Reset(); |
494 } | 494 } |
495 | 495 |
| 496 TEST(SchedulerTest, RequestCommitAfterSetDeferCommit) { |
| 497 FakeSchedulerClient client; |
| 498 SchedulerSettings scheduler_settings; |
| 499 scheduler_settings.use_external_begin_frame_source = true; |
| 500 |
| 501 CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
| 502 |
| 503 scheduler->SetCanStart(); |
| 504 scheduler->SetVisible(true); |
| 505 scheduler->SetCanDraw(true); |
| 506 |
| 507 scheduler->SetDeferCommits(true); |
| 508 |
| 509 scheduler->SetNeedsCommit(); |
| 510 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
| 511 |
| 512 client.Reset(); |
| 513 client.AdvanceFrame(); |
| 514 // BeginMainFrame is not sent during the defer commit is on. |
| 515 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); |
| 516 |
| 517 client.Reset(); |
| 518 client.task_runner().RunPendingTasks(); // Run posted deadline. |
| 519 // There is no posted deadline. |
| 520 EXPECT_NO_ACTION(client); |
| 521 EXPECT_TRUE(client.needs_begin_frames()); |
| 522 |
| 523 client.Reset(); |
| 524 scheduler->SetDeferCommits(false); |
| 525 EXPECT_NO_ACTION(client); |
| 526 |
| 527 // Start new BeginMainFrame after defer commit is off. |
| 528 client.Reset(); |
| 529 client.AdvanceFrame(); |
| 530 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
| 531 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2); |
| 532 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
| 533 } |
| 534 |
| 535 TEST(SchedulerTest, DeferCommitWithRedraw) { |
| 536 FakeSchedulerClient client; |
| 537 SchedulerSettings scheduler_settings; |
| 538 scheduler_settings.use_external_begin_frame_source = true; |
| 539 |
| 540 CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
| 541 |
| 542 scheduler->SetCanStart(); |
| 543 scheduler->SetVisible(true); |
| 544 scheduler->SetCanDraw(true); |
| 545 |
| 546 scheduler->SetDeferCommits(true); |
| 547 |
| 548 scheduler->SetNeedsCommit(); |
| 549 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
| 550 |
| 551 client.Reset(); |
| 552 scheduler->SetNeedsRedraw(); |
| 553 EXPECT_NO_ACTION(client); |
| 554 |
| 555 client.Reset(); |
| 556 client.AdvanceFrame(); |
| 557 // BeginMainFrame is not sent during the defer commit is on. |
| 558 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2); |
| 559 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
| 560 |
| 561 client.Reset(); |
| 562 client.task_runner().RunPendingTasks(); // Run posted deadline. |
| 563 EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client); |
| 564 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); |
| 565 EXPECT_TRUE(client.needs_begin_frames()); |
| 566 |
| 567 client.Reset(); |
| 568 client.AdvanceFrame(); |
| 569 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); |
| 570 } |
| 571 |
496 TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) { | 572 TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) { |
497 FakeSchedulerClient client; | 573 FakeSchedulerClient client; |
498 SchedulerSettings scheduler_settings; | 574 SchedulerSettings scheduler_settings; |
499 scheduler_settings.use_external_begin_frame_source = true; | 575 scheduler_settings.use_external_begin_frame_source = true; |
500 | 576 |
501 CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); | 577 CREATE_SCHEDULER_AND_INIT_SURFACE(scheduler_settings); |
502 | 578 |
503 // SetNeedsCommit should begin the frame. | 579 // SetNeedsCommit should begin the frame. |
504 scheduler->SetNeedsCommit(); | 580 scheduler->SetNeedsCommit(); |
505 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); | 581 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client); |
(...skipping 1807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2313 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); | 2389 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2); |
2314 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); | 2390 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); |
2315 EXPECT_TRUE(client.needs_begin_frames()); | 2391 EXPECT_TRUE(client.needs_begin_frames()); |
2316 client.Reset(); | 2392 client.Reset(); |
2317 client.task_runner().RunPendingTasks(); // Run posted deadline. | 2393 client.task_runner().RunPendingTasks(); // Run posted deadline. |
2318 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 1); | 2394 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 1); |
2319 } | 2395 } |
2320 | 2396 |
2321 } // namespace | 2397 } // namespace |
2322 } // namespace cc | 2398 } // namespace cc |
OLD | NEW |