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_; |
}; |