blob: d12481f40d261fb1e1a3a91a0877054574e4a709 [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2018 The Chromium Authors
Leszek Swirski2987cc82018-11-05 15:19:282// 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/task_features.h"
6
David Sanders6e709942022-04-05 06:49:267#include "base/base_export.h"
Leszek Swirski2987cc82018-11-05 15:19:288#include "base/feature_list.h"
9
10namespace base {
11
Francois Dorayee4a5532021-03-30 00:17:1712#if HAS_NATIVE_THREAD_POOL()
Daniel Cheng0fff5c232022-09-21 17:43:3413BASE_FEATURE(kUseNativeThreadPool,
14 "UseNativeThreadPool",
15 base::FEATURE_DISABLED_BY_DEFAULT);
16BASE_FEATURE(kUseBackgroundNativeThreadPool,
17 "UseBackgroundNativeThreadPool",
18 base::FEATURE_DISABLED_BY_DEFAULT);
Aditya Keerthia41eda52019-04-01 15:03:2519#endif
20
Daniel Cheng0fff5c232022-09-21 17:43:3421BASE_FEATURE(kNoWorkerThreadReclaim,
22 "NoWorkerThreadReclaim",
23 base::FEATURE_DISABLED_BY_DEFAULT);
Francois Doraya20b6df22019-06-27 15:04:1924
Patrick Monette6497eae2022-08-09 17:59:5825// static
Daniel Cheng0fff5c232022-09-21 17:43:3426BASE_FEATURE(kNoWakeUpsForCanceledTasks,
27 "NoWakeUpsForCanceledTasks",
28 FEATURE_DISABLED_BY_DEFAULT);
Patrick Monette6497eae2022-08-09 17:59:5829
Daniel Cheng0fff5c232022-09-21 17:43:3430BASE_FEATURE(kRemoveCanceledTasksInTaskQueue,
31 "RemoveCanceledTasksInTaskQueue2",
32 base::FEATURE_DISABLED_BY_DEFAULT);
Patrick Monetteeaaa2382021-12-08 17:06:5933
Daniel Cheng0fff5c232022-09-21 17:43:3434BASE_FEATURE(kAlwaysAbandonScheduledTask,
35 "AlwaysAbandonScheduledTask",
36 base::FEATURE_DISABLED_BY_DEFAULT);
Patrick Monette4efba9c2022-08-18 16:41:3237
Daniel Cheng0fff5c232022-09-21 17:43:3438BASE_FEATURE(kAddTaskLeewayFeature,
39 "AddTaskLeeway",
40 base::FEATURE_ENABLED_BY_DEFAULT);
Etienne Pierre-doraya8792732022-02-05 02:27:2541
42const base::FeatureParam<TimeDelta> kTaskLeewayParam{&kAddTaskLeewayFeature,
Jiahe Zhang07cf33132022-08-09 09:42:4943 "leeway", kDefaultLeeway};
Etienne Pierre-doraya8792732022-02-05 02:27:2544
Daniel Cheng0fff5c232022-09-21 17:43:3445BASE_FEATURE(kAlignWakeUps, "AlignWakeUps", base::FEATURE_ENABLED_BY_DEFAULT);
Etienne Pierre-doray048472eb2022-02-07 16:24:4846
Daniel Cheng0fff5c232022-09-21 17:43:3447BASE_FEATURE(kExplicitHighResolutionTimerWin,
48 "ExplicitHighResolutionTimerWin",
49 base::FEATURE_DISABLED_BY_DEFAULT);
Etienne Pierre-dorayae2c15a2022-04-29 18:50:5950
Daniel Cheng0fff5c232022-09-21 17:43:3451BASE_FEATURE(kRunTasksByBatches,
52 "RunTasksByBatches",
53 base::FEATURE_DISABLED_BY_DEFAULT);
Alex Attar9fcc01e2022-05-20 14:01:2754
Daniel Cheng0fff5c232022-09-21 17:43:3455BASE_FEATURE(kBrowserPeriodicYieldingToNative,
56 "BrowserPeriodicYieldingToNative",
57 base::FEATURE_DISABLED_BY_DEFAULT);
Stephen Nusko408b9a92022-09-15 10:03:5758
59const BASE_EXPORT base::FeatureParam<base::TimeDelta>
60 kBrowserPeriodicYieldingToNativeNormalInputAfterMsParam{
61 &kBrowserPeriodicYieldingToNative,
62 "yield_to_android_looper_after_ms_normal_input", base::Milliseconds(8)};
63
64const BASE_EXPORT base::FeatureParam<base::TimeDelta>
65 kBrowserPeriodicYieldingToNativeFlingInputAfterMsParam{
66 &kBrowserPeriodicYieldingToNative,
67 "yield_to_android_looper_after_ms_fling_input", base::Milliseconds(16)};
68
69const BASE_EXPORT base::FeatureParam<base::TimeDelta>
70 kBrowserPeriodicYieldingToNativeNoInputAfterMsParam{
71 &kBrowserPeriodicYieldingToNative,
72 "yield_to_android_looper_after_ms_no_input", base::Milliseconds(100)};
73
74const BASE_EXPORT base::FeatureParam<base::TimeDelta>
75 kBrowserPeriodicYieldingToNativeDelay{&kBrowserPeriodicYieldingToNative,
76 "non_delayed_looper_defer_for_ns",
77 base::Nanoseconds(500000)};
78
Jiahe Zhang07cf33132022-08-09 09:42:4979// Leeway value applied to delayed tasks. An atomic is used here because the
80// value is queried from multiple threads.
81std::atomic<TimeDelta> g_task_leeway{kDefaultLeeway};
82
83BASE_EXPORT void InitializeTaskLeeway() {
84 g_task_leeway.store(kTaskLeewayParam.Get(), std::memory_order_relaxed);
85}
86
87BASE_EXPORT TimeDelta GetTaskLeeway() {
88 return g_task_leeway.load(std::memory_order_relaxed);
89}
90
Francois Doray5b44e33f2018-11-09 22:08:1391} // namespace base