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

Side by Side Diff: content/renderer/scheduler/renderer_scheduler_impl_unittest.cc

Issue 1098033002: Remove dependency on cc::TestNowSource from scheduler code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « content/renderer/scheduler/renderer_scheduler_impl.cc ('k') | content/test/test_time_source.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/scheduler/renderer_scheduler_impl.h" 5 #include "content/renderer/scheduler/renderer_scheduler_impl.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "cc/output/begin_frame_args.h" 8 #include "cc/output/begin_frame_args.h"
9 #include "cc/test/ordered_simple_task_runner.h" 9 #include "cc/test/ordered_simple_task_runner.h"
10 #include "cc/test/test_now_source.h"
10 #include "content/child/scheduler/nestable_task_runner_for_test.h" 11 #include "content/child/scheduler/nestable_task_runner_for_test.h"
11 #include "content/child/scheduler/scheduler_message_loop_delegate.h" 12 #include "content/child/scheduler/scheduler_message_loop_delegate.h"
13 #include "content/test/test_time_source.h"
12 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
14 16
15 namespace content { 17 namespace content {
16 18
17 namespace { 19 namespace {
18 class FakeInputEvent : public blink::WebInputEvent { 20 class FakeInputEvent : public blink::WebInputEvent {
19 public: 21 public:
20 explicit FakeInputEvent(blink::WebInputEvent::Type event_type) 22 explicit FakeInputEvent(blink::WebInputEvent::Type event_type)
21 : WebInputEvent(sizeof(FakeInputEvent)) { 23 : WebInputEvent(sizeof(FakeInputEvent)) {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 : clock_(cc::TestNowSource::Create(5000)), 131 : clock_(cc::TestNowSource::Create(5000)),
130 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_, false)), 132 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_, false)),
131 nestable_task_runner_( 133 nestable_task_runner_(
132 NestableTaskRunnerForTest::Create(mock_task_runner_)), 134 NestableTaskRunnerForTest::Create(mock_task_runner_)),
133 scheduler_(new RendererSchedulerImpl(nestable_task_runner_)), 135 scheduler_(new RendererSchedulerImpl(nestable_task_runner_)),
134 default_task_runner_(scheduler_->DefaultTaskRunner()), 136 default_task_runner_(scheduler_->DefaultTaskRunner()),
135 compositor_task_runner_(scheduler_->CompositorTaskRunner()), 137 compositor_task_runner_(scheduler_->CompositorTaskRunner()),
136 loading_task_runner_(scheduler_->LoadingTaskRunner()), 138 loading_task_runner_(scheduler_->LoadingTaskRunner()),
137 idle_task_runner_(scheduler_->IdleTaskRunner()), 139 idle_task_runner_(scheduler_->IdleTaskRunner()),
138 timer_task_runner_(scheduler_->TimerTaskRunner()) { 140 timer_task_runner_(scheduler_->TimerTaskRunner()) {
139 scheduler_->SetTimeSourceForTesting(clock_); 141 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
142 make_scoped_ptr(new TestTimeSource(clock_)));
143 scheduler_->GetSchedulerHelperForTesting()
144 ->GetTaskQueueManagerForTesting()
145 ->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock_)));
140 } 146 }
141 147
142 RendererSchedulerImplTest(base::MessageLoop* message_loop) 148 RendererSchedulerImplTest(base::MessageLoop* message_loop)
143 : clock_(cc::TestNowSource::Create(5000)), 149 : clock_(cc::TestNowSource::Create(5000)),
144 message_loop_(message_loop), 150 message_loop_(message_loop),
145 nestable_task_runner_( 151 nestable_task_runner_(
146 SchedulerMessageLoopDelegate::Create(message_loop)), 152 SchedulerMessageLoopDelegate::Create(message_loop)),
147 scheduler_(new RendererSchedulerImpl(nestable_task_runner_)), 153 scheduler_(new RendererSchedulerImpl(nestable_task_runner_)),
148 default_task_runner_(scheduler_->DefaultTaskRunner()), 154 default_task_runner_(scheduler_->DefaultTaskRunner()),
149 compositor_task_runner_(scheduler_->CompositorTaskRunner()), 155 compositor_task_runner_(scheduler_->CompositorTaskRunner()),
150 loading_task_runner_(scheduler_->LoadingTaskRunner()), 156 loading_task_runner_(scheduler_->LoadingTaskRunner()),
151 idle_task_runner_(scheduler_->IdleTaskRunner()), 157 idle_task_runner_(scheduler_->IdleTaskRunner()),
152 timer_task_runner_(scheduler_->TimerTaskRunner()) { 158 timer_task_runner_(scheduler_->TimerTaskRunner()) {
153 scheduler_->SetTimeSourceForTesting(clock_); 159 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
160 make_scoped_ptr(new TestTimeSource(clock_)));
161 scheduler_->GetSchedulerHelperForTesting()
162 ->GetTaskQueueManagerForTesting()
163 ->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock_)));
154 } 164 }
155 ~RendererSchedulerImplTest() override {} 165 ~RendererSchedulerImplTest() override {}
156 166
157 void TearDown() override { 167 void TearDown() override {
158 DCHECK(!mock_task_runner_.get() || !message_loop_.get()); 168 DCHECK(!mock_task_runner_.get() || !message_loop_.get());
159 if (mock_task_runner_.get()) { 169 if (mock_task_runner_.get()) {
160 // Check that all tests stop posting tasks. 170 // Check that all tests stop posting tasks.
161 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 171 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
162 while (mock_task_runner_->RunUntilIdle()) { 172 while (mock_task_runner_->RunUntilIdle()) {
163 } 173 }
(...skipping 783 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 957
948 RunUntilIdle(); 958 RunUntilIdle();
949 959
950 EXPECT_EQ(1, mock_scheduler->update_policy_count_); 960 EXPECT_EQ(1, mock_scheduler->update_policy_count_);
951 } 961 }
952 962
953 TEST_F(RendererSchedulerImplTest, OnePendingDelayedAndOneUrgentUpdatePolicy) { 963 TEST_F(RendererSchedulerImplTest, OnePendingDelayedAndOneUrgentUpdatePolicy) {
954 RendererSchedulerImplForTest* mock_scheduler = 964 RendererSchedulerImplForTest* mock_scheduler =
955 new RendererSchedulerImplForTest(nestable_task_runner_); 965 new RendererSchedulerImplForTest(nestable_task_runner_);
956 scheduler_.reset(mock_scheduler); 966 scheduler_.reset(mock_scheduler);
957 scheduler_->SetTimeSourceForTesting(clock_); 967 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
968 make_scoped_ptr(new TestTimeSource(clock_)));
969 scheduler_->GetSchedulerHelperForTesting()
970 ->GetTaskQueueManagerForTesting()
971 ->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock_)));
958 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 972 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
959 973
960 ScheduleDelayedPolicyUpdate(base::TimeDelta::FromMilliseconds(1)); 974 ScheduleDelayedPolicyUpdate(base::TimeDelta::FromMilliseconds(1));
961 EnsureUrgentPolicyUpdatePostedOnMainThread(); 975 EnsureUrgentPolicyUpdatePostedOnMainThread();
962 976
963 RunUntilIdle(); 977 RunUntilIdle();
964 978
965 // We expect both the urgent and the delayed updates to run. 979 // We expect both the urgent and the delayed updates to run.
966 EXPECT_EQ(2, mock_scheduler->update_policy_count_); 980 EXPECT_EQ(2, mock_scheduler->update_policy_count_);
967 } 981 }
968 982
969 TEST_F(RendererSchedulerImplTest, OneUrgentAndOnePendingDelayedUpdatePolicy) { 983 TEST_F(RendererSchedulerImplTest, OneUrgentAndOnePendingDelayedUpdatePolicy) {
970 RendererSchedulerImplForTest* mock_scheduler = 984 RendererSchedulerImplForTest* mock_scheduler =
971 new RendererSchedulerImplForTest(nestable_task_runner_); 985 new RendererSchedulerImplForTest(nestable_task_runner_);
972 scheduler_.reset(mock_scheduler); 986 scheduler_.reset(mock_scheduler);
973 scheduler_->SetTimeSourceForTesting(clock_); 987 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
988 make_scoped_ptr(new TestTimeSource(clock_)));
989 scheduler_->GetSchedulerHelperForTesting()
990 ->GetTaskQueueManagerForTesting()
991 ->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock_)));
974 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 992 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
975 993
976 EnsureUrgentPolicyUpdatePostedOnMainThread(); 994 EnsureUrgentPolicyUpdatePostedOnMainThread();
977 ScheduleDelayedPolicyUpdate(base::TimeDelta::FromMilliseconds(1)); 995 ScheduleDelayedPolicyUpdate(base::TimeDelta::FromMilliseconds(1));
978 996
979 RunUntilIdle(); 997 RunUntilIdle();
980 998
981 // We expect both the urgent and the delayed updates to run. 999 // We expect both the urgent and the delayed updates to run.
982 EXPECT_EQ(2, mock_scheduler->update_policy_count_); 1000 EXPECT_EQ(2, mock_scheduler->update_policy_count_);
983 } 1001 }
984 1002
985 TEST_F(RendererSchedulerImplTest, UpdatePolicyCountTriggeredByOneInputEvent) { 1003 TEST_F(RendererSchedulerImplTest, UpdatePolicyCountTriggeredByOneInputEvent) {
986 RendererSchedulerImplForTest* mock_scheduler = 1004 RendererSchedulerImplForTest* mock_scheduler =
987 new RendererSchedulerImplForTest(nestable_task_runner_); 1005 new RendererSchedulerImplForTest(nestable_task_runner_);
988 scheduler_.reset(mock_scheduler); 1006 scheduler_.reset(mock_scheduler);
989 scheduler_->SetTimeSourceForTesting(clock_); 1007 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
1008 make_scoped_ptr(new TestTimeSource(clock_)));
1009 scheduler_->GetSchedulerHelperForTesting()
1010 ->GetTaskQueueManagerForTesting()
1011 ->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock_)));
990 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 1012 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
991 1013
992 scheduler_->DidReceiveInputEventOnCompositorThread( 1014 scheduler_->DidReceiveInputEventOnCompositorThread(
993 FakeInputEvent(blink::WebInputEvent::TouchStart)); 1015 FakeInputEvent(blink::WebInputEvent::TouchStart));
994 1016
995 RunUntilIdle(); 1017 RunUntilIdle();
996 1018
997 // We expect an urgent policy update followed by a delayed one 100ms later. 1019 // We expect an urgent policy update followed by a delayed one 100ms later.
998 EXPECT_EQ(2, mock_scheduler->update_policy_count_); 1020 EXPECT_EQ(2, mock_scheduler->update_policy_count_);
999 } 1021 }
1000 1022
1001 TEST_F(RendererSchedulerImplTest, UpdatePolicyCountTriggeredByTwoInputEvents) { 1023 TEST_F(RendererSchedulerImplTest, UpdatePolicyCountTriggeredByTwoInputEvents) {
1002 RendererSchedulerImplForTest* mock_scheduler = 1024 RendererSchedulerImplForTest* mock_scheduler =
1003 new RendererSchedulerImplForTest(nestable_task_runner_); 1025 new RendererSchedulerImplForTest(nestable_task_runner_);
1004 scheduler_.reset(mock_scheduler); 1026 scheduler_.reset(mock_scheduler);
1005 scheduler_->SetTimeSourceForTesting(clock_); 1027 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
1028 make_scoped_ptr(new TestTimeSource(clock_)));
1029 scheduler_->GetSchedulerHelperForTesting()
1030 ->GetTaskQueueManagerForTesting()
1031 ->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock_)));
1006 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 1032 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
1007 1033
1008 scheduler_->DidReceiveInputEventOnCompositorThread( 1034 scheduler_->DidReceiveInputEventOnCompositorThread(
1009 FakeInputEvent(blink::WebInputEvent::TouchStart)); 1035 FakeInputEvent(blink::WebInputEvent::TouchStart));
1010 scheduler_->DidReceiveInputEventOnCompositorThread( 1036 scheduler_->DidReceiveInputEventOnCompositorThread(
1011 FakeInputEvent(blink::WebInputEvent::TouchMove)); 1037 FakeInputEvent(blink::WebInputEvent::TouchMove));
1012 1038
1013 RunUntilIdle(); 1039 RunUntilIdle();
1014 1040
1015 // We expect an urgent policy update followed by a delayed one 100ms later. 1041 // We expect an urgent policy update followed by a delayed one 100ms later.
1016 EXPECT_EQ(2, mock_scheduler->update_policy_count_); 1042 EXPECT_EQ(2, mock_scheduler->update_policy_count_);
1017 } 1043 }
1018 1044
1019 TEST_F(RendererSchedulerImplTest, EnsureUpdatePolicyNotTriggeredTooOften) { 1045 TEST_F(RendererSchedulerImplTest, EnsureUpdatePolicyNotTriggeredTooOften) {
1020 RendererSchedulerImplForTest* mock_scheduler = 1046 RendererSchedulerImplForTest* mock_scheduler =
1021 new RendererSchedulerImplForTest(nestable_task_runner_); 1047 new RendererSchedulerImplForTest(nestable_task_runner_);
1022 scheduler_.reset(mock_scheduler); 1048 scheduler_.reset(mock_scheduler);
1023 scheduler_->SetTimeSourceForTesting(clock_); 1049 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
1050 make_scoped_ptr(new TestTimeSource(clock_)));
1051 scheduler_->GetSchedulerHelperForTesting()
1052 ->GetTaskQueueManagerForTesting()
1053 ->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock_)));
1024 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); 1054 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
1025 1055
1026 scheduler_->DidReceiveInputEventOnCompositorThread( 1056 scheduler_->DidReceiveInputEventOnCompositorThread(
1027 FakeInputEvent(blink::WebInputEvent::TouchStart)); 1057 FakeInputEvent(blink::WebInputEvent::TouchStart));
1028 scheduler_->DidReceiveInputEventOnCompositorThread( 1058 scheduler_->DidReceiveInputEventOnCompositorThread(
1029 FakeInputEvent(blink::WebInputEvent::TouchMove)); 1059 FakeInputEvent(blink::WebInputEvent::TouchMove));
1030 1060
1031 // We expect the first call to IsHighPriorityWorkAnticipated to be called 1061 // We expect the first call to IsHighPriorityWorkAnticipated to be called
1032 // after recieving an input event (but before the UpdateTask was processed) to 1062 // after recieving an input event (but before the UpdateTask was processed) to
1033 // call UpdatePolicy. 1063 // call UpdatePolicy.
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1388 RunUntilIdle(); 1418 RunUntilIdle();
1389 EXPECT_TRUE(run_order.empty()); 1419 EXPECT_TRUE(run_order.empty());
1390 1420
1391 scheduler_->ResumeTimerQueue(); 1421 scheduler_->ResumeTimerQueue();
1392 RunUntilIdle(); 1422 RunUntilIdle();
1393 EXPECT_THAT(run_order, 1423 EXPECT_THAT(run_order,
1394 testing::ElementsAre(std::string("T1"), std::string("T2"))); 1424 testing::ElementsAre(std::string("T1"), std::string("T2")));
1395 } 1425 }
1396 1426
1397 } // namespace content 1427 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/scheduler/renderer_scheduler_impl.cc ('k') | content/test/test_time_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698