blob: ce316c039672e5ffb5d263e19975d9352b7c9c8d [file] [log] [blame]
Alexander Timin1757cb42018-07-13 16:21:401// 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
7namespace base {
8namespace sequence_manager {
9
Sami Kyostila603f3b22019-06-19 14:40:4010NativeWorkHandle::~NativeWorkHandle() = default;
11
Alexander Timin1757cb42018-07-13 16:21:4012SequenceManager::MetricRecordingSettings::MetricRecordingSettings(
Alexander Timin1757cb42018-07-13 16:21:4013 double task_thread_time_sampling_rate)
Karolina Soltys1dccaeb2018-12-05 15:20:0114 : task_sampling_rate_for_recording_cpu_time(
15 base::ThreadTicks::IsSupported() ? task_thread_time_sampling_rate
16 : 0) {}
Alexander Timin1757cb42018-07-13 16:21:4017
Alex Clarke5f3d461b2019-04-29 14:23:1118SequenceManager::Settings::Settings() = default;
19
20SequenceManager::Settings::Settings(Settings&& move_from) noexcept = default;
21
22SequenceManager::Settings::Builder::Builder() = default;
23
24SequenceManager::Settings::Builder::~Builder() = default;
25
26SequenceManager::Settings::Builder&
Alex Clarke636e7052019-05-30 10:49:3727SequenceManager::Settings::Builder::SetMessagePumpType(
Chris Sharp7840c582019-08-02 15:45:3228 MessagePumpType message_loop_type_val) {
Alex Clarke5f3d461b2019-04-29 14:23:1129 settings_.message_loop_type = message_loop_type_val;
30 return *this;
31}
32
33SequenceManager::Settings::Builder&
34SequenceManager::Settings::Builder::SetRandomisedSamplingEnabled(
35 bool randomised_sampling_enabled_val) {
36 settings_.randomised_sampling_enabled = randomised_sampling_enabled_val;
37 return *this;
38}
39
40SequenceManager::Settings::Builder&
41SequenceManager::Settings::Builder::SetTickClock(const TickClock* clock_val) {
42 settings_.clock = clock_val;
43 return *this;
44}
45
kdillon20767e62019-05-21 16:39:3846SequenceManager::Settings::Builder&
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
Alex Clarke5f3d461b2019-04-29 14:23:1153#if DCHECK_IS_ON()
54
55SequenceManager::Settings::Builder&
56SequenceManager::Settings::Builder::SetTaskLogging(
57 TaskLogging task_execution_logging_val) {
58 settings_.task_execution_logging = task_execution_logging_val;
59 return *this;
60}
61
62SequenceManager::Settings::Builder&
63SequenceManager::Settings::Builder::SetLogPostTask(bool log_post_task_val) {
64 settings_.log_post_task = log_post_task_val;
65 return *this;
66}
67
68SequenceManager::Settings::Builder&
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
75SequenceManager::Settings::Builder&
Alex Clarke5f3d461b2019-04-29 14:23:1176SequenceManager::Settings::Builder::SetPerPriorityCrossThreadTaskDelay(
77 std::array<TimeDelta, TaskQueue::kQueuePriorityCount>
78 per_priority_cross_thread_task_delay_val) {
79 settings_.per_priority_cross_thread_task_delay =
80 per_priority_cross_thread_task_delay_val;
81 return *this;
82}
83
84SequenceManager::Settings::Builder&
85SequenceManager::Settings::Builder::SetPerPrioritySameThreadTaskDelay(
86 std::array<TimeDelta, TaskQueue::kQueuePriorityCount>
87 per_priority_same_thread_task_delay_val) {
88 settings_.per_priority_same_thread_task_delay =
89 per_priority_same_thread_task_delay_val;
90 return *this;
91}
92
93SequenceManager::Settings::Builder&
94SequenceManager::Settings::Builder::SetRandomTaskSelectionSeed(
95 int random_task_selection_seed_val) {
96 settings_.random_task_selection_seed = random_task_selection_seed_val;
97 return *this;
98}
99
100#endif // DCHECK_IS_ON()
101
102SequenceManager::Settings SequenceManager::Settings::Builder::Build() {
103 return std::move(settings_);
104}
105
Alexander Timin1757cb42018-07-13 16:21:40106} // namespace sequence_manager
107} // namespace base