Chromium Code Reviews| Index: components/scheduler/renderer/renderer_scheduler_impl.h |
| diff --git a/components/scheduler/renderer/renderer_scheduler_impl.h b/components/scheduler/renderer/renderer_scheduler_impl.h |
| index 14693460eba115a9d9d1438d7e528d1c0f75fb48..57b6a2bd4e3b5c262e8018d0b6c0e22455a1cc41 100644 |
| --- a/components/scheduler/renderer/renderer_scheduler_impl.h |
| +++ b/components/scheduler/renderer/renderer_scheduler_impl.h |
| @@ -47,6 +47,8 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler, |
| void DidAnimateForInputOnCompositorThread() override; |
| void OnRendererHidden() override; |
| void OnRendererVisible() override; |
| + void OnRendererBackgrounded() override; |
| + void OnRendererForegrounded() override; |
| void OnPageLoadStarted() override; |
| bool IsHighPriorityWorkAnticipated() override; |
| bool ShouldYieldForHighPriorityWork() override; |
| @@ -105,6 +107,9 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler, |
| void EndIdlePeriod(); |
| + void SuspendTimerQueueWhenBackgrounded(); |
| + void ResumeTimerQueueWhenForegrounded(); |
| + |
| // Returns the serialized scheduler state for tracing. |
| scoped_refptr<base::trace_event::ConvertableToTraceFormat> AsValue( |
| base::TimeTicks optional_now) const; |
| @@ -133,6 +138,14 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler, |
| // user gestures. |
| static const int kIdlePeriodStarvationThresholdMillis = 10000; |
| +#if defined(OS_ANDROID) |
| + // The amount of time to wait after suspending shared timers after the |
| + // renderer has been backgrounded. |
| + static const int kSuspendTimersWhenBackgroundedDelayMillis = 5 * 60 * 1000; |
|
Sami
2015/08/28 14:15:01
Just thinking ahead to testing this, perhaps it wo
jdduke (slow)
2015/08/31 18:36:08
Done.
|
| +#else |
| + static const int kSuspendTimersWhenBackgroundedDelayMillis = -1; |
| +#endif |
| + |
| // Schedules an immediate PolicyUpdate, if there isn't one already pending and |
| // sets |policy_may_need_update_|. Note |any_thread_lock_| must be |
| // locked. |
| @@ -193,6 +206,7 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler, |
| base::Closure update_policy_closure_; |
| DeadlineTaskRunner delayed_update_policy_runner_; |
| CancelableClosureHolder end_renderer_hidden_idle_period_closure_; |
| + CancelableClosureHolder suspend_timers_when_backgrounded_closure_; |
| // We have decided to improve thread safety at the cost of some boilerplate |
| // (the accessors) for the following data members. |
| @@ -209,6 +223,8 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler, |
| base::TimeDelta expected_short_idle_period_duration_; |
| int timer_queue_suspend_count_; // TIMER_TASK_QUEUE suspended if non-zero. |
| bool renderer_hidden_; |
| + bool renderer_backgrounded_; |
| + bool timer_queue_suspended_for_backgrounded_renderer_; |
| bool was_shutdown_; |
| }; |