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 |