| // 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); |
| |
| // Under this feature, the Windows UI pump uses a WaitableEvent to wake itself |
| // up when not in a native nested loop. It also uses different control flow, |
| // calling Win32 MessagePump functions less often. |
| BASE_EXPORT BASE_DECLARE_FEATURE(kUIPumpImprovementsWin); |
| |
| // 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); |
| |
| } // namespace base |
| |
| #endif // BASE_TASK_TASK_FEATURES_H_ |