| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ | 5 #ifndef COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ |
| 6 #define COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ | 6 #define COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ |
| 7 | 7 |
| 8 #include "base/atomicops.h" | 8 #include "base/atomicops.h" |
| 9 #include "base/synchronization/lock.h" | 9 #include "base/synchronization/lock.h" |
| 10 #include "components/scheduler/base/pollable_thread_safe_flag.h" | 10 #include "components/scheduler/base/pollable_thread_safe_flag.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 namespace scheduler { | 27 namespace scheduler { |
| 28 class RenderWidgetSchedulingState; | 28 class RenderWidgetSchedulingState; |
| 29 | 29 |
| 30 class SCHEDULER_EXPORT RendererSchedulerImpl | 30 class SCHEDULER_EXPORT RendererSchedulerImpl |
| 31 : public RendererScheduler, | 31 : public RendererScheduler, |
| 32 public IdleHelper::Delegate, | 32 public IdleHelper::Delegate, |
| 33 public SchedulerHelper::Observer, | 33 public SchedulerHelper::Observer, |
| 34 public RenderWidgetSignals::Observer { | 34 public RenderWidgetSignals::Observer { |
| 35 public: | 35 public: |
| 36 enum class TimeSource { NORMAL, VIRTUAL }; |
| 37 |
| 36 RendererSchedulerImpl( | 38 RendererSchedulerImpl( |
| 37 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner); | 39 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner, |
| 40 TimeSource time_source); |
| 38 ~RendererSchedulerImpl() override; | 41 ~RendererSchedulerImpl() override; |
| 39 | 42 |
| 40 // RendererScheduler implementation: | 43 // RendererScheduler implementation: |
| 41 scoped_refptr<TaskQueue> DefaultTaskRunner() override; | 44 scoped_refptr<TaskQueue> DefaultTaskRunner() override; |
| 42 scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override; | 45 scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override; |
| 43 scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override; | 46 scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override; |
| 44 scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override; | 47 scoped_refptr<base::SingleThreadTaskRunner> LoadingTaskRunner() override; |
| 45 scoped_refptr<TaskQueue> TimerTaskRunner() override; | 48 scoped_refptr<TaskQueue> TimerTaskRunner() override; |
| 46 scoped_refptr<TaskQueue> NewLoadingTaskRunner(const char* name) override; | 49 scoped_refptr<TaskQueue> NewLoadingTaskRunner(const char* name) override; |
| 47 scoped_refptr<TaskQueue> NewTimerTaskRunner(const char* name) override; | 50 scoped_refptr<TaskQueue> NewTimerTaskRunner(const char* name) override; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 64 bool IsHighPriorityWorkAnticipated() override; | 67 bool IsHighPriorityWorkAnticipated() override; |
| 65 bool ShouldYieldForHighPriorityWork() override; | 68 bool ShouldYieldForHighPriorityWork() override; |
| 66 bool CanExceedIdleDeadlineIfRequired() const override; | 69 bool CanExceedIdleDeadlineIfRequired() const override; |
| 67 void AddTaskObserver(base::MessageLoop::TaskObserver* task_observer) override; | 70 void AddTaskObserver(base::MessageLoop::TaskObserver* task_observer) override; |
| 68 void RemoveTaskObserver( | 71 void RemoveTaskObserver( |
| 69 base::MessageLoop::TaskObserver* task_observer) override; | 72 base::MessageLoop::TaskObserver* task_observer) override; |
| 70 void Shutdown() override; | 73 void Shutdown() override; |
| 71 void SuspendTimerQueue() override; | 74 void SuspendTimerQueue() override; |
| 72 void ResumeTimerQueue() override; | 75 void ResumeTimerQueue() override; |
| 73 void SetTimerQueueSuspensionWhenBackgroundedEnabled(bool enabled) override; | 76 void SetTimerQueueSuspensionWhenBackgroundedEnabled(bool enabled) override; |
| 77 double currentTime() const override; |
| 78 double monotonicallyIncreasingTime() const override; |
| 74 | 79 |
| 75 // RenderWidgetSignals::Observer implementation: | 80 // RenderWidgetSignals::Observer implementation: |
| 76 void SetAllRenderWidgetsHidden(bool hidden) override; | 81 void SetAllRenderWidgetsHidden(bool hidden) override; |
| 77 void SetHasVisibleRenderWidgetWithTouchHandler( | 82 void SetHasVisibleRenderWidgetWithTouchHandler( |
| 78 bool has_visible_render_widget_with_touch_handler) override; | 83 bool has_visible_render_widget_with_touch_handler) override; |
| 79 | 84 |
| 80 // TaskQueueManager::Observer implementation: | 85 // TaskQueueManager::Observer implementation: |
| 81 void OnUnregisterTaskQueue(const scoped_refptr<TaskQueue>& queue) override; | 86 void OnUnregisterTaskQueue(const scoped_refptr<TaskQueue>& queue) override; |
| 82 | 87 |
| 83 // Test helpers. | 88 // Test helpers. |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 std::set<scoped_refptr<TaskQueue>> loading_task_runners_; | 239 std::set<scoped_refptr<TaskQueue>> loading_task_runners_; |
| 235 std::set<scoped_refptr<TaskQueue>> timer_task_runners_; | 240 std::set<scoped_refptr<TaskQueue>> timer_task_runners_; |
| 236 scoped_refptr<TaskQueue> default_loading_task_runner_; | 241 scoped_refptr<TaskQueue> default_loading_task_runner_; |
| 237 scoped_refptr<TaskQueue> default_timer_task_runner_; | 242 scoped_refptr<TaskQueue> default_timer_task_runner_; |
| 238 | 243 |
| 239 base::Closure update_policy_closure_; | 244 base::Closure update_policy_closure_; |
| 240 DeadlineTaskRunner delayed_update_policy_runner_; | 245 DeadlineTaskRunner delayed_update_policy_runner_; |
| 241 CancelableClosureHolder end_renderer_hidden_idle_period_closure_; | 246 CancelableClosureHolder end_renderer_hidden_idle_period_closure_; |
| 242 CancelableClosureHolder suspend_timers_when_backgrounded_closure_; | 247 CancelableClosureHolder suspend_timers_when_backgrounded_closure_; |
| 243 | 248 |
| 249 const TimeSource time_source_; |
| 250 |
| 244 // We have decided to improve thread safety at the cost of some boilerplate | 251 // We have decided to improve thread safety at the cost of some boilerplate |
| 245 // (the accessors) for the following data members. | 252 // (the accessors) for the following data members. |
| 246 | 253 |
| 247 struct MainThreadOnly { | 254 struct MainThreadOnly { |
| 248 explicit MainThreadOnly( | 255 MainThreadOnly(const scoped_refptr<TaskQueue>& compositor_task_runner, |
| 249 const scoped_refptr<TaskQueue>& compositor_task_runner); | 256 base::TickClock* time_source); |
| 250 ~MainThreadOnly(); | 257 ~MainThreadOnly(); |
| 251 | 258 |
| 252 TaskCostEstimator loading_task_cost_estimator; | 259 TaskCostEstimator loading_task_cost_estimator; |
| 253 TaskCostEstimator timer_task_cost_estimator; | 260 TaskCostEstimator timer_task_cost_estimator; |
| 254 IdleTimeEstimator idle_time_estimator; | 261 IdleTimeEstimator idle_time_estimator; |
| 255 UseCase current_use_case; | 262 UseCase current_use_case; |
| 256 Policy current_policy; | 263 Policy current_policy; |
| 257 base::TimeTicks current_policy_expiration_time; | 264 base::TimeTicks current_policy_expiration_time; |
| 258 base::TimeTicks estimated_next_frame_begin; | 265 base::TimeTicks estimated_next_frame_begin; |
| 259 base::TimeDelta compositor_frame_interval; | 266 base::TimeDelta compositor_frame_interval; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 | 340 |
| 334 PollableThreadSafeFlag policy_may_need_update_; | 341 PollableThreadSafeFlag policy_may_need_update_; |
| 335 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; | 342 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; |
| 336 | 343 |
| 337 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); | 344 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); |
| 338 }; | 345 }; |
| 339 | 346 |
| 340 } // namespace scheduler | 347 } // namespace scheduler |
| 341 | 348 |
| 342 #endif // COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ | 349 #endif // COMPONENTS_SCHEDULER_RENDERER_RENDERER_SCHEDULER_IMPL_H_ |
| OLD | NEW |