| Index: components/scheduler/renderer/renderer_scheduler_impl.cc
|
| diff --git a/components/scheduler/renderer/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc
|
| index 306c45cc0a783df4c849963c17ec761c1dc2a490..9f3d9b6ef21a16711e52ff193531d3459aed5064 100644
|
| --- a/components/scheduler/renderer/renderer_scheduler_impl.cc
|
| +++ b/components/scheduler/renderer/renderer_scheduler_impl.cc
|
| @@ -126,7 +126,8 @@ RendererSchedulerImpl::MainThreadOnly::MainThreadOnly(
|
| have_reported_blocking_intervention_since_navigation(false),
|
| has_visible_render_widget_with_touch_handler(false),
|
| begin_frame_not_expected_soon(false),
|
| - expensive_task_blocking_allowed(true) {}
|
| + expensive_task_blocking_allowed(true),
|
| + in_idle_period_for_testing(false) {}
|
|
|
| RendererSchedulerImpl::MainThreadOnly::~MainThreadOnly() {}
|
|
|
| @@ -383,12 +384,22 @@ void RendererSchedulerImpl::OnRendererForegrounded() {
|
| }
|
|
|
| void RendererSchedulerImpl::EndIdlePeriod() {
|
| + if (MainThreadOnly().in_idle_period_for_testing)
|
| + return;
|
| TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
|
| "RendererSchedulerImpl::EndIdlePeriod");
|
| helper_.CheckOnValidThread();
|
| idle_helper_.EndIdlePeriod();
|
| }
|
|
|
| +void RendererSchedulerImpl::EndIdlePeriodForTesting(
|
| + const base::Closure& callback,
|
| + base::TimeTicks time_remaining) {
|
| + MainThreadOnly().in_idle_period_for_testing = false;
|
| + EndIdlePeriod();
|
| + callback.Run();
|
| +}
|
| +
|
| // static
|
| bool RendererSchedulerImpl::ShouldPrioritizeInputEvent(
|
| const blink::WebInputEvent& web_input_event) {
|
| @@ -574,6 +585,16 @@ base::TimeTicks RendererSchedulerImpl::CurrentIdleTaskDeadlineForTesting()
|
| return idle_helper_.CurrentIdleTaskDeadline();
|
| }
|
|
|
| +void RendererSchedulerImpl::RunIdleTasksForTesting(
|
| + const base::Closure& callback) {
|
| + MainThreadOnly().in_idle_period_for_testing = true;
|
| + IdleTaskRunner()->PostIdleTask(
|
| + FROM_HERE,
|
| + base::Bind(&RendererSchedulerImpl::EndIdlePeriodForTesting,
|
| + weak_factory_.GetWeakPtr(), callback));
|
| + idle_helper_.EnableLongIdlePeriod();
|
| +}
|
| +
|
| void RendererSchedulerImpl::MaybeUpdatePolicy() {
|
| helper_.CheckOnValidThread();
|
| if (policy_may_need_update_.IsSet()) {
|
|
|