Chromium Code Reviews| 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..9dba8bcd848779dfedee9873be647c9ce83b8ed8 100644 |
| --- a/components/scheduler/renderer/renderer_scheduler_impl.cc |
| +++ b/components/scheduler/renderer/renderer_scheduler_impl.cc |
| @@ -29,6 +29,7 @@ const int kTimerTaskEstimationSampleCount = 1000; |
| const double kTimerTaskEstimationPercentile = 99; |
| const int kShortIdlePeriodDurationSampleCount = 10; |
| const double kShortIdlePeriodDurationPercentile = 50; |
| + |
|
Sami
2016/04/06 15:52:37
Accidental change?
szager1
2016/04/06 17:55:30
Yes, reverted
|
| } |
| RendererSchedulerImpl::RendererSchedulerImpl( |
| @@ -126,7 +127,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 +385,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 +586,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()) { |