Index: cc/scheduler/scheduler_unittest.cc |
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc |
index 106cbd40fd5ad643a89e21cccdb341f948383ae3..c643726bc993b27dfcb93af8a7d4712e55956187 100644 |
--- a/cc/scheduler/scheduler_unittest.cc |
+++ b/cc/scheduler/scheduler_unittest.cc |
@@ -454,6 +454,37 @@ TEST_F(SchedulerTest, SendBeginFramesToChildrenWithoutCommit) { |
EXPECT_TRUE(client_->begin_frame_is_sent_to_children()); |
} |
+TEST_F(SchedulerTest, VideoNeedsBeginFrames) { |
+ scheduler_settings_.use_external_begin_frame_source = true; |
+ SetUpScheduler(true); |
+ |
+ scheduler_->SetVideoNeedsBeginFrames(true); |
+ EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(true)", client_); |
+ EXPECT_TRUE(client_->needs_begin_frames()); |
+ |
+ client_->Reset(); |
+ EXPECT_SCOPED(AdvanceFrame()); |
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
+ // WillBeginImplFrame is responsible for sending BeginFrames to video. |
+ EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_); |
+ |
+ client_->Reset(); |
+ EXPECT_SCOPED(AdvanceFrame()); |
+ EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); |
+ EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_); |
+ |
+ client_->Reset(); |
+ scheduler_->SetVideoNeedsBeginFrames(false); |
+ EXPECT_NO_ACTION(client_); |
+ |
+ client_->Reset(); |
+ task_runner_->RunTasksWhile(client_->ImplFrameDeadlinePending(true)); |
+ EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending()); |
+ EXPECT_ACTION("SetNeedsBeginFrames(false)", client_, 0, 2); |
+ EXPECT_ACTION("SendBeginMainFrameNotExpectedSoon", client_, 1, 2); |
+ EXPECT_FALSE(client_->needs_begin_frames()); |
+} |
+ |
TEST_F(SchedulerTest, RequestCommit) { |
scheduler_settings_.use_external_begin_frame_source = true; |
SetUpScheduler(true); |