blob: 0bfa7977681dc8d7a34fa279672f00c77c9cff94 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/task/sequence_manager/sequence_manager.h"
namespace base {
namespace sequence_manager {
SequenceManager::MetricRecordingSettings::MetricRecordingSettings(
double task_thread_time_sampling_rate)
: task_sampling_rate_for_recording_cpu_time(
base::ThreadTicks::IsSupported() ? task_thread_time_sampling_rate
: 0) {}
SequenceManager::Settings::Settings() = default;
SequenceManager::Settings::Settings(Settings&& move_from) noexcept = default;
SequenceManager::Settings::Builder::Builder() = default;
SequenceManager::Settings::Builder::~Builder() = default;
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetMessageLoopType(
MessageLoop::Type message_loop_type_val) {
settings_.message_loop_type = message_loop_type_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetRandomisedSamplingEnabled(
bool randomised_sampling_enabled_val) {
settings_.randomised_sampling_enabled = randomised_sampling_enabled_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetTickClock(const TickClock* clock_val) {
settings_.clock = clock_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetAddQueueTimeToTasks(
bool add_queue_time_to_tasks_val) {
settings_.add_queue_time_to_tasks = add_queue_time_to_tasks_val;
return *this;
}
#if DCHECK_IS_ON()
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetTaskLogging(
TaskLogging task_execution_logging_val) {
settings_.task_execution_logging = task_execution_logging_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetLogPostTask(bool log_post_task_val) {
settings_.log_post_task = log_post_task_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetLogTaskDelayExpiry(
bool log_task_delay_expiry_val) {
settings_.log_task_delay_expiry = log_task_delay_expiry_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetLogRunloopQuitAndQuitWhenIdle(
bool log_runloop_quit_and_quit_when_idle_val) {
settings_.log_runloop_quit_and_quit_when_idle =
log_runloop_quit_and_quit_when_idle_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetPerPriorityCrossThreadTaskDelay(
std::array<TimeDelta, TaskQueue::kQueuePriorityCount>
per_priority_cross_thread_task_delay_val) {
settings_.per_priority_cross_thread_task_delay =
per_priority_cross_thread_task_delay_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetPerPrioritySameThreadTaskDelay(
std::array<TimeDelta, TaskQueue::kQueuePriorityCount>
per_priority_same_thread_task_delay_val) {
settings_.per_priority_same_thread_task_delay =
per_priority_same_thread_task_delay_val;
return *this;
}
SequenceManager::Settings::Builder&
SequenceManager::Settings::Builder::SetRandomTaskSelectionSeed(
int random_task_selection_seed_val) {
settings_.random_task_selection_seed = random_task_selection_seed_val;
return *this;
}
#endif // DCHECK_IS_ON()
SequenceManager::Settings SequenceManager::Settings::Builder::Build() {
return std::move(settings_);
}
} // namespace sequence_manager
} // namespace base