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 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
998 scheduler_->BeginFrameNotExpectedSoon(); | 998 scheduler_->BeginFrameNotExpectedSoon(); |
999 RunUntilIdle(); | 999 RunUntilIdle(); |
1000 EXPECT_EQ(0, run_count); | 1000 EXPECT_EQ(0, run_count); |
1001 | 1001 |
1002 // The long idle period should start after the touchstart policy has finished. | 1002 // The long idle period should start after the touchstart policy has finished. |
1003 clock_->AdvanceNow(priority_escalation_after_input_duration()); | 1003 clock_->AdvanceNow(priority_escalation_after_input_duration()); |
1004 RunUntilIdle(); | 1004 RunUntilIdle(); |
1005 EXPECT_EQ(1, run_count); | 1005 EXPECT_EQ(1, run_count); |
1006 } | 1006 } |
1007 | 1007 |
| 1008 void TestCanExceedIdleDeadlineIfRequiredTask(RendererScheduler* scheduler, |
| 1009 bool* can_exceed_idle_deadline_out, |
| 1010 int* run_count, |
| 1011 base::TimeTicks deadline) { |
| 1012 *can_exceed_idle_deadline_out = scheduler->CanExceedIdleDeadlineIfRequired(); |
| 1013 (*run_count)++; |
| 1014 } |
| 1015 |
| 1016 TEST_F(RendererSchedulerImplTest, CanExceedIdleDeadlineIfRequired) { |
| 1017 int run_count = 0; |
| 1018 bool can_exceed_idle_deadline = false; |
| 1019 |
| 1020 // Should return false if not in an idle period. |
| 1021 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired()); |
| 1022 |
| 1023 // Should return false for short idle periods. |
| 1024 idle_task_runner_->PostIdleTask( |
| 1025 FROM_HERE, |
| 1026 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(), |
| 1027 &can_exceed_idle_deadline, &run_count)); |
| 1028 EnableIdleTasks(); |
| 1029 RunUntilIdle(); |
| 1030 EXPECT_EQ(1, run_count); |
| 1031 EXPECT_FALSE(can_exceed_idle_deadline); |
| 1032 |
| 1033 // Should return false for a long idle period which is shortened due to a |
| 1034 // pending delayed task. |
| 1035 default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask), |
| 1036 base::TimeDelta::FromMilliseconds(10)); |
| 1037 idle_task_runner_->PostIdleTask( |
| 1038 FROM_HERE, |
| 1039 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(), |
| 1040 &can_exceed_idle_deadline, &run_count)); |
| 1041 scheduler_->BeginFrameNotExpectedSoon(); |
| 1042 RunUntilIdle(); |
| 1043 EXPECT_EQ(2, run_count); |
| 1044 EXPECT_FALSE(can_exceed_idle_deadline); |
| 1045 |
| 1046 // Next long idle period will be for the maximum time, so |
| 1047 // CanExceedIdleDeadlineIfRequired should return true. |
| 1048 clock_->AdvanceNow(maximum_idle_period_duration()); |
| 1049 idle_task_runner_->PostIdleTask( |
| 1050 FROM_HERE, |
| 1051 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(), |
| 1052 &can_exceed_idle_deadline, &run_count)); |
| 1053 RunUntilIdle(); |
| 1054 EXPECT_EQ(3, run_count); |
| 1055 EXPECT_TRUE(can_exceed_idle_deadline); |
| 1056 |
| 1057 // Next long idle period will be for the maximum time, so |
| 1058 // CanExceedIdleDeadlineIfRequired should return true. |
| 1059 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
| 1060 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(), |
| 1061 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); |
| 1062 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired()); |
| 1063 } |
| 1064 |
1008 } // namespace content | 1065 } // namespace content |
OLD | NEW |