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

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 6 years 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 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 client.AdvanceFrame(); 456 client.AdvanceFrame();
457 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client); 457 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
458 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 458 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
459 client.Reset(); 459 client.Reset();
460 460
461 client.task_runner().RunPendingTasks(); // Run posted deadline. 461 client.task_runner().RunPendingTasks(); // Run posted deadline.
462 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client); 462 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client);
463 client.Reset(); 463 client.Reset();
464 } 464 }
465 465
466 TEST(SchedulerTest, RequestCommitAfterSetDeferCommit) {
467 FakeSchedulerClient client;
468 SchedulerSettings scheduler_settings;
469 scheduler_settings.use_external_begin_frame_source = true;
470 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
471 scheduler->SetCanStart();
472 scheduler->SetVisible(true);
473 scheduler->SetCanDraw(true);
474
475 InitializeOutputSurfaceAndFirstCommit(scheduler, &client);
476 client.Reset();
477
478 scheduler->SetDeferCommits(true);
479
480 scheduler->SetNeedsCommit();
481 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client);
482
483 client.Reset();
484 client.AdvanceFrame();
485 // BeginMainFrame is not sent during the defer commit is on.
486 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
487
488 client.Reset();
489 client.task_runner().RunPendingTasks(); // Run posted deadline.
490 // There is no posted deadline.
491 EXPECT_NO_ACTION(client);
492 EXPECT_TRUE(client.needs_begin_frames());
493
494 client.Reset();
495 scheduler->SetDeferCommits(false);
496 EXPECT_NO_ACTION(client);
497
498 // Start new BeginMainFrame after defer commit is off.
499 client.Reset();
500 client.AdvanceFrame();
501 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
502 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
503 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
504 }
505
506 TEST(SchedulerTest, DeferCommitWithRedraw) {
507 FakeSchedulerClient client;
508 SchedulerSettings scheduler_settings;
509 scheduler_settings.use_external_begin_frame_source = true;
510 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
511 scheduler->SetCanStart();
512 scheduler->SetVisible(true);
513 scheduler->SetCanDraw(true);
514
515 InitializeOutputSurfaceAndFirstCommit(scheduler, &client);
516 client.Reset();
517
518 scheduler->SetDeferCommits(true);
519
520 scheduler->SetNeedsCommit();
521 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client);
522
523 client.Reset();
524 scheduler->SetNeedsRedraw();
525 EXPECT_NO_ACTION(client);
526
527 client.Reset();
528 client.AdvanceFrame();
529 // BeginMainFrame is not sent during the defer commit is on.
530 EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
531 EXPECT_ACTION("ScheduledActionAnimate", client, 1, 2);
532
533 client.Reset();
534 client.task_runner().RunPendingTasks(); // Run posted deadline.
535 EXPECT_SINGLE_ACTION("ScheduledActionDrawAndSwapIfPossible", client);
536 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
537 EXPECT_TRUE(client.needs_begin_frames());
538
539 client.Reset();
540 client.AdvanceFrame();
541 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client);
542 }
543
466 TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) { 544 TEST(SchedulerTest, RequestCommitAfterBeginMainFrameSent) {
467 FakeSchedulerClient client; 545 FakeSchedulerClient client;
468 SchedulerSettings scheduler_settings; 546 SchedulerSettings scheduler_settings;
469 scheduler_settings.use_external_begin_frame_source = true; 547 scheduler_settings.use_external_begin_frame_source = true;
470 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings); 548 TestScheduler* scheduler = client.CreateScheduler(scheduler_settings);
471 scheduler->SetCanStart(); 549 scheduler->SetCanStart();
472 scheduler->SetVisible(true); 550 scheduler->SetVisible(true);
473 scheduler->SetCanDraw(true); 551 scheduler->SetCanDraw(true);
474 552
475 EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client); 553 EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
(...skipping 1790 matching lines...) Expand 10 before | Expand all | Expand 10 after
2266 2344
2267 // Deadline task is pending 2345 // Deadline task is pending
2268 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending()); 2346 EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
2269 client.task_runner().RunPendingTasks(); 2347 client.task_runner().RunPendingTasks();
2270 // Deadline task runs immediately 2348 // Deadline task runs immediately
2271 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending()); 2349 EXPECT_FALSE(scheduler->BeginImplFrameDeadlinePending());
2272 } 2350 }
2273 2351
2274 } // namespace 2352 } // namespace
2275 } // namespace cc 2353 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698