| Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
|
| index c305223d3b446770d4ef5d753984a2af8c06eb66..fe9be1f43b7f897f17f5c878e42948927ea737ac 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
|
| +++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
|
| @@ -10,6 +10,7 @@
|
| #include "base/macros.h"
|
| #include "base/synchronization/lock.h"
|
| #include "base/trace_event/trace_log.h"
|
| +#include "device/base/synchronization/shared_memory_seqlock_buffer.h"
|
| #include "platform/scheduler/base/pollable_thread_safe_flag.h"
|
| #include "platform/scheduler/base/queueing_time_estimator.h"
|
| #include "platform/scheduler/base/thread_load_tracker.h"
|
| @@ -125,6 +126,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl
|
| void SetTopLevelBlameContext(
|
| base::trace_event::BlameContext* blame_context) override;
|
| void SetRAILModeObserver(RAILModeObserver* observer) override;
|
| + bool MainThreadSeemsUnresponsive() override;
|
|
|
| // RenderWidgetSignals::Observer implementation:
|
| void SetAllRenderWidgetsHidden(bool hidden) override;
|
| @@ -137,7 +139,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl
|
| const base::PendingTask& task) override;
|
|
|
| // TaskTimeObserver implementation:
|
| - void willProcessTask(TaskQueue* task_queue, double start_time) override{};
|
| + void willProcessTask(TaskQueue* task_queue, double start_time) override;
|
| void didProcessTask(TaskQueue* task_queue,
|
| double start_time,
|
| double end_time) override;
|
| @@ -400,6 +402,11 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl
|
| CancelableClosureHolder end_renderer_hidden_idle_period_closure_;
|
| CancelableClosureHolder suspend_timers_when_backgrounded_closure_;
|
|
|
| + using SeqLockQueueingTimeEstimator =
|
| + device::SharedMemorySeqLockBuffer<QueueingTimeEstimator>;
|
| +
|
| + SeqLockQueueingTimeEstimator seqlock_queueing_time_estimator_;
|
| +
|
| // We have decided to improve thread safety at the cost of some boilerplate
|
| // (the accessors) for the following data members.
|
|
|
| @@ -412,7 +419,6 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl
|
|
|
| TaskCostEstimator loading_task_cost_estimator;
|
| TaskCostEstimator timer_task_cost_estimator;
|
| - QueueingTimeEstimator queueing_time_estimator;
|
| IdleTimeEstimator idle_time_estimator;
|
| ThreadLoadTracker background_main_thread_load_tracker;
|
| ThreadLoadTracker foreground_main_thread_load_tracker;
|
| @@ -420,6 +426,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl
|
| Policy current_policy;
|
| base::TimeTicks current_policy_expiration_time;
|
| base::TimeTicks estimated_next_frame_begin;
|
| + base::TimeTicks current_task_start_time;
|
| base::TimeDelta compositor_frame_interval;
|
| base::TimeDelta longest_jank_free_task_duration;
|
| base::Optional<base::TimeTicks> last_audio_state_change;
|
| @@ -469,6 +476,7 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl
|
| ~CompositorThreadOnly();
|
|
|
| WebInputEvent::Type last_input_type;
|
| + bool main_thread_seems_unresponsive;
|
| std::unique_ptr<base::ThreadChecker> compositor_thread_checker;
|
|
|
| void CheckOnValidThread() {
|
| @@ -513,6 +521,10 @@ class BLINK_PLATFORM_EXPORT RendererSchedulerImpl
|
| }
|
|
|
| PollableThreadSafeFlag policy_may_need_update_;
|
| + // The maximum expected queueing time before the main thread is considered
|
| + // unresponsive.
|
| + base::TimeDelta main_thread_responsiveness_threshold_;
|
| +
|
| base::WeakPtrFactory<RendererSchedulerImpl> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(RendererSchedulerImpl);
|
|
|