| Index: cc/scheduler/delay_based_time_source_unittest.cc
|
| diff --git a/cc/scheduler/delay_based_time_source_unittest.cc b/cc/scheduler/delay_based_time_source_unittest.cc
|
| index 640b8e9093c105b5bdf8f75bd7ede3f8acb679fd..e06ee5481ce4afa517049aa8a68f3cb33941ca8f 100644
|
| --- a/cc/scheduler/delay_based_time_source_unittest.cc
|
| +++ b/cc/scheduler/delay_based_time_source_unittest.cc
|
| @@ -22,15 +22,17 @@ TEST(DelayBasedTimeSourceTest, TaskPostedAndTickCalled) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| EXPECT_TRUE(timer->Active());
|
| EXPECT_TRUE(task_runner->HasPendingTask());
|
|
|
| - timer->SetNow(timer->Now() + base::TimeDelta::FromMilliseconds(16));
|
| + now_src.SetNowTicks(now_src.NowTicks() +
|
| + base::TimeDelta::FromMilliseconds(16));
|
| task_runner->RunPendingTasks();
|
| EXPECT_TRUE(timer->Active());
|
| EXPECT_TRUE(client.TickCalled());
|
| @@ -40,8 +42,9 @@ TEST(DelayBasedTimeSourceTest, TickNotCalledWithTaskPosted) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -55,8 +58,9 @@ TEST(DelayBasedTimeSourceTest, StartTwiceEnqueuesOneTask) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -70,8 +74,9 @@ TEST(DelayBasedTimeSourceTest, StartWhenRunningDoesntTick) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -88,8 +93,9 @@ TEST(DelayBasedTimeSourceTest, NextDelaySaneWhenExactlyOnRequestedTime) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -98,7 +104,7 @@ TEST(DelayBasedTimeSourceTest, NextDelaySaneWhenExactlyOnRequestedTime) {
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| - timer->SetNow(timer->Now() + Interval());
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval());
|
| task_runner->RunPendingTasks();
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| @@ -110,8 +116,9 @@ TEST(DelayBasedTimeSourceTest, NextDelaySaneWhenSlightlyAfterRequestedTime) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -120,8 +127,8 @@ TEST(DelayBasedTimeSourceTest, NextDelaySaneWhenSlightlyAfterRequestedTime) {
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| - timer->SetNow(timer->Now() + Interval() +
|
| - base::TimeDelta::FromMicroseconds(1));
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() +
|
| + base::TimeDelta::FromMicroseconds(1));
|
| task_runner->RunPendingTasks();
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| @@ -134,8 +141,9 @@ TEST(DelayBasedTimeSourceTest,
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -144,7 +152,7 @@ TEST(DelayBasedTimeSourceTest,
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| - timer->SetNow(timer->Now() + 2 * Interval());
|
| + now_src.SetNowTicks(now_src.NowTicks() + 2 * Interval());
|
| task_runner->RunPendingTasks();
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| @@ -157,8 +165,9 @@ TEST(DelayBasedTimeSourceTest,
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -167,8 +176,8 @@ TEST(DelayBasedTimeSourceTest,
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| - timer->SetNow(timer->Now() + 2 * Interval() +
|
| - base::TimeDelta::FromMicroseconds(1));
|
| + now_src.SetNowTicks(now_src.NowTicks() + 2 * Interval() +
|
| + base::TimeDelta::FromMicroseconds(1));
|
| task_runner->RunPendingTasks();
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| @@ -180,8 +189,9 @@ TEST(DelayBasedTimeSourceTest, NextDelaySaneWhenHalfAfterRequestedTime) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -190,8 +200,8 @@ TEST(DelayBasedTimeSourceTest, NextDelaySaneWhenHalfAfterRequestedTime) {
|
|
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| - timer->SetNow(timer->Now() + Interval() +
|
| - base::TimeDelta::FromMilliseconds(8));
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() +
|
| + base::TimeDelta::FromMilliseconds(8));
|
| task_runner->RunPendingTasks();
|
|
|
| EXPECT_EQ(8, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| @@ -201,8 +211,9 @@ TEST(DelayBasedTimeSourceTest, JitteryRuntimeWithFutureTimebases) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -211,7 +222,7 @@ TEST(DelayBasedTimeSourceTest, JitteryRuntimeWithFutureTimebases) {
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| - base::TimeTicks future_timebase = timer->Now() + Interval() * 10;
|
| + base::TimeTicks future_timebase = now_src.NowTicks() + Interval() * 10;
|
|
|
| // 1ms jitter
|
| base::TimeDelta jitter1 = base::TimeDelta::FromMilliseconds(1);
|
| @@ -219,28 +230,28 @@ TEST(DelayBasedTimeSourceTest, JitteryRuntimeWithFutureTimebases) {
|
| // Tick with +1ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() + jitter1);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() + jitter1);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(15, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with 0ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() - jitter1);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() - jitter1);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with -1ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() - jitter1);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() - jitter1);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(1, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with 0ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() + jitter1);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() + jitter1);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| @@ -250,59 +261,59 @@ TEST(DelayBasedTimeSourceTest, JitteryRuntimeWithFutureTimebases) {
|
| // Tick with +8ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() + jitter8);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() + jitter8);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(8, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with 0ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() - jitter8);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() - jitter8);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with -8ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() - jitter8);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() - jitter8);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(8, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with 0ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() + jitter8);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() + jitter8);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // 15 ms jitter
|
| - base::TimeDelta jitter15 = base::TimeDelta::FromMilliseconds(15);
|
| + base::TimeDelta jitter15 = base::TimeDelta::FromMilliseconds(15);
|
|
|
| // Tick with +15ms jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() + jitter15);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() + jitter15);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(1, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with 0ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() - jitter15);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() - jitter15);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with -15ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() - jitter15);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() - jitter15);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(15, task_runner->NextPendingTaskDelay().InMilliseconds());
|
|
|
| // Tick with 0ms of jitter
|
| future_timebase += Interval();
|
| timer->SetTimebaseAndInterval(future_timebase, Interval());
|
| - timer->SetNow(timer->Now() + Interval() + jitter15);
|
| + now_src.SetNowTicks(now_src.NowTicks() + Interval() + jitter15);
|
| task_runner->RunPendingTasks();
|
| EXPECT_EQ(16, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| }
|
| @@ -313,8 +324,9 @@ TEST(DelayBasedTimeSourceTest, AchievesTargetRateWithNoNoise) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true);
|
| @@ -327,7 +339,8 @@ TEST(DelayBasedTimeSourceTest, AchievesTargetRateWithNoNoise) {
|
| total_frame_time += delay_ms / 1000.0;
|
|
|
| // Run the callback exactly when asked
|
| - timer->SetNow(timer->Now() + base::TimeDelta::FromMilliseconds(delay_ms));
|
| + now_src.SetNowTicks(now_src.NowTicks() +
|
| + base::TimeDelta::FromMilliseconds(delay_ms));
|
| task_runner->RunPendingTasks();
|
| }
|
| double average_interval =
|
| @@ -339,8 +352,9 @@ TEST(DelayBasedTimeSourceTest, TestDeactivateWhilePending) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
| timer->SetActive(true); // Should post a task.
|
| @@ -355,8 +369,9 @@ TEST(DelayBasedTimeSourceTest, TestDeactivateAndReactivateBeforeNextTickTime) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
|
|
| @@ -372,7 +387,8 @@ TEST(DelayBasedTimeSourceTest, TestDeactivateAndReactivateBeforeNextTickTime) {
|
|
|
| // Start the timer again, but before the next tick time the timer previously
|
| // planned on using. That same tick time should still be targeted.
|
| - timer->SetNow(timer->Now() + base::TimeDelta::FromMilliseconds(4));
|
| + now_src.SetNowTicks(now_src.NowTicks() +
|
| + base::TimeDelta::FromMilliseconds(4));
|
| timer->SetActive(true);
|
| EXPECT_EQ(12, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| }
|
| @@ -381,8 +397,9 @@ TEST(DelayBasedTimeSourceTest, TestDeactivateAndReactivateAfterNextTickTime) {
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner =
|
| new base::TestSimpleTaskRunner;
|
| FakeDelayBasedTimeSourceClient client;
|
| - std::unique_ptr<FakeDelayBasedTimeSource> timer(
|
| - new FakeDelayBasedTimeSource(task_runner.get()));
|
| + base::SimpleTestTickClock now_src;
|
| + std::unique_ptr<DelayBasedTimeSource> timer(
|
| + new DelayBasedTimeSource(task_runner.get(), &now_src));
|
| timer->SetClient(&client);
|
| timer->SetTimebaseAndInterval(base::TimeTicks(), Interval());
|
|
|
| @@ -398,7 +415,8 @@ TEST(DelayBasedTimeSourceTest, TestDeactivateAndReactivateAfterNextTickTime) {
|
|
|
| // Start the timer again, but before the next tick time the timer previously
|
| // planned on using. That same tick time should still be targeted.
|
| - timer->SetNow(timer->Now() + base::TimeDelta::FromMilliseconds(20));
|
| + now_src.SetNowTicks(now_src.NowTicks() +
|
| + base::TimeDelta::FromMilliseconds(20));
|
| timer->SetActive(true);
|
| EXPECT_EQ(13, task_runner->NextPendingTaskDelay().InMilliseconds());
|
| }
|
|
|