1 // Copyright (c) 2012 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.
5 #include "chrome/browser/about_flags.h"
13 #include "ash/public/cpp/app_list/app_list_features.h"
14 #include "ash/public/cpp/app_list/app_list_switches.h"
15 #include "ash/public/cpp/ash_features.h"
16 #include "ash/public/cpp/keyboard/keyboard_switches.h"
17 #include "base/base_switches.h"
18 #include "base/bind.h"
19 #include "base/callback.h"
20 #include "base/command_line.h"
21 #include "base/feature_list.h"
22 #include "base/i18n/base_i18n_switches.h"
23 #include "base/memory/singleton.h"
24 #include "base/metrics/histogram_functions.h"
25 #include "base/stl_util.h"
26 #include "base/strings/string_number_conversions.h"
27 #include "base/strings/utf_string_conversions.h"
28 #include "base/time/time_win_features.h"
29 #include "base/values.h"
30 #include "build/branding_buildflags.h"
31 #include "build/build_config.h"
32 #include "cc/base/features.h"
33 #include "cc/base/switches.h"
34 #include "chrome/browser/browser_features.h"
35 #include "chrome/browser/chromeos/android_sms/android_sms_switches.h"
36 #include "chrome/browser/flag_descriptions.h"
37 #include "chrome/browser/lite_video/lite_video_switches.h"
38 #include "chrome/browser/navigation_predictor/search_engine_preconnector.h"
39 #include "chrome/browser/net/stub_resolver_config_reader.h"
40 #include "chrome/browser/net/system_network_context_manager.h"
41 #include "chrome/browser/notifications/scheduler/public/features.h"
42 #include "chrome/browser/performance_hints/performance_hints_features.h"
43 #include "chrome/browser/performance_manager/policies/policy_features.h"
44 #include "chrome/browser/permissions/quiet_notification_permission_ui_config.h"
45 #include "chrome/browser/predictors/loading_predictor_config.h"
46 #include "chrome/browser/prerender/isolated/isolated_prerender_features.h"
47 #include "chrome/browser/prerender/isolated/isolated_prerender_params.h"
48 #include "chrome/browser/prerender/prerender_field_trial.h"
49 #include "chrome/browser/resource_coordinator/tab_manager_features.h"
50 #include "chrome/browser/search/ntp_features.h"
51 #include "chrome/browser/sharing/click_to_call/feature.h"
52 #include "chrome/browser/sharing/features.h"
53 #include "chrome/browser/sharing/shared_clipboard/feature_flags.h"
54 #include "chrome/browser/sharing/sms/sms_flags.h"
55 #include "chrome/browser/sharing/webrtc/webrtc_flags.h"
56 #include "chrome/browser/signin/signin_features.h"
57 #include "chrome/browser/ui/ui_features.h"
58 #include "chrome/browser/unexpire_flags.h"
59 #include "chrome/browser/unexpire_flags_gen.h"
60 #include "chrome/common/buildflags.h"
61 #include "chrome/common/channel_info.h"
62 #include "chrome/common/chrome_content_client.h"
63 #include "chrome/common/chrome_features.h"
64 #include "chrome/common/chrome_switches.h"
65 #include "components/assist_ranker/predictor_config_definitions.h"
66 #include "components/autofill/core/browser/autofill_experiments.h"
67 #include "components/autofill/core/common/autofill_features.h"
68 #include "components/autofill/core/common/autofill_payments_features.h"
69 #include "components/autofill/core/common/autofill_switches.h"
70 #include "components/autofill/core/common/autofill_util.h"
71 #include "components/autofill_assistant/browser/features.h"
72 #include "components/browser_sync/browser_sync_switches.h"
73 #include "components/browsing_data/core/features.h"
74 #include "components/cloud_devices/common/cloud_devices_switches.h"
75 #include "components/content_settings/core/common/features.h"
76 #include "components/contextual_search/core/browser/public.h"
77 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h"
78 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_switches.h"
79 #include "components/dom_distiller/core/dom_distiller_features.h"
80 #include "components/dom_distiller/core/dom_distiller_switches.h"
81 #include "components/download/public/common/download_features.h"
82 #include "components/error_page/common/error_page_switches.h"
83 #include "components/favicon/core/features.h"
84 #include "components/feature_engagement/buildflags.h"
85 #include "components/feature_engagement/public/feature_constants.h"
86 #include "components/feature_engagement/public/feature_list.h"
87 #include "components/feed/feed_feature_list.h"
88 #include "components/flags_ui/feature_entry.h"
89 #include "components/flags_ui/feature_entry_macros.h"
90 #include "components/flags_ui/flags_state.h"
91 #include "components/flags_ui/flags_storage.h"
92 #include "components/flags_ui/flags_ui_metrics.h"
93 #include "components/flags_ui/flags_ui_switches.h"
94 #include "components/games/core/games_features.h"
95 #include "components/invalidation/impl/invalidation_switches.h"
96 #include "components/language/core/common/language_experiments.h"
97 #include "components/lookalikes/core/features.h"
98 #include "components/nacl/common/buildflags.h"
99 #include "components/nacl/common/nacl_switches.h"
100 #include "components/network_session_configurator/common/network_features.h"
101 #include "components/network_session_configurator/common/network_switches.h"
102 #include "components/ntp_snippets/features.h"
103 #include "components/ntp_snippets/ntp_snippets_constants.h"
104 #include "components/ntp_tiles/features.h"
105 #include "components/offline_pages/core/offline_page_feature.h"
106 #include "components/omnibox/browser/omnibox_field_trial.h"
107 #include "components/omnibox/common/omnibox_features.h"
108 #include "components/page_info/android/features.h"
109 #include "components/paint_preview/buildflags/buildflags.h"
110 #include "components/paint_preview/features/features.h"
111 #include "components/password_manager/core/common/password_manager_features.h"
112 #include "components/payments/core/features.h"
113 #include "components/policy/core/common/features.h"
114 #include "components/previews/core/previews_features.h"
115 #include "components/previews/core/previews_switches.h"
116 #include "components/query_tiles/switches.h"
117 #include "components/safe_browsing/core/features.h"
118 #include "components/security_interstitials/content/stateful_ssl_host_state_delegate.h"
119 #include "components/security_interstitials/core/features.h"
120 #include "components/security_state/core/features.h"
121 #include "components/security_state/core/security_state.h"
122 #include "components/send_tab_to_self/features.h"
123 #include "components/services/heap_profiling/public/cpp/switches.h"
124 #include "components/signin/core/browser/dice_account_reconcilor_delegate.h"
125 #include "components/signin/public/base/signin_buildflags.h"
126 #include "components/signin/public/base/signin_switches.h"
127 #include "components/site_isolation/features.h"
128 #include "components/spellcheck/common/spellcheck_features.h"
129 #include "components/spellcheck/spellcheck_buildflags.h"
130 #include "components/sync/driver/sync_driver_switches.h"
131 #include "components/sync/engine/sync_engine_switches.h"
132 #include "components/tracing/common/tracing_switches.h"
133 #include "components/translate/core/browser/translate_prefs.h"
134 #include "components/translate/core/browser/translate_ranker_impl.h"
135 #include "components/translate/core/common/translate_util.h"
136 #include "components/ui_devtools/switches.h"
137 #include "components/version_info/version_info.h"
138 #include "components/viz/common/features.h"
139 #include "components/viz/common/switches.h"
140 #include "content/public/common/content_features.h"
141 #include "content/public/common/content_switches.h"
142 #include "device/base/features.h"
143 #include "device/fido/features.h"
144 #include "device/vr/buildflags/buildflags.h"
145 #include "extensions/buildflags/buildflags.h"
146 #include "gpu/config/gpu_finch_features.h"
147 #include "gpu/config/gpu_switches.h"
148 #include "media/audio/audio_features.h"
149 #include "media/base/media_switches.h"
150 #include "media/capture/capture_switches.h"
151 #include "media/media_buildflags.h"
152 #include "media/midi/midi_switches.h"
153 #include "media/webrtc/webrtc_switches.h"
154 #include "net/base/features.h"
155 #include "net/net_buildflags.h"
156 #include "net/nqe/effective_connection_type.h"
157 #include "net/nqe/network_quality_estimator_params.h"
158 #include "net/websockets/websocket_basic_handshake_stream.h"
159 #include "pdf/buildflags.h"
160 #include "ppapi/buildflags/buildflags.h"
161 #include "printing/buildflags/buildflags.h"
162 #include "services/device/public/cpp/device_features.h"
163 #include "services/media_session/public/cpp/features.h"
164 #include "services/network/public/cpp/features.h"
165 #include "services/network/public/cpp/network_switches.h"
166 #include "services/service_manager/sandbox/features.h"
167 #include "services/service_manager/sandbox/switches.h"
168 #include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
169 #include "third_party/blink/public/common/features.h"
170 #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
171 #include "third_party/blink/public/common/switches.h"
172 #include "third_party/leveldatabase/leveldb_features.h"
173 #include "ui/accessibility/accessibility_features.h"
174 #include "ui/accessibility/accessibility_switches.h"
175 #include "ui/base/ui_base_features.h"
176 #include "ui/base/ui_base_switches.h"
177 #include "ui/compositor/compositor_switches.h"
178 #include "ui/display/display_features.h"
179 #include "ui/display/display_switches.h"
180 #include "ui/events/blink/blink_features.h"
181 #include "ui/events/event_switches.h"
182 #include "ui/gfx/switches.h"
183 #include "ui/gl/buildflags.h"
184 #include "ui/gl/gl_switches.h"
185 #include "ui/native_theme/native_theme_features.h"
187 #if defined(OS_LINUX)
188 #include "base/allocator/buildflags.h"
191 #if defined(OS_ANDROID)
192 #include "chrome/browser/android/explore_sites/explore_sites_feature.h"
193 #include "chrome/browser/flags/android/chrome_feature_list.h"
194 #include "components/browser_ui/site_settings/android/features.h"
195 #include "components/external_intents/android/external_intents_feature_list.h"
197 #include "chrome/browser/media/router/media_router_feature.h"
200 #if defined(OS_CHROMEOS)
201 #include "ash/public/cpp/ash_switches.h"
202 #include "chromeos/constants/chromeos_features.h"
203 #include "chromeos/constants/chromeos_switches.h"
204 #include "chromeos/services/assistant/public/cpp/features.h"
205 #include "components/arc/arc_features.h"
206 #include "third_party/cros_system_api/switches/chrome_switches.h"
207 #include "ui/events/ozone/features.h"
208 #endif // OS_CHROMEOS
210 #if defined(OS_MACOSX)
211 #include "chrome/browser/ui/browser_dialogs.h"
214 #if BUILDFLAG(ENABLE_EXTENSIONS)
215 #include "extensions/common/extension_features.h"
216 #include "extensions/common/switches.h"
217 #endif // ENABLE_EXTENSIONS
219 #if BUILDFLAG(ENABLE_PDF)
220 #include "pdf/pdf_features.h"
223 #if BUILDFLAG(ENABLE_PRINTING)
224 #include "printing/printing_features.h"
227 #if defined(USE_OZONE)
228 #include "ui/ozone/public/ozone_switches.h"
232 #include "base/win/windows_version.h"
233 #include "chrome/browser/win/titlebar_config.h"
236 #if defined(TOOLKIT_VIEWS)
237 #include "ui/views/animation/installable_ink_drop.h"
238 #include "ui/views/views_features.h"
239 #include "ui/views/views_switches.h"
240 #endif // defined(TOOLKIT_VIEWS)
242 using flags_ui::FeatureEntry;
243 using flags_ui::kDeprecated;
244 using flags_ui::kOsAndroid;
245 using flags_ui::kOsCrOS;
246 using flags_ui::kOsCrOSOwnerOnly;
247 using flags_ui::kOsLinux;
248 using flags_ui::kOsMac;
249 using flags_ui::kOsWin;
251 namespace about_flags {
255 const unsigned kOsAll = kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsAndroid;
256 const unsigned kOsDesktop = kOsMac | kOsWin | kOsLinux | kOsCrOS;
258 #if defined(USE_AURA) || defined(OS_ANDROID)
259 const unsigned kOsAura = kOsWin | kOsLinux | kOsCrOS;
260 #endif // USE_AURA || OS_ANDROID
262 const FeatureEntry::Choice kTouchEventFeatureDetectionChoices[] = {
263 {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
264 {flags_ui::kGenericExperimentChoiceEnabled,
265 switches::kTouchEventFeatureDetection,
266 switches::kTouchEventFeatureDetectionEnabled},
267 {flags_ui::kGenericExperimentChoiceAutomatic,
268 switches::kTouchEventFeatureDetection,
269 switches::kTouchEventFeatureDetectionAuto}};
271 #if defined(USE_AURA)
272 const FeatureEntry::Choice kPullToRefreshChoices[] = {
273 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
274 {flags_ui::kGenericExperimentChoiceDisabled, switches::kPullToRefresh, "0"},
275 {flags_ui::kGenericExperimentChoiceEnabled, switches::kPullToRefresh, "1"},
276 {flag_descriptions::kPullToRefreshEnabledTouchscreen,
277 switches::kPullToRefresh, "2"}};
280 const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
281 {flag_descriptions::kOverlayStrategiesDefault, "", ""},
282 {flag_descriptions::kOverlayStrategiesNone,
283 switches::kEnableHardwareOverlays, ""},
284 {flag_descriptions::kOverlayStrategiesUnoccludedFullscreen,
285 switches::kEnableHardwareOverlays, "single-fullscreen"},
286 {flag_descriptions::kOverlayStrategiesUnoccluded,
287 switches::kEnableHardwareOverlays, "single-fullscreen,single-on-top"},
288 {flag_descriptions::kOverlayStrategiesOccludedAndUnoccluded,
289 switches::kEnableHardwareOverlays,
290 "single-fullscreen,single-on-top,underlay"},
293 const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = {
294 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
295 {flag_descriptions::kTouchSelectionStrategyCharacter,
296 switches::kTouchTextSelectionStrategy, "character"},
297 {flag_descriptions::kTouchSelectionStrategyDirection,
298 switches::kTouchTextSelectionStrategy, "direction"}};
300 const FeatureEntry::Choice kTraceUploadURL[] = {
301 {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
302 {flag_descriptions::kTraceUploadUrlChoiceOther, switches::kTraceUploadURL,
303 "https://performance-insights.appspot.com/upload?tags=flags,Other"},
304 {flag_descriptions::kTraceUploadUrlChoiceEmloading,
305 switches::kTraceUploadURL,
306 "https://performance-insights.appspot.com/upload?tags=flags,emloading"},
307 {flag_descriptions::kTraceUploadUrlChoiceQa, switches::kTraceUploadURL,
308 "https://performance-insights.appspot.com/upload?tags=flags,QA"},
309 {flag_descriptions::kTraceUploadUrlChoiceTesting, switches::kTraceUploadURL,
310 "https://performance-insights.appspot.com/upload?tags=flags,TestingTeam"}};
312 const FeatureEntry::Choice kPassiveListenersChoices[] = {
313 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
314 {flag_descriptions::kPassiveEventListenerTrue,
315 switches::kPassiveListenersDefault, "true"},
316 {flag_descriptions::kPassiveEventListenerForceAllTrue,
317 switches::kPassiveListenersDefault, "forcealltrue"},
320 const FeatureEntry::Choice kDataReductionProxyServerExperiment[] = {
321 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
322 {flag_descriptions::kDataReductionProxyServerAlternative1,
323 data_reduction_proxy::switches::kDataReductionProxyExperiment,
324 data_reduction_proxy::switches::kDataReductionProxyServerAlternative1},
325 {flag_descriptions::kDataReductionProxyServerAlternative2,
326 data_reduction_proxy::switches::kDataReductionProxyExperiment,
327 data_reduction_proxy::switches::kDataReductionProxyServerAlternative2},
328 {flag_descriptions::kDataReductionProxyServerAlternative3,
329 data_reduction_proxy::switches::kDataReductionProxyExperiment,
330 data_reduction_proxy::switches::kDataReductionProxyServerAlternative3},
331 {flag_descriptions::kDataReductionProxyServerAlternative4,
332 data_reduction_proxy::switches::kDataReductionProxyExperiment,
333 data_reduction_proxy::switches::kDataReductionProxyServerAlternative4},
334 {flag_descriptions::kDataReductionProxyServerAlternative5,
335 data_reduction_proxy::switches::kDataReductionProxyExperiment,
336 data_reduction_proxy::switches::kDataReductionProxyServerAlternative5},
337 {flag_descriptions::kDataReductionProxyServerAlternative6,
338 data_reduction_proxy::switches::kDataReductionProxyExperiment,
339 data_reduction_proxy::switches::kDataReductionProxyServerAlternative6},
340 {flag_descriptions::kDataReductionProxyServerAlternative7,
341 data_reduction_proxy::switches::kDataReductionProxyExperiment,
342 data_reduction_proxy::switches::kDataReductionProxyServerAlternative7},
343 {flag_descriptions::kDataReductionProxyServerAlternative8,
344 data_reduction_proxy::switches::kDataReductionProxyExperiment,
345 data_reduction_proxy::switches::kDataReductionProxyServerAlternative8},
346 {flag_descriptions::kDataReductionProxyServerAlternative9,
347 data_reduction_proxy::switches::kDataReductionProxyExperiment,
348 data_reduction_proxy::switches::kDataReductionProxyServerAlternative9},
349 {flag_descriptions::kDataReductionProxyServerAlternative10,
350 data_reduction_proxy::switches::kDataReductionProxyExperiment,
351 data_reduction_proxy::switches::kDataReductionProxyServerAlternative10}};
354 const FeatureEntry::Choice kUseAngleChoices[] = {
355 {flag_descriptions::kUseAngleDefault, "", ""},
356 {flag_descriptions::kUseAngleGL, switches::kUseANGLE,
357 gl::kANGLEImplementationOpenGLName},
358 {flag_descriptions::kUseAngleD3D11, switches::kUseANGLE,
359 gl::kANGLEImplementationD3D11Name},
360 {flag_descriptions::kUseAngleD3D9, switches::kUseANGLE,
361 gl::kANGLEImplementationD3D9Name},
362 {flag_descriptions::kUseAngleD3D11on12, switches::kUseANGLE,
363 gl::kANGLEImplementationD3D11on12Name}};
366 #if BUILDFLAG(ENABLE_VR)
367 const FeatureEntry::Choice kWebXrForceRuntimeChoices[] = {
368 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
369 {flag_descriptions::kWebXrRuntimeChoiceNone, switches::kWebXrForceRuntime,
370 switches::kWebXrRuntimeNone},
372 #if BUILDFLAG(ENABLE_OPENXR)
373 {flag_descriptions::kWebXrRuntimeChoiceOpenXR, switches::kWebXrForceRuntime,
374 switches::kWebXrRuntimeOpenXr},
375 #endif // ENABLE_OPENXR
377 #if BUILDFLAG(ENABLE_WINDOWS_MR)
378 {flag_descriptions::kWebXrRuntimeChoiceWindowsMixedReality,
379 switches::kWebXrForceRuntime, switches::kWebXrRuntimeWMR},
380 #endif // ENABLE_WINDOWS_MR
384 #if defined(OS_ANDROID)
385 const FeatureEntry::Choice kReaderModeHeuristicsChoices[] = {
386 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
387 {flag_descriptions::kReaderModeHeuristicsMarkup,
388 switches::kReaderModeHeuristics,
389 switches::reader_mode_heuristics::kOGArticle},
390 {flag_descriptions::kReaderModeHeuristicsAdaboost,
391 switches::kReaderModeHeuristics,
392 switches::reader_mode_heuristics::kAdaBoost},
393 {flag_descriptions::kReaderModeHeuristicsAlwaysOn,
394 switches::kReaderModeHeuristics,
395 switches::reader_mode_heuristics::kAlwaysTrue},
396 {flag_descriptions::kReaderModeHeuristicsAlwaysOff,
397 switches::kReaderModeHeuristics, switches::reader_mode_heuristics::kNone},
398 {flag_descriptions::kReaderModeHeuristicsAllArticles,
399 switches::kReaderModeHeuristics,
400 switches::reader_mode_heuristics::kAllArticles},
403 const FeatureEntry::Choice kForceUpdateMenuTypeChoices[] = {
404 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
405 {flag_descriptions::kUpdateMenuTypeNone, switches::kForceUpdateMenuType,
407 {flag_descriptions::kUpdateMenuTypeUpdateAvailable,
408 switches::kForceUpdateMenuType, "update_available"},
409 {flag_descriptions::kUpdateMenuTypeUnsupportedOSVersion,
410 switches::kForceUpdateMenuType, "unsupported_os_version"},
411 {flag_descriptions::kUpdateMenuTypeInlineUpdateSuccess,
412 switches::kForceUpdateMenuType, "inline_update_success"},
413 {flag_descriptions::kUpdateMenuTypeInlineUpdateDialogCanceled,
414 switches::kForceUpdateMenuType, "inline_update_dialog_canceled"},
415 {flag_descriptions::kUpdateMenuTypeInlineUpdateDialogFailed,
416 switches::kForceUpdateMenuType, "inline_update_dialog_failed"},
417 {flag_descriptions::kUpdateMenuTypeInlineUpdateDownloadFailed,
418 switches::kForceUpdateMenuType, "inline_update_download_failed"},
419 {flag_descriptions::kUpdateMenuTypeInlineUpdateDownloadCanceled,
420 switches::kForceUpdateMenuType, "inline_update_download_canceled"},
421 {flag_descriptions::kUpdateMenuTypeInlineUpdateInstallFailed,
422 switches::kForceUpdateMenuType, "inline_update_install_failed"},
424 #else // !defined(OS_ANDROID)
425 const FeatureEntry::FeatureParam kReaderModeOfferInSettings[] = {
426 {switches::kReaderModeDiscoverabilityParamName,
427 switches::kReaderModeOfferInSettings}};
429 const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
430 {"available in settings", kReaderModeOfferInSettings,
431 base::size(kReaderModeOfferInSettings), nullptr}};
434 #if !defined(OS_CHROMEOS)
435 const FeatureEntry::FeatureParam kForceDark_SimpleHsl[] = {
436 {"inversion_method", "hsl_based"},
437 {"image_behavior", "none"},
438 {"text_lightness_threshold", "256"},
439 {"background_lightness_threshold", "0"}};
441 const FeatureEntry::FeatureParam kForceDark_SimpleCielab[] = {
442 {"inversion_method", "cielab_based"},
443 {"image_behavior", "none"},
444 {"text_lightness_threshold", "256"},
445 {"background_lightness_threshold", "0"}};
447 const FeatureEntry::FeatureParam kForceDark_SimpleRgb[] = {
448 {"inversion_method", "rgb_based"},
449 {"image_behavior", "none"},
450 {"text_lightness_threshold", "256"},
451 {"background_lightness_threshold", "0"}};
453 const FeatureEntry::FeatureParam kForceDark_SelectiveImageInversion[] = {
454 {"inversion_method", "cielab_based"},
455 {"image_behavior", "selective"},
456 {"text_lightness_threshold", "256"},
457 {"background_lightness_threshold", "0"}};
459 const FeatureEntry::FeatureParam kForceDark_SelectiveElementInversion[] = {
460 {"inversion_method", "cielab_based"},
461 {"image_behavior", "none"},
462 {"text_lightness_threshold", "150"},
463 {"background_lightness_threshold", "205"}};
465 const FeatureEntry::FeatureParam kForceDark_SelectiveGeneralInversion[] = {
466 {"inversion_method", "cielab_based"},
467 {"image_behavior", "selective"},
468 {"text_lightness_threshold", "150"},
469 {"background_lightness_threshold", "205"}};
471 const FeatureEntry::FeatureVariation kForceDarkVariations[] = {
472 {"with simple HSL-based inversion", kForceDark_SimpleHsl,
473 base::size(kForceDark_SimpleHsl), nullptr},
474 {"with simple CIELAB-based inversion", kForceDark_SimpleCielab,
475 base::size(kForceDark_SimpleCielab), nullptr},
476 {"with simple RGB-based inversion", kForceDark_SimpleRgb,
477 base::size(kForceDark_SimpleRgb), nullptr},
478 {"with selective image inversion", kForceDark_SelectiveImageInversion,
479 base::size(kForceDark_SelectiveImageInversion), nullptr},
480 {"with selective inversion of non-image elements",
481 kForceDark_SelectiveElementInversion,
482 base::size(kForceDark_SelectiveElementInversion), nullptr},
483 {"with selective inversion of everything",
484 kForceDark_SelectiveGeneralInversion,
485 base::size(kForceDark_SelectiveGeneralInversion), nullptr}};
486 #endif // !OS_CHROMEOS
488 const FeatureEntry::FeatureParam kDelayAsyncScriptExecutionFinishedParsing[] = {
489 {"delay_type", "finished_parsing"}};
490 const FeatureEntry::FeatureParam
491 kDelayAsyncScriptExecutionFirstPaintOrFinishedParsing[] = {
492 {"delay_type", "first_paint_or_finished_parsing"}};
494 const FeatureEntry::FeatureVariation
495 kDelayAsyncScriptExecutionFeatureVariations[] = {
496 {"with delay until finished parsing document",
497 kDelayAsyncScriptExecutionFinishedParsing,
498 base::size(kDelayAsyncScriptExecutionFinishedParsing), nullptr},
499 {"with delay until first paint or finished parsing document",
500 kDelayAsyncScriptExecutionFirstPaintOrFinishedParsing,
501 base::size(kDelayAsyncScriptExecutionFirstPaintOrFinishedParsing),
504 #if defined(OS_ANDROID)
505 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_Immediate[] = {
506 {"baseline_tab_suggestions", "true"},
507 {"baseline_close_tab_suggestions", "true"}};
508 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_4Hours[] = {
509 {"close_tab_suggestions_stale_time_ms", "14400000"}};
510 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_8Hours[] = {
511 {"close_tab_suggestions_stale_time_ms", "28800000"}};
512 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_7Days[] = {
513 {"close_tab_suggestions_stale_time_ms", "604800000"}};
514 const FeatureEntry::FeatureParam kCloseTabSuggestionsTimeSiteEngagement[] = {
515 {"close_tab_min_num_tabs", "5"},
516 {"close_tab_features_time_last_used_enabled", "true"},
517 {"close_tab_features_time_last_used_transform", "MEAN_VARIANCE"},
518 {"close_tab_features_time_last_used_threshold", "0.5"},
519 {"close_tab_features_site_engagement_enabled", "true"},
520 {"close_tab_features_site_engagement_threshold", "90.0"},
522 const FeatureEntry::FeatureParam kGroupAndCloseTabSuggestions_Immediate[] = {
523 {"baseline_tab_suggestions", "true"},
524 {"baseline_group_tab_suggestions", "true"},
525 {"baseline_close_tab_suggestions", "true"}};
527 const FeatureEntry::FeatureVariation kCloseTabSuggestionsStaleVariations[] = {
528 {"Close Immediate", kCloseTabSuggestionsStale_Immediate,
529 base::size(kCloseTabSuggestionsStale_Immediate), nullptr},
530 {"Group+Close Immediate", kGroupAndCloseTabSuggestions_Immediate,
531 base::size(kGroupAndCloseTabSuggestions_Immediate), nullptr},
532 {"4 hours", kCloseTabSuggestionsStale_4Hours,
533 base::size(kCloseTabSuggestionsStale_4Hours), nullptr},
534 {"8 hours", kCloseTabSuggestionsStale_8Hours,
535 base::size(kCloseTabSuggestionsStale_8Hours), nullptr},
536 {"7 days", kCloseTabSuggestionsStale_7Days,
537 base::size(kCloseTabSuggestionsStale_7Days), nullptr},
538 {"Time & Site Engagement", kCloseTabSuggestionsTimeSiteEngagement,
539 base::size(kCloseTabSuggestionsTimeSiteEngagement), nullptr},
543 const FeatureEntry::Choice kEnableGpuRasterizationChoices[] = {
544 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
545 {flags_ui::kGenericExperimentChoiceEnabled,
546 switches::kEnableGpuRasterization, ""},
547 {flags_ui::kGenericExperimentChoiceDisabled,
548 switches::kDisableGpuRasterization, ""},
551 const FeatureEntry::Choice kEnableOopRasterizationChoices[] = {
552 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
553 {flags_ui::kGenericExperimentChoiceEnabled,
554 switches::kEnableOopRasterization, ""},
555 {flags_ui::kGenericExperimentChoiceDisabled,
556 switches::kDisableOopRasterization, ""},
559 const FeatureEntry::Choice kExtensionContentVerificationChoices[] = {
560 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
561 {flag_descriptions::kExtensionContentVerificationBootstrap,
562 switches::kExtensionContentVerification,
563 switches::kExtensionContentVerificationBootstrap},
564 {flag_descriptions::kExtensionContentVerificationEnforce,
565 switches::kExtensionContentVerification,
566 switches::kExtensionContentVerificationEnforce},
567 {flag_descriptions::kExtensionContentVerificationEnforceStrict,
568 switches::kExtensionContentVerification,
569 switches::kExtensionContentVerificationEnforceStrict},
572 const FeatureEntry::Choice kTopChromeTouchUiChoices[] = {
573 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
574 {flags_ui::kGenericExperimentChoiceAutomatic, switches::kTopChromeTouchUi,
575 switches::kTopChromeTouchUiAuto},
576 {flags_ui::kGenericExperimentChoiceDisabled, switches::kTopChromeTouchUi,
577 switches::kTopChromeTouchUiDisabled},
578 {flags_ui::kGenericExperimentChoiceEnabled, switches::kTopChromeTouchUi,
579 switches::kTopChromeTouchUiEnabled}};
581 #if defined(OS_CHROMEOS)
582 const char kLacrosSupportInternalName[] = "lacros-support";
584 const FeatureEntry::Choice kUiShowCompositedLayerBordersChoices[] = {
585 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
586 {flag_descriptions::kUiShowCompositedLayerBordersRenderPass,
587 cc::switches::kUIShowCompositedLayerBorders,
588 cc::switches::kCompositedRenderPassBorders},
589 {flag_descriptions::kUiShowCompositedLayerBordersSurface,
590 cc::switches::kUIShowCompositedLayerBorders,
591 cc::switches::kCompositedSurfaceBorders},
592 {flag_descriptions::kUiShowCompositedLayerBordersLayer,
593 cc::switches::kUIShowCompositedLayerBorders,
594 cc::switches::kCompositedLayerBorders},
595 {flag_descriptions::kUiShowCompositedLayerBordersAll,
596 cc::switches::kUIShowCompositedLayerBorders, ""}};
598 #endif // OS_CHROMEOS
600 #if defined(OS_CHROMEOS)
601 const FeatureEntry::Choice kCrosRegionsModeChoices[] = {
602 {flag_descriptions::kCrosRegionsModeDefault, "", ""},
603 {flag_descriptions::kCrosRegionsModeOverride,
604 chromeos::switches::kCrosRegionsMode,
605 chromeos::switches::kCrosRegionsModeOverride},
606 {flag_descriptions::kCrosRegionsModeHide,
607 chromeos::switches::kCrosRegionsMode,
608 chromeos::switches::kCrosRegionsModeHide},
610 #endif // OS_CHROMEOS
612 const FeatureEntry::Choice kForceUIDirectionChoices[] = {
613 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
614 {flag_descriptions::kForceDirectionLtr, switches::kForceUIDirection,
615 switches::kForceDirectionLTR},
616 {flag_descriptions::kForceDirectionRtl, switches::kForceUIDirection,
617 switches::kForceDirectionRTL},
620 const FeatureEntry::Choice kForceTextDirectionChoices[] = {
621 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
622 {flag_descriptions::kForceDirectionLtr, switches::kForceTextDirection,
623 switches::kForceDirectionLTR},
624 {flag_descriptions::kForceDirectionRtl, switches::kForceTextDirection,
625 switches::kForceDirectionRTL},
628 #if defined(OS_CHROMEOS)
629 const FeatureEntry::Choice kSchedulerConfigurationChoices[] = {
630 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
631 {flag_descriptions::kSchedulerConfigurationConservative,
632 switches::kSchedulerConfiguration,
633 switches::kSchedulerConfigurationConservative},
634 {flag_descriptions::kSchedulerConfigurationPerformance,
635 switches::kSchedulerConfiguration,
636 switches::kSchedulerConfigurationPerformance},
638 #endif // OS_CHROMEOS
640 #if defined(OS_ANDROID)
641 const FeatureEntry::FeatureParam kCompactSuggestions_SemicompactVariant[] = {
642 {"omnibox_compact_suggestions_variant", "semi-compact"}};
644 const FeatureEntry::FeatureVariation kCompactSuggestionsVariations[] = {
645 {"- Semi-compact", kCompactSuggestions_SemicompactVariant,
646 base::size(kCompactSuggestions_SemicompactVariant), nullptr},
650 const FeatureEntry::Choice kEnableUseZoomForDSFChoices[] = {
651 {flag_descriptions::kEnableUseZoomForDsfChoiceDefault, "", ""},
652 {flag_descriptions::kEnableUseZoomForDsfChoiceEnabled,
653 switches::kEnableUseZoomForDSF, "true"},
654 {flag_descriptions::kEnableUseZoomForDsfChoiceDisabled,
655 switches::kEnableUseZoomForDSF, "false"},
658 const FeatureEntry::Choice kSiteIsolationOptOutChoices[] = {
659 {flag_descriptions::kSiteIsolationOptOutChoiceDefault, "", ""},
660 {flag_descriptions::kSiteIsolationOptOutChoiceOptOut,
661 switches::kDisableSiteIsolation, ""},
664 const FeatureEntry::Choice kForceColorProfileChoices[] = {
665 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
666 {flag_descriptions::kForceColorProfileSRGB,
667 switches::kForceDisplayColorProfile, "srgb"},
668 {flag_descriptions::kForceColorProfileP3,
669 switches::kForceDisplayColorProfile, "display-p3-d65"},
670 {flag_descriptions::kForceColorProfileColorSpin,
671 switches::kForceDisplayColorProfile, "color-spin-gamma24"},
672 {flag_descriptions::kForceColorProfileSCRGBLinear,
673 switches::kForceDisplayColorProfile, "scrgb-linear"},
674 {flag_descriptions::kForceColorProfileHDR10,
675 switches::kForceDisplayColorProfile, "hdr10"},
678 const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
679 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
680 {flag_descriptions::kEffectiveConnectionTypeUnknownDescription,
681 network::switches::kForceEffectiveConnectionType,
682 net::kEffectiveConnectionTypeUnknown},
683 {flag_descriptions::kEffectiveConnectionTypeOfflineDescription,
684 network::switches::kForceEffectiveConnectionType,
685 net::kEffectiveConnectionTypeOffline},
686 {flag_descriptions::kEffectiveConnectionTypeSlow2GDescription,
687 network::switches::kForceEffectiveConnectionType,
688 net::kEffectiveConnectionTypeSlow2G},
689 {flag_descriptions::kEffectiveConnectionTypeSlow2GOnCellularDescription,
690 network::switches::kForceEffectiveConnectionType,
691 net::kEffectiveConnectionTypeSlow2GOnCellular},
692 {flag_descriptions::kEffectiveConnectionType2GDescription,
693 network::switches::kForceEffectiveConnectionType,
694 net::kEffectiveConnectionType2G},
695 {flag_descriptions::kEffectiveConnectionType3GDescription,
696 network::switches::kForceEffectiveConnectionType,
697 net::kEffectiveConnectionType3G},
698 {flag_descriptions::kEffectiveConnectionType4GDescription,
699 network::switches::kForceEffectiveConnectionType,
700 net::kEffectiveConnectionType4G},
703 // Ensure that all effective connection types returned by Network Quality
704 // Estimator (NQE) are also exposed via flags.
705 static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
706 base::size(kForceEffectiveConnectionTypeChoices),
707 "ECT enum value is not handled.");
708 static_assert(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN == 0,
709 "ECT enum value is not handled.");
710 static_assert(net::EFFECTIVE_CONNECTION_TYPE_4G + 1 ==
711 net::EFFECTIVE_CONNECTION_TYPE_LAST,
712 "ECT enum value is not handled.");
714 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitNone[] = {
715 {"max_srp_prefetches", "-1"}};
716 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitZero[] = {
717 {"max_srp_prefetches", "0"}};
718 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitOne[] = {
719 {"max_srp_prefetches", "1"}};
720 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitTwo[] = {
721 {"max_srp_prefetches", "2"}};
722 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitThree[] = {
723 {"max_srp_prefetches", "3"}};
724 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitFour[] = {
725 {"max_srp_prefetches", "4"}};
726 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitFive[] = {
727 {"max_srp_prefetches", "5"}};
728 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitTen[] = {
729 {"max_srp_prefetches", "10"}};
730 const FeatureEntry::FeatureParam kIsolatedPrerenderPrefetchLimitFifteen[] = {
731 {"max_srp_prefetches", "15"}};
733 const FeatureEntry::FeatureVariation
734 kIsolatedPrerenderFeatureWithPrefetchLimit[] = {
735 {"Unlimited Prefetches", kIsolatedPrerenderPrefetchLimitNone,
736 base::size(kIsolatedPrerenderPrefetchLimitNone), nullptr},
737 {"Zero Prefetches", kIsolatedPrerenderPrefetchLimitZero,
738 base::size(kIsolatedPrerenderPrefetchLimitZero), nullptr},
739 {"One Prefetch", kIsolatedPrerenderPrefetchLimitOne,
740 base::size(kIsolatedPrerenderPrefetchLimitOne), nullptr},
741 {"Two Prefetches", kIsolatedPrerenderPrefetchLimitTwo,
742 base::size(kIsolatedPrerenderPrefetchLimitTwo), nullptr},
743 {"Three Prefetches", kIsolatedPrerenderPrefetchLimitThree,
744 base::size(kIsolatedPrerenderPrefetchLimitThree), nullptr},
745 {"Four Prefetches", kIsolatedPrerenderPrefetchLimitFour,
746 base::size(kIsolatedPrerenderPrefetchLimitFour), nullptr},
747 {"Five Prefetches", kIsolatedPrerenderPrefetchLimitFive,
748 base::size(kIsolatedPrerenderPrefetchLimitFive), nullptr},
749 {"Ten Prefetches", kIsolatedPrerenderPrefetchLimitTen,
750 base::size(kIsolatedPrerenderPrefetchLimitTen), nullptr},
751 {"Fifteen Prefetches", kIsolatedPrerenderPrefetchLimitFifteen,
752 base::size(kIsolatedPrerenderPrefetchLimitFifteen), nullptr},
755 #if defined(OS_ANDROID)
756 const FeatureEntry::FeatureParam
757 kAutofillKeyboardAccessoryFeatureVariationAnimationDuration[] = {
758 {autofill::kAutofillKeyboardAccessoryAnimationDurationKey, "1000"}};
760 const FeatureEntry::FeatureParam
761 kAutofillKeyboardAccessoryFeatureVariationLimitLabelWidth[] = {
762 {autofill::kAutofillKeyboardAccessoryLimitLabelWidthKey, "true"}};
764 const FeatureEntry::FeatureParam
765 kAutofillKeyboardAccessoryFeatureVariationShowHint[] = {
766 {autofill::kAutofillKeyboardAccessoryHintKey, "true"}};
768 const FeatureEntry::FeatureParam
769 kAutofillKeyboardAccessoryFeatureVariationAnimateWithHint[] = {
770 {autofill::kAutofillKeyboardAccessoryAnimationDurationKey, "1000"},
771 {autofill::kAutofillKeyboardAccessoryHintKey, "true"}};
773 const FeatureEntry::FeatureVariation
774 kAutofillKeyboardAccessoryFeatureVariations[] = {
775 {"Animate", kAutofillKeyboardAccessoryFeatureVariationAnimationDuration,
777 kAutofillKeyboardAccessoryFeatureVariationAnimationDuration),
779 {"Limit label width",
780 kAutofillKeyboardAccessoryFeatureVariationLimitLabelWidth,
781 base::size(kAutofillKeyboardAccessoryFeatureVariationLimitLabelWidth),
783 {"Show hint", kAutofillKeyboardAccessoryFeatureVariationShowHint,
784 base::size(kAutofillKeyboardAccessoryFeatureVariationShowHint),
786 {"Animate with hint",
787 kAutofillKeyboardAccessoryFeatureVariationAnimateWithHint,
788 base::size(kAutofillKeyboardAccessoryFeatureVariationAnimateWithHint),
792 const FeatureEntry::Choice kMemlogModeChoices[] = {
793 {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
794 {flag_descriptions::kMemlogModeMinimal, heap_profiling::kMemlogMode,
795 heap_profiling::kMemlogModeMinimal},
796 {flag_descriptions::kMemlogModeAll, heap_profiling::kMemlogMode,
797 heap_profiling::kMemlogModeAll},
798 {flag_descriptions::kMemlogModeBrowser, heap_profiling::kMemlogMode,
799 heap_profiling::kMemlogModeBrowser},
800 {flag_descriptions::kMemlogModeGpu, heap_profiling::kMemlogMode,
801 heap_profiling::kMemlogModeGpu},
802 {flag_descriptions::kMemlogModeAllRenderers, heap_profiling::kMemlogMode,
803 heap_profiling::kMemlogModeAllRenderers},
804 {flag_descriptions::kMemlogModeRendererSampling,
805 heap_profiling::kMemlogMode, heap_profiling::kMemlogModeRendererSampling},
808 const FeatureEntry::Choice kMemlogStackModeChoices[] = {
809 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
810 {flag_descriptions::kMemlogStackModeNative,
811 heap_profiling::kMemlogStackMode, heap_profiling::kMemlogStackModeNative},
812 {flag_descriptions::kMemlogStackModeNativeWithThreadNames,
813 heap_profiling::kMemlogStackMode,
814 heap_profiling::kMemlogStackModeNativeWithThreadNames},
815 {flag_descriptions::kMemlogStackModePseudo,
816 heap_profiling::kMemlogStackMode, heap_profiling::kMemlogStackModePseudo},
817 {flag_descriptions::kMemlogStackModeMixed, heap_profiling::kMemlogStackMode,
818 heap_profiling::kMemlogStackModeMixed},
821 const FeatureEntry::Choice kMemlogSamplingRateChoices[] = {
822 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
823 {flag_descriptions::kMemlogSamplingRate10KB,
824 heap_profiling::kMemlogSamplingRate,
825 heap_profiling::kMemlogSamplingRate10KB},
826 {flag_descriptions::kMemlogSamplingRate50KB,
827 heap_profiling::kMemlogSamplingRate,
828 heap_profiling::kMemlogSamplingRate50KB},
829 {flag_descriptions::kMemlogSamplingRate100KB,
830 heap_profiling::kMemlogSamplingRate,
831 heap_profiling::kMemlogSamplingRate100KB},
832 {flag_descriptions::kMemlogSamplingRate500KB,
833 heap_profiling::kMemlogSamplingRate,
834 heap_profiling::kMemlogSamplingRate500KB},
835 {flag_descriptions::kMemlogSamplingRate1MB,
836 heap_profiling::kMemlogSamplingRate,
837 heap_profiling::kMemlogSamplingRate1MB},
838 {flag_descriptions::kMemlogSamplingRate5MB,
839 heap_profiling::kMemlogSamplingRate,
840 heap_profiling::kMemlogSamplingRate5MB},
843 #if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
844 const FeatureEntry::FeatureParam kOmniboxDocumentProviderServerScoring[] = {
845 {"DocumentUseServerScore", "true"},
846 {"DocumentUseClientScore", "false"},
847 {"DocumentCapScorePerRank", "false"},
848 {"DocumentBoostOwned", "false"},
850 const FeatureEntry::FeatureParam
851 kOmniboxDocumentProviderServerScoringCappedByRank[] = {
852 {"DocumentUseServerScore", "true"},
853 {"DocumentUseClientScore", "false"},
854 {"DocumentCapScorePerRank", "true"},
855 {"DocumentBoostOwned", "true"},
857 const FeatureEntry::FeatureParam kOmniboxDocumentProviderClientScoring[] = {
858 {"DocumentUseServerScore", "false"},
859 {"DocumentUseClientScore", "true"},
860 {"DocumentCapScorePerRank", "false"},
861 {"DocumentBoostOwned", "false"},
863 const FeatureEntry::FeatureParam
864 kOmniboxDocumentProviderServerAndClientScoring[] = {
865 {"DocumentUseServerScore", "true"},
866 {"DocumentUseClientScore", "true"},
867 {"DocumentCapScorePerRank", "false"},
868 {"DocumentBoostOwned", "false"},
871 const FeatureEntry::FeatureVariation kOmniboxDocumentProviderVariations[] = {
872 {"server scores", kOmniboxDocumentProviderServerScoring,
873 base::size(kOmniboxDocumentProviderServerScoring), nullptr},
874 {"server scores capped by rank",
875 kOmniboxDocumentProviderServerScoringCappedByRank,
876 base::size(kOmniboxDocumentProviderServerScoringCappedByRank), nullptr},
877 {"client scores", kOmniboxDocumentProviderClientScoring,
878 base::size(kOmniboxDocumentProviderClientScoring), nullptr},
879 {"server and client scores", kOmniboxDocumentProviderServerAndClientScoring,
880 base::size(kOmniboxDocumentProviderServerAndClientScoring), nullptr}};
882 // The variations include 13 of the 16 possible permutations of "Title UI",
883 // "2-Line UI", "Title AC", and "Non-Prefix AC". The remaining 3 permutations
884 // would effectively be no-ops.
885 // - Title UI: Displays suggestion titles in the omnibox.
886 // E.g. en.wikipe | [dia.org/wiki/Space_Shuttle] (Space Shuttle - Wikipedia)
887 // - 2-Line UI: Stretches the omnibox vertically to fit 2 lines and displays
888 // titles on a 2nd line
889 // E.g. en.wikipe | [dia.org/wiki/Space_Shuttle]
890 // Space Shuttle - Wikipedia
891 // - Title AC: Autocompletes suggestions when the input matches the title.
892 // E.g. Space Sh | [ttle - Wikipedia] (en.wikipedia.org/wiki/Space_Shuttle)
893 // - Non-Prefix AC: Autocompletes suggestions when the input is not necessarily
895 // E.g. [en.wikipe dia.org/] wiki/Spac | [e_Shuttle] (Space Shuttle -
897 const FeatureEntry::FeatureVariation kOmniboxRichAutocompletionVariations[] = {
900 (FeatureEntry::FeatureParam[]){
901 {"RichAutocompletionShowTitles", "true"}},
905 // Skipping "2-Line UI" as that would be a no-op
907 "Title UI & 2-Line UI",
908 (FeatureEntry::FeatureParam[]){
909 {"RichAutocompletionShowTitles", "true"},
910 {"RichAutocompletionTwoLineOmnibox", "true"}},
916 (FeatureEntry::FeatureParam[]){
917 {"RichAutocompletionAutocompleteTitles", "true"}},
922 "Title UI & Title AC",
923 (FeatureEntry::FeatureParam[]){
924 {"RichAutocompletionShowTitles", "true"},
925 {"RichAutocompletionAutocompleteTitles", "true"}},
930 "2-Line UI & Title AC",
931 (FeatureEntry::FeatureParam[]){
932 {"RichAutocompletionTwoLineOmnibox", "true"},
933 {"RichAutocompletionAutocompleteTitles", "true"}},
938 "Title UI , 2-Line UI, & Title AC",
939 (FeatureEntry::FeatureParam[]){
940 {"RichAutocompletionShowTitles", "true"},
941 {"RichAutocompletionAutocompleteTitles", "true"},
942 {"RichAutocompletionTwoLineOmnibox", "true"}},
948 (FeatureEntry::FeatureParam[]){
949 {"RichAutocompletionAutocompleteNonPrefix", "true"}},
954 "Title UI & Non-Prefix AC",
955 (FeatureEntry::FeatureParam[]){
956 {"RichAutocompletionShowTitles", "true"},
957 {"RichAutocompletionAutocompleteNonPrefix", "true"}},
961 // Skipping "2-Line UI & Non-Prefix AC" as that would be a no-op
963 "Title UI, 2-Line UI, & Non-Prefix AC",
964 (FeatureEntry::FeatureParam[]){
965 {"RichAutocompletionShowTitles", "true"},
966 {"RichAutocompletionTwoLineOmnibox", "true"},
967 {"RichAutocompletionAutocompleteNonPrefix", "true"}},
972 "Title AC & Non-Prefix AC",
973 (FeatureEntry::FeatureParam[]){
974 {"RichAutocompletionAutocompleteTitles", "true"},
975 {"RichAutocompletionAutocompleteNonPrefix", "true"}},
980 "Title UI, Title AC, & Non-Prefix AC",
981 (FeatureEntry::FeatureParam[]){
982 {"RichAutocompletionShowTitles", "true"},
983 {"RichAutocompletionAutocompleteTitles", "true"},
984 {"RichAutocompletionAutocompleteNonPrefix", "true"}},
989 "2-Line UI, Title AC, & Non-Prefix AC",
990 (FeatureEntry::FeatureParam[]){
991 {"RichAutocompletionTwoLineOmnibox", "true"},
992 {"RichAutocompletionAutocompleteTitles", "true"},
993 {"RichAutocompletionAutocompleteNonPrefix", "true"}},
998 "Title UI, 2-Line UI, Title AC, & Non-Prefix AC",
999 (FeatureEntry::FeatureParam[]){
1000 {"RichAutocompletionAutocompleteNonPrefix", "true"},
1001 {"RichAutocompletionShowTitles", "true"},
1002 {"RichAutocompletionAutocompleteTitles", "true"},
1003 {"RichAutocompletionTwoLineOmnibox", "true"}},
1008 #endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
1010 const FeatureEntry::FeatureParam kOmniboxOnFocusSuggestionsParamSERP[] = {
1011 {"ZeroSuggestVariant:6:*", "RemoteSendUrl"},
1012 {"ZeroSuggestVariant:9:*", "RemoteSendUrl"}};
1013 #if defined(OS_ANDROID)
1014 const FeatureEntry::FeatureParam kOmniboxNTPZPSLocal[] = {
1015 {"ZeroSuggestVariant:1:*", "Local"},
1016 {"ZeroSuggestVariant:7:*", "Local"},
1017 {"ZeroSuggestVariant:8:*", "Local"}};
1018 const FeatureEntry::FeatureParam kOmniboxNTPZPSRemote[] = {
1019 {"ZeroSuggestVariant:1:*", "RemoteNoUrl"},
1020 {"ZeroSuggestVariant:7:*", "RemoteNoUrl"},
1021 {"ZeroSuggestVariant:8:*", "RemoteNoUrl"}};
1022 const FeatureEntry::FeatureParam kOmniboxNTPZPSRemoteLocal[] = {
1023 {"ZeroSuggestVariant:1:*", "RemoteNoUrl,Local"},
1024 {"ZeroSuggestVariant:7:*", "RemoteNoUrl,Local"},
1025 {"ZeroSuggestVariant:8:*", "RemoteNoUrl,Local"}};
1026 #else // !defined(OS_ANDROID)
1027 const FeatureEntry::FeatureParam kNTPOmniboxZPSRemoteLocal[] = {
1028 {"ZeroSuggestVariant:1:*", "RemoteNoUrl,Local"},
1029 {"ZeroSuggestVariant:7:*", "RemoteNoUrl,Local"}};
1030 const FeatureEntry::FeatureParam kNTPOmniboxRealboxZPSRemoteLocal[] = {
1031 {"ZeroSuggestVariant:1:*", "RemoteNoUrl,Local"},
1032 {"ZeroSuggestVariant:7:*", "RemoteNoUrl,Local"},
1033 {"ZeroSuggestVariant:15:*", "RemoteNoUrl,Local"}};
1034 #endif // defined(OS_ANDROID)
1036 const FeatureEntry::FeatureVariation kOmniboxOnFocusSuggestionsVariations[] = {
1037 {"SERP - RemoteSendURL", kOmniboxOnFocusSuggestionsParamSERP,
1038 base::size(kOmniboxOnFocusSuggestionsParamSERP),
1039 "t3315869" /* variation_id */},
1040 #if defined(OS_ANDROID)
1041 {"ZPS on NTP: Local History", kOmniboxNTPZPSLocal,
1042 base::size(kOmniboxNTPZPSLocal), nullptr},
1043 {"ZPS on NTP: Remote History", kOmniboxNTPZPSRemote,
1044 base::size(kOmniboxNTPZPSRemote), /* variation_id */ "t3314248"},
1045 {"ZPS on NTP: Extended Remote History", kOmniboxNTPZPSRemote,
1046 base::size(kOmniboxNTPZPSRemote), /* variation_id */ "t3317456"},
1047 {"ZPS on NTP: Onboarding", kOmniboxNTPZPSRemote,
1048 base::size(kOmniboxNTPZPSRemote), /* variation_id */ "t3316638"},
1049 {"ZPS on NTP: PZPS, Remote, Local", kOmniboxNTPZPSRemoteLocal,
1050 base::size(kOmniboxNTPZPSRemoteLocal), /* variation_id */ "t3317569"},
1051 {"Contextual Web", kOmniboxNTPZPSRemoteLocal,
1052 base::size(kOmniboxNTPZPSRemoteLocal), /* variation_id */ "t3317605"},
1053 #else // !defined(OS_ANDROID)
1054 {"NTP Omnibox - Remote History, Local History", kNTPOmniboxZPSRemoteLocal,
1055 base::size(kNTPOmniboxZPSRemoteLocal), "t3316133" /* variation_id */},
1056 {"NTP Omnibox - Remote History + PZPS, Local History",
1057 kNTPOmniboxZPSRemoteLocal, base::size(kNTPOmniboxZPSRemoteLocal),
1058 "t3317462" /* variation_id */},
1059 {"NTP Omnibox/Realbox - Remote History, Local History",
1060 kNTPOmniboxRealboxZPSRemoteLocal,
1061 base::size(kNTPOmniboxRealboxZPSRemoteLocal),
1062 "t3316133" /* variation_id */},
1063 {"NTP Omnibox/Realbox - Remote History + PZPS, Local History",
1064 kNTPOmniboxRealboxZPSRemoteLocal,
1065 base::size(kNTPOmniboxRealboxZPSRemoteLocal),
1066 "t3317462" /* variation_id */},
1067 #endif // defined(OS_ANDROID)
1070 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches3[] = {
1071 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "3"}};
1072 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches4[] = {
1073 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "4"}};
1074 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches5[] = {
1075 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "5"}};
1076 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches6[] = {
1077 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "6"}};
1078 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches7[] = {
1079 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "7"}};
1080 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches8[] = {
1081 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "8"}};
1082 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches9[] = {
1083 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "9"}};
1084 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches10[] = {
1085 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "10"}};
1086 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches12[] = {
1087 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "12"}};
1089 const FeatureEntry::FeatureVariation
1090 kOmniboxUIMaxAutocompleteMatchesVariations[] = {
1091 {"3 matches", kOmniboxUIMaxAutocompleteMatches3,
1092 base::size(kOmniboxUIMaxAutocompleteMatches3), nullptr},
1093 {"4 matches", kOmniboxUIMaxAutocompleteMatches4,
1094 base::size(kOmniboxUIMaxAutocompleteMatches4), nullptr},
1095 {"5 matches", kOmniboxUIMaxAutocompleteMatches5,
1096 base::size(kOmniboxUIMaxAutocompleteMatches5), nullptr},
1097 {"6 matches", kOmniboxUIMaxAutocompleteMatches6,
1098 base::size(kOmniboxUIMaxAutocompleteMatches6), nullptr},
1099 {"7 matches", kOmniboxUIMaxAutocompleteMatches7,
1100 base::size(kOmniboxUIMaxAutocompleteMatches7), nullptr},
1101 {"8 matches", kOmniboxUIMaxAutocompleteMatches8,
1102 base::size(kOmniboxUIMaxAutocompleteMatches8), nullptr},
1103 {"9 matches", kOmniboxUIMaxAutocompleteMatches9,
1104 base::size(kOmniboxUIMaxAutocompleteMatches9), nullptr},
1105 {"10 matches", kOmniboxUIMaxAutocompleteMatches10,
1106 base::size(kOmniboxUIMaxAutocompleteMatches10), nullptr},
1107 {"12 matches", kOmniboxUIMaxAutocompleteMatches12,
1108 base::size(kOmniboxUIMaxAutocompleteMatches12), nullptr}};
1110 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches2[] = {
1111 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "2"}};
1112 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches3[] = {
1113 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "3"}};
1114 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches4[] = {
1115 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "4"}};
1116 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches5[] = {
1117 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "5"}};
1118 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches6[] = {
1119 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "6"}};
1121 const FeatureEntry::FeatureVariation kOmniboxMaxURLMatchesVariations[] = {
1122 {"2 matches", kOmniboxMaxURLMatches2, base::size(kOmniboxMaxURLMatches2),
1124 {"3 matches", kOmniboxMaxURLMatches3, base::size(kOmniboxMaxURLMatches3),
1126 {"4 matches", kOmniboxMaxURLMatches4, base::size(kOmniboxMaxURLMatches4),
1128 {"5 matches", kOmniboxMaxURLMatches5, base::size(kOmniboxMaxURLMatches5),
1130 {"6 matches", kOmniboxMaxURLMatches6, base::size(kOmniboxMaxURLMatches6),
1133 const FeatureEntry::FeatureParam kMarkHttpAsDangerous[] = {
1134 {security_state::features::kMarkHttpAsFeatureParameterName,
1135 security_state::features::kMarkHttpAsParameterDangerous}};
1136 const FeatureEntry::FeatureParam kMarkHttpAsWarningAndDangerousOnFormEdits[] = {
1137 {security_state::features::kMarkHttpAsFeatureParameterName,
1138 security_state::features::
1139 kMarkHttpAsParameterWarningAndDangerousOnFormEdits}};
1140 const FeatureEntry::FeatureParam kMarkHttpAsDangerWarning[] = {
1141 {security_state::features::kMarkHttpAsFeatureParameterName,
1142 security_state::features::kMarkHttpAsParameterDangerWarning}};
1144 // The "Enabled" state for this feature is "0" and representing setting A.
1145 const FeatureEntry::FeatureParam kTabHoverCardsSettingB[] = {
1146 {features::kTabHoverCardsFeatureParameterName, "1"}};
1147 const FeatureEntry::FeatureParam kTabHoverCardsSettingC[] = {
1148 {features::kTabHoverCardsFeatureParameterName, "2"}};
1150 const FeatureEntry::FeatureVariation kTabHoverCardsFeatureVariations[] = {
1151 {"B", kTabHoverCardsSettingB, base::size(kTabHoverCardsSettingB), nullptr},
1152 {"C", kTabHoverCardsSettingC, base::size(kTabHoverCardsSettingC), nullptr}};
1154 const FeatureEntry::FeatureVariation kMarkHttpAsFeatureVariations[] = {
1155 {"(mark as actively dangerous)", kMarkHttpAsDangerous,
1156 base::size(kMarkHttpAsDangerous), nullptr},
1157 {"(mark with a Not Secure warning and dangerous on form edits)",
1158 kMarkHttpAsWarningAndDangerousOnFormEdits,
1159 base::size(kMarkHttpAsWarningAndDangerousOnFormEdits), nullptr},
1160 {"(mark with a grey triangle icon)", kMarkHttpAsDangerWarning,
1161 base::size(kMarkHttpAsDangerWarning), nullptr}};
1163 #if defined(OS_ANDROID)
1164 const FeatureEntry::FeatureParam kTranslateForceTriggerOnEnglishHeuristic[] = {
1165 {language::kOverrideModelKey, language::kOverrideModelHeuristicValue},
1166 {language::kEnforceRankerKey, "false"}};
1167 const FeatureEntry::FeatureParam kTranslateForceTriggerOnEnglishGeo[] = {
1168 {language::kOverrideModelKey, language::kOverrideModelGeoValue},
1169 {language::kEnforceRankerKey, "false"}};
1170 const FeatureEntry::FeatureParam kTranslateForceTriggerOnEnglishBackoff[] = {
1171 {language::kOverrideModelKey, language::kOverrideModelDefaultValue},
1172 {language::kEnforceRankerKey, "false"},
1173 {language::kBackoffThresholdKey, "0"}};
1174 const FeatureEntry::FeatureVariation
1175 kTranslateForceTriggerOnEnglishVariations[] = {
1176 {"(Heuristic model without Ranker)",
1177 kTranslateForceTriggerOnEnglishHeuristic,
1178 base::size(kTranslateForceTriggerOnEnglishHeuristic), nullptr},
1179 {"(Geo model without Ranker)", kTranslateForceTriggerOnEnglishGeo,
1180 base::size(kTranslateForceTriggerOnEnglishGeo), nullptr},
1181 {"(Zero threshold)", kTranslateForceTriggerOnEnglishBackoff,
1182 base::size(kTranslateForceTriggerOnEnglishBackoff), nullptr}};
1184 const FeatureEntry::FeatureParam kOverscrollHistoryNavigationBottomSheet[] = {
1185 {"overscroll_history_navigation_bottom_sheet", "true"}};
1186 const FeatureEntry::FeatureVariation kOverscrollHistoryNavigationVariations[] =
1187 {{"Navigation sheet", kOverscrollHistoryNavigationBottomSheet,
1188 base::size(kOverscrollHistoryNavigationBottomSheet), nullptr}};
1189 #endif // defined(OS_ANDROID)
1191 #if defined(OS_ANDROID)
1192 const FeatureEntry::FeatureParam kExploreSitesExperimental = {
1193 chrome::android::explore_sites::kExploreSitesVariationParameterName,
1194 chrome::android::explore_sites::kExploreSitesVariationExperimental};
1195 const FeatureEntry::FeatureParam kExploreSitesDenseTitleBottom[] = {
1196 {chrome::android::explore_sites::kExploreSitesDenseVariationParameterName,
1197 chrome::android::explore_sites::
1198 kExploreSitesDenseVariationDenseTitleBottom},
1200 const FeatureEntry::FeatureParam kExploreSitesDenseTitleRight[] = {
1201 {chrome::android::explore_sites::kExploreSitesDenseVariationParameterName,
1202 chrome::android::explore_sites::
1203 kExploreSitesDenseVariationDenseTitleRight},
1205 const FeatureEntry::FeatureVariation kExploreSitesVariations[] = {
1206 {"Experimental", &kExploreSitesExperimental, 1, nullptr},
1207 {"Dense Title Bottom", kExploreSitesDenseTitleBottom,
1208 base::size(kExploreSitesDenseTitleBottom), nullptr},
1209 {"Dense Title Right", kExploreSitesDenseTitleRight,
1210 base::size(kExploreSitesDenseTitleRight), nullptr}};
1211 const FeatureEntry::FeatureParam kLongpressResolvePreserveTap = {
1212 contextual_search::kLongpressResolveParamName,
1213 contextual_search::kLongpressResolvePreserveTap};
1214 const FeatureEntry::FeatureVariation kLongpressResolveVariations[] = {
1215 {"and preserve Tap behavior", &kLongpressResolvePreserveTap, 1, nullptr},
1218 #endif // defined(OS_ANDROID)
1220 const FeatureEntry::FeatureParam kResamplingInputEventsLSQEnabled[] = {
1221 {"predictor", blink::features::kScrollPredictorNameLsq}};
1222 const FeatureEntry::FeatureParam kResamplingInputEventsKalmanEnabled[] = {
1223 {"predictor", blink::features::kScrollPredictorNameKalman}};
1224 const FeatureEntry::FeatureParam kResamplingInputEventsLinearFirstEnabled[] = {
1225 {"predictor", blink::features::kScrollPredictorNameLinearFirst}};
1226 const FeatureEntry::FeatureParam kResamplingInputEventsLinearSecondEnabled[] = {
1227 {"predictor", blink::features::kScrollPredictorNameLinearSecond}};
1228 const FeatureEntry::FeatureParam
1229 kResamplingInputEventsLinearResamplingEnabled[] = {
1230 {"predictor", blink::features::kScrollPredictorNameLinearResampling}};
1232 const FeatureEntry::FeatureVariation kResamplingInputEventsFeatureVariations[] =
1233 {{blink::features::kScrollPredictorNameLsq,
1234 kResamplingInputEventsLSQEnabled,
1235 base::size(kResamplingInputEventsLSQEnabled), nullptr},
1236 {blink::features::kScrollPredictorNameKalman,
1237 kResamplingInputEventsKalmanEnabled,
1238 base::size(kResamplingInputEventsKalmanEnabled), nullptr},
1239 {blink::features::kScrollPredictorNameLinearFirst,
1240 kResamplingInputEventsLinearFirstEnabled,
1241 base::size(kResamplingInputEventsLinearFirstEnabled), nullptr},
1242 {blink::features::kScrollPredictorNameLinearSecond,
1243 kResamplingInputEventsLinearSecondEnabled,
1244 base::size(kResamplingInputEventsLinearSecondEnabled), nullptr},
1245 {blink::features::kScrollPredictorNameLinearResampling,
1246 kResamplingInputEventsLinearResamplingEnabled,
1247 base::size(kResamplingInputEventsLinearResamplingEnabled), nullptr}};
1249 const FeatureEntry::FeatureParam kFilteringPredictionEmptyFilterEnabled[] = {
1250 {"filter", blink::features::kFilterNameEmpty}};
1251 const FeatureEntry::FeatureParam kFilteringPredictionOneEuroFilterEnabled[] = {
1252 {"filter", blink::features::kFilterNameOneEuro}};
1254 const FeatureEntry::FeatureVariation kFilteringPredictionFeatureVariations[] = {
1255 {blink::features::kFilterNameEmpty, kFilteringPredictionEmptyFilterEnabled,
1256 base::size(kFilteringPredictionEmptyFilterEnabled), nullptr},
1257 {blink::features::kFilterNameOneEuro,
1258 kFilteringPredictionOneEuroFilterEnabled,
1259 base::size(kFilteringPredictionOneEuroFilterEnabled), nullptr}};
1261 #if defined(OS_ANDROID)
1262 const FeatureEntry::FeatureParam kBottomOfflineIndicatorEnabled[] = {
1263 {"bottom_offline_indicator", "true"}};
1265 const FeatureEntry::FeatureVariation kOfflineIndicatorFeatureVariations[] = {
1266 {"(bottom)", kBottomOfflineIndicatorEnabled,
1267 base::size(kBottomOfflineIndicatorEnabled), nullptr}};
1268 #endif // OS_ANDROID
1270 #if defined(OS_ANDROID)
1271 const FeatureEntry::FeatureParam kTabSwitcherOnReturn_Immediate[] = {
1272 {"tab_switcher_on_return_time_ms", "0"}};
1273 const FeatureEntry::FeatureParam kTabSwitcherOnReturn_1Minute[] = {
1274 {"tab_switcher_on_return_time_ms", "60000"}};
1275 const FeatureEntry::FeatureParam kTabSwitcherOnReturn_30Minutes[] = {
1276 {"tab_switcher_on_return_time_ms", "1800000"}};
1277 const FeatureEntry::FeatureParam kTabSwitcherOnReturn_60Minutes[] = {
1278 {"tab_switcher_on_return_time_ms", "3600000"}};
1279 const FeatureEntry::FeatureVariation kTabSwitcherOnReturnVariations[] = {
1280 {"Immediate", kTabSwitcherOnReturn_Immediate,
1281 base::size(kTabSwitcherOnReturn_30Minutes), nullptr},
1282 {"1 minute", kTabSwitcherOnReturn_1Minute,
1283 base::size(kTabSwitcherOnReturn_30Minutes), nullptr},
1284 {"30 minutes", kTabSwitcherOnReturn_30Minutes,
1285 base::size(kTabSwitcherOnReturn_30Minutes), nullptr},
1286 {"60 minutes", kTabSwitcherOnReturn_60Minutes,
1287 base::size(kTabSwitcherOnReturn_60Minutes), nullptr},
1289 #endif // OS_ANDROID
1291 #if defined(OS_ANDROID)
1292 const FeatureEntry::FeatureParam kChromeDuet_HomeSearchTabSwitcher[] = {
1293 {"chrome_duet_variation", "HomeSearchTabSwitcher"}};
1295 const FeatureEntry::FeatureParam kChromeDuet_HomeSearchShare[] = {
1296 {"chrome_duet_variation", "HomeSearchShare"}};
1298 const FeatureEntry::FeatureParam kChromeDuet_NewTabSearchShare[] = {
1299 {"chrome_duet_variation", "NewTabSearchShare"}};
1301 const FeatureEntry::FeatureVariation kChromeDuetVariations[] = {
1302 {"Home-Search-TabSwitcher Variation", kChromeDuet_HomeSearchTabSwitcher,
1303 base::size(kChromeDuet_HomeSearchTabSwitcher), nullptr},
1304 {"Home-Search-Share Variation", kChromeDuet_HomeSearchShare,
1305 base::size(kChromeDuet_HomeSearchShare), nullptr},
1306 {"NewTab-Search-Share Variation", kChromeDuet_NewTabSearchShare,
1307 base::size(kChromeDuet_NewTabSearchShare), nullptr},
1310 const FeatureEntry::FeatureParam kTabGridLayoutAndroid_NewTabVariation[] = {
1311 {"tab_grid_layout_android_new_tab", "NewTabVariation"},
1312 {"allow_to_refetch", "true"}};
1314 const FeatureEntry::FeatureParam kTabGridLayoutAndroid_NewTabTile[] = {
1315 {"tab_grid_layout_android_new_tab_tile", "NewTabTile"}};
1317 const FeatureEntry::FeatureParam
1318 kTabGridLayoutAndroid_ThumbnailAspectRatio_2[] = {
1319 {"thumbnail_aspect_ratio", "2.0"},
1320 {"allow_to_refetch", "true"}};
1322 const FeatureEntry::FeatureParam
1323 kTabGridLayoutAndroid_ThumbnailAspectRatio_three_quarter[] = {
1324 {"thumbnail_aspect_ratio", "0.75"},
1325 {"allow_to_refetch", "true"}};
1327 const FeatureEntry::FeatureParam
1328 kTabGridLayoutAndroid_ThumbnailAspectRatio_half[] = {
1329 {"thumbnail_aspect_ratio", "0.5"},
1330 {"allow_to_refetch", "true"}};
1332 const FeatureEntry::FeatureParam kTabGridLayoutAndroid_DisableRefetch[] = {
1333 {"allow_to_refetch", "false"}};
1335 const FeatureEntry::FeatureParam kTabGridLayoutAndroid_SearchChip[] = {
1336 {"enable_search_term_chip", "true"}};
1338 const FeatureEntry::FeatureVariation kTabGridLayoutAndroidVariations[] = {
1339 {"New Tab Variation", kTabGridLayoutAndroid_NewTabVariation,
1340 base::size(kTabGridLayoutAndroid_NewTabVariation), nullptr},
1341 {"New Tab Tile", kTabGridLayoutAndroid_NewTabTile,
1342 base::size(kTabGridLayoutAndroid_NewTabTile), nullptr},
1343 {"thumbnail aspect ratio - 2:1",
1344 kTabGridLayoutAndroid_ThumbnailAspectRatio_2,
1345 base::size(kTabGridLayoutAndroid_ThumbnailAspectRatio_2), nullptr},
1346 {"thumbnail aspect ratio - 1:2",
1347 kTabGridLayoutAndroid_ThumbnailAspectRatio_half,
1348 base::size(kTabGridLayoutAndroid_ThumbnailAspectRatio_half), nullptr},
1349 {"thumbnail aspect ratio - 3:4",
1350 kTabGridLayoutAndroid_ThumbnailAspectRatio_three_quarter,
1351 base::size(kTabGridLayoutAndroid_ThumbnailAspectRatio_three_quarter),
1353 {"Disable refetch", kTabGridLayoutAndroid_DisableRefetch,
1354 base::size(kTabGridLayoutAndroid_DisableRefetch), nullptr},
1355 {"Search term chip", kTabGridLayoutAndroid_SearchChip,
1356 base::size(kTabGridLayoutAndroid_SearchChip), nullptr},
1359 const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurface[] = {
1360 {"start_surface_variation", "single"}};
1362 const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurface_V2[] = {
1363 {"start_surface_variation", "single"},
1364 {"show_last_active_tab_only", "true"},
1365 {"exclude_mv_tiles", "true"},
1366 {"show_stack_tab_switcher", "true"},
1367 {"open_ntp_instead_of_start", "true"}};
1369 const FeatureEntry::FeatureParam
1370 kStartSurfaceAndroid_SingleSurfaceWithoutMvTiles[] = {
1371 {"start_surface_variation", "single"},
1372 {"exclude_mv_tiles", "true"},
1373 {"hide_switch_when_no_incognito_tabs", "true"}};
1375 const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurfaceSingleTab[] =
1376 {{"start_surface_variation", "single"},
1377 {"show_last_active_tab_only", "true"},
1378 {"hide_switch_when_no_incognito_tabs", "true"}};
1380 const FeatureEntry::FeatureParam
1381 kStartSurfaceAndroid_SingleSurfaceSingleTabStack[] = {
1382 {"start_surface_variation", "single"},
1383 {"show_last_active_tab_only", "true"},
1384 {"show_stack_tab_switcher", "true"}};
1386 const FeatureEntry::FeatureParam
1387 kStartSurfaceAndroid_SingleSurfaceSingleTabWithoutMvTiles[] = {
1388 {"start_surface_variation", "single"},
1389 {"show_last_active_tab_only", "true"},
1390 {"exclude_mv_tiles", "true"}};
1392 const FeatureEntry::FeatureParam kStartSurfaceAndroid_TwoPanesSurface[] = {
1393 {"start_surface_variation", "twopanes"}};
1395 const FeatureEntry::FeatureParam kStartSurfaceAndroid_TasksOnly[] = {
1396 {"start_surface_variation", "tasksonly"}};
1398 const FeatureEntry::FeatureParam kStartSurfaceAndroid_OmniboxOnly[] = {
1399 {"start_surface_variation", "omniboxonly"},
1400 {"hide_switch_when_no_incognito_tabs", "true"}};
1402 const FeatureEntry::FeatureParam kStartSurfaceAndroid_OmniboxOnly_Quick[] = {
1403 {"start_surface_variation", "omniboxonly"},
1404 {"omnibox_scroll_mode", "quick"},
1405 {"hide_switch_when_no_incognito_tabs", "true"}};
1407 const FeatureEntry::FeatureParam kStartSurfaceAndroid_OmniboxOnly_Pinned[] = {
1408 {"start_surface_variation", "omniboxonly"},
1409 {"omnibox_scroll_mode", "pinned"},
1410 {"hide_switch_when_no_incognito_tabs", "true"}};
1412 const FeatureEntry::FeatureParam kStartSurfaceAndroid_TrendyTerms[] = {
1413 {"start_surface_variation", "trendyterms"},
1414 {"trendy_enabled", "true"},
1415 {"trendy_success_min_period_ms", "30000"},
1416 {"trendy_failure_min_period_ms", "10000"},
1417 {"omnibox_scroll_mode", "quick"},
1418 {"hide_switch_when_no_incognito_tabs", "true"}};
1420 const FeatureEntry::FeatureVariation kStartSurfaceAndroidVariations[] = {
1421 {"Single Surface", kStartSurfaceAndroid_SingleSurface,
1422 base::size(kStartSurfaceAndroid_SingleSurface), nullptr},
1423 {"Single Surface V2", kStartSurfaceAndroid_SingleSurface_V2,
1424 base::size(kStartSurfaceAndroid_SingleSurface_V2), nullptr},
1425 {"Single Surface without MV Tiles",
1426 kStartSurfaceAndroid_SingleSurfaceWithoutMvTiles,
1427 base::size(kStartSurfaceAndroid_SingleSurfaceWithoutMvTiles), nullptr},
1428 {"Single Surface + Single Tab", kStartSurfaceAndroid_SingleSurfaceSingleTab,
1429 base::size(kStartSurfaceAndroid_SingleSurfaceSingleTab), nullptr},
1430 {"Single Surface + Single Tab + Tabs Stack",
1431 kStartSurfaceAndroid_SingleSurfaceSingleTabStack,
1432 base::size(kStartSurfaceAndroid_SingleSurfaceSingleTabStack), nullptr},
1433 {"Single Surface + Single Tab without MV Tiles",
1434 kStartSurfaceAndroid_SingleSurfaceSingleTabWithoutMvTiles,
1435 base::size(kStartSurfaceAndroid_SingleSurfaceSingleTabWithoutMvTiles),
1437 {"Two Panes Surface", kStartSurfaceAndroid_TwoPanesSurface,
1438 base::size(kStartSurfaceAndroid_TwoPanesSurface), nullptr},
1439 {"Tasks Only", kStartSurfaceAndroid_TasksOnly,
1440 base::size(kStartSurfaceAndroid_TasksOnly), nullptr},
1441 {"Omnibox Only", kStartSurfaceAndroid_OmniboxOnly,
1442 base::size(kStartSurfaceAndroid_OmniboxOnly), nullptr},
1443 {"Omnibox Only, Quick", kStartSurfaceAndroid_OmniboxOnly_Quick,
1444 base::size(kStartSurfaceAndroid_OmniboxOnly_Quick), nullptr},
1445 {"Omnibox Only, Pinned", kStartSurfaceAndroid_OmniboxOnly_Pinned,
1446 base::size(kStartSurfaceAndroid_OmniboxOnly_Pinned), nullptr},
1447 {"Trendy Terms, Quick", kStartSurfaceAndroid_TrendyTerms,
1448 base::size(kStartSurfaceAndroid_TrendyTerms), nullptr}};
1450 const FeatureEntry::FeatureParam kConditionalTabStripAndroid_Immediate[] = {
1451 {"conditional_tab_strip_session_time_ms", "0"}};
1452 const FeatureEntry::FeatureParam kConditionalTabStripAndroid_60Minutes[] = {
1453 {"conditional_tab_strip_session_time_ms", "3600000"}};
1454 const FeatureEntry::FeatureVariation kConditionalTabStripAndroidVariations[] = {
1455 {"Immediate", kConditionalTabStripAndroid_Immediate,
1456 base::size(kConditionalTabStripAndroid_Immediate), nullptr},
1457 {"60 minutes", kConditionalTabStripAndroid_60Minutes,
1458 base::size(kConditionalTabStripAndroid_60Minutes), nullptr},
1460 #endif // OS_ANDROID
1462 #if defined(OS_ANDROID)
1463 const FeatureEntry::FeatureParam
1464 kAutofillUseMobileLabelDisambiguationShowAll[] = {
1465 {autofill::features::kAutofillUseMobileLabelDisambiguationParameterName,
1466 autofill::features::
1467 kAutofillUseMobileLabelDisambiguationParameterShowAll}};
1468 const FeatureEntry::FeatureParam
1469 kAutofillUseMobileLabelDisambiguationShowOne[] = {
1470 {autofill::features::kAutofillUseMobileLabelDisambiguationParameterName,
1471 autofill::features::
1472 kAutofillUseMobileLabelDisambiguationParameterShowOne}};
1474 const FeatureEntry::FeatureVariation
1475 kAutofillUseMobileLabelDisambiguationVariations[] = {
1476 {"(show all)", kAutofillUseMobileLabelDisambiguationShowAll,
1477 base::size(kAutofillUseMobileLabelDisambiguationShowAll), nullptr},
1478 {"(show one)", kAutofillUseMobileLabelDisambiguationShowOne,
1479 base::size(kAutofillUseMobileLabelDisambiguationShowOne), nullptr}};
1480 #endif // defined(OS_ANDROID)
1482 #if defined(OS_ANDROID)
1483 const FeatureEntry::FeatureParam kHomepagePromoCardLarge[] = {
1484 {"promo-card-variation", "Large"}};
1485 const FeatureEntry::FeatureParam kHomepagePromoCardCompact[] = {
1486 {"promo-card-variation", "Compact"}};
1487 const FeatureEntry::FeatureParam kHomepagePromoCardSlim[] = {
1488 {"promo-card-variation", "Slim"}};
1490 const FeatureEntry::FeatureVariation kHomepagePromoCardVariations[] = {
1491 {"Large", kHomepagePromoCardLarge, base::size(kHomepagePromoCardLarge),
1493 {"Compact", kHomepagePromoCardCompact,
1494 base::size(kHomepagePromoCardCompact), nullptr},
1495 {"Slim", kHomepagePromoCardSlim, base::size(kHomepagePromoCardSlim),
1497 #endif // defined(OS_ANDROID)
1499 #if defined(OS_ANDROID)
1500 const FeatureEntry::FeatureParam kContextMenuShopSimilarProducts[] = {
1501 {"lensShopVariation", "ShopSimilarProducts"}};
1502 const FeatureEntry::FeatureParam kContextMenuShopImageWithGoogleLens[] = {
1503 {"lensShopVariation", "ShopImageWithGoogleLens"}};
1504 const FeatureEntry::FeatureParam kContextMenuSearchSimilarProducts[] = {
1505 {"lensShopVariation", "SearchSimilarProducts"}};
1507 const FeatureEntry::FeatureVariation
1508 kContextMenuShopWithGoogleLensShopVariations[] = {
1509 {"ShopSimilarProducts", kContextMenuShopSimilarProducts,
1510 base::size(kContextMenuShopSimilarProducts), nullptr},
1511 {"ShopImageWithGoogleLens", kContextMenuShopImageWithGoogleLens,
1512 base::size(kContextMenuShopImageWithGoogleLens), nullptr},
1513 {"SearchSimilarProducts", kContextMenuSearchSimilarProducts,
1514 base::size(kContextMenuSearchSimilarProducts), nullptr}};
1515 #endif // defined(OS_ANDROID)
1517 const FeatureEntry::FeatureParam kLazyFrameLoadingAutomatic[] = {
1518 {"automatic-lazy-load-frames-enabled", "true"},
1519 {"restrict-lazy-load-frames-to-data-saver-only", "false"},
1522 const FeatureEntry::FeatureVariation kLazyFrameLoadingVariations[] = {
1523 {"(Automatically lazily load where safe even if not marked "
1525 kLazyFrameLoadingAutomatic, base::size(kLazyFrameLoadingAutomatic),
1528 const FeatureEntry::FeatureParam kLazyImageLoadingAutomatic[] = {
1529 {"automatic-lazy-load-images-enabled", "true"},
1530 {"restrict-lazy-load-images-to-data-saver-only", "false"},
1533 const FeatureEntry::FeatureVariation kLazyImageLoadingVariations[] = {
1534 {"(Automatically lazily load where safe even if not marked "
1536 kLazyImageLoadingAutomatic, base::size(kLazyImageLoadingAutomatic),
1539 const FeatureEntry::Choice kNotificationSchedulerChoices[] = {
1540 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1541 {flag_descriptions::
1542 kNotificationSchedulerImmediateBackgroundTaskDescription,
1543 notifications::switches::kNotificationSchedulerImmediateBackgroundTask,
1547 #if defined(OS_ANDROID)
1549 const FeatureEntry::FeatureParam kOmniboxAssistantVoiceSearchGreyMic[] = {
1550 {"min_agsa_version", "10.95"},
1551 {"min_android_sdk", "21"},
1552 {"min_memory_mb", "1024"},
1553 {"enabled_locales", ""},
1554 {"colorful_mic", "false"}};
1556 const FeatureEntry::FeatureParam kOmniboxAssistantVoiceSearchColorfulMic[] = {
1557 {"min_agsa_version", "10.95"},
1558 {"min_android_sdk", "21"},
1559 {"min_memory_mb", "1024"},
1560 {"enabled_locales", ""},
1561 {"colorful_mic", "true"}};
1563 const FeatureEntry::FeatureVariation kOmniboxAssistantVoiceSearchVariations[] =
1565 {"(grey mic)", kOmniboxAssistantVoiceSearchGreyMic,
1566 base::size(kOmniboxAssistantVoiceSearchGreyMic), nullptr},
1567 {"(colorful mic)", kOmniboxAssistantVoiceSearchColorfulMic,
1568 base::size(kOmniboxAssistantVoiceSearchColorfulMic), nullptr},
1571 const FeatureEntry::FeatureParam
1572 kOmniboxSearchEngineLogoRoundedEdgesVariationConstant[] = {
1573 {"rounded_edges", "true"}};
1574 const FeatureEntry::FeatureParam
1575 kOmniboxSearchEngineLogoLoupeEverywhereVariationConstant[] = {
1576 {"loupe_everywhere", "true"}};
1577 const FeatureEntry::FeatureVariation
1578 kOmniboxSearchEngineLogoFeatureVariations[] = {
1580 kOmniboxSearchEngineLogoRoundedEdgesVariationConstant,
1581 base::size(kOmniboxSearchEngineLogoRoundedEdgesVariationConstant),
1583 {"(loupe everywhere)",
1584 kOmniboxSearchEngineLogoLoupeEverywhereVariationConstant,
1585 base::size(kOmniboxSearchEngineLogoLoupeEverywhereVariationConstant),
1588 const FeatureEntry::FeatureParam
1589 kOmniboxImageSearchSuggestionThumbnailVariationConstant[] = {
1590 {"ImageSearchSuggestionThumbnail", "true"}};
1591 const FeatureEntry::FeatureVariation
1592 kOmniboxImageSearchSuggestionThumbnailVariation[] = {
1593 {"(with thumbnail)",
1594 kOmniboxImageSearchSuggestionThumbnailVariationConstant,
1595 base::size(kOmniboxImageSearchSuggestionThumbnailVariationConstant),
1597 #endif // OS_ANDROID
1599 const FeatureEntry::FeatureVariation
1600 kOmniboxOnDeviceHeadSuggestIncognitoExperimentVariations[] = {{
1602 (FeatureEntry::FeatureParam[]){
1603 {OmniboxFieldTrial::kOnDeviceHeadSuggestMaxScoreForNonUrlInput,
1609 const FeatureEntry::FeatureVariation
1610 kOmniboxOnDeviceHeadSuggestNonIncognitoExperimentVariations[] = {
1613 (FeatureEntry::FeatureParam[]){
1614 {OmniboxFieldTrial::kOnDeviceHeadSuggestMaxScoreForNonUrlInput,
1616 {OmniboxFieldTrial::kOnDeviceHeadSuggestDemoteMode,
1617 "decrease-relevances"}},
1622 "request-delay-100ms",
1623 (FeatureEntry::FeatureParam[]){
1624 {OmniboxFieldTrial::kOnDeviceHeadSuggestDelaySuggestRequestMs,
1630 "delay-100ms-relevance-1000",
1631 (FeatureEntry::FeatureParam[]){
1632 {OmniboxFieldTrial::kOnDeviceHeadSuggestDelaySuggestRequestMs,
1634 {OmniboxFieldTrial::kOnDeviceHeadSuggestMaxScoreForNonUrlInput,
1636 {OmniboxFieldTrial::kOnDeviceHeadSuggestDemoteMode,
1637 "decrease-relevances"}},
1642 "request-delay-200ms",
1643 (FeatureEntry::FeatureParam[]){
1644 {OmniboxFieldTrial::kOnDeviceHeadSuggestDelaySuggestRequestMs,
1650 "delay-200ms-relevance-1000",
1651 (FeatureEntry::FeatureParam[]){
1652 {OmniboxFieldTrial::kOnDeviceHeadSuggestDelaySuggestRequestMs,
1654 {OmniboxFieldTrial::kOnDeviceHeadSuggestMaxScoreForNonUrlInput,
1656 {OmniboxFieldTrial::kOnDeviceHeadSuggestDemoteMode,
1657 "decrease-relevances"}},
1662 const FeatureEntry::FeatureParam
1663 kQuietNotificationPromptsWithAdaptiveActivation[] = {
1664 {QuietNotificationPermissionUiConfig::kEnableAdaptiveActivation,
1666 {QuietNotificationPermissionUiConfig::kEnableAbusiveRequestBlocking,
1668 {QuietNotificationPermissionUiConfig::kEnableAbusiveRequestWarning,
1670 {QuietNotificationPermissionUiConfig::kEnableCrowdDenyTriggering,
1672 {QuietNotificationPermissionUiConfig::kCrowdDenyHoldBackChance, "0"}};
1674 // The default "Enabled" option has the semantics of showing the quiet UI
1675 // (animated location bar indicator on Desktop, and mini-infobars on Android),
1676 // but only when the user directly turns it on in Settings. In addition to that,
1677 // expose an option to also enable adaptively turning on the quiet UI after
1678 // three consecutive denies or based on crowd deny verdicts.
1679 const FeatureEntry::FeatureVariation kQuietNotificationPromptsVariations[] = {
1680 {"(with adaptive activation)",
1681 kQuietNotificationPromptsWithAdaptiveActivation,
1682 base::size(kQuietNotificationPromptsWithAdaptiveActivation), nullptr},
1685 #if BUILDFLAG(ENABLE_EXTENSIONS)
1686 const FeatureEntry::FeatureParam kExtensionsCheckup_Startup_Performance[] = {
1687 {extensions_features::kExtensionsCheckupBannerMessageParameter,
1688 extensions_features::kPerformanceMessage},
1689 {extensions_features::kExtensionsCheckupEntryPointParameter,
1690 extensions_features::kStartupEntryPoint}};
1691 const FeatureEntry::FeatureParam kExtensionsCheckup_Startup_Privacy[] = {
1692 {extensions_features::kExtensionsCheckupBannerMessageParameter,
1693 extensions_features::kPrivacyMessage},
1694 {extensions_features::kExtensionsCheckupEntryPointParameter,
1695 extensions_features::kStartupEntryPoint}};
1696 const FeatureEntry::FeatureParam kExtensionsCheckup_Startup_Neutral[] = {
1697 {extensions_features::kExtensionsCheckupBannerMessageParameter,
1698 extensions_features::kNeutralMessage},
1699 {extensions_features::kExtensionsCheckupEntryPointParameter,
1700 extensions_features::kStartupEntryPoint}};
1701 const FeatureEntry::FeatureParam kExtensionsCheckup_Promo_Performance[] = {
1702 {extensions_features::kExtensionsCheckupBannerMessageParameter,
1703 extensions_features::kPerformanceMessage},
1704 {extensions_features::kExtensionsCheckupEntryPointParameter,
1705 extensions_features::kNtpPromoEntryPoint}};
1706 const FeatureEntry::FeatureParam kExtensionsCheckup_Promo_Privacy[] = {
1707 {extensions_features::kExtensionsCheckupBannerMessageParameter,
1708 extensions_features::kPrivacyMessage},
1709 {extensions_features::kExtensionsCheckupEntryPointParameter,
1710 extensions_features::kNtpPromoEntryPoint}};
1711 const FeatureEntry::FeatureParam kExtensionsCheckup_Promo_Neutral[] = {
1712 {extensions_features::kExtensionsCheckupBannerMessageParameter,
1713 extensions_features::kNeutralMessage},
1714 {extensions_features::kExtensionsCheckupEntryPointParameter,
1715 extensions_features::kNtpPromoEntryPoint}};
1717 const FeatureEntry::FeatureVariation kExtensionsCheckupVariations[] = {
1718 {"On Startup - Performance Focused Message",
1719 kExtensionsCheckup_Startup_Performance,
1720 base::size(kExtensionsCheckup_Startup_Performance), nullptr},
1721 {"On Startup - Privacy Focused Message", kExtensionsCheckup_Startup_Privacy,
1722 base::size(kExtensionsCheckup_Startup_Privacy), nullptr},
1723 {"On Startup - Neutral Focused Message", kExtensionsCheckup_Startup_Neutral,
1724 base::size(kExtensionsCheckup_Startup_Neutral), nullptr},
1725 {"NTP Promo - Performance Focused Message",
1726 kExtensionsCheckup_Promo_Performance,
1727 base::size(kExtensionsCheckup_Promo_Performance), nullptr},
1728 {"NTP Promo - Privacy Focused Message", kExtensionsCheckup_Promo_Privacy,
1729 base::size(kExtensionsCheckup_Promo_Privacy), nullptr},
1730 {"NTP Promo - Neutral Focused Message", kExtensionsCheckup_Promo_Neutral,
1731 base::size(kExtensionsCheckup_Promo_Neutral), nullptr}};
1732 #endif // ENABLE_EXTENSIONS
1734 // TODO(crbug.com/991082,1015377): Remove after proper support for back-forward
1735 // cache is implemented.
1736 const FeatureEntry::FeatureParam kBackForwardCache_ForceCaching[] = {
1737 {"TimeToLiveInBackForwardCacheInSeconds", "300"},
1738 {"should_ignore_blocklists", "true"}};
1740 const FeatureEntry::FeatureVariation kBackForwardCacheVariations[] = {
1741 {"force caching all pages", kBackForwardCache_ForceCaching,
1742 base::size(kBackForwardCache_ForceCaching), nullptr},
1745 const FeatureEntry::FeatureParam kSharingDeviceExpirationHours_0[] = {
1746 {"SharingDeviceExpirationHours", "0"}};
1747 const FeatureEntry::FeatureParam kSharingDeviceExpirationHours_12[] = {
1748 {"SharingDeviceExpirationHours", "12"}};
1749 const FeatureEntry::FeatureParam kSharingDeviceExpirationHours_24[] = {
1750 {"SharingDeviceExpirationHours", "24"}};
1751 const FeatureEntry::FeatureParam kSharingDeviceExpirationHours_48[] = {
1752 {"SharingDeviceExpirationHours", "48"}};
1753 const FeatureEntry::FeatureParam kSharingDeviceExpirationHours_96[] = {
1754 {"SharingDeviceExpirationHours", "96"}};
1755 const FeatureEntry::FeatureParam kSharingDeviceExpirationHours_240[] = {
1756 {"SharingDeviceExpirationHours", "240"}};
1757 const FeatureEntry::FeatureVariation kSharingDeviceExpirationVariations[] = {
1758 {"0 hours", kSharingDeviceExpirationHours_0,
1759 base::size(kSharingDeviceExpirationHours_0), nullptr},
1760 {"12 hours", kSharingDeviceExpirationHours_12,
1761 base::size(kSharingDeviceExpirationHours_12), nullptr},
1762 {"1 day", kSharingDeviceExpirationHours_24,
1763 base::size(kSharingDeviceExpirationHours_24), nullptr},
1764 {"2 days", kSharingDeviceExpirationHours_48,
1765 base::size(kSharingDeviceExpirationHours_48), nullptr},
1766 {"4 days", kSharingDeviceExpirationHours_96,
1767 base::size(kSharingDeviceExpirationHours_96), nullptr},
1768 {"10 days", kSharingDeviceExpirationHours_240,
1769 base::size(kSharingDeviceExpirationHours_240), nullptr},
1772 const FeatureEntry::FeatureParam
1773 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure2250[] = {
1774 {"lcp-limit-in-ms", "2250"},
1775 {"intervention-mode", "failure"}};
1776 const FeatureEntry::FeatureParam
1777 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure2000[] = {
1778 {"lcp-limit-in-ms", "2000"},
1779 {"intervention-mode", "failure"}};
1780 const FeatureEntry::FeatureParam
1781 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1750[] = {
1782 {"lcp-limit-in-ms", "1750"},
1783 {"intervention-mode", "failure"}};
1784 const FeatureEntry::FeatureParam
1785 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1500[] = {
1786 {"lcp-limit-in-ms", "1500"},
1787 {"intervention-mode", "failure"}};
1788 const FeatureEntry::FeatureParam
1789 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1250[] = {
1790 {"lcp-limit-in-ms", "1250"},
1791 {"intervention-mode", "failure"}};
1792 const FeatureEntry::FeatureParam
1793 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1000[] = {
1794 {"lcp-limit-in-ms", "1000"},
1795 {"intervention-mode", "failure"}};
1796 const FeatureEntry::FeatureParam
1797 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap2250[] = {
1798 {"lcp-limit-in-ms", "2250"},
1799 {"intervention-mode", "swap"}};
1800 const FeatureEntry::FeatureParam
1801 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap2000[] = {
1802 {"lcp-limit-in-ms", "2000"},
1803 {"intervention-mode", "swap"}};
1804 const FeatureEntry::FeatureParam
1805 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1750[] = {
1806 {"lcp-limit-in-ms", "1750"},
1807 {"intervention-mode", "swap"}};
1808 const FeatureEntry::FeatureParam
1809 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1500[] = {
1810 {"lcp-limit-in-ms", "1500"},
1811 {"intervention-mode", "swap"}};
1812 const FeatureEntry::FeatureParam
1813 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1250[] = {
1814 {"lcp-limit-in-ms", "1250"},
1815 {"intervention-mode", "swap"}};
1816 const FeatureEntry::FeatureParam
1817 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1000[] = {
1818 {"lcp-limit-in-ms", "1000"},
1819 {"intervention-mode", "swap"}};
1820 const FeatureEntry::FeatureVariation
1821 kAlignFontDisplayAutoTimeoutWithLCPGoalVariations[] = {
1822 {"switch to failure after 2250ms since navigation",
1823 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure2250,
1824 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalFailure2250),
1826 {"switch to failure after 2000ms since navigation",
1827 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure2000,
1828 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalFailure2000),
1830 {"switch to failure after 1750ms since navigation",
1831 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1750,
1832 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1750),
1834 {"switch to failure after 1500ms since navigation",
1835 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1500,
1836 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1500),
1838 {"switch to failure after 1250ms since navigation",
1839 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1250,
1840 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1250),
1842 {"switch to failure after 1000ms since navigation",
1843 kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1000,
1844 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalFailure1000),
1846 {"switch to swap after 2250ms since navigation",
1847 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap2250,
1848 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalSwap2250), nullptr},
1849 {"switch to swap after 2000ms since navigation",
1850 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap2000,
1851 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalSwap2000), nullptr},
1852 {"switch to swap after 1750ms since navigation",
1853 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1750,
1854 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1750), nullptr},
1855 {"switch to swap after 1500ms since navigation",
1856 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1500,
1857 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1500), nullptr},
1858 {"switch to swap after 1250ms since navigation",
1859 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1250,
1860 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1250), nullptr},
1861 {"switch to swap after 1000ms since navigation",
1862 kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1000,
1863 base::size(kAlignFontDisplayAutoTimeoutWithLCPGoalSwap1000), nullptr},
1866 #if defined(OS_CHROMEOS)
1867 const FeatureEntry::Choice kEnableCrOSActionRecorderChoices[] = {
1868 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1869 {ash::switches::kCrOSActionRecorderWithHash,
1870 ash::switches::kEnableCrOSActionRecorder,
1871 ash::switches::kCrOSActionRecorderWithHash},
1872 {ash::switches::kCrOSActionRecorderWithoutHash,
1873 ash::switches::kEnableCrOSActionRecorder,
1874 ash::switches::kCrOSActionRecorderWithoutHash},
1875 {ash::switches::kCrOSActionRecorderCopyToDownloadDir,
1876 ash::switches::kEnableCrOSActionRecorder,
1877 ash::switches::kCrOSActionRecorderCopyToDownloadDir},
1878 {ash::switches::kCrOSActionRecorderDisabled,
1879 ash::switches::kEnableCrOSActionRecorder,
1880 ash::switches::kCrOSActionRecorderDisabled},
1881 {ash::switches::kCrOSActionRecorderStructuredDisabled,
1882 ash::switches::kEnableCrOSActionRecorder,
1883 ash::switches::kCrOSActionRecorderStructuredDisabled},
1885 #endif // defined(OS_CHROMEOS)
1887 #if defined(OS_ANDROID)
1888 const FeatureEntry::Choice kWebOtpBackendChoices[] = {
1889 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1890 {flag_descriptions::kWebOtpBackendSmsVerification, switches::kWebOtpBackend,
1891 switches::kWebOtpBackendSmsVerification},
1892 {flag_descriptions::kWebOtpBackendUserConsent, switches::kWebOtpBackend,
1893 switches::kWebOtpBackendUserConsent},
1896 const FeatureEntry::Choice kQueryTilesCountryChoices[] = {
1897 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1898 {flag_descriptions::kQueryTilesCountryCodeUS,
1899 query_tiles::switches::kQueryTilesCountryCode, "US"},
1900 {flag_descriptions::kQueryTilesCountryCodeIndia,
1901 query_tiles::switches::kQueryTilesCountryCode, "IN"},
1902 {flag_descriptions::kQueryTilesCountryCodeBrazil,
1903 query_tiles::switches::kQueryTilesCountryCode, "BR"},
1904 {flag_descriptions::kQueryTilesCountryCodeNigeria,
1905 query_tiles::switches::kQueryTilesCountryCode, "NG"},
1906 {flag_descriptions::kQueryTilesCountryCodeIndonesia,
1907 query_tiles::switches::kQueryTilesCountryCode, "ID"},
1910 #endif // defined(OS_ANDROID)
1912 // The choices for --enable-experimental-cookie-features. This really should
1913 // just be a SINGLE_VALUE_TYPE, but it is misleading to have the choices be
1914 // labeled "Disabled"/"Enabled". So instead this is made to be a
1915 // MULTI_VALUE_TYPE with choices "Default"/"Enabled".
1916 const FeatureEntry::Choice kEnableExperimentalCookieFeaturesChoices[] = {
1917 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1918 {flags_ui::kGenericExperimentChoiceEnabled,
1919 switches::kEnableExperimentalCookieFeatures, ""},
1922 #if defined(OS_ANDROID)
1923 // The variations of --password-change-support.
1924 const FeatureEntry::FeatureParam
1925 kPasswordChangeVariationWithForcedDialogAfterEverySuccessfulSubmission[] = {
1926 {password_manager::features::
1927 kPasswordChangeWithForcedDialogAfterEverySuccessfulSubmission,
1930 const FeatureEntry::FeatureVariation kPasswordChangeFeatureVariations[] = {
1931 {"Force dialog after every successful form submission.",
1932 kPasswordChangeVariationWithForcedDialogAfterEverySuccessfulSubmission,
1934 kPasswordChangeVariationWithForcedDialogAfterEverySuccessfulSubmission),
1936 #endif // defined(OS_ANDROID)
1938 // RECORDING USER METRICS FOR FLAGS:
1939 // -----------------------------------------------------------------------------
1940 // The first line of the entry is the internal name.
1942 // To add a new entry, add to the end of kFeatureEntries. There are two
1943 // distinct types of entries:
1944 // . SINGLE_VALUE: entry is either on or off. Use the SINGLE_VALUE_TYPE
1945 // macro for this type supplying the command line to the macro.
1946 // . MULTI_VALUE: a list of choices, the first of which should correspond to a
1947 // deactivated state for this lab (i.e. no command line option). To specify
1948 // this type of entry use the macro MULTI_VALUE_TYPE supplying it the
1949 // array of choices.
1950 // See the documentation of FeatureEntry for details on the fields.
1952 // Usage of about:flags is logged on startup via the "Launch.FlagsAtStartup"
1953 // UMA histogram. This histogram shows the number of startups with a given flag
1954 // enabled. If you'd like to see user counts instead, make sure to switch to
1955 // "count users" view on the dashboard. When adding new entries, the enum
1956 // "LoginCustomFlags" must be updated in histograms/enums.xml. See note in
1957 // enums.xml and don't forget to run AboutFlagsHistogramTest unit test to
1958 // calculate and verify checksum.
1960 // When adding a new choice, add it to the end of the list.
1961 const FeatureEntry kFeatureEntries[] = {
1962 // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and
1963 // //tools/flags/generate_unexpire_flags.py.
1964 #include "chrome/browser/unexpire_flags_gen.inc"
1965 {"ignore-gpu-blacklist", flag_descriptions::kIgnoreGpuBlacklistName,
1966 flag_descriptions::kIgnoreGpuBlacklistDescription, kOsAll,
1967 SINGLE_VALUE_TYPE(switches::kIgnoreGpuBlacklist)},
1968 {"disable-accelerated-2d-canvas",
1969 flag_descriptions::kAccelerated2dCanvasName,
1970 flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
1971 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
1972 {"composited-layer-borders", flag_descriptions::kCompositedLayerBordersName,
1973 flag_descriptions::kCompositedLayerBordersDescription, kOsAll,
1974 SINGLE_VALUE_TYPE(cc::switches::kShowCompositedLayerBorders)},
1975 {"overlay-strategies", flag_descriptions::kOverlayStrategiesName,
1976 flag_descriptions::kOverlayStrategiesDescription, kOsAll,
1977 MULTI_VALUE_TYPE(kOverlayStrategiesChoices)},
1978 {"tint-gl-composited-content",
1979 flag_descriptions::kTintGlCompositedContentName,
1980 flag_descriptions::kTintGlCompositedContentDescription, kOsAll,
1981 SINGLE_VALUE_TYPE(switches::kTintGlCompositedContent)},
1982 {"show-overdraw-feedback", flag_descriptions::kShowOverdrawFeedbackName,
1983 flag_descriptions::kShowOverdrawFeedbackDescription, kOsAll,
1984 SINGLE_VALUE_TYPE(switches::kShowOverdrawFeedback)},
1985 {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName,
1986 flag_descriptions::kUiPartialSwapDescription, kOsAll,
1987 SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)},
1988 {"enable-webrtc-capture-multi-channel-audio-processing",
1989 flag_descriptions::kWebrtcCaptureMultiChannelApmName,
1990 flag_descriptions::kWebrtcCaptureMultiChannelApmDescription, kOsAll,
1991 FEATURE_VALUE_TYPE(features::kWebRtcEnableCaptureMultiChannelApm)},
1992 {"disable-webrtc-hw-decoding", flag_descriptions::kWebrtcHwDecodingName,
1993 flag_descriptions::kWebrtcHwDecodingDescription, kOsAndroid | kOsCrOS,
1994 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding)},
1995 {"disable-webrtc-hw-encoding", flag_descriptions::kWebrtcHwEncodingName,
1996 flag_descriptions::kWebrtcHwEncodingDescription, kOsAndroid | kOsCrOS,
1997 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding)},
1998 #if !defined(OS_ANDROID)
1999 {"enable-reader-mode", flag_descriptions::kEnableReaderModeName,
2000 flag_descriptions::kEnableReaderModeDescription, kOsDesktop,
2001 FEATURE_WITH_PARAMS_VALUE_TYPE(dom_distiller::kReaderMode,
2002 kReaderModeDiscoverabilityVariations,
2004 #endif // !defined(OS_ANDROID)
2005 #if defined(WEBRTC_USE_PIPEWIRE)
2006 {"enable-webrtc-pipewire-capturer",
2007 flag_descriptions::kWebrtcPipeWireCapturerName,
2008 flag_descriptions::kWebrtcPipeWireCapturerDescription, kOsLinux,
2009 FEATURE_VALUE_TYPE(features::kWebRtcPipeWireCapturer)},
2010 #endif // defined(WEBRTC_USE_PIPEWIRE)
2011 #if !defined(OS_ANDROID)
2012 {"enable-webrtc-remote-event-log",
2013 flag_descriptions::kWebRtcRemoteEventLogName,
2014 flag_descriptions::kWebRtcRemoteEventLogDescription, kOsDesktop,
2015 FEATURE_VALUE_TYPE(features::kWebRtcRemoteEventLog)},
2017 {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
2018 flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
2019 SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
2020 {"enable-webrtc-stun-origin", flag_descriptions::kWebrtcStunOriginName,
2021 flag_descriptions::kWebrtcStunOriginDescription, kOsAll,
2022 SINGLE_VALUE_TYPE(switches::kEnableWebRtcStunOrigin)},
2023 {"enable-webrtc-hybrid-agc", flag_descriptions::kWebrtcHybridAgcName,
2024 flag_descriptions::kWebrtcHybridAgcDescription, kOsAll,
2025 FEATURE_VALUE_TYPE(features::kWebRtcHybridAgc)},
2026 {"enable-webrtc-new-encode-cpu-load-estimator",
2027 flag_descriptions::kWebrtcNewEncodeCpuLoadEstimatorName,
2028 flag_descriptions::kWebrtcNewEncodeCpuLoadEstimatorDescription, kOsAll,
2029 FEATURE_VALUE_TYPE(media::kNewEncodeCpuLoadEstimator)},
2030 {"enable-webrtc-hide-local-ips-with-mdns",
2031 flag_descriptions::kWebrtcHideLocalIpsWithMdnsName,
2032 flag_descriptions::kWebrtcHideLocalIpsWithMdnsDecription, kOsDesktop,
2033 FEATURE_VALUE_TYPE(blink::features::kWebRtcHideLocalIpsWithMdns)},
2034 {"enable-webrtc-use-min-max-vea-dimensions",
2035 flag_descriptions::kWebrtcUseMinMaxVEADimensionsName,
2036 flag_descriptions::kWebrtcUseMinMaxVEADimensionsDescription, kOsAll,
2037 FEATURE_VALUE_TYPE(blink::features::kWebRtcUseMinMaxVEADimensions)},
2038 #if defined(OS_ANDROID)
2039 {"clear-old-browsing-data", flag_descriptions::kClearOldBrowsingDataName,
2040 flag_descriptions::kClearOldBrowsingDataDescription, kOsAndroid,
2041 FEATURE_VALUE_TYPE(features::kClearOldBrowsingData)},
2042 #endif // OS_ANDROID
2043 #if BUILDFLAG(ENABLE_NACL)
2044 {"enable-nacl", flag_descriptions::kNaclName,
2045 flag_descriptions::kNaclDescription, kOsAll,
2046 SINGLE_VALUE_TYPE(switches::kEnableNaCl)},
2047 #endif // ENABLE_NACL
2048 #if BUILDFLAG(ENABLE_EXTENSIONS)
2049 {"extension-apis", flag_descriptions::kExperimentalExtensionApisName,
2050 flag_descriptions::kExperimentalExtensionApisDescription, kOsDesktop,
2051 SINGLE_VALUE_TYPE(extensions::switches::kEnableExperimentalExtensionApis)},
2052 {"extension-checkup", flag_descriptions::kExtensionsCheckupName,
2053 flag_descriptions::kExtensionsCheckupDescription, kOsDesktop,
2054 FEATURE_WITH_PARAMS_VALUE_TYPE(extensions_features::kExtensionsCheckup,
2055 kExtensionsCheckupVariations,
2056 "ExtensionsCheckup")},
2057 {"extensions-toolbar-menu", flag_descriptions::kExtensionsToolbarMenuName,
2058 flag_descriptions::kExtensionsToolbarMenuDescription, kOsDesktop,
2059 FEATURE_VALUE_TYPE(features::kExtensionsToolbarMenu)},
2060 {"extensions-on-chrome-urls",
2061 flag_descriptions::kExtensionsOnChromeUrlsName,
2062 flag_descriptions::kExtensionsOnChromeUrlsDescription, kOsAll,
2063 SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)},
2064 #endif // ENABLE_EXTENSIONS
2065 {"enable-history-manipulation-intervention",
2066 flag_descriptions::kHistoryManipulationIntervention,
2067 flag_descriptions::kHistoryManipulationInterventionDescription, kOsAll,
2068 FEATURE_VALUE_TYPE(features::kHistoryManipulationIntervention)},
2069 #if defined(OS_ANDROID)
2070 {"contextual-search-debug", flag_descriptions::kContextualSearchDebugName,
2071 flag_descriptions::kContextualSearchDebugDescription, kOsAndroid,
2072 FEATURE_VALUE_TYPE(chrome::android::kContextualSearchDebug)},
2073 {"contextual-search-definitions",
2074 flag_descriptions::kContextualSearchDefinitionsName,
2075 flag_descriptions::kContextualSearchDefinitionsDescription, kOsAndroid,
2076 FEATURE_VALUE_TYPE(chrome::android::kContextualSearchDefinitions)},
2077 {"contextual-search-longpress-resolve",
2078 flag_descriptions::kContextualSearchLongpressResolveName,
2079 flag_descriptions::kContextualSearchLongpressResolveDescription,
2081 FEATURE_WITH_PARAMS_VALUE_TYPE(
2082 chrome::android::kContextualSearchLongpressResolve,
2083 kLongpressResolveVariations,
2084 "ContextualSearchLongpressResolve")},
2085 {"contextual-search-ml-tap-suppression",
2086 flag_descriptions::kContextualSearchMlTapSuppressionName,
2087 flag_descriptions::kContextualSearchMlTapSuppressionDescription,
2089 FEATURE_VALUE_TYPE(chrome::android::kContextualSearchMlTapSuppression)},
2090 {"contextual-search-ranker-query",
2091 flag_descriptions::kContextualSearchRankerQueryName,
2092 flag_descriptions::kContextualSearchRankerQueryDescription, kOsAndroid,
2093 FEATURE_VALUE_TYPE(assist_ranker::kContextualSearchRankerQuery)},
2094 {"contextual-search-second-tap",
2095 flag_descriptions::kContextualSearchSecondTapName,
2096 flag_descriptions::kContextualSearchSecondTapDescription, kOsAndroid,
2097 FEATURE_VALUE_TYPE(chrome::android::kContextualSearchSecondTap)},
2098 {"contextual-search-translations",
2099 flag_descriptions::kContextualSearchTranslationsName,
2100 flag_descriptions::kContextualSearchTranslationsDescription, kOsAndroid,
2101 FEATURE_VALUE_TYPE(chrome::android::kContextualSearchTranslations)},
2102 {"direct-actions", flag_descriptions::kDirectActionsName,
2103 flag_descriptions::kDirectActionsDescription, kOsAndroid,
2104 FEATURE_VALUE_TYPE(chrome::android::kDirectActions)},
2105 {"explore-sites", flag_descriptions::kExploreSitesName,
2106 flag_descriptions::kExploreSitesDescription, kOsAndroid,
2107 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kExploreSites,
2108 kExploreSitesVariations,
2109 "ExploreSites InitialCountries")},
2110 {"related-searches", flag_descriptions::kRelatedSearchesName,
2111 flag_descriptions::kRelatedSearchesDescription, kOsAndroid,
2112 FEATURE_VALUE_TYPE(chrome::android::kRelatedSearches)},
2113 #endif // OS_ANDROID
2114 {"show-autofill-type-predictions",
2115 flag_descriptions::kShowAutofillTypePredictionsName,
2116 flag_descriptions::kShowAutofillTypePredictionsDescription, kOsAll,
2117 FEATURE_VALUE_TYPE(autofill::features::kAutofillShowTypePredictions)},
2118 {"smooth-scrolling", flag_descriptions::kSmoothScrollingName,
2119 flag_descriptions::kSmoothScrollingDescription,
2120 // Mac has a separate implementation with its own setting to disable.
2121 kOsLinux | kOsCrOS | kOsWin | kOsAndroid,
2122 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSmoothScrolling,
2123 switches::kDisableSmoothScrolling)},
2124 {"sms-receiver-cross-device",
2125 flag_descriptions::kSmsReceiverCrossDeviceName,
2126 flag_descriptions::kSmsReceiverCrossDeviceDescription, kOsAll,
2127 FEATURE_VALUE_TYPE(kSmsReceiverCrossDevice)},
2128 {"fractional-scroll-offsets",
2129 flag_descriptions::kFractionalScrollOffsetsName,
2130 flag_descriptions::kFractionalScrollOffsetsDescription, kOsAll,
2131 FEATURE_VALUE_TYPE(features::kFractionalScrollOffsets)},
2132 #if defined(USE_AURA)
2133 {"overlay-scrollbars", flag_descriptions::kOverlayScrollbarsName,
2134 flag_descriptions::kOverlayScrollbarsDescription,
2135 // Uses the system preference on Mac (a different implementation).
2136 // On Android, this is always enabled.
2137 kOsAura, FEATURE_VALUE_TYPE(features::kOverlayScrollbar)},
2138 {"overlay-scrollbars-flash-after-scroll-update",
2139 flag_descriptions::kOverlayScrollbarsFlashAfterAnyScrollUpdateName,
2140 flag_descriptions::kOverlayScrollbarsFlashAfterAnyScrollUpdateDescription,
2142 FEATURE_VALUE_TYPE(features::kOverlayScrollbarFlashAfterAnyScrollUpdate)},
2143 {"overlay-scrollbars-flash-when-mouse-enter",
2144 flag_descriptions::kOverlayScrollbarsFlashWhenMouseEnterName,
2145 flag_descriptions::kOverlayScrollbarsFlashWhenMouseEnterDescription,
2147 FEATURE_VALUE_TYPE(features::kOverlayScrollbarFlashWhenMouseEnter)},
2149 {"enable-quic", flag_descriptions::kQuicName,
2150 flag_descriptions::kQuicDescription, kOsAll,
2151 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuic, switches::kDisableQuic)},
2152 {"disable-javascript-harmony-shipping",
2153 flag_descriptions::kJavascriptHarmonyShippingName,
2154 flag_descriptions::kJavascriptHarmonyShippingDescription, kOsAll,
2155 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableJavaScriptHarmonyShipping)},
2156 {"enable-javascript-harmony", flag_descriptions::kJavascriptHarmonyName,
2157 flag_descriptions::kJavascriptHarmonyDescription, kOsAll,
2158 SINGLE_VALUE_TYPE(switches::kJavaScriptHarmony)},
2159 {"enable-experimental-webassembly-features",
2160 flag_descriptions::kExperimentalWebAssemblyFeaturesName,
2161 flag_descriptions::kExperimentalWebAssemblyFeaturesDescription, kOsAll,
2162 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebAssemblyFeatures)},
2163 {"enable-webassembly-baseline", flag_descriptions::kEnableWasmBaselineName,
2164 flag_descriptions::kEnableWasmBaselineDescription, kOsAll,
2165 FEATURE_VALUE_TYPE(features::kWebAssemblyBaseline)},
2166 {"enable-webassembly-lazy-compilation",
2167 flag_descriptions::kEnableWasmLazyCompilationName,
2168 flag_descriptions::kEnableWasmLazyCompilationDescription, kOsAll,
2169 FEATURE_VALUE_TYPE(features::kWebAssemblyLazyCompilation)},
2170 {"enable-webassembly-simd", flag_descriptions::kEnableWasmSimdName,
2171 flag_descriptions::kEnableWasmSimdDescription, kOsAll,
2172 FEATURE_VALUE_TYPE(features::kWebAssemblySimd)},
2173 {"enable-webassembly-threads", flag_descriptions::kEnableWasmThreadsName,
2174 flag_descriptions::kEnableWasmThreadsDescription, kOsAll,
2175 FEATURE_VALUE_TYPE(features::kWebAssemblyThreads)},
2176 {"enable-webassembly-tiering", flag_descriptions::kEnableWasmTieringName,
2177 flag_descriptions::kEnableWasmTieringDescription, kOsAll,
2178 FEATURE_VALUE_TYPE(features::kWebAssemblyTiering)},
2179 {"enable-future-v8-vm-features", flag_descriptions::kV8VmFutureName,
2180 flag_descriptions::kV8VmFutureDescription, kOsAll,
2181 FEATURE_VALUE_TYPE(features::kV8VmFuture)},
2182 {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
2183 flag_descriptions::kGpuRasterizationDescription, kOsAll,
2184 MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
2185 {"enable-oop-rasterization", flag_descriptions::kOopRasterizationName,
2186 flag_descriptions::kOopRasterizationDescription, kOsAll,
2187 MULTI_VALUE_TYPE(kEnableOopRasterizationChoices)},
2188 {"enable-oop-rasterization-ddl",
2189 flag_descriptions::kOopRasterizationDDLName,
2190 flag_descriptions::kOopRasterizationDDLDescription, kOsAll,
2191 FEATURE_VALUE_TYPE(features::kOopRasterizationDDL)},
2192 {"enable-experimental-web-platform-features",
2193 flag_descriptions::kExperimentalWebPlatformFeaturesName,
2194 flag_descriptions::kExperimentalWebPlatformFeaturesDescription, kOsAll,
2195 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebPlatformFeatures)},
2196 #if defined(OS_ANDROID)
2197 {"enable-app-notification-status-messaging",
2198 flag_descriptions::kAppNotificationStatusMessagingName,
2199 flag_descriptions::kAppNotificationStatusMessagingDescription, kOsAndroid,
2200 FEATURE_VALUE_TYPE(browser_ui::kAppNotificationStatusMessaging)},
2201 #endif // OS_ANDROID
2202 {"silent-debugger-extension-api",
2203 flag_descriptions::kSilentDebuggerExtensionApiName,
2204 flag_descriptions::kSilentDebuggerExtensionApiDescription, kOsDesktop,
2205 SINGLE_VALUE_TYPE(switches::kSilentDebuggerExtensionAPI)},
2206 #if BUILDFLAG(ENABLE_SPELLCHECK) && defined(OS_ANDROID)
2207 {"enable-android-spellchecker",
2208 flag_descriptions::kEnableAndroidSpellcheckerDescription,
2209 flag_descriptions::kEnableAndroidSpellcheckerDescription, kOsAndroid,
2210 FEATURE_VALUE_TYPE(spellcheck::kAndroidSpellCheckerNonLowEnd)},
2211 #endif // ENABLE_SPELLCHECK && OS_ANDROID
2212 {"top-chrome-touch-ui", flag_descriptions::kTopChromeTouchUiName,
2213 flag_descriptions::kTopChromeTouchUiDescription, kOsDesktop,
2214 MULTI_VALUE_TYPE(kTopChromeTouchUiChoices)},
2215 #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
2216 {"webui-tab-strip", flag_descriptions::kWebUITabStripName,
2217 flag_descriptions::kWebUITabStripDescription, kOsDesktop,
2218 FEATURE_VALUE_TYPE(features::kWebUITabStrip)},
2219 {"webui-tab-strip-demo-options",
2220 flag_descriptions::kWebUITabStripDemoOptionsName,
2221 flag_descriptions::kWebUITabStripDemoOptionsDescription, kOsDesktop,
2222 FEATURE_VALUE_TYPE(features::kWebUITabStripDemoOptions)},
2223 #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
2224 {"focus-mode", flag_descriptions::kFocusMode,
2225 flag_descriptions::kFocusModeDescription, kOsDesktop,
2226 FEATURE_VALUE_TYPE(features::kFocusMode)},
2227 {"touch-events", flag_descriptions::kTouchEventsName,
2228 flag_descriptions::kTouchEventsDescription, kOsDesktop,
2229 MULTI_VALUE_TYPE(kTouchEventFeatureDetectionChoices)},
2230 {"disable-touch-adjustment", flag_descriptions::kTouchAdjustmentName,
2231 flag_descriptions::kTouchAdjustmentDescription,
2232 kOsWin | kOsLinux | kOsCrOS | kOsAndroid,
2233 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableTouchAdjustment)},
2234 #if defined(OS_CHROMEOS)
2235 {"disable-explicit-dma-fences",
2236 flag_descriptions::kDisableExplicitDmaFencesName,
2237 flag_descriptions::kDisableExplicitDmaFencesDescription, kOsCrOS,
2238 SINGLE_VALUE_TYPE(switches::kDisableExplicitDmaFences)},
2239 // TODO(crbug.com/1012846): Remove this flag and provision when HDR is fully
2240 // supported on ChromeOS.
2241 {"use-hdr-transfer-function",
2242 flag_descriptions::kUseHDRTransferFunctionName,
2243 flag_descriptions::kUseHDRTransferFunctionDescription, kOsCrOS,
2244 FEATURE_VALUE_TYPE(display::features::kUseHDRTransferFunction)},
2245 #endif // OS_CHROMEOS
2246 #if defined(OS_CHROMEOS)
2247 {"ash-limit-alt-tab-to-active-desk",
2248 flag_descriptions::kLimitAltTabToActiveDeskName,
2249 flag_descriptions::kLimitAltTabToActiveDeskDescription, kOsCrOS,
2250 FEATURE_VALUE_TYPE(ash::features::kLimitAltTabToActiveDesk)},
2251 {"ash-limit-shelf-items-to-active-desk",
2252 flag_descriptions::kLimitShelfItemsToActiveDeskName,
2253 flag_descriptions::kLimitShelfItemsToActiveDeskDescription, kOsCrOS,
2254 FEATURE_VALUE_TYPE(ash::features::kPerDeskShelf)},
2255 {"ash-enable-unified-desktop",
2256 flag_descriptions::kAshEnableUnifiedDesktopName,
2257 flag_descriptions::kAshEnableUnifiedDesktopDescription, kOsCrOS,
2258 SINGLE_VALUE_TYPE(switches::kEnableUnifiedDesktop)},
2259 {"bluetooth-aggressive-appearance-filter",
2260 flag_descriptions::kBluetoothAggressiveAppearanceFilterName,
2261 flag_descriptions::kBluetoothAggressiveAppearanceFilterDescription,
2264 chromeos::features::kBluetoothAggressiveAppearanceFilter)},
2265 {"bluetooth-fix-a2dp-packet-size",
2266 flag_descriptions::kBluetoothFixA2dpPacketSizeName,
2267 flag_descriptions::kBluetoothFixA2dpPacketSizeDescription, kOsCrOS,
2268 FEATURE_VALUE_TYPE(chromeos::features::kBluetoothFixA2dpPacketSize)},
2269 {"bluetooth-next-handsfree-profile",
2270 flag_descriptions::kBluetoothNextHandsfreeProfileName,
2271 flag_descriptions::kBluetoothNextHandsfreeProfileDescription, kOsCrOS,
2272 FEATURE_VALUE_TYPE(chromeos::features::kBluetoothNextHandsfreeProfile)},
2273 {"cryptauth-v2-device-activity-status",
2274 flag_descriptions::kCryptAuthV2DeviceActivityStatusName,
2275 flag_descriptions::kCryptAuthV2DeviceActivityStatusDescription, kOsCrOS,
2276 FEATURE_VALUE_TYPE(chromeos::features::kCryptAuthV2DeviceActivityStatus)},
2277 {"cryptauth-v2-devicesync", flag_descriptions::kCryptAuthV2DeviceSyncName,
2278 flag_descriptions::kCryptAuthV2DeviceSyncDescription, kOsCrOS,
2279 FEATURE_VALUE_TYPE(chromeos::features::kCryptAuthV2DeviceSync)},
2280 {"cryptauth-v2-enrollment", flag_descriptions::kCryptAuthV2EnrollmentName,
2281 flag_descriptions::kCryptAuthV2EnrollmentDescription, kOsCrOS,
2282 FEATURE_VALUE_TYPE(chromeos::features::kCryptAuthV2Enrollment)},
2283 {"disable-cryptauth-v1-devicesync",
2284 flag_descriptions::kDisableCryptAuthV1DeviceSyncName,
2285 flag_descriptions::kDisableCryptAuthV1DeviceSyncDescription, kOsCrOS,
2286 FEATURE_VALUE_TYPE(chromeos::features::kDisableCryptAuthV1DeviceSync)},
2287 {"disable-office-editing-component-app",
2288 flag_descriptions::kDisableOfficeEditingComponentAppName,
2289 flag_descriptions::kDisableOfficeEditingComponentAppDescription, kOsCrOS,
2290 FEATURE_VALUE_TYPE(chromeos::features::kDisableOfficeEditingComponentApp)},
2291 {"updated_cellular_activation_ui",
2292 flag_descriptions::kUpdatedCellularActivationUiName,
2293 flag_descriptions::kUpdatedCellularActivationUiDescription, kOsCrOS,
2294 FEATURE_VALUE_TYPE(chromeos::features::kUpdatedCellularActivationUi)},
2295 {"use_messages_staging_url", flag_descriptions::kUseMessagesStagingUrlName,
2296 flag_descriptions::kUseMessagesStagingUrlDescription, kOsCrOS,
2297 FEATURE_VALUE_TYPE(chromeos::features::kUseMessagesStagingUrl)},
2298 {"use-custom-messages-domain",
2299 flag_descriptions::kUseCustomMessagesDomainName,
2300 flag_descriptions::kUseCustomMessagesDomainDescription, kOsCrOS,
2301 ORIGIN_LIST_VALUE_TYPE(switches::kCustomAndroidMessagesDomain, "")},
2302 {"disable-cancel-all-touches",
2303 flag_descriptions::kDisableCancelAllTouchesName,
2304 flag_descriptions::kDisableCancelAllTouchesDescription, kOsCrOS,
2305 SINGLE_VALUE_TYPE(switches::kDisableCancelAllTouches)},
2307 "enable-background-blur",
2308 flag_descriptions::kEnableBackgroundBlurName,
2309 flag_descriptions::kEnableBackgroundBlurDescription,
2311 FEATURE_VALUE_TYPE(ash::features::kEnableBackgroundBlur),
2313 {"enable-notification-indicator",
2314 flag_descriptions::kNotificationIndicatorName,
2315 flag_descriptions::kNotificationIndicatorDescription, kOsCrOS,
2316 FEATURE_VALUE_TYPE(features::kNotificationIndicator)},
2317 {"enable-app-list-search-autocomplete",
2318 flag_descriptions::kEnableAppListSearchAutocompleteName,
2319 flag_descriptions::kEnableAppListSearchAutocompleteDescription, kOsCrOS,
2320 FEATURE_VALUE_TYPE(app_list_features::kEnableAppListSearchAutocomplete)},
2321 {kLacrosSupportInternalName, flag_descriptions::kLacrosSupportName,
2322 flag_descriptions::kLacrosSupportDescription, kOsCrOS,
2323 FEATURE_VALUE_TYPE(chromeos::features::kLacrosSupport)},
2324 {"list-all-display-modes", flag_descriptions::kListAllDisplayModesName,
2325 flag_descriptions::kListAllDisplayModesDescription, kOsCrOS,
2326 FEATURE_VALUE_TYPE(display::features::kListAllDisplayModes)},
2327 {"instant-tethering", flag_descriptions::kTetherName,
2328 flag_descriptions::kTetherDescription, kOsCrOS,
2329 FEATURE_VALUE_TYPE(chromeos::features::kInstantTethering)},
2331 "new-shortcut-mapping",
2332 flag_descriptions::kEnableNewShortcutMappingName,
2333 flag_descriptions::kEnableNewShortcutMappingDescription,
2335 FEATURE_VALUE_TYPE(features::kNewShortcutMapping),
2337 {"shelf-hide-buttons-in-tablet",
2338 flag_descriptions::kHideShelfControlsInTabletModeName,
2339 flag_descriptions::kHideShelfControlsInTabletModeDescription, kOsCrOS,
2340 FEATURE_VALUE_TYPE(ash::features::kHideShelfControlsInTabletMode)},
2341 {"shelf-app-scaling", flag_descriptions::kShelfAppScalingName,
2342 flag_descriptions::kShelfAppScalingDescription, kOsCrOS,
2343 FEATURE_VALUE_TYPE(ash::features::kShelfAppScaling)},
2344 {"shelf-hotseat", flag_descriptions::kShelfHotseatName,
2345 flag_descriptions::kShelfHotseatDescription, kOsCrOS,
2346 FEATURE_VALUE_TYPE(chromeos::features::kShelfHotseat)},
2347 {"shelf-hover-previews", flag_descriptions::kShelfHoverPreviewsName,
2348 flag_descriptions::kShelfHoverPreviewsDescription, kOsCrOS,
2349 SINGLE_VALUE_TYPE(chromeos::switches::kShelfHoverPreviews)},
2350 {"show-bluetooth-debug-log-toggle",
2351 flag_descriptions::kShowBluetoothDebugLogToggleName,
2352 flag_descriptions::kShowBluetoothDebugLogToggleDescription, kOsCrOS,
2353 FEATURE_VALUE_TYPE(chromeos::features::kShowBluetoothDebugLogToggle)},
2354 {"show-bluetooth-device-battery",
2355 flag_descriptions::kShowBluetoothDeviceBatteryName,
2356 flag_descriptions::kShowBluetoothDeviceBatteryDescription, kOsCrOS,
2357 FEATURE_VALUE_TYPE(chromeos::features::kShowBluetoothDeviceBattery)},
2358 {"show-taps", flag_descriptions::kShowTapsName,
2359 flag_descriptions::kShowTapsDescription, kOsCrOS,
2360 SINGLE_VALUE_TYPE(ash::switches::kShowTaps)},
2361 {"show-touch-hud", flag_descriptions::kShowTouchHudName,
2362 flag_descriptions::kShowTouchHudDescription, kOsCrOS,
2363 SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud)},
2364 {"trim-on-memory-pressure", flag_descriptions::kTrimOnMemoryPressureName,
2365 flag_descriptions::kTrimOnMemoryPressureDescription, kOsCrOS,
2366 FEATURE_VALUE_TYPE(performance_manager::features::kTrimOnMemoryPressure)},
2367 {"system-tray-mic-gain", flag_descriptions::kSystemTrayMicGainName,
2368 flag_descriptions::kSystemTrayMicGainDescription, kOsCrOS,
2369 FEATURE_VALUE_TYPE(ash::features::kSystemTrayMicGainSetting)},
2370 #endif // OS_CHROMEOS
2372 "disable-accelerated-video-decode",
2373 flag_descriptions::kAcceleratedVideoDecodeName,
2374 flag_descriptions::kAcceleratedVideoDecodeDescription,
2375 kOsMac | kOsWin | kOsCrOS | kOsAndroid,
2376 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
2379 "disable-accelerated-video-encode",
2380 flag_descriptions::kAcceleratedVideoEncodeName,
2381 flag_descriptions::kAcceleratedVideoEncodeDescription,
2382 kOsMac | kOsWin | kOsCrOS | kOsAndroid,
2383 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoEncode),
2385 #if defined(OS_CHROMEOS)
2387 "zero-copy-video-capture",
2388 flag_descriptions::kZeroCopyVideoCaptureName,
2389 flag_descriptions::kZeroCopyVideoCaptureDescription,
2391 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
2392 switches::kVideoCaptureUseGpuMemoryBuffer,
2394 switches::kDisableVideoCaptureUseGpuMemoryBuffer,
2398 "ash-debug-shortcuts",
2399 flag_descriptions::kDebugShortcutsName,
2400 flag_descriptions::kDebugShortcutsDescription,
2402 SINGLE_VALUE_TYPE(ash::switches::kAshDebugShortcuts),
2404 {"ui-slow-animations", flag_descriptions::kUiSlowAnimationsName,
2405 flag_descriptions::kUiSlowAnimationsDescription, kOsCrOS,
2406 SINGLE_VALUE_TYPE(switches::kUISlowAnimations)},
2407 {"ui-show-composited-layer-borders",
2408 flag_descriptions::kUiShowCompositedLayerBordersName,
2409 flag_descriptions::kUiShowCompositedLayerBordersDescription, kOsCrOS,
2410 MULTI_VALUE_TYPE(kUiShowCompositedLayerBordersChoices)},
2411 {"enable-request-tablet-site", flag_descriptions::kRequestTabletSiteName,
2412 flag_descriptions::kRequestTabletSiteDescription, kOsCrOS,
2413 SINGLE_VALUE_TYPE(chromeos::switches::kEnableRequestTabletSite)},
2414 #endif // OS_CHROMEOS
2415 {"debug-packed-apps", flag_descriptions::kDebugPackedAppName,
2416 flag_descriptions::kDebugPackedAppDescription, kOsDesktop,
2417 SINGLE_VALUE_TYPE(switches::kDebugPackedApps)},
2418 {"use-lookalikes-for-navigation-suggestions",
2419 flag_descriptions::kUseLookalikesForNavigationSuggestionsName,
2420 flag_descriptions::kUseLookalikesForNavigationSuggestionsDescription,
2422 FEATURE_VALUE_TYPE(net::features::kUseLookalikesForNavigationSuggestions)},
2423 {"username-first-flow", flag_descriptions::kUsernameFirstFlowName,
2424 flag_descriptions::kUsernameFirstFlowDescription, kOsAll,
2425 FEATURE_VALUE_TYPE(password_manager::features::kUsernameFirstFlow)},
2426 {"enable-show-autofill-signatures",
2427 flag_descriptions::kShowAutofillSignaturesName,
2428 flag_descriptions::kShowAutofillSignaturesDescription, kOsAll,
2429 SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillSignatures)},
2430 {"wallet-service-use-sandbox",
2431 flag_descriptions::kWalletServiceUseSandboxName,
2432 flag_descriptions::kWalletServiceUseSandboxDescription,
2433 kOsAndroid | kOsDesktop,
2434 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
2435 autofill::switches::kWalletServiceUseSandbox,
2437 autofill::switches::kWalletServiceUseSandbox,
2439 {"enable-web-bluetooth-new-permissions-backend",
2440 flag_descriptions::kWebBluetoothNewPermissionsBackendName,
2441 flag_descriptions::kWebBluetoothNewPermissionsBackendDescription,
2442 kOsAndroid | kOsDesktop,
2443 FEATURE_VALUE_TYPE(features::kWebBluetoothNewPermissionsBackend)},
2444 #if defined(USE_AURA) || defined(OS_ANDROID)
2445 {"overscroll-history-navigation",
2446 flag_descriptions::kOverscrollHistoryNavigationName,
2447 flag_descriptions::kOverscrollHistoryNavigationDescription,
2448 kOsAura | kOsAndroid,
2449 #if defined(OS_ANDROID)
2450 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kOverscrollHistoryNavigation,
2451 kOverscrollHistoryNavigationVariations,
2452 "OverscrollNavigation")},
2454 FEATURE_VALUE_TYPE(features::kOverscrollHistoryNavigation)},
2455 {"pull-to-refresh", flag_descriptions::kPullToRefreshName,
2456 flag_descriptions::kPullToRefreshDescription, kOsAura,
2457 MULTI_VALUE_TYPE(kPullToRefreshChoices)},
2458 #endif // OS_ANDROID
2459 #endif // USE_AURA || OS_ANDROID
2460 {"enable-touch-drag-drop", flag_descriptions::kTouchDragDropName,
2461 flag_descriptions::kTouchDragDropDescription, kOsWin | kOsCrOS,
2462 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchDragDrop,
2463 switches::kDisableTouchDragDrop)},
2464 {"touch-selection-strategy", flag_descriptions::kTouchSelectionStrategyName,
2465 flag_descriptions::kTouchSelectionStrategyDescription,
2466 kOsAndroid, // TODO(mfomitchev): Add CrOS/Win/Linux support soon.
2467 MULTI_VALUE_TYPE(kTouchTextSelectionStrategyChoices)},
2468 {"trace-upload-url", flag_descriptions::kTraceUploadUrlName,
2469 flag_descriptions::kTraceUploadUrlDescription, kOsAll,
2470 MULTI_VALUE_TYPE(kTraceUploadURL)},
2471 {"enable-suggestions-with-substring-match",
2472 flag_descriptions::kSuggestionsWithSubStringMatchName,
2473 flag_descriptions::kSuggestionsWithSubStringMatchDescription, kOsAll,
2474 FEATURE_VALUE_TYPE(autofill::features::kAutofillTokenPrefixMatching)},
2475 {"enable-offer-store-unmasked-wallet-cards",
2476 flag_descriptions::kOfferStoreUnmaskedWalletCardsName,
2477 flag_descriptions::kOfferStoreUnmaskedWalletCardsDescription, kOsAll,
2478 ENABLE_DISABLE_VALUE_TYPE(
2479 autofill::switches::kEnableOfferStoreUnmaskedWalletCards,
2480 autofill::switches::kDisableOfferStoreUnmaskedWalletCards)},
2481 #if defined(OS_CHROMEOS)
2482 {"enable-virtual-keyboard", flag_descriptions::kVirtualKeyboardName,
2483 flag_descriptions::kVirtualKeyboardDescription, kOsCrOS,
2484 SINGLE_VALUE_TYPE(keyboard::switches::kEnableVirtualKeyboard)},
2485 #endif // OS_CHROMEOS
2486 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY)
2487 {"device-discovery-notifications",
2488 flag_descriptions::kDeviceDiscoveryNotificationsName,
2489 flag_descriptions::kDeviceDiscoveryNotificationsDescription, kOsDesktop,
2490 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableDeviceDiscoveryNotifications,
2491 switches::kDisableDeviceDiscoveryNotifications)},
2492 #endif // BUILDFLAG(ENABLE_SERVICE_DISCOVERY)
2494 {"enable-cloud-print-xps", flag_descriptions::kCloudPrintXpsName,
2495 flag_descriptions::kCloudPrintXpsDescription, kOsWin,
2496 SINGLE_VALUE_TYPE(switches::kEnableCloudPrintXps)},
2498 #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
2499 {"enable-webgl2-compute-context",
2500 flag_descriptions::kWebGL2ComputeContextName,
2501 flag_descriptions::kWebGL2ComputeContextDescription,
2502 kOsWin | kOsLinux | kOsCrOS,
2503 SINGLE_VALUE_TYPE(switches::kEnableWebGL2ComputeContext)},
2504 #endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
2505 {"enable-webgl-draft-extensions",
2506 flag_descriptions::kWebglDraftExtensionsName,
2507 flag_descriptions::kWebglDraftExtensionsDescription, kOsAll,
2508 SINGLE_VALUE_TYPE(switches::kEnableWebGLDraftExtensions)},
2509 #if defined(OS_ANDROID)
2510 {"enable-android-autofill-accessibility",
2511 flag_descriptions::kAndroidAutofillAccessibilityName,
2512 flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
2513 FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
2514 #endif // OS_ANDROID
2515 {"enable-zero-copy", flag_descriptions::kZeroCopyName,
2516 flag_descriptions::kZeroCopyDescription, kOsAll,
2517 ENABLE_DISABLE_VALUE_TYPE(blink::switches::kEnableZeroCopy,
2518 blink::switches::kDisableZeroCopy)},
2519 {"enable-vulkan", flag_descriptions::kEnableVulkanName,
2520 flag_descriptions::kEnableVulkanDescription,
2521 kOsWin | kOsLinux | kOsAndroid, FEATURE_VALUE_TYPE(features::kVulkan)},
2522 #if defined(OS_MACOSX)
2523 {"disable-hosted-app-shim-creation",
2524 flag_descriptions::kHostedAppShimCreationName,
2525 flag_descriptions::kHostedAppShimCreationDescription, kOsMac,
2526 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableHostedAppShimCreation)},
2527 {"enable-hosted-app-quit-notification",
2528 flag_descriptions::kHostedAppQuitNotificationName,
2529 flag_descriptions::kHostedAppQuitNotificationDescription, kOsMac,
2530 SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
2532 #if defined(OS_ANDROID)
2533 {"translate-force-trigger-on-english",
2534 flag_descriptions::kTranslateForceTriggerOnEnglishName,
2535 flag_descriptions::kTranslateForceTriggerOnEnglishDescription, kOsAndroid,
2536 FEATURE_WITH_PARAMS_VALUE_TYPE(language::kOverrideTranslateTriggerInIndia,
2537 kTranslateForceTriggerOnEnglishVariations,
2538 "OverrideTranslateTriggerInIndia")},
2539 #endif // OS_ANDROID
2541 #if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) && !defined(OS_CHROMEOS)
2542 {"enable-native-notifications",
2543 flag_descriptions::kNotificationsNativeFlagName,
2544 flag_descriptions::kNotificationsNativeFlagDescription,
2545 kOsMac | kOsLinux | kOsWin,
2546 FEATURE_VALUE_TYPE(features::kNativeNotifications)},
2547 #endif // ENABLE_NATIVE_NOTIFICATIONS
2548 #if defined(OS_ANDROID)
2549 {"reader-mode-heuristics", flag_descriptions::kReaderModeHeuristicsName,
2550 flag_descriptions::kReaderModeHeuristicsDescription, kOsAndroid,
2551 MULTI_VALUE_TYPE(kReaderModeHeuristicsChoices)},
2552 #endif // OS_ANDROID
2553 #if defined(OS_ANDROID)
2554 {"enable-chrome-duet", flag_descriptions::kChromeDuetName,
2555 flag_descriptions::kChromeDuetDescription, kOsAndroid,
2556 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kChromeDuetFeature,
2557 kChromeDuetVariations,
2559 {"enable-chrome-duet-labels", flag_descriptions::kChromeDuetLabelsName,
2560 flag_descriptions::kChromeDuetLabelsDescription, kOsAndroid,
2561 FEATURE_VALUE_TYPE(chrome::android::kChromeDuetLabeled)},
2562 {"share-button-in-top-toolbar",
2563 flag_descriptions::kShareButtonInTopToolbarName,
2564 flag_descriptions::kShareButtonInTopToolbarDescription, kOsAndroid,
2565 FEATURE_VALUE_TYPE(chrome::android::kShareButtonInTopToolbar)},
2566 {"chrome-share-qr-code", flag_descriptions::kChromeShareQRCodeName,
2567 flag_descriptions::kChromeShareQRCodeDescription, kOsAndroid,
2568 FEATURE_VALUE_TYPE(chrome::android::kChromeShareQRCode)},
2569 {"chrome-share-screenshot", flag_descriptions::kChromeShareScreenshotName,
2570 flag_descriptions::kChromeShareScreenshotDescription, kOsAndroid,
2571 FEATURE_VALUE_TYPE(chrome::android::kChromeShareScreenshot)},
2572 {"chrome-sharing-hub", flag_descriptions::kChromeSharingHubName,
2573 flag_descriptions::kChromeSharingHubDescription, kOsAndroid,
2574 FEATURE_VALUE_TYPE(chrome::android::kChromeSharingHub)},
2575 {"chrome-sharing-hub-v1-5", flag_descriptions::kChromeSharingHubV15Name,
2576 flag_descriptions::kChromeSharingHubV15Description, kOsAndroid,
2577 FEATURE_VALUE_TYPE(chrome::android::kChromeSharingHubV15)},
2578 {"request-unbuffered-dispatch",
2579 flag_descriptions::kRequestUnbufferedDispatchName,
2580 flag_descriptions::kRequestUnbufferedDispatchDescription, kOsAndroid,
2581 FEATURE_VALUE_TYPE(features::kRequestUnbufferedDispatch)},
2582 #endif // OS_ANDROID
2583 {"in-product-help-demo-mode-choice",
2584 flag_descriptions::kInProductHelpDemoModeChoiceName,
2585 flag_descriptions::kInProductHelpDemoModeChoiceDescription, kOsAll,
2586 FEATURE_WITH_PARAMS_VALUE_TYPE(
2587 feature_engagement::kIPHDemoMode,
2588 feature_engagement::kIPHDemoModeChoiceVariations,
2590 {"disable-threaded-scrolling", flag_descriptions::kThreadedScrollingName,
2591 flag_descriptions::kThreadedScrollingDescription, kOsAll,
2592 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableThreadedScrolling)},
2593 {"extension-content-verification",
2594 flag_descriptions::kExtensionContentVerificationName,
2595 flag_descriptions::kExtensionContentVerificationDescription, kOsDesktop,
2596 MULTI_VALUE_TYPE(kExtensionContentVerificationChoices)},
2597 #if defined(OS_CHROMEOS)
2598 {"enable-lock-screen-notification",
2599 flag_descriptions::kLockScreenNotificationName,
2600 flag_descriptions::kLockScreenNotificationDescription, kOsCrOS,
2601 FEATURE_VALUE_TYPE(ash::features::kLockScreenNotifications)},
2602 #endif // OS_CHROMEOS
2603 {"reduced-referrer-granularity",
2604 flag_descriptions::kReducedReferrerGranularityName,
2605 flag_descriptions::kReducedReferrerGranularityDescription, kOsAll,
2606 FEATURE_VALUE_TYPE(features::kReducedReferrerGranularity)},
2607 #if defined(OS_CHROMEOS)
2608 {"crostini-port-forwarding", flag_descriptions::kCrostiniPortForwardingName,
2609 flag_descriptions::kCrostiniPortForwardingDescription, kOsCrOS,
2610 FEATURE_VALUE_TYPE(chromeos::features::kCrostiniPortForwarding)},
2611 {"crostini-show-mic-setting",
2612 flag_descriptions::kCrostiniShowMicSettingName,
2613 flag_descriptions::kCrostiniShowMicSettingDescription, kOsCrOS,
2614 FEATURE_VALUE_TYPE(chromeos::features::kCrostiniShowMicSetting)},
2615 {"terminal-system-app", flag_descriptions::kTerminalSystemAppName,
2616 flag_descriptions::kTerminalSystemAppDescription, kOsCrOS,
2617 FEATURE_VALUE_TYPE(features::kTerminalSystemApp)},
2618 {"terminal-system-app-legacy-settings",
2619 flag_descriptions::kTerminalSystemAppLegacySettingsName,
2620 flag_descriptions::kTerminalSystemAppLegacySettingsDescription, kOsCrOS,
2621 FEATURE_VALUE_TYPE(features::kTerminalSystemAppLegacySettings)},
2622 {"pluginvm-show-camera-permissions",
2623 flag_descriptions::kPluginVmShowCameraPermissionsName,
2624 flag_descriptions::kPluginVmShowCameraPermissionsDescription, kOsCrOS,
2625 FEATURE_VALUE_TYPE(chromeos::features::kPluginVmShowCameraPermissions)},
2626 {"pluginvm-show-microphone-permissions",
2627 flag_descriptions::kPluginVmShowMicrophonePermissionsName,
2628 flag_descriptions::kPluginVmShowMicrophonePermissionsDescription, kOsCrOS,
2630 chromeos::features::kPluginVmShowMicrophonePermissions)},
2631 #if BUILDFLAG(USE_TCMALLOC)
2632 {"dynamic-tcmalloc-tuning", flag_descriptions::kDynamicTcmallocName,
2633 flag_descriptions::kDynamicTcmallocDescription, kOsCrOS,
2634 FEATURE_VALUE_TYPE(performance_manager::features::kDynamicTcmallocTuning)},
2635 #endif // BUILDFLAG(USE_TCMALLOC)
2636 #endif // OS_CHROMEOS
2637 #if defined(OS_ANDROID)
2638 {"enable-credit-card-assist", flag_descriptions::kCreditCardAssistName,
2639 flag_descriptions::kCreditCardAssistDescription, kOsAndroid,
2640 FEATURE_VALUE_TYPE(autofill::features::kAutofillCreditCardAssist)},
2641 #endif // OS_ANDROID
2642 #if defined(OS_ANDROID)
2643 {"enable-site-isolation-for-password-sites",
2644 flag_descriptions::kSiteIsolationForPasswordSitesName,
2645 flag_descriptions::kSiteIsolationForPasswordSitesDescription, kOsAndroid,
2647 site_isolation::features::kSiteIsolationForPasswordSites)},
2648 {"enable-site-per-process", flag_descriptions::kStrictSiteIsolationName,
2649 flag_descriptions::kStrictSiteIsolationDescription, kOsAndroid,
2650 SINGLE_VALUE_TYPE(switches::kSitePerProcess)},
2651 {"enable-process-sharing-with-default-site-instances",
2652 flag_descriptions::kProcessSharingWithDefaultSiteInstancesName,
2653 flag_descriptions::kProcessSharingWithDefaultSiteInstancesDescription,
2655 FEATURE_VALUE_TYPE(features::kProcessSharingWithDefaultSiteInstances)},
2656 {"enable-process-sharing-with-strict-site-instances",
2657 flag_descriptions::kProcessSharingWithStrictSiteInstancesName,
2658 flag_descriptions::kProcessSharingWithStrictSiteInstancesDescription,
2660 FEATURE_VALUE_TYPE(features::kProcessSharingWithStrictSiteInstances)},
2662 {"isolate-origins", flag_descriptions::kIsolateOriginsName,
2663 flag_descriptions::kIsolateOriginsDescription, kOsAll,
2664 ORIGIN_LIST_VALUE_TYPE(switches::kIsolateOrigins, "")},
2665 {"site-isolation-trial-opt-out",
2666 flag_descriptions::kSiteIsolationOptOutName,
2667 flag_descriptions::kSiteIsolationOptOutDescription, kOsAll,
2668 MULTI_VALUE_TYPE(kSiteIsolationOptOutChoices)},
2669 {"enable-use-zoom-for-dsf", flag_descriptions::kEnableUseZoomForDsfName,
2670 flag_descriptions::kEnableUseZoomForDsfDescription, kOsAll,
2671 MULTI_VALUE_TYPE(kEnableUseZoomForDSFChoices)},
2672 {"allow-previews", flag_descriptions::kPreviewsAllowedName,
2673 flag_descriptions::kPreviewsAllowedDescription, kOsAll,
2674 FEATURE_VALUE_TYPE(previews::features::kPreviews)},
2675 {"ignore-previews-blocklist",
2676 flag_descriptions::kIgnorePreviewsBlocklistName,
2677 flag_descriptions::kIgnorePreviewsBlocklistDescription, kOsAll,
2678 SINGLE_VALUE_TYPE(previews::switches::kIgnorePreviewsBlocklist)},
2679 {"enable-data-reduction-proxy-server-experiment",
2680 flag_descriptions::kEnableDataReductionProxyServerExperimentName,
2681 flag_descriptions::kEnableDataReductionProxyServerExperimentDescription,
2682 kOsAll, MULTI_VALUE_TYPE(kDataReductionProxyServerExperiment)},
2683 {"enable-subresource-redirect",
2684 flag_descriptions::kEnableSubresourceRedirectName,
2685 flag_descriptions::kEnableSubresourceRedirectDescription, kOsAll,
2686 FEATURE_VALUE_TYPE(blink::features::kSubresourceRedirect)},
2687 #if defined(OS_ANDROID)
2688 {"enable-offline-previews", flag_descriptions::kEnableOfflinePreviewsName,
2689 flag_descriptions::kEnableOfflinePreviewsDescription, kOsAndroid,
2690 FEATURE_VALUE_TYPE(previews::features::kOfflinePreviews)},
2691 #endif // OS_ANDROID
2692 #if defined(OS_CHROMEOS) || defined(OS_LINUX)
2693 {"enable-save-data", flag_descriptions::kEnableSaveDataName,
2694 flag_descriptions::kEnableSaveDataDescription, kOsCrOS | kOsLinux,
2696 data_reduction_proxy::switches::kEnableDataReductionProxy)},
2697 {"enable-navigation-predictor",
2698 flag_descriptions::kEnableNavigationPredictorName,
2699 flag_descriptions::kEnableNavigationPredictorDescription,
2701 FEATURE_VALUE_TYPE(blink::features::kNavigationPredictor)},
2702 #endif // OS_CHROMEOS || OS_LINUX
2703 {"enable-preconnect-to-search",
2704 flag_descriptions::kEnablePreconnectToSearchName,
2705 flag_descriptions::kEnablePreconnectToSearchDescription, kOsAll,
2706 FEATURE_VALUE_TYPE(features::kPreconnectToSearch)},
2707 {"enable-noscript-previews", flag_descriptions::kEnableNoScriptPreviewsName,
2708 flag_descriptions::kEnableNoScriptPreviewsDescription, kOsAll,
2709 FEATURE_VALUE_TYPE(previews::features::kNoScriptPreviews)},
2710 {"enable-resource-loading-hints",
2711 flag_descriptions::kEnableResourceLoadingHintsName,
2712 flag_descriptions::kEnableResourceLoadingHintsDescription, kOsAll,
2713 FEATURE_VALUE_TYPE(previews::features::kResourceLoadingHints)},
2714 {"enable-previews-coin-flip",
2715 flag_descriptions::kEnablePreviewsCoinFlipName,
2716 flag_descriptions::kEnablePreviewsCoinFlipDescription, kOsAll,
2717 FEATURE_VALUE_TYPE(previews::features::kCoinFlipHoldback)},
2718 {"enable-google-srp-isolated-prerender-probing",
2719 flag_descriptions::kEnableSRPIsolatedPrerenderProbingName,
2720 flag_descriptions::kEnableSRPIsolatedPrerenderProbingDescription, kOsAll,
2721 FEATURE_VALUE_TYPE(features::kIsolatePrerendersMustProbeOrigin)},
2722 {"enable-google-srp-isolated-prerenders",
2723 flag_descriptions::kEnableSRPIsolatedPrerendersName,
2724 flag_descriptions::kEnableSRPIsolatedPrerendersDescription, kOsAll,
2725 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kIsolatePrerenders,
2726 kIsolatedPrerenderFeatureWithPrefetchLimit,
2728 {"enable-google-srp-isolated-prerender-nsp",
2729 flag_descriptions::kEnableSRPIsolatedPrerendersNSPName,
2730 flag_descriptions::kEnableSRPIsolatedPrerendersNSPDescription, kOsAll,
2731 SINGLE_VALUE_TYPE(kIsolatedPrerenderEnableNSPCmdLineFlag)},
2732 {"allow-insecure-localhost", flag_descriptions::kAllowInsecureLocalhostName,
2733 flag_descriptions::kAllowInsecureLocalhostDescription, kOsAll,
2734 SINGLE_VALUE_TYPE(switches::kAllowInsecureLocalhost)},
2735 {"bypass-app-banner-engagement-checks",
2736 flag_descriptions::kBypassAppBannerEngagementChecksName,
2737 flag_descriptions::kBypassAppBannerEngagementChecksDescription, kOsAll,
2738 SINGLE_VALUE_TYPE(switches::kBypassAppBannerEngagementChecks)},
2739 {"enable-desktop-pwas-local-updating",
2740 flag_descriptions::kDesktopPWAsLocalUpdatingName,
2741 flag_descriptions::kDesktopPWAsLocalUpdatingDescription, kOsDesktop,
2742 FEATURE_VALUE_TYPE(features::kDesktopPWAsLocalUpdating)},
2743 // TODO(https://crbug.com/1069293): Add macOS and Linux implementations.
2744 {"enable-desktop-pwas-app-icon-shortcuts-menu",
2745 flag_descriptions::kDesktopPWAsAppIconShortcutsMenuName,
2746 flag_descriptions::kDesktopPWAsAppIconShortcutsMenuDescription, kOsWin,
2747 FEATURE_VALUE_TYPE(features::kDesktopPWAsAppIconShortcutsMenu)},
2748 {"enable-desktop-pwas-tab-strip",
2749 flag_descriptions::kDesktopPWAsTabStripName,
2750 flag_descriptions::kDesktopPWAsTabStripDescription, kOsDesktop,
2751 FEATURE_VALUE_TYPE(features::kDesktopPWAsTabStrip)},
2752 {"enable-desktop-pwas-tab-strip-link-capturing",
2753 flag_descriptions::kDesktopPWAsTabStripLinkCapturingName,
2754 flag_descriptions::kDesktopPWAsTabStripLinkCapturingDescription,
2756 FEATURE_VALUE_TYPE(features::kDesktopPWAsTabStripLinkCapturing)},
2757 {"enable-desktop-pwas-without-extensions",
2758 flag_descriptions::kDesktopPWAsWithoutExtensionsName,
2759 flag_descriptions::kDesktopPWAsWithoutExtensionsDescription, kOsDesktop,
2760 FEATURE_VALUE_TYPE(features::kDesktopPWAsWithoutExtensions)},
2761 {"enable-desktop-pwas-run-on-os-login",
2762 flag_descriptions::kDesktopPWAsRunOnOsLoginName,
2763 flag_descriptions::kDesktopPWAsRunOnOsLoginDescription, kOsDesktop,
2764 FEATURE_VALUE_TYPE(features::kDesktopPWAsRunOnOsLogin)},
2765 {"enable-system-webapps", flag_descriptions::kEnableSystemWebAppsName,
2766 flag_descriptions::kEnableSystemWebAppsDescription, kOsDesktop,
2767 FEATURE_VALUE_TYPE(features::kSystemWebApps)},
2768 {"use-sync-sandbox", flag_descriptions::kSyncSandboxName,
2769 flag_descriptions::kSyncSandboxDescription, kOsAll,
2770 SINGLE_VALUE_TYPE_AND_VALUE(
2771 switches::kSyncServiceURL,
2772 "https://chrome-sync.sandbox.google.com/chrome-sync/alpha")},
2773 #if !defined(OS_ANDROID)
2774 {"load-media-router-component-extension",
2775 flag_descriptions::kLoadMediaRouterComponentExtensionName,
2776 flag_descriptions::kLoadMediaRouterComponentExtensionDescription,
2778 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
2779 switches::kLoadMediaRouterComponentExtension,
2781 switches::kLoadMediaRouterComponentExtension,
2783 {"media-router-cast-allow-all-ips",
2784 flag_descriptions::kMediaRouterCastAllowAllIPsName,
2785 flag_descriptions::kMediaRouterCastAllowAllIPsDescription, kOsDesktop,
2786 FEATURE_VALUE_TYPE(media_router::kCastAllowAllIPsFeature)},
2787 {"cast-media-route-provider",
2788 flag_descriptions::kCastMediaRouteProviderName,
2789 flag_descriptions::kCastMediaRouteProviderDescription, kOsDesktop,
2790 FEATURE_VALUE_TYPE(media_router::kCastMediaRouteProvider)},
2791 #endif // !OS_ANDROID
2792 #if defined(OS_ANDROID)
2793 {"autofill-keyboard-accessory-view",
2794 flag_descriptions::kAutofillAccessoryViewName,
2795 flag_descriptions::kAutofillAccessoryViewDescription, kOsAndroid,
2796 FEATURE_WITH_PARAMS_VALUE_TYPE(
2797 autofill::features::kAutofillKeyboardAccessory,
2798 kAutofillKeyboardAccessoryFeatureVariations,
2799 "AutofillKeyboardAccessoryVariations")},
2800 #endif // OS_ANDROID
2802 {"try-supported-channel-layouts",
2803 flag_descriptions::kTrySupportedChannelLayoutsName,
2804 flag_descriptions::kTrySupportedChannelLayoutsDescription, kOsWin,
2805 SINGLE_VALUE_TYPE(switches::kTrySupportedChannelLayouts)},
2807 #if defined(OS_MACOSX)
2808 {"mac-syscall-sandbox", flag_descriptions::kMacSyscallSandboxName,
2809 flag_descriptions::kMacSyscallSandboxDescription, kOsMac,
2810 FEATURE_VALUE_TYPE(features::kMacSyscallSandbox)},
2811 {"mac-v2-gpu-sandbox", flag_descriptions::kMacV2GPUSandboxName,
2812 flag_descriptions::kMacV2GPUSandboxDescription, kOsMac,
2813 FEATURE_VALUE_TYPE(features::kMacV2GPUSandbox)},
2815 #if BUILDFLAG(ENABLE_VR)
2816 {"webxr-incubations", flag_descriptions::kWebXrIncubationsName,
2817 flag_descriptions::kWebXrIncubationsDescription, kOsAll,
2818 FEATURE_VALUE_TYPE(features::kWebXrIncubations)},
2819 {"webxr-multi-gpu", flag_descriptions::kWebXrMultiGpuName,
2820 flag_descriptions::kWebXrMultiGpuDescription, kOsDesktop,
2821 FEATURE_VALUE_TYPE(blink::features::kWebXrMultiGpu)},
2822 {"webxr-runtime", flag_descriptions::kWebXrForceRuntimeName,
2823 flag_descriptions::kWebXrForceRuntimeDescription, kOsDesktop,
2824 MULTI_VALUE_TYPE(kWebXrForceRuntimeChoices)},
2826 #if defined(OS_CHROMEOS)
2827 {"disable-accelerated-mjpeg-decode",
2828 flag_descriptions::kAcceleratedMjpegDecodeName,
2829 flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS,
2830 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
2831 #endif // OS_CHROMEOS
2832 {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName,
2833 flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop,
2834 FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)},
2835 #if defined(OS_ANDROID)
2836 {"offline-pages-load-signal-collecting",
2837 flag_descriptions::kOfflinePagesLoadSignalCollectingName,
2838 flag_descriptions::kOfflinePagesLoadSignalCollectingDescription,
2841 offline_pages::kOfflinePagesLoadSignalCollectingFeature)},
2842 {"offline-pages-live-page-sharing",
2843 flag_descriptions::kOfflinePagesLivePageSharingName,
2844 flag_descriptions::kOfflinePagesLivePageSharingDescription, kOsAndroid,
2845 FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesLivePageSharingFeature)},
2846 {"offline-pages-prefetching",
2847 flag_descriptions::kOfflinePagesPrefetchingName,
2848 flag_descriptions::kOfflinePagesPrefetchingDescription, kOsAndroid,
2849 FEATURE_VALUE_TYPE(offline_pages::kPrefetchingOfflinePagesFeature)},
2850 {"offline-pages-failed-download",
2851 flag_descriptions::kOfflinePagesDescriptiveFailStatusName,
2852 flag_descriptions::kOfflinePagesDescriptiveFailStatusDescription,
2855 offline_pages::kOfflinePagesDescriptiveFailStatusFeature)},
2856 {"offline-pages-pending-download",
2857 flag_descriptions::kOfflinePagesDescriptivePendingStatusName,
2858 flag_descriptions::kOfflinePagesDescriptivePendingStatusDescription,
2861 offline_pages::kOfflinePagesDescriptivePendingStatusFeature)},
2862 {"offline-pages-resource-based-snapshot",
2863 flag_descriptions::kOfflinePagesResourceBasedSnapshotName,
2864 flag_descriptions::kOfflinePagesResourceBasedSnapshotDescription,
2867 offline_pages::kOfflinePagesResourceBasedSnapshotFeature)},
2868 {"offline-pages-renovations",
2869 flag_descriptions::kOfflinePagesRenovationsName,
2870 flag_descriptions::kOfflinePagesRenovationsDescription, kOsAndroid,
2871 FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesRenovationsFeature)},
2872 {"offline-pages-in-downloads-home-open-in-cct",
2873 flag_descriptions::kOfflinePagesInDownloadHomeOpenInCctName,
2874 flag_descriptions::kOfflinePagesInDownloadHomeOpenInCctDescription,
2877 offline_pages::kOfflinePagesInDownloadHomeOpenInCctFeature)},
2878 {"offline-pages-alternate-dino-page",
2879 flag_descriptions::kOfflinePagesShowAlternateDinoPageName,
2880 flag_descriptions::kOfflinePagesShowAlternateDinoPageDescription,
2883 offline_pages::kOfflinePagesShowAlternateDinoPageFeature)},
2884 {"offline-indicator-choice", flag_descriptions::kOfflineIndicatorChoiceName,
2885 flag_descriptions::kOfflineIndicatorChoiceDescription, kOsAndroid,
2886 FEATURE_WITH_PARAMS_VALUE_TYPE(offline_pages::kOfflineIndicatorFeature,
2887 kOfflineIndicatorFeatureVariations,
2888 "OfflineIndicator")},
2889 {"offline-indicator-always-http-probe",
2890 flag_descriptions::kOfflineIndicatorAlwaysHttpProbeName,
2891 flag_descriptions::kOfflineIndicatorAlwaysHttpProbeDescription, kOsAndroid,
2893 offline_pages::kOfflineIndicatorAlwaysHttpProbeFeature)},
2894 {"content-indexing-download-home",
2895 flag_descriptions::kContentIndexingDownloadHomeName,
2896 flag_descriptions::kContentIndexingDownloadHomeDescription, kOsAndroid,
2897 FEATURE_VALUE_TYPE(chrome::android::kContentIndexingDownloadHome)},
2898 {"content-indexing-ntp", flag_descriptions::kContentIndexingNTPName,
2899 flag_descriptions::kContentIndexingNTPDescription, kOsAndroid,
2900 FEATURE_VALUE_TYPE(chrome::android::kContentIndexingNTP)},
2901 {"offline-indicator-v2", flag_descriptions::kOfflineIndicatorV2Name,
2902 flag_descriptions::kOfflineIndicatorV2Description, kOsAndroid,
2903 FEATURE_VALUE_TYPE(chrome::android::kOfflineIndicatorV2)},
2904 {"on-the-fly-mhtml-hash-computation",
2905 flag_descriptions::kOnTheFlyMhtmlHashComputationName,
2906 flag_descriptions::kOnTheFlyMhtmlHashComputationDescription, kOsAndroid,
2907 FEATURE_VALUE_TYPE(offline_pages::kOnTheFlyMhtmlHashComputationFeature)},
2908 {"query-tiles", flag_descriptions::kQueryTilesName,
2909 flag_descriptions::kQueryTilesDescription, kOsAndroid,
2910 FEATURE_VALUE_TYPE(query_tiles::features::kQueryTiles)},
2911 {"query-tiles-omnibox", flag_descriptions::kQueryTilesOmniboxName,
2912 flag_descriptions::kQueryTilesOmniboxDescription, kOsAndroid,
2913 FEATURE_VALUE_TYPE(query_tiles::features::kQueryTilesInOmnibox)},
2914 {"query-tiles-single-tier", flag_descriptions::kQueryTilesSingleTierName,
2915 flag_descriptions::kQueryTilesSingleTierDescription, kOsAndroid,
2916 SINGLE_VALUE_TYPE(query_tiles::switches::kQueryTilesSingleTier)},
2917 {"query-tiles-enable-query-editing",
2918 flag_descriptions::kQueryTilesEnableQueryEditingName,
2919 flag_descriptions::kQueryTilesEnableQueryEditingDescription, kOsAndroid,
2920 FEATURE_VALUE_TYPE(query_tiles::features::kQueryTilesEnableQueryEditing)},
2921 {"query-tiles-country-code", flag_descriptions::kQueryTilesCountryCode,
2922 flag_descriptions::kQueryTilesCountryCodeDescription, kOsAndroid,
2923 MULTI_VALUE_TYPE(kQueryTilesCountryChoices)},
2924 {"query-tiles-instant-fetch",
2925 flag_descriptions::kQueryTilesInstantFetchName,
2926 flag_descriptions::kQueryTilesInstantFetchDescription, kOsAndroid,
2928 query_tiles::switches::kQueryTilesInstantBackgroundTask)},
2929 {"android-picture-in-picture-api",
2930 flag_descriptions::kAndroidPictureInPictureAPIName,
2931 flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid,
2932 FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)},
2933 {"reengagement-notification",
2934 flag_descriptions::kReengagementNotificationName,
2935 flag_descriptions::kReengagementNotificationDescription, kOsAndroid,
2936 FEATURE_VALUE_TYPE(chrome::android::kReengagementNotification)},
2937 #endif // OS_ANDROID
2938 {"disallow-doc-written-script-loads",
2939 flag_descriptions::kDisallowDocWrittenScriptsUiName,
2940 flag_descriptions::kDisallowDocWrittenScriptsUiDescription, kOsAll,
2941 // NOTE: if we want to add additional experiment entries for other
2942 // features controlled by kBlinkSettings, we'll need to add logic to
2943 // merge the flag values.
2944 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
2945 switches::kBlinkSettings,
2946 "disallowFetchForDocWrittenScriptsInMainFrame=true",
2947 switches::kBlinkSettings,
2948 "disallowFetchForDocWrittenScriptsInMainFrame=false")},
2950 {"use-winrt-midi-api", flag_descriptions::kUseWinrtMidiApiName,
2951 flag_descriptions::kUseWinrtMidiApiDescription, kOsWin,
2952 FEATURE_VALUE_TYPE(midi::features::kMidiManagerWinrt)},
2954 #if defined(OS_CHROMEOS)
2955 {"cros-regions-mode", flag_descriptions::kCrosRegionsModeName,
2956 flag_descriptions::kCrosRegionsModeDescription, kOsCrOS,
2957 MULTI_VALUE_TYPE(kCrosRegionsModeChoices)},
2958 #endif // OS_CHROMEOS
2959 #if defined(TOOLKIT_VIEWS) || defined(OS_ANDROID)
2960 {"enable-autofill-credit-card-upload",
2961 flag_descriptions::kAutofillCreditCardUploadName,
2962 flag_descriptions::kAutofillCreditCardUploadDescription, kOsAll,
2963 FEATURE_VALUE_TYPE(autofill::features::kAutofillUpstream)},
2964 #endif // TOOLKIT_VIEWS || OS_ANDROID
2965 {"force-ui-direction", flag_descriptions::kForceUiDirectionName,
2966 flag_descriptions::kForceUiDirectionDescription, kOsAll,
2967 MULTI_VALUE_TYPE(kForceUIDirectionChoices)},
2968 {"force-text-direction", flag_descriptions::kForceTextDirectionName,
2969 flag_descriptions::kForceTextDirectionDescription, kOsAll,
2970 MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
2971 #if defined(OS_ANDROID)
2972 {"force-update-menu-type", flag_descriptions::kUpdateMenuTypeName,
2973 flag_descriptions::kUpdateMenuTypeDescription, kOsAndroid,
2974 MULTI_VALUE_TYPE(kForceUpdateMenuTypeChoices)},
2975 {"enable-inline-update-flow", flag_descriptions::kInlineUpdateFlowName,
2976 flag_descriptions::kInlineUpdateFlowDescription, kOsAndroid,
2977 FEATURE_VALUE_TYPE(chrome::android::kInlineUpdateFlow)},
2978 {"update-menu-item-custom-summary",
2979 flag_descriptions::kUpdateMenuItemCustomSummaryName,
2980 flag_descriptions::kUpdateMenuItemCustomSummaryDescription, kOsAndroid,
2981 SINGLE_VALUE_TYPE_AND_VALUE(
2982 switches::kForceShowUpdateMenuItemCustomSummary,
2984 {"force-show-update-menu-badge", flag_descriptions::kUpdateMenuBadgeName,
2985 flag_descriptions::kUpdateMenuBadgeDescription, kOsAndroid,
2986 SINGLE_VALUE_TYPE(switches::kForceShowUpdateMenuBadge)},
2987 {"set-market-url-for-testing",
2988 flag_descriptions::kSetMarketUrlForTestingName,
2989 flag_descriptions::kSetMarketUrlForTestingDescription, kOsAndroid,
2990 SINGLE_VALUE_TYPE_AND_VALUE(switches::kMarketUrlForTesting,
2991 "https://play.google.com/store/apps/"
2992 "details?id=com.android.chrome")},
2993 #endif // OS_ANDROID
2994 {"tls13-hardening-for-local-anchors",
2995 flag_descriptions::kTLS13HardeningForLocalAnchorsName,
2996 flag_descriptions::kTLS13HardeningForLocalAnchorsDescription, kOsAll,
2997 FEATURE_VALUE_TYPE(features::kTLS13HardeningForLocalAnchors)},
2998 {"enable-tls13-early-data", flag_descriptions::kEnableTLS13EarlyDataName,
2999 flag_descriptions::kEnableTLS13EarlyDataDescription, kOsAll,
3000 FEATURE_VALUE_TYPE(net::features::kEnableTLS13EarlyData)},
3001 {"post-quantum-cecpq2", flag_descriptions::kPostQuantumCECPQ2Name,
3002 flag_descriptions::kPostQuantumCECPQ2Description, kOsAll,
3003 FEATURE_VALUE_TYPE(net::features::kPostQuantumCECPQ2)},
3004 #if defined(OS_ANDROID)
3005 {"interest-feed-feedback", flag_descriptions::kInterestFeedFeedbackName,
3006 flag_descriptions::kInterestFeedFeedbackDescription, kOsAndroid,
3007 FEATURE_VALUE_TYPE(feed::kInterestFeedFeedback)},
3008 {"interest-feed-notifications",
3009 flag_descriptions::kInterestFeedNotificationsName,
3010 flag_descriptions::kInterestFeedNotificationsDescription, kOsAndroid,
3011 FEATURE_VALUE_TYPE(feed::kInterestFeedNotifications)},
3012 {"interest-feed-v2", flag_descriptions::kInterestFeedV2Name,
3013 flag_descriptions::kInterestFeedV2Description, kOsAndroid,
3014 FEATURE_VALUE_TYPE(feed::kInterestFeedV2)},
3015 {"report-feed-user-actions", flag_descriptions::kReportFeedUserActionsName,
3016 flag_descriptions::kReportFeedUserActionsDescription, kOsAndroid,
3017 FEATURE_VALUE_TYPE(feed::kReportFeedUserActions)},
3018 {"offlining-recent-pages", flag_descriptions::kOffliningRecentPagesName,
3019 flag_descriptions::kOffliningRecentPagesDescription, kOsAndroid,
3020 FEATURE_VALUE_TYPE(offline_pages::kOffliningRecentPagesFeature)},
3021 {"offline-pages-ct", flag_descriptions::kOfflinePagesCtName,
3022 flag_descriptions::kOfflinePagesCtDescription, kOsAndroid,
3023 FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesCTFeature)},
3024 {"offline-pages-ct-v2", flag_descriptions::kOfflinePagesCtV2Name,
3025 flag_descriptions::kOfflinePagesCtV2Description, kOsAndroid,
3026 FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesCTV2Feature)},
3027 {"offline-pages-ct-suppress-completed-notification",
3028 flag_descriptions::kOfflinePagesCTSuppressNotificationsName,
3029 flag_descriptions::kOfflinePagesCTSuppressNotificationsDescription,
3032 offline_pages::kOfflinePagesCTSuppressNotificationsFeature)},
3033 #endif // OS_ANDROID
3034 {"PasswordImport", flag_descriptions::kPasswordImportName,
3035 flag_descriptions::kPasswordImportDescription, kOsAll,
3036 FEATURE_VALUE_TYPE(password_manager::features::kPasswordImport)},
3037 #if defined(OS_ANDROID)
3038 {"password-editing-android", flag_descriptions::kPasswordEditingAndroidName,
3039 flag_descriptions::kPasswordEditingAndroidDescription, kOsAndroid,
3040 FEATURE_VALUE_TYPE(password_manager::features::kPasswordEditingAndroid)},
3041 #endif // OS_ANDROID
3042 #if !defined(OS_CHROMEOS)
3043 // TODO(https://crbug.com/1011696): Investigate crash reports and re-enable
3045 {"enable-force-dark", flag_descriptions::kForceWebContentsDarkModeName,
3046 flag_descriptions::kForceWebContentsDarkModeDescription,
3047 kOsWin | kOsLinux | kOsMac | kOsAndroid,
3048 FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kForceWebContentsDarkMode,
3049 kForceDarkVariations,
3050 "ForceDarkVariations")},
3051 #endif // !OS_CHROMEOS
3052 #if defined(OS_ANDROID)
3053 {"enable-android-dark-search", flag_descriptions::kAndroidDarkSearchName,
3054 flag_descriptions::kAndroidDarkSearchDescription, kOsAndroid,
3055 FEATURE_VALUE_TYPE(features::kAndroidDarkSearch)},
3057 {"enable-android-night-mode-tab-reparenting",
3058 flag_descriptions::kAndroidNightModeTabReparentingName,
3059 flag_descriptions::kAndroidNightModeTabReparentingDescription, kOsAndroid,
3060 FEATURE_VALUE_TYPE(chrome::android::kAndroidNightModeTabReparenting)},
3061 #endif // OS_ANDROID
3062 {"enable-experimental-accessibility-language-detection",
3063 flag_descriptions::kExperimentalAccessibilityLanguageDetectionName,
3064 flag_descriptions::kExperimentalAccessibilityLanguageDetectionDescription,
3067 ::switches::kEnableExperimentalAccessibilityLanguageDetection)},
3068 {"enable-experimental-accessibility-language-detection-dynamic",
3069 flag_descriptions::kExperimentalAccessibilityLanguageDetectionDynamicName,
3071 kExperimentalAccessibilityLanguageDetectionDynamicDescription,
3074 ::switches::kEnableExperimentalAccessibilityLanguageDetectionDynamic)},
3075 #if defined(OS_CHROMEOS)
3076 {"enable-encryption-migration",
3077 flag_descriptions::kEnableEncryptionMigrationName,
3078 flag_descriptions::kEnableEncryptionMigrationDescription, kOsCrOS,
3079 ENABLE_DISABLE_VALUE_TYPE(
3080 chromeos::switches::kEnableEncryptionMigration,
3081 chromeos::switches::kDisableEncryptionMigration)},
3082 {"enable-cros-ime-assist-autocorrect",
3083 flag_descriptions::kImeAssistAutocorrectName,
3084 flag_descriptions::kImeAssistAutocorrectDescription, kOsCrOS,
3085 FEATURE_VALUE_TYPE(chromeos::features::kAssistAutoCorrect)},
3086 {"enable-cros-ime-assist-personal-info",
3087 flag_descriptions::kImeAssistPersonalInfoName,
3088 flag_descriptions::kImeAssistPersonalInfoDescription, kOsCrOS,
3089 FEATURE_VALUE_TYPE(chromeos::features::kAssistPersonalInfo)},
3090 {"enable-cros-ime-emoji-suggest-addition",
3091 flag_descriptions::kImeEmojiSuggestAdditionName,
3092 flag_descriptions::kImeEmojiSuggestAdditionDescription, kOsCrOS,
3093 FEATURE_VALUE_TYPE(chromeos::features::kEmojiSuggestAddition)},
3094 {"enable-cros-ime-input-logic-fst",
3095 flag_descriptions::kImeInputLogicFstName,
3096 flag_descriptions::kImeInputLogicFstDescription, kOsCrOS,
3097 FEATURE_VALUE_TYPE(chromeos::features::kImeInputLogicFst)},
3098 {"enable-cros-ime-input-logic-hmm",
3099 flag_descriptions::kImeInputLogicHmmName,
3100 flag_descriptions::kImeInputLogicHmmDescription, kOsCrOS,
3101 FEATURE_VALUE_TYPE(chromeos::features::kImeInputLogicHmm)},
3102 {"enable-cros-ime-input-logic-mozc",
3103 flag_descriptions::kImeInputLogicMozcName,
3104 flag_descriptions::kImeInputLogicMozcDescription, kOsCrOS,
3105 FEATURE_VALUE_TYPE(chromeos::features::kImeInputLogicMozc)},
3106 {"enable-cros-ime-mozc-proto", flag_descriptions::kImeMozcProtoName,
3107 flag_descriptions::kImeMozcProtoDescription, kOsCrOS,
3108 FEATURE_VALUE_TYPE(chromeos::features::kImeMozcProto)},
3109 {"enable-cros-ime-sandbox", flag_descriptions::kImeServiceSandboxName,
3110 flag_descriptions::kImeServiceSandboxDescription, kOsCrOS,
3111 FEATURE_VALUE_TYPE(chromeos::features::kEnableImeSandbox)},
3112 {"enable-cros-virtual-keyboard-bordered-key",
3113 flag_descriptions::kVirtualKeyboardBorderedKeyName,
3114 flag_descriptions::kVirtualKeyboardBorderedKeyDescription, kOsCrOS,
3115 FEATURE_VALUE_TYPE(chromeos::features::kVirtualKeyboardBorderedKey)},
3116 {"enable-cros-virtual-keyboard-floating-resizable",
3117 flag_descriptions::kVirtualKeyboardFloatingResizableName,
3118 flag_descriptions::kVirtualKeyboardFloatingResizableDescription, kOsCrOS,
3119 FEATURE_VALUE_TYPE(chromeos::features::kVirtualKeyboardFloatingResizable)},
3120 {"enable-experimental-accessibility-switch-access",
3121 flag_descriptions::kExperimentalAccessibilitySwitchAccessName,
3122 flag_descriptions::kExperimentalAccessibilitySwitchAccessDescription,
3125 ::switches::kEnableExperimentalAccessibilitySwitchAccess)},
3126 {"enable-experimental-accessibility-switch-access-text",
3127 flag_descriptions::kExperimentalAccessibilitySwitchAccessTextName,
3128 flag_descriptions::kExperimentalAccessibilitySwitchAccessTextDescription,
3131 ::switches::kEnableExperimentalAccessibilitySwitchAccessText)},
3132 {"enable-experimental-accessibility-chromevox-annotations",
3133 flag_descriptions::kExperimentalAccessibilityChromeVoxAnnotationsName,
3135 kExperimentalAccessibilityChromeVoxAnnotationsDescription,
3138 ::switches::kEnableExperimentalAccessibilityChromeVoxAnnotations)},
3139 {"disable-experimental-accessibility-chromevox-language-switching",
3141 kExperimentalAccessibilityChromeVoxLanguageSwitchingName,
3143 kExperimentalAccessibilityChromeVoxLanguageSwitchingDescription,
3147 kDisableExperimentalAccessibilityChromeVoxLanguageSwitching)},
3148 {"enable-experimental-accessibility-cursor-colors",
3149 flag_descriptions::kExperimentalAccessibilityCursorColorsName,
3150 flag_descriptions::kExperimentalAccessibilityCursorColorsDescription,
3151 kOsCrOS, FEATURE_VALUE_TYPE(features::kAccessibilityCursorColor)},
3152 {"enable-experimental-kernel-vm-support",
3153 flag_descriptions::kKernelnextVMsName,
3154 flag_descriptions::kKernelnextVMsDescription, kOsCrOS,
3155 FEATURE_VALUE_TYPE(features::kKernelnextVMs)},
3156 {"disable-experimental-accessibility-chromevox-search-menus",
3157 flag_descriptions::kExperimentalAccessibilityChromeVoxSearchMenusName,
3159 kExperimentalAccessibilityChromeVoxSearchMenusDescription,
3162 ::switches::kDisableExperimentalAccessibilityChromeVoxSearchMenus)},
3163 {"enable-experimental-accessibility-chromevox-tutorial",
3164 flag_descriptions::kExperimentalAccessibilityChromeVoxTutorialName,
3165 flag_descriptions::kExperimentalAccessibilityChromeVoxTutorialDescription,
3168 ::switches::kEnableExperimentalAccessibilityChromeVoxTutorial)},
3169 #endif // OS_CHROMEOS
3170 #if defined(OS_MACOSX)
3171 {"enable-immersive-fullscreen-toolbar",
3172 flag_descriptions::kImmersiveFullscreenName,
3173 flag_descriptions::kImmersiveFullscreenDescription, kOsMac,
3174 FEATURE_VALUE_TYPE(features::kImmersiveFullscreen)},
3176 {"rewrite-leveldb-on-deletion",
3177 flag_descriptions::kRewriteLevelDBOnDeletionName,
3178 flag_descriptions::kRewriteLevelDBOnDeletionDescription, kOsAll,
3179 FEATURE_VALUE_TYPE(leveldb::kLevelDBRewriteFeature)},
3180 {"passive-listener-default",
3181 flag_descriptions::kPassiveEventListenerDefaultName,
3182 flag_descriptions::kPassiveEventListenerDefaultDescription, kOsAll,
3183 MULTI_VALUE_TYPE(kPassiveListenersChoices)},
3184 {"enable-experimental-fling-animation",
3185 flag_descriptions::kExperimentalFlingAnimationName,
3186 flag_descriptions::kExperimentalFlingAnimationDescription, kOsAll,
3187 FEATURE_VALUE_TYPE(features::kExperimentalFlingAnimation)},
3188 {"per-method-can-make-payment-quota",
3189 flag_descriptions::kPerMethodCanMakePaymentQuotaName,
3190 flag_descriptions::kPerMethodCanMakePaymentQuotaDescription, kOsAll,
3192 payments::features::kWebPaymentsPerMethodCanMakePaymentQuota)},
3193 {"enable-web-payments-experimental-features",
3194 flag_descriptions::kWebPaymentsExperimentalFeaturesName,
3195 flag_descriptions::kWebPaymentsExperimentalFeaturesDescription, kOsAll,
3196 FEATURE_VALUE_TYPE(payments::features::kWebPaymentsExperimentalFeatures)},
3197 {"enable-web-payments-minimal-ui",
3198 flag_descriptions::kWebPaymentsMinimalUIName,
3199 flag_descriptions::kWebPaymentsMinimalUIDescription, kOsAll,
3200 FEATURE_VALUE_TYPE(features::kWebPaymentsMinimalUI)},
3201 {"enable-debug-for-store-billing",
3202 flag_descriptions::kAppStoreBillingDebugName,
3203 flag_descriptions::kAppStoreBillingDebugDescription, kOsAll,
3204 FEATURE_VALUE_TYPE(payments::features::kAppStoreBillingDebug)},
3205 {"fill-on-account-select", flag_descriptions::kFillOnAccountSelectName,
3206 flag_descriptions::kFillOnAccountSelectDescription, kOsAll,
3207 FEATURE_VALUE_TYPE(password_manager::features::kFillOnAccountSelect)},
3208 #if defined(OS_CHROMEOS)
3209 {"arc-custom-tabs-experiment",
3210 flag_descriptions::kArcCustomTabsExperimentName,
3211 flag_descriptions::kArcCustomTabsExperimentDescription, kOsCrOS,
3212 FEATURE_VALUE_TYPE(arc::kCustomTabsExperimentFeature)},
3213 {"arc-documents-provider", flag_descriptions::kArcDocumentsProviderName,
3214 flag_descriptions::kArcDocumentsProviderDescription, kOsCrOS,
3215 FEATURE_VALUE_TYPE(arc::kEnableDocumentsProviderInFilesAppFeature)},
3216 {"arc-file-picker-experiment",
3217 flag_descriptions::kArcFilePickerExperimentName,
3218 flag_descriptions::kArcFilePickerExperimentDescription, kOsCrOS,
3219 FEATURE_VALUE_TYPE(arc::kFilePickerExperimentFeature)},
3220 {"arc-native-bridge-toggle", flag_descriptions::kArcNativeBridgeToggleName,
3221 flag_descriptions::kArcNativeBridgeToggleDescription, kOsCrOS,
3222 FEATURE_VALUE_TYPE(arc::kNativeBridgeToggleFeature)},
3223 {"arc-print-spooler-experiment",
3224 flag_descriptions::kArcPrintSpoolerExperimentName,
3225 flag_descriptions::kArcPrintSpoolerExperimentDescription, kOsCrOS,
3226 FEATURE_VALUE_TYPE(arc::kPrintSpoolerExperimentFeature)},
3227 {"arc-usb-host", flag_descriptions::kArcUsbHostName,
3228 flag_descriptions::kArcUsbHostDescription, kOsCrOS,
3229 FEATURE_VALUE_TYPE(arc::kUsbHostFeature)},
3230 {"arc-usb-storage-ui", flag_descriptions::kArcUsbStorageUIName,
3231 flag_descriptions::kArcUsbStorageUIDescription, kOsCrOS,
3232 FEATURE_VALUE_TYPE(arc::kUsbStorageUIFeature)},
3233 #endif // OS_CHROMEOS
3235 {"enable-winrt-sensor-implementation",
3236 flag_descriptions::kWinrtSensorsImplementationName,
3237 flag_descriptions::kWinrtSensorsImplementationDescription, kOsWin,
3238 FEATURE_VALUE_TYPE(features::kWinrtSensorsImplementation)},
3240 {"enable-generic-sensor-extra-classes",
3241 flag_descriptions::kEnableGenericSensorExtraClassesName,
3242 flag_descriptions::kEnableGenericSensorExtraClassesDescription, kOsAll,
3243 FEATURE_VALUE_TYPE(features::kGenericSensorExtraClasses)},
3244 {"expensive-background-timer-throttling",
3245 flag_descriptions::kExpensiveBackgroundTimerThrottlingName,
3246 flag_descriptions::kExpensiveBackgroundTimerThrottlingDescription, kOsAll,
3247 FEATURE_VALUE_TYPE(features::kExpensiveBackgroundTimerThrottling)},
3249 #if defined(OS_CHROMEOS)
3250 {ui_devtools::switches::kEnableUiDevTools,
3251 flag_descriptions::kUiDevToolsName,
3252 flag_descriptions::kUiDevToolsDescription, kOsCrOS,
3253 SINGLE_VALUE_TYPE(ui_devtools::switches::kEnableUiDevTools)},
3254 #endif // defined(OS_CHROMEOS)
3256 {"enable-autofill-credit-card-ablation-experiment",
3257 flag_descriptions::kEnableAutofillCreditCardAblationExperimentDisplayName,
3258 flag_descriptions::kEnableAutofillCreditCardAblationExperimentDescription,
3261 autofill::features::kAutofillCreditCardAblationExperiment)},
3263 #if defined(OS_ANDROID)
3264 {"enable-autofill-manual-fallback",
3265 flag_descriptions::kAutofillManualFallbackAndroidName,
3266 flag_descriptions::kAutofillManualFallbackAndroidDescription, kOsAndroid,
3267 FEATURE_VALUE_TYPE(autofill::features::kAutofillManualFallbackAndroid)},
3269 {"enable-autofill-refresh-style",
3270 flag_descriptions::kEnableAutofillRefreshStyleName,
3271 flag_descriptions::kEnableAutofillRefreshStyleDescription, kOsAndroid,
3272 FEATURE_VALUE_TYPE(autofill::features::kAutofillRefreshStyleAndroid)},
3275 #if defined(OS_CHROMEOS)
3276 {"enable-touchscreen-calibration",
3277 flag_descriptions::kTouchscreenCalibrationName,
3278 flag_descriptions::kTouchscreenCalibrationDescription, kOsCrOS,
3279 SINGLE_VALUE_TYPE(chromeos::switches::kEnableTouchCalibrationSetting)},
3280 #endif // defined(OS_CHROMEOS)
3281 #if defined(OS_CHROMEOS)
3282 {"android-files-in-files-app",
3283 flag_descriptions::kShowAndroidFilesInFilesAppName,
3284 flag_descriptions::kShowAndroidFilesInFilesAppDescription, kOsCrOS,
3285 ENABLE_DISABLE_VALUE_TYPE(
3286 chromeos::switches::kShowAndroidFilesInFilesApp,
3287 chromeos::switches::kHideAndroidFilesInFilesApp)},
3288 {"camera-system-web-app", flag_descriptions::kCameraSystemWebAppName,
3289 flag_descriptions::kCameraSystemWebAppDescription, kOsCrOS,
3290 FEATURE_VALUE_TYPE(chromeos::features::kCameraSystemWebApp)},
3291 {"crostini-gpu-support", flag_descriptions::kCrostiniGpuSupportName,
3292 flag_descriptions::kCrostiniGpuSupportDescription, kOsCrOS,
3293 FEATURE_VALUE_TYPE(chromeos::features::kCrostiniGpuSupport)},
3294 {"crostini-usb-allow-unsupported",
3295 flag_descriptions::kCrostiniUsbAllowUnsupportedName,
3296 flag_descriptions::kCrostiniUsbAllowUnsupportedDescription, kOsCrOS,
3297 FEATURE_VALUE_TYPE(chromeos::features::kCrostiniUsbAllowUnsupported)},
3298 {"files-ng", flag_descriptions::kFilesNGName,
3299 flag_descriptions::kFilesNGDescription, kOsCrOS,
3300 FEATURE_VALUE_TYPE(chromeos::features::kFilesNG)},
3301 {"files-transfer-details", flag_descriptions::kFilesTransferDetailsName,
3302 flag_descriptions::kFilesTransferDetailsDescription, kOsCrOS,
3303 FEATURE_VALUE_TYPE(chromeos::features::kFilesTransferDetails)},
3304 {"files-zip-no-nacl", flag_descriptions::kFilesZipNoNaClName,
3305 flag_descriptions::kFilesZipNoNaClDescription, kOsCrOS,
3306 FEATURE_VALUE_TYPE(chromeos::features::kFilesZipNoNaCl)},
3307 {"files-unified-media-view", flag_descriptions::kUnifiedMediaViewName,
3308 flag_descriptions::kUnifiedMediaViewDescription, kOsCrOS,
3309 FEATURE_VALUE_TYPE(chromeos::features::kUnifiedMediaView)},
3310 {"rar2fs", flag_descriptions::kRar2FsName,
3311 flag_descriptions::kRar2FsDescription, kOsCrOS,
3312 FEATURE_VALUE_TYPE(chromeos::features::kRar2Fs)},
3313 {"smbfs-file-shares", flag_descriptions::kSmbfsFileSharesName,
3314 flag_descriptions::kSmbfsFileSharesName, kOsCrOS,
3315 FEATURE_VALUE_TYPE(features::kSmbFs)},
3316 #endif // OS_CHROMEOS
3319 {"gdi-text-printing", flag_descriptions::kGdiTextPrinting,
3320 flag_descriptions::kGdiTextPrintingDescription, kOsWin,
3321 FEATURE_VALUE_TYPE(features::kGdiTextPrinting)},
3322 #endif // defined(OS_WIN)
3325 {"new-usb-backend", flag_descriptions::kNewUsbBackendName,
3326 flag_descriptions::kNewUsbBackendDescription, kOsWin,
3327 FEATURE_VALUE_TYPE(device::kNewUsbBackend)},
3328 #endif // defined(OS_WIN)
3330 #if defined(OS_ANDROID)
3331 {"omnibox-adaptive-suggestions-count",
3332 flag_descriptions::kOmniboxAdaptiveSuggestionsCountName,
3333 flag_descriptions::kOmniboxAdaptiveSuggestionsCountDescription, kOsAndroid,
3334 FEATURE_VALUE_TYPE(omnibox::kAdaptiveSuggestionsCount)},
3335 {"omnibox-assistant-voice-search",
3336 flag_descriptions::kOmniboxAssistantVoiceSearchName,
3337 flag_descriptions::kOmniboxAssistantVoiceSearchDescription, kOsAndroid,
3338 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxAssistantVoiceSearch,
3339 kOmniboxAssistantVoiceSearchVariations,
3340 "OmniboxAssistantVoiceSearch")},
3341 {"omnibox-compact-suggestions",
3342 flag_descriptions::kOmniboxCompactSuggestionsName,
3343 flag_descriptions::kOmniboxCompactSuggestionsDescription, kOsAndroid,
3344 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kCompactSuggestions,
3345 kCompactSuggestionsVariations,
3346 "OmniboxCompactSuggestions")},
3347 {"omnibox-deferred-keyboard-popup",
3348 flag_descriptions::kOmniboxDeferredKeyboardPopupName,
3349 flag_descriptions::kOmniboxDeferredKeyboardPopupDescription, kOsAndroid,
3350 FEATURE_VALUE_TYPE(omnibox::kDeferredKeyboardPopup)},
3351 {"omnibox-search-engine-logo",
3352 flag_descriptions::kOmniboxSearchEngineLogoName,
3353 flag_descriptions::kOmniboxSearchEngineLogoDescription, kOsAndroid,
3354 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxSearchEngineLogo,
3355 kOmniboxSearchEngineLogoFeatureVariations,
3356 "OmniboxSearchEngineLogo")},
3357 {"omnibox-search-ready-incognito",
3358 flag_descriptions::kOmniboxSearchReadyIncognitoName,
3359 flag_descriptions::kOmniboxSearchReadyIncognitoDescription, kOsAndroid,
3360 FEATURE_VALUE_TYPE(omnibox::kOmniboxSearchReadyIncognito)},
3361 {"omnibox-suggestions-recycler-view",
3362 flag_descriptions::kOmniboxSuggestionsRecyclerViewName,
3363 flag_descriptions::kOmniboxSuggestionsRecyclerViewDescription, kOsAndroid,
3364 FEATURE_VALUE_TYPE(omnibox::kOmniboxSuggestionsRecyclerView)},
3365 {"omnibox-suggestions-wrap-around",
3366 flag_descriptions::kOmniboxSuggestionsWrapAroundName,
3367 flag_descriptions::kOmniboxSuggestionsWrapAroundDescription, kOsAndroid,
3368 FEATURE_VALUE_TYPE(omnibox::kOmniboxSuggestionsWrapAround)},
3369 {"omnibox-tab-switch-suggestions",
3370 flag_descriptions::kOmniboxTabSwitchSuggestionsName,
3371 flag_descriptions::kOmniboxTabSwitchSuggestionsDescription, kOsAndroid,
3372 FEATURE_VALUE_TYPE(omnibox::kOmniboxTabSwitchSuggestions)},
3373 #endif // defined(OS_ANDROID)
3375 {"omnibox-on-device-head-suggestions-incognito",
3376 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsIncognitoName,
3377 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsIncognitoDescription,
3379 FEATURE_WITH_PARAMS_VALUE_TYPE(
3380 omnibox::kOnDeviceHeadProviderIncognito,
3381 kOmniboxOnDeviceHeadSuggestIncognitoExperimentVariations,
3382 "OmniboxOnDeviceHeadSuggestIncognito")},
3384 {"omnibox-on-device-head-suggestions-non-incognito",
3385 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsNonIncognitoName,
3386 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsNonIncognitoDescription,
3388 FEATURE_WITH_PARAMS_VALUE_TYPE(
3389 omnibox::kOnDeviceHeadProviderNonIncognito,
3390 kOmniboxOnDeviceHeadSuggestNonIncognitoExperimentVariations,
3391 "OmniboxOnDeviceHeadSuggestNonIncognito")},
3393 {"omnibox-on-focus-suggestions",
3394 flag_descriptions::kOmniboxOnFocusSuggestionsName,
3395 flag_descriptions::kOmniboxOnFocusSuggestionsDescription, kOsAll,
3396 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOnFocusSuggestions,
3397 kOmniboxOnFocusSuggestionsVariations,
3398 "OmniboxBundledExperimentV1")},
3400 {"omnibox-on-focus-suggestions-contextual-web",
3401 flag_descriptions::kOmniboxOnFocusSuggestionsContextualWebName,
3402 flag_descriptions::kOmniboxOnFocusSuggestionsContextualWebDescription,
3403 kOsAll, FEATURE_VALUE_TYPE(omnibox::kOnFocusSuggestionsContextualWeb)},
3405 {"omnibox-preserve-default-match-against-async-update",
3406 flag_descriptions::kOmniboxPreserveDefaultMatchAgainstAsyncUpdateName,
3408 kOmniboxPreserveDefaultMatchAgainstAsyncUpdateDescription,
3411 omnibox::kOmniboxPreserveDefaultMatchAgainstAsyncUpdate)},
3413 {"omnibox-local-entity-suggestions",
3414 flag_descriptions::kOmniboxLocalEntitySuggestionsName,
3415 flag_descriptions::kOmniboxLocalEntitySuggestionsDescription, kOsAll,
3416 FEATURE_VALUE_TYPE(omnibox::kOmniboxLocalEntitySuggestions)},
3418 {"omnibox-experimental-suggest-scoring",
3419 flag_descriptions::kOmniboxExperimentalSuggestScoringName,
3420 flag_descriptions::kOmniboxExperimentalSuggestScoringDescription, kOsAll,
3421 FEATURE_VALUE_TYPE(omnibox::kOmniboxExperimentalSuggestScoring)},
3423 {"omnibox-history-quick-provider-allow-but-do-not-score-midword-terms",
3425 kOmniboxHistoryQuickProviderAllowButDoNotScoreMidwordTermsName,
3427 kOmniboxHistoryQuickProviderAllowButDoNotScoreMidwordTermsDescription,
3430 omnibox::kHistoryQuickProviderAllowButDoNotScoreMidwordTerms)},
3431 {"omnibox-history-quick-provider-allow-midword-continuations",
3433 kOmniboxHistoryQuickProviderAllowMidwordContinuationsName,
3435 kOmniboxHistoryQuickProviderAllowMidwordContinuationsDescription,
3438 omnibox::kHistoryQuickProviderAllowMidwordContinuations)},
3440 #if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
3441 {"omnibox-experimental-keyword-mode",
3442 flag_descriptions::kOmniboxExperimentalKeywordModeName,
3443 flag_descriptions::kOmniboxExperimentalKeywordModeDescription, kOsDesktop,
3444 FEATURE_VALUE_TYPE(omnibox::kExperimentalKeywordMode)},
3445 {"omnibox-loose-max-limit-on-dedicated-rows",
3446 flag_descriptions::kOmniboxLooseMaxLimitOnDedicatedRowsName,
3447 flag_descriptions::kOmniboxLooseMaxLimitOnDedicatedRowsDescription,
3449 FEATURE_VALUE_TYPE(omnibox::kOmniboxLooseMaxLimitOnDedicatedRows)},
3450 {"omnibox-reverse-answers", flag_descriptions::kOmniboxReverseAnswersName,
3451 flag_descriptions::kOmniboxReverseAnswersDescription, kOsDesktop,
3452 FEATURE_VALUE_TYPE(omnibox::kOmniboxReverseAnswers)},
3453 {"omnibox-short-bookmark-suggestions",
3454 flag_descriptions::kOmniboxShortBookmarkSuggestionsName,
3455 flag_descriptions::kOmniboxShortBookmarkSuggestionsDescription, kOsDesktop,
3456 FEATURE_VALUE_TYPE(omnibox::kOmniboxShortBookmarkSuggestions)},
3457 {"omnibox-tab-switch-suggestions",
3458 flag_descriptions::kOmniboxTabSwitchSuggestionsName,
3459 flag_descriptions::kOmniboxTabSwitchSuggestionsDescription, kOsDesktop,
3460 FEATURE_VALUE_TYPE(omnibox::kOmniboxTabSwitchSuggestions)},
3461 {"omnibox-tab-switch-suggestions-dedicated-row",
3462 flag_descriptions::kOmniboxTabSwitchSuggestionsDedicatedRowName,
3463 flag_descriptions::kOmniboxTabSwitchSuggestionsDedicatedRowDescription,
3465 FEATURE_VALUE_TYPE(omnibox::kOmniboxTabSwitchSuggestionsDedicatedRow)},
3466 {"omnibox-pedal-suggestions",
3467 flag_descriptions::kOmniboxPedalSuggestionsName,
3468 flag_descriptions::kOmniboxPedalSuggestionsDescription, kOsDesktop,
3469 FEATURE_VALUE_TYPE(omnibox::kOmniboxPedalSuggestions)},
3470 {"omnibox-suggestion-button-row",
3471 flag_descriptions::kOmniboxSuggestionButtonRowName,
3472 flag_descriptions::kOmniboxSuggestionButtonRowDescription, kOsDesktop,
3473 FEATURE_VALUE_TYPE(omnibox::kOmniboxSuggestionButtonRow)},
3474 {"omnibox-drive-suggestions",
3475 flag_descriptions::kOmniboxDriveSuggestionsName,
3476 flag_descriptions::kOmniboxDriveSuggestionsDescriptions, kOsDesktop,
3477 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kDocumentProvider,
3478 kOmniboxDocumentProviderVariations,
3479 "OmniboxBundledExperimentV1")},
3480 {"omnibox-autocomplete-titles",
3481 flag_descriptions::kOmniboxAutocompleteTitlesName,
3482 flag_descriptions::kOmniboxAutocompleteTitlesDescription, kOsDesktop,
3483 FEATURE_VALUE_TYPE(omnibox::kAutocompleteTitles)},
3484 {"omnibox-rich-autocompletion",
3485 flag_descriptions::kOmniboxRichAutocompletionName,
3486 flag_descriptions::kOmniboxRichAutocompletionDescription, kOsDesktop,
3487 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kRichAutocompletion,
3488 kOmniboxRichAutocompletionVariations,
3489 "OmniboxBundledExperimentV1")},
3490 #endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
3492 {"enable-speculative-service-worker-start-on-query-input",
3493 flag_descriptions::kSpeculativeServiceWorkerStartOnQueryInputName,
3494 flag_descriptions::kSpeculativeServiceWorkerStartOnQueryInputDescription,
3496 FEATURE_VALUE_TYPE(omnibox::kSpeculativeServiceWorkerStartOnQueryInput)},
3498 {"enable-service-worker-on-ui", flag_descriptions::kServiceWorkerOnUIName,
3499 flag_descriptions::kServiceWorkerOnUIDescription, kOsAll,
3500 FEATURE_VALUE_TYPE(features::kServiceWorkerOnUI)},
3502 #if defined(OS_CHROMEOS)
3503 {"scheduler-configuration", flag_descriptions::kSchedulerConfigurationName,
3504 flag_descriptions::kSchedulerConfigurationDescription, kOsCrOS,
3505 MULTI_VALUE_TYPE(kSchedulerConfigurationChoices)},
3506 #endif // OS_CHROMEOS
3508 #if defined(OS_ANDROID)
3509 {"enable-command-line-on-non-rooted-devices",
3510 flag_descriptions::kEnableCommandLineOnNonRootedName,
3511 flag_descriptions::kEnableCommandLineOnNoRootedDescription, kOsAndroid,
3512 FEATURE_VALUE_TYPE(chrome::android::kCommandLineOnNonRooted)},
3513 #endif // OS_ANDROID
3515 #if defined(OS_ANDROID)
3516 {"enable-revamped-context-menu",
3517 flag_descriptions::kEnableRevampedContextMenuName,
3518 flag_descriptions::kEnableRevampedContextMenuDescription, kOsAndroid,
3519 FEATURE_VALUE_TYPE(chrome::android::kRevampedContextMenu)},
3520 #endif // OS_ANDROID
3522 {"omnibox-display-title-for-current-url",
3523 flag_descriptions::kOmniboxDisplayTitleForCurrentUrlName,
3524 flag_descriptions::kOmniboxDisplayTitleForCurrentUrlDescription, kOsAll,
3525 FEATURE_VALUE_TYPE(omnibox::kDisplayTitleForCurrentUrl)},
3527 {"force-color-profile", flag_descriptions::kForceColorProfileName,
3528 flag_descriptions::kForceColorProfileDescription, kOsAll,
3529 MULTI_VALUE_TYPE(kForceColorProfileChoices)},
3531 {"force-effective-connection-type",
3532 flag_descriptions::kForceEffectiveConnectionTypeName,
3533 flag_descriptions::kForceEffectiveConnectionTypeDescription, kOsAll,
3534 MULTI_VALUE_TYPE(kForceEffectiveConnectionTypeChoices)},
3536 {"forced-colors", flag_descriptions::kForcedColorsName,
3537 flag_descriptions::kForcedColorsDescription, kOsAll,
3538 FEATURE_VALUE_TYPE(features::kForcedColors)},
3540 #if defined(OS_ANDROID)
3541 {"dynamic-color-gamut", flag_descriptions::kDynamicColorGamutName,
3542 flag_descriptions::kDynamicColorGamutDescription, kOsAndroid,
3543 FEATURE_VALUE_TYPE(features::kDynamicColorGamut)},
3546 {"memlog", flag_descriptions::kMemlogName,
3547 flag_descriptions::kMemlogDescription, kOsAll,
3548 MULTI_VALUE_TYPE(kMemlogModeChoices)},
3550 {"memlog-sampling-rate", flag_descriptions::kMemlogSamplingRateName,
3551 flag_descriptions::kMemlogSamplingRateDescription, kOsAll,
3552 MULTI_VALUE_TYPE(kMemlogSamplingRateChoices)},
3554 {"memlog-stack-mode", flag_descriptions::kMemlogStackModeName,
3555 flag_descriptions::kMemlogStackModeDescription, kOsAll,
3556 MULTI_VALUE_TYPE(kMemlogStackModeChoices)},
3558 {"omnibox-ui-hide-steady-state-url-scheme",
3559 flag_descriptions::kOmniboxUIHideSteadyStateUrlSchemeName,
3560 flag_descriptions::kOmniboxUIHideSteadyStateUrlSchemeDescription, kOsAll,
3561 FEATURE_VALUE_TYPE(omnibox::kHideSteadyStateUrlScheme)},
3563 {"omnibox-ui-hide-steady-state-url-trivial-subdomains",
3564 flag_descriptions::kOmniboxUIHideSteadyStateUrlTrivialSubdomainsName,
3566 kOmniboxUIHideSteadyStateUrlTrivialSubdomainsDescription,
3567 kOsAll, FEATURE_VALUE_TYPE(omnibox::kHideSteadyStateUrlTrivialSubdomains)},
3569 {"omnibox-ui-reveal-steady-state-url-path-query-and-ref-on-hover",
3571 kOmniboxUIRevealSteadyStateUrlPathQueryAndRefOnHoverName,
3573 kOmniboxUIRevealSteadyStateUrlPathQueryAndRefOnHoverDescription,
3575 FEATURE_VALUE_TYPE(omnibox::kRevealSteadyStateUrlPathQueryAndRefOnHover)},
3577 {"omnibox-ui-hide-steady-state-url-path-query-and-ref-on-interaction",
3579 kOmniboxUIHideSteadyStateUrlPathQueryAndRefOnInteractionName,
3581 kOmniboxUIHideSteadyStateUrlPathQueryAndRefOnInteractionDescription,
3584 omnibox::kHideSteadyStateUrlPathQueryAndRefOnInteraction)},
3586 {"omnibox-ui-max-autocomplete-matches",
3587 flag_descriptions::kOmniboxUIMaxAutocompleteMatchesName,
3588 flag_descriptions::kOmniboxUIMaxAutocompleteMatchesDescription,
3589 kOsDesktop | kOsAndroid,
3590 FEATURE_WITH_PARAMS_VALUE_TYPE(
3591 omnibox::kUIExperimentMaxAutocompleteMatches,
3592 kOmniboxUIMaxAutocompleteMatchesVariations,
3593 "OmniboxBundledExperimentV1")},
3595 {"omnibox-max-url-matches", flag_descriptions::kOmniboxMaxURLMatchesName,
3596 flag_descriptions::kOmniboxMaxURLMatchesDescription, kOsAll,
3597 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxMaxURLMatches,
3598 kOmniboxMaxURLMatchesVariations,
3599 "OmniboxMaxURLMatchesVariations")},
3601 {"omnibox-ui-swap-title-and-url",
3602 flag_descriptions::kOmniboxUISwapTitleAndUrlName,
3603 flag_descriptions::kOmniboxUISwapTitleAndUrlDescription, kOsDesktop,
3604 FEATURE_VALUE_TYPE(omnibox::kUIExperimentSwapTitleAndUrl)},
3606 {"omnibox-zero-suggestions-on-ntp",
3607 flag_descriptions::kOmniboxZeroSuggestionsOnNTPName,
3608 flag_descriptions::kOmniboxZeroSuggestionsOnNTPDescription,
3609 kOsDesktop | kOsAndroid,
3610 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestionsOnNTP)},
3612 {"omnibox-zero-suggestions-on-ntp-realbox",
3613 flag_descriptions::kOmniboxZeroSuggestionsOnNTPRealboxName,
3614 flag_descriptions::kOmniboxZeroSuggestionsOnNTPRealboxDescription,
3615 kOsDesktop, FEATURE_VALUE_TYPE(omnibox::kZeroSuggestionsOnNTPRealbox)},
3617 {"omnibox-zero-suggestions-on-serp",
3618 flag_descriptions::kOmniboxZeroSuggestionsOnSERPName,
3619 flag_descriptions::kOmniboxZeroSuggestionsOnSERPDescription, kOsAll,
3620 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestionsOnSERP)},
3622 {"omnibox-disable-instant-extended-limit",
3623 flag_descriptions::kOmniboxDisableInstantExtendedLimitName,
3624 flag_descriptions::kOmniboxDisableInstantExtendedLimitDescription, kOsAll,
3625 FEATURE_VALUE_TYPE(omnibox::kOmniboxDisableInstantExtendedLimit)},
3627 #if defined(OS_CHROMEOS)
3628 {"handwriting-gesture", flag_descriptions::kHandwritingGestureName,
3629 flag_descriptions::kHandwritingGestureDescription, kOsCrOS,
3630 FEATURE_VALUE_TYPE(features::kHandwritingGesture)},
3631 #endif // OS_CHROMEOS
3633 #if BUILDFLAG(ENABLE_EXTENSIONS)
3634 {"cors-for-content-scripts", flag_descriptions::kCorsForContentScriptsName,
3635 flag_descriptions::kCorsForContentScriptsDescription, kOsDesktop,
3636 FEATURE_VALUE_TYPE(network::features::kCorbAllowlistAlsoAppliesToOorCors)},
3638 {"force-empty-CORB-and-CORS-allowlist",
3639 flag_descriptions::kForceEmptyCorbAndCorsAllowlistName,
3640 flag_descriptions::kForceEmptyCorbAndCorsAllowlistDescription, kOsDesktop,
3641 SINGLE_VALUE_TYPE(extensions::switches::kForceEmptyCorbAllowlist)},
3644 {"cross-origin-opener-policy",
3645 flag_descriptions::kCrossOriginOpenerPolicyName,
3646 flag_descriptions::kCrossOriginOpenerPolicyDescription, kOsAll,
3647 FEATURE_VALUE_TYPE(network::features::kCrossOriginOpenerPolicy)},
3649 {"cross-origin-opener-policy-reporting",
3650 flag_descriptions::kCrossOriginOpenerPolicyReportingName,
3651 flag_descriptions::kCrossOriginOpenerPolicyReportingDescription, kOsAll,
3652 FEATURE_VALUE_TYPE(network::features::kCrossOriginOpenerPolicyReporting)},
3654 {"cross-origin-opener-policy-access-reporting",
3655 flag_descriptions::kCrossOriginOpenerPolicyAccessReportingName,
3656 flag_descriptions::kCrossOriginOpenerPolicyAccessReportingDescription,
3659 network::features::kCrossOriginOpenerPolicyAccessReporting)},
3661 {"disable-keepalive-fetch", flag_descriptions::kDisableKeepaliveFetchName,
3662 flag_descriptions::kDisableKeepaliveFetchDescription, kOsAll,
3663 FEATURE_VALUE_TYPE(network::features::kDisableKeepaliveFetch)},
3665 {"delay-async-script-execution",
3666 flag_descriptions::kDelayAsyncScriptExecutionName,
3667 flag_descriptions::kDelayAsyncScriptExecutionDescription, kOsAll,
3668 FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kDelayAsyncScriptExecution,
3669 kDelayAsyncScriptExecutionFeatureVariations,
3670 "DelayAsyncScriptExecution")},
3672 {"prefetch-privacy-changes", flag_descriptions::kPrefetchPrivacyChangesName,
3673 flag_descriptions::kPrefetchPrivacyChangesDescription, kOsAll,
3674 FEATURE_VALUE_TYPE(blink::features::kPrefetchPrivacyChanges)},
3676 {"intensive-wake-up-throttling",
3677 flag_descriptions::kIntensiveWakeUpThrottlingName,
3678 flag_descriptions::kIntensiveWakeUpThrottlingDescription, kOsAll,
3679 FEATURE_VALUE_TYPE(blink::features::kIntensiveWakeUpThrottling)},
3681 #if defined(OS_ANDROID)
3682 {"omnibox-spare-renderer", flag_descriptions::kOmniboxSpareRendererName,
3683 flag_descriptions::kOmniboxSpareRendererDescription, kOsAndroid,
3684 FEATURE_VALUE_TYPE(chrome::android::kOmniboxSpareRenderer)},
3687 #if defined(OS_CHROMEOS)
3688 {"double-tap-to-zoom-in-tablet-mode",
3689 flag_descriptions::kDoubleTapToZoomInTabletModeName,
3690 flag_descriptions::kDoubleTapToZoomInTabletModeDescription, kOsCrOS,
3691 FEATURE_VALUE_TYPE(features::kDoubleTapToZoomInTabletMode)},
3692 #endif // defined(OS_CHROMEOS)
3694 {"tab-groups", flag_descriptions::kTabGroupsName,
3695 flag_descriptions::kTabGroupsDescription, kOsDesktop,
3696 FEATURE_VALUE_TYPE(features::kTabGroups)},
3698 {"tab-groups-collapse", flag_descriptions::kTabGroupsCollapseName,
3699 flag_descriptions::kTabGroupsCollapseDescription, kOsDesktop,
3700 FEATURE_VALUE_TYPE(features::kTabGroupsCollapse)},
3702 {"tab-groups-feedback", flag_descriptions::kTabGroupsFeedbackName,
3703 flag_descriptions::kTabGroupsFeedbackDescription, kOsDesktop,
3704 FEATURE_VALUE_TYPE(features::kTabGroupsFeedback)},
3706 {"new-tabstrip-animation", flag_descriptions::kNewTabstripAnimationName,
3707 flag_descriptions::kNewTabstripAnimationDescription, kOsDesktop,
3708 FEATURE_VALUE_TYPE(features::kNewTabstripAnimation)},
3710 {"scrollable-tabstrip", flag_descriptions::kScrollableTabStripName,
3711 flag_descriptions::kScrollableTabStripDescription, kOsDesktop,
3712 FEATURE_VALUE_TYPE(features::kScrollableTabStrip)},
3714 {"tab-outlines-in-low-contrast-themes",
3715 flag_descriptions::kTabOutlinesInLowContrastThemesName,
3716 flag_descriptions::kTabOutlinesInLowContrastThemesDescription, kOsDesktop,
3717 FEATURE_VALUE_TYPE(features::kTabOutlinesInLowContrastThemes)},
3719 {"prominent-dark-mode-active-tab-title",
3720 flag_descriptions::kProminentDarkModeActiveTabTitleName,
3721 flag_descriptions::kProminentDarkModeActiveTabTitleDescription, kOsDesktop,
3722 FEATURE_VALUE_TYPE(features::kProminentDarkModeActiveTabTitle)},
3724 #if defined(OS_ANDROID)
3725 {"enable-reader-mode-in-cct", flag_descriptions::kReaderModeInCCTName,
3726 flag_descriptions::kReaderModeInCCTDescription, kOsAndroid,
3727 FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
3728 #endif // !defined(OS_ANDROID)
3730 {"click-to-open-pdf", flag_descriptions::kClickToOpenPDFName,
3731 flag_descriptions::kClickToOpenPDFDescription, kOsAll,
3732 FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)},
3734 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
3735 {"direct-manipulation-stylus",
3736 flag_descriptions::kDirectManipulationStylusName,
3737 flag_descriptions::kDirectManipulationStylusDescription,
3738 kOsWin | kOsMac | kOsLinux,
3739 FEATURE_VALUE_TYPE(features::kDirectManipulationStylus)},
3740 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
3742 #if !defined(OS_ANDROID)
3743 {"ntp-confirm-suggestion-removals",
3744 flag_descriptions::kNtpConfirmSuggestionRemovalsName,
3745 flag_descriptions::kNtpConfirmSuggestionRemovalsDescription, kOsDesktop,
3746 FEATURE_VALUE_TYPE(ntp_features::kConfirmSuggestionRemovals)},
3748 {"ntp-dismiss-promos", flag_descriptions::kNtpDismissPromosName,
3749 flag_descriptions::kNtpDismissPromosDescription, kOsDesktop,
3750 FEATURE_VALUE_TYPE(ntp_features::kDismissPromos)},
3752 {"ntp-iframe-one-google-bar", flag_descriptions::kNtpIframeOneGoogleBarName,
3753 flag_descriptions::kNtpIframeOneGoogleBarDescription, kOsDesktop,
3754 FEATURE_VALUE_TYPE(ntp_features::kIframeOneGoogleBar)},
3756 {"ntp-one-google-bar-modal-overlays",
3757 flag_descriptions::kNtpOneGoogleBarModalOverlaysName,
3758 flag_descriptions::kNtpOneGoogleBarModalOverlaysDescription, kOsDesktop,
3759 FEATURE_VALUE_TYPE(ntp_features::kOneGoogleBarModalOverlays)},
3761 {"ntp-realbox", flag_descriptions::kNtpRealboxName,
3762 flag_descriptions::kNtpRealboxDescription, kOsDesktop,
3763 FEATURE_VALUE_TYPE(ntp_features::kRealbox)},
3765 {"ntp-realbox-match-omnibox-theme",
3766 flag_descriptions::kNtpRealboxMatchOmniboxThemeName,
3767 flag_descriptions::kNtpRealboxMatchOmniboxThemeDescription, kOsDesktop,
3768 FEATURE_VALUE_TYPE(ntp_features::kRealboxMatchOmniboxTheme)},
3770 {"ntp-webui", flag_descriptions::kNtpWebUIName,
3771 flag_descriptions::kNtpWebUIDescription, kOsDesktop,
3772 FEATURE_VALUE_TYPE(ntp_features::kWebUI)},
3773 #endif // !defined(OS_ANDROID)
3775 #if defined(DCHECK_IS_CONFIGURABLE)
3776 {"dcheck-is-fatal", flag_descriptions::kDcheckIsFatalName,
3777 flag_descriptions::kDcheckIsFatalDescription, kOsWin,
3778 FEATURE_VALUE_TYPE(base::kDCheckIsFatalFeature)},
3779 #endif // defined(DCHECK_IS_CONFIGURABLE)
3781 {"enable-pixel-canvas-recording",
3782 flag_descriptions::kEnablePixelCanvasRecordingName,
3783 flag_descriptions::kEnablePixelCanvasRecordingDescription, kOsDesktop,
3784 FEATURE_VALUE_TYPE(features::kEnablePixelCanvasRecording)},
3786 {"enable-parallel-downloading", flag_descriptions::kParallelDownloadingName,
3787 flag_descriptions::kParallelDownloadingDescription, kOsAll,
3788 FEATURE_VALUE_TYPE(download::features::kParallelDownloading)},
3790 {"enable-pointer-lock-options", flag_descriptions::kPointerLockOptionsName,
3791 flag_descriptions::kPointerLockOptionsDescription, kOsDesktop,
3792 FEATURE_VALUE_TYPE(features::kPointerLockOptions)},
3794 #if defined(OS_ANDROID)
3795 {"enable-async-dns", flag_descriptions::kAsyncDnsName,
3796 flag_descriptions::kAsyncDnsDescription, kOsAndroid,
3797 FEATURE_VALUE_TYPE(features::kAsyncDns)},
3798 #endif // defined(OS_ANDROID)
3800 #if defined(OS_ANDROID)
3801 {"download-auto-resumption-native",
3802 flag_descriptions::kDownloadAutoResumptionNativeName,
3803 flag_descriptions::kDownloadAutoResumptionNativeDescription, kOsAndroid,
3804 FEATURE_VALUE_TYPE(download::features::kDownloadAutoResumptionNative)},
3806 {"download-later", flag_descriptions::kDownloadLaterName,
3807 flag_descriptions::kDownloadLaterDescription, kOsAndroid,
3808 FEATURE_VALUE_TYPE(download::features::kDownloadLater)},
3810 {"download-later-debug-on-wifi",
3811 flag_descriptions::kDownloadLaterDebugOnWifiName,
3812 flag_descriptions::kDownloadLaterDebugOnWifiNameDescription, kOsAndroid,
3813 SINGLE_VALUE_TYPE(download::switches::kDownloadLaterDebugOnWifi)},
3816 {"enable-new-download-backend",
3817 flag_descriptions::kEnableNewDownloadBackendName,
3818 flag_descriptions::kEnableNewDownloadBackendDescription, kOsAll,
3820 download::features::kUseDownloadOfflineContentProvider)},
3822 #if defined(OS_ANDROID)
3823 {"update-notification-scheduling-integration",
3824 flag_descriptions::kUpdateNotificationSchedulingIntegrationName,
3825 flag_descriptions::kUpdateNotificationSchedulingIntegrationDescription,
3828 chrome::android::kUpdateNotificationSchedulingIntegration)},
3831 #if defined(OS_ANDROID)
3832 {"prefetch-notification-scheduling-integration",
3833 flag_descriptions::kPrefetchNotificationSchedulingIntegrationName,
3834 flag_descriptions::kPrefetchNotificationSchedulingIntegrationDescription,
3837 chrome::android::kPrefetchNotificationSchedulingIntegration)},
3840 #if defined(OS_ANDROID)
3841 {"update-notification-scheduling-show-immediately",
3842 flag_descriptions::kUpdateNotificationServiceImmediateShowOptionName,
3844 kUpdateNotificationServiceImmediateShowOptionDescription,
3848 kUpdateNotificationScheduleServiceImmediateShowOption)},
3851 {"tab-hover-cards", flag_descriptions::kTabHoverCardsName,
3852 flag_descriptions::kTabHoverCardsDescription, kOsDesktop,
3853 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kTabHoverCards,
3854 kTabHoverCardsFeatureVariations,
3857 {"tab-hover-card-images", flag_descriptions::kTabHoverCardImagesName,
3858 flag_descriptions::kTabHoverCardImagesDescription, kOsDesktop,
3859 FEATURE_VALUE_TYPE(features::kTabHoverCardImages)},
3861 {"stop-non-timers-in-background",
3862 flag_descriptions::kStopNonTimersInBackgroundName,
3863 flag_descriptions::kStopNonTimersInBackgroundDescription, kOsAll,
3864 FEATURE_VALUE_TYPE(blink::features::kStopNonTimersInBackground)},
3866 {"stop-in-background", flag_descriptions::kStopInBackgroundName,
3867 flag_descriptions::kStopInBackgroundDescription, kOsAndroid,
3868 FEATURE_VALUE_TYPE(blink::features::kStopInBackground)},
3870 {"enable-storage-pressure-event",
3871 flag_descriptions::kStoragePressureEventName,
3872 flag_descriptions::kStoragePressureEventDescription, kOsAll,
3873 FEATURE_VALUE_TYPE(features::kStoragePressureEvent)},
3875 {"enable-storage-pressure-ui", flag_descriptions::kStoragePressureUIName,
3876 flag_descriptions::kStoragePressureUIDescription, kOsAll,
3877 FEATURE_VALUE_TYPE(features::kStoragePressureUI)},
3879 {"installed-apps-in-cbd", flag_descriptions::kInstalledAppsInCbdName,
3880 flag_descriptions::kInstalledAppsInCbdDescription, kOsDesktop,
3881 FEATURE_VALUE_TYPE(features::kInstalledAppsInCbd)},
3883 {"enable-network-logging-to-file",
3884 flag_descriptions::kEnableNetworkLoggingToFileName,
3885 flag_descriptions::kEnableNetworkLoggingToFileDescription, kOsAll,
3886 SINGLE_VALUE_TYPE(network::switches::kLogNetLog)},
3888 {"enable-mark-http-as", flag_descriptions::kMarkHttpAsName,
3889 flag_descriptions::kMarkHttpAsDescription, kOsAll,
3890 FEATURE_WITH_PARAMS_VALUE_TYPE(
3891 security_state::features::kMarkHttpAsFeature,
3892 kMarkHttpAsFeatureVariations,
3893 "HTTPReallyBadFinal")},
3895 {"enable-web-authentication-cable-v2-support",
3896 flag_descriptions::kEnableWebAuthenticationCableV2SupportName,
3897 flag_descriptions::kEnableWebAuthenticationCableV2SupportDescription,
3898 kOsDesktop | kOsAndroid, FEATURE_VALUE_TYPE(device::kWebAuthPhoneSupport)},
3900 {"use-preferred-interval-for-video",
3901 flag_descriptions::kUsePreferredIntervalForVideoName,
3902 flag_descriptions::kUsePreferredIntervalForVideoDescription, kOsDesktop,
3903 FEATURE_VALUE_TYPE(features::kUsePreferredIntervalForVideo)},
3905 {"split-partially-occluded-quads",
3906 flag_descriptions::kSplitPartiallyOccludedQuadsName,
3907 flag_descriptions::kSplitPartiallyOccludedQuadsDescription, kOsAll,
3908 FEATURE_VALUE_TYPE(features::kSplitPartiallyOccludedQuads)},
3910 #if BUILDFLAG(ENABLE_PDF)
3911 {"pdf-form-save", flag_descriptions::kPdfFormSaveName,
3912 flag_descriptions::kPdfFormSaveDescription, kOsDesktop,
3913 FEATURE_VALUE_TYPE(chrome_pdf::features::kSaveEditedPDFForm)},
3915 {"pdf-honor-js-content-settings",
3916 flag_descriptions::kPdfHonorJsContentSettingsName,
3917 flag_descriptions::kPdfHonorJsContentSettingsDescription, kOsDesktop,
3918 FEATURE_VALUE_TYPE(chrome_pdf::features::kPdfHonorJsContentSettings)},
3920 {"pdf-two-up-view", flag_descriptions::kPdfTwoUpViewName,
3921 flag_descriptions::kPdfTwoUpViewDescription, kOsDesktop,
3922 FEATURE_VALUE_TYPE(chrome_pdf::features::kPDFTwoUpView)},
3924 {"pdf-viewer-update", flag_descriptions::kPdfViewerUpdateName,
3925 flag_descriptions::kPdfViewerUpdateDescription, kOsDesktop,
3926 FEATURE_VALUE_TYPE(chrome_pdf::features::kPDFViewerUpdate)},
3927 #endif // BUILDFLAG(ENABLE_PDF)
3929 #if BUILDFLAG(ENABLE_PRINTING)
3930 #if defined(OS_MACOSX)
3931 {"cups-ipp-printing-backend",
3932 flag_descriptions::kCupsIppPrintingBackendName,
3933 flag_descriptions::kCupsIppPrintingBackendDescription, kOsMac,
3934 FEATURE_VALUE_TYPE(printing::features::kCupsIppPrintingBackend)},
3935 #endif // defined(OS_MACOSX)
3938 {"print-with-reduced-rasterization",
3939 flag_descriptions::kPrintWithReducedRasterizationName,
3940 flag_descriptions::kPrintWithReducedRasterizationDescription, kOsWin,
3941 FEATURE_VALUE_TYPE(printing::features::kPrintWithReducedRasterization)},
3943 {"use-xps-for-printing", flag_descriptions::kUseXpsForPrintingName,
3944 flag_descriptions::kUseXpsForPrintingDescription, kOsWin,
3945 FEATURE_VALUE_TYPE(printing::features::kUseXpsForPrinting)},
3947 {"use-xps-for-printing-from-pdf",
3948 flag_descriptions::kUseXpsForPrintingFromPdfName,
3949 flag_descriptions::kUseXpsForPrintingFromPdfDescription, kOsWin,
3950 FEATURE_VALUE_TYPE(printing::features::kUseXpsForPrintingFromPdf)},
3951 #endif // defined(OS_WIN)
3952 #endif // BUILDFLAG(ENABLE_PRINTING)
3954 {"autofill-profile-client-validation",
3955 flag_descriptions::kAutofillProfileClientValidationName,
3956 flag_descriptions::kAutofillProfileClientValidationDescription, kOsAll,
3957 FEATURE_VALUE_TYPE(autofill::features::kAutofillProfileClientValidation)},
3959 {"autofill-profile-server-validation",
3960 flag_descriptions::kAutofillProfileServerValidationName,
3961 flag_descriptions::kAutofillProfileServerValidationDescription, kOsAll,
3962 FEATURE_VALUE_TYPE(autofill::features::kAutofillProfileServerValidation)},
3964 {"autofill-reject-company-birthyear",
3965 flag_descriptions::kAutofillRejectCompanyBirthyearName,
3966 flag_descriptions::kAutofillRejectCompanyBirthyearDescription, kOsAll,
3967 FEATURE_VALUE_TYPE(autofill::features::kAutofillRejectCompanyBirthyear)},
3969 {"autofill-restrict-formless-form-extraction",
3970 flag_descriptions::kAutofillRestrictUnownedFieldsToFormlessCheckoutName,
3972 kAutofillRestrictUnownedFieldsToFormlessCheckoutDescription,
3975 autofill::features::kAutofillRestrictUnownedFieldsToFormlessCheckout)},
3977 #if defined(OS_ANDROID)
3978 {"enable-start-surface", flag_descriptions::kStartSurfaceAndroidName,
3979 flag_descriptions::kStartSurfaceAndroidDescription, kOsAndroid,
3980 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kStartSurfaceAndroid,
3981 kStartSurfaceAndroidVariations,
3984 {"enable-instant-start", flag_descriptions::kInstantStartName,
3985 flag_descriptions::kInstantStartDescription, kOsAndroid,
3986 FEATURE_VALUE_TYPE(chrome::android::kInstantStart)},
3988 {"enable-close-tab-suggestions",
3989 flag_descriptions::kCloseTabSuggestionsName,
3990 flag_descriptions::kCloseTabSuggestionsDescription, kOsAndroid,
3991 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kCloseTabSuggestions,
3992 kCloseTabSuggestionsStaleVariations,
3993 "CloseSuggestionsTab")},
3995 {"enable-horizontal-tab-switcher",
3996 flag_descriptions::kHorizontalTabSwitcherAndroidName,
3997 flag_descriptions::kHorizontalTabSwitcherAndroidDescription, kOsAndroid,
3998 FEATURE_VALUE_TYPE(chrome::android::kHorizontalTabSwitcherAndroid)},
4000 {"enable-tab-grid-layout", flag_descriptions::kTabGridLayoutAndroidName,
4001 flag_descriptions::kTabGridLayoutAndroidDescription, kOsAndroid,
4002 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kTabGridLayoutAndroid,
4003 kTabGridLayoutAndroidVariations,
4004 "TabGridLayoutAndroid")},
4006 {"enable-tab-groups", flag_descriptions::kTabGroupsAndroidName,
4007 flag_descriptions::kTabGroupsAndroidDescription, kOsAndroid,
4008 FEATURE_VALUE_TYPE(chrome::android::kTabGroupsAndroid)},
4010 {"enable-tab-groups-continuation",
4011 flag_descriptions::kTabGroupsContinuationAndroidName,
4012 flag_descriptions::kTabGroupsContinuationAndroidDescription, kOsAndroid,
4013 FEATURE_VALUE_TYPE(chrome::android::kTabGroupsContinuationAndroid)},
4015 {"enable-tab-groups-ui-improvements",
4016 flag_descriptions::kTabGroupsUiImprovementsAndroidName,
4017 flag_descriptions::kTabGroupsUiImprovementsAndroidDescription, kOsAndroid,
4018 FEATURE_VALUE_TYPE(chrome::android::kTabGroupsUiImprovementsAndroid)},
4020 {"enable-tab-switcher-on-return",
4021 flag_descriptions::kTabSwitcherOnReturnName,
4022 flag_descriptions::kTabSwitcherOnReturnDescription, kOsAndroid,
4023 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kTabSwitcherOnReturn,
4024 kTabSwitcherOnReturnVariations,
4027 {"enable-tab-to-gts-animation",
4028 flag_descriptions::kTabToGTSAnimationAndroidName,
4029 flag_descriptions::kTabToGTSAnimationAndroidDescription, kOsAndroid,
4030 FEATURE_VALUE_TYPE(chrome::android::kTabToGTSAnimation)},
4032 {"enable-tab-engagement-reporting",
4033 flag_descriptions::kTabEngagementReportingName,
4034 flag_descriptions::kTabEngagementReportingDescription, kOsAndroid,
4035 FEATURE_VALUE_TYPE(chrome::android::kTabEngagementReportingAndroid)},
4037 {"enable-duet-tabstrip-integration",
4038 flag_descriptions::kDuetTabStripIntegrationAndroidName,
4039 flag_descriptions::kDuetTabStripIntegrationAndroidDescription, kOsAndroid,
4040 FEATURE_VALUE_TYPE(chrome::android::kDuetTabStripIntegrationAndroid)},
4042 {"enable-conditional-tabstrip",
4043 flag_descriptions::kConditionalTabStripAndroidName,
4044 flag_descriptions::kConditionalTabStripAndroidDescription, kOsAndroid,
4045 FEATURE_WITH_PARAMS_VALUE_TYPE(
4046 chrome::android::kConditionalTabStripAndroid,
4047 kConditionalTabStripAndroidVariations,
4048 "ConditioanlTabStrip")},
4049 #endif // OS_ANDROID
4051 {"enable-layout-ng", flag_descriptions::kEnableLayoutNGName,
4052 flag_descriptions::kEnableLayoutNGDescription, kOsAll,
4053 FEATURE_VALUE_TYPE(blink::features::kLayoutNG)},
4055 {"enable-lazy-image-loading",
4056 flag_descriptions::kEnableLazyImageLoadingName,
4057 flag_descriptions::kEnableLazyImageLoadingDescription, kOsAll,
4058 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kLazyImageLoading,
4059 kLazyImageLoadingVariations,
4062 {"enable-lazy-frame-loading",
4063 flag_descriptions::kEnableLazyFrameLoadingName,
4064 flag_descriptions::kEnableLazyFrameLoadingDescription, kOsAll,
4065 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kLazyFrameLoading,
4066 kLazyFrameLoadingVariations,
4069 {"autofill-cache-query-responses",
4070 flag_descriptions::kAutofillCacheQueryResponsesName,
4071 flag_descriptions::kAutofillCacheQueryResponsesDescription, kOsAll,
4072 FEATURE_VALUE_TYPE(autofill::features::kAutofillCacheQueryResponses)},
4074 {"autofill-enable-company-name",
4075 flag_descriptions::kAutofillEnableCompanyNameName,
4076 flag_descriptions::kAutofillEnableCompanyNameDescription, kOsAll,
4077 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCompanyName)},
4079 {"autofill-enable-toolbar-status-chip",
4080 flag_descriptions::kAutofillEnableToolbarStatusChipName,
4081 flag_descriptions::kAutofillEnableToolbarStatusChipDescription,
4082 kOsMac | kOsWin | kOsLinux,
4083 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableToolbarStatusChip)},
4085 {"autofill-enforce-min-required-fields-for-heuristics",
4086 flag_descriptions::kAutofillEnforceMinRequiredFieldsForHeuristicsName,
4088 kAutofillEnforceMinRequiredFieldsForHeuristicsDescription,
4091 autofill::features::kAutofillEnforceMinRequiredFieldsForHeuristics)},
4092 {"autofill-enforce-min-required-fields-for-query",
4093 flag_descriptions::kAutofillEnforceMinRequiredFieldsForQueryName,
4094 flag_descriptions::kAutofillEnforceMinRequiredFieldsForQueryDescription,
4097 autofill::features::kAutofillEnforceMinRequiredFieldsForQuery)},
4098 {"autofill-enforce-min-required-fields-for-upload",
4099 flag_descriptions::kAutofillEnforceMinRequiredFieldsForUploadName,
4100 flag_descriptions::kAutofillEnforceMinRequiredFieldsForUploadDescription,
4103 autofill::features::kAutofillEnforceMinRequiredFieldsForUpload)},
4104 {"autofill-rich-metadata-queries",
4105 flag_descriptions::kAutofillRichMetadataQueriesName,
4106 flag_descriptions::kAutofillRichMetadataQueriesDescription, kOsAll,
4107 FEATURE_VALUE_TYPE(autofill::features::kAutofillRichMetadataQueries)},
4108 {"enable-experimental-productivity-features",
4109 flag_descriptions::kExperimentalProductivityFeaturesName,
4110 flag_descriptions::kExperimentalProductivityFeaturesDescription, kOsAll,
4111 FEATURE_VALUE_TYPE(features::kExperimentalProductivityFeatures)},
4113 #if defined(USE_AURA)
4114 {"touchpad-overscroll-history-navigation",
4115 flag_descriptions::kTouchpadOverscrollHistoryNavigationName,
4116 flag_descriptions::kTouchpadOverscrollHistoryNavigationDescription,
4118 FEATURE_VALUE_TYPE(features::kTouchpadOverscrollHistoryNavigation)},
4121 {"unsafely-treat-insecure-origin-as-secure",
4122 flag_descriptions::kTreatInsecureOriginAsSecureName,
4123 flag_descriptions::kTreatInsecureOriginAsSecureDescription, kOsAll,
4124 ORIGIN_LIST_VALUE_TYPE(
4125 network::switches::kUnsafelyTreatInsecureOriginAsSecure,
4128 {"treat-unsafe-downloads-as-active-content",
4129 flag_descriptions::kTreatUnsafeDownloadsAsActiveName,
4130 flag_descriptions::kTreatUnsafeDownloadsAsActiveDescription,
4131 kOsDesktop | kOsAndroid,
4132 FEATURE_VALUE_TYPE(features::kTreatUnsafeDownloadsAsActive)},
4134 {"detect-target-embedding-lookalikes",
4135 flag_descriptions::kDetectTargetEmbeddingLookalikesName,
4136 flag_descriptions::kDetectTargetEmbeddingLookalikesDescription,
4137 kOsDesktop | kOsAndroid,
4139 lookalikes::features::kDetectTargetEmbeddingLookalikes)},
4141 #if defined(OS_CHROMEOS)
4142 {"enable-play-store-search", flag_descriptions::kEnablePlayStoreSearchName,
4143 flag_descriptions::kEnablePlayStoreSearchDescription, kOsCrOS,
4144 FEATURE_VALUE_TYPE(app_list_features::kEnablePlayStoreAppSearch)},
4146 {"enable-app-data-search", flag_descriptions::kEnableAppDataSearchName,
4147 flag_descriptions::kEnableAppDataSearchDescription, kOsCrOS,
4148 FEATURE_VALUE_TYPE(app_list_features::kEnableAppDataSearch)},
4150 {"enable-app-grid-ghost", flag_descriptions::kEnableAppGridGhostName,
4151 flag_descriptions::kEnableAppGridGhostDescription, kOsCrOS,
4152 FEATURE_VALUE_TYPE(app_list_features::kEnableAppGridGhost)},
4153 #endif // OS_CHROMEOS
4155 {"enable-accessibility-expose-aria-annotations",
4156 flag_descriptions::kAccessibilityExposeARIAAnnotationsName,
4157 flag_descriptions::kAccessibilityExposeARIAAnnotationsDescription, kOsAll,
4158 FEATURE_VALUE_TYPE(features::kEnableAccessibilityExposeARIAAnnotations)},
4160 {"enable-accessibility-expose-display-none",
4161 flag_descriptions::kAccessibilityExposeDisplayNoneName,
4162 flag_descriptions::kAccessibilityExposeDisplayNoneDescription, kOsAll,
4163 FEATURE_VALUE_TYPE(features::kEnableAccessibilityExposeDisplayNone)},
4165 #if !defined(OS_ANDROID)
4166 {"enable-accessibility-live-captions",
4167 flag_descriptions::kEnableAccessibilityLiveCaptionsName,
4168 flag_descriptions::kEnableAccessibilityLiveCaptionsDescription, kOsDesktop,
4169 FEATURE_VALUE_TYPE(media::kLiveCaption)},
4170 #endif // !defined(OS_ANDROID)
4172 {"enable-accessibility-object-model",
4173 flag_descriptions::kEnableAccessibilityObjectModelName,
4174 flag_descriptions::kEnableAccessibilityObjectModelDescription, kOsAll,
4175 SINGLE_VALUE_TYPE(switches::kEnableAccessibilityObjectModel)},
4177 #if defined(OS_ANDROID)
4178 {"cct-incognito", flag_descriptions::kCCTIncognitoName,
4179 flag_descriptions::kCCTIncognitoDescription, kOsAndroid,
4180 FEATURE_VALUE_TYPE(chrome::android::kCCTIncognito)},
4183 #if defined(OS_CHROMEOS)
4184 {"enable-arc-cups-api", flag_descriptions::kArcCupsApiName,
4185 flag_descriptions::kArcCupsApiDescription, kOsCrOS,
4186 FEATURE_VALUE_TYPE(features::kArcCupsApi)},
4187 #endif // OS_CHROMEOS
4189 #if defined(OS_ANDROID)
4190 {"background-task-component-update",
4191 flag_descriptions::kBackgroundTaskComponentUpdateName,
4192 flag_descriptions::kBackgroundTaskComponentUpdateDescription, kOsAndroid,
4193 FEATURE_VALUE_TYPE(chrome::android::kBackgroundTaskComponentUpdate)},
4196 #if defined(OS_ANDROID)
4197 {"enable-use-aaudio-driver", flag_descriptions::kEnableUseAaudioDriverName,
4198 flag_descriptions::kEnableUseAaudioDriverDescription, kOsAndroid,
4199 FEATURE_VALUE_TYPE(features::kUseAAudioDriver)},
4202 #if defined(OS_CHROMEOS)
4203 {"smart-text-selection", flag_descriptions::kSmartTextSelectionName,
4204 flag_descriptions::kSmartTextSelectionDescription, kOsCrOS,
4205 FEATURE_VALUE_TYPE(arc::kSmartTextSelectionFeature)},
4206 #endif // OS_CHROMEOS
4208 {"allow-sxg-certs-without-extension",
4209 flag_descriptions::kAllowSignedHTTPExchangeCertsWithoutExtensionName,
4211 kAllowSignedHTTPExchangeCertsWithoutExtensionDescription,
4214 features::kAllowSignedHTTPExchangeCertsWithoutExtension)},
4216 {"enable-sxg-subresource-prefetching",
4217 flag_descriptions::kEnableSignedExchangeSubresourcePrefetchName,
4218 flag_descriptions::kEnableSignedExchangeSubresourcePrefetchDescription,
4219 kOsAll, FEATURE_VALUE_TYPE(features::kSignedExchangeSubresourcePrefetch)},
4221 {"enable-sxg-prefetch-cache-for-navigations",
4222 flag_descriptions::kEnableSignedExchangePrefetchCacheForNavigationsName,
4224 kEnableSignedExchangePrefetchCacheForNavigationsDescription,
4226 FEATURE_VALUE_TYPE(features::kSignedExchangePrefetchCacheForNavigations)},
4228 {"enable-autofill-account-wallet-storage",
4229 flag_descriptions::kEnableAutofillAccountWalletStorageName,
4230 flag_descriptions::kEnableAutofillAccountWalletStorageDescription, kOsAll,
4232 autofill::features::kAutofillEnableAccountWalletStorage)},
4234 #if defined(OS_CHROMEOS)
4235 {"enable-zero-state-suggestions",
4236 flag_descriptions::kEnableZeroStateSuggestionsName,
4237 flag_descriptions::kEnableZeroStateSuggestionsDescription, kOsCrOS,
4238 FEATURE_VALUE_TYPE(app_list_features::kEnableZeroStateSuggestions)},
4239 {"enable-zero-state-app-reinstall-suggestions",
4240 flag_descriptions::kEnableAppReinstallZeroStateName,
4241 flag_descriptions::kEnableAppReinstallZeroStateDescription, kOsCrOS,
4242 FEATURE_VALUE_TYPE(app_list_features::kEnableAppReinstallZeroState)},
4243 #endif // OS_CHROMEOS
4245 {"enable-sync-device-info-in-transport-mode",
4246 flag_descriptions::kSyncDeviceInfoInTransportModeName,
4247 flag_descriptions::kSyncDeviceInfoInTransportModeDescription, kOsAll,
4248 FEATURE_VALUE_TYPE(switches::kSyncDeviceInfoInTransportMode)},
4250 {"enable-resampling-input-events",
4251 flag_descriptions::kEnableResamplingInputEventsName,
4252 flag_descriptions::kEnableResamplingInputEventsDescription, kOsAll,
4253 FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kResamplingInputEvents,
4254 kResamplingInputEventsFeatureVariations,
4255 "ResamplingInputEvents")},
4257 {"enable-resampling-scroll-events",
4258 flag_descriptions::kEnableResamplingScrollEventsName,
4259 flag_descriptions::kEnableResamplingScrollEventsDescription, kOsAll,
4260 FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kResamplingScrollEvents,
4261 kResamplingInputEventsFeatureVariations,
4262 "ResamplingScrollEvents")},
4264 {"enable-filtering-scroll-events",
4265 flag_descriptions::kFilteringScrollPredictionName,
4266 flag_descriptions::kFilteringScrollPredictionDescription, kOsAll,
4267 FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kFilteringScrollPrediction,
4268 kFilteringPredictionFeatureVariations,
4269 "FilteringScrollPrediction")},
4271 {"enable-first-scroll-latency-measurement",
4272 flag_descriptions::kFirstScrollLatencyMeasurementName,
4273 flag_descriptions::kFirstScrollLatencyMeasurementDescription, kOsAll,
4274 FEATURE_VALUE_TYPE(features::kFirstScrollLatencyMeasurement)},
4276 {"compositor-threaded-scrollbar-scrolling",
4277 flag_descriptions::kCompositorThreadedScrollbarScrollingName,
4278 flag_descriptions::kCompositorThreadedScrollbarScrollingDescription,
4280 FEATURE_VALUE_TYPE(features::kCompositorThreadedScrollbarScrolling)},
4282 #if defined(OS_CHROMEOS)
4283 {"enable-vaapi-jpeg-image-decode-acceleration",
4284 flag_descriptions::kVaapiJpegImageDecodeAccelerationName,
4285 flag_descriptions::kVaapiJpegImageDecodeAccelerationDescription, kOsCrOS,
4286 FEATURE_VALUE_TYPE(features::kVaapiJpegImageDecodeAcceleration)},
4288 {"enable-vaapi-webp-image-decode-acceleration",
4289 flag_descriptions::kVaapiWebPImageDecodeAccelerationName,
4290 flag_descriptions::kVaapiWebPImageDecodeAccelerationDescription, kOsCrOS,
4291 FEATURE_VALUE_TYPE(features::kVaapiWebPImageDecodeAcceleration)},
4295 {"calculate-native-win-occlusion",
4296 flag_descriptions::kCalculateNativeWinOcclusionName,
4297 flag_descriptions::kCalculateNativeWinOcclusionDescription, kOsWin,
4298 FEATURE_VALUE_TYPE(features::kCalculateNativeWinOcclusion)},
4301 #if !defined(OS_ANDROID)
4302 {"happiness-tracking-surveys-for-desktop",
4303 flag_descriptions::kHappinessTrackingSurveysForDesktopName,
4304 flag_descriptions::kHappinessTrackingSurveysForDesktopDescription,
4306 FEATURE_VALUE_TYPE(features::kHappinessTrackingSurveysForDesktop)},
4308 {"happiness-tracking-surveys-for-desktop-demo",
4309 flag_descriptions::kHappinessTrackingSurveysForDesktopDemoName,
4310 flag_descriptions::kHappinessTrackingSurveysForDesktopDemoDescription,
4312 FEATURE_VALUE_TYPE(features::kHappinessTrackingSurveysForDesktopDemo)},
4314 {"happiness-tracking-surveys-for-desktop-migration",
4315 flag_descriptions::kHappinessTrackingSurveysForDesktopMigrationName,
4316 flag_descriptions::kHappinessTrackingSurveysForDesktopMigrationDescription,
4319 features::kHappinessTrackingSurveysForDesktopMigration)},
4321 {"happiness-tracking-surveys-for-desktop-settings",
4322 flag_descriptions::kHappinessTrackingSurveysForDesktopSettingsName,
4323 flag_descriptions::kHappinessTrackingSurveysForDesktopSettingsDescription,
4325 FEATURE_VALUE_TYPE(features::kHappinessTrackingSurveysForDesktopSettings)},
4327 {"happiness-tracking-surveys-for-desktop-settings-privacy",
4328 flag_descriptions::kHappinessTrackingSurveysForDesktopSettingsPrivacyName,
4330 kHappinessTrackingSurveysForDesktopSettingsPrivacyDescription,
4333 features::kHappinessTrackingSurveysForDesktopSettingsPrivacy)},
4334 #endif // !defined(OS_ANDROID)
4336 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
4337 {"use-multilogin-endpoint", flag_descriptions::kUseMultiloginEndpointName,
4338 flag_descriptions::kUseMultiloginEndpointDescription,
4339 kOsMac | kOsWin | kOsLinux, FEATURE_VALUE_TYPE(kUseMultiloginEndpoint)},
4341 {"enable-new-profile-picker", flag_descriptions::kNewProfilePickerName,
4342 flag_descriptions::kNewProfilePickerDescription,
4343 kOsMac | kOsWin | kOsLinux,
4344 FEATURE_VALUE_TYPE(features::kNewProfilePicker)},
4347 #if defined(OS_CHROMEOS)
4348 {"enable-usbguard", flag_descriptions::kUsbguardName,
4349 flag_descriptions::kUsbguardDescription, kOsCrOS,
4350 FEATURE_VALUE_TYPE(features::kUsbguard)},
4351 {"enable-fs-nosymfollow", flag_descriptions::kFsNosymfollowName,
4352 flag_descriptions::kFsNosymfollowDescription, kOsCrOS,
4353 FEATURE_VALUE_TYPE(chromeos::features::kFsNosymfollow)},
4354 {"enable-arc-unified-audio-focus",
4355 flag_descriptions::kEnableArcUnifiedAudioFocusName,
4356 flag_descriptions::kEnableArcUnifiedAudioFocusDescription, kOsCrOS,
4357 FEATURE_VALUE_TYPE(arc::kEnableUnifiedAudioFocusFeature)},
4358 #endif // defined(OS_CHROMEOS)
4361 {"use-angle", flag_descriptions::kUseAngleName,
4362 flag_descriptions::kUseAngleDescription, kOsWin,
4363 MULTI_VALUE_TYPE(kUseAngleChoices)},
4365 #if defined(OS_ANDROID)
4366 {"draw-vertically-edge-to-edge",
4367 flag_descriptions::kDrawVerticallyEdgeToEdgeName,
4368 flag_descriptions::kDrawVerticallyEdgeToEdgeDescription, kOsAndroid,
4369 FEATURE_VALUE_TYPE(chrome::android::kDrawVerticallyEdgeToEdge)},
4371 #if defined(OS_ANDROID)
4372 {"enable-ephemeral-tab-bottom-sheet",
4373 flag_descriptions::kEphemeralTabUsingBottomSheetName,
4374 flag_descriptions::kEphemeralTabUsingBottomSheetDescription, kOsAndroid,
4375 FEATURE_VALUE_TYPE(chrome::android::kEphemeralTabUsingBottomSheet)},
4376 {"overlay-new-layout", flag_descriptions::kOverlayNewLayoutName,
4377 flag_descriptions::kOverlayNewLayoutDescription, kOsAndroid,
4378 FEATURE_VALUE_TYPE(chrome::android::kOverlayNewLayout)},
4379 #endif // defined(OS_ANDROID)
4381 #if defined(OS_CHROMEOS)
4382 {"enable-assistant-dsp", flag_descriptions::kEnableGoogleAssistantDspName,
4383 flag_descriptions::kEnableGoogleAssistantDspDescription, kOsCrOS,
4384 FEATURE_VALUE_TYPE(chromeos::assistant::features::kEnableDspHotword)},
4386 {"enable-assistant-app-support",
4387 flag_descriptions::kEnableAssistantAppSupportName,
4388 flag_descriptions::kEnableAssistantAppSupportDescription, kOsCrOS,
4389 FEATURE_VALUE_TYPE(chromeos::assistant::features::kAssistantAppSupport)},
4391 {"enable-assistant-media-session-integration",
4392 flag_descriptions::kEnableAssistantMediaSessionIntegrationName,
4393 flag_descriptions::kEnableAssistantMediaSessionIntegrationDescription,
4396 chromeos::assistant::features::kEnableMediaSessionIntegration)},
4398 {"enable-quick-answers", flag_descriptions::kEnableQuickAnswersName,
4399 flag_descriptions::kEnableQuickAnswersDescription, kOsCrOS,
4400 FEATURE_VALUE_TYPE(chromeos::features::kQuickAnswers)},
4402 {"enable-quick-answers-rich-ui",
4403 flag_descriptions::kEnableQuickAnswersRichUiName,
4404 flag_descriptions::kEnableQuickAnswersRichUiDescription, kOsCrOS,
4405 FEATURE_VALUE_TYPE(chromeos::features::kQuickAnswersRichUi)},
4407 {"enable-quick-answers-text-annotator",
4408 flag_descriptions::kEnableQuickAnswersTextAnnotatorName,
4409 flag_descriptions::kEnableQuickAnswersTextAnnotatorDescription, kOsCrOS,
4410 FEATURE_VALUE_TYPE(chromeos::features::kQuickAnswersTextAnnotator)},
4412 {"enable-on-device-assistant",
4413 flag_descriptions::kEnableOnDeviceAssistantName,
4414 flag_descriptions::kEnableOnDeviceAssistantDescription, kOsCrOS,
4416 chromeos::assistant::features::kEnableOnDeviceAssistant)},
4418 #endif // defined(OS_CHROMEOS)
4420 #if BUILDFLAG(ENABLE_CLICK_TO_CALL)
4421 {"click-to-call-ui", flag_descriptions::kClickToCallUIName,
4422 flag_descriptions::kClickToCallUIDescription, kOsDesktop,
4423 FEATURE_VALUE_TYPE(kClickToCallUI)},
4424 #endif // BUILDFLAG(ENABLE_CLICK_TO_CALL)
4426 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
4427 defined(OS_CHROMEOS)
4428 {"remote-copy-receiver", flag_descriptions::kRemoteCopyReceiverName,
4429 flag_descriptions::kRemoteCopyReceiverDescription, kOsDesktop,
4430 FEATURE_VALUE_TYPE(kRemoteCopyReceiver)},
4431 {"remote-copy-image-notification",
4432 flag_descriptions::kRemoteCopyImageNotificationName,
4433 flag_descriptions::kRemoteCopyImageNotificationDescription, kOsDesktop,
4434 FEATURE_VALUE_TYPE(kRemoteCopyImageNotification)},
4435 {"remote-copy-persistent-notification",
4436 flag_descriptions::kRemoteCopyPersistentNotificationName,
4437 flag_descriptions::kRemoteCopyPersistentNotificationDescription,
4438 kOsDesktop, FEATURE_VALUE_TYPE(kRemoteCopyPersistentNotification)},
4439 {"remote-copy-progress-notification",
4440 flag_descriptions::kRemoteCopyProgressNotificationName,
4441 flag_descriptions::kRemoteCopyProgressNotificationDescription, kOsDesktop,
4442 FEATURE_VALUE_TYPE(kRemoteCopyProgressNotification)},
4443 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
4444 // defined(OS_CHROMEOS)
4446 {"shared-clipboard-ui", flag_descriptions::kSharedClipboardUIName,
4447 flag_descriptions::kSharedClipboardUIDescription, kOsAll,
4448 FEATURE_VALUE_TYPE(kSharedClipboardUI)},
4450 {"enable-ambient-authentication-in-incognito",
4451 flag_descriptions::kEnableAmbientAuthenticationInIncognitoName,
4452 flag_descriptions::kEnableAmbientAuthenticationInIncognitoDescription,
4454 FEATURE_VALUE_TYPE(features::kEnableAmbientAuthenticationInIncognito)},
4456 {"enable-ambient-authentication-in-guest-session",
4457 flag_descriptions::kEnableAmbientAuthenticationInGuestSessionName,
4458 flag_descriptions::kEnableAmbientAuthenticationInGuestSessionDescription,
4460 FEATURE_VALUE_TYPE(features::kEnableAmbientAuthenticationInGuestSession)},
4462 {"enable-send-tab-to-self-omnibox-sending-animation",
4463 flag_descriptions::kSendTabToSelfOmniboxSendingAnimationName,
4464 flag_descriptions::kSendTabToSelfOmniboxSendingAnimationDescription,
4467 send_tab_to_self::kSendTabToSelfOmniboxSendingAnimation)},
4469 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
4470 defined(OS_CHROMEOS)
4471 {"sharing-peer-connection-receiver",
4472 flag_descriptions::kSharingPeerConnectionReceiverName,
4473 flag_descriptions::kSharingPeerConnectionReceiverDescription, kOsDesktop,
4474 FEATURE_VALUE_TYPE(kSharingPeerConnectionReceiver)},
4476 {"sharing-peer-connection-sender",
4477 flag_descriptions::kSharingPeerConnectionSenderName,
4478 flag_descriptions::kSharingPeerConnectionSenderDescription, kOsDesktop,
4479 FEATURE_VALUE_TYPE(kSharingPeerConnectionSender)},
4480 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
4481 // defined(OS_CHROMEOS)
4483 {"sharing-prefer-vapid", flag_descriptions::kSharingPreferVapidName,
4484 flag_descriptions::kSharingPreferVapidDescription, kOsAll,
4485 FEATURE_VALUE_TYPE(kSharingPreferVapid)},
4487 {"sharing-qr-code-generator",
4488 flag_descriptions::kSharingQRCodeGeneratorName,
4489 flag_descriptions::kSharingQRCodeGeneratorDescription, kOsDesktop,
4490 FEATURE_VALUE_TYPE(kSharingQRCodeGenerator)},
4492 {"sharing-send-via-sync", flag_descriptions::kSharingSendViaSyncName,
4493 flag_descriptions::kSharingSendViaSyncDescription, kOsAll,
4494 FEATURE_VALUE_TYPE(kSharingSendViaSync)},
4496 {"sharing-device-expiration",
4497 flag_descriptions::kSharingDeviceExpirationName,
4498 flag_descriptions::kSharingDeviceExpirationDescription, kOsAll,
4499 FEATURE_WITH_PARAMS_VALUE_TYPE(kSharingDeviceExpiration,
4500 kSharingDeviceExpirationVariations,
4501 "SharingDeviceExpiration")},
4503 #if defined(OS_CHROMEOS)
4504 {"discover-app", flag_descriptions::kEnableDiscoverAppName,
4505 flag_descriptions::kEnableDiscoverAppDescription, kOsCrOS,
4506 FEATURE_VALUE_TYPE(chromeos::features::kDiscoverApp)},
4507 #endif // defined(OS_CHROMEOS)
4509 #if defined(OS_CHROMEOS)
4510 {"ash-enable-pip-rounded-corners",
4511 flag_descriptions::kAshEnablePipRoundedCornersName,
4512 flag_descriptions::kAshEnablePipRoundedCornersDescription, kOsCrOS,
4513 FEATURE_VALUE_TYPE(ash::features::kPipRoundedCorners)},
4515 {"ash-swap-side-volume-buttons-for-orientation",
4516 flag_descriptions::kAshSwapSideVolumeButtonsForOrientationName,
4517 flag_descriptions::kAshSwapSideVolumeButtonsForOrientationDescription,
4519 FEATURE_VALUE_TYPE(ash::features::kSwapSideVolumeButtonsForOrientation)},
4520 #endif // defined(OS_CHROMEOS)
4521 {"google-password-manager", flag_descriptions::kGooglePasswordManagerName,
4522 flag_descriptions::kGooglePasswordManagerDescription, kOsAll,
4523 FEATURE_VALUE_TYPE(password_manager::features::kGooglePasswordManager)},
4525 {"enable-implicit-root-scroller",
4526 flag_descriptions::kEnableImplicitRootScrollerName,
4527 flag_descriptions::kEnableImplicitRootScrollerDescription, kOsAll,
4528 FEATURE_VALUE_TYPE(blink::features::kImplicitRootScroller)},
4530 {"enable-cssom-view-scroll-coordinates",
4531 flag_descriptions::kEnableCSSOMViewScrollCoordinatesName,
4532 flag_descriptions::kEnableCSSOMViewScrollCoordinatesDescription, kOsAll,
4533 FEATURE_VALUE_TYPE(blink::features::kCSSOMViewScrollCoordinates)},
4535 {"enable-text-fragment-anchor",
4536 flag_descriptions::kEnableTextFragmentAnchorName,
4537 flag_descriptions::kEnableTextFragmentAnchorDescription, kOsAll,
4538 FEATURE_VALUE_TYPE(blink::features::kTextFragmentAnchor)},
4540 #if defined(OS_CHROMEOS)
4541 {"enable-assistant-stereo-input",
4542 flag_descriptions::kEnableGoogleAssistantStereoInputName,
4543 flag_descriptions::kEnableGoogleAssistantStereoInputDescription, kOsCrOS,
4545 chromeos::assistant::features::kEnableStereoAudioInput)},
4546 #endif // defined(OS_CHROMEOS)
4548 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) && defined(OS_MACOSX)
4549 {"enable-custom-mac-paper-sizes",
4550 flag_descriptions::kEnableCustomMacPaperSizesName,
4551 flag_descriptions::kEnableCustomMacPaperSizesDescription, kOsMac,
4552 FEATURE_VALUE_TYPE(printing::features::kEnableCustomMacPaperSizes)},
4555 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
4556 defined(OS_CHROMEOS)
4557 {"enable-reopen-tab-in-product-help",
4558 flag_descriptions::kReopenTabInProductHelpName,
4559 flag_descriptions::kReopenTabInProductHelpDescription, kOsDesktop,
4560 FEATURE_VALUE_TYPE(feature_engagement::kIPHReopenTabFeature)},
4561 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
4562 // defined(OS_CHROMEOS)
4564 {"enable-audio-focus-enforcement",
4565 flag_descriptions::kEnableAudioFocusEnforcementName,
4566 flag_descriptions::kEnableAudioFocusEnforcementDescription, kOsDesktop,
4567 FEATURE_VALUE_TYPE(media_session::features::kAudioFocusEnforcement)},
4568 {"enable-media-session-service",
4569 flag_descriptions::kEnableMediaSessionServiceName,
4570 flag_descriptions::kEnableMediaSessionServiceDescription, kOsDesktop,
4571 FEATURE_VALUE_TYPE(media_session::features::kMediaSessionService)},
4572 {"enable-gpu-service-logging",
4573 flag_descriptions::kEnableGpuServiceLoggingName,
4574 flag_descriptions::kEnableGpuServiceLoggingDescription, kOsAll,
4575 SINGLE_VALUE_TYPE(switches::kEnableGPUServiceLogging)},
4577 #if !defined(OS_ANDROID)
4578 {"hardware-media-key-handling",
4579 flag_descriptions::kHardwareMediaKeyHandling,
4580 flag_descriptions::kHardwareMediaKeyHandlingDescription, kOsDesktop,
4581 FEATURE_VALUE_TYPE(media::kHardwareMediaKeyHandling)},
4584 {"enable-paint-holding", flag_descriptions::kPaintHoldingName,
4585 flag_descriptions::kPaintHoldingDescription, kOsAll,
4586 FEATURE_VALUE_TYPE(blink::features::kPaintHolding)},
4588 #if defined(OS_CHROMEOS)
4589 {"app-service-adaptive-icon",
4590 flag_descriptions::kAppServiceAdaptiveIconName,
4591 flag_descriptions::kAppServiceAdaptiveIconDescription, kOsCrOS,
4592 FEATURE_VALUE_TYPE(features::kAppServiceAdaptiveIcon)},
4594 {"app-service-instance-registry",
4595 flag_descriptions::kAppServiceInstanceRegistryName,
4596 flag_descriptions::kAppServiceInstanceRegistryDescription, kOsCrOS,
4597 FEATURE_VALUE_TYPE(features::kAppServiceInstanceRegistry)},
4599 {"app-service-intent-handling",
4600 flag_descriptions::kAppServiceIntentHandlingName,
4601 flag_descriptions::kAppServiceIntentHandlingDescription, kOsCrOS,
4602 FEATURE_VALUE_TYPE(features::kAppServiceIntentHandling)},
4604 {"ash-swiping-from-left-edge-to-go-back",
4605 flag_descriptions::kAshSwipingFromLeftEdgeToGoBackName,
4606 flag_descriptions::kAshSwipingFromLeftEdgeToGoBackDescription, kOsCrOS,
4607 FEATURE_VALUE_TYPE(ash::features::kSwipingFromLeftEdgeToGoBack)},
4609 {"use-fake-device-for-media-stream",
4610 flag_descriptions::kUseFakeDeviceForMediaStreamName,
4611 flag_descriptions::kUseFakeDeviceForMediaStreamDescription, kOsCrOS,
4612 FEATURE_VALUE_TYPE(media::kUseFakeDeviceForMediaStream)},
4614 {"ash-drag-window-from-shelf",
4615 flag_descriptions::kAshDragWindowFromShelfName,
4616 flag_descriptions::kAshDragWindowFromShelfDescription, kOsCrOS,
4617 FEATURE_VALUE_TYPE(ash::features::kDragFromShelfToHomeOrOverview)},
4619 {"intent-picker-pwa-persistence",
4620 flag_descriptions::kIntentPickerPWAPersistenceName,
4621 flag_descriptions::kIntentPickerPWAPersistenceDescription, kOsCrOS,
4622 FEATURE_VALUE_TYPE(features::kIntentPickerPWAPersistence)},
4624 {"intent-handling-sharing", flag_descriptions::kIntentHandlingSharingName,
4625 flag_descriptions::kIntentHandlingSharingDescription, kOsCrOS,
4626 FEATURE_VALUE_TYPE(features::kIntentHandlingSharing)},
4627 #endif // defined(OS_CHROMEOS)
4630 {"d3d11-video-decoder", flag_descriptions::kD3D11VideoDecoderName,
4631 flag_descriptions::kD3D11VideoDecoderDescription, kOsWin,
4632 FEATURE_VALUE_TYPE(media::kD3D11VideoDecoder)},
4633 #elif defined(OS_CHROMEOS)
4634 {"chromeos-video-decoder", flag_descriptions::kChromeosVideoDecoderName,
4635 flag_descriptions::kChromeosVideoDecoderDescription, kOsCrOS,
4636 FEATURE_VALUE_TYPE(media::kChromeosVideoDecoder)},
4639 #if defined(OS_ANDROID)
4640 {"autofill-assistant-chrome-entry",
4641 flag_descriptions::kAutofillAssistantChromeEntryName,
4642 flag_descriptions::kAutofillAssistantChromeEntryDescription, kOsAndroid,
4644 autofill_assistant::features::kAutofillAssistantChromeEntry)},
4646 {"autofill-assistant-direct-actions",
4647 flag_descriptions::kAutofillAssistantDirectActionsName,
4648 flag_descriptions::kAutofillAssistantDirectActionsDescription, kOsAndroid,
4650 autofill_assistant::features::kAutofillAssistantDirectActions)},
4651 #endif // defined(OS_ANDROID)
4653 {"disable-best-effort-tasks",
4654 flag_descriptions::kDisableBestEffortTasksName,
4655 flag_descriptions::kDisableBestEffortTasksDescription, kOsAll,
4656 SINGLE_VALUE_TYPE(switches::kDisableBestEffortTasks)},
4658 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
4659 {"web-contents-occlusion", flag_descriptions::kWebContentsOcclusionName,
4660 flag_descriptions::kWebContentsOcclusionDescription,
4661 kOsWin | kOsMac | kOsCrOS,
4662 FEATURE_VALUE_TYPE(features::kWebContentsOcclusion)},
4663 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
4665 #if defined(OS_ANDROID)
4666 {"mobile-identity-consistency",
4667 flag_descriptions::kMobileIdentityConsistencyName,
4668 flag_descriptions::kMobileIdentityConsistencyDescription, kOsAndroid,
4669 FEATURE_VALUE_TYPE(signin::kMobileIdentityConsistency)},
4670 #endif // defined(OS_ANDROID)
4672 #if defined(OS_ANDROID)
4673 {"sync-error-infobar", flag_descriptions::kSyncErrorInfoBarName,
4674 flag_descriptions::kSyncErrorInfoBarDescription, kOsAndroid,
4675 FEATURE_VALUE_TYPE(switches::kSyncErrorInfoBarAndroid)},
4676 #endif // defined(OS_ANDROID)
4678 {"autofill-use-improved-label-disambiguation",
4679 flag_descriptions::kAutofillUseImprovedLabelDisambiguationName,
4680 flag_descriptions::kAutofillUseImprovedLabelDisambiguationDescription,
4683 autofill::features::kAutofillUseImprovedLabelDisambiguation)},
4685 #if defined(OS_ANDROID)
4686 {"cct-target-translate-language",
4687 flag_descriptions::kCCTTargetTranslateLanguageName,
4688 flag_descriptions::kCCTTargetTranslateLanguageDescription, kOsAndroid,
4689 FEATURE_VALUE_TYPE(chrome::android::kCCTTargetTranslateLanguage)},
4692 {"native-file-system-api", flag_descriptions::kNativeFileSystemAPIName,
4693 flag_descriptions::kNativeFileSystemAPIDescription, kOsDesktop,
4694 FEATURE_VALUE_TYPE(blink::features::kNativeFileSystemAPI)},
4696 {"file-handling-api", flag_descriptions::kFileHandlingAPIName,
4697 flag_descriptions::kFileHandlingAPIDescription, kOsDesktop,
4698 FEATURE_VALUE_TYPE(blink::features::kFileHandlingAPI)},
4700 #if defined(TOOLKIT_VIEWS)
4701 {"installable-ink-drop", flag_descriptions::kInstallableInkDropName,
4702 flag_descriptions::kInstallableInkDropDescription, kOsDesktop,
4703 FEATURE_VALUE_TYPE(views::kInstallableInkDropFeature)},
4704 #endif // defined(TOOLKIT_VIEWS)
4706 #if defined(OS_CHROMEOS)
4707 {"enable-assistant-launcher-integration",
4708 flag_descriptions::kEnableAssistantLauncherIntegrationName,
4709 flag_descriptions::kEnableAssistantLauncherIntegrationDescription, kOsCrOS,
4710 FEATURE_VALUE_TYPE(app_list_features::kEnableAssistantSearch)},
4711 #endif // OS_CHROMEOS
4713 #if defined(TOOLKIT_VIEWS)
4714 {"enable-md-rounded-corners-on-dialogs",
4715 flag_descriptions::kEnableMDRoundedCornersOnDialogsName,
4716 flag_descriptions::kEnableMDRoundedCornersOnDialogsDescription, kOsDesktop,
4717 FEATURE_VALUE_TYPE(views::features::kEnableMDRoundedCornersOnDialogs)},
4719 {"enable-new-badge-on-menu-items",
4720 flag_descriptions::kEnableNewBadgeOnMenuItemsName,
4721 flag_descriptions::kEnableNewBadgeOnMenuItemsDescription, kOsDesktop,
4722 FEATURE_VALUE_TYPE(views::features::kEnableNewBadgeOnMenuItems)},
4723 #endif // defined(TOOLKIT_VIEWS)
4725 {"strict-origin-isolation", flag_descriptions::kStrictOriginIsolationName,
4726 flag_descriptions::kStrictOriginIsolationDescription, kOsAll,
4727 FEATURE_VALUE_TYPE(features::kStrictOriginIsolation)},
4729 #if defined(OS_ANDROID)
4730 {"enable-logging-js-console-messages",
4731 flag_descriptions::kLogJsConsoleMessagesName,
4732 flag_descriptions::kLogJsConsoleMessagesDescription, kOsAndroid,
4733 FEATURE_VALUE_TYPE(features::kLogJsConsoleMessages)},
4734 #endif // OS_ANDROID
4736 {"enable-skia-renderer", flag_descriptions::kSkiaRendererName,
4737 flag_descriptions::kSkiaRendererDescription,
4738 kOsLinux | kOsWin | kOsAndroid,
4739 FEATURE_VALUE_TYPE(features::kUseSkiaRenderer)},
4741 #if defined(OS_CHROMEOS)
4742 {"allow-disable-mouse-acceleration",
4743 flag_descriptions::kAllowDisableMouseAccelerationName,
4744 flag_descriptions::kAllowDisableMouseAccelerationDescription, kOsCrOS,
4745 FEATURE_VALUE_TYPE(features::kAllowDisableMouseAcceleration)},
4747 {"allow-scroll-settings", flag_descriptions::kAllowScrollSettingsName,
4748 flag_descriptions::kAllowScrollSettingsDescription, kOsCrOS,
4749 FEATURE_VALUE_TYPE(chromeos::features::kAllowScrollSettings)},
4751 {"enable-streamlined-usb-printer-setup",
4752 flag_descriptions::kStreamlinedUsbPrinterSetupName,
4753 flag_descriptions::kStreamlinedUsbPrinterSetupDescription, kOsCrOS,
4754 FEATURE_VALUE_TYPE(features::kStreamlinedUsbPrinterSetup)},
4756 {"enable-media-session-notifications",
4757 flag_descriptions::kMediaSessionNotificationsName,
4758 flag_descriptions::kMediaSessionNotificationsDescription, kOsCrOS,
4759 FEATURE_VALUE_TYPE(ash::features::kMediaSessionNotification)},
4761 {"enable-neural-stylus-palm-rejection",
4762 flag_descriptions::kEnableNeuralStylusPalmRejectionName,
4763 flag_descriptions::kEnableNeuralStylusPalmRejectionDescription, kOsCrOS,
4764 FEATURE_VALUE_TYPE(ui::kEnableNeuralPalmDetectionFilter)},
4766 {"enable-palm-max-touch-major",
4767 flag_descriptions::kEnablePalmOnMaxTouchMajorName,
4768 flag_descriptions::kEnablePalmOnMaxTouchMajorDescription, kOsCrOS,
4769 FEATURE_VALUE_TYPE(ui::kEnablePalmOnMaxTouchMajor)},
4771 {"enable-palm-tool-type-palm",
4772 flag_descriptions::kEnablePalmOnToolTypePalmName,
4773 flag_descriptions::kEnablePalmOnToolTypePalmName, kOsCrOS,
4774 FEATURE_VALUE_TYPE(ui::kEnablePalmOnToolTypePalm)},
4776 {"enable-heuristic-stylus-palm-rejection",
4777 flag_descriptions::kEnableHeuristicStylusPalmRejectionName,
4778 flag_descriptions::kEnableHeuristicStylusPalmRejectionDescription, kOsCrOS,
4779 FEATURE_VALUE_TYPE(ui::kEnableHeuristicPalmDetectionFilter)},
4781 {"enable-hide-arc-media-notifications",
4782 flag_descriptions::kHideArcMediaNotificationsName,
4783 flag_descriptions::kHideArcMediaNotificationsDescription, kOsCrOS,
4784 FEATURE_VALUE_TYPE(ash::features::kHideArcMediaNotifications)},
4786 {"reduce-display-notifications",
4787 flag_descriptions::kReduceDisplayNotificationsName,
4788 flag_descriptions::kReduceDisplayNotificationsDescription, kOsCrOS,
4789 FEATURE_VALUE_TYPE(ash::features::kReduceDisplayNotifications)},
4791 {"use-search-click-for-right-click",
4792 flag_descriptions::kUseSearchClickForRightClickName,
4793 flag_descriptions::kUseSearchClickForRightClickDescription, kOsCrOS,
4794 FEATURE_VALUE_TYPE(chromeos::features::kUseSearchClickForRightClick)},
4796 {"show-metered-toggle", flag_descriptions::kMeteredShowToggleName,
4797 flag_descriptions::kMeteredShowToggleDescription, kOsCrOS,
4798 FEATURE_VALUE_TYPE(features::kMeteredShowToggle)},
4800 {"enable-print-server-ui", flag_descriptions::kPrintServerUiName,
4801 flag_descriptions::kPrintServerUiDescription, kOsCrOS,
4802 FEATURE_VALUE_TYPE(features::kPrintServerUi)},
4804 {"printer-status", flag_descriptions::kPrinterStatusName,
4805 flag_descriptions::kPrinterStatusDescription, kOsCrOS,
4806 FEATURE_VALUE_TYPE(chromeos::features::kPrinterStatus)},
4808 {"print-job-management-app", flag_descriptions::kPrintJobManagementAppName,
4809 flag_descriptions::kPrintJobManagementAppDescription, kOsCrOS,
4810 FEATURE_VALUE_TYPE(chromeos::features::kPrintJobManagementApp)},
4812 {"display-identification", flag_descriptions::kDisplayIdentificationName,
4813 flag_descriptions::kDisplayIdentificationDescription, kOsCrOS,
4814 FEATURE_VALUE_TYPE(ash::features::kDisplayIdentification)},
4815 #endif // OS_CHROMEOS
4817 {"autofill-off-no-server-data",
4818 flag_descriptions::kAutofillOffNoServerDataName,
4819 flag_descriptions::kAutofillOffNoServerDataDescription, kOsAll,
4820 FEATURE_VALUE_TYPE(autofill::features::kAutofillOffNoServerData)},
4822 {"enable-portals", flag_descriptions::kEnablePortalsName,
4823 flag_descriptions::kEnablePortalsDescription, kOsAll,
4824 FEATURE_VALUE_TYPE(blink::features::kPortals)},
4825 {"enable-portals-cross-origin",
4826 flag_descriptions::kEnablePortalsCrossOriginName,
4827 flag_descriptions::kEnablePortalsCrossOriginDescription, kOsAll,
4828 FEATURE_VALUE_TYPE(blink::features::kPortalsCrossOrigin)},
4829 {"enable-autofill-credit-card-authentication",
4830 flag_descriptions::kEnableAutofillCreditCardAuthenticationName,
4831 flag_descriptions::kEnableAutofillCreditCardAuthenticationDescription,
4833 FEATURE_VALUE_TYPE(autofill::features::kAutofillCreditCardAuthentication)},
4835 #if defined(OS_MACOSX)
4836 {"mac-system-media-permissions-info-ui",
4837 flag_descriptions::kMacSystemMediaPermissionsInfoUiName,
4838 flag_descriptions::kMacSystemMediaPermissionsInfoUiDescription, kOsMac,
4839 FEATURE_VALUE_TYPE(features::kMacSystemMediaPermissionsInfoUi)},
4840 #endif // defined(OS_MACOSX)
4842 {"storage-access-api", flag_descriptions::kStorageAccessAPIName,
4843 flag_descriptions::kStorageAccessAPIDescription, kOsAll,
4844 FEATURE_VALUE_TYPE(blink::features::kStorageAccessAPI)},
4846 {"same-site-by-default-cookies",
4847 flag_descriptions::kSameSiteByDefaultCookiesName,
4848 flag_descriptions::kSameSiteByDefaultCookiesDescription, kOsAll,
4849 FEATURE_VALUE_TYPE(net::features::kSameSiteByDefaultCookies)},
4851 {"enable-removing-all-third-party-cookies",
4852 flag_descriptions::kEnableRemovingAllThirdPartyCookiesName,
4853 flag_descriptions::kEnableRemovingAllThirdPartyCookiesDescription,
4856 browsing_data::features::kEnableRemovingAllThirdPartyCookies)},
4858 {"cookies-without-same-site-must-be-secure",
4859 flag_descriptions::kCookiesWithoutSameSiteMustBeSecureName,
4860 flag_descriptions::kCookiesWithoutSameSiteMustBeSecureDescription, kOsAll,
4861 FEATURE_VALUE_TYPE(net::features::kCookiesWithoutSameSiteMustBeSecure)},
4863 #if defined(OS_CHROMEOS)
4864 {"enterprise-reporting-in-chromeos",
4865 flag_descriptions::kEnterpriseReportingInChromeOSName,
4866 flag_descriptions::kEnterpriseReportingInChromeOSDescription, kOsCrOS,
4867 FEATURE_VALUE_TYPE(features::kEnterpriseReportingInChromeOS)},
4868 #endif // !defined(OS_CHROMEOS)
4870 {"enable-unsafe-webgpu", flag_descriptions::kUnsafeWebGPUName,
4871 flag_descriptions::kUnsafeWebGPUDescription, kOsMac | kOsWin,
4872 SINGLE_VALUE_TYPE(switches::kEnableUnsafeWebGPU)},
4874 #if defined(OS_ANDROID)
4875 {"autofill-use-mobile-label-disambiguation",
4876 flag_descriptions::kAutofillUseMobileLabelDisambiguationName,
4877 flag_descriptions::kAutofillUseMobileLabelDisambiguationDescription,
4879 FEATURE_WITH_PARAMS_VALUE_TYPE(
4880 autofill::features::kAutofillUseMobileLabelDisambiguation,
4881 kAutofillUseMobileLabelDisambiguationVariations,
4882 "AutofillUseMobileLabelDisambiguation")},
4883 #endif // defined(OS_ANDROID)
4885 {"autofill-prune-suggestions",
4886 flag_descriptions::kAutofillPruneSuggestionsName,
4887 flag_descriptions::kAutofillPruneSuggestionsDescription, kOsAll,
4888 FEATURE_VALUE_TYPE(autofill::features::kAutofillPruneSuggestions)},
4890 {"allow-popups-during-page-unload",
4891 flag_descriptions::kAllowPopupsDuringPageUnloadName,
4892 flag_descriptions::kAllowPopupsDuringPageUnloadDescription,
4893 kOsAll | kDeprecated,
4894 FEATURE_VALUE_TYPE(features::kAllowPopupsDuringPageUnload)},
4896 #if defined(OS_CHROMEOS)
4897 {"enable-advanced-ppd-attributes",
4898 flag_descriptions::kEnableAdvancedPpdAttributesName,
4899 flag_descriptions::kEnableAdvancedPpdAttributesDescription, kOsCrOS,
4900 FEATURE_VALUE_TYPE(printing::features::kAdvancedPpdAttributes)},
4901 #endif // defined(OS_CHROMEOS)
4903 {"allow-sync-xhr-in-page-dismissal",
4904 flag_descriptions::kAllowSyncXHRInPageDismissalName,
4905 flag_descriptions::kAllowSyncXHRInPageDismissalDescription,
4906 kOsAll | kDeprecated,
4907 FEATURE_VALUE_TYPE(blink::features::kAllowSyncXHRInPageDismissal)},
4909 #if !defined(OS_ANDROID)
4910 {"form-controls-dark-mode", flag_descriptions::kFormControlsDarkModeName,
4911 flag_descriptions::kFormControlsDarkModeDescription, kOsDesktop,
4912 FEATURE_VALUE_TYPE(features::kCSSColorSchemeUARendering)},
4913 #endif // !defined(OS_ANDROID)
4915 {"form-controls-refresh", flag_descriptions::kFormControlsRefreshName,
4916 flag_descriptions::kFormControlsRefreshDescription, kOsAll,
4917 FEATURE_VALUE_TYPE(features::kFormControlsRefresh)},
4919 #if defined(OS_CHROMEOS)
4920 {"auto-screen-brightness", flag_descriptions::kAutoScreenBrightnessName,
4921 flag_descriptions::kAutoScreenBrightnessDescription, kOsCrOS,
4922 FEATURE_VALUE_TYPE(chromeos::features::kAutoScreenBrightness)},
4923 {"sync-wifi-configurations", flag_descriptions::kSyncWifiConfigurationsName,
4924 flag_descriptions::kSyncWifiConfigurationsDescription, kOsCrOS,
4925 FEATURE_VALUE_TYPE(switches::kSyncWifiConfigurations)},
4926 #endif // defined(OS_CHROMEOS)
4928 {"audio-worklet-realtime-thread",
4929 flag_descriptions::kAudioWorkletRealtimeThreadName,
4930 flag_descriptions::kAudioWorkletRealtimeThreadDescription, kOsAll,
4931 FEATURE_VALUE_TYPE(blink::features::kAudioWorkletRealtimeThread)},
4933 #if defined(OS_CHROMEOS)
4934 {"release-notes", flag_descriptions::kReleaseNotesName,
4935 flag_descriptions::kReleaseNotesDescription, kOsCrOS,
4936 FEATURE_VALUE_TYPE(chromeos::features::kReleaseNotes)},
4937 #endif // defined(OS_CHROMEOS)
4939 #if defined(OS_CHROMEOS)
4940 {"maintain-shelf-state-overview",
4941 flag_descriptions::kMaintainShelfStateWhenEnteringOverviewName,
4942 flag_descriptions::kMaintainShelfStateWhenEnteringOverviewDescription,
4945 ash::features::kMaintainShelfStateWhenEnteringOverview)},
4946 #endif // defined(OS_CHROMEOS)
4948 #if defined(OS_CHROMEOS)
4949 {"smart-dim-model-v3", flag_descriptions::kSmartDimModelV3Name,
4950 flag_descriptions::kSmartDimModelV3Description, kOsCrOS,
4951 FEATURE_VALUE_TYPE(chromeos::features::kSmartDimModelV3)},
4952 {"smart-dim-new-ml-agent", flag_descriptions::kSmartDimNewMlAgentName,
4953 flag_descriptions::kSmartDimNewMlAgentDescription, kOsCrOS,
4954 FEATURE_VALUE_TYPE(chromeos::features::kSmartDimNewMlAgent)},
4955 #endif // defined(OS_CHROMEOS)
4957 #if defined(OS_ANDROID)
4958 {"privacy-elevated-android", flag_descriptions::kPrivacyElevatedAndroidName,
4959 flag_descriptions::kPrivacyElevatedAndroidDescription, kOsAndroid,
4960 FEATURE_VALUE_TYPE(features::kPrivacyElevatedAndroid)},
4963 {"privacy-settings-redesign",
4964 flag_descriptions::kPrivacySettingsRedesignName,
4965 flag_descriptions::kPrivacySettingsRedesignDescription, kOsDesktop,
4966 FEATURE_VALUE_TYPE(features::kPrivacySettingsRedesign)},
4968 #if defined(OS_ANDROID)
4969 {"safety-check-android", flag_descriptions::kSafetyCheckAndroidName,
4970 flag_descriptions::kSafetyCheckAndroidDescription, kOsAndroid,
4971 FEATURE_VALUE_TYPE(features::kSafetyCheckAndroid)},
4974 #if defined(OS_CHROMEOS)
4975 {"gesture-properties-dbus-service",
4976 flag_descriptions::kEnableGesturePropertiesDBusServiceName,
4977 flag_descriptions::kEnableGesturePropertiesDBusServiceDescription, kOsCrOS,
4978 FEATURE_VALUE_TYPE(chromeos::features::kGesturePropertiesDBusService)},
4979 #endif // defined(OS_CHROMEOS)
4981 {"cookie-deprecation-messages",
4982 flag_descriptions::kCookieDeprecationMessagesName,
4983 flag_descriptions::kCookieDeprecationMessagesDescription, kOsAll,
4984 FEATURE_VALUE_TYPE(features::kCookieDeprecationMessages)},
4986 {"ev-details-in-page-info", flag_descriptions::kEvDetailsInPageInfoName,
4987 flag_descriptions::kEvDetailsInPageInfoDescription, kOsDesktop,
4988 FEATURE_VALUE_TYPE(features::kEvDetailsInPageInfo)},
4990 {"enable-autofill-credit-card-upload-feedback",
4991 flag_descriptions::kEnableAutofillCreditCardUploadFeedbackName,
4992 flag_descriptions::kEnableAutofillCreditCardUploadFeedbackDescription,
4993 kOsWin | kOsMac | kOsLinux,
4994 FEATURE_VALUE_TYPE(autofill::features::kAutofillCreditCardUploadFeedback)},
4996 {"font-access", flag_descriptions::kFontAccessAPIName,
4997 flag_descriptions::kFontAccessAPIDescription, kOsAll,
4998 FEATURE_VALUE_TYPE(blink::features::kFontAccess)},
5000 #if defined(OS_CHROMEOS)
5001 {"enable-parental-controls-settings",
5002 flag_descriptions::kEnableParentalControlsSettingsName,
5003 flag_descriptions::kEnableParentalControlsSettingsDescription, kOsCrOS,
5004 FEATURE_VALUE_TYPE(chromeos::features::kParentalControlsSettings)},
5005 #endif // defined(OS_CHROMEOS)
5007 {"mouse-subframe-no-implicit-capture",
5008 flag_descriptions::kMouseSubframeNoImplicitCaptureName,
5009 flag_descriptions::kMouseSubframeNoImplicitCaptureDescription, kOsAll,
5010 FEATURE_VALUE_TYPE(features::kMouseSubframeNoImplicitCapture)},
5012 #if defined(OS_ANDROID)
5013 {"touch-to-fill", flag_descriptions::kAutofillTouchToFillName,
5014 flag_descriptions::kAutofillTouchToFillDescription, kOsAndroid,
5015 FEATURE_VALUE_TYPE(autofill::features::kAutofillTouchToFill)},
5016 #endif // defined(OS_ANDROID)
5018 {"enable-sync-trusted-vault",
5019 flag_descriptions::kEnableSyncTrustedVaultName,
5020 flag_descriptions::kEnableSyncTrustedVaultDescription, kOsAll,
5021 FEATURE_VALUE_TYPE(switches::kSyncSupportTrustedVaultPassphrase)},
5023 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
5024 {"global-media-controls", flag_descriptions::kGlobalMediaControlsName,
5025 flag_descriptions::kGlobalMediaControlsDescription,
5026 kOsWin | kOsMac | kOsLinux,
5027 FEATURE_VALUE_TYPE(media::kGlobalMediaControls)},
5029 {"global-media-controls-for-cast",
5030 flag_descriptions::kGlobalMediaControlsForCastName,
5031 flag_descriptions::kGlobalMediaControlsForCastDescription,
5032 kOsWin | kOsMac | kOsLinux,
5033 FEATURE_VALUE_TYPE(media::kGlobalMediaControlsForCast)},
5035 {"global-media-controls-picture-in-picture",
5036 flag_descriptions::kGlobalMediaControlsPictureInPictureName,
5037 flag_descriptions::kGlobalMediaControlsPictureInPictureDescription,
5038 kOsWin | kOsMac | kOsLinux | kOsCrOS,
5039 FEATURE_VALUE_TYPE(media::kGlobalMediaControlsPictureInPicture)},
5041 {"global-media-controls-seamless-transfer",
5042 flag_descriptions::kGlobalMediaControlsSeamlessTransferName,
5043 flag_descriptions::kGlobalMediaControlsSeamlessTransferDescription,
5044 kOsWin | kOsMac | kOsLinux,
5045 FEATURE_VALUE_TYPE(media::kGlobalMediaControlsSeamlessTransfer)},
5046 #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
5048 #if BUILDFLAG(ENABLE_SPELLCHECK) && defined(OS_WIN)
5049 {"win-use-native-spellchecker",
5050 flag_descriptions::kWinUseBrowserSpellCheckerName,
5051 flag_descriptions::kWinUseBrowserSpellCheckerDescription, kOsWin,
5052 FEATURE_VALUE_TYPE(spellcheck::kWinUseBrowserSpellChecker)},
5053 #endif // BUILDFLAG(ENABLE_SPELLCHECK) && defined(OS_WIN)
5055 {"safety-tips", flag_descriptions::kSafetyTipName,
5056 flag_descriptions::kSafetyTipDescription, kOsAll,
5057 FEATURE_VALUE_TYPE(security_state::features::kSafetyTipUI)},
5059 #if defined(OS_CHROMEOS)
5060 {"crostini-webui-upgrader", flag_descriptions::kCrostiniWebUIUpgraderName,
5061 flag_descriptions::kCrostiniWebUIUpgraderDescription, kOsCrOS,
5062 FEATURE_VALUE_TYPE(chromeos::features::kCrostiniWebUIUpgrader)},
5063 #endif // OS_CHROMEOS
5065 {"turn-off-streaming-media-caching",
5066 flag_descriptions::kTurnOffStreamingMediaCachingName,
5067 flag_descriptions::kTurnOffStreamingMediaCachingDescription, kOsAll,
5068 FEATURE_VALUE_TYPE(net::features::kTurnOffStreamingMediaCaching)},
5070 #if defined(OS_ANDROID)
5071 {"password-manager-onboarding-android",
5072 flag_descriptions::kPasswordManagerOnboardingAndroidName,
5073 flag_descriptions::kPasswordManagerOnboardingAndroidDescription,
5076 password_manager::features::kPasswordManagerOnboardingAndroid)},
5077 #endif // defined(OS_ANDROID)
5079 {"enable-cooperative-scheduling",
5080 flag_descriptions::kCooperativeSchedulingName,
5081 flag_descriptions::kCooperativeSchedulingDescription, kOsAll,
5082 FEATURE_VALUE_TYPE(features::kCooperativeScheduling)},
5084 {"enable-defer-all-script", flag_descriptions::kEnableDeferAllScriptName,
5085 flag_descriptions::kEnableDeferAllScriptDescription, kOsAll,
5086 FEATURE_VALUE_TYPE(previews::features::kDeferAllScriptPreviews)},
5087 {"enable-defer-all-script-without-optimization-hints",
5088 flag_descriptions::kEnableDeferAllScriptWithoutOptimizationHintsName,
5090 kEnableDeferAllScriptWithoutOptimizationHintsDescription,
5093 previews::switches::kEnableDeferAllScriptWithoutOptimizationHints)},
5095 #if defined(OS_CHROMEOS)
5096 {"enable-edu-coexistence", flag_descriptions::kEnableEduCoexistenceName,
5097 flag_descriptions::kEnableEduCoexistenceDescription, kOsCrOS,
5098 FEATURE_VALUE_TYPE(chromeos::features::kEduCoexistence)},
5099 #endif // OS_CHROMEOS
5101 #if defined(OS_CHROMEOS)
5102 {"enable-edu-coexistence-consent-log",
5103 flag_descriptions::kEnableEduCoexistenceConsentLogName,
5104 flag_descriptions::kEnableEduCoexistenceConsentLogDescription, kOsCrOS,
5105 FEATURE_VALUE_TYPE(chromeos::features::kEduCoexistenceConsentLog)},
5106 #endif // OS_CHROMEOS
5108 #if defined(OS_CHROMEOS)
5109 {"enable-assistant-routines",
5110 flag_descriptions::kEnableAssistantRoutinesName,
5111 flag_descriptions::kEnableAssistantRoutinesDescription, kOsCrOS,
5112 FEATURE_VALUE_TYPE(chromeos::assistant::features::kAssistantRoutines)},
5113 #endif // OS_CHROMEOS
5115 #if defined(OS_CHROMEOS)
5116 {"gaia-action-buttons", flag_descriptions::kGaiaActionButtonsName,
5117 flag_descriptions::kGaiaActionButtonsDescription, kOsCrOSOwnerOnly,
5118 FEATURE_VALUE_TYPE(chromeos::features::kGaiaActionButtons)},
5119 #endif // defined(OS_CHROMEOS)
5121 {"notification-scheduler-debug-options",
5122 flag_descriptions::kNotificationSchedulerDebugOptionName,
5123 flag_descriptions::kNotificationSchedulerDebugOptionDescription,
5124 kOsAndroid, MULTI_VALUE_TYPE(kNotificationSchedulerChoices)},
5126 #if defined(OS_ANDROID)
5127 {"usage-stats", flag_descriptions::kUsageStatsName,
5128 flag_descriptions::kUsageStatsDescription, kOsAndroid,
5129 FEATURE_VALUE_TYPE(chrome::android::kUsageStatsFeature)},
5130 #endif // defined(OS_ANDROID)
5132 #if defined(OS_CHROMEOS)
5133 {"lock-screen-media-controls",
5134 flag_descriptions::kLockScreenMediaControlsName,
5135 flag_descriptions::kLockScreenMediaControlsDescription, kOsCrOS,
5136 FEATURE_VALUE_TYPE(ash::features::kLockScreenMediaControls)},
5137 #endif // defined(OS_CHROMEOS)
5139 #if defined(OS_CHROMEOS)
5140 {"contextual-nudges", flag_descriptions::kContextualNudgesName,
5141 flag_descriptions::kContextualNudgesDescription, kOsCrOS,
5142 FEATURE_VALUE_TYPE(ash::features::kContextualNudges)},
5143 #endif // defined(OS_CHROMEOS)
5145 {"policy-atomic-group-enabled",
5146 flag_descriptions::kPolicyAtomicGroupsEnabledName,
5147 flag_descriptions::kPolicyAtomicGroupsEnabledDescription, kOsAll,
5148 FEATURE_VALUE_TYPE(policy::features::kPolicyAtomicGroup)},
5150 {"decode-jpeg-images-to-yuv",
5151 flag_descriptions::kDecodeJpeg420ImagesToYUVName,
5152 flag_descriptions::kDecodeJpeg420ImagesToYUVDescription, kOsAll,
5153 FEATURE_VALUE_TYPE(blink::features::kDecodeJpeg420ImagesToYUV)},
5155 {"decode-webp-images-to-yuv",
5156 flag_descriptions::kDecodeLossyWebPImagesToYUVName,
5157 flag_descriptions::kDecodeLossyWebPImagesToYUVDescription, kOsAll,
5158 FEATURE_VALUE_TYPE(blink::features::kDecodeLossyWebPImagesToYUV)},
5160 {"dns-httpssvc", flag_descriptions::kDnsHttpssvcName,
5161 flag_descriptions::kDnsHttpssvcDescription,
5162 kOsMac | kOsWin | kOsCrOS | kOsAndroid,
5163 FEATURE_VALUE_TYPE(net::features::kDnsHttpssvc)},
5165 {"dns-over-https", flag_descriptions::kDnsOverHttpsName,
5166 flag_descriptions::kDnsOverHttpsDescription,
5167 kOsMac | kOsWin | kOsCrOS | kOsAndroid,
5168 FEATURE_VALUE_TYPE(features::kDnsOverHttps)},
5170 {"web-bundles", flag_descriptions::kWebBundlesName,
5171 flag_descriptions::kWebBundlesDescription, kOsAll,
5172 FEATURE_VALUE_TYPE(features::kWebBundles)},
5174 #if defined(OS_ANDROID)
5175 {"web-otp-backend", flag_descriptions::kWebOtpBackendName,
5176 flag_descriptions::kWebOtpBackendDescription, kOsAndroid,
5177 MULTI_VALUE_TYPE(kWebOtpBackendChoices)},
5179 {"darken-websites-checkbox-in-themes-setting",
5180 flag_descriptions::kDarkenWebsitesCheckboxInThemesSettingName,
5181 flag_descriptions::kDarkenWebsitesCheckboxInThemesSettingDescription,
5184 chrome::android::kDarkenWebsitesCheckboxInThemesSetting)},
5185 #endif // defined(OS_ANDROID)
5187 {"enable-autofill-upi-vpa", flag_descriptions::kAutofillSaveAndFillVPAName,
5188 flag_descriptions::kAutofillSaveAndFillVPADescription, kOsAll,
5189 FEATURE_VALUE_TYPE(autofill::features::kAutofillSaveAndFillVPA)},
5191 {"quiet-notification-prompts",
5192 flag_descriptions::kQuietNotificationPromptsName,
5193 flag_descriptions::kQuietNotificationPromptsDescription, kOsAll,
5194 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kQuietNotificationPrompts,
5195 kQuietNotificationPromptsVariations,
5196 "QuietNotificationPrompts")},
5198 #if defined(OS_ANDROID)
5199 {"context-menu-search-with-google-lens",
5200 flag_descriptions::kContextMenuSearchWithGoogleLensName,
5201 flag_descriptions::kContextMenuSearchWithGoogleLensDescription, kOsAndroid,
5202 FEATURE_VALUE_TYPE(chrome::android::kContextMenuSearchWithGoogleLens)},
5204 {"context-menu-shop-with-google-lens",
5205 flag_descriptions::kContextMenuShopWithGoogleLensName,
5206 flag_descriptions::kContextMenuShopWithGoogleLensDescription, kOsAndroid,
5207 FEATURE_WITH_PARAMS_VALUE_TYPE(
5208 chrome::android::kContextMenuShopWithGoogleLens,
5209 kContextMenuShopWithGoogleLensShopVariations,
5210 "ContextMenuShopWithGoogleLens")},
5212 {"context-menu-search-and-shop-with-google-lens",
5213 flag_descriptions::kContextMenuSearchAndShopWithGoogleLensName,
5214 flag_descriptions::kContextMenuSearchAndShopWithGoogleLensDescription,
5217 chrome::android::kContextMenuSearchAndShopWithGoogleLens)},
5218 #endif // defined(OS_ANDROID)
5220 #if defined(OS_CHROMEOS)
5221 {"launcher-settings-search", flag_descriptions::kLauncherSettingsSearchName,
5222 flag_descriptions::kLauncherSettingsSearchDescription, kOsCrOS,
5223 FEATURE_VALUE_TYPE(app_list_features::kLauncherSettingsSearch)},
5225 {"enable-suggested-files", flag_descriptions::kEnableSuggestedFilesName,
5226 flag_descriptions::kEnableSuggestedFilesDescription, kOsCrOS,
5227 FEATURE_VALUE_TYPE(app_list_features::kEnableSuggestedFiles)},
5229 {"zero-state-files", flag_descriptions::kZeroStateFilesName,
5230 flag_descriptions::kZeroStateFilesDescription, kOsCrOS,
5231 FEATURE_VALUE_TYPE(app_list_features::kEnableZeroStateMixedTypesRanker)},
5233 {"aggregated-ml-app-ranking",
5234 flag_descriptions::kAggregatedMlAppRankingName,
5235 flag_descriptions::kAggregatedMlAppRankingDescription, kOsCrOS,
5236 FEATURE_VALUE_TYPE(app_list_features::kEnableAggregatedMlAppRanking)},
5238 {"fuzzy-app-search", flag_descriptions::kFuzzyAppSearchName,
5239 flag_descriptions::kFuzzyAppSearchDescription, kOsCrOS,
5240 FEATURE_VALUE_TYPE(app_list_features::kEnableFuzzyAppSearch)},
5242 {"aggregated-ml-search-ranking",
5243 flag_descriptions::kAggregatedMlSearchRankingName,
5244 flag_descriptions::kAggregatedMlSearchRankingDescription, kOsCrOS,
5245 FEATURE_VALUE_TYPE(app_list_features::kEnableAggregatedMlSearchRanking)},
5247 #endif // defined(OS_CHROMEOS)
5249 {"passwords-account-storage",
5250 flag_descriptions::kEnablePasswordsAccountStorageName,
5251 flag_descriptions::kEnablePasswordsAccountStorageDescription,
5252 kOsWin | kOsMac | kOsLinux,
5254 password_manager::features::kEnablePasswordsAccountStorage)},
5256 {"improved-cookie-controls", flag_descriptions::kImprovedCookieControlsName,
5257 flag_descriptions::kImprovedCookieControlsDescription, kOsAll,
5258 FEATURE_VALUE_TYPE(content_settings::kImprovedCookieControls)},
5260 {"improved-cookie-controls-for-third-party-cookie-blocking",
5261 flag_descriptions::kImprovedCookieControlsForThirdPartyCookieBlockingName,
5263 kImprovedCookieControlsForThirdPartyCookieBlockingDescription,
5266 content_settings::kImprovedCookieControlsForThirdPartyCookieBlocking)},
5268 {"autofill-always-return-cloud-tokenized-card",
5269 flag_descriptions::kAutofillAlwaysReturnCloudTokenizedCardName,
5270 flag_descriptions::kAutofillAlwaysReturnCloudTokenizedCardDescription,
5273 autofill::features::kAutofillAlwaysReturnCloudTokenizedCard)},
5275 {"back-forward-cache", flag_descriptions::kBackForwardCacheName,
5276 flag_descriptions::kBackForwardCacheDescription, kOsAll,
5277 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kBackForwardCache,
5278 kBackForwardCacheVariations,
5279 "BackForwardCache")},
5281 #if defined(OS_ANDROID)
5282 {"context-menu-copy-image", flag_descriptions::kContextMenuCopyImageName,
5283 flag_descriptions::kContextMenuCopyImageDescription, kOsAndroid,
5284 FEATURE_VALUE_TYPE(chrome::android::kContextMenuCopyImage)},
5285 {"enable-clipboard-provider-image-suggestions",
5286 flag_descriptions::kEnableClipboardProviderImageSuggestionsName,
5287 flag_descriptions::kEnableClipboardProviderImageSuggestionsDescription,
5289 FEATURE_WITH_PARAMS_VALUE_TYPE(
5290 omnibox::kEnableClipboardProviderImageSuggestions,
5291 kOmniboxImageSearchSuggestionThumbnailVariation,
5292 "OmniboxEnableClipboardProviderImageSuggestions")},
5293 #endif // defined(OS_ANDROID)
5295 {"impulse-scroll-animations",
5296 flag_descriptions::kImpulseScrollAnimationsName,
5297 flag_descriptions::kImpulseScrollAnimationsDescription, kOsAll,
5298 FEATURE_VALUE_TYPE(features::kImpulseScrollAnimations)},
5299 {"texture-layer-skip-wait-for-activation",
5300 flag_descriptions::kTextureLayerSkipWaitForActivationName,
5301 flag_descriptions::kTextureLayerSkipWaitForActivationDescription, kOsAll,
5302 FEATURE_VALUE_TYPE(features::kTextureLayerSkipWaitForActivation)},
5303 {"percent-based-scrolling", flag_descriptions::kPercentBasedScrollingName,
5304 flag_descriptions::kPercentBasedScrollingDescription, kOsAll,
5305 FEATURE_VALUE_TYPE(features::kPercentBasedScrolling)},
5307 {"scroll-unification", flag_descriptions::kScrollUnificationName,
5308 flag_descriptions::kScrollUnificationDescription, kOsAll,
5309 FEATURE_VALUE_TYPE(features::kScrollUnification)},
5312 {"elastic-overscroll-win", flag_descriptions::kElasticOverscrollWinName,
5313 flag_descriptions::kElasticOverscrollWinDescription, kOsWin,
5314 FEATURE_VALUE_TYPE(features::kElasticOverscrollWin)},
5317 #if !defined(OS_ANDROID)
5318 {"show-legacy-tls-warnings", flag_descriptions::kLegacyTLSWarningsName,
5319 flag_descriptions::kLegacyTLSWarningsDescription, kOsDesktop,
5320 FEATURE_VALUE_TYPE(security_state::features::kLegacyTLSWarnings)},
5323 #if defined(OS_CHROMEOS)
5324 {"enable-assistant-aec", flag_descriptions::kEnableGoogleAssistantAecName,
5325 flag_descriptions::kEnableGoogleAssistantAecDescription, kOsCrOS,
5326 FEATURE_VALUE_TYPE(chromeos::assistant::features::kAssistantAudioEraser)},
5330 {"enable-winrt-geolocation-implementation",
5331 flag_descriptions::kWinrtGeolocationImplementationName,
5332 flag_descriptions::kWinrtGeolocationImplementationDescription, kOsWin,
5333 FEATURE_VALUE_TYPE(features::kWinrtGeolocationImplementation)},
5336 #if defined(OS_MACOSX)
5337 {"enable-core-location-implementation",
5338 flag_descriptions::kMacCoreLocationImplementationName,
5339 flag_descriptions::kMacCoreLocationImplementationDescription, kOsMac,
5340 FEATURE_VALUE_TYPE(features::kMacCoreLocationImplementation)},
5343 #if defined(OS_CHROMEOS)
5344 {"exo-pointer-lock", flag_descriptions::kExoPointerLockName,
5345 flag_descriptions::kExoPointerLockDescription, kOsCrOS,
5346 FEATURE_VALUE_TYPE(chromeos::features::kExoPointerLock)},
5347 #endif // defined(OS_CHROMEOS)
5349 #if defined(OS_MACOSX)
5350 {"metal", flag_descriptions::kMetalName,
5351 flag_descriptions::kMetalDescription, kOsMac,
5352 FEATURE_VALUE_TYPE(features::kMetal)},
5355 {"enable-de-jelly", flag_descriptions::kEnableDeJellyName,
5356 flag_descriptions::kEnableDeJellyDescription, kOsAll,
5357 SINGLE_VALUE_TYPE(switches::kEnableDeJelly)},
5359 #if defined(OS_CHROMEOS)
5360 {"enable-cros-action-recorder",
5361 flag_descriptions::kEnableCrOSActionRecorderName,
5362 flag_descriptions::kEnableCrOSActionRecorderDescription, kOsCrOS,
5363 MULTI_VALUE_TYPE(kEnableCrOSActionRecorderChoices)},
5364 #endif // defined(OS_CHROMEOS)
5366 #if !defined(OS_ANDROID)
5367 {"mix-browser-type-tabs", flag_descriptions::kMixBrowserTypeTabsName,
5368 flag_descriptions::kMixBrowserTypeTabsDescription, kOsDesktop,
5369 FEATURE_VALUE_TYPE(features::kMixBrowserTypeTabs)},
5370 #endif // !defined(OS_ANDROID)
5372 #if defined(OS_ANDROID)
5373 {"enable-games-hub", flag_descriptions::kGamesHubName,
5374 flag_descriptions::kGamesHubDescription, kOsAndroid,
5375 FEATURE_VALUE_TYPE(games::features::kGamesHub)},
5376 #endif // defined(OS_ANDROID)
5378 {"enable-heavy-ad-intervention",
5379 flag_descriptions::kHeavyAdInterventionName,
5380 flag_descriptions::kHeavyAdInterventionDescription, kOsAll,
5381 FEATURE_VALUE_TYPE(features::kHeavyAdIntervention)},
5383 {"heavy-ad-privacy-mitigations",
5384 flag_descriptions::kHeavyAdPrivacyMitigationsName,
5385 flag_descriptions::kHeavyAdPrivacyMitigationsDescription, kOsAll,
5386 FEATURE_VALUE_TYPE(features::kHeavyAdPrivacyMitigations)},
5388 #if !BUILDFLAG(DISABLE_FTP_SUPPORT)
5389 {"enable-ftp", flag_descriptions::kEnableFtpName,
5390 flag_descriptions::kEnableFtpDescription, kOsAll,
5391 FEATURE_VALUE_TYPE(features::kFtpProtocol)},
5394 #if defined(OS_CHROMEOS)
5395 {"crostini-use-buster-image",
5396 flag_descriptions::kCrostiniUseBusterImageName,
5397 flag_descriptions::kCrostiniUseBusterImageDescription, kOsCrOS,
5398 FEATURE_VALUE_TYPE(chromeos::features::kCrostiniUseBusterImage)},
5399 {"arc-application-zoom", flag_descriptions::kArcApplicationZoomName,
5400 flag_descriptions::kArcApplicationZoomDescription, kOsCrOS,
5401 FEATURE_VALUE_TYPE(arc::kEnableApplicationZoomFeature)},
5402 {"crostini-disk-resizing", flag_descriptions::kCrostiniDiskResizingName,
5403 flag_descriptions::kCrostiniDiskResizingDescription, kOsCrOS,
5404 FEATURE_VALUE_TYPE(chromeos::features::kCrostiniDiskResizing)},
5405 #endif // defined(OS_CHROMEOS)
5407 #if defined(OS_ANDROID)
5408 {"enable-home-page-location-policy",
5409 flag_descriptions::kHomepageLocationName,
5410 flag_descriptions::kHomepageLocationDescription, kOsAndroid,
5411 FEATURE_VALUE_TYPE(chrome::android::kHomepageLocation)},
5412 {"homepage-settings-ui-conversion",
5413 flag_descriptions::kHomepageSettingsUIConversionName,
5414 flag_descriptions::kHomepageSettingsUIConversionDescription, kOsAndroid,
5415 FEATURE_VALUE_TYPE(chrome::android::kHomepageSettingsUIConversion)},
5416 {"homepage-promo-card", flag_descriptions::kHomepagePromoCardName,
5417 flag_descriptions::kHomepagePromoCardDescription, kOsAndroid,
5418 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kHomepagePromoCard,
5419 kHomepagePromoCardVariations,
5420 "HomepagePromoCard")},
5421 #endif // defined(OS_ANDROID)
5423 #if defined(OS_CHROMEOS)
5424 {"split-settings-sync", flag_descriptions::kSplitSettingsSyncName,
5425 flag_descriptions::kSplitSettingsSyncDescription, kOsCrOS,
5426 FEATURE_VALUE_TYPE(chromeos::features::kSplitSettingsSync)},
5427 {"new-os-settings-search", flag_descriptions::kNewOsSettingsSearchName,
5428 flag_descriptions::kNewOsSettingsSearchDescription, kOsCrOS,
5429 FEATURE_VALUE_TYPE(chromeos::features::kNewOsSettingsSearch)},
5430 {"dlc-settings-ui", flag_descriptions::kDlcSettingsUiName,
5431 flag_descriptions::kDlcSettingsUiDescription, kOsCrOS,
5432 FEATURE_VALUE_TYPE(chromeos::features::kDlcSettingsUi)},
5433 {"help-app", flag_descriptions::kHelpAppName,
5434 flag_descriptions::kHelpAppDescription, kOsCrOS,
5435 FEATURE_VALUE_TYPE(chromeos::features::kHelpAppV2)},
5436 {"media-app", flag_descriptions::kMediaAppName,
5437 flag_descriptions::kMediaAppDescription, kOsCrOS,
5438 FEATURE_VALUE_TYPE(chromeos::features::kMediaApp)},
5439 #endif // defined(OS_CHROMEOS)
5441 {"passive-mixed-content-warning",
5442 flag_descriptions::kPassiveMixedContentWarningName,
5443 flag_descriptions::kPassiveMixedContentWarningDescription, kOsAll,
5444 FEATURE_VALUE_TYPE(security_state::features::kPassiveMixedContentWarning)},
5446 {"autofill-enable-virtual-card",
5447 flag_descriptions::kAutofillEnableVirtualCardName,
5448 flag_descriptions::kAutofillEnableVirtualCardDescription, kOsDesktop,
5449 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableVirtualCard)},
5451 #if defined(OS_CHROMEOS)
5452 {"account-id-migration", flag_descriptions::kAccountIdMigrationName,
5453 flag_descriptions::kAccountIdMigrationDescription, kOsCrOS,
5454 FEATURE_VALUE_TYPE(switches::kAccountIdMigration)},
5455 #endif // defined(OS_CHROMEOS)
5457 // TODO(https://crbug.com/1032161): Implement and enable for ChromeOS.
5458 {"raw-clipboard", flag_descriptions::kRawClipboardName,
5459 flag_descriptions::kRawClipboardDescription, kOsMac | kOsWin | kOsLinux,
5460 FEATURE_VALUE_TYPE(blink::features::kRawClipboard)},
5463 {"slow-dc-timer-interrupts-win",
5464 flag_descriptions::kSlowDCTimerInterruptsWinName,
5465 flag_descriptions::kSlowDCTimerInterruptsWinDescription, kOsWin,
5466 FEATURE_VALUE_TYPE(base::kSlowDCTimerInterruptsWin)},
5469 #if BUILDFLAG(ENABLE_PAINT_PREVIEW) && defined(OS_ANDROID)
5470 {"paint-preview-demo", flag_descriptions::kPaintPreviewDemoName,
5471 flag_descriptions::kPaintPreviewDemoDescription, kOsAndroid,
5472 FEATURE_VALUE_TYPE(paint_preview::kPaintPreviewDemo)},
5473 {"paint-preview-startup", flag_descriptions::kPaintPreviewStartupName,
5474 flag_descriptions::kPaintPreviewStartupDescription, kOsAndroid,
5475 FEATURE_VALUE_TYPE(paint_preview::kPaintPreviewShowOnStartup)},
5476 #endif // ENABLE_PAINT_PREVIEW && defined(OS_ANDROID)
5478 #if !defined(OS_ANDROID)
5479 {"sync-setup-friendly-settings",
5480 flag_descriptions::kSyncSetupFriendlySettingsName,
5481 flag_descriptions::kSyncSetupFriendlySettingsDescription, kOsDesktop,
5482 FEATURE_VALUE_TYPE(features::kSyncSetupFriendlySettings)},
5483 #endif // !defined(OS_ANDROID)
5485 #if defined(OS_ANDROID)
5486 {"block-external-form-redirects-no-gesture",
5487 flag_descriptions::kIntentBlockExternalFormRedirectsNoGestureName,
5488 flag_descriptions::kIntentBlockExternalFormRedirectsNoGestureDescription,
5491 external_intents::kIntentBlockExternalFormRedirectsNoGesture)},
5492 {"recover-from-never-save-android",
5493 flag_descriptions::kRecoverFromNeverSaveAndroidName,
5494 flag_descriptions::kRecoverFromNeverSaveAndroidDescription, kOsAndroid,
5496 password_manager::features::kRecoverFromNeverSaveAndroid)},
5497 {"photo-picker-video-support",
5498 flag_descriptions::kPhotoPickerVideoSupportName,
5499 flag_descriptions::kPhotoPickerVideoSupportDescription, kOsAndroid,
5500 FEATURE_VALUE_TYPE(chrome::android::kPhotoPickerVideoSupport)},
5501 #endif // defined(OS_ANDROID)
5503 {"freeze-user-agent", flag_descriptions::kFreezeUserAgentName,
5504 flag_descriptions::kFreezeUserAgentDescription, kOsDesktop | kOsAndroid,
5505 FEATURE_VALUE_TYPE(blink::features::kFreezeUserAgent)},
5507 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
5508 {"enable-user-data-snapshot", flag_descriptions::kUserDataSnapshotName,
5509 flag_descriptions::kUserDataSnapshotDescription,
5510 kOsMac | kOsWin | kOsLinux,
5511 FEATURE_VALUE_TYPE(features::kUserDataSnapshot)},
5515 {"run-video-capture-service-in-browser",
5516 flag_descriptions::kRunVideoCaptureServiceInBrowserProcessName,
5517 flag_descriptions::kRunVideoCaptureServiceInBrowserProcessDescription,
5519 FEATURE_VALUE_TYPE(features::kRunVideoCaptureServiceInBrowserProcess)},
5520 #endif // defined(OS_WIN)
5522 {"legacy-tls-enforced", flag_descriptions::kLegacyTLSEnforcedName,
5523 flag_descriptions::kLegacyTLSEnforcedDescription, kOsDesktop | kOsAndroid,
5524 FEATURE_VALUE_TYPE(net::features::kLegacyTLSEnforced)},
5526 #if defined(OS_ANDROID)
5527 {"password-check", flag_descriptions::kPasswordCheckName,
5528 flag_descriptions::kPasswordCheckDescription, kOsAndroid,
5529 FEATURE_VALUE_TYPE(password_manager::features::kPasswordCheck)},
5530 #endif // defined(OS_ANDROID)
5532 {"export-tagged-pdf", flag_descriptions::kExportTaggedPDFName,
5533 flag_descriptions::kExportTaggedPDFDescription, kOsDesktop,
5534 FEATURE_VALUE_TYPE(features::kExportTaggedPDF)},
5535 {"double-buffer-compositing",
5536 flag_descriptions::kDoubleBufferCompositingName,
5537 flag_descriptions::kDoubleBufferCompositingDescription, kOsCrOS,
5538 SINGLE_VALUE_TYPE(switches::kDoubleBufferCompositing)},
5540 #if defined(OS_CHROMEOS)
5541 {"enable-ambient-mode", flag_descriptions::kEnableAmbientModeName,
5542 flag_descriptions::kEnableAmbientModeDescription, kOsCrOS,
5543 FEATURE_VALUE_TYPE(chromeos::features::kAmbientModeFeature)},
5544 #endif // defined(OS_CHROMEOS)
5546 #if defined(OS_ANDROID)
5547 {"password-change-support", flag_descriptions::kPasswordChangeName,
5548 flag_descriptions::kPasswordChangeDescription, kOsAndroid,
5549 FEATURE_WITH_PARAMS_VALUE_TYPE(password_manager::features::kPasswordChange,
5550 kPasswordChangeFeatureVariations,
5551 "PasswordChangeFeatureVariations.")},
5553 {"context-menu-performance-info-and-remote-hints-fetching",
5554 flag_descriptions::kContextMenuPerformanceInfoAndRemoteHintFetchingName,
5556 kContextMenuPerformanceInfoAndRemoteHintFetchingDescription,
5558 FEATURE_VALUE_TYPE(kContextMenuPerformanceInfoAndRemoteHintFetching)},
5559 #endif // !defined(OS_ANDROID)
5561 #if defined(OS_ANDROID)
5562 {"page-info-performance-hints",
5563 flag_descriptions::kPageInfoPerformanceHintsName,
5564 flag_descriptions::kPageInfoPerformanceHintsDescription, kOsAndroid,
5565 FEATURE_VALUE_TYPE(kPageInfoPerformanceHints)},
5566 #endif // !defined(OS_ANDROID)
5568 #if defined(OS_ANDROID)
5569 {"page-info-version-2", flag_descriptions::kPageInfoV2Name,
5570 flag_descriptions::kPageInfoV2Description, kOsAndroid,
5571 FEATURE_VALUE_TYPE(page_info::kPageInfoV2)},
5572 #endif // !defined(OS_ANDROID)
5574 #if defined(OS_CHROMEOS)
5575 {"drag-to-snap-in-clamshell-mode",
5576 flag_descriptions::kDragToSnapInClamshellModeName,
5577 flag_descriptions::kDragToSnapInClamshellModeDescription, kOsCrOS,
5578 FEATURE_VALUE_TYPE(ash::features::kDragToSnapInClamshellMode)},
5579 {"multi-display-overview-and-split-view",
5580 flag_descriptions::kMultiDisplayOverviewAndSplitViewName,
5581 flag_descriptions::kMultiDisplayOverviewAndSplitViewDescription, kOsCrOS,
5582 FEATURE_VALUE_TYPE(ash::features::kMultiDisplayOverviewAndSplitView)},
5583 #endif // defined(OS_CHROMEOS)
5586 {"enable-media-foundation-video-capture",
5587 flag_descriptions::kEnableMediaFoundationVideoCaptureName,
5588 flag_descriptions::kEnableMediaFoundationVideoCaptureDescription, kOsWin,
5589 FEATURE_VALUE_TYPE(media::kMediaFoundationVideoCapture)},
5590 #endif // defined(OS_WIN)
5592 #if defined(OS_CHROMEOS)
5593 {"scanning-ui", flag_descriptions::kScanningUIName,
5594 flag_descriptions::kScanningUIDescription, kOsCrOS,
5595 FEATURE_VALUE_TYPE(chromeos::features::kScanningUI)},
5596 {"avatar-toolbar-button", flag_descriptions::kAvatarToolbarButtonName,
5597 flag_descriptions::kAvatarToolbarButtonDescription, kOsCrOS,
5598 FEATURE_VALUE_TYPE(chromeos::features::kAvatarToolbarButton)},
5599 #endif // defined(OS_CHROMEOS)
5601 {"omnibox-context-menu-show-full-urls",
5602 flag_descriptions::kOmniboxContextMenuShowFullUrlsName,
5603 flag_descriptions::kOmniboxContextMenuShowFullUrlsDescription, kOsDesktop,
5604 FEATURE_VALUE_TYPE(omnibox::kOmniboxContextMenuShowFullUrls)},
5606 {"color-provider-redirection",
5607 flag_descriptions::kColorProviderRedirectionName,
5608 flag_descriptions::kColorProviderRedirectionDescription, kOsDesktop,
5609 FEATURE_VALUE_TYPE(features::kColorProviderRedirection)},
5611 {"trust-tokens", flag_descriptions::kTrustTokensName,
5612 flag_descriptions::kTrustTokensDescription, kOsAll,
5613 FEATURE_VALUE_TYPE(network::features::kTrustTokens)},
5615 #if defined(OS_ANDROID)
5616 {"android-partner-customization-phenotype",
5617 flag_descriptions::kAndroidPartnerCustomizationPhenotypeName,
5618 flag_descriptions::kAndroidPartnerCustomizationPhenotypeDescription,
5621 chrome::android::kAndroidPartnerCustomizationPhenotype)},
5622 #endif // defined(OS_ANDROID)
5624 {"media-history", flag_descriptions::kMediaHistoryName,
5625 flag_descriptions::kMediaHistoryDescription, kOsAll,
5626 FEATURE_VALUE_TYPE(media::kUseMediaHistoryStore)},
5628 #if !defined(OS_ANDROID)
5629 {"nearby-sharing", flag_descriptions::kNearbySharingName,
5630 flag_descriptions::kNearbySharingDescription, kOsDesktop,
5631 FEATURE_VALUE_TYPE(features::kNearbySharing)},
5632 #endif // !defined(OS_ANDROID)
5634 #if defined(OS_ANDROID)
5635 {"android-default-browser-promo",
5636 flag_descriptions::kAndroidDefaultBrowserPromoName,
5637 flag_descriptions::kAndroidDefaultBrowserPromoDescription, kOsAndroid,
5638 FEATURE_VALUE_TYPE(chrome::android::kAndroidDefaultBrowserPromo)},
5640 {"android-multiple-display", flag_descriptions::kAndroidMultipleDisplayName,
5641 flag_descriptions::kAndroidMultipleDisplayDescription, kOsAndroid,
5642 FEATURE_VALUE_TYPE(chrome::android::kAndroidMultipleDisplay)},
5643 #endif // defined(OS_ANDROID)
5644 {"autofill-enable-surfacing-server-card-nickname",
5645 flag_descriptions::kAutofillEnableSurfacingServerCardNicknameName,
5646 flag_descriptions::kAutofillEnableSurfacingServerCardNicknameDescription,
5649 autofill::features::kAutofillEnableSurfacingServerCardNickname)},
5651 {"app-cache", flag_descriptions::kAppCacheName,
5652 flag_descriptions::kAppCacheDescription, kOsAll,
5653 FEATURE_VALUE_TYPE(blink::features::kAppCache)},
5654 {"enable-autofill-cache-server-card-info",
5655 flag_descriptions::kEnableAutofillCacheServerCardInfoName,
5656 flag_descriptions::kEnableAutofillCacheServerCardInfoDescription, kOsAll,
5657 FEATURE_VALUE_TYPE(autofill::features::kAutofillCacheServerCardInfo)},
5659 {"autofill-enable-sticky-payments-bubble",
5660 flag_descriptions::kAutofillEnableStickyPaymentsBubbleName,
5661 flag_descriptions::kAutofillEnableStickyPaymentsBubbleDescription,
5664 autofill::features::kAutofillEnableStickyPaymentsBubble)},
5666 {"align-font-display-auto-lcp",
5667 flag_descriptions::kAlignFontDisplayAutoTimeoutWithLCPGoalName,
5668 flag_descriptions::kAlignFontDisplayAutoTimeoutWithLCPGoalDescription,
5670 FEATURE_WITH_PARAMS_VALUE_TYPE(
5671 blink::features::kAlignFontDisplayAutoTimeoutWithLCPGoal,
5672 kAlignFontDisplayAutoTimeoutWithLCPGoalVariations,
5673 "AlignFontDisplayAutoTimeoutWithLCPGoalVariations")},
5675 #if defined(OS_CHROMEOS)
5676 {"enable-palm-suppression", flag_descriptions::kEnablePalmSuppressionName,
5677 flag_descriptions::kEnablePalmSuppressionDescription, kOsCrOS,
5678 FEATURE_VALUE_TYPE(ui::kEnablePalmSuppression)},
5680 {"enable-high-resolution-mouse-scrolling",
5681 flag_descriptions::kEnableHighResolutionMouseScrollingName,
5682 flag_descriptions::kEnableHighResolutionMouseScrollingDescription, kOsCrOS,
5683 FEATURE_VALUE_TYPE(ui::kEnableHighResolutionMouseScrolling)},
5685 {"movable-partial-screenshot-region",
5686 flag_descriptions::kMovablePartialScreenshotName,
5687 flag_descriptions::kMovablePartialScreenshotDescription, kOsCrOS,
5688 FEATURE_VALUE_TYPE(ash::features::kMovablePartialScreenshot)},
5689 #endif // defined(OS_CHROMEOS)
5691 {"enable-experimental-cookie-features",
5692 flag_descriptions::kEnableExperimentalCookieFeaturesName,
5693 flag_descriptions::kEnableExperimentalCookieFeaturesDescription, kOsAll,
5694 MULTI_VALUE_TYPE(kEnableExperimentalCookieFeaturesChoices)},
5696 {"autofill-enable-google-issued-card",
5697 flag_descriptions::kAutofillEnableGoogleIssuedCardName,
5698 flag_descriptions::kAutofillEnableGoogleIssuedCardDescription, kOsAll,
5699 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableGoogleIssuedCard)},
5701 #if defined(TOOLKIT_VIEWS)
5702 {"textfield-focus-on-tap-up", flag_descriptions::kTextfieldFocusOnTapUpName,
5703 flag_descriptions::kTextfieldFocusOnTapUpDescription, kOsDesktop,
5704 FEATURE_VALUE_TYPE(views::features::kTextfieldFocusOnTapUp)},
5705 #endif // defined(TOOLKIT_VIEWS)
5707 {"permission-chip", flag_descriptions::kPermissionChipName,
5708 flag_descriptions::kPermissionChipDescription, kOsDesktop,
5709 FEATURE_VALUE_TYPE(features::kPermissionChip)},
5711 #if BUILDFLAG(ENABLE_DICE_SUPPORT)
5712 {"dice-web-signin-interception",
5713 flag_descriptions::kDiceWebSigninInterceptionName,
5714 flag_descriptions::kDiceWebSigninInterceptionDescription,
5715 kOsMac | kOsWin | kOsLinux,
5716 FEATURE_VALUE_TYPE(kDiceWebSigninInterceptionFeature)},
5717 #endif // ENABLE_DICE_SUPPORT
5718 {"new-canvas-2d-api", flag_descriptions::kNewCanvas2DAPIName,
5719 flag_descriptions::kNewCanvas2DAPIDescription, kOsAll,
5720 SINGLE_VALUE_TYPE(switches::kEnableNewCanvas2DAPI)},
5722 {"enable-translate-sub-frames",
5723 flag_descriptions::kEnableTranslateSubFramesName,
5724 flag_descriptions::kEnableTranslateSubFramesDescription, kOsAll,
5725 FEATURE_VALUE_TYPE(translate::kTranslateSubFrames)},
5727 #if defined(OS_CHROMEOS)
5728 {"suggested-content-toggle", flag_descriptions::kSuggestedContentToggleName,
5729 flag_descriptions::kSuggestedContentToggleDescription, kOsCrOS,
5730 FEATURE_VALUE_TYPE(chromeos::features::kSuggestedContentToggle)},
5731 #endif // defined(OS_CHROMEOS)
5733 #if !defined(OS_ANDROID)
5734 {"enable-media-feeds", flag_descriptions::kEnableMediaFeedsName,
5735 flag_descriptions::kEnableMediaFeedsDescription, kOsDesktop,
5736 FEATURE_VALUE_TYPE(media::kMediaFeeds)},
5737 #endif // !defined(OS_ANDROID)
5739 {"autofill-enable-card-nickname-management",
5740 flag_descriptions::kAutofillEnableCardNicknameManagementName,
5741 flag_descriptions::kAutofillEnableCardNicknameManagementDescription,
5744 autofill::features::kAutofillEnableCardNicknameManagement)},
5746 {"conversion-measurement-api",
5747 flag_descriptions::kConversionMeasurementApiName,
5748 flag_descriptions::kConversionMeasurementApiDescription, kOsAll,
5749 FEATURE_VALUE_TYPE(features::kConversionMeasurement)},
5750 {"conversion-measurement-debug-mode",
5751 flag_descriptions::kConversionMeasurementDebugModeName,
5752 flag_descriptions::kConversionMeasurementDebugModeDescription, kOsAll,
5753 SINGLE_VALUE_TYPE(switches::kConversionsDebugMode)},
5755 {"client-storage-access-context-auditing",
5756 flag_descriptions::kClientStorageAccessContextAuditingName,
5757 flag_descriptions::kClientStorageAccessContextAuditingDescription,
5759 FEATURE_VALUE_TYPE(features::kClientStorageAccessContextAuditing)},
5761 {"autofill-enable-card-nickname-upstream",
5762 flag_descriptions::kAutofillEnableCardNicknameUpstreamName,
5763 flag_descriptions::kAutofillEnableCardNicknameUpstreamDescription, kOsAll,
5765 autofill::features::kAutofillEnableCardNicknameUpstream)},
5768 {"safety-check-chrome-cleaner-child",
5769 flag_descriptions::kSafetyCheckChromeCleanerChildName,
5770 flag_descriptions::kSafetyCheckChromeCleanerChildDescription, kOsWin,
5771 FEATURE_VALUE_TYPE(features::kSafetyCheckChromeCleanerChild)},
5772 #endif // !defined(OS_WIN)
5774 #if defined(OS_CHROMEOS)
5775 {"enable-launcher-app-paging",
5776 flag_descriptions::kNewDragSpecInLauncherName,
5777 flag_descriptions::kNewDragSpecInLauncherDescription, kOsCrOS,
5778 FEATURE_VALUE_TYPE(app_list_features::kNewDragSpecInLauncher)},
5779 #endif // OS_CHROMEOS
5781 {"autofill-enable-offers-in-downstream",
5782 flag_descriptions::kAutofillEnableOffersInDownstreamName,
5783 flag_descriptions::kAutofillEnableOffersInDownstreamDescription, kOsAll,
5784 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableOffersInDownstream)},
5786 #if defined(OS_CHROMEOS)
5787 {"enable-sharesheet", flag_descriptions::kSharesheetName,
5788 flag_descriptions::kSharesheetDescription, kOsAll,
5789 FEATURE_VALUE_TYPE(features::kSharesheet)},
5790 #endif // OS_CHROMEOS
5792 {"enable-lite-video", flag_descriptions::kLiteVideoName,
5793 flag_descriptions::kLiteVideoDescription, kOsAll,
5794 FEATURE_VALUE_TYPE(features::kLiteVideo)},
5796 {"lite-video-force-override-decision",
5797 flag_descriptions::kLiteVideoForceOverrideDecisionName,
5798 flag_descriptions::kLiteVideoForceOverrideDecisionDescription, kOsAll,
5799 SINGLE_VALUE_TYPE(lite_video::switches::kLiteVideoForceOverrideDecision)}
5801 // NOTE: Adding a new flag requires adding a corresponding entry to enum
5802 // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
5803 // Histograms" in tools/metrics/histograms/README.md (run the
5804 // AboutFlagsHistogramTest unit test to verify this process).
5807 class FlagsStateSingleton : public flags_ui::FlagsState::Delegate {
5809 FlagsStateSingleton()
5811 std::make_unique<flags_ui::FlagsState>(kFeatureEntries, this)) {}
5812 ~FlagsStateSingleton() override = default;
5814 static FlagsStateSingleton* GetInstance() {
5815 return base::Singleton<FlagsStateSingleton>::get();
5818 static flags_ui::FlagsState* GetFlagsState() {
5819 return GetInstance()->flags_state_.get();
5822 void RebuildState(const std::vector<flags_ui::FeatureEntry>& entries) {
5823 flags_state_ = std::make_unique<flags_ui::FlagsState>(entries, this);
5827 // flags_ui::FlagsState::Delegate:
5828 bool ShouldExcludeFlag(const FeatureEntry& entry) override {
5829 return flags::IsFlagExpired(entry.internal_name);
5832 std::unique_ptr<flags_ui::FlagsState> flags_state_;
5834 DISALLOW_COPY_AND_ASSIGN(FlagsStateSingleton);
5837 bool ShouldSkipNonDeprecatedFeatureEntry(const FeatureEntry& entry) {
5838 return ~entry.supported_platforms & kDeprecated;
5841 bool SkipConditionalFeatureEntry(const FeatureEntry& entry) {
5842 version_info::Channel channel = chrome::GetChannel();
5843 #if defined(OS_CHROMEOS)
5844 // enable-ui-devtools is only available on for non Stable channels.
5845 if (!strcmp(ui_devtools::switches::kEnableUiDevTools, entry.internal_name) &&
5846 channel == version_info::Channel::STABLE) {
5850 if (!strcmp(kLacrosSupportInternalName, entry.internal_name) &&
5851 channel != version_info::Channel::BETA &&
5852 channel != version_info::Channel::DEV &&
5853 channel != version_info::Channel::CANARY &&
5854 channel != version_info::Channel::UNKNOWN) {
5857 #endif // defined(OS_CHROMEOS)
5859 // data-reduction-proxy-lo-fi and enable-data-reduction-proxy-lite-page
5860 // are only available for Chromium builds and the Canary/Dev/Beta channels.
5861 if ((!strcmp("data-reduction-proxy-lo-fi", entry.internal_name) ||
5862 !strcmp("enable-data-reduction-proxy-lite-page", entry.internal_name)) &&
5863 channel != version_info::Channel::BETA &&
5864 channel != version_info::Channel::DEV &&
5865 channel != version_info::Channel::CANARY &&
5866 channel != version_info::Channel::UNKNOWN) {
5870 // enable-unsafe-webgpu is only available on Dev/Canary channels.
5871 if (!strcmp("enable-unsafe-webgpu", entry.internal_name) &&
5872 channel != version_info::Channel::DEV &&
5873 channel != version_info::Channel::CANARY &&
5874 channel != version_info::Channel::UNKNOWN) {
5879 // HDR mode works, but displays everything horribly wrong prior to windows 10.
5880 if (!strcmp("enable-hdr", entry.internal_name) &&
5881 base::win::GetVersion() < base::win::Version::WIN10) {
5886 if (!strcmp("dns-over-https", entry.internal_name) &&
5887 (SystemNetworkContextManager::GetStubResolverConfigReader()
5888 ->ShouldDisableDohForManaged() ||
5889 features::kDnsOverHttpsShowUiParam.Get())) {
5893 if (!strcmp("password-change-support", entry.internal_name)) {
5894 return !base::FeatureList::IsEnabled(features::kTeamfoodFlags);
5897 if (flags::IsFlagExpired(entry.internal_name))
5905 void ConvertFlagsToSwitches(flags_ui::FlagsStorage* flags_storage,
5906 base::CommandLine* command_line,
5907 flags_ui::SentinelsMode sentinels) {
5908 if (command_line->HasSwitch(switches::kNoExperiments))
5911 FlagsStateSingleton::GetFlagsState()->ConvertFlagsToSwitches(
5912 flags_storage, command_line, sentinels, switches::kEnableFeatures,
5913 switches::kDisableFeatures);
5916 std::vector<std::string> RegisterAllFeatureVariationParameters(
5917 flags_ui::FlagsStorage* flags_storage,
5918 base::FeatureList* feature_list) {
5919 return FlagsStateSingleton::GetFlagsState()
5920 ->RegisterAllFeatureVariationParameters(flags_storage, feature_list);
5923 bool AreSwitchesIdenticalToCurrentCommandLine(
5924 const base::CommandLine& new_cmdline,
5925 const base::CommandLine& active_cmdline,
5926 std::set<base::CommandLine::StringType>* out_difference) {
5927 const char* extra_flag_sentinel_begin_flag_name = nullptr;
5928 const char* extra_flag_sentinel_end_flag_name = nullptr;
5929 #if defined(OS_CHROMEOS)
5930 // Put the flags between --policy-switches--begin and --policy-switches-end on
5932 extra_flag_sentinel_begin_flag_name =
5933 chromeos::switches::kPolicySwitchesBegin;
5934 extra_flag_sentinel_end_flag_name = chromeos::switches::kPolicySwitchesEnd;
5935 #endif // OS_CHROMEOS
5936 return flags_ui::FlagsState::AreSwitchesIdenticalToCurrentCommandLine(
5937 new_cmdline, active_cmdline, out_difference,
5938 extra_flag_sentinel_begin_flag_name, extra_flag_sentinel_end_flag_name);
5941 void GetFlagFeatureEntries(flags_ui::FlagsStorage* flags_storage,
5942 flags_ui::FlagAccess access,
5943 base::ListValue* supported_entries,
5944 base::ListValue* unsupported_entries) {
5945 FlagsStateSingleton::GetFlagsState()->GetFlagFeatureEntries(
5946 flags_storage, access, supported_entries, unsupported_entries,
5947 base::Bind(&SkipConditionalFeatureEntry));
5950 void GetFlagFeatureEntriesForDeprecatedPage(
5951 flags_ui::FlagsStorage* flags_storage,
5952 flags_ui::FlagAccess access,
5953 base::ListValue* supported_entries,
5954 base::ListValue* unsupported_entries) {
5955 FlagsStateSingleton::GetFlagsState()->GetFlagFeatureEntries(
5956 flags_storage, access, supported_entries, unsupported_entries,
5957 base::Bind(&ShouldSkipNonDeprecatedFeatureEntry));
5960 bool IsRestartNeededToCommitChanges() {
5961 return FlagsStateSingleton::GetFlagsState()->IsRestartNeededToCommitChanges();
5964 void SetFeatureEntryEnabled(flags_ui::FlagsStorage* flags_storage,
5965 const std::string& internal_name,
5967 FlagsStateSingleton::GetFlagsState()->SetFeatureEntryEnabled(
5968 flags_storage, internal_name, enable);
5971 void SetOriginListFlag(const std::string& internal_name,
5972 const std::string& value,
5973 flags_ui::FlagsStorage* flags_storage) {
5974 FlagsStateSingleton::GetFlagsState()->SetOriginListFlag(internal_name, value,
5978 void RemoveFlagsSwitches(base::CommandLine::SwitchMap* switch_list) {
5979 FlagsStateSingleton::GetFlagsState()->RemoveFlagsSwitches(switch_list);
5982 void ResetAllFlags(flags_ui::FlagsStorage* flags_storage) {
5983 FlagsStateSingleton::GetFlagsState()->ResetAllFlags(flags_storage);
5986 void RecordUMAStatistics(flags_ui::FlagsStorage* flags_storage) {
5987 std::set<std::string> switches;
5988 std::set<std::string> features;
5989 FlagsStateSingleton::GetFlagsState()->GetSwitchesAndFeaturesFromFlags(
5990 flags_storage, &switches, &features);
5991 flags_ui::ReportAboutFlagsHistogram("Launch.FlagsAtStartup", switches,
5997 std::vector<FeatureEntry>* GetEntriesForTesting() {
5998 static base::NoDestructor<std::vector<FeatureEntry>> entries;
5999 return entries.get();
6002 const FeatureEntry* GetFeatureEntries(size_t* count) {
6003 if (!GetEntriesForTesting()->empty()) {
6004 *count = GetEntriesForTesting()->size();
6005 return GetEntriesForTesting()->data();
6007 *count = base::size(kFeatureEntries);
6008 return kFeatureEntries;
6011 void SetFeatureEntries(const std::vector<FeatureEntry>& entries) {
6012 GetEntriesForTesting()->clear();
6013 for (const auto& entry : entries)
6014 GetEntriesForTesting()->push_back(entry);
6015 FlagsStateSingleton::GetInstance()->RebuildState(*GetEntriesForTesting());
6018 } // namespace testing
6020 } // namespace about_flags