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

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: Change to exposing a CanExceedIdleDeadlineIfRequired function instead. 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 "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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698