| Index: content/renderer/scheduler/renderer_scheduler_impl.h
|
| diff --git a/content/renderer/scheduler/renderer_scheduler_impl.h b/content/renderer/scheduler/renderer_scheduler_impl.h
|
| index c908a974a0d8f21cf24f8cb34d36fc053a1d68c8..0352657fcade481570fdfe638babc27a5094899b 100644
|
| --- a/content/renderer/scheduler/renderer_scheduler_impl.h
|
| +++ b/content/renderer/scheduler/renderer_scheduler_impl.h
|
| @@ -10,6 +10,7 @@
|
| #include "base/threading/thread_checker.h"
|
| #include "cc/test/test_now_source.h"
|
| #include "content/renderer/scheduler/cancelable_closure_holder.h"
|
| +#include "content/renderer/scheduler/deadline_task_runner.h"
|
| #include "content/renderer/scheduler/renderer_scheduler.h"
|
| #include "content/renderer/scheduler/single_thread_idle_task_runner.h"
|
| #include "content/renderer/scheduler/task_queue_manager.h"
|
| @@ -53,6 +54,7 @@ class CONTENT_EXPORT RendererSchedulerImpl : public RendererScheduler {
|
|
|
| private:
|
| friend class RendererSchedulerImplTest;
|
| + friend class MockRendererSchedulerImpl;
|
|
|
| // Keep RendererSchedulerImpl::TaskQueueIdToString in sync with this enum.
|
| enum QueueId {
|
| @@ -117,21 +119,27 @@ class CONTENT_EXPORT RendererSchedulerImpl : public RendererScheduler {
|
| // Returns the current scheduler policy. Must be called from the main thread.
|
| Policy SchedulerPolicy() const;
|
|
|
| - // Posts a call to UpdatePolicy on the control runner to be run after |delay|
|
| - void PostUpdatePolicyOnControlRunner(base::TimeDelta delay);
|
| + // Schedules an immediate PolicyUpdate, if there isn't one already pending and
|
| + // sets |policy_may_need_update_|. Note |incoming_signals_lock_| must be
|
| + // locked.
|
| + void EnsureUrgentPolicyUpdatePostedOnMainThread(
|
| + const tracked_objects::Location& from_here);
|
|
|
| // Update the policy if a new signal has arrived. Must be called from the main
|
| // thread.
|
| void MaybeUpdatePolicy();
|
|
|
| - // Updates the scheduler policy. Must be called from the main thread.
|
| + // Locks |incoming_signals_lock_| and updates the scheduler policy.
|
| + // Must be called from the main thread.
|
| void UpdatePolicy();
|
| + virtual void UpdatePolicyLocked();
|
|
|
| // Helper for computing the new policy. |new_policy_duration| will be filled
|
| // with the amount of time after which the policy should be updated again. If
|
| // the duration is zero, a new policy update will not be scheduled. Must be
|
| // called with |incoming_signals_lock_| held.
|
| - Policy ComputeNewPolicy(base::TimeDelta* new_policy_duration);
|
| + Policy ComputeNewPolicy(base::TimeTicks now,
|
| + base::TimeDelta* new_policy_duration);
|
|
|
| // An input event of some sort happened, the policy may need updating.
|
| void UpdateForInputEvent(blink::WebInputEvent::Type type);
|
| @@ -158,6 +166,7 @@ class CONTENT_EXPORT RendererSchedulerImpl : public RendererScheduler {
|
| scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_;
|
|
|
| base::Closure update_policy_closure_;
|
| + DeadlineTaskRunner delayed_update_policy_runner_;
|
| CancelableClosureHolder end_idle_period_closure_;
|
|
|
| // Don't access current_policy_ directly, instead use SchedulerPolicy().
|
|
|