| // Copyright 2018 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef BASE_TASK_TASK_FEATURES_H_ | |
| #define BASE_TASK_TASK_FEATURES_H_ | |
| #include "base/base_export.h" | |
| #include "base/feature_list.h" | |
| #include "base/metrics/field_trial_params.h" | |
| #include "build/build_config.h" | |
| namespace base { | |
| // Under this feature, a utility_thread_group will be created for | |
| // running USER_VISIBLE tasks. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kUseUtilityThreadGroup); | |
| // Under this feature, thread groups will be created for kAudioProcessing and | |
| // kPresentation ThreadTypes. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kUseHighPriorityThreadGroup); | |
| // Under this feature, a non-zero leeway is added to delayed tasks. Along with | |
| // DelayPolicy, this affects the time at which a delayed task runs. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kAddTaskLeewayFeature); | |
| #if BUILDFLAG(IS_WIN) | |
| constexpr TimeDelta kDefaultLeeway = Milliseconds(16); | |
| #else | |
| constexpr TimeDelta kDefaultLeeway = Milliseconds(8); | |
| #endif // #if !BUILDFLAG(IS_WIN) | |
| BASE_EXPORT BASE_DECLARE_FEATURE_PARAM(TimeDelta, kTaskLeewayParam); | |
| // We consider that delayed tasks above |kMaxPreciseDelay| never need | |
| // DelayPolicy::kPrecise. The default value is slightly above 30Hz timer. | |
| constexpr TimeDelta kDefaultMaxPreciseDelay = Milliseconds(36); | |
| BASE_EXPORT BASE_DECLARE_FEATURE_PARAM(TimeDelta, kMaxPreciseDelay); | |
| // Under this feature, wake ups are aligned at a 8ms boundary when allowed per | |
| // DelayPolicy. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kAlignWakeUps); | |
| // Under this feature, slack is added on mac message pumps that support it when | |
| // allowed per DelayPolicy. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kTimerSlackMac); | |
| // Feature to run tasks by batches before pumping out messages. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kRunTasksByBatches); | |
| // Feature to adjust how quickly the ThreadPool capacity is increased when | |
| // a foreground task is blocked in a ScopedBlockingCall. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kThreadPoolForegroundBlockingTimeouts); | |
| BASE_EXPORT BASE_DECLARE_FEATURE_PARAM( | |
| TimeDelta, | |
| kThreadPoolForegroundMayBlockThresholdParam); | |
| BASE_EXPORT BASE_DECLARE_FEATURE_PARAM( | |
| TimeDelta, | |
| kThreadPoolForegroundBlockedWorkersPollParam); | |
| // Under this feature, ThreadPool inherits GetCurrentTaskImportance by default, | |
| // when TaskPriority isn't otherwise specified. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kInheritTaskImportanceByDefault); | |
| // Under this feature, thread pool initialization creates various thread groups' | |
| // initial threads asynchronously on the service thread instead of synchronously | |
| // on UI thread. | |
| BASE_EXPORT BASE_DECLARE_FEATURE(kAsyncThreadPoolInit); | |
| } // namespace base | |
| #endif // BASE_TASK_TASK_FEATURES_H_ |