Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(342)

Unified Diff: components/scheduler/renderer/renderer_scheduler_impl.h

Issue 1133143003: [Android] Suspend shared timers for hidden renderers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@input_remove_suspend
Patch Set: Use ContentRendererClient Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;
};
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler.h ('k') | components/scheduler/renderer/renderer_scheduler_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698