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

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: Move logic to the scheduler Created 5 years, 4 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..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_;
};

Powered by Google App Engine
This is Rietveld 408576698