| 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 THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDULER
     _IMPL_H_ | 5 #ifndef THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDULER
     _IMPL_H_ | 
| 6 #define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDULER
     _IMPL_H_ | 6 #define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDULER
     _IMPL_H_ | 
| 7 | 7 | 
| 8 #include "base/atomicops.h" | 8 #include "base/atomicops.h" | 
| 9 #include "base/macros.h" | 9 #include "base/macros.h" | 
| 10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" | 
| 11 #include "platform/scheduler/base/pollable_thread_safe_flag.h" | 11 #include "platform/scheduler/base/pollable_thread_safe_flag.h" | 
| 12 #include "platform/scheduler/base/queueing_time_estimator.h" | 12 #include "platform/scheduler/base/queueing_time_estimator.h" | 
| 13 #include "platform/scheduler/base/thread_load_tracker.h" | 13 #include "platform/scheduler/base/thread_load_tracker.h" | 
| 14 #include "platform/scheduler/child/idle_helper.h" | 14 #include "platform/scheduler/child/idle_helper.h" | 
| 15 #include "platform/scheduler/child/scheduler_helper.h" | 15 #include "platform/scheduler/child/scheduler_helper.h" | 
| 16 #include "platform/scheduler/renderer/deadline_task_runner.h" | 16 #include "platform/scheduler/renderer/deadline_task_runner.h" | 
| 17 #include "platform/scheduler/renderer/idle_time_estimator.h" | 17 #include "platform/scheduler/renderer/idle_time_estimator.h" | 
| 18 #include "platform/scheduler/renderer/render_widget_signals.h" | 18 #include "platform/scheduler/renderer/render_widget_signals.h" | 
| 19 #include "platform/scheduler/renderer/task_cost_estimator.h" | 19 #include "platform/scheduler/renderer/task_cost_estimator.h" | 
| 20 #include "platform/scheduler/renderer/throttling_helper.h" | 20 #include "platform/scheduler/renderer/task_queue_throttler.h" | 
| 21 #include "platform/scheduler/renderer/user_model.h" | 21 #include "platform/scheduler/renderer/user_model.h" | 
| 22 #include "platform/scheduler/renderer/web_view_scheduler_impl.h" | 22 #include "platform/scheduler/renderer/web_view_scheduler_impl.h" | 
| 23 #include "public/platform/scheduler/renderer/renderer_scheduler.h" | 23 #include "public/platform/scheduler/renderer/renderer_scheduler.h" | 
| 24 #include "public/platform/scheduler/base/task_time_observer.h" | 24 #include "public/platform/scheduler/base/task_time_observer.h" | 
| 25 | 25 | 
| 26 namespace base { | 26 namespace base { | 
| 27 namespace trace_event { | 27 namespace trace_event { | 
| 28 class ConvertableToTraceFormat; | 28 class ConvertableToTraceFormat; | 
| 29 } | 29 } | 
| 30 } | 30 } | 
| 31 | 31 | 
| 32 namespace blink { | 32 namespace blink { | 
| 33 namespace scheduler { | 33 namespace scheduler { | 
| 34 class AutoAdvancingVirtualTimeDomain; | 34 class AutoAdvancingVirtualTimeDomain; | 
| 35 class RenderWidgetSchedulingState; | 35 class RenderWidgetSchedulingState; | 
| 36 class WebViewSchedulerImpl; | 36 class WebViewSchedulerImpl; | 
| 37 class ThrottlingHelper; | 37 class TaskQueueThrottler; | 
| 38 | 38 | 
| 39 class BLINK_PLATFORM_EXPORT RendererSchedulerImpl | 39 class BLINK_PLATFORM_EXPORT RendererSchedulerImpl | 
| 40     : public RendererScheduler, | 40     : public RendererScheduler, | 
| 41       public IdleHelper::Delegate, | 41       public IdleHelper::Delegate, | 
| 42       public SchedulerHelper::Observer, | 42       public SchedulerHelper::Observer, | 
| 43       public RenderWidgetSignals::Observer, | 43       public RenderWidgetSignals::Observer, | 
| 44       public TaskTimeObserver, | 44       public TaskTimeObserver, | 
| 45       public QueueingTimeEstimator::Client { | 45       public QueueingTimeEstimator::Client { | 
| 46  public: | 46  public: | 
| 47   // Keep RendererScheduler::UseCaseToString in sync with this enum. | 47   // Keep RendererScheduler::UseCaseToString in sync with this enum. | 
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 124   void SetAllRenderWidgetsHidden(bool hidden) override; | 124   void SetAllRenderWidgetsHidden(bool hidden) override; | 
| 125   void SetHasVisibleRenderWidgetWithTouchHandler( | 125   void SetHasVisibleRenderWidgetWithTouchHandler( | 
| 126       bool has_visible_render_widget_with_touch_handler) override; | 126       bool has_visible_render_widget_with_touch_handler) override; | 
| 127 | 127 | 
| 128   // SchedulerHelper::Observer implementation: | 128   // SchedulerHelper::Observer implementation: | 
| 129   void OnUnregisterTaskQueue(const scoped_refptr<TaskQueue>& queue) override; | 129   void OnUnregisterTaskQueue(const scoped_refptr<TaskQueue>& queue) override; | 
| 130   void OnTriedToExecuteBlockedTask(const TaskQueue& queue, | 130   void OnTriedToExecuteBlockedTask(const TaskQueue& queue, | 
| 131                                    const base::PendingTask& task) override; | 131                                    const base::PendingTask& task) override; | 
| 132 | 132 | 
| 133   // TaskTimeObserver implementation: | 133   // TaskTimeObserver implementation: | 
| 134   void ReportTaskTime(double start_time, double end_time) override; | 134   void ReportTaskTime(TaskQueue* task_queue, | 
|  | 135                       base::TimeTicks start_time, | 
|  | 136                       base::TimeTicks end_time) override; | 
| 135 | 137 | 
| 136   // QueueingTimeEstimator::Client implementation: | 138   // QueueingTimeEstimator::Client implementation: | 
| 137   void OnQueueingTimeForWindowEstimated(base::TimeDelta queueing_time) override; | 139   void OnQueueingTimeForWindowEstimated(base::TimeDelta queueing_time) override; | 
| 138 | 140 | 
| 139   // Returns a task runner where tasks run at the highest possible priority. | 141   // Returns a task runner where tasks run at the highest possible priority. | 
| 140   scoped_refptr<TaskQueue> ControlTaskRunner(); | 142   scoped_refptr<TaskQueue> ControlTaskRunner(); | 
| 141 | 143 | 
| 142   void RegisterTimeDomain(TimeDomain* time_domain); | 144   void RegisterTimeDomain(TimeDomain* time_domain); | 
| 143   void UnregisterTimeDomain(TimeDomain* time_domain); | 145   void UnregisterTimeDomain(TimeDomain* time_domain); | 
| 144 | 146 | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 163   bool PolicyNeedsUpdateForTesting(); | 165   bool PolicyNeedsUpdateForTesting(); | 
| 164 | 166 | 
| 165   base::TickClock* tick_clock() const; | 167   base::TickClock* tick_clock() const; | 
| 166 | 168 | 
| 167   RealTimeDomain* real_time_domain() const { | 169   RealTimeDomain* real_time_domain() const { | 
| 168     return helper_.real_time_domain(); | 170     return helper_.real_time_domain(); | 
| 169   } | 171   } | 
| 170 | 172 | 
| 171   AutoAdvancingVirtualTimeDomain* GetVirtualTimeDomain(); | 173   AutoAdvancingVirtualTimeDomain* GetVirtualTimeDomain(); | 
| 172 | 174 | 
| 173   ThrottlingHelper* throttling_helper() { return throttling_helper_.get(); } | 175   TaskQueueThrottler* task_queue_throttler() { | 
|  | 176     return task_queue_throttler_.get(); | 
|  | 177   } | 
| 174 | 178 | 
| 175  private: | 179  private: | 
| 176   friend class RendererSchedulerImplTest; | 180   friend class RendererSchedulerImplTest; | 
| 177   friend class RendererSchedulerImplForTest; | 181   friend class RendererSchedulerImplForTest; | 
| 178   friend class RenderWidgetSchedulingState; | 182   friend class RenderWidgetSchedulingState; | 
| 179 | 183 | 
| 180   enum class ExpensiveTaskPolicy { RUN, BLOCK, THROTTLE }; | 184   enum class ExpensiveTaskPolicy { RUN, BLOCK, THROTTLE }; | 
| 181 | 185 | 
| 182   enum class TimeDomainType { | 186   enum class TimeDomainType { | 
| 183     REAL, | 187     REAL, | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 331 | 335 | 
| 332   void ApplyTaskQueuePolicy(TaskQueue* task_queue, | 336   void ApplyTaskQueuePolicy(TaskQueue* task_queue, | 
| 333                             const TaskQueuePolicy& old_task_queue_policy, | 337                             const TaskQueuePolicy& old_task_queue_policy, | 
| 334                             const TaskQueuePolicy& new_task_queue_policy) const; | 338                             const TaskQueuePolicy& new_task_queue_policy) const; | 
| 335 | 339 | 
| 336   static const char* ExpensiveTaskPolicyToString( | 340   static const char* ExpensiveTaskPolicyToString( | 
| 337       ExpensiveTaskPolicy expensive_task_policy); | 341       ExpensiveTaskPolicy expensive_task_policy); | 
| 338 | 342 | 
| 339   SchedulerHelper helper_; | 343   SchedulerHelper helper_; | 
| 340   IdleHelper idle_helper_; | 344   IdleHelper idle_helper_; | 
| 341   std::unique_ptr<ThrottlingHelper> throttling_helper_; | 345   std::unique_ptr<TaskQueueThrottler> task_queue_throttler_; | 
| 342   RenderWidgetSignals render_widget_scheduler_signals_; | 346   RenderWidgetSignals render_widget_scheduler_signals_; | 
| 343 | 347 | 
| 344   const scoped_refptr<TaskQueue> control_task_runner_; | 348   const scoped_refptr<TaskQueue> control_task_runner_; | 
| 345   const scoped_refptr<TaskQueue> compositor_task_runner_; | 349   const scoped_refptr<TaskQueue> compositor_task_runner_; | 
| 346   std::set<scoped_refptr<TaskQueue>> loading_task_runners_; | 350   std::set<scoped_refptr<TaskQueue>> loading_task_runners_; | 
| 347   std::set<scoped_refptr<TaskQueue>> timer_task_runners_; | 351   std::set<scoped_refptr<TaskQueue>> timer_task_runners_; | 
| 348   std::set<scoped_refptr<TaskQueue>> unthrottled_task_runners_; | 352   std::set<scoped_refptr<TaskQueue>> unthrottled_task_runners_; | 
| 349   scoped_refptr<TaskQueue> default_loading_task_runner_; | 353   scoped_refptr<TaskQueue> default_loading_task_runner_; | 
| 350   scoped_refptr<TaskQueue> default_timer_task_runner_; | 354   scoped_refptr<TaskQueue> default_timer_task_runner_; | 
| 351 | 355 | 
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 469   PollableThreadSafeFlag policy_may_need_update_; | 473   PollableThreadSafeFlag policy_may_need_update_; | 
| 470   base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; | 474   base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; | 
| 471 | 475 | 
| 472   DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); | 476   DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); | 
| 473 }; | 477 }; | 
| 474 | 478 | 
| 475 }  // namespace scheduler | 479 }  // namespace scheduler | 
| 476 }  // namespace blink | 480 }  // namespace blink | 
| 477 | 481 | 
| 478 #endif  // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDU
     LER_IMPL_H_ | 482 #endif  // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDU
     LER_IMPL_H_ | 
| OLD | NEW | 
|---|