| 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" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 namespace content { | 13 namespace content { |
| 14 | 14 |
| 15 class RendererSchedulerImplForTest : public RendererSchedulerImpl { |
| 16 public: |
| 17 RendererSchedulerImplForTest( |
| 18 scoped_refptr<cc::OrderedSimpleTaskRunner> task_runner, |
| 19 scoped_refptr<cc::TestNowSource> clock) |
| 20 : RendererSchedulerImpl(task_runner), clock_(clock) {} |
| 21 ~RendererSchedulerImplForTest() override {} |
| 22 |
| 23 protected: |
| 24 base::TimeTicks Now() const override { return clock_->Now(); } |
| 25 |
| 26 private: |
| 27 scoped_refptr<cc::TestNowSource> clock_; |
| 28 }; |
| 29 |
| 15 class RendererSchedulerImplTest : public testing::Test { | 30 class RendererSchedulerImplTest : public testing::Test { |
| 16 public: | 31 public: |
| 17 RendererSchedulerImplTest() | 32 RendererSchedulerImplTest() |
| 18 : clock_(cc::TestNowSource::Create(5000)), | 33 : clock_(cc::TestNowSource::Create(5000)), |
| 19 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_, false)), | 34 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_, false)), |
| 20 scheduler_(new RendererSchedulerImpl(mock_task_runner_)), | 35 scheduler_(new RendererSchedulerImplForTest(mock_task_runner_, clock_)), |
| 21 default_task_runner_(scheduler_->DefaultTaskRunner()), | 36 default_task_runner_(scheduler_->DefaultTaskRunner()), |
| 22 compositor_task_runner_(scheduler_->CompositorTaskRunner()), | 37 compositor_task_runner_(scheduler_->CompositorTaskRunner()), |
| 23 loading_task_runner_(scheduler_->LoadingTaskRunner()), | 38 loading_task_runner_(scheduler_->LoadingTaskRunner()), |
| 24 idle_task_runner_(scheduler_->IdleTaskRunner()) { | 39 idle_task_runner_(scheduler_->IdleTaskRunner()) {} |
| 25 scheduler_->SetTimeSourceForTesting(clock_); | |
| 26 } | |
| 27 ~RendererSchedulerImplTest() override {} | 40 ~RendererSchedulerImplTest() override {} |
| 28 | 41 |
| 29 void RunUntilIdle() { mock_task_runner_->RunUntilIdle(); } | 42 void RunUntilIdle() { mock_task_runner_->RunUntilIdle(); } |
| 30 | 43 |
| 31 void EnableIdleTasks() { | 44 void EnableIdleTasks() { |
| 32 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( | 45 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
| 33 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(), | 46 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(), |
| 34 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); | 47 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); |
| 35 scheduler_->DidCommitFrameToCompositor(); | 48 scheduler_->DidCommitFrameToCompositor(); |
| 36 } | 49 } |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 488 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), | 501 FROM_HERE, base::Bind(&PostingYieldingTestTask, scheduler_.get(), |
| 489 compositor_task_runner_, true, &should_yield_before, | 502 compositor_task_runner_, true, &should_yield_before, |
| 490 &should_yield_after)); | 503 &should_yield_after)); |
| 491 RunUntilIdle(); | 504 RunUntilIdle(); |
| 492 // We should be able to switch to compositor priority mid-task. | 505 // We should be able to switch to compositor priority mid-task. |
| 493 EXPECT_FALSE(should_yield_before); | 506 EXPECT_FALSE(should_yield_before); |
| 494 EXPECT_TRUE(should_yield_after); | 507 EXPECT_TRUE(should_yield_after); |
| 495 } | 508 } |
| 496 | 509 |
| 497 } // namespace content | 510 } // namespace content |
| OLD | NEW |