Index: cc/scheduler/scheduler_unittest.cc |
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc |
index b59359c03f29bd13bfa2d5f4063ff5d9b295c206..dacc03ce21ae118e553ad78b10324a5e45a3d9e9 100644 |
--- a/cc/scheduler/scheduler_unittest.cc |
+++ b/cc/scheduler/scheduler_unittest.cc |
@@ -2272,5 +2272,33 @@ TEST_F(SchedulerTest, SendBeginMainFrameNotExpectedSoon) { |
client_->Reset(); |
} |
+TEST_F(SchedulerTest, AuthoritativeVSyncInterval) { |
+ SetUpScheduler(true); |
+ |
+ base::TimeDelta initial_interval = |
+ scheduler_->begin_impl_frame_args().interval; |
+ base::TimeDelta authoritative_interval = |
+ base::TimeDelta::FromMilliseconds(33); |
+ |
+ scheduler_->SetNeedsCommit(); |
+ EXPECT_SCOPED(AdvanceFrame()); |
+ |
+ EXPECT_EQ(initial_interval, scheduler_->begin_impl_frame_args().interval); |
+ |
+ scheduler_->NotifyBeginMainFrameStarted(); |
+ scheduler_->NotifyReadyToCommit(); |
+ task_runner().RunTasksWhile(client_->ImplFrameDeadlinePending(true)); |
+ |
+ scheduler_->SetAuthoritativeVSyncInterval(authoritative_interval); |
+ |
+ EXPECT_SCOPED(AdvanceFrame()); |
+ |
+ // At the next BeginFrame, authoritative interval is used instead of previous |
+ // interval. |
+ EXPECT_NE(initial_interval, scheduler_->begin_impl_frame_args().interval); |
+ EXPECT_EQ(authoritative_interval, |
+ scheduler_->begin_impl_frame_args().interval); |
+} |
+ |
} // namespace |
} // namespace cc |