| 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" |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 void AddTaskObserver(base::MessageLoop::TaskObserver* task_observer) override; | 112 void AddTaskObserver(base::MessageLoop::TaskObserver* task_observer) override; |
| 113 void RemoveTaskObserver( | 113 void RemoveTaskObserver( |
| 114 base::MessageLoop::TaskObserver* task_observer) override; | 114 base::MessageLoop::TaskObserver* task_observer) override; |
| 115 void Shutdown() override; | 115 void Shutdown() override; |
| 116 void SuspendTimerQueue() override; | 116 void SuspendTimerQueue() override; |
| 117 void ResumeTimerQueue() override; | 117 void ResumeTimerQueue() override; |
| 118 void SetTimerQueueSuspensionWhenBackgroundedEnabled(bool enabled) override; | 118 void SetTimerQueueSuspensionWhenBackgroundedEnabled(bool enabled) override; |
| 119 void SetTopLevelBlameContext( | 119 void SetTopLevelBlameContext( |
| 120 base::trace_event::BlameContext* blame_context) override; | 120 base::trace_event::BlameContext* blame_context) override; |
| 121 void SetRAILModeObserver(RAILModeObserver* observer) override; | 121 void SetRAILModeObserver(RAILModeObserver* observer) override; |
| 122 bool ShouldForceEventsNonBlockingForUnresponsiveMainThread() const override; |
| 122 | 123 |
| 123 // RenderWidgetSignals::Observer implementation: | 124 // RenderWidgetSignals::Observer implementation: |
| 124 void SetAllRenderWidgetsHidden(bool hidden) override; | 125 void SetAllRenderWidgetsHidden(bool hidden) override; |
| 125 void SetHasVisibleRenderWidgetWithTouchHandler( | 126 void SetHasVisibleRenderWidgetWithTouchHandler( |
| 126 bool has_visible_render_widget_with_touch_handler) override; | 127 bool has_visible_render_widget_with_touch_handler) override; |
| 127 | 128 |
| 128 // SchedulerHelper::Observer implementation: | 129 // SchedulerHelper::Observer implementation: |
| 129 void OnUnregisterTaskQueue(const scoped_refptr<TaskQueue>& queue) override; | 130 void OnUnregisterTaskQueue(const scoped_refptr<TaskQueue>& queue) override; |
| 130 void OnTriedToExecuteBlockedTask(const TaskQueue& queue, | 131 void OnTriedToExecuteBlockedTask(const TaskQueue& queue, |
| 131 const base::PendingTask& task) override; | 132 const base::PendingTask& task) override; |
| 132 | 133 |
| 133 // TaskTimeTracker implementation: | 134 // TaskTimeTracker implementation: |
| 135 void ReportTaskStartTime(base::TimeTicks start_time) override; |
| 134 void ReportTaskTime(base::TimeTicks start_time, | 136 void ReportTaskTime(base::TimeTicks start_time, |
| 135 base::TimeTicks end_time) override; | 137 base::TimeTicks end_time) override; |
| 136 | 138 |
| 137 // QueueingTimeEstimator::Client implementation: | 139 // QueueingTimeEstimator::Client implementation: |
| 138 void OnQueueingTimeForWindowEstimated(base::TimeDelta queueing_time) override; | 140 void OnQueueingTimeForWindowEstimated(base::TimeDelta queueing_time) override; |
| 139 | 141 |
| 140 // Returns a task runner where tasks run at the highest possible priority. | 142 // Returns a task runner where tasks run at the highest possible priority. |
| 141 scoped_refptr<TaskQueue> ControlTaskRunner(); | 143 scoped_refptr<TaskQueue> ControlTaskRunner(); |
| 142 | 144 |
| 143 void RegisterTimeDomain(TimeDomain* time_domain); | 145 void RegisterTimeDomain(TimeDomain* time_domain); |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 | 367 |
| 366 base::Closure update_policy_closure_; | 368 base::Closure update_policy_closure_; |
| 367 DeadlineTaskRunner delayed_update_policy_runner_; | 369 DeadlineTaskRunner delayed_update_policy_runner_; |
| 368 CancelableClosureHolder end_renderer_hidden_idle_period_closure_; | 370 CancelableClosureHolder end_renderer_hidden_idle_period_closure_; |
| 369 CancelableClosureHolder suspend_timers_when_backgrounded_closure_; | 371 CancelableClosureHolder suspend_timers_when_backgrounded_closure_; |
| 370 | 372 |
| 371 // We have decided to improve thread safety at the cost of some boilerplate | 373 // We have decided to improve thread safety at the cost of some boilerplate |
| 372 // (the accessors) for the following data members. | 374 // (the accessors) for the following data members. |
| 373 | 375 |
| 374 struct MainThreadOnly { | 376 struct MainThreadOnly { |
| 375 MainThreadOnly(RendererSchedulerImpl* renderer_scheduler_impl, | 377 MainThreadOnly(const scoped_refptr<TaskQueue>& compositor_task_runner, |
| 376 const scoped_refptr<TaskQueue>& compositor_task_runner, | |
| 377 base::TickClock* time_source); | 378 base::TickClock* time_source); |
| 378 ~MainThreadOnly(); | 379 ~MainThreadOnly(); |
| 379 | 380 |
| 380 TaskCostEstimator loading_task_cost_estimator; | 381 TaskCostEstimator loading_task_cost_estimator; |
| 381 TaskCostEstimator timer_task_cost_estimator; | 382 TaskCostEstimator timer_task_cost_estimator; |
| 382 QueueingTimeEstimator queueing_time_estimator; | |
| 383 LongTaskTracker long_task_tracker; | 383 LongTaskTracker long_task_tracker; |
| 384 IdleTimeEstimator idle_time_estimator; | 384 IdleTimeEstimator idle_time_estimator; |
| 385 UseCase current_use_case; | 385 UseCase current_use_case; |
| 386 Policy current_policy; | 386 Policy current_policy; |
| 387 base::TimeTicks current_policy_expiration_time; | 387 base::TimeTicks current_policy_expiration_time; |
| 388 base::TimeTicks estimated_next_frame_begin; | 388 base::TimeTicks estimated_next_frame_begin; |
| 389 base::TimeDelta compositor_frame_interval; | 389 base::TimeDelta compositor_frame_interval; |
| 390 base::TimeDelta longest_jank_free_task_duration; | 390 base::TimeDelta longest_jank_free_task_duration; |
| 391 int timer_queue_suspend_count; // TIMER_TASK_QUEUE suspended if non-zero. | 391 int timer_queue_suspend_count; // TIMER_TASK_QUEUE suspended if non-zero. |
| 392 int navigation_task_expected_count; | 392 int navigation_task_expected_count; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 405 bool have_reported_blocking_intervention_since_navigation; | 405 bool have_reported_blocking_intervention_since_navigation; |
| 406 bool has_visible_render_widget_with_touch_handler; | 406 bool has_visible_render_widget_with_touch_handler; |
| 407 bool begin_frame_not_expected_soon; | 407 bool begin_frame_not_expected_soon; |
| 408 bool in_idle_period_for_testing; | 408 bool in_idle_period_for_testing; |
| 409 bool use_virtual_time; | 409 bool use_virtual_time; |
| 410 std::set<WebViewSchedulerImpl*> web_view_schedulers; // Not owned. | 410 std::set<WebViewSchedulerImpl*> web_view_schedulers; // Not owned. |
| 411 RAILModeObserver* rail_mode_observer; // Not owned. | 411 RAILModeObserver* rail_mode_observer; // Not owned. |
| 412 }; | 412 }; |
| 413 | 413 |
| 414 struct AnyThread { | 414 struct AnyThread { |
| 415 AnyThread(); | 415 AnyThread(RendererSchedulerImpl* renderer_scheduler_impl); |
| 416 ~AnyThread(); | 416 ~AnyThread(); |
| 417 | 417 |
| 418 base::TimeTicks last_idle_period_end_time; | 418 base::TimeTicks last_idle_period_end_time; |
| 419 base::TimeTicks rails_loading_priority_deadline; | 419 base::TimeTicks rails_loading_priority_deadline; |
| 420 base::TimeTicks fling_compositor_escalation_deadline; | 420 base::TimeTicks fling_compositor_escalation_deadline; |
| 421 UserModel user_model; | 421 UserModel user_model; |
| 422 QueueingTimeEstimator queueing_time_estimator; |
| 422 bool awaiting_touch_start_response; | 423 bool awaiting_touch_start_response; |
| 423 bool in_idle_period; | 424 bool in_idle_period; |
| 424 bool begin_main_frame_on_critical_path; | 425 bool begin_main_frame_on_critical_path; |
| 425 bool last_gesture_was_compositor_driven; | 426 bool last_gesture_was_compositor_driven; |
| 426 bool default_gesture_prevented; | 427 bool default_gesture_prevented; |
| 427 bool have_seen_touchstart; | 428 bool have_seen_touchstart; |
| 428 }; | 429 }; |
| 429 | 430 |
| 430 struct CompositorThreadOnly { | 431 struct CompositorThreadOnly { |
| 431 CompositorThreadOnly(); | 432 CompositorThreadOnly(); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 PollableThreadSafeFlag policy_may_need_update_; | 479 PollableThreadSafeFlag policy_may_need_update_; |
| 479 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; | 480 base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_; |
| 480 | 481 |
| 481 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); | 482 DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl); |
| 482 }; | 483 }; |
| 483 | 484 |
| 484 } // namespace scheduler | 485 } // namespace scheduler |
| 485 } // namespace blink | 486 } // namespace blink |
| 486 | 487 |
| 487 #endif // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDU
LER_IMPL_H_ | 488 #endif // THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_RENDERER_SCHEDU
LER_IMPL_H_ |
| OLD | NEW |