1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/task/sequence_manager/sequence_manager.h" 6 7 namespace base { 8 namespace sequence_manager { 9 10 NativeWorkHandle::~NativeWorkHandle() = default; 11 MetricRecordingSettings(double task_thread_time_sampling_rate)12SequenceManager::MetricRecordingSettings::MetricRecordingSettings( 13 double task_thread_time_sampling_rate) 14 : task_sampling_rate_for_recording_cpu_time( 15 base::ThreadTicks::IsSupported() ? task_thread_time_sampling_rate 16 : 0) {} 17 18 SequenceManager::Settings::Settings() = default; 19 20 SequenceManager::Settings::Settings(Settings&& move_from) noexcept = default; 21 22 SequenceManager::Settings::Builder::Builder() = default; 23 24 SequenceManager::Settings::Builder::~Builder() = default; 25 26 SequenceManager::Settings::Builder& SetMessagePumpType(MessagePumpType message_loop_type_val)27SequenceManager::Settings::Builder::SetMessagePumpType( 28 MessagePumpType message_loop_type_val) { 29 settings_.message_loop_type = message_loop_type_val; 30 return *this; 31 } 32 33 SequenceManager::Settings::Builder& SetRandomisedSamplingEnabled(bool randomised_sampling_enabled_val)34SequenceManager::Settings::Builder::SetRandomisedSamplingEnabled( 35 bool randomised_sampling_enabled_val) { 36 settings_.randomised_sampling_enabled = randomised_sampling_enabled_val; 37 return *this; 38 } 39 40 SequenceManager::Settings::Builder& SetTickClock(const TickClock * clock_val)41SequenceManager::Settings::Builder::SetTickClock(const TickClock* clock_val) { 42 settings_.clock = clock_val; 43 return *this; 44 } 45 46 SequenceManager::Settings::Builder& SetAddQueueTimeToTasks(bool add_queue_time_to_tasks_val)47SequenceManager::Settings::Builder::SetAddQueueTimeToTasks( 48 bool add_queue_time_to_tasks_val) { 49 settings_.add_queue_time_to_tasks = add_queue_time_to_tasks_val; 50 return *this; 51 } 52 53 #if DCHECK_IS_ON() 54 55 SequenceManager::Settings::Builder& SetTaskLogging(TaskLogging task_execution_logging_val)56SequenceManager::Settings::Builder::SetTaskLogging( 57 TaskLogging task_execution_logging_val) { 58 settings_.task_execution_logging = task_execution_logging_val; 59 return *this; 60 } 61 62 SequenceManager::Settings::Builder& SetLogPostTask(bool log_post_task_val)63SequenceManager::Settings::Builder::SetLogPostTask(bool log_post_task_val) { 64 settings_.log_post_task = log_post_task_val; 65 return *this; 66 } 67 68 SequenceManager::Settings::Builder& SetLogTaskDelayExpiry(bool log_task_delay_expiry_val)69SequenceManager::Settings::Builder::SetLogTaskDelayExpiry( 70 bool log_task_delay_expiry_val) { 71 settings_.log_task_delay_expiry = log_task_delay_expiry_val; 72 return *this; 73 } 74 75 SequenceManager::Settings::Builder& SetLogRunloopQuitAndQuitWhenIdle(bool log_runloop_quit_and_quit_when_idle_val)76SequenceManager::Settings::Builder::SetLogRunloopQuitAndQuitWhenIdle( 77 bool log_runloop_quit_and_quit_when_idle_val) { 78 settings_.log_runloop_quit_and_quit_when_idle = 79 log_runloop_quit_and_quit_when_idle_val; 80 return *this; 81 } 82 83 SequenceManager::Settings::Builder& SetPerPriorityCrossThreadTaskDelay(std::array<TimeDelta,TaskQueue::kQueuePriorityCount> per_priority_cross_thread_task_delay_val)84SequenceManager::Settings::Builder::SetPerPriorityCrossThreadTaskDelay( 85 std::array<TimeDelta, TaskQueue::kQueuePriorityCount> 86 per_priority_cross_thread_task_delay_val) { 87 settings_.per_priority_cross_thread_task_delay = 88 per_priority_cross_thread_task_delay_val; 89 return *this; 90 } 91 92 SequenceManager::Settings::Builder& SetPerPrioritySameThreadTaskDelay(std::array<TimeDelta,TaskQueue::kQueuePriorityCount> per_priority_same_thread_task_delay_val)93SequenceManager::Settings::Builder::SetPerPrioritySameThreadTaskDelay( 94 std::array<TimeDelta, TaskQueue::kQueuePriorityCount> 95 per_priority_same_thread_task_delay_val) { 96 settings_.per_priority_same_thread_task_delay = 97 per_priority_same_thread_task_delay_val; 98 return *this; 99 } 100 101 SequenceManager::Settings::Builder& SetRandomTaskSelectionSeed(int random_task_selection_seed_val)102SequenceManager::Settings::Builder::SetRandomTaskSelectionSeed( 103 int random_task_selection_seed_val) { 104 settings_.random_task_selection_seed = random_task_selection_seed_val; 105 return *this; 106 } 107 108 #endif // DCHECK_IS_ON() 109 Build()110SequenceManager::Settings SequenceManager::Settings::Builder::Build() { 111 return std::move(settings_); 112 } 113 114 } // namespace sequence_manager 115 } // namespace base 116