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..0420a7247a19783ee17bfb5702896ac63c44ed6e 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) |
|
rmcilroy
2016/04/06 23:17:53
Is this necessary given you are using a long idle
szager1
2016/04/06 23:28:39
It's my hope that runIdleTasks will also be useful
rmcilroy
2016/04/07 08:48:38
Ahh I see. I guess it doesn't hurt to ensure runId
|
| + return; |
| TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
| "RendererSchedulerImpl::EndIdlePeriod"); |
| helper_.CheckOnValidThread(); |
| idle_helper_.EndIdlePeriod(); |
| } |
| +void RendererSchedulerImpl::EndIdlePeriodForTesting( |
| + const base::Closure& callback) { |
| + MainThreadOnly().in_idle_period_for_testing = false; |
| + TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), |
| + "RendererSchedulerImpl::EndIdlePeriodForTesting"); |
| + callback.Run(); |
|
rmcilroy
2016/04/06 23:17:53
You probably need to explicitly call EndIdlePeriod
szager1
2016/04/06 23:28:39
This method is only invoked from IdleHelper::EndId
rmcilroy
2016/04/07 08:48:38
Ahh, missed this. I'm wondering if it would make s
|
| +} |
| + |
| // static |
| bool RendererSchedulerImpl::ShouldPrioritizeInputEvent( |
| const blink::WebInputEvent& web_input_event) { |
| @@ -574,6 +585,15 @@ base::TimeTicks RendererSchedulerImpl::CurrentIdleTaskDeadlineForTesting() |
| return idle_helper_.CurrentIdleTaskDeadline(); |
| } |
| +void RendererSchedulerImpl::RunIdleTasksForTesting( |
| + const base::Closure& callback) { |
| + MainThreadOnly().in_idle_period_for_testing = true; |
| + idle_helper_.RunIdleTasksForTesting( |
| + base::Bind(&RendererSchedulerImpl::EndIdlePeriodForTesting, |
| + weak_factory_.GetWeakPtr(), |
| + callback)); |
| +} |
| + |
| void RendererSchedulerImpl::MaybeUpdatePolicy() { |
| helper_.CheckOnValidThread(); |
| if (policy_may_need_update_.IsSet()) { |