Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(405)

Side by Side Diff: content/renderer/scheduler/renderer_scheduler_impl_unittest.cc

Issue 969373002: [content]: Add CanExceedIdleDeadlineIfRequired function to RendererScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@long_idle_5
Patch Set: Add trace event Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "content/renderer/scheduler/nestable_task_runner_for_test.h" 10 #include "content/renderer/scheduler/nestable_task_runner_for_test.h"
(...skipping 1228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1239 scheduler_->BeginFrameNotExpectedSoon(); 1239 scheduler_->BeginFrameNotExpectedSoon();
1240 RunUntilIdle(); 1240 RunUntilIdle();
1241 EXPECT_EQ(0, run_count); 1241 EXPECT_EQ(0, run_count);
1242 1242
1243 // The long idle period should start after the touchstart policy has finished. 1243 // The long idle period should start after the touchstart policy has finished.
1244 clock_->AdvanceNow(priority_escalation_after_input_duration()); 1244 clock_->AdvanceNow(priority_escalation_after_input_duration());
1245 RunUntilIdle(); 1245 RunUntilIdle();
1246 EXPECT_EQ(1, run_count); 1246 EXPECT_EQ(1, run_count);
1247 } 1247 }
1248 1248
1249 void TestCanExceedIdleDeadlineIfRequiredTask(RendererScheduler* scheduler,
1250 bool* can_exceed_idle_deadline_out,
1251 int* run_count,
1252 base::TimeTicks deadline) {
1253 *can_exceed_idle_deadline_out = scheduler->CanExceedIdleDeadlineIfRequired();
1254 (*run_count)++;
1255 }
1256
1257 TEST_F(RendererSchedulerImplTest, CanExceedIdleDeadlineIfRequired) {
1258 int run_count = 0;
1259 bool can_exceed_idle_deadline = false;
1260
1261 // Should return false if not in an idle period.
1262 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
1263
1264 // Should return false for short idle periods.
1265 idle_task_runner_->PostIdleTask(
1266 FROM_HERE,
1267 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
1268 &can_exceed_idle_deadline, &run_count));
1269 EnableIdleTasks();
1270 RunUntilIdle();
1271 EXPECT_EQ(1, run_count);
1272 EXPECT_FALSE(can_exceed_idle_deadline);
1273
1274 // Should return false for a long idle period which is shortened due to a
1275 // pending delayed task.
1276 default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask),
1277 base::TimeDelta::FromMilliseconds(10));
1278 idle_task_runner_->PostIdleTask(
1279 FROM_HERE,
1280 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
1281 &can_exceed_idle_deadline, &run_count));
1282 scheduler_->BeginFrameNotExpectedSoon();
1283 RunUntilIdle();
1284 EXPECT_EQ(2, run_count);
1285 EXPECT_FALSE(can_exceed_idle_deadline);
1286
1287 // Next long idle period will be for the maximum time, so
1288 // CanExceedIdleDeadlineIfRequired should return true.
1289 clock_->AdvanceNow(maximum_idle_period_duration());
1290 idle_task_runner_->PostIdleTask(
1291 FROM_HERE,
1292 base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
1293 &can_exceed_idle_deadline, &run_count));
1294 RunUntilIdle();
1295 EXPECT_EQ(3, run_count);
1296 EXPECT_TRUE(can_exceed_idle_deadline);
1297
1298 // Next long idle period will be for the maximum time, so
1299 // CanExceedIdleDeadlineIfRequired should return true.
1300 scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
1301 BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
1302 base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
1303 EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
1304 }
1305
1249 } // namespace content 1306 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/scheduler/renderer_scheduler_impl.cc ('k') | content/renderer/scheduler/web_scheduler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698