| 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 23 matching lines...) Expand all Loading... |
| 34 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_, false)), | 34 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_, false)), |
| 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( | 44 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
| 45 cc::BeginFrameArgs::Create(clock_->Now(), base::TimeTicks(), | 45 clock_->Now(), base::TimeTicks(), |
| 46 base::TimeDelta::FromMilliseconds(1000))); | 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_; |
| 56 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; | 56 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 clock_->Now() + base::TimeDelta::FromMilliseconds(2300); | 184 clock_->Now() + base::TimeDelta::FromMilliseconds(2300); |
| 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( | 194 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
| 195 cc::BeginFrameArgs::Create(clock_->Now(), base::TimeTicks(), | 195 clock_->Now(), base::TimeTicks(), base::TimeDelta::FromMilliseconds(1000), |
| 196 base::TimeDelta::FromMilliseconds(1000))); | 196 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( | 205 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
| 206 cc::BeginFrameArgs::Create(clock_->Now(), base::TimeTicks(), | 206 clock_->Now(), base::TimeTicks(), base::TimeDelta::FromMilliseconds(1000), |
| 207 base::TimeDelta::FromMilliseconds(1000))); | 207 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 |