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

Unified Diff: components/scheduler/renderer/renderer_scheduler_impl_unittest.cc

Issue 1132753008: Replaced TestNowSource with SimpleTestTickClock. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Corrected typo. Minor changes to keep parity with TestNowSource. Created 5 years, 7 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: components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
diff --git a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
index 449282af046bc5c363dea3b3c6f0e238aeebe533..e4e341dff8e3647b7a1f6a08beff28d78ddaf4d0 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
+++ b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
@@ -5,9 +5,9 @@
#include "components/scheduler/renderer/renderer_scheduler_impl.h"
#include "base/callback.h"
+#include "base/test/simple_test_tick_clock.h"
#include "cc/output/begin_frame_args.h"
#include "cc/test/ordered_simple_task_runner.h"
-#include "cc/test/test_now_source.h"
#include "components/scheduler/child/nestable_task_runner_for_test.h"
#include "components/scheduler/child/scheduler_message_loop_delegate.h"
#include "components/scheduler/child/test_time_source.h"
@@ -79,11 +79,11 @@ void RepostingIdleTestTask(SingleThreadIdleTaskRunner* idle_task_runner,
}
void UpdateClockToDeadlineIdleTestTask(
- cc::TestNowSource* clock,
+ base::SimpleTestTickClock* clock,
base::SingleThreadTaskRunner* task_runner,
int* run_count,
base::TimeTicks deadline) {
- clock->SetNow(deadline);
+ clock->Advance(deadline - clock->NowTicks());
// Due to the way in which OrderedSimpleTestRunner orders tasks and the fact
// that we updated the time within a task, the delayed pending task to call
// EndIdlePeriod will not happen until after a TaskQueueManager DoWork, so
@@ -123,17 +123,18 @@ class RendererSchedulerImplTest : public testing::Test {
public:
using Policy = RendererSchedulerImpl::Policy;
- RendererSchedulerImplTest()
- : clock_(cc::TestNowSource::Create(5000)),
- mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_, false)),
- nestable_task_runner_(
- NestableTaskRunnerForTest::Create(mock_task_runner_)),
- scheduler_(new RendererSchedulerImpl(nestable_task_runner_)),
- default_task_runner_(scheduler_->DefaultTaskRunner()),
- compositor_task_runner_(scheduler_->CompositorTaskRunner()),
- loading_task_runner_(scheduler_->LoadingTaskRunner()),
- idle_task_runner_(scheduler_->IdleTaskRunner()),
- timer_task_runner_(scheduler_->TimerTaskRunner()) {
+ RendererSchedulerImplTest() : clock_(new base::SimpleTestTickClock()) {
+ clock_->Advance(base::TimeDelta::FromInternalValue(5000));
Sami 2015/05/29 14:00:58 Ditto about base time.
Ankur Verma 2015/06/03 14:56:10 Have'nt changed starting values yet as per mithro'
+ mock_task_runner_ = new cc::OrderedSimpleTaskRunner(clock_, false);
+ nestable_task_runner_ =
+ NestableTaskRunnerForTest::Create(mock_task_runner_);
+ scheduler_ =
+ make_scoped_ptr(new RendererSchedulerImpl(nestable_task_runner_));
+ default_task_runner_ = scheduler_->DefaultTaskRunner();
+ compositor_task_runner_ = scheduler_->CompositorTaskRunner();
+ loading_task_runner_ = scheduler_->LoadingTaskRunner();
+ idle_task_runner_ = scheduler_->IdleTaskRunner();
+ timer_task_runner_ = scheduler_->TimerTaskRunner();
scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
make_scoped_ptr(new TestTimeSource(clock_)));
scheduler_->GetSchedulerHelperForTesting()
@@ -142,7 +143,7 @@ class RendererSchedulerImplTest : public testing::Test {
}
RendererSchedulerImplTest(base::MessageLoop* message_loop)
- : clock_(cc::TestNowSource::Create(5000)),
+ : clock_(new base::SimpleTestTickClock()),
message_loop_(message_loop),
nestable_task_runner_(
SchedulerMessageLoopDelegate::Create(message_loop)),
@@ -152,6 +153,7 @@ class RendererSchedulerImplTest : public testing::Test {
loading_task_runner_(scheduler_->LoadingTaskRunner()),
idle_task_runner_(scheduler_->IdleTaskRunner()),
timer_task_runner_(scheduler_->TimerTaskRunner()) {
+ clock_->Advance(base::TimeDelta::FromInternalValue(5000));
Sami 2015/05/29 14:00:58 Ditto about base time.
Ankur Verma 2015/06/03 14:56:10 Have'nt changed starting values yet as per mithro'
scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
make_scoped_ptr(new TestTimeSource(clock_)));
scheduler_->GetSchedulerHelperForTesting()
@@ -183,7 +185,7 @@ class RendererSchedulerImplTest : public testing::Test {
void DoMainFrame() {
scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
scheduler_->DidCommitFrameToCompositor();
}
@@ -199,7 +201,7 @@ class RendererSchedulerImplTest : public testing::Test {
void ScheduleDelayedPolicyUpdate(base::TimeDelta delay) {
scheduler_->delayed_update_policy_runner_.SetDeadline(FROM_HERE, delay,
- clock_->Now());
+ clock_->NowTicks());
}
// Helper for posting several tasks of specific types. |task_descriptor| is a
@@ -291,7 +293,7 @@ class RendererSchedulerImplTest : public testing::Test {
&RendererSchedulerImpl::InputStreamStateToString);
}
- scoped_refptr<cc::TestNowSource> clock_;
+ base::SimpleTestTickClock* clock_;
Sami 2015/05/29 14:00:58 Ditto about scoped_ptr.
Ankur Verma 2015/06/03 14:56:10 Done.
// Only one of mock_task_runner_ or message_loop_ will be set.
scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_;
scoped_ptr<base::MessageLoop> message_loop_;
@@ -339,10 +341,10 @@ TEST_F(RendererSchedulerImplTest, TestRentrantTask) {
TEST_F(RendererSchedulerImplTest, TestPostIdleTask) {
int run_count = 0;
base::TimeTicks expected_deadline =
- clock_->Now() + base::TimeDelta::FromMilliseconds(2300);
+ clock_->NowTicks() + base::TimeDelta::FromMilliseconds(2300);
base::TimeTicks deadline_in_task;
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(100));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(100));
idle_task_runner_->PostIdleTask(
FROM_HERE, base::Bind(&IdleTestTask, &run_count, &deadline_in_task));
@@ -350,20 +352,20 @@ TEST_F(RendererSchedulerImplTest, TestPostIdleTask) {
EXPECT_EQ(0, run_count); // Shouldn't run yet as no WillBeginFrame.
scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
RunUntilIdle();
EXPECT_EQ(0, run_count); // Shouldn't run as no DidCommitFrameToCompositor.
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(1200));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(1200));
scheduler_->DidCommitFrameToCompositor();
RunUntilIdle();
EXPECT_EQ(0, run_count); // We missed the deadline.
scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(800));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(800));
scheduler_->DidCommitFrameToCompositor();
RunUntilIdle();
EXPECT_EQ(1, run_count);
@@ -484,15 +486,15 @@ TEST_F(RendererSchedulerImplTest, TestDelayedEndIdlePeriodCanceled) {
// Trigger the beginning of an idle period for 1000ms.
scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
DoMainFrame();
// End the idle period early (after 500ms), and send a WillBeginFrame which
// specifies that the next idle period should end 1000ms from now.
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(500));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(500));
scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
RunUntilIdle();
@@ -500,13 +502,13 @@ TEST_F(RendererSchedulerImplTest, TestDelayedEndIdlePeriodCanceled) {
// Trigger the start of the idle period before the task to end the previous
// idle period has been triggered.
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(400));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(400));
scheduler_->DidCommitFrameToCompositor();
// Post a task which simulates running until after the previous end idle
// period delayed task was scheduled for
scheduler_->DefaultTaskRunner()->PostTask(FROM_HERE, base::Bind(NullTask));
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(300));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(300));
RunUntilIdle();
EXPECT_EQ(1, run_count); // We should still be in the new idle period.
@@ -680,7 +682,7 @@ TEST_F(RendererSchedulerImplTest, TestCompositorPolicyEnds) {
std::string("D1"), std::string("D2")));
run_order.clear();
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(1000));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(1000));
PostTestTasks(&run_order, "D1 C1 D2 C2");
// Compositor policy mode should have ended now that the clock has advanced.
@@ -702,7 +704,7 @@ TEST_F(RendererSchedulerImplTest, TestTouchstartPolicyEndsAfterTimeout) {
std::string("D1"), std::string("D2")));
run_order.clear();
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(1000));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(1000));
// Don't post any compositor tasks to simulate a very long running event
// handler.
@@ -771,7 +773,7 @@ TEST_F(RendererSchedulerImplTest, TestIsHighPriorityWorkAnticipated) {
EXPECT_FALSE(is_anticipated_before);
EXPECT_TRUE(is_anticipated_after);
- clock_->AdvanceNow(priority_escalation_after_input_duration() * 2);
+ clock_->Advance(priority_escalation_after_input_duration() * 2);
simulate_input = false;
default_task_runner_->PostTask(
FROM_HERE,
@@ -835,7 +837,7 @@ TEST_F(RendererSchedulerImplTest, SlowInputEvent) {
// Simulate the input event being queued for a very long time. The compositor
// task we post here represents the enqueued input task.
- clock_->AdvanceNow(priority_escalation_after_input_duration() * 2);
+ clock_->Advance(priority_escalation_after_input_duration() * 2);
compositor_task_runner_->PostTask(FROM_HERE, base::Bind(&NullTask));
RunUntilIdle();
@@ -850,7 +852,7 @@ TEST_F(RendererSchedulerImplTest, SlowInputEvent) {
EXPECT_EQ(Policy::COMPOSITOR_PRIORITY, CurrentPolicy());
// After the escalation period ends we should go back into normal mode.
- clock_->AdvanceNow(priority_escalation_after_input_duration() * 2);
+ clock_->Advance(priority_escalation_after_input_duration() * 2);
RunUntilIdle();
EXPECT_EQ(Policy::NORMAL, CurrentPolicy());
}
@@ -866,7 +868,7 @@ TEST_F(RendererSchedulerImplTest, SlowNoOpInputEvent) {
// Simulate the input event being queued for a very long time. The compositor
// task we post here represents the enqueued input task.
- clock_->AdvanceNow(priority_escalation_after_input_duration() * 2);
+ clock_->Advance(priority_escalation_after_input_duration() * 2);
compositor_task_runner_->PostTask(FROM_HERE, base::Bind(&NullTask));
RunUntilIdle();
@@ -876,7 +878,7 @@ TEST_F(RendererSchedulerImplTest, SlowNoOpInputEvent) {
// If we let the compositor queue drain, we should fall out of input
// priority.
- clock_->AdvanceNow(priority_escalation_after_input_duration() * 2);
+ clock_->Advance(priority_escalation_after_input_duration() * 2);
RunUntilIdle();
EXPECT_EQ(Policy::NORMAL, CurrentPolicy());
}
@@ -892,7 +894,7 @@ TEST_F(RendererSchedulerImplTest, NoOpInputEvent) {
// If nothing else happens after this, we should drop out of compositor
// priority after the escalation period ends and stop polling.
- clock_->AdvanceNow(priority_escalation_after_input_duration() * 2);
+ clock_->Advance(priority_escalation_after_input_duration() * 2);
RunUntilIdle();
EXPECT_EQ(Policy::NORMAL, CurrentPolicy());
EXPECT_FALSE(mock_task_runner_->HasPendingTasks());
@@ -909,18 +911,18 @@ TEST_F(RendererSchedulerImplTest, NoOpInputEventExtendsEscalationPeriod) {
EXPECT_EQ(Policy::COMPOSITOR_PRIORITY, CurrentPolicy());
// Send a no-op input event in the middle of the escalation period.
- clock_->AdvanceNow(priority_escalation_after_input_duration() / 2);
+ clock_->Advance(priority_escalation_after_input_duration() / 2);
scheduler_->DidReceiveInputEventOnCompositorThread(
FakeInputEvent(blink::WebInputEvent::GestureScrollUpdate));
RunUntilIdle();
EXPECT_EQ(Policy::COMPOSITOR_PRIORITY, CurrentPolicy());
// The escalation period should have been extended by the new input event.
- clock_->AdvanceNow(3 * priority_escalation_after_input_duration() / 4);
+ clock_->Advance(3 * priority_escalation_after_input_duration() / 4);
RunUntilIdle();
EXPECT_EQ(Policy::COMPOSITOR_PRIORITY, CurrentPolicy());
- clock_->AdvanceNow(priority_escalation_after_input_duration() / 2);
+ clock_->Advance(priority_escalation_after_input_duration() / 2);
RunUntilIdle();
EXPECT_EQ(Policy::NORMAL, CurrentPolicy());
}
@@ -929,15 +931,15 @@ TEST_F(RendererSchedulerImplTest, InputArrivesAfterBeginFrame) {
EXPECT_EQ(Policy::NORMAL, CurrentPolicy());
cc::BeginFrameArgs args = cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL);
- clock_->AdvanceNow(priority_escalation_after_input_duration() / 2);
+ clock_->Advance(priority_escalation_after_input_duration() / 2);
scheduler_->DidReceiveInputEventOnCompositorThread(
FakeInputEvent(blink::WebInputEvent::GestureScrollBegin));
// Simulate a BeginMainFrame task from the past.
- clock_->AdvanceNow(2 * priority_escalation_after_input_duration());
+ clock_->Advance(2 * priority_escalation_after_input_duration());
scheduler_->WillBeginFrame(args);
scheduler_->DidCommitFrameToCompositor();
@@ -946,13 +948,13 @@ TEST_F(RendererSchedulerImplTest, InputArrivesAfterBeginFrame) {
// Should remain in input priority policy since the input event hasn't been
// processed yet.
- clock_->AdvanceNow(2 * priority_escalation_after_input_duration());
+ clock_->Advance(2 * priority_escalation_after_input_duration());
RunUntilIdle();
EXPECT_EQ(Policy::COMPOSITOR_PRIORITY, CurrentPolicy());
// Process the input event with a new BeginMainFrame.
DoMainFrame();
- clock_->AdvanceNow(2 * priority_escalation_after_input_duration());
+ clock_->Advance(2 * priority_escalation_after_input_duration());
RunUntilIdle();
EXPECT_EQ(Policy::NORMAL, CurrentPolicy());
}
@@ -1169,7 +1171,7 @@ TEST_F(RendererSchedulerImplWithMessageLoopTest,
TEST_F(RendererSchedulerImplTest, TestLongIdlePeriod) {
base::TimeTicks expected_deadline =
- clock_->Now() + maximum_idle_period_duration();
+ clock_->NowTicks() + maximum_idle_period_duration();
base::TimeTicks deadline_in_task;
int run_count = 0;
@@ -1187,7 +1189,7 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriod) {
TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodWithPendingDelayedTask) {
base::TimeDelta pending_task_delay = base::TimeDelta::FromMilliseconds(30);
- base::TimeTicks expected_deadline = clock_->Now() + pending_task_delay;
+ base::TimeTicks expected_deadline = clock_->NowTicks() + pending_task_delay;
base::TimeTicks deadline_in_task;
int run_count = 0;
@@ -1212,7 +1214,7 @@ TEST_F(RendererSchedulerImplTest,
pending_task_delay);
// Advance clock until after delayed task was meant to be run.
- clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(20));
+ clock_->Advance(base::TimeDelta::FromMilliseconds(20));
// Post an idle task and BeginFrameNotExpectedSoon to initiate a long idle
// period. Since there is a late pending delayed task this shouldn't actually
@@ -1224,7 +1226,7 @@ TEST_F(RendererSchedulerImplTest,
EXPECT_EQ(0, run_count);
// After the delayed task has been run we should trigger an idle period.
- clock_->AdvanceNow(maximum_idle_period_duration());
+ clock_->Advance(maximum_idle_period_duration());
RunUntilIdle();
EXPECT_EQ(1, run_count);
}
@@ -1243,15 +1245,15 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodRepeating) {
// Advance time to start of next long idle period and check task reposted task
// gets run.
- clock_->AdvanceNow(maximum_idle_period_duration());
+ clock_->Advance(maximum_idle_period_duration());
RunUntilIdle();
EXPECT_EQ(2, run_count);
// Advance time to start of next long idle period then end idle period with a
// new BeginMainFrame and check idle task doesn't run.
- clock_->AdvanceNow(maximum_idle_period_duration());
+ clock_->Advance(maximum_idle_period_duration());
scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
RunUntilIdle();
EXPECT_EQ(2, run_count);
@@ -1269,7 +1271,7 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodDoesNotWakeScheduler) {
// idle period.
base::TimeTicks idle_period_deadline =
scheduler_->CurrentIdleTaskDeadlineForTesting();
- clock_->AdvanceNow(maximum_idle_period_duration());
+ clock_->Advance(maximum_idle_period_duration());
RunUntilIdle();
base::TimeTicks new_idle_period_deadline =
@@ -1310,7 +1312,7 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodInTouchStartPolicy) {
EXPECT_EQ(0, run_count);
// The long idle period should start after the touchstart policy has finished.
- clock_->AdvanceNow(priority_escalation_after_input_duration());
+ clock_->Advance(priority_escalation_after_input_duration());
RunUntilIdle();
EXPECT_EQ(1, run_count);
}
@@ -1355,7 +1357,7 @@ TEST_F(RendererSchedulerImplTest, CanExceedIdleDeadlineIfRequired) {
// Next long idle period will be for the maximum time, so
// CanExceedIdleDeadlineIfRequired should return true.
- clock_->AdvanceNow(maximum_idle_period_duration());
+ clock_->Advance(maximum_idle_period_duration());
idle_task_runner_->PostIdleTask(
FROM_HERE,
base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
@@ -1367,7 +1369,7 @@ TEST_F(RendererSchedulerImplTest, CanExceedIdleDeadlineIfRequired) {
// Next long idle period will be for the maximum time, so
// CanExceedIdleDeadlineIfRequired should return true.
scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
- BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ BEGINFRAME_FROM_HERE, clock_->NowTicks(), base::TimeTicks(),
base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
}
@@ -1390,14 +1392,14 @@ TEST_F(RendererSchedulerImplTest, TestRendererHiddenIdlePeriod) {
// Advance time to start of next long idle period and check task reposted task
// gets run.
- clock_->AdvanceNow(maximum_idle_period_duration());
+ clock_->Advance(maximum_idle_period_duration());
RunUntilIdle();
EXPECT_EQ(2, run_count);
// Advance time by amount of time by the maximum amount of time we execute
// idle tasks when hidden (plus some slack) - idle period should have ended.
- clock_->AdvanceNow(end_idle_when_hidden_delay() +
- base::TimeDelta::FromMilliseconds(10));
+ clock_->Advance(end_idle_when_hidden_delay() +
+ base::TimeDelta::FromMilliseconds(10));
RunUntilIdle();
EXPECT_EQ(2, run_count);
}

Powered by Google App Engine
This is Rietveld 408576698