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 "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 "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 scheduler_(new RendererSchedulerImplForTest(mock_task_runner_, clock_)), | 35 scheduler_(new RendererSchedulerImplForTest(mock_task_runner_, clock_)), |
36 default_task_runner_(scheduler_->DefaultTaskRunner()), | 36 default_task_runner_(scheduler_->DefaultTaskRunner()), |
37 compositor_task_runner_(scheduler_->CompositorTaskRunner()), | 37 compositor_task_runner_(scheduler_->CompositorTaskRunner()), |
38 idle_task_runner_(scheduler_->IdleTaskRunner()) {} | 38 idle_task_runner_(scheduler_->IdleTaskRunner()) {} |
39 ~RendererSchedulerImplTest() override {} | 39 ~RendererSchedulerImplTest() override {} |
40 | 40 |
41 void RunUntilIdle() { mock_task_runner_->RunUntilIdle(); } | 41 void RunUntilIdle() { mock_task_runner_->RunUntilIdle(); } |
42 | 42 |
43 void EnableIdleTasks() { | 43 void EnableIdleTasks() { |
44 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( | 44 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
45 clock_->Now(), base::TimeTicks(), | 45 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(), |
46 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); | 46 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); |
47 scheduler_->DidCommitFrameToCompositor(); | 47 scheduler_->DidCommitFrameToCompositor(); |
48 } | 48 } |
49 | 49 |
50 protected: | 50 protected: |
51 scoped_refptr<cc::TestNowSource> clock_; | 51 scoped_refptr<cc::TestNowSource> clock_; |
52 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; | 52 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; |
53 | 53 |
54 scoped_ptr<RendererSchedulerImpl> scheduler_; | 54 scoped_ptr<RendererSchedulerImpl> scheduler_; |
55 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; | 55 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 base::TimeTicks deadline_in_task; | 185 base::TimeTicks deadline_in_task; |
186 | 186 |
187 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(100)); | 187 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(100)); |
188 idle_task_runner_->PostIdleTask( | 188 idle_task_runner_->PostIdleTask( |
189 FROM_HERE, base::Bind(&IdleTestTask, &task_run, &deadline_in_task)); | 189 FROM_HERE, base::Bind(&IdleTestTask, &task_run, &deadline_in_task)); |
190 | 190 |
191 RunUntilIdle(); | 191 RunUntilIdle(); |
192 EXPECT_FALSE(task_run); // Shouldn't run yet as no WillBeginFrame. | 192 EXPECT_FALSE(task_run); // Shouldn't run yet as no WillBeginFrame. |
193 | 193 |
194 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( | 194 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
195 clock_->Now(), base::TimeTicks(), base::TimeDelta::FromMilliseconds(1000), | 195 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(), |
196 cc::BeginFrameArgs::NORMAL)); | 196 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); |
197 RunUntilIdle(); | 197 RunUntilIdle(); |
198 EXPECT_FALSE(task_run); // Shouldn't run as no DidCommitFrameToCompositor. | 198 EXPECT_FALSE(task_run); // Shouldn't run as no DidCommitFrameToCompositor. |
199 | 199 |
200 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(1200)); | 200 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(1200)); |
201 scheduler_->DidCommitFrameToCompositor(); | 201 scheduler_->DidCommitFrameToCompositor(); |
202 RunUntilIdle(); | 202 RunUntilIdle(); |
203 EXPECT_FALSE(task_run); // We missed the deadline. | 203 EXPECT_FALSE(task_run); // We missed the deadline. |
204 | 204 |
205 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( | 205 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
206 clock_->Now(), base::TimeTicks(), base::TimeDelta::FromMilliseconds(1000), | 206 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(), |
207 cc::BeginFrameArgs::NORMAL)); | 207 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); |
208 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(800)); | 208 clock_->AdvanceNow(base::TimeDelta::FromMilliseconds(800)); |
209 scheduler_->DidCommitFrameToCompositor(); | 209 scheduler_->DidCommitFrameToCompositor(); |
210 RunUntilIdle(); | 210 RunUntilIdle(); |
211 EXPECT_TRUE(task_run); | 211 EXPECT_TRUE(task_run); |
212 EXPECT_EQ(expected_deadline, deadline_in_task); | 212 EXPECT_EQ(expected_deadline, deadline_in_task); |
213 } | 213 } |
214 | 214 |
215 TEST_F(RendererSchedulerImplTest, TestRepostingIdleTask) { | 215 TEST_F(RendererSchedulerImplTest, TestRepostingIdleTask) { |
216 int run_count = 0; | 216 int run_count = 0; |
217 | 217 |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), | 493 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), |
494 compositor_task_runner_, true, &should_yield_before, | 494 compositor_task_runner_, true, &should_yield_before, |
495 &should_yield_after)); | 495 &should_yield_after)); |
496 RunUntilIdle(); | 496 RunUntilIdle(); |
497 // We should be able to switch to compositor priority mid-task. | 497 // We should be able to switch to compositor priority mid-task. |
498 EXPECT_FALSE(should_yield_before); | 498 EXPECT_FALSE(should_yield_before); |
499 EXPECT_TRUE(should_yield_after); | 499 EXPECT_TRUE(should_yield_after); |
500 } | 500 } |
501 | 501 |
502 } // namespace content | 502 } // namespace content |
OLD | NEW |