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

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

Issue 775143003: cc: Implement unified BeginFrame on aura (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add unittest Created 5 years, 9 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 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/logging.h" 10 #include "base/logging.h"
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 scheduler_->SetCanDraw(true); 427 scheduler_->SetCanDraw(true);
428 428
429 EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client_); 429 EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client_);
430 client_->Reset(); 430 client_->Reset();
431 scheduler_->DidCreateAndInitializeOutputSurface(); 431 scheduler_->DidCreateAndInitializeOutputSurface();
432 EXPECT_NO_ACTION(client_); 432 EXPECT_NO_ACTION(client_);
433 } 433 }
434 434
435 TEST_F(SchedulerTest, SendBeginFramesToChildren) { 435 TEST_F(SchedulerTest, SendBeginFramesToChildren) {
436 scheduler_settings_.use_external_begin_frame_source = true; 436 scheduler_settings_.use_external_begin_frame_source = true;
437 scheduler_settings_.forward_begin_frames_to_children = true;
438 SetUpScheduler(true); 437 SetUpScheduler(true);
439 438
440 EXPECT_FALSE(client_->begin_frame_is_sent_to_children()); 439 EXPECT_FALSE(client_->begin_frame_is_sent_to_children());
441 scheduler_->SetNeedsCommit(); 440 scheduler_->SetNeedsCommit();
442 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_); 441 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_);
443 EXPECT_TRUE(client_->needs_begin_frames()); 442 EXPECT_TRUE(client_->needs_begin_frames());
444 443
445 scheduler_->SetChildrenNeedBeginFrames(true); 444 scheduler_->SetChildrenNeedBeginFrames(true);
446 445
447 client_->Reset(); 446 client_->Reset();
448 EXPECT_SCOPED(AdvanceFrame()); 447 EXPECT_SCOPED(AdvanceFrame());
449 EXPECT_TRUE(client_->begin_frame_is_sent_to_children()); 448 EXPECT_TRUE(client_->begin_frame_is_sent_to_children());
450 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 449 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
451 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); 450 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
452 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2); 451 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
453 EXPECT_TRUE(client_->needs_begin_frames()); 452 EXPECT_TRUE(client_->needs_begin_frames());
454 } 453 }
455 454
456 TEST_F(SchedulerTest, SendBeginFramesToChildrenWithoutCommit) { 455 TEST_F(SchedulerTest, SendBeginFramesToChildrenWithoutCommit) {
457 scheduler_settings_.use_external_begin_frame_source = true; 456 scheduler_settings_.use_external_begin_frame_source = true;
458 scheduler_settings_.forward_begin_frames_to_children = true;
459 SetUpScheduler(true); 457 SetUpScheduler(true);
460 458
461 EXPECT_FALSE(client_->needs_begin_frames()); 459 EXPECT_FALSE(client_->needs_begin_frames());
462 scheduler_->SetChildrenNeedBeginFrames(true); 460 scheduler_->SetChildrenNeedBeginFrames(true);
463 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_); 461 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_);
464 EXPECT_TRUE(client_->needs_begin_frames()); 462 EXPECT_TRUE(client_->needs_begin_frames());
465 463
466 client_->Reset(); 464 client_->Reset();
467 EXPECT_SCOPED(AdvanceFrame()); 465 EXPECT_SCOPED(AdvanceFrame());
468 EXPECT_TRUE(client_->begin_frame_is_sent_to_children()); 466 EXPECT_TRUE(client_->begin_frame_is_sent_to_children());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 task_runner().RunPendingTasks(); // Run posted deadline. 521 task_runner().RunPendingTasks(); // Run posted deadline.
524 EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2); 522 EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2);
525 EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2); 523 EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2);
526 client_->Reset(); 524 client_->Reset();
527 } 525 }
528 526
529 TEST_F(SchedulerTest, RequestCommitAfterSetDeferCommit) { 527 TEST_F(SchedulerTest, RequestCommitAfterSetDeferCommit) {
530 scheduler_settings_.use_external_begin_frame_source = true; 528 scheduler_settings_.use_external_begin_frame_source = true;
531 SetUpScheduler(true); 529 SetUpScheduler(true);
532 530
533 scheduler_->SetCanStart();
534 scheduler_->SetVisible(true);
535 scheduler_->SetCanDraw(true);
536
537 scheduler_->SetDeferCommits(true); 531 scheduler_->SetDeferCommits(true);
538 532
539 scheduler_->SetNeedsCommit(); 533 scheduler_->SetNeedsCommit();
540 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_); 534 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_);
541 535
542 client_->Reset(); 536 client_->Reset();
543 AdvanceFrame(); 537 AdvanceFrame();
544 // BeginMainFrame is not sent during the defer commit is on. 538 // BeginMainFrame is not sent during the defer commit is on.
545 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_); 539 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
546 540
(...skipping 12 matching lines...) Expand all
559 AdvanceFrame(); 553 AdvanceFrame();
560 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2); 554 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
561 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2); 555 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
562 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 556 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
563 } 557 }
564 558
565 TEST_F(SchedulerTest, DeferCommitWithRedraw) { 559 TEST_F(SchedulerTest, DeferCommitWithRedraw) {
566 scheduler_settings_.use_external_begin_frame_source = true; 560 scheduler_settings_.use_external_begin_frame_source = true;
567 SetUpScheduler(true); 561 SetUpScheduler(true);
568 562
569 scheduler_->SetCanStart();
570 scheduler_->SetVisible(true);
571 scheduler_->SetCanDraw(true);
572
573 scheduler_->SetDeferCommits(true); 563 scheduler_->SetDeferCommits(true);
574 564
575 scheduler_->SetNeedsCommit(); 565 scheduler_->SetNeedsCommit();
576 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_); 566 EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_);
577 567
578 client_->Reset(); 568 client_->Reset();
579 scheduler_->SetNeedsRedraw(); 569 scheduler_->SetNeedsRedraw();
580 EXPECT_NO_ACTION(client_); 570 EXPECT_NO_ACTION(client_);
581 571
582 client_->Reset(); 572 client_->Reset();
(...skipping 1806 matching lines...) Expand 10 before | Expand all | Expand 10 after
2389 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_); 2379 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
2390 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 2380 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
2391 client_->Reset(); 2381 client_->Reset();
2392 2382
2393 task_runner().RunPendingTasks(); // Run posted deadline. 2383 task_runner().RunPendingTasks(); // Run posted deadline.
2394 EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2); 2384 EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2);
2395 EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2); 2385 EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2);
2396 client_->Reset(); 2386 client_->Reset();
2397 } 2387 }
2398 2388
2389 TEST_F(SchedulerTest, AuthoritativeVSyncInterval) {
2390 SetUpScheduler(true);
2391
2392 base::TimeDelta initial_interval =
2393 scheduler_->begin_impl_frame_args().interval;
2394 base::TimeDelta authoritative_interval =
2395 base::TimeDelta::FromMilliseconds(33);
2396
2397 scheduler_->SetNeedsCommit();
2398 EXPECT_SCOPED(AdvanceFrame());
2399
2400 EXPECT_EQ(initial_interval, scheduler_->begin_impl_frame_args().interval);
2401
2402 scheduler_->NotifyBeginMainFrameStarted();
2403 scheduler_->NotifyReadyToCommit();
2404 task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true));
2405
2406 scheduler_->SetAuthoritativeVSyncInterval(authoritative_interval);
2407
2408 EXPECT_SCOPED(AdvanceFrame());
2409
2410 // At the next BeginFrame, authoritative interval is used instead of previous
2411 // interval.
2412 EXPECT_NE(initial_interval, scheduler_->begin_impl_frame_args().interval);
2413 EXPECT_EQ(authoritative_interval,
2414 scheduler_->begin_impl_frame_args().interval);
2415 }
2416
2399 } // namespace 2417 } // namespace
2400 } // namespace cc 2418 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698