Alexander Timin | 1757cb4 | 2018-07-13 16:21:40 | [diff] [blame] | 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 | |
Sami Kyostila | 603f3b2 | 2019-06-19 14:40:40 | [diff] [blame] | 10 | NativeWorkHandle::~NativeWorkHandle() = default; |
| 11 | |
Alexander Timin | 1757cb4 | 2018-07-13 16:21:40 | [diff] [blame] | 12 | SequenceManager::MetricRecordingSettings::MetricRecordingSettings( |
Alexander Timin | 1757cb4 | 2018-07-13 16:21:40 | [diff] [blame] | 13 | double task_thread_time_sampling_rate) |
Karolina Soltys | 1dccaeb | 2018-12-05 15:20:01 | [diff] [blame] | 14 | : task_sampling_rate_for_recording_cpu_time( |
| 15 | base::ThreadTicks::IsSupported() ? task_thread_time_sampling_rate |
| 16 | : 0) {} |
Alexander Timin | 1757cb4 | 2018-07-13 16:21:40 | [diff] [blame] | 17 | |
Alex Clarke | 5f3d461b | 2019-04-29 14:23:11 | [diff] [blame] | 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& |
Alex Clarke | 636e705 | 2019-05-30 10:49:37 | [diff] [blame] | 27 | SequenceManager::Settings::Builder::SetMessagePumpType( |
Chris Sharp | 7840c58 | 2019-08-02 15:45:32 | [diff] [blame] | 28 | MessagePumpType message_loop_type_val) { |
Alex Clarke | 5f3d461b | 2019-04-29 14:23:11 | [diff] [blame] | 29 | settings_.message_loop_type = message_loop_type_val; |
| 30 | return *this; |
| 31 | } |
| 32 | |
| 33 | SequenceManager::Settings::Builder& |
| 34 | SequenceManager::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& |
| 41 | SequenceManager::Settings::Builder::SetTickClock(const TickClock* clock_val) { |
| 42 | settings_.clock = clock_val; |
| 43 | return *this; |
| 44 | } |
| 45 | |
kdillon | 20767e6 | 2019-05-21 16:39:38 | [diff] [blame] | 46 | SequenceManager::Settings::Builder& |
| 47 | SequenceManager::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 Clarke | 5f3d461b | 2019-04-29 14:23:11 | [diff] [blame] | 53 | #if DCHECK_IS_ON() |
| 54 | |
| 55 | SequenceManager::Settings::Builder& |
| 56 | SequenceManager::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& |
| 63 | SequenceManager::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& |
| 69 | SequenceManager::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& |
Alex Clarke | 5f3d461b | 2019-04-29 14:23:11 | [diff] [blame] | 76 | SequenceManager::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 | |
| 84 | SequenceManager::Settings::Builder& |
| 85 | SequenceManager::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 | |
| 93 | SequenceManager::Settings::Builder& |
| 94 | SequenceManager::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 | |
| 102 | SequenceManager::Settings SequenceManager::Settings::Builder::Build() { |
| 103 | return std::move(settings_); |
| 104 | } |
| 105 | |
Alexander Timin | 1757cb4 | 2018-07-13 16:21:40 | [diff] [blame] | 106 | } // namespace sequence_manager |
| 107 | } // namespace base |