| 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 1146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1157 scheduler_->BeginFrameNotExpectedSoon(); | 1157 scheduler_->BeginFrameNotExpectedSoon(); |
| 1158 RunUntilIdle(); | 1158 RunUntilIdle(); |
| 1159 EXPECT_EQ(0, run_count); | 1159 EXPECT_EQ(0, run_count); |
| 1160 | 1160 |
| 1161 // The long idle period should start after the touchstart policy has finished. | 1161 // The long idle period should start after the touchstart policy has finished. |
| 1162 clock_->AdvanceNow(priority_escalation_after_input_duration()); | 1162 clock_->AdvanceNow(priority_escalation_after_input_duration()); |
| 1163 RunUntilIdle(); | 1163 RunUntilIdle(); |
| 1164 EXPECT_EQ(1, run_count); | 1164 EXPECT_EQ(1, run_count); |
| 1165 } | 1165 } |
| 1166 | 1166 |
| 1167 void TestCanExceedIdleDeadlineIfRequiredTask(RendererScheduler* scheduler, |
| 1168 bool* can_exceed_idle_deadline_out, |
| 1169 int* run_count, |
| 1170 base::TimeTicks deadline) { |
| 1171 *can_exceed_idle_deadline_out = scheduler->CanExceedIdleDeadlineIfRequired(); |
| 1172 (*run_count)++; |
| 1173 } |
| 1174 |
| 1175 TEST_F(RendererSchedulerImplTest, CanExceedIdleDeadlineIfRequired) { |
| 1176 int run_count = 0; |
| 1177 bool can_exceed_idle_deadline = false; |
| 1178 |
| 1179 // Should return false if not in an idle period. |
| 1180 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired()); |
| 1181 |
| 1182 // Should return false for short idle periods. |
| 1183 idle_task_runner_->PostIdleTask( |
| 1184 FROM_HERE, |
| 1185 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(), |
| 1186 &can_exceed_idle_deadline, &run_count)); |
| 1187 EnableIdleTasks(); |
| 1188 RunUntilIdle(); |
| 1189 EXPECT_EQ(1, run_count); |
| 1190 EXPECT_FALSE(can_exceed_idle_deadline); |
| 1191 |
| 1192 // Should return false for a long idle period which is shortened due to a |
| 1193 // pending delayed task. |
| 1194 default_task_runner_->PostDelayedTask( |
| 1195 FROM_HERE, base::Bind(&NullTask), base::TimeDelta::FromMilliseconds(10)); |
| 1196 idle_task_runner_->PostIdleTask( |
| 1197 FROM_HERE, |
| 1198 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(), |
| 1199 &can_exceed_idle_deadline, &run_count)); |
| 1200 scheduler_->BeginFrameNotExpectedSoon(); |
| 1201 RunUntilIdle(); |
| 1202 EXPECT_EQ(2, run_count); |
| 1203 EXPECT_FALSE(can_exceed_idle_deadline); |
| 1204 |
| 1205 // Next long idle period will be for the maximum time, so |
| 1206 // CanExceedIdleDeadlineIfRequired should return true. |
| 1207 clock_->AdvanceNow(maximum_idle_period_duration()); |
| 1208 idle_task_runner_->PostIdleTask( |
| 1209 FROM_HERE, |
| 1210 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(), |
| 1211 &can_exceed_idle_deadline, &run_count)); |
| 1212 RunUntilIdle(); |
| 1213 EXPECT_EQ(3, run_count); |
| 1214 EXPECT_TRUE(can_exceed_idle_deadline); |
| 1215 |
| 1216 // Next long idle period will be for the maximum time, so |
| 1217 // CanExceedIdleDeadlineIfRequired should return true. |
| 1218 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create( |
| 1219 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(), |
| 1220 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL)); |
| 1221 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired()); |
| 1222 } |
| 1223 |
| 1167 } // namespace content | 1224 } // namespace content |
| OLD | NEW |