OLD | NEW |
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 "components/scheduler/renderer/renderer_scheduler_impl.h" | 5 #include "components/scheduler/renderer/renderer_scheduler_impl.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/test/simple_test_tick_clock.h" | 8 #include "base/test/simple_test_tick_clock.h" |
9 #include "cc/output/begin_frame_args.h" | 9 #include "cc/output/begin_frame_args.h" |
10 #include "cc/test/ordered_simple_task_runner.h" | 10 #include "cc/test/ordered_simple_task_runner.h" |
11 #include "components/scheduler/child/scheduler_task_runner_delegate_for_test.h" | 11 #include "components/scheduler/child/nestable_task_runner_for_test.h" |
12 #include "components/scheduler/child/scheduler_task_runner_delegate_impl.h" | 12 #include "components/scheduler/child/scheduler_message_loop_delegate.h" |
13 #include "components/scheduler/child/test_time_source.h" | 13 #include "components/scheduler/child/test_time_source.h" |
14 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
16 | 16 |
17 namespace scheduler { | 17 namespace scheduler { |
18 | 18 |
19 namespace { | 19 namespace { |
20 class FakeInputEvent : public blink::WebInputEvent { | 20 class FakeInputEvent : public blink::WebInputEvent { |
21 public: | 21 public: |
22 explicit FakeInputEvent(blink::WebInputEvent::Type event_type) | 22 explicit FakeInputEvent(blink::WebInputEvent::Type event_type) |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 }; // namespace | 141 }; // namespace |
142 | 142 |
143 class RendererSchedulerImplForTest : public RendererSchedulerImpl { | 143 class RendererSchedulerImplForTest : public RendererSchedulerImpl { |
144 public: | 144 public: |
145 using RendererSchedulerImpl::OnIdlePeriodEnded; | 145 using RendererSchedulerImpl::OnIdlePeriodEnded; |
146 using RendererSchedulerImpl::OnIdlePeriodStarted; | 146 using RendererSchedulerImpl::OnIdlePeriodStarted; |
147 using RendererSchedulerImpl::Policy; | 147 using RendererSchedulerImpl::Policy; |
148 using RendererSchedulerImpl::PolicyToString; | 148 using RendererSchedulerImpl::PolicyToString; |
149 | 149 |
150 RendererSchedulerImplForTest( | 150 RendererSchedulerImplForTest( |
151 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner) | 151 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner) |
152 : RendererSchedulerImpl(main_task_runner), update_policy_count_(0) {} | 152 : RendererSchedulerImpl(main_task_runner), update_policy_count_(0) {} |
153 | 153 |
154 void UpdatePolicyLocked(UpdateType update_type) override { | 154 void UpdatePolicyLocked(UpdateType update_type) override { |
155 update_policy_count_++; | 155 update_policy_count_++; |
156 RendererSchedulerImpl::UpdatePolicyLocked(update_type); | 156 RendererSchedulerImpl::UpdatePolicyLocked(update_type); |
157 } | 157 } |
158 | 158 |
159 void EnsureUrgentPolicyUpdatePostedOnMainThread() { | 159 void EnsureUrgentPolicyUpdatePostedOnMainThread() { |
160 base::AutoLock lock(any_thread_lock_); | 160 base::AutoLock lock(any_thread_lock_); |
161 RendererSchedulerImpl::EnsureUrgentPolicyUpdatePostedOnMainThread( | 161 RendererSchedulerImpl::EnsureUrgentPolicyUpdatePostedOnMainThread( |
(...skipping 28 matching lines...) Expand all Loading... |
190 | 190 |
191 RendererSchedulerImplTest(base::MessageLoop* message_loop) | 191 RendererSchedulerImplTest(base::MessageLoop* message_loop) |
192 : clock_(new base::SimpleTestTickClock()), message_loop_(message_loop) { | 192 : clock_(new base::SimpleTestTickClock()), message_loop_(message_loop) { |
193 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); | 193 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); |
194 } | 194 } |
195 | 195 |
196 ~RendererSchedulerImplTest() override {} | 196 ~RendererSchedulerImplTest() override {} |
197 | 197 |
198 void SetUp() override { | 198 void SetUp() override { |
199 if (message_loop_) { | 199 if (message_loop_) { |
200 main_task_runner_ = | 200 nestable_task_runner_ = |
201 SchedulerTaskRunnerDelegateImpl::Create(message_loop_.get()); | 201 SchedulerMessageLoopDelegate::Create(message_loop_.get()); |
202 } else { | 202 } else { |
203 mock_task_runner_ = make_scoped_refptr( | 203 mock_task_runner_ = make_scoped_refptr( |
204 new cc::OrderedSimpleTaskRunner(clock_.get(), false)); | 204 new cc::OrderedSimpleTaskRunner(clock_.get(), false)); |
205 main_task_runner_ = | 205 nestable_task_runner_ = |
206 SchedulerTaskRunnerDelegateForTest::Create(mock_task_runner_); | 206 NestableTaskRunnerForTest::Create(mock_task_runner_); |
207 } | 207 } |
208 Initialize( | 208 Initialize(make_scoped_ptr( |
209 make_scoped_ptr(new RendererSchedulerImplForTest(main_task_runner_))); | 209 new RendererSchedulerImplForTest(nestable_task_runner_))); |
210 } | 210 } |
211 | 211 |
212 void Initialize(scoped_ptr<RendererSchedulerImplForTest> scheduler) { | 212 void Initialize(scoped_ptr<RendererSchedulerImplForTest> scheduler) { |
213 scheduler_ = scheduler.Pass(); | 213 scheduler_ = scheduler.Pass(); |
214 default_task_runner_ = scheduler_->DefaultTaskRunner(); | 214 default_task_runner_ = scheduler_->DefaultTaskRunner(); |
215 compositor_task_runner_ = scheduler_->CompositorTaskRunner(); | 215 compositor_task_runner_ = scheduler_->CompositorTaskRunner(); |
216 loading_task_runner_ = scheduler_->LoadingTaskRunner(); | 216 loading_task_runner_ = scheduler_->LoadingTaskRunner(); |
217 idle_task_runner_ = scheduler_->IdleTaskRunner(); | 217 idle_task_runner_ = scheduler_->IdleTaskRunner(); |
218 timer_task_runner_ = scheduler_->TimerTaskRunner(); | 218 timer_task_runner_ = scheduler_->TimerTaskRunner(); |
219 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting( | 219 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting( |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 RendererSchedulerImpl::Policy::FIRST_POLICY, | 345 RendererSchedulerImpl::Policy::FIRST_POLICY, |
346 RendererSchedulerImpl::Policy::POLICY_COUNT, | 346 RendererSchedulerImpl::Policy::POLICY_COUNT, |
347 &RendererSchedulerImpl::PolicyToString); | 347 &RendererSchedulerImpl::PolicyToString); |
348 } | 348 } |
349 | 349 |
350 scoped_ptr<base::SimpleTestTickClock> clock_; | 350 scoped_ptr<base::SimpleTestTickClock> clock_; |
351 // Only one of mock_task_runner_ or message_loop_ will be set. | 351 // Only one of mock_task_runner_ or message_loop_ will be set. |
352 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; | 352 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; |
353 scoped_ptr<base::MessageLoop> message_loop_; | 353 scoped_ptr<base::MessageLoop> message_loop_; |
354 | 354 |
355 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner_; | 355 scoped_refptr<NestableSingleThreadTaskRunner> nestable_task_runner_; |
356 scoped_ptr<RendererSchedulerImplForTest> scheduler_; | 356 scoped_ptr<RendererSchedulerImplForTest> scheduler_; |
357 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; | 357 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; |
358 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; | 358 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; |
359 scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_; | 359 scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_; |
360 scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_; | 360 scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_; |
361 scoped_refptr<base::SingleThreadTaskRunner> timer_task_runner_; | 361 scoped_refptr<base::SingleThreadTaskRunner> timer_task_runner_; |
362 | 362 |
363 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImplTest); | 363 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImplTest); |
364 }; | 364 }; |
365 | 365 |
(...skipping 831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 RunUntilIdle(); | 1197 RunUntilIdle(); |
1198 EXPECT_EQ(Policy::NORMAL, CurrentPolicy()); | 1198 EXPECT_EQ(Policy::NORMAL, CurrentPolicy()); |
1199 } | 1199 } |
1200 | 1200 |
1201 class RendererSchedulerImplWithMockSchedulerTest | 1201 class RendererSchedulerImplWithMockSchedulerTest |
1202 : public RendererSchedulerImplTest { | 1202 : public RendererSchedulerImplTest { |
1203 public: | 1203 public: |
1204 void SetUp() override { | 1204 void SetUp() override { |
1205 mock_task_runner_ = make_scoped_refptr( | 1205 mock_task_runner_ = make_scoped_refptr( |
1206 new cc::OrderedSimpleTaskRunner(clock_.get(), false)); | 1206 new cc::OrderedSimpleTaskRunner(clock_.get(), false)); |
1207 main_task_runner_ = | 1207 nestable_task_runner_ = |
1208 SchedulerTaskRunnerDelegateForTest::Create(mock_task_runner_); | 1208 NestableTaskRunnerForTest::Create(mock_task_runner_); |
1209 mock_scheduler_ = new RendererSchedulerImplForTest(main_task_runner_); | 1209 mock_scheduler_ = new RendererSchedulerImplForTest(nestable_task_runner_); |
1210 Initialize(make_scoped_ptr(mock_scheduler_)); | 1210 Initialize(make_scoped_ptr(mock_scheduler_)); |
1211 } | 1211 } |
1212 | 1212 |
1213 protected: | 1213 protected: |
1214 RendererSchedulerImplForTest* mock_scheduler_; | 1214 RendererSchedulerImplForTest* mock_scheduler_; |
1215 }; | 1215 }; |
1216 | 1216 |
1217 TEST_F(RendererSchedulerImplWithMockSchedulerTest, | 1217 TEST_F(RendererSchedulerImplWithMockSchedulerTest, |
1218 OnlyOnePendingUrgentPolicyUpdatey) { | 1218 OnlyOnePendingUrgentPolicyUpdatey) { |
1219 mock_scheduler_->EnsureUrgentPolicyUpdatePostedOnMainThread(); | 1219 mock_scheduler_->EnsureUrgentPolicyUpdatePostedOnMainThread(); |
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 | 1789 |
1790 TEST_F(RendererSchedulerImplTest, ShutdownPreventsPostingOfNewTasks) { | 1790 TEST_F(RendererSchedulerImplTest, ShutdownPreventsPostingOfNewTasks) { |
1791 scheduler_->Shutdown(); | 1791 scheduler_->Shutdown(); |
1792 std::vector<std::string> run_order; | 1792 std::vector<std::string> run_order; |
1793 PostTestTasks(&run_order, "D1 C1"); | 1793 PostTestTasks(&run_order, "D1 C1"); |
1794 RunUntilIdle(); | 1794 RunUntilIdle(); |
1795 EXPECT_TRUE(run_order.empty()); | 1795 EXPECT_TRUE(run_order.empty()); |
1796 } | 1796 } |
1797 | 1797 |
1798 } // namespace scheduler | 1798 } // namespace scheduler |
OLD | NEW |