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

Unified Diff: cc/scheduler/delay_based_time_source_unittest.cc

Issue 2150533004: cc: Send all begin frames using a PostTask. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scheduler_unittest_no_deadline
Patch Set: Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
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());
}

Powered by Google App Engine
This is Rietveld 408576698