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

Side by Side Diff: cc/scheduler/scheduler_unittest.cc

Issue 337693005: cc: Control defer_commits logic by Scheduler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 5 years, 11 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 | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698