| 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..1898ca81bd8826a4762a350f4bcd127c8f5b6856 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;
|
| @@ -57,6 +59,7 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler,
|
| void Shutdown() override;
|
| void SuspendTimerQueue() override;
|
| void ResumeTimerQueue() override;
|
| + void SetTimerQueueSuspensionWhenBackgroundedEnabled(bool enabled) override;
|
|
|
| SchedulerHelper* GetSchedulerHelperForTesting();
|
| base::TimeTicks CurrentIdleTaskDeadlineForTesting() const;
|
| @@ -133,6 +136,11 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler,
|
| // user gestures.
|
| static const int kIdlePeriodStarvationThresholdMillis = 10000;
|
|
|
| + // The amount of time to wait before suspending shared timers after the
|
| + // renderer has been backgrounded. This is use donly if background suspension
|
| + // of shared timers is enabled.
|
| + static const int kSuspendTimersWhenBackgroundedDelayMillis = 5 * 60 * 1000;
|
| +
|
| // Schedules an immediate PolicyUpdate, if there isn't one already pending and
|
| // sets |policy_may_need_update_|. Note |any_thread_lock_| must be
|
| // locked.
|
| @@ -182,6 +190,11 @@ class SCHEDULER_EXPORT RendererSchedulerImpl : public RendererScheduler,
|
| // |kIdlePeriodStarvationThresholdMillis|.
|
| bool HadAnIdlePeriodRecently(base::TimeTicks now) const;
|
|
|
| + // Helpers for safely suspending/resuming the timer queue after a
|
| + // background/foreground signal.
|
| + void SuspendTimerQueueWhenBackgrounded();
|
| + void ResumeTimerQueueWhenForegrounded();
|
| +
|
| SchedulerHelper helper_;
|
| IdleHelper idle_helper_;
|
|
|
| @@ -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,9 @@ 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_suspension_when_backgrounded_enabled_;
|
| + bool timer_queue_suspended_when_backgrounded_;
|
| bool was_shutdown_;
|
| };
|
|
|
|
|