diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h')
-rw-r--r-- | chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h b/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h index 20fb1a37a14..e34eb40b16e 100644 --- a/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h +++ b/chromium/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h @@ -17,6 +17,7 @@ #include "base/memory/weak_ptr.h" #include "base/message_loop/message_loop.h" #include "base/metrics/single_sample_metrics.h" +#include "base/optional.h" #include "base/single_thread_task_runner.h" #include "base/synchronization/lock.h" #include "base/task/sequence_manager/task_queue.h" @@ -26,7 +27,6 @@ #include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/scheduler/child/pollable_thread_safe_flag.h" -#include "third_party/blink/renderer/platform/scheduler/child/task_queue_with_task_type.h" #include "third_party/blink/renderer/platform/scheduler/common/idle_canceled_delayed_task_sweeper.h" #include "third_party/blink/renderer/platform/scheduler/common/idle_helper.h" #include "third_party/blink/renderer/platform/scheduler/common/thread_scheduler_impl.h" @@ -125,8 +125,13 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl net::RequestPrioritySize::NUM_PRIORITIES> net_to_blink_priority; - // Turn on relevant experiments during the loading phase. - bool experiment_only_when_loading; + using FrameTaskTypeToQueueTraitsArray = + std::array<base::Optional<MainThreadTaskQueue::QueueTraits>, + static_cast<size_t>(TaskType::kCount)>; + // Array of QueueTraits indexed by TaskType, containing TaskType::kCount + // entries. This is initialized early with all valid entries. Entries that + // aren't valid task types, i.e. non-frame level, are base::nullopt. + FrameTaskTypeToQueueTraitsArray frame_task_types_to_queue_traits; }; static const char* UseCaseToString(UseCase use_case); @@ -154,6 +159,7 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl std::unique_ptr<WebThread> CreateMainThread() override; scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override; scoped_refptr<base::SingleThreadTaskRunner> IPCTaskRunner() override; + scoped_refptr<base::SingleThreadTaskRunner> CleanupTaskRunner() override; std::unique_ptr<WebRenderWidgetSchedulingState> NewRenderWidgetSchedulingState() override; void WillBeginFrame(const viz::BeginFrameArgs& args) override; @@ -186,7 +192,7 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl void Shutdown() override; void SetTopLevelBlameContext( base::trace_event::BlameContext* blame_context) override; - void AddRAILModeObserver(RAILModeObserver* observer) override; + void AddRAILModeObserver(WebRAILModeObserver* observer) override; void SetRendererProcessType(RendererProcessType type) override; WebScopedVirtualTimePauser CreateWebScopedVirtualTimePauser( const char* name, @@ -582,6 +588,9 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl MainThreadSchedulerImpl* scheduler_; // NOT OWNED }; + // ThreadSchedulerImpl implementation: + SchedulerHelper* GetHelper() override; + // IdleHelper::Delegate implementation: bool CanEnterLongIdlePeriod( base::TimeTicks now, @@ -589,8 +598,8 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl void IsNotQuiescent() override {} void OnIdlePeriodStarted() override; void OnIdlePeriodEnded() override; - void OnPendingTasksChanged(bool has_tasks) override; + void DispatchRequestBeginMainFrameNotExpected(bool has_tasks); void EndIdlePeriod(); @@ -643,7 +652,7 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl kForceUpdate, }; - // The implelemtation of UpdatePolicy & ForceUpdatePolicy. It is allowed to + // The implementation of UpdatePolicy & ForceUpdatePolicy. It is allowed to // early out if |update_type| is kMayEarlyOutIfPolicyUnchanged. virtual void UpdatePolicyLocked(UpdateType update_type); @@ -702,15 +711,6 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl // TaskQueueThrottler. void VirtualTimeResumed(); - // Returns true if the current task should not be reported in UKM because no - // thread time was recorded for it. Also updates |sampling_rate| to account - // for the ignored tasks by sampling the remaining tasks with higher - // probability. - bool ShouldIgnoreTaskForUkm(bool has_thread_time, double* sampling_rate); - - // Returns true with probability of kSamplingRateForTaskUkm. - bool ShouldRecordTaskUkm(bool has_thread_time); - // Returns true if there is a change in the main thread's policy that should // trigger a priority update. bool ShouldUpdateTaskQueuePriorities(Policy new_policy) const; @@ -725,12 +725,12 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl const base::sequence_manager::TaskQueue::Task& task, const base::sequence_manager::TaskQueue::TaskTiming& task_timing); - void RecordTaskUkmImpl( + UkmRecordingStatus RecordTaskUkmImpl( MainThreadTaskQueue* queue, const base::sequence_manager::TaskQueue::Task& task, const base::sequence_manager::TaskQueue::TaskTiming& task_timing, - PageSchedulerImpl* page_scheduler, - size_t page_schedulers_to_attribute); + FrameSchedulerImpl* frame_scheduler, + bool precise_attribution); void InitWakeUpBudgetPoolIfNeeded(); @@ -777,12 +777,14 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl scoped_refptr<MainThreadTaskQueue> v8_task_queue_; scoped_refptr<MainThreadTaskQueue> ipc_task_queue_; + scoped_refptr<MainThreadTaskQueue> cleanup_task_queue_; - scoped_refptr<TaskQueueWithTaskType> v8_task_runner_; - scoped_refptr<TaskQueueWithTaskType> compositor_task_runner_; - scoped_refptr<TaskQueueWithTaskType> control_task_runner_; - scoped_refptr<TaskQueueWithTaskType> input_task_runner_; - scoped_refptr<TaskQueueWithTaskType> ipc_task_runner_; + scoped_refptr<base::SingleThreadTaskRunner> v8_task_runner_; + scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; + scoped_refptr<base::SingleThreadTaskRunner> control_task_runner_; + scoped_refptr<base::SingleThreadTaskRunner> input_task_runner_; + scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_; + scoped_refptr<base::SingleThreadTaskRunner> cleanup_task_runner_; // Note |virtual_time_domain_| is lazily created. std::unique_ptr<AutoAdvancingVirtualTimeDomain> virtual_time_domain_; @@ -853,9 +855,10 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl std::unique_ptr<base::SingleSampleMetric> max_queueing_time_metric; base::TimeDelta max_queueing_time; base::TimeTicks background_status_changed_at; - std::set<PageSchedulerImpl*> page_schedulers; // Not owned. - base::ObserverList<RAILModeObserver> rail_mode_observers; // Not owned. - WakeUpBudgetPool* wake_up_budget_pool; // Not owned. + std::set<PageSchedulerImpl*> page_schedulers; // Not owned. + base::ObserverList<WebRAILModeObserver>::Unchecked + rail_mode_observers; // Not owned. + WakeUpBudgetPool* wake_up_budget_pool; // Not owned. MainThreadMetricsHelper metrics_helper; TraceableState<RendererProcessType, kTracingCategoryNameTopLevel> process_type; @@ -866,7 +869,7 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl base::Optional<base::sequence_manager::TaskQueue::QueuePriority>, kTracingCategoryNameInfo> task_priority_for_tracing; // Only used for tracing. - base::ObserverList<VirtualTimeObserver> virtual_time_observers; + base::ObserverList<VirtualTimeObserver>::Unchecked virtual_time_observers; base::Time initial_virtual_time; base::TimeTicks initial_virtual_time_ticks; @@ -896,9 +899,6 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl // True if a nested RunLoop is running. bool nested_runloop; - std::mt19937_64 random_generator; - std::uniform_real_distribution<double> uniform_distribution; - // High-priority for compositing events after input experiment. PrioritizeCompositingAfterInputExperiment compositing_experiment; bool should_prioritize_compositing; |