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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
diff --git a/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc b/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
index ee86c98794ccbc729318f260cac902b4edb8232b..0ba65958ecbedc2a577cbab519990cefa241b5cc 100644
--- a/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
+++ b/content/renderer/scheduler/renderer_scheduler_impl_unittest.cc
@@ -1246,4 +1246,61 @@ TEST_F(RendererSchedulerImplTest, TestLongIdlePeriodInTouchStartPolicy) {
EXPECT_EQ(1, run_count);
}
+void TestCanExceedIdleDeadlineIfRequiredTask(RendererScheduler* scheduler,
+ bool* can_exceed_idle_deadline_out,
+ int* run_count,
+ base::TimeTicks deadline) {
+ *can_exceed_idle_deadline_out = scheduler->CanExceedIdleDeadlineIfRequired();
+ (*run_count)++;
+}
+
+TEST_F(RendererSchedulerImplTest, CanExceedIdleDeadlineIfRequired) {
+ int run_count = 0;
+ bool can_exceed_idle_deadline = false;
+
+ // Should return false if not in an idle period.
+ EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
+
+ // Should return false for short idle periods.
+ idle_task_runner_->PostIdleTask(
+ FROM_HERE,
+ base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
+ &can_exceed_idle_deadline, &run_count));
+ EnableIdleTasks();
+ RunUntilIdle();
+ EXPECT_EQ(1, run_count);
+ EXPECT_FALSE(can_exceed_idle_deadline);
+
+ // Should return false for a long idle period which is shortened due to a
+ // pending delayed task.
+ default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask),
+ base::TimeDelta::FromMilliseconds(10));
+ idle_task_runner_->PostIdleTask(
+ FROM_HERE,
+ base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
+ &can_exceed_idle_deadline, &run_count));
+ scheduler_->BeginFrameNotExpectedSoon();
+ RunUntilIdle();
+ EXPECT_EQ(2, run_count);
+ EXPECT_FALSE(can_exceed_idle_deadline);
+
+ // Next long idle period will be for the maximum time, so
+ // CanExceedIdleDeadlineIfRequired should return true.
+ clock_->AdvanceNow(maximum_idle_period_duration());
+ idle_task_runner_->PostIdleTask(
+ FROM_HERE,
+ base::Bind(&TestCanExceedIdleDeadlineIfRequiredTask, scheduler_.get(),
+ &can_exceed_idle_deadline, &run_count));
+ RunUntilIdle();
+ EXPECT_EQ(3, run_count);
+ EXPECT_TRUE(can_exceed_idle_deadline);
+
+ // Next long idle period will be for the maximum time, so
+ // CanExceedIdleDeadlineIfRequired should return true.
+ scheduler_->WillBeginFrame(cc::BeginFrameArgs::Create(
+ BEGINFRAME_FROM_HERE, clock_->Now(), base::TimeTicks(),
+ base::TimeDelta::FromMilliseconds(1000), cc::BeginFrameArgs::NORMAL));
+ EXPECT_FALSE(scheduler_->CanExceedIdleDeadlineIfRequired());
+}
+
} // namespace content
« 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