1 // Copyright 2012 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // Instructions for adding new entries to this file:
6 // https://chromium.googlesource.com/chromium/src/+/main/docs/how_to_add_your_feature_flag.md#step-2_adding-the-feature-flag-to-the-chrome_flags-ui
8 #include "chrome/browser/about_flags.h"
16 #include "base/base_switches.h"
17 #include "base/command_line.h"
18 #include "base/feature_list.h"
19 #include "base/functional/bind.h"
20 #include "base/functional/callback.h"
21 #include "base/i18n/base_i18n_switches.h"
22 #include "base/memory/singleton.h"
23 #include "base/metrics/histogram_functions.h"
24 #include "base/no_destructor.h"
25 #include "base/strings/string_number_conversions.h"
26 #include "base/strings/utf_string_conversions.h"
27 #include "base/task/task_features.h"
28 #include "base/values.h"
29 #include "build/branding_buildflags.h"
30 #include "build/build_config.h"
31 #include "cc/base/features.h"
32 #include "cc/base/switches.h"
33 #include "chrome/browser/apps/app_discovery_service/app_discovery_service.h"
34 #include "chrome/browser/apps/link_capturing/link_capturing_features.h"
35 #include "chrome/browser/browser_features.h"
36 #include "chrome/browser/browser_process.h"
37 #include "chrome/browser/companion/core/features.h"
38 #include "chrome/browser/fast_checkout/fast_checkout_features.h"
39 #include "chrome/browser/feature_guide/notifications/feature_notification_guide_service.h"
40 #include "chrome/browser/file_system_access/file_system_access_features.h"
41 #include "chrome/browser/flag_descriptions.h"
42 #include "chrome/browser/follow/follow_features.h"
43 #include "chrome/browser/ip_protection/ip_protection_switches.h"
44 #include "chrome/browser/login_detection/login_detection_util.h"
45 #include "chrome/browser/media/router/discovery/access_code/access_code_cast_constants.h"
46 #include "chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h"
47 #include "chrome/browser/navigation_predictor/navigation_predictor_features.h"
48 #include "chrome/browser/navigation_predictor/search_engine_preconnector.h"
49 #include "chrome/browser/net/stub_resolver_config_reader.h"
50 #include "chrome/browser/net/system_network_context_manager.h"
51 #include "chrome/browser/notifications/scheduler/public/features.h"
52 #include "chrome/browser/page_info/page_info_features.h"
53 #include "chrome/browser/permissions/notifications_permission_revocation_config.h"
54 #include "chrome/browser/permissions/quiet_notification_permission_ui_config.h"
55 #include "chrome/browser/predictors/loading_predictor_config.h"
56 #include "chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.h"
57 #include "chrome/browser/preloading/preloading_features.h"
58 #include "chrome/browser/resource_coordinator/tab_manager_features.h"
59 #include "chrome/browser/share/share_features.h"
60 #include "chrome/browser/sharing/features.h"
61 #include "chrome/browser/sharing_hub/sharing_hub_features.h"
62 #include "chrome/browser/signin/signin_features.h"
63 #include "chrome/browser/site_isolation/about_flags.h"
64 #include "chrome/browser/thumbnail/cc/features.h"
65 #include "chrome/browser/tpcd/experiment/tpcd_experiment_features.h"
66 #include "chrome/browser/ui/browser_navigator_params.h"
67 #include "chrome/browser/ui/ui_features.h"
68 #include "chrome/browser/unexpire_flags.h"
69 #include "chrome/browser/unexpire_flags_gen.h"
70 #include "chrome/browser/webauthn/webauthn_switches.h"
71 #include "chrome/common/buildflags.h"
72 #include "chrome/common/channel_info.h"
73 #include "chrome/common/chrome_content_client.h"
74 #include "chrome/common/chrome_features.h"
75 #include "chrome/common/chrome_switches.h"
76 #include "chrome/common/companion/visual_search/features.h"
77 #include "components/assist_ranker/predictor_config_definitions.h"
78 #include "components/autofill/core/browser/autofill_experiments.h"
79 #include "components/autofill/core/common/autofill_features.h"
80 #include "components/autofill/core/common/autofill_payments_features.h"
81 #include "components/autofill/core/common/autofill_switches.h"
82 #include "components/autofill/core/common/autofill_util.h"
83 #include "components/browser_sync/browser_sync_switches.h"
84 #include "components/browsing_data/core/features.h"
85 #include "components/commerce/core/commerce_feature_list.h"
86 #include "components/commerce/core/flag_descriptions.h"
87 #include "components/component_updater/component_updater_command_line_config_policy.h"
88 #include "components/component_updater/component_updater_switches.h"
89 #include "components/compose/core/browser/compose_features.h"
90 #include "components/content_settings/core/common/features.h"
91 #include "components/contextual_search/core/browser/contextual_search_field_trial.h"
92 #include "components/contextual_search/core/browser/public.h"
93 #include "components/dom_distiller/core/dom_distiller_features.h"
94 #include "components/dom_distiller/core/dom_distiller_switches.h"
95 #include "components/download/public/common/download_features.h"
96 #include "components/error_page/common/error_page_switches.h"
97 #include "components/feature_engagement/public/feature_constants.h"
98 #include "components/feature_engagement/public/feature_list.h"
99 #include "components/feed/feed_feature_list.h"
100 #include "components/flags_ui/feature_entry.h"
101 #include "components/flags_ui/feature_entry_macros.h"
102 #include "components/flags_ui/flags_state.h"
103 #include "components/flags_ui/flags_storage.h"
104 #include "components/flags_ui/flags_ui_metrics.h"
105 #include "components/flags_ui/flags_ui_switches.h"
106 #include "components/flags_ui/pref_service_flags_storage.h"
107 #include "components/heavy_ad_intervention/heavy_ad_features.h"
108 #include "components/history/core/browser/features.h"
109 #include "components/history_clusters/core/config.h"
110 #include "components/history_clusters/core/features.h"
111 #include "components/history_clusters/core/on_device_clustering_features.h"
112 #include "components/invalidation/impl/invalidation_switches.h"
113 #include "components/language/core/common/language_experiments.h"
114 #include "components/lens/buildflags.h"
115 #include "components/lens/lens_features.h"
116 #include "components/manta/features.h"
117 #include "components/mirroring/service/mirroring_features.h"
118 #include "components/nacl/common/buildflags.h"
119 #include "components/nacl/common/nacl_switches.h"
120 #include "components/network_session_configurator/common/network_features.h"
121 #include "components/network_session_configurator/common/network_switches.h"
122 #include "components/no_state_prefetch/browser/no_state_prefetch_field_trial.h"
123 #include "components/ntp_tiles/features.h"
124 #include "components/offline_pages/core/offline_page_feature.h"
125 #include "components/omnibox/browser/omnibox_feature_configs.h"
126 #include "components/omnibox/browser/omnibox_field_trial.h"
127 #include "components/omnibox/common/omnibox_features.h"
128 #include "components/open_from_clipboard/clipboard_recent_content_features.h"
129 #include "components/optimization_guide/core/optimization_guide_features.h"
130 #include "components/optimization_guide/core/optimization_guide_switches.h"
131 #include "components/page_image_service/features.h"
132 #include "components/page_info/core/features.h"
133 #include "components/paint_preview/buildflags/buildflags.h"
134 #include "components/paint_preview/features/features.h"
135 #include "components/password_manager/core/browser/features/password_features.h"
136 #include "components/password_manager/core/common/password_manager_features.h"
137 #include "components/payments/core/features.h"
138 #include "components/performance_manager/public/features.h"
139 #include "components/permissions/features.h"
140 #include "components/policy/core/common/features.h"
141 #include "components/power_bookmarks/core/flag_descriptions.h"
142 #include "components/power_bookmarks/core/power_bookmark_features.h"
143 #include "components/privacy_sandbox/privacy_sandbox_features.h"
144 #include "components/query_tiles/switches.h"
145 #include "components/reading_list/features/reading_list_switches.h"
146 #include "components/safe_browsing/core/common/features.h"
147 #include "components/search/ntp_features.h"
148 #include "components/security_interstitials/content/stateful_ssl_host_state_delegate.h"
149 #include "components/security_state/core/security_state.h"
150 #include "components/segmentation_platform/public/features.h"
151 #include "components/send_tab_to_self/features.h"
152 #include "components/services/heap_profiling/public/cpp/switches.h"
153 #include "components/services/storage/public/cpp/buckets/bucket_info.h"
154 #include "components/shared_highlighting/core/common/shared_highlighting_features.h"
155 #include "components/signin/core/browser/dice_account_reconcilor_delegate.h"
156 #include "components/signin/public/base/signin_buildflags.h"
157 #include "components/signin/public/base/signin_switches.h"
158 #include "components/site_isolation/features.h"
159 #include "components/spellcheck/common/spellcheck_features.h"
160 #include "components/spellcheck/spellcheck_buildflags.h"
161 #include "components/supervised_user/core/common/buildflags.h"
162 #include "components/sync/base/command_line_switches.h"
163 #include "components/sync/base/features.h"
164 #include "components/tracing/common/tracing_switches.h"
165 #include "components/translate/core/browser/translate_prefs.h"
166 #include "components/translate/core/browser/translate_ranker_impl.h"
167 #include "components/translate/core/common/translate_util.h"
168 #include "components/trusted_vault/features.h"
169 #include "components/ui_devtools/switches.h"
170 #include "components/variations/variations_switches.h"
171 #include "components/version_info/version_info.h"
172 #include "components/viz/common/features.h"
173 #include "components/viz/common/switches.h"
174 #include "components/webapps/browser/features.h"
175 #include "components/webapps/common/switches.h"
176 #include "content/public/common/content_features.h"
177 #include "content/public/common/content_switches.h"
178 #include "device/base/features.h"
179 #include "device/bluetooth/bluez/bluez_features.h"
180 #include "device/bluetooth/chromeos_platform_features.h"
181 #include "device/bluetooth/floss/floss_features.h"
182 #include "device/fido/features.h"
183 #include "device/gamepad/public/cpp/gamepad_features.h"
184 #include "device/vr/buildflags/buildflags.h"
185 #include "extensions/buildflags/buildflags.h"
186 #include "flag_descriptions.h"
187 #include "gpu/config/gpu_finch_features.h"
188 #include "gpu/config/gpu_switches.h"
189 #include "media/audio/audio_features.h"
190 #include "media/base/media_switches.h"
191 #include "media/capture/capture_switches.h"
192 #include "media/media_buildflags.h"
193 #include "media/midi/midi_switches.h"
194 #include "media/webrtc/webrtc_features.h"
195 #include "mojo/core/embedder/features.h"
196 #include "net/base/features.h"
197 #include "net/net_buildflags.h"
198 #include "net/nqe/effective_connection_type.h"
199 #include "net/nqe/network_quality_estimator_params.h"
200 #include "net/websockets/websocket_basic_handshake_stream.h"
201 #include "pdf/buildflags.h"
202 #include "ppapi/buildflags/buildflags.h"
203 #include "printing/buildflags/buildflags.h"
204 #include "sandbox/policy/features.h"
205 #include "sandbox/policy/switches.h"
206 #include "services/device/public/cpp/device_features.h"
207 #include "services/media_session/public/cpp/features.h"
208 #include "services/network/public/cpp/features.h"
209 #include "services/network/public/cpp/network_switches.h"
210 #include "services/tracing/public/cpp/tracing_features.h"
211 #include "storage/browser/quota/quota_features.h"
212 #include "third_party/blink/public/common/features.h"
213 #include "third_party/blink/public/common/features_generated.h"
214 #include "third_party/blink/public/common/forcedark/forcedark_switches.h"
215 #include "third_party/blink/public/common/switches.h"
216 #include "ui/accessibility/accessibility_features.h"
217 #include "ui/accessibility/accessibility_switches.h"
218 #include "ui/base/ui_base_features.h"
219 #include "ui/base/ui_base_switches.h"
220 #include "ui/compositor/compositor_switches.h"
221 #include "ui/display/display_features.h"
222 #include "ui/display/display_switches.h"
223 #include "ui/events/blink/blink_features.h"
224 #include "ui/events/event_switches.h"
225 #include "ui/events/events_features.h"
226 #include "ui/gfx/switches.h"
227 #include "ui/gl/buildflags.h"
228 #include "ui/gl/gl_features.h"
229 #include "ui/gl/gl_switches.h"
230 #include "ui/native_theme/native_theme_features.h"
231 #include "ui/ui_features.h"
232 #include "url/url_features.h"
234 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
235 #include "base/allocator/buildflags.h"
238 #if BUILDFLAG(IS_CHROMEOS)
239 #include "base/process/process.h"
240 #include "chromeos/constants/chromeos_features.h"
243 #if BUILDFLAG(IS_ANDROID)
244 #include "chrome/browser/flags/android/chrome_feature_list.h"
245 #include "chrome/browser/notifications/chime/android/features.h"
246 #include "chrome/browser/push_messaging/push_messaging_features.h"
247 #include "components/browser_ui/photo_picker/android/features.h"
248 #include "components/browser_ui/site_settings/android/features.h"
249 #include "components/content_creation/notes/core/note_features.h"
250 #include "components/external_intents/android/external_intents_features.h"
251 #include "components/messages/android/messages_feature.h"
252 #include "components/translate/content/android/translate_message.h"
253 #include "ui/android/ui_android_features.h"
254 #else // BUILDFLAG(IS_ANDROID)
255 #include "chrome/browser/media/router/discovery/access_code/access_code_cast_sink_service.h"
256 #include "chrome/browser/media/router/media_router_feature.h"
257 #include "chrome/browser/web_applications/preinstalled_app_install_features.h"
258 #include "components/user_notes/user_notes_features.h"
259 #endif // BUILDFLAG(IS_ANDROID)
261 #if BUILDFLAG(IS_CHROMEOS_ASH)
262 #include "ash/components/arc/arc_features.h"
263 #include "ash/components/arc/arc_util.h"
264 #include "ash/constants/ash_features.h"
265 #include "ash/constants/ash_switches.h"
266 #include "ash/public/cpp/app_list/app_list_features.h"
267 #include "ash/public/cpp/keyboard/keyboard_switches.h"
268 #include "chrome/browser/ash/app_list/search/search_features.h"
269 #include "chrome/browser/ash/bruschetta/bruschetta_util.h"
270 #include "chrome/browser/ash/crosapi/browser_manager.h"
271 #include "chrome/browser/ash/crosapi/browser_util.h"
272 #include "chrome/browser/ash/crostini/crostini_util.h"
273 #include "chrome/browser/ash/file_suggest/item_suggest_cache.h"
274 #include "chrome/browser/ash/ownership/owner_settings_service_ash.h"
275 #include "chrome/browser/ash/ownership/owner_settings_service_ash_factory.h"
276 #include "chrome/browser/ash/policy/reporting/metrics_reporting/metric_reporting_manager.h"
277 #include "chrome/browser/ash/settings/about_flags.h"
278 #include "chrome/browser/component_updater/cros_component_installer_chromeos.h"
279 #include "chrome/browser/nearby_sharing/common/nearby_share_features.h"
280 #include "chrome/common/chrome_features.h"
281 #include "chrome/common/webui_url_constants.h"
282 #include "chromeos/ash/components/assistant/buildflags.h"
283 #include "chromeos/ash/components/login/hibernate/hibernate_manager.h"
284 #include "chromeos/ash/components/memory/swap_configuration.h"
285 #include "chromeos/ash/components/standalone_browser/lacros_availability.h"
286 #include "chromeos/ash/components/standalone_browser/standalone_browser_features.h"
287 #include "chromeos/ash/services/assistant/public/cpp/features.h"
288 #include "components/app_restore/features.h"
289 #include "components/metrics/structured/structured_metrics_features.h" // nogncheck
290 #include "media/capture/video/chromeos/video_capture_features_chromeos.h"
291 #include "remoting/host/chromeos/features.h"
292 #include "third_party/cros_system_api/switches/chrome_switches.h"
293 #include "ui/events/ozone/features.h"
294 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
296 #if BUILDFLAG(IS_CHROMEOS_LACROS)
297 #include "base/i18n/icu_mergeable_data_file.h"
298 #include "chrome/browser/lacros/lacros_url_handling.h"
299 #include "chrome/common/webui_url_constants.h"
302 #if BUILDFLAG(IS_MAC)
303 #include "chrome/browser/ui/browser_dialogs.h"
304 #include "chrome/browser/ui/cocoa/screentime/screentime_features.h"
305 #endif // BUILDFLAG(IS_MAC)
307 #if BUILDFLAG(ENABLE_CARDBOARD)
308 #include "device/vr/public/cpp/features.h"
309 #endif // ENABLE_CARDBOARD
311 #if BUILDFLAG(ENABLE_EXTENSIONS)
312 #include "chrome/browser/extensions/cws_info_service.h"
313 #include "extensions/common/extension_features.h"
314 #include "extensions/common/switches.h"
315 #endif // BUILDFLAG(ENABLE_EXTENSIONS)
317 #if BUILDFLAG(ENABLE_PDF)
318 #include "pdf/pdf_features.h"
321 #if BUILDFLAG(ENABLE_PRINTING)
322 #include "printing/printing_features.h"
325 #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
326 #include "components/supervised_user/core/common/features.h" // nogncheck
327 #endif // ENABLE_SUPERVISED_USERS
329 #if BUILDFLAG(ENABLE_VR)
330 #include "device/vr/public/cpp/features.h"
333 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
334 #include "ui/ozone/buildflags.h"
335 #include "ui/ozone/public/ozone_switches.h"
336 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
338 #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
339 #include "chrome/browser/promos/promos_features.h"
340 #endif // !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
342 #if BUILDFLAG(IS_WIN)
343 #include "chrome/browser/enterprise/platform_auth/platform_auth_features.h"
344 #include "chrome/browser/win/titlebar_config.h"
347 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
348 #include "chrome/browser/enterprise/profile_management/profile_management_features.h"
349 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
351 #if defined(TOOLKIT_VIEWS)
352 #include "ui/views/views_features.h"
353 #include "ui/views/views_switches.h"
354 #endif // defined(TOOLKIT_VIEWS)
356 using flags_ui::FeatureEntry;
357 using flags_ui::kDeprecated;
358 using flags_ui::kOsAndroid;
359 using flags_ui::kOsCrOS;
360 using flags_ui::kOsCrOSOwnerOnly;
361 using flags_ui::kOsFuchsia;
362 using flags_ui::kOsLacros;
363 using flags_ui::kOsLinux;
364 using flags_ui::kOsMac;
365 using flags_ui::kOsWin;
367 namespace about_flags {
371 const unsigned kOsAll =
372 kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsAndroid | kOsFuchsia | kOsLacros;
373 const unsigned kOsDesktop =
374 kOsMac | kOsWin | kOsLinux | kOsCrOS | kOsFuchsia | kOsLacros;
376 #if defined(USE_AURA)
377 const unsigned kOsAura = kOsWin | kOsLinux | kOsCrOS | kOsFuchsia | kOsLacros;
380 #if defined(USE_AURA)
381 const FeatureEntry::Choice kPullToRefreshChoices[] = {
382 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
383 {flags_ui::kGenericExperimentChoiceDisabled, switches::kPullToRefresh, "0"},
384 {flags_ui::kGenericExperimentChoiceEnabled, switches::kPullToRefresh, "1"},
385 {flag_descriptions::kPullToRefreshEnabledTouchscreen,
386 switches::kPullToRefresh, "2"}};
389 const FeatureEntry::Choice kOverlayStrategiesChoices[] = {
390 {flag_descriptions::kOverlayStrategiesDefault, "", ""},
391 {flag_descriptions::kOverlayStrategiesNone,
392 switches::kEnableHardwareOverlays, ""},
393 {flag_descriptions::kOverlayStrategiesUnoccludedFullscreen,
394 switches::kEnableHardwareOverlays, "single-fullscreen"},
395 {flag_descriptions::kOverlayStrategiesUnoccluded,
396 switches::kEnableHardwareOverlays, "single-fullscreen,single-on-top"},
397 {flag_descriptions::kOverlayStrategiesOccludedAndUnoccluded,
398 switches::kEnableHardwareOverlays,
399 "single-fullscreen,single-on-top,underlay"},
402 const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = {
403 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
404 {flag_descriptions::kTouchSelectionStrategyCharacter,
405 blink::switches::kTouchTextSelectionStrategy,
406 blink::switches::kTouchTextSelectionStrategy_Character},
407 {flag_descriptions::kTouchSelectionStrategyDirection,
408 blink::switches::kTouchTextSelectionStrategy,
409 blink::switches::kTouchTextSelectionStrategy_Direction}};
411 #if !BUILDFLAG(IS_ANDROID)
412 const FeatureEntry::Choice kEnablePasswordSharingChoices[] = {
414 {"Bootstraping Only", switches::kEnableFeatures,
415 "SharingOfferKeyPairBootstrap"},
416 {"Enabled", switches::kEnableFeatures,
417 "SharingOfferKeyPairBootstrap,SendPasswords,"
418 "PasswordManagerEnableSenderService,"
419 "PasswordManagerEnableReceiverService,SharedPasswordNotificationUI"},
423 #if BUILDFLAG(IS_WIN)
424 const FeatureEntry::FeatureParam kMediaFoundationClearStrategyUseFrameServer[] =
425 {{"strategy", "frame-server"}};
427 const FeatureEntry::FeatureParam
428 kMediaFoundationClearStrategyUseDirectComposition[] = {
429 {"strategy", "direct-composition"}};
431 const FeatureEntry::FeatureParam kMediaFoundationClearStrategyUseDynamic[] = {
432 {"strategy", "dynamic"}};
434 const FeatureEntry::FeatureVariation kMediaFoundationClearStrategyVariations[] =
435 {{"Direct Composition", kMediaFoundationClearStrategyUseDirectComposition,
436 std::size(kMediaFoundationClearStrategyUseDirectComposition), nullptr},
437 {"Frame Server", kMediaFoundationClearStrategyUseFrameServer,
438 std::size(kMediaFoundationClearStrategyUseFrameServer), nullptr},
439 {"Dynamic", kMediaFoundationClearStrategyUseDynamic,
440 std::size(kMediaFoundationClearStrategyUseDynamic), nullptr}};
442 const FeatureEntry::Choice kUseAngleChoicesWindows[] = {
443 {flag_descriptions::kUseAngleDefault, "", ""},
444 {flag_descriptions::kUseAngleGL, switches::kUseANGLE,
445 gl::kANGLEImplementationOpenGLName},
446 {flag_descriptions::kUseAngleD3D11, switches::kUseANGLE,
447 gl::kANGLEImplementationD3D11Name},
448 {flag_descriptions::kUseAngleD3D9, switches::kUseANGLE,
449 gl::kANGLEImplementationD3D9Name},
450 {flag_descriptions::kUseAngleD3D11on12, switches::kUseANGLE,
451 gl::kANGLEImplementationD3D11on12Name}};
452 #elif BUILDFLAG(IS_MAC)
453 const FeatureEntry::Choice kUseAngleChoicesMac[] = {
454 {flag_descriptions::kUseAngleDefault, "", ""},
455 {flag_descriptions::kUseAngleGL, switches::kUseANGLE,
456 gl::kANGLEImplementationOpenGLName},
457 {flag_descriptions::kUseAngleMetal, switches::kUseANGLE,
458 gl::kANGLEImplementationMetalName}};
461 #if BUILDFLAG(IS_WIN)
462 const FeatureEntry::FeatureParam kDXGIWaitableSwapChain1Frame = {
463 "DXGIWaitableSwapChainMaxQueuedFrames", "1"};
465 const FeatureEntry::FeatureParam kDXGIWaitableSwapChain2Frames = {
466 "DXGIWaitableSwapChainMaxQueuedFrames", "2"};
468 const FeatureEntry::FeatureParam kDXGIWaitableSwapChain3Frames = {
469 "DXGIWaitableSwapChainMaxQueuedFrames", "3"};
471 const FeatureEntry::FeatureVariation kDXGIWaitableSwapChainVariations[] = {
472 {"Max 1 Frame", &kDXGIWaitableSwapChain1Frame, 1, nullptr},
473 {"Max 2 Frames", &kDXGIWaitableSwapChain2Frames, 1, nullptr},
474 {"Max 3 Frames", &kDXGIWaitableSwapChain3Frames, 1, nullptr}};
477 #if BUILDFLAG(IS_LINUX)
478 const FeatureEntry::Choice kOzonePlatformHintRuntimeChoices[] = {
479 {flag_descriptions::kOzonePlatformHintChoiceDefault, "", ""},
480 {flag_descriptions::kOzonePlatformHintChoiceAuto,
481 switches::kOzonePlatformHint, "auto"},
482 #if BUILDFLAG(OZONE_PLATFORM_X11)
483 {flag_descriptions::kOzonePlatformHintChoiceX11,
484 switches::kOzonePlatformHint, "x11"},
486 #if BUILDFLAG(OZONE_PLATFORM_WAYLAND)
487 {flag_descriptions::kOzonePlatformHintChoiceWayland,
488 switches::kOzonePlatformHint, "wayland"},
493 #if BUILDFLAG(ENABLE_VR)
494 const FeatureEntry::Choice kWebXrForceRuntimeChoices[] = {
495 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
496 {flag_descriptions::kWebXrRuntimeChoiceNone, switches::kWebXrForceRuntime,
497 switches::kWebXrRuntimeNone},
498 #if BUILDFLAG(ENABLE_CARDBOARD)
499 {flag_descriptions::kWebXrRuntimeChoiceCardboard,
500 switches::kWebXrForceRuntime, switches::kWebXrRuntimeCardboard},
502 #if BUILDFLAG(ENABLE_GVR_SERVICES)
503 {flag_descriptions::kWebXrRuntimeChoiceGVR, switches::kWebXrForceRuntime,
504 switches::kWebXrRuntimeGVR},
506 #if BUILDFLAG(ENABLE_OPENXR)
507 {flag_descriptions::kWebXrRuntimeChoiceOpenXR, switches::kWebXrForceRuntime,
508 switches::kWebXrRuntimeOpenXr},
509 #endif // ENABLE_OPENXR
513 #if BUILDFLAG(IS_ANDROID)
514 const FeatureEntry::FeatureParam kCCTResizablePolicyParamUseAllowlist[] = {
515 {"default_policy", "use-allowlist"}};
516 const FeatureEntry::FeatureParam kCCTResizablePolicyParamUseDenylist[] = {
517 {"default_policy", "use-denylist"}};
519 const FeatureEntry::FeatureVariation
520 kCCTResizableThirdPartiesDefaultPolicyVariations[] = {
521 {"Use Allowlist", kCCTResizablePolicyParamUseAllowlist,
522 std::size(kCCTResizablePolicyParamUseAllowlist), nullptr},
523 {"Use Denylist", kCCTResizablePolicyParamUseDenylist,
524 std::size(kCCTResizablePolicyParamUseDenylist), nullptr}};
526 const FeatureEntry::FeatureParam kCCTBrandingTestFriendly[] = {
527 {"use_temporary_storage", "true"},
528 {"branding_cadence", "10000"} // 10 seconds
531 const FeatureEntry::FeatureVariation kCctBrandTransparencyVariations[] = {
532 {"Test friendly mode", kCCTBrandingTestFriendly,
533 std::size(kCCTBrandingTestFriendly), nullptr}};
535 const FeatureEntry::FeatureParam
536 kCCTRealTimeEngagementSignalsParamRealValues[] = {{"real_values", "true"}};
537 const FeatureEntry::FeatureParam
538 kCCTRealTimeEngagementSignalsParamFakeValues[] = {{"real_values", "false"}};
540 const FeatureEntry::FeatureParam
541 kCCTPageInsightsHubAutotriggerDurationTesting[] = {
542 {"page_insights_can_autotrigger_after_end", "1000"} // 1s
545 const FeatureEntry::FeatureVariation
546 kCCTPageInsightsHubAutotriggerDurationVariations[] = {
547 {"with fast peek trigger",
548 kCCTPageInsightsHubAutotriggerDurationTesting,
549 std::size(kCCTPageInsightsHubAutotriggerDurationTesting), nullptr}};
551 const FeatureEntry::FeatureVariation kCCTRealTimeEngagementSignalsVariations[] =
552 {{"Send real values", kCCTRealTimeEngagementSignalsParamRealValues,
553 std::size(kCCTRealTimeEngagementSignalsParamRealValues), nullptr},
554 {"Send fake values", kCCTRealTimeEngagementSignalsParamFakeValues,
555 std::size(kCCTRealTimeEngagementSignalsParamFakeValues), nullptr}};
557 const FeatureEntry::FeatureParam
558 kCCTRealTimeEngagementSignalsAlternativeImplParam300[] = {
559 {"time_can_update_after_end", "300"} // 300ms
561 const FeatureEntry::FeatureParam
562 kCCTRealTimeEngagementSignalsAlternativeImplParam100[] = {
563 {"time_can_update_after_end", "100"} // 100ms
566 const FeatureEntry::FeatureVariation
567 kCCTRealTimeEngagementSignalsAlternativeImplVariations[] = {
568 {"Allow 300ms for scroll updates after scroll-end",
569 kCCTRealTimeEngagementSignalsAlternativeImplParam300,
570 std::size(kCCTRealTimeEngagementSignalsAlternativeImplParam300),
572 {"Allow 100ms for scroll updates after scroll-end",
573 kCCTRealTimeEngagementSignalsAlternativeImplParam100,
574 std::size(kCCTRealTimeEngagementSignalsAlternativeImplParam100),
577 const FeatureEntry::Choice kReaderModeHeuristicsChoices[] = {
578 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
579 {flag_descriptions::kReaderModeHeuristicsMarkup,
580 switches::kReaderModeHeuristics,
581 switches::reader_mode_heuristics::kOGArticle},
582 {flag_descriptions::kReaderModeHeuristicsAdaboost,
583 switches::kReaderModeHeuristics,
584 switches::reader_mode_heuristics::kAdaBoost},
585 {flag_descriptions::kReaderModeHeuristicsAlwaysOn,
586 switches::kReaderModeHeuristics,
587 switches::reader_mode_heuristics::kAlwaysTrue},
588 {flag_descriptions::kReaderModeHeuristicsAlwaysOff,
589 switches::kReaderModeHeuristics, switches::reader_mode_heuristics::kNone},
590 {flag_descriptions::kReaderModeHeuristicsAllArticles,
591 switches::kReaderModeHeuristics,
592 switches::reader_mode_heuristics::kAllArticles},
595 const FeatureEntry::Choice kForceUpdateMenuTypeChoices[] = {
596 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
597 {flag_descriptions::kUpdateMenuTypeNone, switches::kForceUpdateMenuType,
599 {flag_descriptions::kUpdateMenuTypeUpdateAvailable,
600 switches::kForceUpdateMenuType, "update_available"},
601 {flag_descriptions::kUpdateMenuTypeUnsupportedOSVersion,
602 switches::kForceUpdateMenuType, "unsupported_os_version"},
605 const FeatureEntry::FeatureParam kOmahaMinSdkVersionAndroidMinSdk1[] = {
606 {"min_sdk_version", "1"}};
607 const FeatureEntry::FeatureParam kOmahaMinSdkVersionAndroidMinSdk1000[] = {
608 {"min_sdk_version", "1000"}};
609 const FeatureEntry::FeatureVariation kOmahaMinSdkVersionAndroidVariations[] = {
610 {flag_descriptions::kOmahaMinSdkVersionAndroidMinSdk1Description,
611 kOmahaMinSdkVersionAndroidMinSdk1,
612 std::size(kOmahaMinSdkVersionAndroidMinSdk1), nullptr},
613 {flag_descriptions::kOmahaMinSdkVersionAndroidMinSdk1000Description,
614 kOmahaMinSdkVersionAndroidMinSdk1000,
615 std::size(kOmahaMinSdkVersionAndroidMinSdk1000), nullptr},
618 const FeatureEntry::FeatureParam
619 kOptimizationGuidePersonalizedFetchingAllowPageInsights[] = {
620 {"allowed_contexts", "CONTEXT_PAGE_INSIGHTS_HUB"}};
621 const FeatureEntry::FeatureVariation
622 kOptimizationGuidePersonalizedFetchingAllowPageInsightsVariations[] = {
623 {"for Page Insights",
624 kOptimizationGuidePersonalizedFetchingAllowPageInsights,
625 std::size(kOptimizationGuidePersonalizedFetchingAllowPageInsights),
628 #else // BUILDFLAG(IS_ANDROID)
629 const FeatureEntry::FeatureParam kReaderModeOfferInSettings[] = {
630 {switches::kReaderModeDiscoverabilityParamName,
631 switches::kReaderModeOfferInSettings}};
633 const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
634 {"available in settings", kReaderModeOfferInSettings,
635 std::size(kReaderModeOfferInSettings), nullptr}};
636 #endif // BUILDFLAG(IS_ANDROID)
638 #if BUILDFLAG(IS_ANDROID)
639 const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNone[] = {
640 {"mode", "always-none"}};
641 const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNewTab[] = {
642 {"mode", "always-new-tab"}};
643 const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysShare[] = {
644 {"mode", "always-share"}};
645 const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysVoice[] = {
646 {"mode", "always-voice"}};
647 const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysTranslate[] = {
648 {"mode", "always-translate"}};
649 const FeatureEntry::FeatureVariation kAdaptiveButtonInTopToolbarVariations[] = {
650 {"Always None", kAdaptiveButton_AlwaysNone,
651 std::size(kAdaptiveButton_AlwaysNone), nullptr},
652 {"Always New Tab", kAdaptiveButton_AlwaysNewTab,
653 std::size(kAdaptiveButton_AlwaysNewTab), nullptr},
654 {"Always Share", kAdaptiveButton_AlwaysShare,
655 std::size(kAdaptiveButton_AlwaysShare), nullptr},
656 {"Always Voice", kAdaptiveButton_AlwaysVoice,
657 std::size(kAdaptiveButton_AlwaysVoice), nullptr},
658 {"Always Translate", kAdaptiveButton_AlwaysTranslate,
659 std::size(kAdaptiveButton_AlwaysTranslate), nullptr},
662 const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_NewTab[] = {
663 {"default_segment", "new-tab"},
664 {"show_ui_only_after_ready", "false"},
665 {"ignore_segmentation_results", "true"}};
666 const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Share[] = {
667 {"default_segment", "share"},
668 {"show_ui_only_after_ready", "false"},
669 {"ignore_segmentation_results", "true"}};
670 const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Voice[] = {
671 {"default_segment", "voice"},
672 {"show_ui_only_after_ready", "false"},
673 {"ignore_segmentation_results", "true"}};
674 const FeatureEntry::FeatureVariation
675 kAdaptiveButtonInTopToolbarCustomizationVariations[] = {
676 {"New Tab", kAdaptiveButtonCustomization_NewTab,
677 std::size(kAdaptiveButtonCustomization_NewTab), nullptr},
678 {"Share", kAdaptiveButtonCustomization_Share,
679 std::size(kAdaptiveButtonCustomization_Share), nullptr},
680 {"Voice", kAdaptiveButtonCustomization_Voice,
681 std::size(kAdaptiveButtonCustomization_Voice), nullptr},
684 const FeatureEntry::FeatureParam kContextualPageActionsUiParams_Quiet[] = {
685 {"action_chip", "false"},
687 const FeatureEntry::FeatureParam kContextualPageActionsUiParams_ActionChip[] = {
688 {"action_chip", "true"},
689 {"action_chip_time_ms", "3000"},
691 const FeatureEntry::FeatureParam
692 kContextualPageActionsUiParams_ActionChip_6s[] = {
693 {"action_chip", "true"},
694 {"action_chip_time_ms", "6000"},
696 const FeatureEntry::FeatureParam
697 kContextualPageActionsUiParams_ActionChip_AltColor[] = {
698 {"action_chip", "true"},
699 {"action_chip_time_ms", "3000"},
700 {"action_chip_with_different_color", "true"},
702 const FeatureEntry::FeatureParam
703 kContextualPageActionsUiParams_ActionChip_AltColor_6s[] = {
704 {"action_chip", "true"},
705 {"action_chip_time_ms", "6000"},
706 {"action_chip_with_different_color", "true"},
709 const FeatureEntry::FeatureParam kContextualPageActions_DisableUi[]{
710 {"disable_ui", "true"},
712 const FeatureEntry::FeatureVariation kContextualPageActionsVariations[] = {
713 {"Disable UI", kContextualPageActions_DisableUi},
716 const FeatureEntry::FeatureVariation
717 kContextualPageActionPriceTrackingVariations[] = {
718 {"Quiet", kContextualPageActionsUiParams_Quiet,
719 std::size(kContextualPageActionsUiParams_Quiet), nullptr},
720 {"Action Chip", kContextualPageActionsUiParams_ActionChip,
721 std::size(kContextualPageActionsUiParams_ActionChip), nullptr},
722 {"Action Chip - 6s", kContextualPageActionsUiParams_ActionChip_6s,
723 std::size(kContextualPageActionsUiParams_ActionChip_6s), nullptr},
724 {"Action Chip - Alternative Color",
725 kContextualPageActionsUiParams_ActionChip_AltColor,
726 std::size(kContextualPageActionsUiParams_ActionChip_AltColor),
728 {"Action Chip - Alternative Color - 6s",
729 kContextualPageActionsUiParams_ActionChip_AltColor_6s,
730 std::size(kContextualPageActionsUiParams_ActionChip_AltColor_6s),
734 const FeatureEntry::FeatureParam
735 kContextualPageActionReaderMode_ActionChip_NotRateLimited[] = {
736 {"action_chip", "true"},
737 {"action_chip_time_ms", "3000"},
738 {"reader_mode_session_rate_limiting", "false"},
740 const FeatureEntry::FeatureParam
741 kContextualPageActionReaderMode_ActionChip_NotRateLimited_6s[] = {
742 {"action_chip", "true"},
743 {"action_chip_time_ms", "6000"},
744 {"reader_mode_session_rate_limiting", "false"},
746 const FeatureEntry::FeatureVariation
747 kContextualPageActionReaderModeVariations[] = {
748 {"Quiet", kContextualPageActionsUiParams_Quiet,
749 std::size(kContextualPageActionsUiParams_Quiet), nullptr},
750 {"Action Chip", kContextualPageActionsUiParams_ActionChip,
751 std::size(kContextualPageActionsUiParams_ActionChip), nullptr},
752 {"Action Chip - 6s", kContextualPageActionsUiParams_ActionChip_6s,
753 std::size(kContextualPageActionsUiParams_ActionChip_6s), nullptr},
754 {"Action Chip - Alternative Color",
755 kContextualPageActionsUiParams_ActionChip_AltColor,
756 std::size(kContextualPageActionsUiParams_ActionChip_AltColor),
758 {"Action Chip - Alternative Color - 6s",
759 kContextualPageActionsUiParams_ActionChip_AltColor_6s,
760 std::size(kContextualPageActionsUiParams_ActionChip_AltColor_6s),
762 {"Action Chip - Not rate limited - 3s",
763 kContextualPageActionReaderMode_ActionChip_NotRateLimited,
764 std::size(kContextualPageActionReaderMode_ActionChip_NotRateLimited),
766 {"Action Chip - Not rate limited - 6s",
767 kContextualPageActionReaderMode_ActionChip_NotRateLimited_6s,
769 kContextualPageActionReaderMode_ActionChip_NotRateLimited_6s),
773 #endif // BUILDFLAG(IS_ANDROID)
775 #if !BUILDFLAG(IS_CHROMEOS_ASH)
776 const FeatureEntry::FeatureParam kForceDark_SimpleHsl[] = {
777 {"inversion_method", "hsl_based"},
778 {"image_behavior", "none"},
779 {"foreground_lightness_threshold", "150"},
780 {"background_lightness_threshold", "205"}};
782 const FeatureEntry::FeatureParam kForceDark_SimpleCielab[] = {
783 {"inversion_method", "cielab_based"},
784 {"image_behavior", "none"},
785 {"foreground_lightness_threshold", "150"},
786 {"background_lightness_threshold", "205"}};
788 const FeatureEntry::FeatureParam kForceDark_SimpleRgb[] = {
789 {"inversion_method", "rgb_based"},
790 {"image_behavior", "none"},
791 {"foreground_lightness_threshold", "150"},
792 {"background_lightness_threshold", "205"}};
794 // Keep in sync with the kForceDark_SelectiveImageInversion
795 // in aw_feature_entries.cc if you tweak these parameters.
796 const FeatureEntry::FeatureParam kForceDark_SelectiveImageInversion[] = {
797 {"inversion_method", "cielab_based"},
798 {"image_behavior", "selective"},
799 {"foreground_lightness_threshold", "150"},
800 {"background_lightness_threshold", "205"}};
802 const FeatureEntry::FeatureParam kForceDark_SelectiveElementInversion[] = {
803 {"inversion_method", "cielab_based"},
804 {"image_behavior", "none"},
805 {"foreground_lightness_threshold", "150"},
806 {"background_lightness_threshold", "205"}};
808 const FeatureEntry::FeatureParam kForceDark_SelectiveGeneralInversion[] = {
809 {"inversion_method", "cielab_based"},
810 {"image_behavior", "selective"},
811 {"foreground_lightness_threshold", "150"},
812 {"background_lightness_threshold", "205"}};
814 const FeatureEntry::FeatureParam kForceDark_TransparencyAndNumColors[] = {
815 {"classifier_policy", "transparency_and_num_colors"}};
817 const FeatureEntry::FeatureVariation kForceDarkVariations[] = {
818 {"with simple HSL-based inversion", kForceDark_SimpleHsl,
819 std::size(kForceDark_SimpleHsl), nullptr},
820 {"with simple CIELAB-based inversion", kForceDark_SimpleCielab,
821 std::size(kForceDark_SimpleCielab), nullptr},
822 {"with simple RGB-based inversion", kForceDark_SimpleRgb,
823 std::size(kForceDark_SimpleRgb), nullptr},
824 {"with selective image inversion", kForceDark_SelectiveImageInversion,
825 std::size(kForceDark_SelectiveImageInversion), nullptr},
826 {"with selective inversion of non-image elements",
827 kForceDark_SelectiveElementInversion,
828 std::size(kForceDark_SelectiveElementInversion), nullptr},
829 {"with selective inversion of everything",
830 kForceDark_SelectiveGeneralInversion,
831 std::size(kForceDark_SelectiveGeneralInversion), nullptr},
832 {"with selective image inversion based on transparency and number of "
834 kForceDark_TransparencyAndNumColors,
835 std::size(kForceDark_TransparencyAndNumColors), nullptr}};
836 #endif // !BUILDFLAG(IS_CHROMEOS)
838 const FeatureEntry::FeatureParam kClipboardMaximumAge60Seconds[] = {
839 {"UIClipboardMaximumAge", "60"}};
840 const FeatureEntry::FeatureParam kClipboardMaximumAge90Seconds[] = {
841 {"UIClipboardMaximumAge", "90"}};
842 const FeatureEntry::FeatureParam kClipboardMaximumAge120Seconds[] = {
843 {"UIClipboardMaximumAge", "120"}};
844 const FeatureEntry::FeatureParam kClipboardMaximumAge150Seconds[] = {
845 {"UIClipboardMaximumAge", "150"}};
846 const FeatureEntry::FeatureParam kClipboardMaximumAge180Seconds[] = {
847 {"UIClipboardMaximumAge", "180"}};
849 const FeatureEntry::FeatureVariation kClipboardMaximumAgeVariations[] = {
850 {"Enabled 60 seconds", kClipboardMaximumAge60Seconds,
851 std::size(kClipboardMaximumAge60Seconds), nullptr},
852 {"Enabled 90 seconds", kClipboardMaximumAge90Seconds,
853 std::size(kClipboardMaximumAge90Seconds), nullptr},
854 {"Enabled 120 seconds", kClipboardMaximumAge120Seconds,
855 std::size(kClipboardMaximumAge120Seconds), nullptr},
856 {"Enabled 150 seconds", kClipboardMaximumAge150Seconds,
857 std::size(kClipboardMaximumAge150Seconds), nullptr},
858 {"Enabled 180 seconds", kClipboardMaximumAge180Seconds,
859 std::size(kClipboardMaximumAge180Seconds), nullptr},
862 const FeatureEntry::FeatureParam kMBIModeLegacy[] = {{"mode", "legacy"}};
863 const FeatureEntry::FeatureParam kMBIModeEnabledPerRenderProcessHost[] = {
864 {"mode", "per_render_process_host"}};
865 const FeatureEntry::FeatureParam kMBIModeEnabledPerSiteInstance[] = {
866 {"mode", "per_site_instance"}};
868 const FeatureEntry::FeatureVariation kMBIModeVariations[] = {
869 {"legacy mode", kMBIModeLegacy, std::size(kMBIModeLegacy), nullptr},
870 {"per render process host", kMBIModeEnabledPerRenderProcessHost,
871 std::size(kMBIModeEnabledPerRenderProcessHost), nullptr},
872 {"per site instance", kMBIModeEnabledPerSiteInstance,
873 std::size(kMBIModeEnabledPerSiteInstance), nullptr}};
875 const FeatureEntry::FeatureParam kSearchPrefetchWithoutHoldback[] = {
876 {"prefetch_holdback", "false"}};
877 const FeatureEntry::FeatureParam kSearchPrefetchWithHoldback[] = {
878 {"prefetch_holdback", "true"}};
880 const FeatureEntry::FeatureVariation
881 kSearchPrefetchServicePrefetchingVariations[] = {
882 {"without holdback", kSearchPrefetchWithoutHoldback,
883 std::size(kSearchPrefetchWithoutHoldback), nullptr},
884 {"with holdback", kSearchPrefetchWithHoldback,
885 std::size(kSearchPrefetchWithHoldback), nullptr}};
887 #if BUILDFLAG(IS_CHROMEOS)
888 // Note these strings must match the `kUserGroupParam` definition in
889 // web_applications/preinstalled_web_app_window_experiment.cc.
890 const FeatureEntry::FeatureParam kPreinstalledWebAppWindowExperimentControl[] =
891 {{"user_group", "control"}};
892 const FeatureEntry::FeatureParam kPreinstalledWebAppWindowExperimentWindow[] = {
893 {"user_group", "window"}};
894 const FeatureEntry::FeatureParam kPreinstalledWebAppWindowExperimentTab[] = {
895 {"user_group", "tab"}};
896 const FeatureEntry::FeatureVariation
897 kPreinstalledWebAppWindowExperimentVariations[] = {
898 {"control", kPreinstalledWebAppWindowExperimentControl,
899 std::size(kPreinstalledWebAppWindowExperimentControl), nullptr},
900 {"window", kPreinstalledWebAppWindowExperimentWindow,
901 std::size(kPreinstalledWebAppWindowExperimentWindow), nullptr},
902 {"tab", kPreinstalledWebAppWindowExperimentTab,
903 std::size(kPreinstalledWebAppWindowExperimentTab), nullptr}};
905 const FeatureEntry::FeatureParam kRoundedWindowRadius8 = {
906 chromeos::features::kRoundedWindowsRadius, "8"};
908 const FeatureEntry::FeatureParam kRoundedWindowRadius10 = {
909 chromeos::features::kRoundedWindowsRadius, "10"};
911 const FeatureEntry::FeatureParam kRoundedWindowRadius12 = {
912 chromeos::features::kRoundedWindowsRadius, "12"};
914 const FeatureEntry::FeatureParam kRoundedWindowRadius14 = {
915 chromeos::features::kRoundedWindowsRadius, "14"};
917 const FeatureEntry::FeatureParam kRoundedWindowRadius16 = {
918 chromeos::features::kRoundedWindowsRadius, "16"};
920 const FeatureEntry::FeatureParam kRoundedWindowRadius18 = {
921 chromeos::features::kRoundedWindowsRadius, "18"};
923 const FeatureEntry::FeatureVariation kRoundedWindowsRadiusVariation[] = {
924 {"8", &kRoundedWindowRadius8, 1, nullptr},
925 {"10", &kRoundedWindowRadius10, 1, nullptr},
926 {"12", &kRoundedWindowRadius12, 1, nullptr},
927 {"14", &kRoundedWindowRadius14, 1, nullptr},
928 {"16", &kRoundedWindowRadius16, 1, nullptr},
929 {"18", &kRoundedWindowRadius18, 1, nullptr},
932 #endif // BUILDFLAG(IS_CHROMEOS)
934 #if BUILDFLAG(IS_ANDROID)
935 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_Immediate[] = {
936 {"baseline_tab_suggestions", "true"},
937 {"baseline_close_tab_suggestions", "true"}};
938 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_4Hours[] = {
939 {"close_tab_suggestions_stale_time_ms", "14400000"}};
940 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_8Hours[] = {
941 {"close_tab_suggestions_stale_time_ms", "28800000"}};
942 const FeatureEntry::FeatureParam kCloseTabSuggestionsStale_7Days[] = {
943 {"close_tab_suggestions_stale_time_ms", "604800000"}};
944 const FeatureEntry::FeatureParam kCloseTabSuggestionsTimeSiteEngagement[] = {
945 {"close_tab_min_num_tabs", "5"},
946 {"close_tab_features_time_last_used_enabled", "true"},
947 {"close_tab_features_time_last_used_transform", "MEAN_VARIANCE"},
948 {"close_tab_features_time_last_used_threshold", "0.5"},
949 {"close_tab_features_site_engagement_enabled", "true"},
950 {"close_tab_features_site_engagement_threshold", "90.0"},
952 const FeatureEntry::FeatureParam kGroupAndCloseTabSuggestions_Immediate[] = {
953 {"baseline_tab_suggestions", "true"},
954 {"baseline_group_tab_suggestions", "true"},
955 {"baseline_close_tab_suggestions", "true"}};
957 const FeatureEntry::FeatureVariation kCloseTabSuggestionsStaleVariations[] = {
958 {"Close Immediate", kCloseTabSuggestionsStale_Immediate,
959 std::size(kCloseTabSuggestionsStale_Immediate), nullptr},
960 {"Group+Close Immediate", kGroupAndCloseTabSuggestions_Immediate,
961 std::size(kGroupAndCloseTabSuggestions_Immediate), nullptr},
962 {"4 hours", kCloseTabSuggestionsStale_4Hours,
963 std::size(kCloseTabSuggestionsStale_4Hours), nullptr},
964 {"8 hours", kCloseTabSuggestionsStale_8Hours,
965 std::size(kCloseTabSuggestionsStale_8Hours), nullptr},
966 {"7 days", kCloseTabSuggestionsStale_7Days,
967 std::size(kCloseTabSuggestionsStale_7Days), nullptr},
968 {"Time & Site Engagement", kCloseTabSuggestionsTimeSiteEngagement,
969 std::size(kCloseTabSuggestionsTimeSiteEngagement), nullptr},
972 const FeatureEntry::FeatureParam kCriticalPersistedTabDataSaveAndRestore[] = {
973 {"critical_persisted_tab_data_save_only", "false"},
974 {"delay_saves_until_deferred_startup", "false"}};
975 const FeatureEntry::FeatureParam kCriticalPersistedTabDataSaveOnly[] = {
976 {"critical_persisted_tab_data_save_only", "true"},
977 {"delay_saves_until_deferred_startup", "false"}};
978 const FeatureEntry::FeatureParam kDelaySavesUntilDeferredStartup[] = {
979 {"critical_persisted_tab_data_save_only", "false"},
980 {"delay_saves_until_deferred_startup", "true"}};
982 const FeatureEntry::FeatureVariation kCriticalPersistedTabDataVariations[] = {
983 {"Save and Restore", kCriticalPersistedTabDataSaveAndRestore,
984 std::size(kCriticalPersistedTabDataSaveAndRestore), nullptr},
985 {"Save Only", kCriticalPersistedTabDataSaveOnly,
986 std::size(kCriticalPersistedTabDataSaveOnly), nullptr},
987 {"Delay saves until DeferredStartup", kDelaySavesUntilDeferredStartup,
988 std::size(kDelaySavesUntilDeferredStartup), nullptr}};
990 const FeatureEntry::FeatureParam kShowSingleRowMVTiles[] = {
991 {"most_visited_max_rows_normal_screen", "1"},
992 {"most_visited_max_rows_small_screen", "1"},
993 {"small_screen_height_threshold_dp", "700"}};
994 const FeatureEntry::FeatureParam kShowTwoRowsMVTiles[] = {
995 {"most_visited_max_rows_normal_screen", "2"},
996 {"most_visited_max_rows_small_screen", "2"},
997 {"small_screen_height_threshold_dp", "700"}};
998 const FeatureEntry::FeatureVariation kQueryTilesVariations[] = {
999 {"(show single row of MV tiles)", kShowSingleRowMVTiles,
1000 std::size(kShowSingleRowMVTiles), nullptr},
1001 {"(show two rows of MV tiles)", kShowTwoRowsMVTiles,
1002 std::size(kShowTwoRowsMVTiles), nullptr}};
1004 const FeatureEntry::FeatureParam kTangibleSyncGroupA[] = {{"group_id", "1"}};
1005 const FeatureEntry::FeatureParam kTangibleSyncGroupB[] = {{"group_id", "2"}};
1006 const FeatureEntry::FeatureParam kTangibleSyncGroupC[] = {{"group_id", "3"}};
1007 const FeatureEntry::FeatureParam kTangibleSyncGroupD[] = {{"group_id", "4"}};
1008 const FeatureEntry::FeatureParam kTangibleSyncGroupE[] = {{"group_id", "5"}};
1009 const FeatureEntry::FeatureParam kTangibleSyncGroupF[] = {{"group_id", "6"}};
1010 const FeatureEntry::FeatureVariation kTangibleSyncVariations[] = {
1011 {"(pick up where you left off)", kTangibleSyncGroupA,
1012 std::size(kTangibleSyncGroupA), nullptr},
1013 {"(browse across devices)", kTangibleSyncGroupB,
1014 std::size(kTangibleSyncGroupB), nullptr},
1015 {"(save time and type less)", kTangibleSyncGroupC,
1016 std::size(kTangibleSyncGroupC), nullptr},
1017 {"(get better suggestions)", kTangibleSyncGroupD,
1018 std::size(kTangibleSyncGroupD), nullptr},
1019 {"(sync your tabs and history)", kTangibleSyncGroupE,
1020 std::size(kTangibleSyncGroupE), nullptr},
1021 {"(Turn on sync?)", kTangibleSyncGroupF, std::size(kTangibleSyncGroupF),
1023 #endif // BUILDFLAG(IS_ANDROID)
1025 const FeatureEntry::Choice kEnableGpuRasterizationChoices[] = {
1026 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1027 {flags_ui::kGenericExperimentChoiceEnabled,
1028 switches::kEnableGpuRasterization, ""},
1029 {flags_ui::kGenericExperimentChoiceDisabled,
1030 switches::kDisableGpuRasterization, ""},
1033 const FeatureEntry::Choice kTopChromeTouchUiChoices[] = {
1034 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1035 {flags_ui::kGenericExperimentChoiceAutomatic, switches::kTopChromeTouchUi,
1036 switches::kTopChromeTouchUiAuto},
1037 {flags_ui::kGenericExperimentChoiceDisabled, switches::kTopChromeTouchUi,
1038 switches::kTopChromeTouchUiDisabled},
1039 {flags_ui::kGenericExperimentChoiceEnabled, switches::kTopChromeTouchUi,
1040 switches::kTopChromeTouchUiEnabled}};
1042 #if BUILDFLAG(IS_CHROMEOS_ASH)
1044 const FeatureEntry::FeatureParam
1045 kArcRoundedWindowCompatStrategyLeftRightBottomGesture = {
1046 arc::kRoundedWindowCompatStrategy,
1047 arc::kRoundedWindowCompatStrategy_LeftRightBottomGesture};
1049 const FeatureEntry::FeatureParam
1050 kArcRoundedWindowCompatStrategyBottomOnlyGesture = {
1051 arc::kRoundedWindowCompatStrategy,
1052 arc::kRoundedWindowCompatStrategy_BottomOnlyGesture};
1054 const FeatureEntry::FeatureVariation kArcRoundedWindowCompatVariation[] = {
1055 {"Left-Right-Bottom Gesture Exclusion",
1056 &kArcRoundedWindowCompatStrategyLeftRightBottomGesture, 1, nullptr},
1057 {"Bottom-only Gesture Exclusion",
1058 &kArcRoundedWindowCompatStrategyBottomOnlyGesture, 1, nullptr},
1061 const FeatureEntry::FeatureParam kHibernate6 = {"HibernateAfterTimeHours", "6"};
1062 const FeatureEntry::FeatureParam kHibernate8 = {"HibernateAfterTimeHours", "8"};
1063 const FeatureEntry::FeatureParam kHibernate12 = {"HibernateAfterTimeHours",
1065 const FeatureEntry::FeatureParam kHibernate24 = {"HibernateAfterTimeHours",
1068 const FeatureEntry::FeatureVariation kHibernateFeatureVariations[] = {
1069 {"Hibernate after 6 hours", &kHibernate6, 1, nullptr},
1070 {"Hibernate after 8 hours", &kHibernate8, 1, nullptr},
1071 {"Hibernate after 12 hours", &kHibernate12, 1, nullptr},
1072 {"Hibernate after 24 hours", &kHibernate24, 1, nullptr},
1075 const char kPreferDcheckInternalName[] = "prefer-dcheck";
1077 const char kLacrosAvailabilityIgnoreInternalName[] =
1078 "lacros-availability-ignore";
1079 const char kLacrosOnlyInternalName[] = "lacros-only";
1080 const char kLacrosStabilityInternalName[] = "lacros-stability";
1081 const char kLacrosWaylandLoggingInternalName[] = "lacros-wayland-logging";
1082 const char kArcEnableVirtioBlkForDataInternalName[] =
1083 "arc-enable-virtio-blk-for-data";
1085 const FeatureEntry::Choice kPreferDcheckChoices[] = {
1086 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1087 {component_updater::kPreferDcheckOptIn,
1088 component_updater::kPreferDcheckSwitch,
1089 component_updater::kPreferDcheckOptIn},
1090 {component_updater::kPreferDcheckOptOut,
1091 component_updater::kPreferDcheckSwitch,
1092 component_updater::kPreferDcheckOptOut},
1095 const FeatureEntry::Choice kLacrosStabilityChoices[] = {
1096 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1097 {crosapi::browser_util::kLacrosStabilityChannelCanary,
1098 crosapi::browser_util::kLacrosStabilitySwitch,
1099 crosapi::browser_util::kLacrosStabilityChannelCanary},
1100 {crosapi::browser_util::kLacrosStabilityChannelDev,
1101 crosapi::browser_util::kLacrosStabilitySwitch,
1102 crosapi::browser_util::kLacrosStabilityChannelDev},
1103 {crosapi::browser_util::kLacrosStabilityChannelBeta,
1104 crosapi::browser_util::kLacrosStabilitySwitch,
1105 crosapi::browser_util::kLacrosStabilityChannelBeta},
1106 {crosapi::browser_util::kLacrosStabilityChannelStable,
1107 crosapi::browser_util::kLacrosStabilitySwitch,
1108 crosapi::browser_util::kLacrosStabilityChannelStable},
1111 const char kLacrosSelectionInternalName[] = "lacros-selection";
1112 const char kProjectorServerSideSpeechRecognition[] =
1113 "enable-projector-server-side-speech-recognition";
1115 const FeatureEntry::Choice kLacrosSelectionChoices[] = {
1116 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1117 {flag_descriptions::kLacrosSelectionStatefulDescription,
1118 crosapi::browser_util::kLacrosSelectionSwitch,
1119 crosapi::browser_util::kLacrosSelectionStateful},
1120 {flag_descriptions::kLacrosSelectionRootfsDescription,
1121 crosapi::browser_util::kLacrosSelectionSwitch,
1122 crosapi::browser_util::kLacrosSelectionRootfs},
1125 const char kLacrosSelectionPolicyIgnoreInternalName[] =
1126 "lacros-selection-ignore";
1128 const FeatureEntry::Choice kLacrosAvailabilityPolicyChoices[] = {
1129 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1130 {ash::standalone_browser::kLacrosAvailabilityPolicyUserChoice,
1131 ash::standalone_browser::kLacrosAvailabilityPolicySwitch,
1132 ash::standalone_browser::kLacrosAvailabilityPolicyUserChoice},
1133 {ash::standalone_browser::kLacrosAvailabilityPolicyLacrosDisabled,
1134 ash::standalone_browser::kLacrosAvailabilityPolicySwitch,
1135 ash::standalone_browser::kLacrosAvailabilityPolicyLacrosDisabled},
1136 {ash::standalone_browser::kLacrosAvailabilityPolicyLacrosOnly,
1137 ash::standalone_browser::kLacrosAvailabilityPolicySwitch,
1138 ash::standalone_browser::kLacrosAvailabilityPolicyLacrosOnly},
1141 const FeatureEntry::Choice kLacrosDataBackwardMigrationModePolicyChoices[] = {
1142 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1143 {crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyNone,
1144 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicySwitch,
1145 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyNone},
1146 {crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyKeepNone,
1147 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicySwitch,
1148 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyKeepNone},
1149 {crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyKeepSafeData,
1150 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicySwitch,
1151 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyKeepSafeData},
1152 {crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyKeepAll,
1153 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicySwitch,
1154 crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyKeepAll},
1157 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
1159 const FeatureEntry::Choice kForceUIDirectionChoices[] = {
1160 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1161 {flag_descriptions::kForceDirectionLtr, switches::kForceUIDirection,
1162 switches::kForceDirectionLTR},
1163 {flag_descriptions::kForceDirectionRtl, switches::kForceUIDirection,
1164 switches::kForceDirectionRTL},
1167 const FeatureEntry::Choice kForceTextDirectionChoices[] = {
1168 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1169 {flag_descriptions::kForceDirectionLtr, switches::kForceTextDirection,
1170 switches::kForceDirectionLTR},
1171 {flag_descriptions::kForceDirectionRtl, switches::kForceTextDirection,
1172 switches::kForceDirectionRTL},
1175 const FeatureEntry::Choice kIpProtectionProxyOptOutChoices[] = {
1176 {flag_descriptions::kIpProtectionProxyOptOutChoiceDefault, "", ""},
1177 {flag_descriptions::kIpProtectionProxyOptOutChoiceOptOut,
1178 switches::kDisableIpProtectionProxy, ""},
1181 #if BUILDFLAG(IS_CHROMEOS_ASH)
1182 const FeatureEntry::Choice kSchedulerConfigurationChoices[] = {
1183 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1184 {flag_descriptions::kSchedulerConfigurationConservative,
1185 switches::kSchedulerConfiguration,
1186 switches::kSchedulerConfigurationConservative},
1187 {flag_descriptions::kSchedulerConfigurationPerformance,
1188 switches::kSchedulerConfiguration,
1189 switches::kSchedulerConfigurationPerformance},
1191 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
1193 #if BUILDFLAG(IS_CHROMEOS_ASH)
1194 const FeatureEntry::FeatureParam kDynamicSearchUpdateAnimationDuration_50[] = {
1195 {"search_result_translation_duration", "50"}};
1196 const FeatureEntry::FeatureParam kDynamicSearchUpdateAnimationDuration_100[] = {
1197 {"search_result_translation_duration", "100"}};
1198 const FeatureEntry::FeatureParam kDynamicSearchUpdateAnimationDuration_150[] = {
1199 {"search_result_translation_duration", "150"}};
1201 const FeatureEntry::FeatureVariation kDynamicSearchUpdateAnimationVariations[] =
1202 {{"50ms", kDynamicSearchUpdateAnimationDuration_50,
1203 std::size(kDynamicSearchUpdateAnimationDuration_50), nullptr},
1204 {"100ms", kDynamicSearchUpdateAnimationDuration_100,
1205 std::size(kDynamicSearchUpdateAnimationDuration_100), nullptr},
1206 {"150ms", kDynamicSearchUpdateAnimationDuration_150,
1207 std::size(kDynamicSearchUpdateAnimationDuration_150), nullptr}};
1208 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
1210 #if BUILDFLAG(ENABLE_NACL)
1211 // Note: This needs to be kept in sync with parsing in
1212 // content/common/zygote/zygote_communication_linux.cc
1213 const FeatureEntry::Choice kVerboseLoggingInNaclChoices[] = {
1214 {flag_descriptions::kVerboseLoggingInNaclChoiceDefault, "", ""},
1215 {flag_descriptions::kVerboseLoggingInNaclChoiceLow,
1216 switches::kVerboseLoggingInNacl, switches::kVerboseLoggingInNaclChoiceLow},
1217 {flag_descriptions::kVerboseLoggingInNaclChoiceMedium,
1218 switches::kVerboseLoggingInNacl,
1219 switches::kVerboseLoggingInNaclChoiceMedium},
1220 {flag_descriptions::kVerboseLoggingInNaclChoiceHigh,
1221 switches::kVerboseLoggingInNacl,
1222 switches::kVerboseLoggingInNaclChoiceHigh},
1223 {flag_descriptions::kVerboseLoggingInNaclChoiceHighest,
1224 switches::kVerboseLoggingInNacl,
1225 switches::kVerboseLoggingInNaclChoiceHighest},
1226 {flag_descriptions::kVerboseLoggingInNaclChoiceDisabled,
1227 switches::kVerboseLoggingInNacl,
1228 switches::kVerboseLoggingInNaclChoiceDisabled},
1230 #endif // ENABLE_NACL
1232 const FeatureEntry::Choice kSiteIsolationOptOutChoices[] = {
1233 {flag_descriptions::kSiteIsolationOptOutChoiceDefault, "", ""},
1234 {flag_descriptions::kSiteIsolationOptOutChoiceOptOut,
1235 switches::kDisableSiteIsolation, ""},
1238 const FeatureEntry::Choice kForceColorProfileChoices[] = {
1239 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1240 {flag_descriptions::kForceColorProfileSRGB,
1241 switches::kForceDisplayColorProfile, "srgb"},
1242 {flag_descriptions::kForceColorProfileP3,
1243 switches::kForceDisplayColorProfile, "display-p3-d65"},
1244 {flag_descriptions::kForceColorProfileRec2020,
1245 switches::kForceDisplayColorProfile, "rec2020"},
1246 {flag_descriptions::kForceColorProfileColorSpin,
1247 switches::kForceDisplayColorProfile, "color-spin-gamma24"},
1248 {flag_descriptions::kForceColorProfileSCRGBLinear,
1249 switches::kForceDisplayColorProfile, "scrgb-linear"},
1250 {flag_descriptions::kForceColorProfileHDR10,
1251 switches::kForceDisplayColorProfile, "hdr10"},
1254 const FeatureEntry::Choice kMemlogModeChoices[] = {
1255 {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
1256 {flag_descriptions::kMemlogModeMinimal, heap_profiling::kMemlogMode,
1257 heap_profiling::kMemlogModeMinimal},
1258 {flag_descriptions::kMemlogModeAll, heap_profiling::kMemlogMode,
1259 heap_profiling::kMemlogModeAll},
1260 {flag_descriptions::kMemlogModeBrowser, heap_profiling::kMemlogMode,
1261 heap_profiling::kMemlogModeBrowser},
1262 {flag_descriptions::kMemlogModeGpu, heap_profiling::kMemlogMode,
1263 heap_profiling::kMemlogModeGpu},
1264 {flag_descriptions::kMemlogModeAllRenderers, heap_profiling::kMemlogMode,
1265 heap_profiling::kMemlogModeAllRenderers},
1266 {flag_descriptions::kMemlogModeRendererSampling,
1267 heap_profiling::kMemlogMode, heap_profiling::kMemlogModeRendererSampling},
1270 const FeatureEntry::Choice kMemlogStackModeChoices[] = {
1271 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1272 {flag_descriptions::kMemlogStackModeNative,
1273 heap_profiling::kMemlogStackMode, heap_profiling::kMemlogStackModeNative},
1274 {flag_descriptions::kMemlogStackModeNativeWithThreadNames,
1275 heap_profiling::kMemlogStackMode,
1276 heap_profiling::kMemlogStackModeNativeWithThreadNames},
1279 const FeatureEntry::Choice kMemlogSamplingRateChoices[] = {
1280 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
1281 {flag_descriptions::kMemlogSamplingRate10KB,
1282 heap_profiling::kMemlogSamplingRate,
1283 heap_profiling::kMemlogSamplingRate10KB},
1284 {flag_descriptions::kMemlogSamplingRate50KB,
1285 heap_profiling::kMemlogSamplingRate,
1286 heap_profiling::kMemlogSamplingRate50KB},
1287 {flag_descriptions::kMemlogSamplingRate100KB,
1288 heap_profiling::kMemlogSamplingRate,
1289 heap_profiling::kMemlogSamplingRate100KB},
1290 {flag_descriptions::kMemlogSamplingRate500KB,
1291 heap_profiling::kMemlogSamplingRate,
1292 heap_profiling::kMemlogSamplingRate500KB},
1293 {flag_descriptions::kMemlogSamplingRate1MB,
1294 heap_profiling::kMemlogSamplingRate,
1295 heap_profiling::kMemlogSamplingRate1MB},
1296 {flag_descriptions::kMemlogSamplingRate5MB,
1297 heap_profiling::kMemlogSamplingRate,
1298 heap_profiling::kMemlogSamplingRate5MB},
1300 const FeatureEntry::FeatureParam kPageContentAnnotationsContentParams[] = {
1301 {"annotate_title_instead_of_page_content", "false"},
1302 {"extract_related_searches", "true"},
1303 {"max_size_for_text_dump_in_bytes", "5120"},
1304 {"write_to_history_service", "true"},
1306 const FeatureEntry::FeatureParam kPageContentAnnotationsTitleParams[] = {
1307 {"annotate_title_instead_of_page_content", "true"},
1308 {"extract_related_searches", "true"},
1309 {"write_to_history_service", "true"},
1311 const FeatureEntry::FeatureVariation kPageContentAnnotationsVariations[] = {
1312 {"All Annotations and Persistence on Content",
1313 kPageContentAnnotationsContentParams,
1314 std::size(kPageContentAnnotationsContentParams), nullptr},
1315 {"All Annotations and Persistence on Title",
1316 kPageContentAnnotationsTitleParams,
1317 std::size(kPageContentAnnotationsTitleParams), nullptr},
1319 const FeatureEntry::FeatureParam
1320 kPageEntitiesPageContentAnnotationsAllLocalesParams[] = {
1321 {"supported_locales", "*"},
1323 const FeatureEntry::FeatureVariation
1324 kPageEntitiesPageContentAnnotationsVariations[] = {
1325 {"All Supported Locales",
1326 kPageEntitiesPageContentAnnotationsAllLocalesParams,
1327 std::size(kPageEntitiesPageContentAnnotationsAllLocalesParams),
1330 const FeatureEntry::FeatureParam kJourneysShowAllVisitsParams[] = {
1331 {"JourneysLocaleOrLanguageAllowlist", "*"},
1332 // To show all visits, set the number of visits above the fold to a very
1334 {"JourneysNumVisitsToAlwaysShowAboveTheFold", "200"},
1336 const FeatureEntry::FeatureParam kJourneysAllLocalesParams[] = {
1337 {"JourneysLocaleOrLanguageAllowlist", "*"},
1339 const FeatureEntry::FeatureVariation kJourneysVariations[] = {
1340 {"No 'Show More' - Show all visits", kJourneysShowAllVisitsParams,
1341 std::size(kJourneysShowAllVisitsParams), nullptr},
1342 {"All Supported Locales", kJourneysAllLocalesParams,
1343 std::size(kJourneysAllLocalesParams), nullptr},
1346 const FeatureEntry::FeatureVariation
1347 kImageServiceOptimizationGuideSalientImagesVariations[] = {
1348 {"High Performance Canonicalization", nullptr, 0, "3362133"},
1351 const FeatureEntry::FeatureParam kSidePanelJourneysOpensFromOmniboxParams[] = {
1352 {"SidePanelJourneysOpensFromOmnibox", "true"},
1354 const FeatureEntry::FeatureVariation
1355 kSidePanelJourneysOpensFromOmniboxVariations[] = {
1356 {"Omnibox opens Side Panel Journeys",
1357 kSidePanelJourneysOpensFromOmniboxParams,
1358 std::size(kSidePanelJourneysOpensFromOmniboxParams), nullptr},
1361 const FeatureEntry::FeatureParam
1362 kJourneysLabelsWithSearchVisitEntitiesParams[] = {
1363 {"labels_from_search_visit_entities", "true"},
1365 const FeatureEntry::FeatureParam kJourneysLabelsWithEntitiesParams[] = {
1366 {"labels_from_entities", "true"},
1368 const FeatureEntry::FeatureParam
1369 kJourneysLabelsWithEntitiesNoHostnamesParams[] = {
1370 {"labels_from_hostnames", "false"},
1371 {"labels_from_entities", "true"},
1373 const FeatureEntry::FeatureVariation kJourneysLabelsVariations[] = {
1374 {"With Entities", kJourneysLabelsWithEntitiesParams,
1375 std::size(kJourneysLabelsWithEntitiesParams), nullptr},
1376 {"With Entities, No Hostnames",
1377 kJourneysLabelsWithEntitiesNoHostnamesParams,
1378 std::size(kJourneysLabelsWithEntitiesNoHostnamesParams), nullptr},
1379 {"With Search Entities", kJourneysLabelsWithSearchVisitEntitiesParams,
1380 std::size(kJourneysLabelsWithSearchVisitEntitiesParams), nullptr},
1383 const FeatureEntry::FeatureParam
1384 kOmniboxCompanyEntityIconAdjustmentLeastAggressive[] = {
1385 {"OmniboxCompanyEntityAdjustmentGroup", "least-aggressive"}};
1386 const FeatureEntry::FeatureParam kOmniboxCompanyEntityIconAdjustmentModerate[] =
1387 {{"OmniboxCompanyEntityAdjustmentGroup", "moderate"}};
1388 const FeatureEntry::FeatureParam
1389 kOmniboxCompanyEntityIconAdjustmentMostAggressive[] = {
1390 {"OmniboxCompanyEntityAdjustmentGroup", "most-aggressive"}};
1392 const FeatureEntry::FeatureVariation
1393 kOmniboxCompanyEntityIconAdjustmentVariations[] = {
1394 {"Least Aggressive", kOmniboxCompanyEntityIconAdjustmentLeastAggressive,
1395 std::size(kOmniboxCompanyEntityIconAdjustmentLeastAggressive),
1397 {"Moderate", kOmniboxCompanyEntityIconAdjustmentModerate,
1398 std::size(kOmniboxCompanyEntityIconAdjustmentModerate), nullptr},
1399 {"Most Aggressive", kOmniboxCompanyEntityIconAdjustmentMostAggressive,
1400 std::size(kOmniboxCompanyEntityIconAdjustmentMostAggressive), nullptr},
1403 const FeatureEntry::FeatureParam kChromeRefresh2023Level1[] = {{"level", "1"}};
1405 // "Enabled" is equivalent to "Enabled with Omnibox", therefore we don't need to
1406 // make a separate variation for it.
1407 const FeatureEntry::FeatureVariation kChromeRefresh2023Variations[] = {
1408 {"without Omnibox", kChromeRefresh2023Level1,
1409 std::size(kChromeRefresh2023Level1), nullptr}};
1411 const FeatureEntry::FeatureParam kChromeRefresh2023NTBVariationGM2Full[] = {
1412 {features::kChromeRefresh2023NTBVariationKey, "GM2Full"}};
1413 const FeatureEntry::FeatureParam
1414 kChromeRefresh2023NTBVariationGM3OldIconNoBackground[] = {
1415 {features::kChromeRefresh2023NTBVariationKey,
1416 "GM3OldIconNoBackground"}};
1417 const FeatureEntry::FeatureParam
1418 kChromeRefresh2023NTBVariationGM3OldIconWithBackground[] = {
1419 {features::kChromeRefresh2023NTBVariationKey,
1420 "GM3OldIconWithBackground"}};
1421 const FeatureEntry::FeatureParam
1422 kChromeRefresh2023NTBVariationGM3NewIconNoBackground[] = {
1423 {features::kChromeRefresh2023NTBVariationKey,
1424 "GM3NewIconNoBackground"}};
1425 const FeatureEntry::FeatureParam
1426 kChromeRefresh2023NTBVariationGM3NewIconWithBackground[] = {
1427 {features::kChromeRefresh2023NTBVariationKey,
1428 "GM3NewIconWithBackground"}};
1430 const FeatureEntry::FeatureVariation kChromeRefresh2023NTBVariations[] = {
1431 {"GM2 Implementation", kChromeRefresh2023NTBVariationGM2Full,
1432 std::size(kChromeRefresh2023NTBVariationGM2Full), nullptr},
1433 {"GM3 Old Icon No Background",
1434 kChromeRefresh2023NTBVariationGM3OldIconNoBackground,
1435 std::size(kChromeRefresh2023NTBVariationGM3OldIconNoBackground), nullptr},
1436 {"GM3 Old Icon With Background",
1437 kChromeRefresh2023NTBVariationGM3OldIconWithBackground,
1438 std::size(kChromeRefresh2023NTBVariationGM3OldIconWithBackground),
1440 {"GM3 New Icon No Background",
1441 kChromeRefresh2023NTBVariationGM3NewIconNoBackground,
1442 std::size(kChromeRefresh2023NTBVariationGM3NewIconNoBackground), nullptr},
1443 {"GM3 New Icon With Background",
1444 kChromeRefresh2023NTBVariationGM3NewIconWithBackground,
1445 std::size(kChromeRefresh2023NTBVariationGM3NewIconWithBackground),
1448 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
1449 BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
1450 const FeatureEntry::FeatureParam kShortcutBoostSearchAndUrl1414[] = {
1451 {"ShortcutBoostSearchScore", "1414"},
1452 {"ShortcutBoostUrlScore", "1414"}};
1453 const FeatureEntry::FeatureParam kShortcutBoostUrl1414[] = {
1454 {"ShortcutBoostSearchScore", "0"},
1455 {"ShortcutBoostUrlScore", "1414"}};
1456 const FeatureEntry::FeatureParam kShortcutBoostSearchAndUrl1200[] = {
1457 {"ShortcutBoostSearchScore", "1200"},
1458 {"ShortcutBoostUrlScore", "1200"}};
1459 const FeatureEntry::FeatureParam kShortcutBoostMultipleUrls2[] = {
1460 {"ShortcutBoostNonTopHitThreshold", "2"},
1461 {"ShortcutBoostGroupWithSearches", "true"},
1462 {"ShortcutBoostUrlScore", "1420"}};
1464 const FeatureEntry::FeatureVariation kOmniboxShortcutBoostVariations[] = {
1465 {"Searches & URLs - aggressive (1414)", kShortcutBoostSearchAndUrl1414,
1466 std::size(kShortcutBoostSearchAndUrl1414), nullptr},
1467 {"URLs - aggressive (1414)", kShortcutBoostUrl1414,
1468 std::size(kShortcutBoostUrl1414), nullptr},
1469 {"Searches & URLs - conservative (1200)", kShortcutBoostSearchAndUrl1200,
1470 std::size(kShortcutBoostSearchAndUrl1200), nullptr},
1471 {"Multiple URLs - super aggressive (2)", kShortcutBoostMultipleUrls2,
1472 std::size(kShortcutBoostMultipleUrls2), nullptr},
1475 // A limited number of combinations of the rich autocompletion params.
1476 const FeatureEntry::FeatureParam
1477 kOmniboxRichAutocompletionConservativeModerate[] = {
1478 {"RichAutocompletionAutocompleteTitles", "true"},
1479 {"RichAutocompletionAutocompleteNonPrefixShortcutProvider", "true"},
1480 {"RichAutocompletionAutocompleteTitlesMinChar", "3"},
1481 {"RichAutocompletionAutocompleteNonPrefixMinChar", "5"}};
1482 const FeatureEntry::FeatureParam
1483 kOmniboxRichAutocompletionConservativeModerate2[] = {
1484 {"RichAutocompletionAutocompleteTitlesShortcutProvider", "true"},
1485 {"RichAutocompletionAutocompleteNonPrefixShortcutProvider", "true"},
1486 {"RichAutocompletionAutocompleteTitlesMinChar", "3"},
1487 {"RichAutocompletionAutocompleteNonPrefixMinChar", "5"}};
1488 const FeatureEntry::FeatureParam kOmniboxRichAutocompletionAggressive2[] = {
1489 {"RichAutocompletionAutocompleteTitlesShortcutProvider", "true"},
1490 {"RichAutocompletionAutocompleteTitlesMinChar", "2"},
1491 {"RichAutocompletionAutocompleteShortcutText", "true"},
1492 {"RichAutocompletionAutocompleteShortcutTextMinChar", "2"}};
1493 const FeatureEntry::FeatureParam kOmniboxRichAutocompletionAggressive3[] = {
1494 {"RichAutocompletionAutocompleteTitlesShortcutProvider", "true"},
1495 {"RichAutocompletionAutocompleteTitlesMinChar", "3"},
1496 {"RichAutocompletionAutocompleteShortcutText", "true"},
1497 {"RichAutocompletionAutocompleteShortcutTextMinChar", "3"}};
1498 const FeatureEntry::FeatureParam kOmniboxRichAutocompletionAggressive4[] = {
1499 {"RichAutocompletionAutocompleteTitlesShortcutProvider", "true"},
1500 {"RichAutocompletionAutocompleteTitlesMinChar", "4"},
1501 {"RichAutocompletionAutocompleteShortcutText", "true"},
1502 {"RichAutocompletionAutocompleteShortcutTextMinChar", "4"}};
1504 const FeatureEntry::FeatureVariation
1505 kOmniboxRichAutocompletionPromisingVariations[] = {
1506 {"Conservative Moderate - Title, Shortcut Non-Prefix, min 3/5",
1507 kOmniboxRichAutocompletionConservativeModerate,
1508 std::size(kOmniboxRichAutocompletionConservativeModerate), nullptr},
1509 {"Conservative Moderate 2 - Shortcut Title, Shortcut Non-Prefix, min "
1511 kOmniboxRichAutocompletionConservativeModerate2,
1512 std::size(kOmniboxRichAutocompletionConservativeModerate2), nullptr},
1513 {"Aggressive 2 - Title Shortcut Title 2, Shortcut Text 2",
1514 kOmniboxRichAutocompletionAggressive2,
1515 std::size(kOmniboxRichAutocompletionAggressive2), nullptr},
1516 {"Aggressive 3 - Title Shortcut Title 3, Shortcut Text 3",
1517 kOmniboxRichAutocompletionAggressive3,
1518 std::size(kOmniboxRichAutocompletionAggressive3), nullptr},
1519 {"Aggressive 4 - Title Shortcut Title 4, Shortcut Text 4",
1520 kOmniboxRichAutocompletionAggressive4,
1521 std::size(kOmniboxRichAutocompletionAggressive4), nullptr},
1524 const FeatureEntry::FeatureParam kOmniboxMlUrlScoringRerankFinalMatchesOnly[] =
1526 {"MlUrlScoringRerankFinalMatchesOnly", "true"},
1527 {"enable_scoring_signals_annotators_for_ml_scoring", "true"},
1529 const FeatureEntry::FeatureParam kOmniboxMlUrlScoringPreserveDefault[] = {
1530 {"MlUrlScoringRerankFinalMatchesOnly", "true"},
1531 {"MlUrlScoringPreserveDefault", "true"},
1532 {"enable_scoring_signals_annotators_for_ml_scoring", "true"},
1534 const FeatureEntry::FeatureParam kOmniboxMlUrlScoringUnlimitedNumCandidates[] =
1536 {"MlUrlScoringUnlimitedNumCandidates", "true"},
1537 {"enable_scoring_signals_annotators_for_ml_scoring", "true"},
1539 // Sets Bookmark(1), History Quick(4), History URL(8), Shortcuts(64), and
1540 // History Fuzzy(65536) providers max matches to 10.
1541 const FeatureEntry::FeatureParam kOmniboxMlUrlScoringMaxMatchesByProvider10[] =
1543 {"MlUrlScoringMaxMatchesByProvider", "1:10,4:10,8:10,64:10,65536:10"},
1544 {"enable_scoring_signals_annotators_for_ml_scoring", "true"},
1547 const FeatureEntry::FeatureVariation kOmniboxMlUrlScoringVariations[] = {
1548 {"final matches only", kOmniboxMlUrlScoringRerankFinalMatchesOnly,
1549 std::size(kOmniboxMlUrlScoringRerankFinalMatchesOnly), nullptr},
1550 {"final matches only, preserve legacy default match",
1551 kOmniboxMlUrlScoringPreserveDefault,
1552 std::size(kOmniboxMlUrlScoringPreserveDefault), nullptr},
1553 {"unlimited suggestion candidates",
1554 kOmniboxMlUrlScoringUnlimitedNumCandidates,
1555 std::size(kOmniboxMlUrlScoringUnlimitedNumCandidates), nullptr},
1556 {"Increase provider max limit to 10",
1557 kOmniboxMlUrlScoringMaxMatchesByProvider10,
1558 std::size(kOmniboxMlUrlScoringMaxMatchesByProvider10), nullptr},
1560 const FeatureEntry::FeatureParam kRealboxTwoPreviousSearchRelatedSuggestions[] =
1562 {"RealboxMaxPreviousSearchRelatedSuggestions", "2"},
1564 const FeatureEntry::FeatureParam kRealboxSecondaryZeroSuggestCounterfactual[] =
1566 {"RealboxSecondaryZeroSuggestCounterfactual", "true"},
1569 const FeatureEntry::FeatureVariation kRealboxSecondaryZeroSuggestVariations[] =
1570 {{"2 secondary suggestions (default is 3)",
1571 kRealboxTwoPreviousSearchRelatedSuggestions,
1572 std::size(kRealboxTwoPreviousSearchRelatedSuggestions), nullptr},
1573 {"counterfactual (don't show secondary suggestions)",
1574 kRealboxSecondaryZeroSuggestCounterfactual,
1575 std::size(kRealboxSecondaryZeroSuggestCounterfactual), nullptr}};
1577 const FeatureEntry::FeatureParam kActionsUISimplificationTrimExtraFalse[]{
1578 {"ActionsUISimplificationTrimExtra", "false"},
1580 const FeatureEntry::FeatureVariation
1581 kOmniboxActionsUISimplificationVariations[] = {
1582 {"with TrimExtra false", kActionsUISimplificationTrimExtraFalse,
1583 std::size(kActionsUISimplificationTrimExtraFalse), nullptr},
1586 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ||
1587 // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
1589 #if BUILDFLAG(IS_ANDROID)
1590 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment1[] = {
1591 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "true"},
1592 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "true"},
1593 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, ""}};
1594 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment2[] = {
1595 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "false"},
1596 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "true"},
1597 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, ""}};
1598 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment3[] = {
1599 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "true"},
1600 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "false"},
1601 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, ""}};
1602 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment4[] = {
1603 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "true"},
1604 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "true"},
1605 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, "reviews"}};
1606 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment5[] = {
1607 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "true"},
1608 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "true"},
1609 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, "call"}};
1610 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment6[] = {
1611 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "true"},
1612 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "true"},
1613 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, "directions"}};
1614 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment7[] = {
1615 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "true"},
1616 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "false"},
1617 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, "call"}};
1618 constexpr FeatureEntry::FeatureParam kOmniboxActionsInSuggestTreatment8[] = {
1619 {OmniboxFieldTrial::kActionsInSuggestPromoteEntitySuggestion.name, "false"},
1620 {OmniboxFieldTrial::kActionsInSuggestPromoteReviewsAction.name, "false"},
1621 {OmniboxFieldTrial::kActionsInSuggestRemoveActionTypes.name, "call"}};
1623 constexpr FeatureEntry::FeatureVariation kOmniboxActionsInSuggestVariants[] = {
1624 {"T1: Promote, Reviews, Directions, Calls",
1625 kOmniboxActionsInSuggestTreatment1,
1626 std::size(kOmniboxActionsInSuggestTreatment1), "t3366528"},
1627 {"T2: Reviews, Directions, Calls", kOmniboxActionsInSuggestTreatment2,
1628 std::size(kOmniboxActionsInSuggestTreatment2), "t3366528"},
1629 {"T3: Promote, Calls, Directions, Reviews",
1630 kOmniboxActionsInSuggestTreatment3,
1631 std::size(kOmniboxActionsInSuggestTreatment3), "t3366528"},
1632 {"T4: Promote, Directions, Calls", kOmniboxActionsInSuggestTreatment4,
1633 std::size(kOmniboxActionsInSuggestTreatment4), "t3366528"},
1634 {"T5: Promote, Reviews, Directions", kOmniboxActionsInSuggestTreatment5,
1635 std::size(kOmniboxActionsInSuggestTreatment5), "t3366528"},
1636 {"T6: Promote, Reviews, Calls", kOmniboxActionsInSuggestTreatment6,
1637 std::size(kOmniboxActionsInSuggestTreatment6), "t3366528"},
1638 {"T7: Promote, Directions, Reviews", kOmniboxActionsInSuggestTreatment7,
1639 std::size(kOmniboxActionsInSuggestTreatment7), "t3366528"},
1640 {"T8: Directions, Reviews", kOmniboxActionsInSuggestTreatment8,
1641 std::size(kOmniboxActionsInSuggestTreatment8), "t3366528"},
1644 constexpr FeatureEntry::FeatureParam kOmniboxQueryTilesShowAboveTrends[] = {
1645 {OmniboxFieldTrial::kQueryTilesShowAboveTrends.name, "true"}};
1646 constexpr FeatureEntry::FeatureParam kOmniboxQueryTilesShowBelowTrends[] = {
1647 {OmniboxFieldTrial::kQueryTilesShowAboveTrends.name, "false"}};
1649 constexpr FeatureEntry::FeatureVariation kOmniboxQueryTilesVariations[] = {
1650 {"Above Trends", kOmniboxQueryTilesShowAboveTrends,
1651 std::size(kOmniboxQueryTilesShowAboveTrends), nullptr},
1652 {"Below Trends", kOmniboxQueryTilesShowBelowTrends,
1653 std::size(kOmniboxQueryTilesShowBelowTrends), nullptr},
1655 #endif // BUILDFLAG(IS_ANDROID)
1657 const FeatureEntry::FeatureParam kOmniboxSquareSuggestionIconFavicons[] = {
1658 {"OmniboxSquareSuggestIconIcons", "true"}};
1659 const FeatureEntry::FeatureParam kOmniboxSquareSuggestionIconAnswers[] = {
1660 {"OmniboxSquareSuggestIconAnswers", "true"}};
1661 const FeatureEntry::FeatureParam
1662 kOmniboxSquareSuggestionIconFaviconsAndAnswers[] = {
1663 {"OmniboxSquareSuggestIconIcons", "true"},
1664 {"OmniboxSquareSuggestIconAnswers", "true"},
1666 const FeatureEntry::FeatureParam kOmniboxSquareSuggestionIconEntities[] = {
1667 {"OmniboxSquareSuggestIconEntities", "true"}};
1668 const FeatureEntry::FeatureParam kOmniboxSquareSuggestionIconWeather[] = {
1669 {"OmniboxSquareSuggestIconWeather", "true"}};
1670 const FeatureEntry::FeatureParam kOmniboxSquareSuggestionIconAll[] = {
1671 {"OmniboxSquareSuggestIconIcons", "true"},
1672 {"OmniboxSquareSuggestIconAnswers", "true"},
1673 {"OmniboxSquareSuggestIconEntities", "true"},
1674 {"OmniboxSquareSuggestIconWeather", "true"},
1676 const FeatureEntry::FeatureParam kOmniboxSquareSuggestionIconAllFullEntity[] = {
1677 {"OmniboxSquareSuggestIconIcons", "true"},
1678 {"OmniboxSquareSuggestIconAnswers", "true"},
1679 {"OmniboxSquareSuggestIconEntities", "true"},
1680 {"OmniboxSquareSuggestIconEntitiesScale", "1"},
1681 {"OmniboxSquareSuggestIconWeather", "true"},
1684 const FeatureEntry::FeatureVariation kOmniboxSquareSuggestionIconVariations[] =
1686 {"Favicons", kOmniboxSquareSuggestionIconFavicons,
1687 std::size(kOmniboxSquareSuggestionIconFavicons), nullptr},
1688 {"Answers", kOmniboxSquareSuggestionIconAnswers,
1689 std::size(kOmniboxSquareSuggestionIconAnswers), nullptr},
1690 {"Favicons and answers", kOmniboxSquareSuggestionIconFaviconsAndAnswers,
1691 std::size(kOmniboxSquareSuggestionIconFaviconsAndAnswers), nullptr},
1692 {"Entities", kOmniboxSquareSuggestionIconEntities,
1693 std::size(kOmniboxSquareSuggestionIconEntities), nullptr},
1694 {"Weather", kOmniboxSquareSuggestionIconWeather,
1695 std::size(kOmniboxSquareSuggestionIconWeather), nullptr},
1696 {"All", kOmniboxSquareSuggestionIconAll,
1697 std::size(kOmniboxSquareSuggestionIconAll), nullptr},
1698 {"All with full entities", kOmniboxSquareSuggestionIconAllFullEntity,
1699 std::size(kOmniboxSquareSuggestionIconAllFullEntity), nullptr},
1702 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches5[] = {
1703 {"MaxZeroSuggestMatches", "5"}};
1704 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches6[] = {
1705 {"MaxZeroSuggestMatches", "6"}};
1706 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches7[] = {
1707 {"MaxZeroSuggestMatches", "7"}};
1708 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches8[] = {
1709 {"MaxZeroSuggestMatches", "8"}};
1710 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches9[] = {
1711 {"MaxZeroSuggestMatches", "9"}};
1712 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches10[] = {
1713 {"MaxZeroSuggestMatches", "10"}};
1714 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches11[] = {
1715 {"MaxZeroSuggestMatches", "11"}};
1716 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches12[] = {
1717 {"MaxZeroSuggestMatches", "12"}};
1718 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches13[] = {
1719 {"MaxZeroSuggestMatches", "13"}};
1720 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches14[] = {
1721 {"MaxZeroSuggestMatches", "14"}};
1722 const FeatureEntry::FeatureParam kMaxZeroSuggestMatches15[] = {
1723 {"MaxZeroSuggestMatches", "15"}};
1725 const FeatureEntry::FeatureVariation kMaxZeroSuggestMatchesVariations[] = {
1726 {"5", kMaxZeroSuggestMatches5, std::size(kMaxZeroSuggestMatches5), nullptr},
1727 {"6", kMaxZeroSuggestMatches6, std::size(kMaxZeroSuggestMatches6), nullptr},
1728 {"7", kMaxZeroSuggestMatches7, std::size(kMaxZeroSuggestMatches7), nullptr},
1729 {"8", kMaxZeroSuggestMatches8, std::size(kMaxZeroSuggestMatches8), nullptr},
1730 {"9", kMaxZeroSuggestMatches9, std::size(kMaxZeroSuggestMatches9), nullptr},
1731 {"10", kMaxZeroSuggestMatches10, std::size(kMaxZeroSuggestMatches10),
1733 {"11", kMaxZeroSuggestMatches11, std::size(kMaxZeroSuggestMatches11),
1735 {"12", kMaxZeroSuggestMatches12, std::size(kMaxZeroSuggestMatches12),
1737 {"13", kMaxZeroSuggestMatches13, std::size(kMaxZeroSuggestMatches13),
1739 {"14", kMaxZeroSuggestMatches14, std::size(kMaxZeroSuggestMatches14),
1741 {"15", kMaxZeroSuggestMatches15, std::size(kMaxZeroSuggestMatches15),
1744 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches3[] = {
1745 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "3"}};
1746 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches4[] = {
1747 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "4"}};
1748 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches5[] = {
1749 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "5"}};
1750 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches6[] = {
1751 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "6"}};
1752 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches7[] = {
1753 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "7"}};
1754 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches8[] = {
1755 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "8"}};
1756 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches9[] = {
1757 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "9"}};
1758 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches10[] = {
1759 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "10"}};
1760 const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches12[] = {
1761 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "12"}};
1763 const FeatureEntry::FeatureVariation
1764 kOmniboxUIMaxAutocompleteMatchesVariations[] = {
1765 {"3 matches", kOmniboxUIMaxAutocompleteMatches3,
1766 std::size(kOmniboxUIMaxAutocompleteMatches3), nullptr},
1767 {"4 matches", kOmniboxUIMaxAutocompleteMatches4,
1768 std::size(kOmniboxUIMaxAutocompleteMatches4), nullptr},
1769 {"5 matches", kOmniboxUIMaxAutocompleteMatches5,
1770 std::size(kOmniboxUIMaxAutocompleteMatches5), nullptr},
1771 {"6 matches", kOmniboxUIMaxAutocompleteMatches6,
1772 std::size(kOmniboxUIMaxAutocompleteMatches6), nullptr},
1773 {"7 matches", kOmniboxUIMaxAutocompleteMatches7,
1774 std::size(kOmniboxUIMaxAutocompleteMatches7), nullptr},
1775 {"8 matches", kOmniboxUIMaxAutocompleteMatches8,
1776 std::size(kOmniboxUIMaxAutocompleteMatches8), nullptr},
1777 {"9 matches", kOmniboxUIMaxAutocompleteMatches9,
1778 std::size(kOmniboxUIMaxAutocompleteMatches9), nullptr},
1779 {"10 matches", kOmniboxUIMaxAutocompleteMatches10,
1780 std::size(kOmniboxUIMaxAutocompleteMatches10), nullptr},
1781 {"12 matches", kOmniboxUIMaxAutocompleteMatches12,
1782 std::size(kOmniboxUIMaxAutocompleteMatches12), nullptr}};
1784 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches2[] = {
1785 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "2"}};
1786 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches3[] = {
1787 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "3"}};
1788 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches4[] = {
1789 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "4"}};
1790 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches5[] = {
1791 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "5"}};
1792 const FeatureEntry::FeatureParam kOmniboxMaxURLMatches6[] = {
1793 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "6"}};
1795 const FeatureEntry::FeatureVariation kOmniboxMaxURLMatchesVariations[] = {
1796 {"2 matches", kOmniboxMaxURLMatches2, std::size(kOmniboxMaxURLMatches2),
1798 {"3 matches", kOmniboxMaxURLMatches3, std::size(kOmniboxMaxURLMatches3),
1800 {"4 matches", kOmniboxMaxURLMatches4, std::size(kOmniboxMaxURLMatches4),
1802 {"5 matches", kOmniboxMaxURLMatches5, std::size(kOmniboxMaxURLMatches5),
1804 {"6 matches", kOmniboxMaxURLMatches6, std::size(kOmniboxMaxURLMatches6),
1807 const FeatureEntry::FeatureParam kOmniboxDynamicMaxAutocomplete90[] = {
1808 {"OmniboxDynamicMaxAutocompleteUrlCutoff", "0"},
1809 {"OmniboxDynamicMaxAutocompleteIncreasedLimit", "9"}};
1810 const FeatureEntry::FeatureParam kOmniboxDynamicMaxAutocomplete91[] = {
1811 {"OmniboxDynamicMaxAutocompleteUrlCutoff", "1"},
1812 {"OmniboxDynamicMaxAutocompleteIncreasedLimit", "9"}};
1813 const FeatureEntry::FeatureParam kOmniboxDynamicMaxAutocomplete92[] = {
1814 {"OmniboxDynamicMaxAutocompleteUrlCutoff", "2"},
1815 {"OmniboxDynamicMaxAutocompleteIncreasedLimit", "9"}};
1816 const FeatureEntry::FeatureParam kOmniboxDynamicMaxAutocomplete100[] = {
1817 {"OmniboxDynamicMaxAutocompleteUrlCutoff", "0"},
1818 {"OmniboxDynamicMaxAutocompleteIncreasedLimit", "10"}};
1819 const FeatureEntry::FeatureParam kOmniboxDynamicMaxAutocomplete101[] = {
1820 {"OmniboxDynamicMaxAutocompleteUrlCutoff", "1"},
1821 {"OmniboxDynamicMaxAutocompleteIncreasedLimit", "10"}};
1822 const FeatureEntry::FeatureParam kOmniboxDynamicMaxAutocomplete102[] = {
1823 {"OmniboxDynamicMaxAutocompleteUrlCutoff", "2"},
1824 {"OmniboxDynamicMaxAutocompleteIncreasedLimit", "10"}};
1826 const FeatureEntry::FeatureVariation
1827 kOmniboxDynamicMaxAutocompleteVariations[] = {
1828 {"9 suggestions if 0 or fewer URLs", kOmniboxDynamicMaxAutocomplete90,
1829 std::size(kOmniboxDynamicMaxAutocomplete90), nullptr},
1830 {"9 suggestions if 1 or fewer URLs", kOmniboxDynamicMaxAutocomplete91,
1831 std::size(kOmniboxDynamicMaxAutocomplete91), nullptr},
1832 {"9 suggestions if 2 or fewer URLs", kOmniboxDynamicMaxAutocomplete92,
1833 std::size(kOmniboxDynamicMaxAutocomplete92), nullptr},
1834 {"10 suggestions if 0 or fewer URLs", kOmniboxDynamicMaxAutocomplete100,
1835 std::size(kOmniboxDynamicMaxAutocomplete100), nullptr},
1836 {"10 suggestions if 1 or fewer URLs", kOmniboxDynamicMaxAutocomplete101,
1837 std::size(kOmniboxDynamicMaxAutocomplete101), nullptr},
1838 {"10 suggestions if 2 or fewer URLs", kOmniboxDynamicMaxAutocomplete102,
1839 std::size(kOmniboxDynamicMaxAutocomplete102), nullptr}};
1841 const FeatureEntry::FeatureParam kOmniboxUniformRowHeight36[] = {
1842 {"OmniboxRichSuggestionVerticalMargin", "4"}};
1843 const FeatureEntry::FeatureParam kOmniboxUniformRowHeight40[] = {
1844 {"OmniboxRichSuggestionVerticalMargin", "6"}};
1846 const FeatureEntry::FeatureVariation kOmniboxSuggestionHeightVariations[] = {
1847 {"36px omnibox suggestions", kOmniboxUniformRowHeight36,
1848 std::size(kOmniboxUniformRowHeight36), nullptr},
1849 {"40px omnibox suggestions", kOmniboxUniformRowHeight40,
1850 std::size(kOmniboxUniformRowHeight40), nullptr},
1853 const FeatureEntry::FeatureParam kOmniboxFontSize12[] = {
1854 {"OmniboxFontSizeNonTouchUI", "12"}};
1855 const FeatureEntry::FeatureParam kOmniboxFontSize13[] = {
1856 {"OmniboxFontSizeNonTouchUI", "13"}};
1857 const FeatureEntry::FeatureParam kOmniboxFontSize14[] = {
1858 {"OmniboxFontSizeNonTouchUI", "14"}};
1860 const FeatureEntry::FeatureVariation kOmniboxFontSizeVariations[] = {
1861 {"12pt omnibox font", kOmniboxFontSize12, std::size(kOmniboxFontSize12),
1863 {"13pt omnibox font", kOmniboxFontSize13, std::size(kOmniboxFontSize13),
1865 {"14pt omnibox font", kOmniboxFontSize14, std::size(kOmniboxFontSize14),
1869 const FeatureEntry::FeatureParam kRepeatableQueries_6Searches_90Days[] = {
1870 {"RepeatableQueriesIgnoreDuplicateVisits", "true"},
1871 {"RepeatableQueriesMinVisitCount", "6"},
1873 const FeatureEntry::FeatureParam kRepeatableQueries_12Searches_90Days[] = {
1874 {"RepeatableQueriesIgnoreDuplicateVisits", "true"},
1875 {"RepeatableQueriesMinVisitCount", "12"},
1877 const FeatureEntry::FeatureParam kRepeatableQueries_6Searches_7Days[] = {
1878 {"RepeatableQueriesIgnoreDuplicateVisits", "true"},
1879 {"RepeatableQueriesMinVisitCount", "6"},
1880 {"RepeatableQueriesMaxAgeDays", "7"},
1882 const FeatureEntry::FeatureParam kRepeatableQueries_12Searches_7Days[] = {
1883 {"RepeatableQueriesIgnoreDuplicateVisits", "true"},
1884 {"RepeatableQueriesMinVisitCount", "12"},
1885 {"RepeatableQueriesMaxAgeDays", "7"},
1888 const FeatureEntry::FeatureVariation kOrganicRepeatableQueriesVariations[] = {
1889 {"6+ uses, once in last 90d", kRepeatableQueries_6Searches_90Days,
1890 std::size(kRepeatableQueries_6Searches_90Days), nullptr},
1891 {"12+ uses, once in last 90d", kRepeatableQueries_12Searches_90Days,
1892 std::size(kRepeatableQueries_12Searches_90Days), nullptr},
1893 {"6+ uses, once in last 7d", kRepeatableQueries_6Searches_7Days,
1894 std::size(kRepeatableQueries_6Searches_7Days), nullptr},
1895 {"12+ uses, once in last 7d", kRepeatableQueries_12Searches_7Days,
1896 std::size(kRepeatableQueries_12Searches_7Days), nullptr},
1899 const FeatureEntry::FeatureParam kMinimumTabWidthSettingPinned[] = {
1900 {features::kMinimumTabWidthFeatureParameterName, "54"}};
1901 const FeatureEntry::FeatureParam kMinimumTabWidthSettingMedium[] = {
1902 {features::kMinimumTabWidthFeatureParameterName, "72"}};
1903 const FeatureEntry::FeatureParam kMinimumTabWidthSettingLarge[] = {
1904 {features::kMinimumTabWidthFeatureParameterName, "140"}};
1905 const FeatureEntry::FeatureParam kMinimumTabWidthSettingFull[] = {
1906 {features::kMinimumTabWidthFeatureParameterName, "256"}};
1908 const FeatureEntry::FeatureVariation kTabScrollingVariations[] = {
1909 {" - tabs shrink to pinned tab width", kMinimumTabWidthSettingPinned,
1910 std::size(kMinimumTabWidthSettingPinned), nullptr},
1911 {" - tabs shrink to a medium width", kMinimumTabWidthSettingMedium,
1912 std::size(kMinimumTabWidthSettingMedium), nullptr},
1913 {" - tabs shrink to a large width", kMinimumTabWidthSettingLarge,
1914 std::size(kMinimumTabWidthSettingLarge), nullptr},
1915 {" - tabs don't shrink", kMinimumTabWidthSettingFull,
1916 std::size(kMinimumTabWidthSettingFull), nullptr}};
1918 const FeatureEntry::FeatureParam kTabScrollingButtonPositionRight[] = {
1919 {features::kTabScrollingButtonPositionParameterName, "0"}};
1920 const FeatureEntry::FeatureParam kTabScrollingButtonPositionLeft[] = {
1921 {features::kTabScrollingButtonPositionParameterName, "1"}};
1922 const FeatureEntry::FeatureParam kTabScrollingButtonPositionSplit[] = {
1923 {features::kTabScrollingButtonPositionParameterName, "2"}};
1925 const FeatureEntry::FeatureVariation kTabScrollingButtonPositionVariations[] = {
1926 {" - to the right of the tabstrip", kTabScrollingButtonPositionRight,
1927 std::size(kTabScrollingButtonPositionRight), nullptr},
1928 {" - to the left of the tabstrip", kTabScrollingButtonPositionLeft,
1929 std::size(kTabScrollingButtonPositionLeft), nullptr},
1930 {" - on both sides of the tabstrip", kTabScrollingButtonPositionSplit,
1931 std::size(kTabScrollingButtonPositionSplit), nullptr}};
1933 const FeatureEntry::FeatureParam kTabScrollingWithDraggingWithConstantSpeed[] =
1934 {{features::kTabScrollingWithDraggingModeName, "1"}};
1935 const FeatureEntry::FeatureParam kTabScrollingWithDraggingWithVariableSpeed[] =
1936 {{features::kTabScrollingWithDraggingModeName, "2"}};
1938 const FeatureEntry::FeatureVariation kTabScrollingWithDraggingVariations[] = {
1939 {" - tabs scrolling with constant speed",
1940 kTabScrollingWithDraggingWithConstantSpeed,
1941 std::size(kTabScrollingWithDraggingWithConstantSpeed), nullptr},
1942 {" - tabs scrolling with variable speed region",
1943 kTabScrollingWithDraggingWithVariableSpeed,
1944 std::size(kTabScrollingWithDraggingWithVariableSpeed), nullptr}};
1946 const FeatureEntry::FeatureParam kScrollableTabStripOverflowDivider[] = {
1947 {features::kScrollableTabStripOverflowModeName, "1"}};
1948 const FeatureEntry::FeatureParam kScrollableTabStripOverflowFade[] = {
1949 {features::kScrollableTabStripOverflowModeName, "2"}};
1950 const FeatureEntry::FeatureParam kScrollableTabStripOverflowShadow[] = {
1951 {features::kScrollableTabStripOverflowModeName, "3"}};
1953 const FeatureEntry::FeatureVariation kScrollableTabStripOverflowVariations[] = {
1954 {" - Divider", kScrollableTabStripOverflowDivider,
1955 std::size(kScrollableTabStripOverflowDivider), nullptr}, // Divider
1956 {" - Fade", kScrollableTabStripOverflowFade,
1957 std::size(kScrollableTabStripOverflowFade), nullptr}, // Fade
1958 {" - Shadow", kScrollableTabStripOverflowShadow,
1959 std::size(kScrollableTabStripOverflowShadow), nullptr}, // Shadow
1962 const FeatureEntry::FeatureParam kTabSearchSearchThresholdSmall[] = {
1963 {features::kTabSearchSearchThresholdName, "0.3"}};
1964 const FeatureEntry::FeatureParam kTabSearchSearchThresholdMedium[] = {
1965 {features::kTabSearchSearchThresholdName, "0.6"}};
1966 const FeatureEntry::FeatureParam kTabSearchSearchThresholdLarge[] = {
1967 {features::kTabSearchSearchThresholdName, "0.8"}};
1969 const FeatureEntry::FeatureVariation kTabSearchSearchThresholdVariations[] = {
1970 {" - fuzzy level: small", kTabSearchSearchThresholdSmall,
1971 std::size(kTabSearchSearchThresholdSmall), nullptr},
1972 {" - fuzzy level: medium", kTabSearchSearchThresholdMedium,
1973 std::size(kTabSearchSearchThresholdMedium), nullptr},
1974 {" - fuzzy level: large", kTabSearchSearchThresholdLarge,
1975 std::size(kTabSearchSearchThresholdLarge), nullptr}};
1977 const FeatureEntry::FeatureParam kChromeLabsEnabledInFlags[] = {
1978 {features::kChromeLabsActivationParameterName, "100"}};
1980 const FeatureEntry::FeatureVariation kChromeLabsVariations[] = {
1981 {" use this one!", kChromeLabsEnabledInFlags,
1982 std::size(kChromeLabsEnabledInFlags), nullptr}};
1984 #if !BUILDFLAG(IS_ANDROID)
1985 const flags_ui::FeatureEntry::FeatureParam kDelayPriceTrackingChip[] = {
1986 {commerce::kCommercePriceTrackingChipExperimentVariationParam, "1"}};
1988 const flags_ui::FeatureEntry::FeatureParam kIphForPriceTrackingChip[] = {
1989 {commerce::kCommercePriceTrackingChipExperimentVariationParam, "2"}};
1991 const FeatureEntry::FeatureVariation kPriceTrackingChipExperimentVariations[] =
1993 {"- Delay Chip", kDelayPriceTrackingChip,
1994 std::size(kDelayPriceTrackingChip), nullptr},
1995 {"- Chip IPH", kIphForPriceTrackingChip,
1996 std::size(kIphForPriceTrackingChip), nullptr},
1999 const FeatureEntry::FeatureParam kNtpChromeCartModuleFakeData[] = {
2000 {ntp_features::kNtpChromeCartModuleDataParam, "fake"},
2001 {ntp_features::kNtpChromeCartModuleAbandonedCartDiscountParam, "true"}};
2002 const FeatureEntry::FeatureParam kNtpChromeCartModuleAbandonedCartDiscount[] = {
2003 {ntp_features::kNtpChromeCartModuleAbandonedCartDiscountParam, "true"},
2004 {ntp_features::kNtpChromeCartModuleAbandonedCartDiscountUseUtmParam,
2006 {"partner-merchant-pattern",
2007 "(electronicexpress.com|zazzle.com|wish.com|homesquare.com|iherb.com|"
2008 "zappos.com|otterbox.com)"}};
2009 const FeatureEntry::FeatureParam kNtpChromeCartModuleHeuristicsImprovement[] = {
2010 {ntp_features::kNtpChromeCartModuleHeuristicsImprovementParam, "true"}};
2011 const FeatureEntry::FeatureParam kNtpChromeCartModuleRBDAndCouponDiscount[] = {
2012 {ntp_features::kNtpChromeCartModuleHeuristicsImprovementParam, "true"},
2013 {ntp_features::kNtpChromeCartModuleAbandonedCartDiscountParam, "true"},
2014 {ntp_features::kNtpChromeCartModuleAbandonedCartDiscountUseUtmParam,
2016 {"partner-merchant-pattern",
2017 "(electronicexpress.com|zazzle.com|wish.com|homesquare.com)"},
2018 {ntp_features::kNtpChromeCartModuleCouponParam, "true"}};
2019 const FeatureEntry::FeatureVariation kNtpChromeCartModuleVariations[] = {
2020 {"- Fake Data And Discount", kNtpChromeCartModuleFakeData,
2021 std::size(kNtpChromeCartModuleFakeData), nullptr},
2022 {"- Abandoned Cart Discount", kNtpChromeCartModuleAbandonedCartDiscount,
2023 std::size(kNtpChromeCartModuleAbandonedCartDiscount), nullptr},
2024 {"- Heuristics Improvement", kNtpChromeCartModuleHeuristicsImprovement,
2025 std::size(kNtpChromeCartModuleHeuristicsImprovement), nullptr},
2026 {"- RBD and Coupons", kNtpChromeCartModuleRBDAndCouponDiscount,
2027 std::size(kNtpChromeCartModuleRBDAndCouponDiscount), nullptr},
2030 // The following are consent v2 variations in the Chrome Cart module.
2031 const flags_ui::FeatureEntry::FeatureParam kDiscountConsentNtpDialog[] = {
2032 {commerce::kNtpChromeCartModuleDiscountConsentNtpVariationParam, "3"}};
2033 const flags_ui::FeatureEntry::FeatureParam kDiscountConsentNtpNativeDialog[] = {
2034 {commerce::kNtpChromeCartModuleDiscountConsentNtpVariationParam, "4"}};
2036 const FeatureEntry::FeatureVariation kDiscountConsentV2Variations[] = {
2037 {"WebUi Dialog Consent", kDiscountConsentNtpDialog,
2038 std::size(kDiscountConsentNtpDialog), nullptr},
2039 {"Native Dialog Consent", kDiscountConsentNtpNativeDialog,
2040 std::size(kDiscountConsentNtpNativeDialog), nullptr},
2043 // The following is Code-based RBD variation.
2044 const flags_ui::FeatureEntry::FeatureParam kCodeBasedRBDEnabled[] = {
2045 {commerce::kCodeBasedRuleDiscountParam, "true"}};
2047 const FeatureEntry::FeatureVariation kCodeBasedRBDVariations[] = {
2048 {"code-based RBD", kCodeBasedRBDEnabled, std::size(kCodeBasedRBDEnabled),
2052 // The following is Merchant wide promotion variation.
2053 const flags_ui::FeatureEntry::FeatureParam kMerchantWideFetchEnabled[] = {
2054 {commerce::kReadyToFetchMerchantWidePromotionParam, "true"}};
2056 const FeatureEntry::FeatureVariation kMerchantWidePromotionVariations[] = {
2057 {"- Enable fetch", kMerchantWideFetchEnabled,
2058 std::size(kMerchantWideFetchEnabled), nullptr},
2061 const FeatureEntry::FeatureParam kNtpDriveModuleFakeData[] = {
2062 {ntp_features::kNtpDriveModuleDataParam, "fake"}};
2063 const FeatureEntry::FeatureParam kNtpDriveModuleManagedUsersOnly[] = {
2064 {ntp_features::kNtpDriveModuleManagedUsersOnlyParam, "true"}};
2065 const FeatureEntry::FeatureVariation kNtpDriveModuleVariations[] = {
2066 {"- Fake Data", kNtpDriveModuleFakeData, std::size(kNtpDriveModuleFakeData),
2068 {"- Managed Users Only", kNtpDriveModuleManagedUsersOnly,
2069 std::size(kNtpDriveModuleManagedUsersOnly), nullptr},
2072 // History clusters fake data params are expressed as a comma separated tuple
2073 // consisting of a number desired clusters, a number of desired visits, and the
2074 // number of such visits to be marked as having url keyed images. The number of
2075 // visits must be greater than or equal to the number of visits marked as having
2077 const FeatureEntry::FeatureParam
2078 kNtpHistoryClustersModuleFakeData2Visits2Images[] = {
2079 {ntp_features::kNtpHistoryClustersModuleDataParam, "1,2,2"}};
2080 const FeatureEntry::FeatureParam
2081 kNtpHistoryClustersModuleFakeData3Visits1Image[] = {
2082 {ntp_features::kNtpHistoryClustersModuleDataParam, "1,3,1"}};
2083 const FeatureEntry::FeatureParam
2084 kNtpHistoryClustersModuleFakeData4Visits2Images[] = {
2085 {ntp_features::kNtpHistoryClustersModuleDataParam, "1,4,2"}};
2086 const FeatureEntry::FeatureParam kNtpHistoryClustersModuleV2OneJourney[] = {
2087 {ntp_features::kNtpHistoryClustersModuleDataParam, "1,2,2"}};
2088 const FeatureEntry::FeatureParam kNtpHistoryClustersModuleV2TwoJourneys[] = {
2089 {ntp_features::kNtpHistoryClustersModuleDataParam, "2,2,2"}};
2090 const FeatureEntry::FeatureParam kNtpHistoryClustersModuleV2ThreeJourneys[] = {
2091 {ntp_features::kNtpHistoryClustersModuleDataParam, "3,2,2"}};
2092 const FeatureEntry::FeatureParam
2093 kNtpHistoryClustersModuleV2ThreeJourneysTextOnly[] = {
2094 {ntp_features::kNtpHistoryClustersModuleDataParam, "3,2,0"}};
2095 const FeatureEntry::FeatureVariation kNtpHistoryClustersModuleVariations[] = {
2096 {"- Fake Data - Layout 1", kNtpHistoryClustersModuleFakeData2Visits2Images,
2097 std::size(kNtpHistoryClustersModuleFakeData2Visits2Images), nullptr},
2098 {"- Fake Data - Layout 2", kNtpHistoryClustersModuleFakeData3Visits1Image,
2099 std::size(kNtpHistoryClustersModuleFakeData3Visits1Image), nullptr},
2100 {"- Fake Data - Layout 3", kNtpHistoryClustersModuleFakeData4Visits2Images,
2101 std::size(kNtpHistoryClustersModuleFakeData4Visits2Images), nullptr},
2102 {"- v2 Fake Data - 1 Journey", kNtpHistoryClustersModuleV2OneJourney,
2103 std::size(kNtpHistoryClustersModuleV2OneJourney), nullptr},
2104 {"- v2 Fake Data - 2 Journeys", kNtpHistoryClustersModuleV2TwoJourneys,
2105 std::size(kNtpHistoryClustersModuleV2TwoJourneys), nullptr},
2106 {"- v2 Fake Data - 3 Journeys", kNtpHistoryClustersModuleV2ThreeJourneys,
2107 std::size(kNtpHistoryClustersModuleV2ThreeJourneys), nullptr},
2108 {"- v2 Fake Data - 3 Journeys - Text Only",
2109 kNtpHistoryClustersModuleV2ThreeJourneysTextOnly,
2110 std::size(kNtpHistoryClustersModuleV2ThreeJourneysTextOnly), nullptr},
2113 const FeatureEntry::FeatureParam
2114 kNtpChromeCartInHistoryClustersModuleFakeData0[] = {
2115 {ntp_features::kNtpChromeCartInHistoryClustersModuleDataParam, "0"}};
2116 const FeatureEntry::FeatureParam
2117 kNtpChromeCartInHistoryClustersModuleFakeData1[] = {
2118 {ntp_features::kNtpChromeCartInHistoryClustersModuleDataParam, "1"}};
2119 const FeatureEntry::FeatureParam
2120 kNtpChromeCartInHistoryClustersModuleFakeData2[] = {
2121 {ntp_features::kNtpChromeCartInHistoryClustersModuleDataParam, "3"}};
2122 const FeatureEntry::FeatureParam
2123 kNtpChromeCartInHistoryClustersModuleFakeData3[] = {
2124 {ntp_features::kNtpChromeCartInHistoryClustersModuleDataParam, "6"}};
2126 const FeatureEntry::FeatureVariation
2127 kNtpChromeCartInHistoryClustersModuleVariations[] = {
2128 {" - Fake cart: 0 product image",
2129 kNtpChromeCartInHistoryClustersModuleFakeData0,
2130 std::size(kNtpChromeCartInHistoryClustersModuleFakeData0), nullptr},
2131 {" - Fake cart: 1 product image",
2132 kNtpChromeCartInHistoryClustersModuleFakeData1,
2133 std::size(kNtpChromeCartInHistoryClustersModuleFakeData1), nullptr},
2134 {" - Fake cart: 3 product images",
2135 kNtpChromeCartInHistoryClustersModuleFakeData2,
2136 std::size(kNtpChromeCartInHistoryClustersModuleFakeData2), nullptr},
2137 {" - Fake cart: 6 product images",
2138 kNtpChromeCartInHistoryClustersModuleFakeData3,
2139 std::size(kNtpChromeCartInHistoryClustersModuleFakeData3), nullptr}};
2141 const FeatureEntry::FeatureParam kNtpMiddleSlotPromoDismissalFakeData[] = {
2142 {ntp_features::kNtpMiddleSlotPromoDismissalParam, "fake"}};
2143 const FeatureEntry::FeatureVariation kNtpMiddleSlotPromoDismissalVariations[] =
2145 {"- Fake Data", kNtpMiddleSlotPromoDismissalFakeData,
2146 std::size(kNtpMiddleSlotPromoDismissalFakeData), nullptr},
2149 const FeatureEntry::FeatureParam kNtpPhotosModuleFakeData0[] = {
2150 {ntp_features::kNtpPhotosModuleDataParam, "0"}};
2151 const FeatureEntry::FeatureParam kNtpPhotosModuleFakeData1[] = {
2152 {ntp_features::kNtpPhotosModuleDataParam, "1"}};
2153 const FeatureEntry::FeatureParam kNtpPhotosModuleFakeData2[] = {
2154 {ntp_features::kNtpPhotosModuleDataParam, "2"}};
2155 const FeatureEntry::FeatureParam kNtpPhotosModuleFakeData3[] = {
2156 {ntp_features::kNtpPhotosModuleDataParam, "3"}};
2157 const FeatureEntry::FeatureParam kNtpPhotosModuleFakeData4[] = {
2158 {ntp_features::kNtpPhotosModuleDataParam, "4"}};
2160 const FeatureEntry::FeatureVariation kNtpPhotosModuleVariations[] = {
2161 {" - Fake memories: 0", kNtpPhotosModuleFakeData0,
2162 std::size(kNtpPhotosModuleFakeData0), nullptr},
2163 {" - Fake memories: 1", kNtpPhotosModuleFakeData1,
2164 std::size(kNtpPhotosModuleFakeData1), nullptr},
2165 {" - Fake memories: 2", kNtpPhotosModuleFakeData2,
2166 std::size(kNtpPhotosModuleFakeData2), nullptr},
2167 {" - Fake memories: 3", kNtpPhotosModuleFakeData3,
2168 std::size(kNtpPhotosModuleFakeData3), nullptr},
2169 {" - Fake memories: 4", kNtpPhotosModuleFakeData4,
2170 std::size(kNtpPhotosModuleFakeData4), nullptr}};
2172 const FeatureEntry::FeatureParam kNtpPhotosModuleOptInRHTitle[] = {
2173 {ntp_features::kNtpPhotosModuleOptInTitleParam, "0"}};
2174 const FeatureEntry::FeatureParam kNtpPhotosModuleOptInFavoriteTitle[] = {
2175 {ntp_features::kNtpPhotosModuleOptInTitleParam, "1"}};
2176 const FeatureEntry::FeatureParam kNtpPhotosModuleOptInPersonalizedTitle[] = {
2177 {ntp_features::kNtpPhotosModuleOptInTitleParam, "2"}};
2178 const FeatureEntry::FeatureParam kNtpPhotosModuleOptInTripsTitle[] = {
2179 {ntp_features::kNtpPhotosModuleOptInTitleParam, "3"}};
2181 const FeatureEntry::FeatureVariation kNtpPhotosModuleOptInTitleVariations[] = {
2182 {" - Recent Highlights", kNtpPhotosModuleOptInRHTitle,
2183 std::size(kNtpPhotosModuleOptInRHTitle), nullptr},
2184 {" - Favorite people", kNtpPhotosModuleOptInFavoriteTitle,
2185 std::size(kNtpPhotosModuleOptInFavoriteTitle), nullptr},
2186 {" - Personalized title", kNtpPhotosModuleOptInPersonalizedTitle,
2187 std::size(kNtpPhotosModuleOptInPersonalizedTitle), nullptr},
2188 {" - Trips title", kNtpPhotosModuleOptInTripsTitle,
2189 std::size(kNtpPhotosModuleOptInTripsTitle), nullptr}};
2191 const FeatureEntry::FeatureParam kNtpPhotosModuleLogo1ArtWork[] = {
2192 {ntp_features::kNtpPhotosModuleOptInArtWorkParam, "1"}};
2193 const FeatureEntry::FeatureParam kNtpPhotosModuleLogo2ArtWork[] = {
2194 {ntp_features::kNtpPhotosModuleOptInArtWorkParam, "2"}};
2195 const FeatureEntry::FeatureParam kNtpPhotosModuleIllustrationsArtWork[] = {
2196 {ntp_features::kNtpPhotosModuleOptInArtWorkParam, "3"}};
2197 const FeatureEntry::FeatureParam kNtpPhotosModuleStockpileArtWork[] = {
2198 {ntp_features::kNtpPhotosModuleOptInArtWorkParam, "4"}};
2200 const FeatureEntry::FeatureVariation kNtpPhotosModuleOptInArtWorkVariations[] =
2201 {{" - Artwork with Logo - 1", kNtpPhotosModuleLogo1ArtWork,
2202 std::size(kNtpPhotosModuleLogo1ArtWork), nullptr},
2203 {" - Artwork with Logo - 2", kNtpPhotosModuleLogo2ArtWork,
2204 std::size(kNtpPhotosModuleLogo2ArtWork), nullptr},
2205 {" - Artwork with Illustrations", kNtpPhotosModuleIllustrationsArtWork,
2206 std::size(kNtpPhotosModuleIllustrationsArtWork), nullptr},
2207 {" - Artwork with Stockpile", kNtpPhotosModuleStockpileArtWork,
2208 std::size(kNtpPhotosModuleStockpileArtWork), nullptr}};
2210 const FeatureEntry::FeatureParam kNtpRealboxRevertWidthOnBlur[] = {
2211 {ntp_features::kNtpRealboxWidthBehaviorParam, "revert"}};
2212 const FeatureEntry::FeatureParam kNtpRealboxAlwaysWide[] = {
2213 {ntp_features::kNtpRealboxWidthBehaviorParam, "wide"}};
2214 const FeatureEntry::FeatureVariation kNtpRealboxWidthBehaviorVariations[] = {
2215 {" - Reverts back on blur if there is secondary column",
2216 kNtpRealboxRevertWidthOnBlur, std::size(kNtpRealboxRevertWidthOnBlur),
2218 {" - Always wide", kNtpRealboxAlwaysWide, std::size(kNtpRealboxAlwaysWide),
2221 const FeatureEntry::FeatureParam kNtpRecipeTasksModuleFakeData[] = {
2222 {ntp_features::kNtpRecipeTasksModuleDataParam, "fake"}};
2223 const FeatureEntry::FeatureParam kNtpRecipeTasksModuleHistorical7Days[] = {
2224 {ntp_features::kNtpRecipeTasksModuleExperimentGroupParam, "historical-7"}};
2225 const FeatureEntry::FeatureParam kNtpRecipeTasksModuleHistorical14Days[] = {
2226 {ntp_features::kNtpRecipeTasksModuleExperimentGroupParam, "historical-14"}};
2227 const FeatureEntry::FeatureParam kNtpRecipeTasksModuleMix7Days[] = {
2228 {ntp_features::kNtpRecipeTasksModuleExperimentGroupParam, "mix-7"}};
2229 const FeatureEntry::FeatureParam kNtpRecipeTasksModuleMix14Days[] = {
2230 {ntp_features::kNtpRecipeTasksModuleExperimentGroupParam, "mix-14"}};
2231 const FeatureEntry::FeatureVariation kNtpRecipeTasksModuleVariations[] = {
2232 {"- Fake Data", kNtpRecipeTasksModuleFakeData,
2233 std::size(kNtpRecipeTasksModuleFakeData), nullptr},
2234 {"- Historical Arm (7 days)", kNtpRecipeTasksModuleHistorical7Days,
2235 std::size(kNtpRecipeTasksModuleHistorical7Days), "t3349934"},
2236 {"- Historical Arm (14 days)", kNtpRecipeTasksModuleHistorical14Days,
2237 std::size(kNtpRecipeTasksModuleHistorical14Days), "t3349935"},
2238 {"- Recommended Mix Arm (7 days)", kNtpRecipeTasksModuleMix7Days,
2239 std::size(kNtpRecipeTasksModuleMix7Days), "t3349936"},
2240 {"- Recommended Mix Arm (14 days)", kNtpRecipeTasksModuleMix14Days,
2241 std::size(kNtpRecipeTasksModuleMix14Days), "t3349937"},
2244 const FeatureEntry::FeatureParam kNtpSafeBrowsingModuleFastCooldown[] = {
2245 {ntp_features::kNtpSafeBrowsingModuleCooldownPeriodDaysParam, "0.001"},
2246 {ntp_features::kNtpSafeBrowsingModuleCountMaxParam, "1"}};
2247 const FeatureEntry::FeatureVariation kNtpSafeBrowsingModuleVariations[] = {
2248 {"(Fast Cooldown)", kNtpSafeBrowsingModuleFastCooldown,
2249 std::size(kNtpSafeBrowsingModuleFastCooldown), nullptr},
2251 #endif // !BUILDFLAG(IS_ANDROID)
2253 #if BUILDFLAG(IS_ANDROID)
2255 const FeatureEntry::FeatureParam kRelatedSearchesUrl = {"stamp", "1Ru"};
2256 const FeatureEntry::FeatureParam kRelatedSearchesContent = {"stamp", "1Rc"};
2257 const FeatureEntry::FeatureParam kRelatedSearchesAllLanguages = {
2258 "all_languages", "true"};
2259 const FeatureEntry::FeatureVariation kRelatedSearchesVariations[] = {
2260 {"from URL", &kRelatedSearchesUrl, 1, nullptr},
2261 {"from content", &kRelatedSearchesContent, 1, nullptr},
2262 {"support all languages", &kRelatedSearchesAllLanguages, 1, nullptr},
2265 const FeatureEntry::FeatureParam kContextualSearchSuppressShortViewWith300Dp[] =
2266 {{"contextual_search_minimum_page_height_dp", "300"}};
2267 const FeatureEntry::FeatureParam kContextualSearchSuppressShortViewWith400Dp[] =
2268 {{"contextual_search_minimum_page_height_dp", "400"}};
2269 const FeatureEntry::FeatureParam kContextualSearchSuppressShortViewWith500Dp[] =
2270 {{"contextual_search_minimum_page_height_dp", "500"}};
2271 const FeatureEntry::FeatureParam kContextualSearchSuppressShortViewWith600Dp[] =
2272 {{"contextual_search_minimum_page_height_dp", "600"}};
2273 const FeatureEntry::FeatureVariation
2274 kContextualSearchSuppressShortViewVariations[] = {
2275 {"(300 dp)", kContextualSearchSuppressShortViewWith300Dp,
2276 std::size(kContextualSearchSuppressShortViewWith300Dp), nullptr},
2277 {"(400 dp)", kContextualSearchSuppressShortViewWith400Dp,
2278 std::size(kContextualSearchSuppressShortViewWith400Dp), nullptr},
2279 {"(500 dp)", kContextualSearchSuppressShortViewWith500Dp,
2280 std::size(kContextualSearchSuppressShortViewWith500Dp), nullptr},
2281 {"(600 dp)", kContextualSearchSuppressShortViewWith600Dp,
2282 std::size(kContextualSearchSuppressShortViewWith600Dp), nullptr},
2285 #endif // BUILDFLAG(IS_ANDROID)
2287 const FeatureEntry::FeatureParam
2288 kResamplingScrollEventsPredictionTimeBasedEnabled[] = {
2289 {"mode", features::kPredictionTypeTimeBased},
2290 {"latency", features::kPredictionTypeDefaultTime}};
2291 const FeatureEntry::FeatureParam
2292 kResamplingScrollEventsPredictionFramesBasedEnabled[] = {
2293 {"mode", features::kPredictionTypeFramesBased},
2294 {"latency", features::kPredictionTypeDefaultFramesRatio}};
2295 const FeatureEntry::FeatureVariation
2296 kResamplingScrollEventsExperimentalPredictionVariations[] = {
2297 {features::kPredictionTypeTimeBased,
2298 kResamplingScrollEventsPredictionTimeBasedEnabled,
2299 std::size(kResamplingScrollEventsPredictionTimeBasedEnabled), nullptr},
2300 {features::kPredictionTypeFramesBased,
2301 kResamplingScrollEventsPredictionFramesBasedEnabled,
2302 std::size(kResamplingScrollEventsPredictionFramesBasedEnabled),
2305 #if BUILDFLAG(IS_ANDROID)
2306 const FeatureEntry::FeatureParam kStartSurfaceReturnTime_Immediate[] = {
2307 {"start_surface_return_time_seconds", "0"},
2308 {"start_surface_return_time_on_tablet_seconds", "0"}};
2309 const FeatureEntry::FeatureParam kStartSurfaceReturnTime_10Seconds[] = {
2310 {"start_surface_return_time_seconds", "10"},
2311 {"start_surface_return_time_on_tablet_seconds", "10"}};
2312 const FeatureEntry::FeatureParam kStartSurfaceReturnTime_1Minute[] = {
2313 {"start_surface_return_time_seconds", "60"},
2314 {"start_surface_return_time_on_tablet_seconds", "60"}};
2315 const FeatureEntry::FeatureParam kStartSurfaceReturnTime_5Minute[] = {
2316 {"start_surface_return_time_seconds", "300"},
2317 {"start_surface_return_time_on_tablet_seconds", "300"}};
2318 const FeatureEntry::FeatureParam kStartSurfaceReturnTime_60Minute[] = {
2319 {"start_surface_return_time_seconds", "3600"},
2320 {"start_surface_return_time_on_tablet_seconds", "3600"}};
2321 const FeatureEntry::FeatureVariation kStartSurfaceReturnTimeVariations[] = {
2322 {"Immediate", kStartSurfaceReturnTime_Immediate,
2323 std::size(kStartSurfaceReturnTime_Immediate), nullptr},
2324 {"10 seconds", kStartSurfaceReturnTime_10Seconds,
2325 std::size(kStartSurfaceReturnTime_10Seconds), nullptr},
2326 {"1 minute", kStartSurfaceReturnTime_1Minute,
2327 std::size(kStartSurfaceReturnTime_1Minute), nullptr},
2328 {"5 minute", kStartSurfaceReturnTime_5Minute,
2329 std::size(kStartSurfaceReturnTime_5Minute), nullptr},
2330 {"60 minute", kStartSurfaceReturnTime_60Minute,
2331 std::size(kStartSurfaceReturnTime_60Minute), nullptr},
2334 const FeatureEntry::FeatureParam
2335 kAccountReauthenticationRecentTimeWindow_0Minutes[] = {
2336 {"account_reauthentication_recent_time_window_minutes", "0"},
2338 const FeatureEntry::FeatureParam
2339 kAccountReauthenticationRecentTimeWindow_1Minutes[] = {
2340 {"account_reauthentication_recent_time_window_minutes", "1"},
2342 const FeatureEntry::FeatureParam
2343 kAccountReauthenticationRecentTimeWindow_5Minutes[] = {
2344 {"account_reauthentication_recent_time_window_minutes", "5"},
2346 const FeatureEntry::FeatureParam
2347 kAccountReauthenticationRecentTimeWindow_10Minutes[] = {
2348 {"account_reauthentication_recent_time_window_minutes", "10"},
2350 const FeatureEntry::FeatureVariation
2351 kAccountReauthenticationRecentTimeWindowVariations[] = {
2352 {"0 minutes", kAccountReauthenticationRecentTimeWindow_0Minutes,
2353 std::size(kAccountReauthenticationRecentTimeWindow_0Minutes), nullptr},
2354 {"1 minutes", kAccountReauthenticationRecentTimeWindow_1Minutes,
2355 std::size(kAccountReauthenticationRecentTimeWindow_1Minutes), nullptr},
2356 {"5 minutes", kAccountReauthenticationRecentTimeWindow_5Minutes,
2357 std::size(kAccountReauthenticationRecentTimeWindow_5Minutes), nullptr},
2358 {"10 minutes", kAccountReauthenticationRecentTimeWindow_10Minutes,
2359 std::size(kAccountReauthenticationRecentTimeWindow_10Minutes),
2362 #endif // BUILDFLAG(IS_ANDROID)
2363 #if BUILDFLAG(IS_ANDROID)
2364 const FeatureEntry::FeatureParam
2365 kNewTabSearchEngineUrlAndroid_EeaCountryOnly[] = {
2366 {"eea_country_only", "true"}};
2368 const FeatureEntry::FeatureVariation kNewTabSearchEngineUrlAndroidVariations[] =
2370 {"EEA Country Only", kNewTabSearchEngineUrlAndroid_EeaCountryOnly,
2371 std::size(kNewTabSearchEngineUrlAndroid_EeaCountryOnly), nullptr},
2374 const FeatureEntry::FeatureParam kStartSurfaceAndroid_SingleSurface[] = {
2375 {"open_ntp_instead_of_start", "false"},
2376 {"open_start_as_homepage", "true"},
2377 {"show_last_active_tab_only", "false"},
2378 {"show_tabs_in_mru_order", "true"}};
2380 const FeatureEntry::FeatureParam kStartSurfaceAndroid_CandidateA[] = {
2381 {"open_ntp_instead_of_start", "false"},
2382 {"open_start_as_homepage", "true"}};
2384 const FeatureEntry::FeatureParam kStartSurfaceAndroid_CandidateA_SyncCheck[] = {
2385 {"open_ntp_instead_of_start", "false"},
2386 {"open_start_as_homepage", "true"},
2387 {"check_sync_before_show_start_at_startup", "true"}};
2389 const FeatureEntry::FeatureParam
2390 kStartSurfaceAndroid_CandidateA_SigninPromoTimeLimit[] = {
2391 {"open_ntp_instead_of_start", "false"},
2392 {"open_start_as_homepage", "true"},
2393 {"sign_in_promo_show_since_last_background_limit_ms", "30000"}};
2395 const FeatureEntry::FeatureParam kStartSurfaceAndroid_CandidateB[] = {
2396 {"open_ntp_instead_of_start", "true"}};
2398 const FeatureEntry::FeatureParam
2399 kStartSurfaceAndroid_CandidateB_AlwaysShowIncognito[] = {
2400 {"hide_switch_when_no_incognito_tabs", "false"}};
2402 const FeatureEntry::FeatureVariation kStartSurfaceAndroidVariations[] = {
2403 {"Candidate A", kStartSurfaceAndroid_CandidateA,
2404 std::size(kStartSurfaceAndroid_CandidateA), nullptr},
2405 {"Candidate A + Sync check", kStartSurfaceAndroid_CandidateA_SyncCheck,
2406 std::size(kStartSurfaceAndroid_CandidateA_SyncCheck), nullptr},
2407 {"Candidate A + Sign in promo backgrounded time limit",
2408 kStartSurfaceAndroid_CandidateA_SigninPromoTimeLimit,
2409 std::size(kStartSurfaceAndroid_CandidateA_SigninPromoTimeLimit), nullptr},
2410 {"Candidate B", kStartSurfaceAndroid_CandidateB,
2411 std::size(kStartSurfaceAndroid_CandidateB), nullptr},
2412 {"Candidate B + Always show Incognito icon",
2413 kStartSurfaceAndroid_CandidateB_AlwaysShowIncognito,
2414 std::size(kStartSurfaceAndroid_CandidateB_AlwaysShowIncognito), nullptr},
2415 {"Single Surface", kStartSurfaceAndroid_SingleSurface,
2416 std::size(kStartSurfaceAndroid_SingleSurface), nullptr},
2419 const FeatureEntry::FeatureParam kSurfacePolish_mvp[] = {
2420 {"polish_omnibox_color", "true"},
2421 {"scrollable_mvt", "true"},
2422 {"move_down_logo", "true"}};
2424 const FeatureEntry::FeatureParam kSurfacePolish_white_omnibox[] = {
2425 {"scrollable_mvt", "true"},
2426 {"move_down_logo", "true"}};
2428 const FeatureEntry::FeatureParam kSurfacePolish_less_brand_space[] = {
2429 {"polish_omnibox_color", "true"},
2430 {"scrollable_mvt", "true"},
2431 {"move_down_logo", "true"},
2432 {"less_brand_space", "true"}};
2434 const FeatureEntry::FeatureParam kSurfacePolish_mvp_2row_mvt[] = {
2435 {"polish_omnibox_color", "true"},
2436 {"move_down_logo", "true"}};
2438 const FeatureEntry::FeatureParam kSurfacePolish_logo_in_toolbar[] = {
2439 {"polish_omnibox_color", "true"}};
2441 const FeatureEntry::FeatureParam kSurfacePolish_use_magic_space[] = {
2442 {"polish_omnibox_color", "true"},
2443 {"move_down_logo", "true"},
2444 {"use_magic_space", "true"}};
2446 const FeatureEntry::FeatureVariation kSurfacePolishVariations[] = {
2447 {"Arm 1: MVP", kSurfacePolish_mvp, std::size(kSurfacePolish_mvp), nullptr},
2448 {"Arm 2: White Omnibox", kSurfacePolish_white_omnibox,
2449 std::size(kSurfacePolish_white_omnibox), nullptr},
2450 {"Arm 3: Less brand space", kSurfacePolish_less_brand_space,
2451 std::size(kSurfacePolish_less_brand_space), nullptr},
2452 {"Arm 4: MVP with 2 row MVT", kSurfacePolish_mvp_2row_mvt,
2453 std::size(kSurfacePolish_mvp_2row_mvt), nullptr},
2454 {"Arm 5: Logo in toolbar", kSurfacePolish_logo_in_toolbar,
2455 std::size(kSurfacePolish_logo_in_toolbar), nullptr},
2456 {"Use magic space", kSurfacePolish_use_magic_space,
2457 std::size(kSurfacePolish_use_magic_space), nullptr},
2460 const FeatureEntry::FeatureParam kFeedPositionAndroid_push_down_feed_small[] = {
2461 {"push_down_feed_small", "true"}};
2463 const FeatureEntry::FeatureParam kFeedPositionAndroid_push_down_feed_large[] = {
2464 {"push_down_feed_large", "true"}};
2466 const FeatureEntry::FeatureParam kFeedPositionAndroid_pull_up_feed[] = {
2467 {"pull_up_feed", "true"}};
2469 const FeatureEntry::FeatureParam
2470 kFeedPositionAndroid_push_down_feed_large_target_feed_active[] = {
2471 {"push_down_feed_large", "true"},
2472 {"feed_active_targeting", "active"}};
2474 const FeatureEntry::FeatureParam
2475 kFeedPositionAndroid_push_down_feed_large_target_non_feed_active[] = {
2476 {"push_down_feed_large", "true"},
2477 {"feed_active_targeting", "non-active"}};
2479 const FeatureEntry::FeatureParam
2480 kFeedPositionAndroid_pull_up_feed_target_feed_active[] = {
2481 {"pull_up_feed", "true"},
2482 {"feed_active_targeting", "active"}};
2484 const FeatureEntry::FeatureParam
2485 kFeedPositionAndroid_pull_up_feed_target_non_feed_active[] = {
2486 {"pull_up_feed", "true"},
2487 {"feed_active_targeting", "non-active"}};
2489 const FeatureEntry::FeatureVariation kFeedPositionAndroidVariations[] = {
2490 {"Push down Feed (small)", kFeedPositionAndroid_push_down_feed_small,
2491 std::size(kFeedPositionAndroid_push_down_feed_small), nullptr},
2492 {"Push down Feed (large)", kFeedPositionAndroid_push_down_feed_large,
2493 std::size(kFeedPositionAndroid_push_down_feed_large), nullptr},
2494 {"Pull up Feed", kFeedPositionAndroid_pull_up_feed,
2495 std::size(kFeedPositionAndroid_pull_up_feed), nullptr},
2496 {"Push down Feed (large) with targeting Feed active users",
2497 kFeedPositionAndroid_push_down_feed_large_target_feed_active,
2498 std::size(kFeedPositionAndroid_push_down_feed_large_target_feed_active),
2500 {"Push down Feed (large) with targeting non-Feed active users",
2501 kFeedPositionAndroid_push_down_feed_large_target_non_feed_active,
2503 kFeedPositionAndroid_push_down_feed_large_target_non_feed_active),
2505 {"Pull up Feed with targeting Feed active users",
2506 kFeedPositionAndroid_pull_up_feed_target_feed_active,
2507 std::size(kFeedPositionAndroid_pull_up_feed_target_feed_active), nullptr},
2508 {"Pull up Feed with targeting non-Feed active users",
2509 kFeedPositionAndroid_pull_up_feed_target_non_feed_active,
2510 std::size(kFeedPositionAndroid_pull_up_feed_target_non_feed_active),
2514 const FeatureEntry::FeatureParam kSearchResumption_use_new_service[] = {
2515 {"use_new_service", "true"}};
2516 const FeatureEntry::FeatureVariation
2517 kSearchResumptionModuleAndroidVariations[] = {
2518 {"Use New Service", kSearchResumption_use_new_service,
2519 std::size(kSearchResumption_use_new_service), nullptr},
2522 const FeatureEntry::FeatureParam kFeatureNotificationGuide_low_engaged[] = {
2523 {"enable_feature_incognito_tab", "true"},
2524 {"enable_feature_ntp_suggestion_card", "true"},
2525 {"enable_feature_voice_search", "true"}};
2527 const FeatureEntry::FeatureParam kFeatureNotificationGuide_default_browser[] = {
2528 {"enable_feature_default_browser", "true"}};
2530 const FeatureEntry::FeatureVariation kFeatureNotificationGuideVariations[] = {
2531 {"Low engaged users", kFeatureNotificationGuide_low_engaged,
2532 std::size(kFeatureNotificationGuide_low_engaged), nullptr},
2533 {"Default browser", kFeatureNotificationGuide_default_browser,
2534 std::size(kFeatureNotificationGuide_default_browser), nullptr},
2537 const FeatureEntry::FeatureParam
2538 kNotificationPermissionRationale_show_dialog_next_start[] = {
2539 {"always_show_rationale_before_requesting_permission", "true"},
2540 {"permission_request_interval_days", "0"},
2543 const FeatureEntry::FeatureVariation
2544 kNotificationPermissionRationaleVariations[] = {
2545 {"- Show rationale UI on next startup",
2546 kNotificationPermissionRationale_show_dialog_next_start,
2547 std::size(kNotificationPermissionRationale_show_dialog_next_start),
2551 const FeatureEntry::FeatureParam kWebFeed_accelerator[] = {
2552 {"intro_style", "accelerator"}};
2554 const FeatureEntry::FeatureParam kWebFeed_IPH[] = {{"intro_style", "IPH"}};
2556 const FeatureEntry::FeatureVariation kWebFeedVariations[] = {
2557 {"accelerator recommendations", kWebFeed_accelerator,
2558 std::size(kWebFeed_accelerator), nullptr},
2559 {"IPH recommendations", kWebFeed_IPH, std::size(kWebFeed_IPH), nullptr},
2562 const FeatureEntry::FeatureParam kWebFeedAwareness_new_animation[] = {
2563 {"awareness_style", "new_animation"}};
2564 const FeatureEntry::FeatureParam kWebFeedAwareness_new_animation_no_limit[] = {
2565 {"awareness_style", "new_animation_no_limit"}};
2567 const FeatureEntry::FeatureParam kWebFeedAwareness_IPH[] = {
2568 {"awareness_style", "IPH"}};
2570 const FeatureEntry::FeatureVariation kWebFeedAwarenessVariations[] = {
2571 {"new animation", kWebFeedAwareness_new_animation,
2572 std::size(kWebFeedAwareness_new_animation), nullptr},
2573 {"new animation rate limit off", kWebFeedAwareness_new_animation_no_limit,
2574 std::size(kWebFeedAwareness_new_animation_no_limit), nullptr},
2575 {"IPH and dot", kWebFeedAwareness_IPH, std::size(kWebFeedAwareness_IPH),
2579 const FeatureEntry::FeatureParam kFeedCloseRefresh_Open[] = {
2580 {"require_interaction", "false"}};
2582 const FeatureEntry::FeatureParam kFeedCloseRefresh_Interact[] = {
2583 {"require_interaction", "true"}};
2585 const FeatureEntry::FeatureVariation kFeedCloseRefreshVariations[] = {
2586 {"Open", kFeedCloseRefresh_Open, std::size(kFeedCloseRefresh_Open),
2588 {"Interact", kFeedCloseRefresh_Interact,
2589 std::size(kFeedCloseRefresh_Interact), nullptr},
2592 #endif // BUILDFLAG(IS_ANDROID)
2594 #if BUILDFLAG(IS_ANDROID)
2595 const FeatureEntry::FeatureParam kAddToHomescreen_UseTextBubble[] = {
2596 {"use_text_bubble", "true"}};
2597 const FeatureEntry::FeatureParam kAddToHomescreen_UseMessage[] = {
2598 {"use_message", "true"}};
2600 const FeatureEntry::FeatureVariation kAddToHomescreenIPHVariations[] = {
2601 {"Use Text Bubble", kAddToHomescreen_UseTextBubble,
2602 std::size(kAddToHomescreen_UseTextBubble), nullptr},
2603 {"Use Message", kAddToHomescreen_UseMessage,
2604 std::size(kAddToHomescreen_UseMessage), nullptr}};
2607 #if BUILDFLAG(IS_ANDROID)
2608 const FeatureEntry::FeatureParam
2609 kAutofillUseMobileLabelDisambiguationShowAll[] = {
2610 {autofill::features::kAutofillUseMobileLabelDisambiguationParameterName,
2611 autofill::features::
2612 kAutofillUseMobileLabelDisambiguationParameterShowAll}};
2613 const FeatureEntry::FeatureParam
2614 kAutofillUseMobileLabelDisambiguationShowOne[] = {
2615 {autofill::features::kAutofillUseMobileLabelDisambiguationParameterName,
2616 autofill::features::
2617 kAutofillUseMobileLabelDisambiguationParameterShowOne}};
2619 const FeatureEntry::FeatureVariation
2620 kAutofillUseMobileLabelDisambiguationVariations[] = {
2621 {"(show all)", kAutofillUseMobileLabelDisambiguationShowAll,
2622 std::size(kAutofillUseMobileLabelDisambiguationShowAll), nullptr},
2623 {"(show one)", kAutofillUseMobileLabelDisambiguationShowOne,
2624 std::size(kAutofillUseMobileLabelDisambiguationShowOne), nullptr}};
2625 #endif // BUILDFLAG(IS_ANDROID)
2627 constexpr FeatureEntry::FeatureParam kStorageAccessAPI_WithPrompt[] = {
2628 {"storage_access_api_auto_deny_outside_fps", "false"}};
2630 const FeatureEntry::FeatureVariation kStorageAccessAPIVariations[] = {
2631 {"(with prompt)", kStorageAccessAPI_WithPrompt,
2632 std::size(kStorageAccessAPI_WithPrompt), nullptr}};
2634 #if BUILDFLAG(IS_ANDROID)
2635 const FeatureEntry::FeatureParam kLensCameraAssistedSearchLensButtonStart[] = {
2636 {"searchBoxStartVariantForLensCameraAssistedSearch", "true"}};
2638 const FeatureEntry::FeatureParam kLensCameraAssistedSearchLensButtonEnd[] = {
2639 {"searchBoxStartVariantForLensCameraAssistedSearch", "false"}};
2641 const FeatureEntry::FeatureParam
2642 kLensCameraAssistedSkipAgsaVersionCheckEnabled[] = {
2643 {"skipAgsaVersionCheck", "true"}};
2645 const FeatureEntry::FeatureParam
2646 kLensCameraAssistedSkipAgsaVersionCheckDisabled[] = {
2647 {"skipAgsaVersionCheck", "false"}};
2649 const FeatureEntry::FeatureParam kLensCameraAssistedSearchOnTablet[] = {
2650 {"enableCameraAssistedSearchOnTablet", "true"}};
2652 const FeatureEntry::FeatureVariation kLensCameraAssistedSearchVariations[] = {
2653 {"(Lens then Mic)", kLensCameraAssistedSearchLensButtonStart,
2654 std::size(kLensCameraAssistedSearchLensButtonStart), nullptr},
2655 {"(Mic then Lens)", kLensCameraAssistedSearchLensButtonEnd,
2656 std::size(kLensCameraAssistedSearchLensButtonEnd), nullptr},
2657 {"(without AGSA version check)",
2658 kLensCameraAssistedSkipAgsaVersionCheckEnabled,
2659 std::size(kLensCameraAssistedSkipAgsaVersionCheckEnabled), nullptr},
2660 {"(with AGSA version check )",
2661 kLensCameraAssistedSkipAgsaVersionCheckDisabled,
2662 std::size(kLensCameraAssistedSkipAgsaVersionCheckDisabled), nullptr},
2663 {"(on Tablet)", kLensCameraAssistedSearchOnTablet,
2664 std::size(kLensCameraAssistedSearchOnTablet), nullptr}};
2666 const FeatureEntry::FeatureParam kLensContextMenuSearchOnTablet[] = {
2667 {"enableContextMenuSearchOnTablet", "true"}};
2669 const FeatureEntry::FeatureVariation kLensContextMenuSearchVariations[] = {
2670 {"(on Tablet)", kLensContextMenuSearchOnTablet,
2671 std::size(kLensContextMenuSearchOnTablet), nullptr},
2674 const FeatureEntry::FeatureParam kContextMenuSearchImageWithGoogle[] = {
2675 {"useLensContextMenuAlternateText1", "true"}};
2677 const FeatureEntry::FeatureParam kContextMenuSearchInsideImageWithGoogle[] = {
2678 {"useLensContextMenuAlternateText2", "true"}};
2680 const FeatureEntry::FeatureVariation
2681 kContextMenuGoogleLensSearchOptimizationVariations[] = {
2682 {"Context Menu: Search image With Google",
2683 kContextMenuSearchImageWithGoogle,
2684 std::size(kContextMenuSearchImageWithGoogle), nullptr},
2685 {"Context Menu: Search inside image With Google",
2686 kContextMenuSearchInsideImageWithGoogle,
2687 std::size(kContextMenuSearchInsideImageWithGoogle), nullptr},
2690 #endif // BUILDFLAG(IS_ANDROID)
2692 const FeatureEntry::Choice kNotificationSchedulerChoices[] = {
2693 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
2694 {flag_descriptions::
2695 kNotificationSchedulerImmediateBackgroundTaskDescription,
2696 notifications::switches::kNotificationSchedulerImmediateBackgroundTask,
2700 #if BUILDFLAG(IS_ANDROID)
2702 const FeatureEntry::FeatureParam
2703 kOmniboxModernizeVisualUpdateExcludeTabletsSmallMargin[] = {
2704 {"enable_modernize_visual_update_on_tablet", "false"},
2705 {"modernize_visual_update_active_color_on_omnibox", "true"},
2706 {"modernize_visual_update_small_bottom_margin", "true"}};
2708 const FeatureEntry::FeatureParam
2709 kOmniboxModernizeVisualUpdateExcludeTabletsSmallerMarginsMergeClipboard[] =
2710 {{"enable_modernize_visual_update_on_tablet", "false"},
2711 {"modernize_visual_update_active_color_on_omnibox", "true"},
2712 {"modernize_visual_update_smaller_margins", "true"},
2713 {"modernize_visual_update_merge_clipboard_on_ntp", "true"}};
2715 const FeatureEntry::FeatureParam
2716 kOmniboxModernizeVisualUpdateExcludeTabletsSmallestMargins[] = {
2717 {"enable_modernize_visual_update_on_tablet", "false"},
2718 {"modernize_visual_update_active_color_on_omnibox", "true"},
2719 {"modernize_visual_update_smallest_margins", "true"},
2720 {"modernize_visual_update_merge_clipboard_on_ntp", "false"}};
2722 const FeatureEntry::FeatureParam
2723 kOmniboxModernizeVisualUpdateExcludeTabletsSmallestMarginsMergeClipboard[] =
2724 {{"enable_modernize_visual_update_on_tablet", "false"},
2725 {"modernize_visual_update_active_color_on_omnibox", "true"},
2726 {"modernize_visual_update_smallest_margins", "true"},
2727 {"modernize_visual_update_merge_clipboard_on_ntp", "true"}};
2729 const FeatureEntry::FeatureParam kOmniboxModernizeVisualUpdateIncludeTablets[] =
2730 {{"enable_modernize_visual_update_on_tablet", "true"},
2731 {"modernize_visual_update_active_color_on_omnibox", "true"},
2732 {"modernize_visual_update_smallest_margins", "true"},
2733 {"modernize_visual_update_merge_clipboard_on_ntp", "true"}};
2735 const FeatureEntry::FeatureVariation kOmniboxModernizeVisualUpdateVariations[] = {
2736 {"(Small vertical margin)",
2737 kOmniboxModernizeVisualUpdateExcludeTabletsSmallMargin,
2738 std::size(kOmniboxModernizeVisualUpdateExcludeTabletsSmallMargin),
2740 {"(Smaller margins, merge clipboard)",
2741 kOmniboxModernizeVisualUpdateExcludeTabletsSmallerMarginsMergeClipboard,
2743 kOmniboxModernizeVisualUpdateExcludeTabletsSmallerMarginsMergeClipboard),
2745 {"(Smallest margins, merge clipboard)",
2746 kOmniboxModernizeVisualUpdateExcludeTabletsSmallestMarginsMergeClipboard,
2748 kOmniboxModernizeVisualUpdateExcludeTabletsSmallestMarginsMergeClipboard),
2750 {"(Smallest margins, don't merge clipboard)",
2751 kOmniboxModernizeVisualUpdateExcludeTabletsSmallestMargins,
2752 std::size(kOmniboxModernizeVisualUpdateExcludeTabletsSmallestMargins),
2754 {"(Tablet)", kOmniboxModernizeVisualUpdateIncludeTablets,
2755 std::size(kOmniboxModernizeVisualUpdateIncludeTablets), nullptr},
2758 const FeatureEntry::FeatureParam kPhotoPickerAdoptionStudyActionGetContent[] = {
2759 {"use_action_get_content", "true"}};
2760 const FeatureEntry::FeatureParam kPhotoPickerAdoptionStudyActionPickImages[] = {
2761 {"use_action_pick_images", "true"}};
2762 const FeatureEntry::FeatureParam
2763 kPhotoPickerAdoptionStudyActionPickImagesPlus[] = {
2764 {"use_action_pick_images_plus", "true"}};
2765 const FeatureEntry::FeatureParam
2766 kPhotoPickerAdoptionStudyChromePickerWithoutBrowse[] = {
2767 {"chrome_picker_suppress_browse", "true"}};
2769 const FeatureEntry::FeatureVariation
2770 kPhotoPickerAdoptionStudyFeatureVariations[] = {
2771 {"(Android Picker w/ACTION_GET_CONTENT)",
2772 kPhotoPickerAdoptionStudyActionGetContent,
2773 std::size(kPhotoPickerAdoptionStudyActionGetContent), nullptr},
2774 {"(Android Picker w/ACTION_PICK_IMAGES)",
2775 kPhotoPickerAdoptionStudyActionPickImages,
2776 std::size(kPhotoPickerAdoptionStudyActionPickImages), nullptr},
2777 {"(Android Picker w/ACTION_PICK_IMAGES Plus)",
2778 kPhotoPickerAdoptionStudyActionPickImagesPlus,
2779 std::size(kPhotoPickerAdoptionStudyActionPickImagesPlus), nullptr},
2780 {"(Chrome Picker without Browse)",
2781 kPhotoPickerAdoptionStudyChromePickerWithoutBrowse,
2782 std::size(kPhotoPickerAdoptionStudyChromePickerWithoutBrowse),
2785 const FeatureEntry::FeatureParam kAuxiliarySearchDonation_MaxDonation_20[] = {
2786 {chrome::android::kAuxiliarySearchMaxBookmarksCountParam.name, "20"},
2787 {chrome::android::kAuxiliarySearchMaxTabsCountParam.name, "20"}};
2788 const FeatureEntry::FeatureParam kAuxiliarySearchDonation_MaxDonation_100[] = {
2789 {chrome::android::kAuxiliarySearchMaxBookmarksCountParam.name, "100"},
2790 {chrome::android::kAuxiliarySearchMaxTabsCountParam.name, "100"}};
2791 const FeatureEntry::FeatureParam kAuxiliarySearchDonation_MaxDonation_200[] = {
2792 {chrome::android::kAuxiliarySearchMaxBookmarksCountParam.name, "200"},
2793 {chrome::android::kAuxiliarySearchMaxTabsCountParam.name, "200"}};
2794 const FeatureEntry::FeatureParam kAuxiliarySearchDonation_MaxDonation_500[] = {
2795 {chrome::android::kAuxiliarySearchMaxBookmarksCountParam.name, "500"},
2796 {chrome::android::kAuxiliarySearchMaxTabsCountParam.name, "500"}};
2797 const FeatureEntry::FeatureVariation kAuxiliarySearchDonationVariations[] = {
2798 {"50 counts", kAuxiliarySearchDonation_MaxDonation_20,
2799 std::size(kAuxiliarySearchDonation_MaxDonation_20), nullptr},
2800 {"100 counts", kAuxiliarySearchDonation_MaxDonation_100,
2801 std::size(kAuxiliarySearchDonation_MaxDonation_100), nullptr},
2802 {"200 counts", kAuxiliarySearchDonation_MaxDonation_200,
2803 std::size(kAuxiliarySearchDonation_MaxDonation_200), nullptr},
2804 {"500 counts", kAuxiliarySearchDonation_MaxDonation_500,
2805 std::size(kAuxiliarySearchDonation_MaxDonation_500), nullptr},
2807 #endif // BUILDFLAG(IS_ANDROID)
2809 // TODO(crbug.com/991082,1015377): Remove after proper support for back/forward
2810 // cache is implemented.
2811 const FeatureEntry::FeatureParam kBackForwardCache_ForceCaching[] = {
2812 {"TimeToLiveInBackForwardCacheInSeconds", "300"},
2813 {"should_ignore_blocklists", "true"}};
2815 const FeatureEntry::FeatureVariation kBackForwardCacheVariations[] = {
2816 {"force caching all pages (experimental)", kBackForwardCache_ForceCaching,
2817 std::size(kBackForwardCache_ForceCaching), nullptr},
2820 const FeatureEntry::FeatureParam kPerformanceSettingsPreloadingSubpage_V1[] = {
2821 {"use_v2_preloading_subpage", "false"}};
2823 const FeatureEntry::FeatureVariation
2824 kPerformanceSettingsPreloadingSubpageVariations[] = {
2825 {"without toggle button", kPerformanceSettingsPreloadingSubpage_V1,
2826 std::size(kPerformanceSettingsPreloadingSubpage_V1), nullptr},
2829 const FeatureEntry::FeatureParam kRenderDocument_Subframe[] = {
2830 {"level", "subframe"}};
2831 const FeatureEntry::FeatureParam kRenderDocument_AllFrames[] = {
2832 {"level", "all-frames"}};
2834 const FeatureEntry::FeatureVariation kRenderDocumentVariations[] = {
2835 {"Swap RenderFrameHosts on same-site navigations from subframes and "
2836 "crashed frames (experimental)",
2837 kRenderDocument_Subframe, std::size(kRenderDocument_Subframe), nullptr},
2838 {"Swap RenderFrameHosts on same-site navigations from any frame "
2840 kRenderDocument_AllFrames, std::size(kRenderDocument_AllFrames), nullptr},
2843 #if BUILDFLAG(IS_ANDROID)
2844 const FeatureEntry::Choice kWebOtpBackendChoices[] = {
2845 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
2846 {flag_descriptions::kWebOtpBackendSmsVerification, switches::kWebOtpBackend,
2847 switches::kWebOtpBackendSmsVerification},
2848 {flag_descriptions::kWebOtpBackendUserConsent, switches::kWebOtpBackend,
2849 switches::kWebOtpBackendUserConsent},
2850 {flag_descriptions::kWebOtpBackendAuto, switches::kWebOtpBackend,
2851 switches::kWebOtpBackendAuto},
2854 const FeatureEntry::Choice kQueryTilesCountryChoices[] = {
2855 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
2856 {flag_descriptions::kQueryTilesCountryCodeUS,
2857 query_tiles::switches::kQueryTilesCountryCode, "US"},
2858 {flag_descriptions::kQueryTilesCountryCodeIndia,
2859 query_tiles::switches::kQueryTilesCountryCode, "IN"},
2860 {flag_descriptions::kQueryTilesCountryCodeBrazil,
2861 query_tiles::switches::kQueryTilesCountryCode, "BR"},
2862 {flag_descriptions::kQueryTilesCountryCodeNigeria,
2863 query_tiles::switches::kQueryTilesCountryCode, "NG"},
2864 {flag_descriptions::kQueryTilesCountryCodeIndonesia,
2865 query_tiles::switches::kQueryTilesCountryCode, "ID"},
2868 #endif // BUILDFLAG(IS_ANDROID)
2870 // The choices for --enable-download-warning-improvements. This really should
2871 // just be a SINGLE_VALUE_TYPE, but it is misleading to have the choices be
2872 // labeled "Disabled"/"Enabled". So instead this is made to be a
2873 // MULTI_VALUE_TYPE with choices "Default"/"Enabled".
2874 const FeatureEntry::Choice kDownloadWarningImprovementsChoices[] = {
2875 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
2876 {flags_ui::kGenericExperimentChoiceEnabled,
2877 switches::kEnableDownloadWarningImprovements, ""},
2880 // The choices for --enable-experimental-cookie-features. This really should
2881 // just be a SINGLE_VALUE_TYPE, but it is misleading to have the choices be
2882 // labeled "Disabled"/"Enabled". So instead this is made to be a
2883 // MULTI_VALUE_TYPE with choices "Default"/"Enabled".
2884 const FeatureEntry::Choice kEnableExperimentalCookieFeaturesChoices[] = {
2885 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
2886 {flags_ui::kGenericExperimentChoiceEnabled,
2887 switches::kEnableExperimentalCookieFeatures, ""},
2890 #if BUILDFLAG(IS_CHROMEOS_ASH)
2891 const FeatureEntry::Choice kFrameThrottleFpsChoices[] = {
2892 {flag_descriptions::kFrameThrottleFpsDefault, "", ""},
2893 {flag_descriptions::kFrameThrottleFps5, ash::switches::kFrameThrottleFps,
2895 {flag_descriptions::kFrameThrottleFps10, ash::switches::kFrameThrottleFps,
2897 {flag_descriptions::kFrameThrottleFps15, ash::switches::kFrameThrottleFps,
2899 {flag_descriptions::kFrameThrottleFps20, ash::switches::kFrameThrottleFps,
2901 {flag_descriptions::kFrameThrottleFps25, ash::switches::kFrameThrottleFps,
2903 {flag_descriptions::kFrameThrottleFps30, ash::switches::kFrameThrottleFps,
2905 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
2907 const FeatureEntry::FeatureParam kDrawPredictedPointExperiment1Point12Ms[] = {
2908 {"predicted_points", features::kDraw1Point12Ms}};
2909 const FeatureEntry::FeatureParam kDrawPredictedPointExperiment2Points6Ms[] = {
2910 {"predicted_points", features::kDraw2Points6Ms}};
2911 const FeatureEntry::FeatureParam kDrawPredictedPointExperiment1Point6Ms[] = {
2912 {"predicted_points", features::kDraw1Point6Ms}};
2913 const FeatureEntry::FeatureParam kDrawPredictedPointExperiment2Points3Ms[] = {
2914 {"predicted_points", features::kDraw2Points3Ms}};
2916 const FeatureEntry::FeatureVariation kDrawPredictedPointVariations[] = {
2917 {flag_descriptions::kDraw1PredictedPoint12Ms,
2918 kDrawPredictedPointExperiment1Point12Ms,
2919 std::size(kDrawPredictedPointExperiment1Point12Ms), nullptr},
2920 {flag_descriptions::kDraw2PredictedPoints6Ms,
2921 kDrawPredictedPointExperiment2Points6Ms,
2922 std::size(kDrawPredictedPointExperiment2Points6Ms), nullptr},
2923 {flag_descriptions::kDraw1PredictedPoint6Ms,
2924 kDrawPredictedPointExperiment1Point6Ms,
2925 std::size(kDrawPredictedPointExperiment1Point6Ms), nullptr},
2926 {flag_descriptions::kDraw2PredictedPoints3Ms,
2927 kDrawPredictedPointExperiment2Points3Ms,
2928 std::size(kDrawPredictedPointExperiment2Points3Ms), nullptr}};
2930 #if BUILDFLAG(IS_CHROMEOS_ASH)
2931 const FeatureEntry::Choice kForceControlFaceAeChoices[] = {
2932 {"Default", "", ""},
2933 {"Enable", media::switches::kForceControlFaceAe, "enable"},
2934 {"Disable", media::switches::kForceControlFaceAe, "disable"}};
2936 const FeatureEntry::Choice kAutoFramingOverrideChoices[] = {
2937 {"Default", "", ""},
2938 {"Force enabled", media::switches::kAutoFramingOverride,
2939 media::switches::kAutoFramingForceEnabled},
2940 {"Force disabled", media::switches::kAutoFramingOverride,
2941 media::switches::kAutoFramingForceDisabled}};
2944 #if BUILDFLAG(IS_CHROMEOS_ASH)
2945 const FeatureEntry::Choice kCrostiniContainerChoices[] = {
2946 {"Default", "", ""},
2947 {"Buster", crostini::kCrostiniContainerFlag, "buster"},
2948 {"Bullseye", crostini::kCrostiniContainerFlag, "bullseye"},
2949 {"Bookworm", crostini::kCrostiniContainerFlag, "bookworm"},
2951 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
2953 #if BUILDFLAG(IS_ANDROID)
2954 // The variations of --metrics-settings-android.
2955 const FeatureEntry::FeatureParam kMetricsSettingsAndroidAlternativeOne[] = {
2958 const FeatureEntry::FeatureParam kMetricsSettingsAndroidAlternativeTwo[] = {
2961 const FeatureEntry::FeatureVariation kMetricsSettingsAndroidVariations[] = {
2962 {"Alternative FRE 1", kMetricsSettingsAndroidAlternativeOne,
2963 std::size(kMetricsSettingsAndroidAlternativeOne), nullptr},
2964 {"Alternative FRE 2", kMetricsSettingsAndroidAlternativeTwo,
2965 std::size(kMetricsSettingsAndroidAlternativeTwo), nullptr},
2967 #endif // BUILDFLAG(IS_ANDROID)
2969 #if !BUILDFLAG(IS_ANDROID)
2970 // SCT Auditing feature variations.
2971 const FeatureEntry::FeatureParam kSCTAuditingSamplingRateNone[] = {
2972 {"sampling_rate", "0.0"}};
2973 const FeatureEntry::FeatureParam kSCTAuditingSamplingRateAlternativeOne[] = {
2974 {"sampling_rate", "0.0001"}};
2975 const FeatureEntry::FeatureParam kSCTAuditingSamplingRateAlternativeTwo[] = {
2976 {"sampling_rate", "0.001"}};
2978 const FeatureEntry::FeatureVariation kSCTAuditingVariations[] = {
2979 {"Sampling rate 0%", kSCTAuditingSamplingRateNone,
2980 std::size(kSCTAuditingSamplingRateNone), nullptr},
2981 {"Sampling rate 0.01%", kSCTAuditingSamplingRateAlternativeOne,
2982 std::size(kSCTAuditingSamplingRateAlternativeOne), nullptr},
2983 {"Sampling rate 0.1%", kSCTAuditingSamplingRateAlternativeTwo,
2984 std::size(kSCTAuditingSamplingRateAlternativeTwo), nullptr},
2986 #endif // !BUILDFLAG(IS_ANDROID)
2988 #if BUILDFLAG(IS_ANDROID)
2989 // The variations of ContentLanguagesInLanguagePicker.
2990 const FeatureEntry::FeatureParam
2991 kContentLanguagesInLanguagePickerDisableObservers[] = {
2992 {language::kContentLanguagesDisableObserversParam, "true"}};
2994 const FeatureEntry::FeatureVariation
2995 kContentLanguagesInLanguaePickerVariations[] = {
2996 {"Without observers", kContentLanguagesInLanguagePickerDisableObservers,
2997 std::size(kContentLanguagesInLanguagePickerDisableObservers), nullptr},
2999 #endif // BUILDFLAG(IS_ANDROID)
3001 #if BUILDFLAG(IS_ANDROID)
3002 // The variations of TranslateMessageUI
3003 const FeatureEntry::FeatureParam kTranslateMessageUISnackbar[] = {
3004 {translate::kTranslateMessageUISnackbarParam, "true"}};
3006 const FeatureEntry::FeatureVariation kTranslateMessageUIVariations[] = {
3007 {"With Snackbar", kTranslateMessageUISnackbar,
3008 std::size(kTranslateMessageUISnackbar), nullptr}};
3009 #endif // BUILDFLAG(IS_ANDROID)
3011 #if BUILDFLAG(IS_CHROMEOS_ASH)
3012 const FeatureEntry::FeatureParam kProductivityLauncher_WithoutContinue[] = {
3013 {"enable_continue", "false"}};
3015 const FeatureEntry::FeatureVariation kProductivityLauncherVariations[] = {
3016 {"without Continue", kProductivityLauncher_WithoutContinue,
3017 std::size(kProductivityLauncher_WithoutContinue), nullptr}};
3019 const FeatureEntry::FeatureParam kLauncherItemSuggest_LongDelay10Mins[] = {
3020 {"long_delay_minutes", "10"}};
3021 const FeatureEntry::FeatureParam kLauncherItemSuggest_LongDelay12Hours[] = {
3022 {"long_delay_minutes", "720"}};
3023 const FeatureEntry::FeatureParam kLauncherItemSuggest_LongDelay24Hours[] = {
3024 {"long_delay_minutes", "1440"}};
3025 const FeatureEntry::FeatureParam kLauncherItemSuggest_LongDelay36Hours[] = {
3026 {"long_delay_minutes", "2160"}};
3027 const FeatureEntry::FeatureParam kLauncherItemSuggest_LongDelay48Hours[] = {
3028 {"long_delay_minutes", "2880"}};
3029 const FeatureEntry::FeatureParam kLauncherItemSuggest_LongDelay60Hours[] = {
3030 {"long_delay_minutes", "3600"}};
3031 const FeatureEntry::FeatureParam kLauncherItemSuggest_LongDelay72Hours[] = {
3032 {"long_delay_minutes", "4320"}};
3034 const FeatureEntry::FeatureVariation kLauncherItemSuggestVariations[] = {
3035 {"with 10 minute long delay", kLauncherItemSuggest_LongDelay10Mins,
3036 std::size(kLauncherItemSuggest_LongDelay10Mins), nullptr},
3037 {"with 12 hour long delay", kLauncherItemSuggest_LongDelay12Hours,
3038 std::size(kLauncherItemSuggest_LongDelay12Hours), nullptr},
3039 {"with 24 hour long delay", kLauncherItemSuggest_LongDelay24Hours,
3040 std::size(kLauncherItemSuggest_LongDelay24Hours), nullptr},
3041 {"with 36 hour long delay", kLauncherItemSuggest_LongDelay36Hours,
3042 std::size(kLauncherItemSuggest_LongDelay36Hours), nullptr},
3043 {"with 48 hour long delay", kLauncherItemSuggest_LongDelay48Hours,
3044 std::size(kLauncherItemSuggest_LongDelay48Hours), nullptr},
3045 {"with 60 hour long delay", kLauncherItemSuggest_LongDelay60Hours,
3046 std::size(kLauncherItemSuggest_LongDelay60Hours), nullptr},
3047 {"with 72 hour long delay", kLauncherItemSuggest_LongDelay72Hours,
3048 std::size(kLauncherItemSuggest_LongDelay72Hours), nullptr}};
3050 const FeatureEntry::FeatureParam kEolIncentiveOffer[] = {
3051 {"incentive_type", "offer"}};
3052 const FeatureEntry::FeatureParam kEolIncentiveNoOffer[] = {
3053 {"incentive_type", "no_offer"}};
3055 const FeatureEntry::FeatureVariation kEolIncentiveVariations[] = {
3056 {"with offer", kEolIncentiveOffer, std::size(kEolIncentiveOffer), nullptr},
3057 {"with no offer", kEolIncentiveNoOffer, std::size(kEolIncentiveNoOffer),
3060 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
3062 #if BUILDFLAG(IS_CHROMEOS)
3063 constexpr char kTaskManagerEndProcessDisabledForExtensionInternalName[] =
3064 "enable-task-manager-end-process-disabled-for-extension";
3065 #endif // BUILDFLAG(IS_CHROMEOS)
3067 #if BUILDFLAG(IS_CHROMEOS_ASH)
3068 constexpr char kWallpaperFastRefreshInternalName[] = "wallpaper-fast-refresh";
3069 constexpr char kWallpaperGooglePhotosSharedAlbumsInternalName[] =
3070 "wallpaper-google-photos-shared-albums";
3071 constexpr char kWallpaperPerDeskName[] = "per-desk-wallpaper";
3072 constexpr char kTimeOfDayWallpaperInternalName[] = "time-of-day-wallpaper";
3073 constexpr char kTimeOfDayScreenSaverInternalName[] = "time-of-day-screen-saver";
3074 constexpr char kTimeOfDayDlcInternalName[] = "time-of-day-dlc";
3075 constexpr char kGlanceablesV2InternalName[] = "glanceables-v2";
3076 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
3078 #if BUILDFLAG(IS_CHROMEOS_ASH)
3079 constexpr char kBorealisBigGlInternalName[] = "borealis-big-gl";
3080 constexpr char kBorealisDGPUInternalName[] = "borealis-dgpu";
3081 constexpr char kBorealisForceBetaClientInternalName[] =
3082 "borealis-force-beta-client";
3083 constexpr char kBorealisForceDoubleScaleInternalName[] =
3084 "borealis-force-double-scale";
3085 constexpr char kBorealisLinuxModeInternalName[] = "borealis-linux-mode";
3086 // This differs slightly from its symbol's name since "enabled" is used
3087 // internally to refer to whether borealis is installed or not.
3088 constexpr char kBorealisPermittedInternalName[] = "borealis-enabled";
3089 constexpr char kBorealisProvisionInternalName[] = "borealis-provision";
3090 constexpr char kBorealisWebUIInstallerInternalName[] =
3091 "borealis-web-ui-installer";
3092 constexpr char kVmPerBootShaderCacheName[] = "vm-per-boot-shader-cache";
3093 constexpr char kClipboardHistoryLongpressInternalName[] =
3094 "clipboard-history-longpress";
3095 constexpr char kClipboardHistoryRefreshInternalName[] =
3096 "clipboard-history-refresh";
3097 constexpr char kClipboardHistoryUrlTitlesInternalName[] =
3098 "clipboard-history-url-titles";
3099 constexpr char kBluetoothUseFlossInternalName[] = "bluetooth-use-floss";
3100 constexpr char kEnableSuspendToDiskInternalName[] = "enable-suspend-to-disk";
3101 constexpr char kEnableSuspendToDiskAllowS4InternalName[] =
3102 "enable-suspend-to-disk-allow-s4";
3103 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
3105 #if BUILDFLAG(IS_ANDROID)
3106 const FeatureEntry::FeatureParam kBookmarksRefreshVisuals[] = {
3107 {"bookmark_visuals_enabled", "true"}};
3108 const FeatureEntry::FeatureParam kBookmarksRefreshCompactVisuals[] = {
3109 {"bookmark_visuals_enabled", "true"},
3110 {"bookmark_compact_visuals_enabled", "true"}};
3111 const FeatureEntry::FeatureParam kBookmarksRefreshAppMenu[] = {
3112 {"bookmark_in_app_menu", "true"}};
3113 const FeatureEntry::FeatureParam kBookmarksRefreshNormal[] = {
3114 {"bookmark_visuals_enabled", "true"},
3115 {"bookmark_in_app_menu", "true"}};
3116 const FeatureEntry::FeatureParam kBookmarksRefreshCompact[] = {
3117 {"bookmark_visuals_enabled", "true"},
3118 {"bookmark_compact_visuals_enabled", "true"},
3119 {"bookmark_in_app_menu", "true"}};
3121 const FeatureEntry::FeatureVariation kBookmarksRefreshVariations[] = {
3122 {"(enabled w/ visuals)", kBookmarksRefreshNormal,
3123 std::size(kBookmarksRefreshNormal), nullptr},
3124 {"(enabled w/ compact visuals)", kBookmarksRefreshCompact,
3125 std::size(kBookmarksRefreshCompact), nullptr},
3126 {"(visuals only)", kBookmarksRefreshVisuals,
3127 std::size(kBookmarksRefreshVisuals), nullptr},
3128 {"(compact visuals only)", kBookmarksRefreshCompactVisuals,
3129 std::size(kBookmarksRefreshCompactVisuals), nullptr},
3130 {"(app menu item only)", kBookmarksRefreshAppMenu,
3131 std::size(kBookmarksRefreshAppMenu), nullptr}};
3132 #endif // BUILDFLAG(IS_ANDROID)
3134 const FeatureEntry::FeatureParam kLargeFaviconFromGoogle96[] = {
3135 {"favicon_size_in_dip", "96"}};
3136 const FeatureEntry::FeatureParam kLargeFaviconFromGoogle128[] = {
3137 {"favicon_size_in_dip", "128"}};
3139 const FeatureEntry::FeatureVariation kLargeFaviconFromGoogleVariations[] = {
3140 {"(96dip)", kLargeFaviconFromGoogle96, std::size(kLargeFaviconFromGoogle96),
3142 {"(128dip)", kLargeFaviconFromGoogle128,
3143 std::size(kLargeFaviconFromGoogle128), nullptr}};
3145 #if BUILDFLAG(IS_ANDROID)
3146 const FeatureEntry::FeatureParam kRestoreTabsOnFRE_skipFeatureEngagement[] = {
3147 {"skip_feature_engagement", "true"}};
3148 const FeatureEntry::FeatureVariation kRestoreTabsOnFREVariations[] = {
3149 {"- skip feature engagement", kRestoreTabsOnFRE_skipFeatureEngagement,
3150 std::size(kRestoreTabsOnFRE_skipFeatureEngagement), nullptr},
3152 #endif // BUILDFLAG(IS_ANDROID)
3154 #if BUILDFLAG(IS_ANDROID)
3155 const FeatureEntry::FeatureParam kTabStripRedesignFolio[] = {
3156 {"enable_folio", "true"}};
3157 const FeatureEntry::FeatureParam kTabStripRedesignDetached[] = {
3158 {"enable_detached", "true"}};
3159 const FeatureEntry::FeatureParam
3160 kTabStripRedesignDisableNtbAnchorAndBtnStyleFolio[] = {
3161 {"disable_ntb_anchor", "true"},
3162 {"disable_btn_style", "true"},
3163 {"enable_folio", "true"}};
3164 const FeatureEntry::FeatureParam
3165 kTabStripRedesignDisableNtbAnchorAndBtnStyleDetached[] = {
3166 {"disable_ntb_anchor", "true"},
3167 {"disable_btn_style", "true"},
3168 {"enable_detached", "true"}};
3169 const FeatureEntry::FeatureParam kTabStripRedesignDisableButtonStyleFolio[] = {
3170 {"disable_btn_style", "true"},
3171 {"enable_folio", "true"}};
3172 const FeatureEntry::FeatureParam kTabStripRedesignDisableButtonStyleDetached[] =
3173 {{"disable_btn_style", "true"}, {"enable_detached", "true"}};
3175 const FeatureEntry::FeatureVariation kTabStripRedesignVariations[] = {
3176 {"Folio", kTabStripRedesignFolio, std::size(kTabStripRedesignFolio),
3178 {"Detached", kTabStripRedesignDetached,
3179 std::size(kTabStripRedesignDetached), nullptr},
3180 {"Folio NTB Unanchored, Remove Style",
3181 kTabStripRedesignDisableNtbAnchorAndBtnStyleFolio,
3182 std::size(kTabStripRedesignDisableNtbAnchorAndBtnStyleFolio), nullptr},
3183 {"Detached NTB Unanchored, Remove Style",
3184 kTabStripRedesignDisableNtbAnchorAndBtnStyleDetached,
3185 std::size(kTabStripRedesignDisableNtbAnchorAndBtnStyleDetached), nullptr},
3186 {"Folio Remove Button Style", kTabStripRedesignDisableButtonStyleFolio,
3187 std::size(kTabStripRedesignDisableButtonStyleFolio), nullptr},
3188 {"Detached Remove Button Style",
3189 kTabStripRedesignDisableButtonStyleDetached,
3190 std::size(kTabStripRedesignDisableButtonStyleDetached), nullptr}};
3191 #endif // BUILDFLAG(IS_ANDROID)
3193 #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
3194 constexpr FeatureEntry::FeatureParam kIOSPromoPasswordBubbleContextualDirect[] =
3195 {{"activation", "contextual-direct"}};
3196 constexpr FeatureEntry::FeatureParam
3197 kIOSPromoPasswordBubbleContextualIndirect[] = {
3198 {"activation", "contextual-indirect"}};
3199 constexpr FeatureEntry::FeatureParam
3200 kIOSPromoPasswordBubbleNonContextualDirect[] = {
3201 {"activation", "non-contextual-direct"}};
3202 constexpr FeatureEntry::FeatureParam
3203 kIOSPromoPasswordBubbleNonContextualIndirect[] = {
3204 {"activation", "non-contextual-indirect"}};
3205 constexpr FeatureEntry::FeatureParam kIOSPromoPasswordBubbleAlwaysShowDirect[] =
3206 {{"activation", "always-show-direct"}};
3207 constexpr FeatureEntry::FeatureParam
3208 kIOSPromoPasswordBubbleAlwaysShowIndirect[] = {
3209 {"activation", "always-show-indirect"}};
3211 constexpr FeatureEntry::FeatureVariation kIOSPromoPasswordBubbleVariations[] = {
3212 {"contextual & direct activation", kIOSPromoPasswordBubbleContextualDirect,
3213 std::size(kIOSPromoPasswordBubbleContextualDirect), nullptr},
3214 {"contextual & indirect activation",
3215 kIOSPromoPasswordBubbleContextualIndirect,
3216 std::size(kIOSPromoPasswordBubbleContextualIndirect), nullptr},
3217 {"non-contextual & direct activation",
3218 kIOSPromoPasswordBubbleNonContextualDirect,
3219 std::size(kIOSPromoPasswordBubbleNonContextualDirect), nullptr},
3220 {"non-contextual & indirect activation",
3221 kIOSPromoPasswordBubbleNonContextualIndirect,
3222 std::size(kIOSPromoPasswordBubbleNonContextualIndirect), nullptr},
3223 {"always show direct activation", kIOSPromoPasswordBubbleAlwaysShowDirect,
3224 std::size(kIOSPromoPasswordBubbleAlwaysShowDirect), nullptr},
3225 {"always show indirect activation",
3226 kIOSPromoPasswordBubbleAlwaysShowIndirect,
3227 std::size(kIOSPromoPasswordBubbleAlwaysShowIndirect), nullptr}};
3230 const FeatureEntry::FeatureParam kUnthrottledNestedTimeout_NestingLevel = {
3233 const FeatureEntry::FeatureVariation kUnthrottledNestedTimeout_Variations[] = {
3234 {"15", &kUnthrottledNestedTimeout_NestingLevel, 1, nullptr},
3237 constexpr FeatureEntry::FeatureParam kLensFormatOptimizationWebp[] = {
3238 {"use-webp-image-search", "true"},
3239 {"use-webp-region-search", "true"},
3240 {"use-jpeg-region-search", "false"}};
3241 constexpr FeatureEntry::FeatureVariation kLensImageFormatVariations[] = {
3242 {"use Webp", kLensFormatOptimizationWebp,
3243 std::size(kLensFormatOptimizationWebp), nullptr},
3246 constexpr FeatureEntry::FeatureParam kPingLensSequentially[] = {
3247 {"ping-lens-sequentially", "true"}};
3248 constexpr FeatureEntry::FeatureParam kLensPingURL[] = {
3249 {"lens-ping-url", "https://lens.google.com/_/LensWebStandaloneUi/gen204/"}};
3250 constexpr FeatureEntry::FeatureVariation kLensPingVariations[] = {
3251 {"ping sequentially", kPingLensSequentially,
3252 std::size(kPingLensSequentially), nullptr},
3253 {"ping url", kLensPingURL, std::size(kLensPingURL), nullptr},
3256 #if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES)
3257 constexpr FeatureEntry::FeatureParam kCscStagingEnvVariation[] = {
3258 {"companion-homepage-url",
3259 "https://lens-staging.corp.google.com/companion"},
3260 {"companion-image-upload-url",
3261 "https://lens-staging.corp.google.com/v2/upload"}};
3262 constexpr FeatureEntry::FeatureParam kCscClobberVariation[] = {
3263 {"open-links-in-current-tab", "true"},
3265 constexpr FeatureEntry::FeatureParam kCscNewTabVariation[] = {
3266 {"open-links-in-current-tab", "false"},
3269 constexpr FeatureEntry::FeatureVariation kSidePanelCompanionVariations[] = {
3270 {"with staging URL", kCscStagingEnvVariation,
3271 std::size(kCscStagingEnvVariation), nullptr},
3272 {"with clobber", kCscClobberVariation, std::size(kCscClobberVariation),
3274 {"with new tab", kCscNewTabVariation, std::size(kCscNewTabVariation),
3278 const FeatureEntry::Choice kForceCompanionPinnedStateChoices[] = {
3279 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
3280 {"Forced Pinned", companion::switches::kForceCompanionPinnedState,
3282 {"Forced Unpinned", companion::switches::kForceCompanionPinnedState,
3285 #endif // BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES)
3287 #if BUILDFLAG(IS_CHROMEOS_ASH)
3288 const FeatureEntry::Choice kAlwaysEnableHdcpChoices[] = {
3289 {flag_descriptions::kAlwaysEnableHdcpDefault, "", ""},
3290 {flag_descriptions::kAlwaysEnableHdcpType0,
3291 ash::switches::kAlwaysEnableHdcp, "type0"},
3292 {flag_descriptions::kAlwaysEnableHdcpType1,
3293 ash::switches::kAlwaysEnableHdcp, "type1"},
3296 const FeatureEntry::Choice kPrintingPpdChannelChoices[] = {
3297 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
3298 {ash::switches::kPrintingPpdChannelProduction,
3299 ash::switches::kPrintingPpdChannel,
3300 ash::switches::kPrintingPpdChannelProduction},
3301 {ash::switches::kPrintingPpdChannelStaging,
3302 ash::switches::kPrintingPpdChannel,
3303 ash::switches::kPrintingPpdChannelStaging},
3304 {ash::switches::kPrintingPpdChannelDev, ash::switches::kPrintingPpdChannel,
3305 ash::switches::kPrintingPpdChannelDev},
3306 {ash::switches::kPrintingPpdChannelLocalhost,
3307 ash::switches::kPrintingPpdChannel,
3308 ash::switches::kPrintingPpdChannelLocalhost}};
3309 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
3311 // Feature variations for kIsolateSandboxedIframes.
3312 #if !BUILDFLAG(IS_ANDROID)
3313 // TODO(wjmaclean): Add FeatureParams for a per-frame grouping when support
3315 const FeatureEntry::FeatureParam kIsolateSandboxedIframesGroupingPerSite{
3316 "grouping", "per-site"};
3317 const FeatureEntry::FeatureParam kIsolateSandboxedIframesGroupingPerOrigin{
3318 "grouping", "per-origin"};
3319 const FeatureEntry::FeatureParam kIsolateSandboxedIframesGroupingPerDocument{
3320 "grouping", "per-document"};
3321 const FeatureEntry::FeatureVariation
3322 kIsolateSandboxedIframesGroupingVariations[] = {
3323 {"with grouping by URL's site",
3324 &kIsolateSandboxedIframesGroupingPerSite, 1, nullptr},
3325 {"with grouping by URL's origin",
3326 &kIsolateSandboxedIframesGroupingPerOrigin, 1, nullptr},
3327 {"with each sandboxed frame document in its own process",
3328 &kIsolateSandboxedIframesGroupingPerDocument, 1, nullptr},
3330 #endif // !BUILDFLAG(IS_ANDROID)
3332 const FeatureEntry::FeatureParam
3333 kServiceWorkerSkipIgnorableFetchHandler_NotSkip[] = {
3334 {"SkipEmptyFetchHandler", "false"}};
3335 const FeatureEntry::FeatureParam
3336 kServiceWorkerSkipIgnorableFetchHandler_SkipEmpty[] = {
3337 {"SkipEmptyFetchHandler", "true"}};
3338 const FeatureEntry::FeatureVariation
3339 kServiceWorkerSkipIgnorableFetchHandlerVariations[] = {
3340 {"Not Skip", kServiceWorkerSkipIgnorableFetchHandler_NotSkip,
3341 std::size(kServiceWorkerSkipIgnorableFetchHandler_NotSkip), nullptr},
3342 {"Skip Empty", kServiceWorkerSkipIgnorableFetchHandler_SkipEmpty,
3343 std::size(kServiceWorkerSkipIgnorableFetchHandler_SkipEmpty), nullptr},
3346 const FeatureEntry::FeatureParam
3347 kServiceWorkerBypassFetchHandler_MainResource[] = {
3348 {"bypass_for", "main_resource"},
3349 {"strategy", "optin"}};
3350 const FeatureEntry::FeatureParam
3351 kServiceWorkerBypassFetchHandler_RaceNetworkRequest[] = {
3352 {"bypass_for", "all_with_race_network_request"},
3353 {"strategy", "optin"}};
3354 const FeatureEntry::FeatureParam
3355 kServiceWorkerBypassFetchHandler_Subresource[] = {
3356 {"bypass_for", "sub_resource"},
3357 {"strategy", "optin"}};
3358 const FeatureEntry::FeatureVariation
3359 kServiceWorkerBypassFetchHandlerVariations[] = {
3360 {"Main Resource", kServiceWorkerBypassFetchHandler_MainResource,
3361 std::size(kServiceWorkerBypassFetchHandler_MainResource), nullptr},
3362 {"Subesource", kServiceWorkerBypassFetchHandler_Subresource,
3363 std::size(kServiceWorkerBypassFetchHandler_Subresource), nullptr},
3364 {"Race Network Request and Fetch Handler",
3365 kServiceWorkerBypassFetchHandler_RaceNetworkRequest,
3366 std::size(kServiceWorkerBypassFetchHandler_RaceNetworkRequest),
3370 #if !BUILDFLAG(IS_ANDROID)
3372 const FeatureEntry::FeatureParam
3373 kHighEfficiencyMultistateModeShowRecommendedBadge[] = {
3374 {"show_recommended_badge", "true"},
3376 const FeatureEntry::FeatureVariation kHighEfficiencyMultistateModeVariations[] =
3378 {"With Recommended Badge",
3379 kHighEfficiencyMultistateModeShowRecommendedBadge,
3380 std::size(kHighEfficiencyMultistateModeShowRecommendedBadge), nullptr},
3383 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithRing30Opacity[] = {
3384 {"discard_tab_treatment_option", "2"},
3385 {"discard_tab_treatment_opacity", "0.3"}};
3386 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithRing40Opacity[] = {
3387 {"discard_tab_treatment_option", "2"},
3388 {"discard_tab_treatment_opacity", "0.4"}};
3389 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithRing50Opacity[] = {
3390 {"discard_tab_treatment_option", "2"},
3391 {"discard_tab_treatment_opacity", "0.5"}};
3392 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithRing75Opacity[] = {
3393 {"discard_tab_treatment_option", "2"},
3394 {"discard_tab_treatment_opacity", "0.75"}};
3395 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithRing90Opacity[] = {
3396 {"discard_tab_treatment_option", "2"},
3397 {"discard_tab_treatment_opacity", "0.9"}};
3398 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithRing100Opacity[] = {
3399 {"discard_tab_treatment_option", "2"},
3400 {"discard_tab_treatment_opacity", "1.0"}};
3401 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithoutRing30Opacity[] =
3402 {{"discard_tab_treatment_option", "1"},
3403 {"discard_tab_treatment_opacity", "0.3"}};
3404 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithoutRing40Opacity[] =
3405 {{"discard_tab_treatment_option", "1"},
3406 {"discard_tab_treatment_opacity", "0.4"}};
3407 const FeatureEntry::FeatureParam kDiscardedTabTreatmentWithoutRing50Opacity[] =
3408 {{"discard_tab_treatment_option", "1"},
3409 {"discard_tab_treatment_opacity", "0.5"}};
3411 const FeatureEntry::FeatureVariation kDiscardedTabTreatmentVariations[] = {
3412 {"With Ring and 30% Opacity", kDiscardedTabTreatmentWithRing30Opacity,
3413 std::size(kDiscardedTabTreatmentWithRing30Opacity), nullptr},
3414 {"With Ring and 40% Opacity", kDiscardedTabTreatmentWithRing40Opacity,
3415 std::size(kDiscardedTabTreatmentWithRing40Opacity), nullptr},
3416 {"With Ring and 50% Opacity", kDiscardedTabTreatmentWithRing50Opacity,
3417 std::size(kDiscardedTabTreatmentWithRing50Opacity), nullptr},
3418 {"With Ring and 75% Opacity", kDiscardedTabTreatmentWithRing75Opacity,
3419 std::size(kDiscardedTabTreatmentWithRing75Opacity), nullptr},
3420 {"With Ring and 90% Opacity", kDiscardedTabTreatmentWithRing90Opacity,
3421 std::size(kDiscardedTabTreatmentWithRing90Opacity), nullptr},
3422 {"With Ring and 100% Opacity", kDiscardedTabTreatmentWithRing100Opacity,
3423 std::size(kDiscardedTabTreatmentWithRing100Opacity), nullptr},
3424 {"Without Ring and 30% Opacity", kDiscardedTabTreatmentWithoutRing30Opacity,
3425 std::size(kDiscardedTabTreatmentWithoutRing30Opacity), nullptr},
3426 {"Without Ring and 40% Opacity", kDiscardedTabTreatmentWithoutRing40Opacity,
3427 std::size(kDiscardedTabTreatmentWithoutRing40Opacity), nullptr},
3428 {"Without Ring and 50% Opacity", kDiscardedTabTreatmentWithoutRing50Opacity,
3429 std::size(kDiscardedTabTreatmentWithoutRing50Opacity), nullptr},
3432 const FeatureEntry::FeatureParam
3433 kMemoryUsageInHovercardsUpdateTriggerVariations[] = {
3434 {"memory_update_trigger", "navigation"},
3436 const FeatureEntry::FeatureVariation kMemoryUsageInHovercardsVariations[] = {
3437 {"With Update on Navigation",
3438 kMemoryUsageInHovercardsUpdateTriggerVariations,
3439 std::size(kMemoryUsageInHovercardsUpdateTriggerVariations), nullptr},
3442 const FeatureEntry::FeatureParam kMemorySavingsReportingFrequent[] = {
3443 // 100 * 1024 * 1024
3444 {"expanded_high_efficiency_chip_threshold_bytes", "104857600"},
3445 {"expanded_high_efficiency_chip_frequency", "2h"},
3446 {"expanded_high_efficiency_chip_discarded_duration", "1h"}};
3448 const FeatureEntry::FeatureParam kMemorySavingsReportingInfrequent[] = {
3449 // 200 * 1024 * 1024
3450 {"expanded_high_efficiency_chip_threshold_bytes", "209715200"},
3451 {"expanded_high_efficiency_chip_frequency", "1d"},
3452 {"expanded_high_efficiency_chip_discarded_duration", "6h"}};
3454 const FeatureEntry::FeatureParam kMemorySavingsReportingVeryFrequent[] = {
3455 // 100 * 1024 * 1024
3456 {"expanded_high_efficiency_chip_threshold_bytes", "104857600"},
3457 {"expanded_high_efficiency_chip_frequency", "5m"},
3458 {"expanded_high_efficiency_chip_discarded_duration", "5m"}};
3460 const FeatureEntry::FeatureVariation
3461 kHighEfficiencyMemorySavingsReportingVariations[] = {
3462 {"With Frequent Memory Savings Reporting",
3463 kMemorySavingsReportingFrequent,
3464 std::size(kMemorySavingsReportingFrequent), nullptr},
3465 {"With Infrequent Memory Savings Reporting",
3466 kMemorySavingsReportingInfrequent,
3467 std::size(kMemorySavingsReportingInfrequent), nullptr},
3468 {"With Very Frequent Memory Savings Reporting",
3469 kMemorySavingsReportingVeryFrequent,
3470 std::size(kMemorySavingsReportingVeryFrequent), nullptr},
3473 #endif // !BUILDFLAG(IS_ANDROID)
3475 #if BUILDFLAG(IS_CHROMEOS_ASH)
3476 const FeatureEntry::FeatureParam kGalleryAppPdfEditNotificationEditAndSign[] = {
3477 {"text", "Edit and Sign"}};
3478 const FeatureEntry::FeatureParam
3479 kGalleryAppPdfEditNotificationOpenWithGalleryApp[] = {
3480 {"text", "Open with Gallery app"}};
3481 const FeatureEntry::FeatureVariation
3482 kGalleryAppPdfEditNotificationVariations[] = {
3483 {"Edit and Sign", kGalleryAppPdfEditNotificationEditAndSign,
3484 std::size(kGalleryAppPdfEditNotificationEditAndSign), nullptr},
3485 {"Open with Gallery app",
3486 kGalleryAppPdfEditNotificationOpenWithGalleryApp,
3487 std::size(kGalleryAppPdfEditNotificationOpenWithGalleryApp), nullptr}};
3490 #if !BUILDFLAG(IS_ANDROID)
3491 const FeatureEntry::FeatureParam kOsIntegrationSubManagersWriteConfig[] = {
3492 {"stage", "write_config"}};
3493 const FeatureEntry::FeatureParam
3494 kOsIntegrationSubManagersExecuteAndWriteConfig[] = {
3495 {"stage", "execute_and_write_config"}};
3497 const FeatureEntry::FeatureVariation
3498 kOsIntegrationSubManagersConfigVariations[] = {
3499 {"Write Config only", kOsIntegrationSubManagersWriteConfig,
3500 std::size(kOsIntegrationSubManagersWriteConfig), nullptr},
3501 {"Execute and Write Config",
3502 kOsIntegrationSubManagersExecuteAndWriteConfig,
3503 std::size(kOsIntegrationSubManagersExecuteAndWriteConfig), nullptr}};
3504 #endif // !BUILDFLAG(IS_ANDROID)
3506 const FeatureEntry::FeatureParam kWebRtcApmDownmixMethodAverage[] = {
3507 {"method", "average"}};
3508 const FeatureEntry::FeatureParam kWebRtcApmDownmixMethodFirstChannel[] = {
3509 {"method", "first"}};
3510 const FeatureEntry::FeatureVariation kWebRtcApmDownmixMethodVariations[] = {
3511 {"- Average all the input channels", kWebRtcApmDownmixMethodAverage,
3512 std::size(kWebRtcApmDownmixMethodAverage), nullptr},
3513 {"- Use first channel", kWebRtcApmDownmixMethodFirstChannel,
3514 std::size(kWebRtcApmDownmixMethodFirstChannel), nullptr}};
3516 #if !BUILDFLAG(IS_ANDROID)
3517 const FeatureEntry::FeatureParam
3518 kSafetyCheckUnusedSitePermissionsNoDelayParam[] = {
3519 {"unused-site-permissions-no-delay-for-testing", "true"}};
3521 const FeatureEntry::FeatureParam
3522 kSafetyCheckUnusedSitePermissionsWithDelayParam[] = {
3523 {"unused-site-permissions-with-delay-for-testing", "true"}};
3525 const FeatureEntry::FeatureVariation
3526 kSafetyCheckUnusedSitePermissionsVariations[] = {
3527 {"for testing no delay", kSafetyCheckUnusedSitePermissionsNoDelayParam,
3528 std::size(kSafetyCheckUnusedSitePermissionsNoDelayParam), nullptr},
3529 {"for testing with delay",
3530 kSafetyCheckUnusedSitePermissionsWithDelayParam,
3531 std::size(kSafetyCheckUnusedSitePermissionsWithDelayParam), nullptr},
3535 const FeatureEntry::FeatureParam
3536 kPrivacySandboxSettings4ShowSampleDataForTesting[] = {
3537 {privacy_sandbox::kPrivacySandboxSettings4ShowSampleDataForTestingName,
3539 const FeatureEntry::FeatureParam kPrivacySandboxSettings4NoticeRequired[] = {
3540 {privacy_sandbox::kPrivacySandboxSettings4NoticeRequiredName, "true"}};
3541 const FeatureEntry::FeatureParam kPrivacySandboxSettings4ConsentRequired[] = {
3542 {privacy_sandbox::kPrivacySandboxSettings4ConsentRequiredName, "true"}};
3543 const FeatureEntry::FeatureParam kPrivacySandboxSettings4RestrictedNotice[] = {
3544 {privacy_sandbox::kPrivacySandboxSettings4RestrictedNoticeName, "true"},
3545 {privacy_sandbox::kPrivacySandboxSettings4NoticeRequiredName, "true"}};
3546 const FeatureEntry::FeatureParam
3547 kPrivacySandboxSettings4ForceShowConsentForTesting[] = {
3549 kPrivacySandboxSettings4ForceShowConsentForTestingName,
3551 {privacy_sandbox::kPrivacySandboxSettings4ConsentRequiredName, "true"}};
3552 const FeatureEntry::FeatureParam
3553 kPrivacySandboxSettings4ForceShowROWNoticeForTesting[] = {
3555 kPrivacySandboxSettings4ForceShowNoticeRowForTestingName,
3557 {privacy_sandbox::kPrivacySandboxSettings4NoticeRequiredName, "true"}};
3558 const FeatureEntry::FeatureParam
3559 kPrivacySandboxSettings4ForceShowEEANoticeForTesting[] = {
3561 kPrivacySandboxSettings4ForceShowNoticeEeaForTestingName,
3563 {privacy_sandbox::kPrivacySandboxSettings4ConsentRequiredName, "true"}};
3564 const FeatureEntry::FeatureParam
3565 kPrivacySandboxSettings4ForceShowRestrictedNoticeForTesting[] = {
3567 kPrivacySandboxSettings4ForceShowNoticeRestrictedForTestingName,
3569 {privacy_sandbox::kPrivacySandboxSettings4RestrictedNoticeName, "true"},
3570 {privacy_sandbox::kPrivacySandboxSettings4NoticeRequiredName, "true"}};
3571 const FeatureEntry::FeatureParam
3572 kPrivacySandboxSettings4ForceRestrictedUserForTesting[] = {
3573 {privacy_sandbox::kPrivacySandboxSettings4RestrictedNoticeName, "true"},
3575 kPrivacySandboxSettings4ForceRestrictedUserForTestingName,
3578 const FeatureEntry::FeatureVariation kPrivacySandboxSettings4Variations[] = {
3579 {"Sample Data", kPrivacySandboxSettings4ShowSampleDataForTesting,
3580 std::size(kPrivacySandboxSettings4ShowSampleDataForTesting), nullptr},
3581 {"Notice Required", kPrivacySandboxSettings4NoticeRequired,
3582 std::size(kPrivacySandboxSettings4NoticeRequired), nullptr},
3583 {"Consent Required", kPrivacySandboxSettings4ConsentRequired,
3584 std::size(kPrivacySandboxSettings4ConsentRequired), nullptr},
3585 {"Restricted notice", kPrivacySandboxSettings4RestrictedNotice,
3586 std::size(kPrivacySandboxSettings4RestrictedNotice), nullptr},
3587 {"Force show consent", kPrivacySandboxSettings4ForceShowConsentForTesting,
3588 std::size(kPrivacySandboxSettings4ForceShowConsentForTesting), nullptr},
3589 {"Force show ROW notice",
3590 kPrivacySandboxSettings4ForceShowROWNoticeForTesting,
3591 std::size(kPrivacySandboxSettings4ForceShowROWNoticeForTesting), nullptr},
3592 {"Force show EEA notice",
3593 kPrivacySandboxSettings4ForceShowEEANoticeForTesting,
3594 std::size(kPrivacySandboxSettings4ForceShowEEANoticeForTesting), nullptr},
3595 {"Force show Restricted notice",
3596 kPrivacySandboxSettings4ForceShowRestrictedNoticeForTesting,
3597 std::size(kPrivacySandboxSettings4ForceShowRestrictedNoticeForTesting),
3599 {"Force restricted user",
3600 kPrivacySandboxSettings4ForceRestrictedUserForTesting,
3601 std::size(kPrivacySandboxSettings4ForceRestrictedUserForTesting), nullptr},
3604 const FeatureEntry::FeatureParam kTPCPhaseOutFacilitatedTestingControl1[] = {
3605 {tpcd::experiment::kForceEligibleForTestingName, "false"},
3606 {tpcd::experiment::kDisable3PCookiesName, "false"},
3607 {features::kCookieDeprecationTestingDisableAdsAPIsName, "false"},
3608 {features::kCookieDeprecationLabelName, "fake_control_1.1"},
3609 {tpcd::experiment::kVersionName, "9990"}};
3610 const FeatureEntry::FeatureParam kTPCPhaseOutFacilitatedTestingLabelOnly[] = {
3611 {tpcd::experiment::kForceEligibleForTestingName, "false"},
3612 {tpcd::experiment::kDisable3PCookiesName, "false"},
3613 {features::kCookieDeprecationTestingDisableAdsAPIsName, "false"},
3614 {features::kCookieDeprecationLabelName, "fake_label_only_1.1"},
3615 {tpcd::experiment::kVersionName, "9991"}};
3616 const FeatureEntry::FeatureParam kTPCPhaseOutFacilitatedTestingTreatment[] = {
3617 {tpcd::experiment::kForceEligibleForTestingName, "false"},
3618 {tpcd::experiment::kDisable3PCookiesName, "true"},
3619 {features::kCookieDeprecationTestingDisableAdsAPIsName, "false"},
3620 {features::kCookieDeprecationLabelName, "fake_treatment_1.1"},
3621 {tpcd::experiment::kVersionName, "9992"}};
3622 const FeatureEntry::FeatureParam kTPCPhaseOutFacilitatedTestingControl2[] = {
3623 {tpcd::experiment::kForceEligibleForTestingName, "false"},
3624 {tpcd::experiment::kDisable3PCookiesName, "true"},
3625 {features::kCookieDeprecationTestingDisableAdsAPIsName, "true"},
3626 {features::kCookieDeprecationLabelName, "fake_control_2"},
3627 {tpcd::experiment::kVersionName, "9993"}};
3628 const FeatureEntry::FeatureParam kTPCPhaseOutFacilitatedTestingForceControl1[] =
3629 {{tpcd::experiment::kForceEligibleForTestingName, "true"},
3630 {tpcd::experiment::kDisable3PCookiesName, "false"},
3631 {features::kCookieDeprecationTestingDisableAdsAPIsName, "false"},
3632 {features::kCookieDeprecationLabelName, "fake_control_1.1"},
3633 {tpcd::experiment::kVersionName, "9994"}};
3634 const FeatureEntry::FeatureParam
3635 kTPCPhaseOutFacilitatedTestingForceLabelOnly[] = {
3636 {tpcd::experiment::kForceEligibleForTestingName, "true"},
3637 {tpcd::experiment::kDisable3PCookiesName, "false"},
3638 {features::kCookieDeprecationTestingDisableAdsAPIsName, "false"},
3639 {features::kCookieDeprecationLabelName, "fake_label_only_1.1"},
3640 {tpcd::experiment::kVersionName, "9995"}};
3641 const FeatureEntry::FeatureParam
3642 kTPCPhaseOutFacilitatedTestingForceTreatment[] = {
3643 {tpcd::experiment::kForceEligibleForTestingName, "true"},
3644 {tpcd::experiment::kDisable3PCookiesName, "true"},
3645 {features::kCookieDeprecationTestingDisableAdsAPIsName, "false"},
3646 {features::kCookieDeprecationLabelName, "fake_treatment_1.1"},
3647 {tpcd::experiment::kVersionName, "9996"}};
3648 const FeatureEntry::FeatureParam kTPCPhaseOutFacilitatedTestingForceControl2[] =
3649 {{tpcd::experiment::kForceEligibleForTestingName, "true"},
3650 {tpcd::experiment::kDisable3PCookiesName, "true"},
3651 {features::kCookieDeprecationTestingDisableAdsAPIsName, "true"},
3652 {features::kCookieDeprecationLabelName, "fake_control_2"},
3653 {tpcd::experiment::kVersionName, "9997"}};
3655 const FeatureEntry::FeatureVariation
3656 kTPCPhaseOutFacilitatedTestingVariations[] = {
3657 {"Control 1", kTPCPhaseOutFacilitatedTestingControl1,
3658 std::size(kTPCPhaseOutFacilitatedTestingControl1), nullptr},
3659 {"LabelOnly", kTPCPhaseOutFacilitatedTestingLabelOnly,
3660 std::size(kTPCPhaseOutFacilitatedTestingLabelOnly), nullptr},
3661 {"Treatment", kTPCPhaseOutFacilitatedTestingTreatment,
3662 std::size(kTPCPhaseOutFacilitatedTestingTreatment), nullptr},
3663 {"Control 2", kTPCPhaseOutFacilitatedTestingControl2,
3664 std::size(kTPCPhaseOutFacilitatedTestingControl2), nullptr},
3665 {"Force Control 1", kTPCPhaseOutFacilitatedTestingForceControl1,
3666 std::size(kTPCPhaseOutFacilitatedTestingForceControl1), nullptr},
3667 {"Force LabelOnly", kTPCPhaseOutFacilitatedTestingForceLabelOnly,
3668 std::size(kTPCPhaseOutFacilitatedTestingForceLabelOnly), nullptr},
3669 {"Force Treatment", kTPCPhaseOutFacilitatedTestingForceTreatment,
3670 std::size(kTPCPhaseOutFacilitatedTestingForceTreatment), nullptr},
3671 {"Force Control 2", kTPCPhaseOutFacilitatedTestingForceControl2,
3672 std::size(kTPCPhaseOutFacilitatedTestingForceControl2), nullptr},
3675 const FeatureEntry::FeatureParam kTpcdHeuristicsGrantsControl[] = {
3676 {content_settings::features::kTpcdReadHeuristicsGrantsName, "false"}};
3677 const FeatureEntry::FeatureParam kTpcdHeuristicsGrantsCurrentInteraction[] = {
3678 {content_settings::features::kTpcdReadHeuristicsGrantsName, "true"},
3679 {tpcd::experiment::kTpcdWritePopupCurrentInteractionHeuristicsGrantsName,
3681 const FeatureEntry::FeatureParam
3682 kTpcdHeuristicsGrantsCurrentInteractionWithBackfill[] = {
3683 {content_settings::features::kTpcdReadHeuristicsGrantsName, "true"},
3685 kTpcdWritePopupCurrentInteractionHeuristicsGrantsName,
3687 {tpcd::experiment::kTpcdBackfillPopupHeuristicsGrantsName, "30d"}};
3689 const FeatureEntry::FeatureVariation kTpcdHeuristicsGrantsVariations[] = {
3690 {"Control", kTpcdHeuristicsGrantsControl,
3691 std::size(kTpcdHeuristicsGrantsControl), nullptr},
3692 {"Current Interaction", kTpcdHeuristicsGrantsCurrentInteraction,
3693 std::size(kTpcdHeuristicsGrantsCurrentInteraction), nullptr},
3694 {"Current Interaction With Backfill",
3695 kTpcdHeuristicsGrantsCurrentInteractionWithBackfill,
3696 std::size(kTpcdHeuristicsGrantsCurrentInteractionWithBackfill), nullptr}};
3698 #if BUILDFLAG(IS_CHROMEOS_ASH)
3699 const FeatureEntry::FeatureParam kVcSegmentationModelHighResolution[] = {
3700 {"segmentation_model", "high_resolution"},
3703 const FeatureEntry::FeatureParam kVcSegmentationModelLowerResolution[] = {
3704 {"segmentation_model", "lower_resolution"},
3707 const FeatureEntry::FeatureVariation kVcSegmentationModelVariations[] = {
3708 {"High resolution model", kVcSegmentationModelHighResolution,
3709 std::size(kVcSegmentationModelHighResolution), nullptr},
3710 {"Lower resolution model", kVcSegmentationModelLowerResolution,
3711 std::size(kVcSegmentationModelLowerResolution), nullptr},
3714 const FeatureEntry::FeatureParam kVcLightIntensity10[] = {
3715 {"light_intensity", "1.0"},
3718 const FeatureEntry::FeatureParam kVcLightIntensity13[] = {
3719 {"light_intensity", "1.3"},
3722 const FeatureEntry::FeatureParam kVcLightIntensity15[] = {
3723 {"light_intensity", "1.5"},
3726 const FeatureEntry::FeatureParam kVcLightIntensity17[] = {
3727 {"light_intensity", "1.7"},
3730 const FeatureEntry::FeatureParam kVcLightIntensity18[] = {
3731 {"light_intensity", "1.8"},
3734 const FeatureEntry::FeatureParam kVcLightIntensity20[] = {
3735 {"light_intensity", "2.0"},
3738 const FeatureEntry::FeatureVariation kVcLightIntensityVariations[] = {
3739 {"1.0", kVcLightIntensity10, std::size(kVcLightIntensity10), nullptr},
3740 {"1.3", kVcLightIntensity13, std::size(kVcLightIntensity13), nullptr},
3741 {"1.5", kVcLightIntensity15, std::size(kVcLightIntensity15), nullptr},
3742 {"1.7", kVcLightIntensity17, std::size(kVcLightIntensity17), nullptr},
3743 {"1.8", kVcLightIntensity18, std::size(kVcLightIntensity18), nullptr},
3744 {"2.0", kVcLightIntensity20, std::size(kVcLightIntensity20), nullptr},
3747 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
3749 #if BUILDFLAG(IS_CHROMEOS_ASH)
3750 const FeatureEntry::FeatureParam
3751 kCrOSLateBootMissiveDisableStorageDegradation[] = {
3752 {"controlled_degradation", "false"}};
3753 const FeatureEntry::FeatureParam
3754 kCrOSLateBootMissiveEnableStorageDegradation[] = {
3755 {"controlled_degradation", "true"}};
3756 const FeatureEntry::FeatureParam kCrOSLateBootMissiveDisableLegacyStorage[] = {
3757 {"legacy_storage_enabled",
3758 "UNDEFINED_PRIORITY"}}; // All others are multi-generation action state.
3759 const FeatureEntry::FeatureParam kCrOSLateBootMissiveEnableLegacyStorage[] = {
3760 {"legacy_storage_enabled",
3767 "MANUAL_BATCH_LACROS,"}};
3768 const FeatureEntry::FeatureParam kCrOSLateBootMissivePartialLegacyStorage[] = {
3769 {"legacy_storage_enabled",
3772 const FeatureEntry::FeatureParam kCrOSLateBootMissiveSecurityLegacyStorage[] = {
3773 {"legacy_storage_enabled", "SECURITY,"}};
3775 const FeatureEntry::FeatureVariation
3776 kCrOSLateBootMissiveStorageDefaultVariations[] = {
3777 {"Enable storage degradation",
3778 kCrOSLateBootMissiveEnableStorageDegradation,
3779 std::size(kCrOSLateBootMissiveEnableStorageDegradation), nullptr},
3780 {"Disable storage degradation",
3781 kCrOSLateBootMissiveDisableStorageDegradation,
3782 std::size(kCrOSLateBootMissiveDisableStorageDegradation), nullptr},
3783 {"Enable all queues legacy", kCrOSLateBootMissiveEnableLegacyStorage,
3784 std::size(kCrOSLateBootMissiveEnableLegacyStorage), nullptr},
3785 {"Disable all queues legacy", kCrOSLateBootMissiveDisableLegacyStorage,
3786 std::size(kCrOSLateBootMissiveDisableLegacyStorage), nullptr},
3787 {"Enable SECURITY and IMMEDIATE queues legacy only",
3788 kCrOSLateBootMissivePartialLegacyStorage,
3789 std::size(kCrOSLateBootMissivePartialLegacyStorage), nullptr},
3790 {"Enable SECURITY queues legacy only",
3791 kCrOSLateBootMissiveSecurityLegacyStorage,
3792 std::size(kCrOSLateBootMissiveSecurityLegacyStorage), nullptr},
3794 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
3796 #if !BUILDFLAG(IS_ANDROID)
3797 const FeatureEntry::Choice kCastMirroringTargetPlayoutDelayChoices[] = {
3798 {flag_descriptions::kCastMirroringTargetPlayoutDelayDefault, "", ""},
3799 {flag_descriptions::kCastMirroringTargetPlayoutDelay100ms,
3800 switches::kCastMirroringTargetPlayoutDelay, "100"},
3801 {flag_descriptions::kCastMirroringTargetPlayoutDelay150ms,
3802 switches::kCastMirroringTargetPlayoutDelay, "150"},
3803 {flag_descriptions::kCastMirroringTargetPlayoutDelay200ms,
3804 switches::kCastMirroringTargetPlayoutDelay, "200"},
3805 {flag_descriptions::kCastMirroringTargetPlayoutDelay250ms,
3806 switches::kCastMirroringTargetPlayoutDelay, "250"},
3807 {flag_descriptions::kCastMirroringTargetPlayoutDelay300ms,
3808 switches::kCastMirroringTargetPlayoutDelay, "300"},
3809 {flag_descriptions::kCastMirroringTargetPlayoutDelay350ms,
3810 switches::kCastMirroringTargetPlayoutDelay, "350"}};
3812 #endif // !BUILDFLAG(IS_ANDROID)
3814 #if !BUILDFLAG(IS_ANDROID)
3815 const FeatureEntry::FeatureParam kPasswordGenerationTrustedAdvice[] = {
3816 {password_manager::features::kPasswordGenerationExperimentVariationParam
3818 password_manager::features::kPasswordGenerationExperimentVariationOption[0]
3820 const FeatureEntry::FeatureParam kPasswordGenerationSafetyFirst[] = {
3821 {password_manager::features::kPasswordGenerationExperimentVariationParam
3823 password_manager::features::kPasswordGenerationExperimentVariationOption[1]
3825 const FeatureEntry::FeatureParam kPasswordGenerationTrySomethingNew[] = {
3826 {password_manager::features::kPasswordGenerationExperimentVariationParam
3828 password_manager::features::kPasswordGenerationExperimentVariationOption[2]
3830 const FeatureEntry::FeatureParam kPasswordGenerationConvenience[] = {
3831 {password_manager::features::kPasswordGenerationExperimentVariationParam
3833 password_manager::features::kPasswordGenerationExperimentVariationOption[3]
3835 const FeatureEntry::FeatureParam kPasswordGenerationCrossDevice[] = {
3836 {password_manager::features::kPasswordGenerationExperimentVariationParam
3838 password_manager::features::kPasswordGenerationExperimentVariationOption[4]
3840 const FeatureEntry::FeatureParam kPasswordGenerationEditPassword[] = {
3841 {password_manager::features::kPasswordGenerationExperimentVariationParam
3843 password_manager::features::kPasswordGenerationExperimentVariationOption[5]
3845 const FeatureEntry::FeatureParam kPasswordGenerationChunkPassword[] = {
3846 {password_manager::features::kPasswordGenerationExperimentVariationParam
3848 password_manager::features::kPasswordGenerationExperimentVariationOption[6]
3850 const FeatureEntry::FeatureParam kPasswordGenerationNudgePassword[] = {
3851 {password_manager::features::kPasswordGenerationExperimentVariationParam
3853 password_manager::features::kPasswordGenerationExperimentVariationOption[7]
3856 const FeatureEntry::FeatureVariation kPasswordGenerationExperimentVariations[] =
3858 {"Trusted advice", kPasswordGenerationTrustedAdvice,
3859 std::size(kPasswordGenerationTrustedAdvice), nullptr},
3860 {"Safety first", kPasswordGenerationSafetyFirst,
3861 std::size(kPasswordGenerationSafetyFirst), nullptr},
3862 {"Try something new", kPasswordGenerationTrySomethingNew,
3863 std::size(kPasswordGenerationTrySomethingNew), nullptr},
3864 {"Convenience", kPasswordGenerationConvenience,
3865 std::size(kPasswordGenerationConvenience), nullptr},
3866 {"Cross device", kPasswordGenerationCrossDevice,
3867 std::size(kPasswordGenerationCrossDevice), nullptr},
3868 {"Edit password", kPasswordGenerationEditPassword,
3869 std::size(kPasswordGenerationEditPassword), nullptr},
3870 {"Chunk password", kPasswordGenerationChunkPassword,
3871 std::size(kPasswordGenerationChunkPassword), nullptr},
3872 {"Nudge password", kPasswordGenerationNudgePassword,
3873 std::size(kPasswordGenerationNudgePassword), nullptr},
3875 #endif // !BUILDFLAG(IS_ANDROID)
3877 #if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
3878 const FeatureEntry::FeatureParam kEnableBoundSessionCredentialsWithDice[] = {
3879 {"dice-support", "enabled"}};
3881 const FeatureEntry::FeatureVariation
3882 kEnableBoundSessionCredentialsVariations[] = {
3883 {"including DICE profiles", kEnableBoundSessionCredentialsWithDice,
3884 std::size(kEnableBoundSessionCredentialsWithDice), nullptr}};
3885 #endif // BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
3887 #if BUILDFLAG(IS_ANDROID)
3888 const FeatureEntry::FeatureParam kWebAuthnAndroidCredManGpmInCredManParam = {
3889 device::kWebAuthnAndroidGpmInCredMan.name, "true"};
3890 const FeatureEntry::FeatureParam kWebAuthnAndroidCredManGpmNotInCredManParam = {
3891 device::kWebAuthnAndroidGpmInCredMan.name, "false"};
3892 const FeatureEntry::FeatureVariation kWebAuthnAndroidCredManVariations[] = {
3893 {"for Google Password Manager and 3rd party passkeys",
3894 &kWebAuthnAndroidCredManGpmInCredManParam, 1, nullptr},
3895 {"for 3rd party passkeys", &kWebAuthnAndroidCredManGpmNotInCredManParam, 1,
3898 const FeatureEntry::FeatureParam kHubPhase1WithFab[] = {
3899 {"floating_action_button", "true"}};
3900 const FeatureEntry::FeatureParam kHubPhase1WithoutFab[] = {
3901 {"floating_action_button", "false"}};
3902 const FeatureEntry::FeatureParam kHubPhase2WithIcons[] = {
3903 {"floating_action_button", "true"},
3904 {"supports_other_tabs", "true"}};
3905 const FeatureEntry::FeatureParam kHubPhase2WithText[] = {
3906 {"floating_action_button", "true"},
3907 {"pane_switcher_uses_text", "true"},
3908 {"supports_other_tabs", "true"}};
3909 const FeatureEntry::FeatureParam kHubPhase3[] = {
3910 {"floating_action_button", "true"},
3911 {"pane_switcher_uses_text", "true"},
3912 {"supports_other_tabs", "true"},
3913 {"supports_search", "true"}};
3914 const FeatureEntry::FeatureParam kHubPhase4[] = {
3915 {"floating_action_button", "true"},
3916 {"pane_switcher_uses_text", "true"},
3917 {"supports_other_tabs", "true"},
3918 {"supports_search", "true"},
3919 {"supports_bookmarks", "true"}};
3921 const FeatureEntry::FeatureVariation kAndroidHubVariations[] = {
3922 {"Phase 1 w/ FAB", kHubPhase1WithFab, std::size(kHubPhase1WithFab),
3924 {"Phase 1 w/o FAB", kHubPhase1WithoutFab, std::size(kHubPhase1WithoutFab),
3926 {"Phase 2 w/ Icons", kHubPhase2WithIcons, std::size(kHubPhase2WithIcons),
3928 {"Phase 2 w/ Text", kHubPhase2WithText, std::size(kHubPhase2WithText),
3930 {"Phase 3", kHubPhase3, std::size(kHubPhase3), nullptr},
3931 {"Phase 4", kHubPhase4, std::size(kHubPhase4), nullptr}};
3932 #endif // BUILDFLAG(IS_ANDROID)
3934 const flags_ui::FeatureEntry::FeatureParam kParcelTrackingTestDataDelivered[] =
3935 {{commerce::kParcelTrackingTestDataParam,
3936 commerce::kParcelTrackingTestDataParamDelivered}};
3937 const flags_ui::FeatureEntry::FeatureParam kParcelTrackingTestDataInProgress[] =
3938 {{commerce::kParcelTrackingTestDataParam,
3939 commerce::kParcelTrackingTestDataParamInProgress}};
3940 const flags_ui::FeatureEntry::FeatureParam
3941 kParcelTrackingTestDataOutForDelivery[] = {
3942 {commerce::kParcelTrackingTestDataParam,
3943 commerce::kParcelTrackingTestDataParamOutForDelivery}};
3944 const flags_ui::FeatureEntry::FeatureVariation
3945 kParcelTrackingTestDataVariations[] = {
3946 {"Delivered", kParcelTrackingTestDataDelivered,
3947 std::size(kParcelTrackingTestDataDelivered), nullptr},
3948 {"In progress", kParcelTrackingTestDataInProgress,
3949 std::size(kParcelTrackingTestDataInProgress), nullptr},
3950 {"Out for delivery", kParcelTrackingTestDataOutForDelivery,
3951 std::size(kParcelTrackingTestDataOutForDelivery), nullptr},
3954 // RECORDING USER METRICS FOR FLAGS:
3955 // -----------------------------------------------------------------------------
3956 // The first line of the entry is the internal name.
3958 // To add a new entry, add to the end of kFeatureEntries. There are two
3959 // distinct types of entries:
3960 // . SINGLE_VALUE: entry is either on or off. Use the SINGLE_VALUE_TYPE
3961 // macro for this type supplying the command line to the macro.
3962 // . MULTI_VALUE: a list of choices, the first of which should correspond to a
3963 // deactivated state for this lab (i.e. no command line option). To specify
3964 // this type of entry use the macro MULTI_VALUE_TYPE supplying it the
3965 // array of choices.
3966 // See the documentation of FeatureEntry for details on the fields.
3968 // Usage of about:flags is logged on startup via the "Launch.FlagsAtStartup"
3969 // UMA histogram. This histogram shows the number of startups with a given flag
3970 // enabled. If you'd like to see user counts instead, make sure to switch to
3971 // "count users" view on the dashboard. When adding new entries, the enum
3972 // "LoginCustomFlags" must be updated in histograms/enums.xml. See note in
3973 // enums.xml and don't forget to run AboutFlagsHistogramTest unit test to
3974 // calculate and verify checksum.
3976 // When adding a new choice, add it to the end of the list.
3977 const FeatureEntry kFeatureEntries[] = {
3978 // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and
3979 // //tools/flags/generate_unexpire_flags.py.
3980 #include "build/chromeos_buildflags.h"
3981 #include "chrome/browser/unexpire_flags_gen.inc"
3982 {variations::switches::kEnableBenchmarking,
3983 flag_descriptions::kEnableBenchmarkingName,
3984 flag_descriptions::kEnableBenchmarkingDescription, kOsAll,
3985 SINGLE_VALUE_TYPE(variations::switches::kEnableBenchmarking)},
3986 {"ignore-gpu-blocklist", flag_descriptions::kIgnoreGpuBlocklistName,
3987 flag_descriptions::kIgnoreGpuBlocklistDescription, kOsAll,
3988 SINGLE_VALUE_TYPE(switches::kIgnoreGpuBlocklist)},
3989 {"disable-accelerated-2d-canvas",
3990 flag_descriptions::kAccelerated2dCanvasName,
3991 flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
3992 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
3993 {"overlay-strategies", flag_descriptions::kOverlayStrategiesName,
3994 flag_descriptions::kOverlayStrategiesDescription, kOsAll,
3995 MULTI_VALUE_TYPE(kOverlayStrategiesChoices)},
3996 {"tint-composited-content", flag_descriptions::kTintCompositedContentName,
3997 flag_descriptions::kTintCompositedContentDescription, kOsAll,
3998 SINGLE_VALUE_TYPE(switches::kTintCompositedContent)},
3999 {"show-overdraw-feedback", flag_descriptions::kShowOverdrawFeedbackName,
4000 flag_descriptions::kShowOverdrawFeedbackDescription, kOsAll,
4001 SINGLE_VALUE_TYPE(switches::kShowOverdrawFeedback)},
4002 {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName,
4003 flag_descriptions::kUiPartialSwapDescription, kOsAll,
4004 SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)},
4005 {"disable-webrtc-hw-decoding", flag_descriptions::kWebrtcHwDecodingName,
4006 flag_descriptions::kWebrtcHwDecodingDescription, kOsAndroid | kOsCrOS,
4007 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding)},
4008 {"disable-webrtc-hw-encoding", flag_descriptions::kWebrtcHwEncodingName,
4009 flag_descriptions::kWebrtcHwEncodingDescription, kOsAndroid | kOsCrOS,
4010 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding)},
4011 #if !BUILDFLAG(IS_ANDROID)
4012 {"enable-reader-mode", flag_descriptions::kEnableReaderModeName,
4013 flag_descriptions::kEnableReaderModeDescription, kOsDesktop,
4014 FEATURE_WITH_PARAMS_VALUE_TYPE(dom_distiller::kReaderMode,
4015 kReaderModeDiscoverabilityVariations,
4017 #endif // !BUILDFLAG(IS_ANDROID)
4018 #if defined(WEBRTC_USE_PIPEWIRE)
4019 {"enable-webrtc-pipewire-capturer",
4020 flag_descriptions::kWebrtcPipeWireCapturerName,
4021 flag_descriptions::kWebrtcPipeWireCapturerDescription, kOsLinux,
4022 FEATURE_VALUE_TYPE(features::kWebRtcPipeWireCapturer)},
4023 #endif // defined(WEBRTC_USE_PIPEWIRE)
4024 #if BUILDFLAG(IS_CHROMEOS_ASH)
4025 {"enable-lacros-in-chrome-kiosk",
4026 flag_descriptions::kChromeKioskEnableLacrosName,
4027 flag_descriptions::kChromeKioskEnableLacrosDescription, kOsCrOS,
4029 ash::standalone_browser::features::kChromeKioskEnableLacros)},
4030 {"enable-lacros-in-web-kiosk", flag_descriptions::kWebKioskEnableLacrosName,
4031 flag_descriptions::kWebKioskEnableLacrosDescription, kOsCrOS,
4033 ash::standalone_browser::features::kWebKioskEnableLacros)},
4034 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
4035 #if BUILDFLAG(IS_CHROMEOS)
4036 {"enable-app-service-in-kiosk",
4037 flag_descriptions::kKioskEnableAppServiceName,
4038 flag_descriptions::kKioskEnableAppServiceDescription, kOsCrOS,
4039 FEATURE_VALUE_TYPE(features::kKioskEnableAppService)},
4040 #endif // BUILDFLAG(IS_CHROMEOS)
4041 #if !BUILDFLAG(IS_ANDROID)
4042 {"enable-webrtc-remote-event-log",
4043 flag_descriptions::kWebRtcRemoteEventLogName,
4044 flag_descriptions::kWebRtcRemoteEventLogDescription, kOsDesktop,
4045 FEATURE_VALUE_TYPE(features::kWebRtcRemoteEventLog)},
4047 {"enable-webrtc-allow-input-volume-adjustment",
4048 flag_descriptions::kWebRtcAllowInputVolumeAdjustmentName,
4049 flag_descriptions::kWebRtcAllowInputVolumeAdjustmentDescription,
4050 kOsWin | kOsMac | kOsLinux,
4051 FEATURE_VALUE_TYPE(features::kWebRtcAllowInputVolumeAdjustment)},
4052 {"enable-webrtc-apm-downmix-capture-audio-method",
4053 flag_descriptions::kWebRtcApmDownmixCaptureAudioMethodName,
4054 flag_descriptions::kWebRtcApmDownmixCaptureAudioMethodDescription,
4056 FEATURE_WITH_PARAMS_VALUE_TYPE(
4057 features::kWebRtcApmDownmixCaptureAudioMethod,
4058 kWebRtcApmDownmixMethodVariations,
4059 "WebRtcApmDownmixCaptureAudioMethod")},
4060 {"enable-webrtc-hide-local-ips-with-mdns",
4061 flag_descriptions::kWebrtcHideLocalIpsWithMdnsName,
4062 flag_descriptions::kWebrtcHideLocalIpsWithMdnsDecription, kOsDesktop,
4063 FEATURE_VALUE_TYPE(blink::features::kWebRtcHideLocalIpsWithMdns)},
4064 {"enable-webrtc-use-min-max-vea-dimensions",
4065 flag_descriptions::kWebrtcUseMinMaxVEADimensionsName,
4066 flag_descriptions::kWebrtcUseMinMaxVEADimensionsDescription, kOsAll,
4067 FEATURE_VALUE_TYPE(blink::features::kWebRtcUseMinMaxVEADimensions)},
4068 #if BUILDFLAG(ENABLE_NACL)
4069 {"enable-nacl", flag_descriptions::kNaclName,
4070 flag_descriptions::kNaclDescription, kOsAll,
4071 SINGLE_VALUE_TYPE(switches::kEnableNaCl)},
4072 {"verbose-logging-in-nacl", flag_descriptions::kVerboseLoggingInNaclName,
4073 flag_descriptions::kVerboseLoggingInNaclDescription, kOsAll,
4074 MULTI_VALUE_TYPE(kVerboseLoggingInNaclChoices)},
4075 #endif // ENABLE_NACL
4076 #if BUILDFLAG(ENABLE_CARDBOARD)
4077 {"enable-cardboard", flag_descriptions::kEnableCardboardName,
4078 flag_descriptions::kEnableCardboardDescription, kOsAndroid,
4079 FEATURE_VALUE_TYPE(device::features::kEnableCardboard)},
4080 #endif // ENABLE_CARDBOARD
4081 #if BUILDFLAG(ENABLE_EXTENSIONS)
4082 {"extensions-on-chrome-urls",
4083 flag_descriptions::kExtensionsOnChromeUrlsName,
4084 flag_descriptions::kExtensionsOnChromeUrlsDescription, kOsAll,
4085 SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)},
4086 #endif // ENABLE_EXTENSIONS
4087 #if BUILDFLAG(IS_ANDROID)
4088 {"contextual-search-force-caption",
4089 flag_descriptions::kContextualSearchForceCaptionName,
4090 flag_descriptions::kContextualSearchForceCaptionDescription, kOsAndroid,
4091 FEATURE_VALUE_TYPE(chrome::android::kContextualSearchForceCaption)},
4092 {"contextual-search-suppress-short-view",
4093 flag_descriptions::kContextualSearchSuppressShortViewName,
4094 flag_descriptions::kContextualSearchSuppressShortViewDescription,
4096 FEATURE_WITH_PARAMS_VALUE_TYPE(
4097 chrome::android::kContextualSearchSuppressShortView,
4098 kContextualSearchSuppressShortViewVariations,
4099 "ContextualSearchSuppressShortView")},
4100 {"related-searches", flag_descriptions::kRelatedSearchesName,
4101 flag_descriptions::kRelatedSearchesDescription, kOsAndroid,
4102 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kRelatedSearches,
4103 kRelatedSearchesVariations,
4104 "RelatedSearches")},
4105 #endif // BUILDFLAG(IS_ANDROID)
4106 {"show-autofill-type-predictions",
4107 flag_descriptions::kShowAutofillTypePredictionsName,
4108 flag_descriptions::kShowAutofillTypePredictionsDescription, kOsAll,
4110 autofill::features::test::kAutofillShowTypePredictions)},
4111 {"autofill-undo", flag_descriptions::kUndoAutofillName,
4112 flag_descriptions::kUndoAutofillDescription, kOsAll,
4113 FEATURE_VALUE_TYPE(autofill::features::kAutofillUndo)},
4114 {"autofill-more-prominent-popup",
4115 flag_descriptions::kAutofillMoreProminentPopupName,
4116 flag_descriptions::kAutofillMoreProminentPopupDescription, kOsDesktop,
4117 FEATURE_VALUE_TYPE(autofill::features::kAutofillMoreProminentPopup)},
4118 {"smooth-scrolling", flag_descriptions::kSmoothScrollingName,
4119 flag_descriptions::kSmoothScrollingDescription,
4120 // Mac has a separate implementation with its own setting to disable.
4121 kOsLinux | kOsLacros | kOsCrOS | kOsWin | kOsAndroid | kOsFuchsia,
4122 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSmoothScrolling,
4123 switches::kDisableSmoothScrolling)},
4124 {"fractional-scroll-offsets",
4125 flag_descriptions::kFractionalScrollOffsetsName,
4126 flag_descriptions::kFractionalScrollOffsetsDescription, kOsAll,
4127 FEATURE_VALUE_TYPE(features::kFractionalScrollOffsets)},
4128 #if defined(USE_AURA)
4129 {"overlay-scrollbars", flag_descriptions::kOverlayScrollbarsName,
4130 flag_descriptions::kOverlayScrollbarsDescription,
4131 // Uses the system preference on Mac (a different implementation).
4132 // On Android, this is always enabled.
4133 kOsAura, FEATURE_VALUE_TYPE(features::kOverlayScrollbar)},
4135 {"enable-quic", flag_descriptions::kQuicName,
4136 flag_descriptions::kQuicDescription, kOsAll,
4137 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableQuic, switches::kDisableQuic)},
4138 {"webtransport-developer-mode",
4139 flag_descriptions::kWebTransportDeveloperModeName,
4140 flag_descriptions::kWebTransportDeveloperModeDescription, kOsAll,
4141 SINGLE_VALUE_TYPE(switches::kWebTransportDeveloperMode)},
4142 {"disable-javascript-harmony-shipping",
4143 flag_descriptions::kJavascriptHarmonyShippingName,
4144 flag_descriptions::kJavascriptHarmonyShippingDescription, kOsAll,
4145 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableJavaScriptHarmonyShipping)},
4146 {"enable-javascript-harmony", flag_descriptions::kJavascriptHarmonyName,
4147 flag_descriptions::kJavascriptHarmonyDescription, kOsAll,
4148 SINGLE_VALUE_TYPE(switches::kJavaScriptHarmony)},
4149 {"enable-javascript-experimental-shared-memory",
4150 flag_descriptions::kJavascriptExperimentalSharedMemoryName,
4151 flag_descriptions::kJavascriptExperimentalSharedMemoryDescription, kOsAll,
4152 FEATURE_VALUE_TYPE(features::kJavaScriptExperimentalSharedMemory)},
4153 {"enable-experimental-webassembly-features",
4154 flag_descriptions::kExperimentalWebAssemblyFeaturesName,
4155 flag_descriptions::kExperimentalWebAssemblyFeaturesDescription, kOsAll,
4156 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebAssemblyFeatures)},
4157 #if defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM64)
4158 {"enable-experimental-webassembly-stack-switching",
4159 flag_descriptions::kExperimentalWebAssemblyJSPIName,
4160 flag_descriptions::kExperimentalWebAssemblyJSPIDescription, kOsAll,
4161 FEATURE_VALUE_TYPE(features::kEnableExperimentalWebAssemblyJSPI)},
4162 #endif // defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM64)
4163 {"enable-webassembly-baseline", flag_descriptions::kEnableWasmBaselineName,
4164 flag_descriptions::kEnableWasmBaselineDescription, kOsAll,
4165 FEATURE_VALUE_TYPE(features::kWebAssemblyBaseline)},
4166 {"enable-webassembly-garbage-collection",
4167 flag_descriptions::kEnableWasmGarbageCollectionName,
4168 flag_descriptions::kEnableWasmGarbageCollectionDescription, kOsAll,
4169 FEATURE_VALUE_TYPE(features::kWebAssemblyGarbageCollection)},
4170 {"enable-webassembly-lazy-compilation",
4171 flag_descriptions::kEnableWasmLazyCompilationName,
4172 flag_descriptions::kEnableWasmLazyCompilationDescription, kOsAll,
4173 FEATURE_VALUE_TYPE(features::kWebAssemblyLazyCompilation)},
4174 {"enable-webassembly-relaxed-simd",
4175 flag_descriptions::kEnableWasmRelaxedSimdName,
4176 flag_descriptions::kEnableWasmRelaxedSimdDescription, kOsAll,
4177 FEATURE_VALUE_TYPE(features::kWebAssemblyRelaxedSimd)},
4178 {"enable-webassembly-stringref",
4179 flag_descriptions::kEnableWasmStringrefName,
4180 flag_descriptions::kEnableWasmStringrefDescription, kOsAll,
4181 FEATURE_VALUE_TYPE(features::kWebAssemblyStringref)},
4182 {"enable-webassembly-tiering", flag_descriptions::kEnableWasmTieringName,
4183 flag_descriptions::kEnableWasmTieringDescription, kOsAll,
4184 FEATURE_VALUE_TYPE(features::kWebAssemblyTiering)},
4185 {"enable-future-v8-vm-features", flag_descriptions::kV8VmFutureName,
4186 flag_descriptions::kV8VmFutureDescription, kOsAll,
4187 FEATURE_VALUE_TYPE(features::kV8VmFuture)},
4188 {"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
4189 flag_descriptions::kGpuRasterizationDescription, kOsAll,
4190 MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
4191 #if BUILDFLAG(USE_FONTATIONS_BACKEND)
4192 {"enable-fontations-backend", flag_descriptions::kFontationsFontBackendName,
4193 flag_descriptions::kFontationsFontBackendDescription, kOsAll,
4194 FEATURE_VALUE_TYPE(blink::features::kFontationsFontBackend)},
4196 {"enable-experimental-web-platform-features",
4197 flag_descriptions::kExperimentalWebPlatformFeaturesName,
4198 flag_descriptions::kExperimentalWebPlatformFeaturesDescription, kOsAll,
4199 SINGLE_VALUE_TYPE(switches::kEnableExperimentalWebPlatformFeatures)},
4200 {"top-chrome-touch-ui", flag_descriptions::kTopChromeTouchUiName,
4201 flag_descriptions::kTopChromeTouchUiDescription, kOsDesktop,
4202 MULTI_VALUE_TYPE(kTopChromeTouchUiChoices)},
4203 #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
4204 {flag_descriptions::kWebUITabStripFlagId,
4205 flag_descriptions::kWebUITabStripName,
4206 flag_descriptions::kWebUITabStripDescription, kOsDesktop,
4207 FEATURE_VALUE_TYPE(features::kWebUITabStrip)},
4208 {"webui-tab-strip-context-menu-after-tap",
4209 flag_descriptions::kWebUITabStripContextMenuAfterTapName,
4210 flag_descriptions::kWebUITabStripContextMenuAfterTapDescription,
4212 FEATURE_VALUE_TYPE(features::kWebUITabStripContextMenuAfterTap)},
4213 #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP)
4214 #if BUILDFLAG(IS_CHROMEOS_ASH)
4215 {"allow-eap-default-cas-without-subject-verification",
4216 flag_descriptions::kAllowEapDefaultCasWithoutSubjectVerificationName,
4218 kAllowEapDefaultCasWithoutSubjectVerificationDescription,
4221 ash::features::kAllowEapDefaultCasWithoutSubjectVerification)},
4222 {"alt-click-and-six-pack-customization",
4223 flag_descriptions::kAltClickAndSixPackCustomizationName,
4224 flag_descriptions::kAltClickAndSixPackCustomizationDescription, kOsCrOS,
4225 FEATURE_VALUE_TYPE(ash::features::kAltClickAndSixPackCustomization)},
4226 {"apn-revamp", flag_descriptions::kApnRevampName,
4227 flag_descriptions::kApnRevampDescription, kOsCrOS,
4228 FEATURE_VALUE_TYPE(ash::features::kApnRevamp)},
4229 {"audio-a2dp-advanced-codecs",
4230 flag_descriptions::kAudioA2DPAdvancedCodecsName,
4231 flag_descriptions::kAudioA2DPAdvancedCodecsDescription, kOsCrOS,
4232 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootAudioA2DPAdvancedCodecs")},
4233 {"audio-ap-noise-cancellation",
4234 flag_descriptions::kAudioAPNoiseCancellationName,
4235 flag_descriptions::kAudioAPNoiseCancellationDescription, kOsCrOS,
4236 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootAudioAPNoiseCancellation")},
4237 {"audio-flexible-loopback", flag_descriptions::kAudioFlexibleLoopbackName,
4238 flag_descriptions::kAudioFlexibleLoopbackDescription, kOsCrOS,
4239 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootAudioFlexibleLoopback")},
4240 {"audio-hfp-mic-sr", flag_descriptions::kAudioHFPMicSRName,
4241 flag_descriptions::kAudioHFPMicSRDescription, kOsCrOS,
4242 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootAudioHFPMicSR")},
4243 {"audio-hfp-mic-sr-toggle", flag_descriptions::kAudioHFPMicSRToggleName,
4244 flag_descriptions::kAudioHFPMicSRToggleDescription, kOsCrOS,
4245 FEATURE_VALUE_TYPE(ash::features::kAudioHFPMicSRToggle)},
4246 {"audio-hfp-offload", flag_descriptions::kAudioHFPOffloadName,
4247 flag_descriptions::kAudioHFPOffloadDescription, kOsCrOS,
4248 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootAudioHFPOffload")},
4249 {"audio-hfp-swb", flag_descriptions::kAudioHFPSwbName,
4250 flag_descriptions::kAudioHFPSwbDescription, kOsCrOS,
4251 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootAudioHFPSwb")},
4252 {"audio-suppress-set-rtc-audio-active",
4253 flag_descriptions::kAudioSuppressSetRTCAudioActiveName,
4254 flag_descriptions::kAudioSuppressSetRTCAudioActiveDescription, kOsCrOS,
4255 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootAudioSuppressSetRTCAudioActive")},
4256 {"cras-split-alsa-usb-internal",
4257 flag_descriptions::kCrasSplitAlsaUsbInternalName,
4258 flag_descriptions::kCrasSplitAlsaUsbInternalDescription, kOsCrOS,
4259 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootCrasSplitAlsaUSBInternal")},
4260 {"disable-explicit-dma-fences",
4261 flag_descriptions::kDisableExplicitDmaFencesName,
4262 flag_descriptions::kDisableExplicitDmaFencesDescription, kOsCrOS,
4263 SINGLE_VALUE_TYPE(switches::kDisableExplicitDmaFences)},
4264 // TODO(crbug.com/1012846): Remove this flag and provision when HDR is fully
4265 // supported on ChromeOS.
4266 {"use-hdr-transfer-function",
4267 flag_descriptions::kUseHDRTransferFunctionName,
4268 flag_descriptions::kUseHDRTransferFunctionDescription, kOsCrOS,
4269 FEATURE_VALUE_TYPE(display::features::kUseHDRTransferFunction)},
4270 {"enable-external-display-hdr10",
4271 flag_descriptions::kEnableExternalDisplayHdr10Name,
4272 flag_descriptions::kEnableExternalDisplayHdr10Description, kOsCrOS,
4273 FEATURE_VALUE_TYPE(display::features::kEnableExternalDisplayHDR10Mode)},
4274 {"adaptive-charging", flag_descriptions::kAdaptiveChargingName,
4275 flag_descriptions::kAdaptiveChargingDescription, kOsCrOS,
4276 FEATURE_VALUE_TYPE(ash::features::kAdaptiveCharging)},
4277 {"adaptive-charging-for-testing",
4278 flag_descriptions::kAdaptiveChargingForTestingName,
4279 flag_descriptions::kAdaptiveChargingForTestingDescription, kOsCrOS,
4280 FEATURE_VALUE_TYPE(ash::features::kAdaptiveChargingForTesting)},
4281 {"ash-capture-mode-audio-mixing",
4282 flag_descriptions::kCaptureModeAudioMixingName,
4283 flag_descriptions::kCaptureModeAudioMixingDescription, kOsCrOS,
4284 FEATURE_VALUE_TYPE(ash::features::kCaptureModeAudioMixing)},
4285 {"ash-capture-mode-gif-recording",
4286 flag_descriptions::kCaptureModeGifRecordingName,
4287 flag_descriptions::kCaptureModeGifRecordingDescription, kOsCrOS,
4288 FEATURE_VALUE_TYPE(ash::features::kGifRecording)},
4289 {"ash-overview-button", flag_descriptions::kOverviewButtonName,
4290 flag_descriptions::kOverviewButtonDescription, kOsCrOS,
4291 FEATURE_VALUE_TYPE(ash::features::kOverviewButton)},
4292 {"ash-limit-shelf-items-to-active-desk",
4293 flag_descriptions::kLimitShelfItemsToActiveDeskName,
4294 flag_descriptions::kLimitShelfItemsToActiveDeskDescription, kOsCrOS,
4295 FEATURE_VALUE_TYPE(ash::features::kPerDeskShelf)},
4296 {"ash-enable-unified-desktop",
4297 flag_descriptions::kAshEnableUnifiedDesktopName,
4298 flag_descriptions::kAshEnableUnifiedDesktopDescription, kOsCrOS,
4299 SINGLE_VALUE_TYPE(switches::kEnableUnifiedDesktop)},
4300 {"ash-faster-split-screen-setup",
4301 flag_descriptions::kFasterSplitScreenSetupName,
4302 flag_descriptions::kFasterSplitScreenSetupDescription, kOsCrOS,
4303 FEATURE_VALUE_TYPE(ash::features::kFasterSplitScreenSetup)},
4304 {"rounded-display", flag_descriptions::kRoundedDisplay,
4305 flag_descriptions::kRoundedDisplayDescription, kOsCrOS,
4306 FEATURE_VALUE_TYPE(display::features::kRoundedDisplay)},
4307 {"bluetooth-fix-a2dp-packet-size",
4308 flag_descriptions::kBluetoothFixA2dpPacketSizeName,
4309 flag_descriptions::kBluetoothFixA2dpPacketSizeDescription, kOsCrOS,
4310 FEATURE_VALUE_TYPE(ash::features::kBluetoothFixA2dpPacketSize)},
4311 {"bluetooth-quality-report", flag_descriptions::kBluetoothQualityReportName,
4312 flag_descriptions::kBluetoothQualityReportDescription, kOsCrOS,
4313 FEATURE_VALUE_TYPE(ash::features::kBluetoothQualityReport)},
4314 {"bluetooth-wbs-dogfood", flag_descriptions::kBluetoothWbsDogfoodName,
4315 flag_descriptions::kBluetoothWbsDogfoodDescription, kOsCrOS,
4316 FEATURE_VALUE_TYPE(ash::features::kBluetoothWbsDogfood)},
4317 {"bluetooth-coredump", flag_descriptions::kBluetoothCoredumpName,
4318 flag_descriptions::kBluetoothCoredumpDescription, kOsCrOS,
4319 FEATURE_VALUE_TYPE(chromeos::bluetooth::features::kBluetoothCoredump)},
4320 {"bluetooth-floss-coredump", flag_descriptions::kBluetoothFlossCoredumpName,
4321 flag_descriptions::kBluetoothFlossCoredumpDescription, kOsCrOS,
4323 chromeos::bluetooth::features::kBluetoothFlossCoredump)},
4324 {"bluetooth-floss-telephony",
4325 flag_descriptions::kBluetoothFlossTelephonyName,
4326 flag_descriptions::kBluetoothFlossTelephonyDescription, kOsCrOS,
4328 chromeos::bluetooth::features::kBluetoothFlossTelephony)},
4329 {kBluetoothUseFlossInternalName, flag_descriptions::kBluetoothUseFlossName,
4330 flag_descriptions::kBluetoothUseFlossDescription, kOsCrOS,
4331 FEATURE_VALUE_TYPE(floss::features::kFlossEnabled)},
4332 {"bluetooth-floss-availability-check",
4333 flag_descriptions::kBluetoothFlossIsAvailabilityCheckNeededName,
4334 flag_descriptions::kBluetoothFlossIsAvailabilityCheckNeededDescription,
4336 FEATURE_VALUE_TYPE(floss::features::kFlossIsAvailabilityCheckNeeded)},
4337 {"bluetooth-use-llprivacy", flag_descriptions::kBluetoothUseLLPrivacyName,
4338 flag_descriptions::kBluetoothUseLLPrivacyDescription, kOsCrOS,
4339 FEATURE_VALUE_TYPE(bluez::features::kLinkLayerPrivacy)},
4340 {"cellular-bypass-esim-installation-connectivity-check",
4341 flag_descriptions::kCellularBypassESimInstallationConnectivityCheckName,
4343 kCellularBypassESimInstallationConnectivityCheckDescription,
4346 ash::features::kCellularBypassESimInstallationConnectivityCheck)},
4347 {"cellular-carrier-lock", flag_descriptions::kCellularCarrierLockName,
4348 flag_descriptions::kCellularCarrierLockDescription, kOsCrOS,
4349 FEATURE_VALUE_TYPE(ash::features::kCellularCarrierLock)},
4350 {"cellular-use-second-euicc",
4351 flag_descriptions::kCellularUseSecondEuiccName,
4352 flag_descriptions::kCellularUseSecondEuiccDescription, kOsCrOS,
4353 FEATURE_VALUE_TYPE(ash::features::kCellularUseSecondEuicc)},
4354 {"cros-privacy-hub-v0", flag_descriptions::kCrosPrivacyHubV0Name,
4355 flag_descriptions::kCrosPrivacyHubV0Description, kOsCrOS,
4356 FEATURE_VALUE_TYPE(ash::features::kCrosPrivacyHubV0)},
4357 {"cros-privacy-hub-app-permissions",
4358 flag_descriptions::kCrosPrivacyHubAppPermissionsName,
4359 flag_descriptions::kCrosPrivacyHubAppPermissionsDescription, kOsCrOS,
4360 FEATURE_VALUE_TYPE(ash::features::kCrosPrivacyHubAppPermissions)},
4361 {"enable-cros-privacy-hub", flag_descriptions::kCrosPrivacyHubName,
4362 flag_descriptions::kCrosPrivacyHubDescription, kOsCrOS,
4363 FEATURE_VALUE_TYPE(ash::features::kCrosPrivacyHub)},
4364 {"cros-components", flag_descriptions::kCrosComponentsName,
4365 flag_descriptions::kCrosComponentsDescription, kOsCrOS | kOsLacros,
4366 FEATURE_VALUE_TYPE(chromeos::features::kCrosComponents)},
4367 {"oobe-hid-detection-revamp",
4368 flag_descriptions::kOobeHidDetectionRevampName,
4369 flag_descriptions::kOobeHidDetectionRevampDescription, kOsCrOS,
4370 FEATURE_VALUE_TYPE(ash::features::kOobeHidDetectionRevamp)},
4371 {"os-feedback-dialog", flag_descriptions::kOsFeedbackDialogName,
4372 flag_descriptions::kOsFeedbackDialogDescription, kOsCrOS,
4373 FEATURE_VALUE_TYPE(ash::features::kOsFeedbackDialog)},
4374 {"os-feedback-jelly", flag_descriptions::kOsFeedbackJellyName,
4375 flag_descriptions::kOsFeedbackJellyDescription, kOsCrOS,
4376 FEATURE_VALUE_TYPE(ash::features::kOsFeedbackJelly)},
4377 {"os-settings-app-badging-toggle",
4378 flag_descriptions::kOsSettingsAppBadgingToggleName,
4379 flag_descriptions::kOsSettingsAppBadgingToggleDescription, kOsCrOS,
4380 FEATURE_VALUE_TYPE(ash::features::kOsSettingsAppBadgingToggle)},
4381 {"os-settings-deprecate-sync-metrics-toggle",
4382 flag_descriptions::kOsSettingsDeprecateSyncMetricsToggleName,
4383 flag_descriptions::kOsSettingsDeprecateSyncMetricsToggleDescription,
4385 FEATURE_VALUE_TYPE(ash::features::kOsSettingsDeprecateSyncMetricsToggle)},
4386 {"os-settings-revamp-wayfinding",
4387 flag_descriptions::kOsSettingsRevampWayfindingName,
4388 flag_descriptions::kOsSettingsRevampWayfindingDescription, kOsCrOS,
4389 FEATURE_VALUE_TYPE(ash::features::kOsSettingsRevampWayfinding)},
4390 {"os-settings-test-chrome-refresh",
4391 flag_descriptions::kOsSettingsTestChromeRefreshName,
4392 flag_descriptions::kOsSettingsTestChromeRefreshDescription, kOsCrOS,
4393 FEATURE_VALUE_TYPE(ash::features::kOsSettingsTestChromeRefresh)},
4394 {"disable-cancel-all-touches",
4395 flag_descriptions::kDisableCancelAllTouchesName,
4396 flag_descriptions::kDisableCancelAllTouchesDescription, kOsCrOS,
4397 SINGLE_VALUE_TYPE(switches::kDisableCancelAllTouches)},
4399 "enable-background-blur",
4400 flag_descriptions::kEnableBackgroundBlurName,
4401 flag_descriptions::kEnableBackgroundBlurDescription,
4403 FEATURE_VALUE_TYPE(ash::features::kEnableBackgroundBlur),
4405 {"enable-zram-writeback", flag_descriptions::kEnableZramWriteback,
4406 flag_descriptions::kEnableZramWritebackDescription, kOsCrOS,
4407 FEATURE_VALUE_TYPE(ash::kCrOSEnableZramWriteback)},
4408 {kEnableSuspendToDiskInternalName, flag_descriptions::kEnableSuspendToDisk,
4409 flag_descriptions::kEnableSuspendToDiskDescription, kOsCrOS,
4410 FEATURE_WITH_PARAMS_VALUE_TYPE(ash::features::kSuspendToDisk,
4411 kHibernateFeatureVariations,
4413 {kEnableSuspendToDiskAllowS4InternalName,
4414 flag_descriptions::kEnableSuspendToDiskAllowS4,
4415 flag_descriptions::kEnableSuspendToDiskAllowS4Description, kOsCrOS,
4416 FEATURE_VALUE_TYPE(ash::features::kSuspendToDiskAllowS4)},
4417 // Used to carry the policy value crossing the Chrome process lifetime.
4418 {ash::standalone_browser::kLacrosAvailabilityPolicyInternalName, "", "",
4419 kOsCrOS, MULTI_VALUE_TYPE(kLacrosAvailabilityPolicyChoices)},
4420 // Used to carry the policy value crossing the Chrome process lifetime.
4421 {crosapi::browser_util::kLacrosDataBackwardMigrationModePolicyInternalName,
4423 MULTI_VALUE_TYPE(kLacrosDataBackwardMigrationModePolicyChoices)},
4424 {kLacrosStabilityInternalName, flag_descriptions::kLacrosStabilityName,
4425 flag_descriptions::kLacrosStabilityDescription, kOsCrOS,
4426 MULTI_VALUE_TYPE(kLacrosStabilityChoices)},
4427 {kLacrosWaylandLoggingInternalName,
4428 flag_descriptions::kLacrosWaylandLoggingName,
4429 flag_descriptions::kLacrosWaylandLoggingDescription, kOsCrOS,
4430 FEATURE_VALUE_TYPE(ash::features::kLacrosWaylandLogging)},
4431 {kPreferDcheckInternalName, flag_descriptions::kPreferDcheckName,
4432 flag_descriptions::kPreferDcheckDescription, kOsCrOS,
4433 MULTI_VALUE_TYPE(kPreferDcheckChoices)},
4434 {"lacros-profile-migration-force-off",
4435 flag_descriptions::kLacrosProfileMigrationForceOffName,
4436 flag_descriptions::kLacrosProfileMigrationForceOffDescription, kOsCrOS,
4438 ash::standalone_browser::features::kLacrosProfileMigrationForceOff)},
4439 {"lacros-trigger-profile-backward-migration",
4440 flag_descriptions::kLacrosProfileBackwardMigrationName,
4441 flag_descriptions::kLacrosProfileBackwardMigrationDescription, kOsCrOS,
4442 FEATURE_VALUE_TYPE(ash::features::kLacrosProfileBackwardMigration)},
4443 {kLacrosSelectionInternalName, flag_descriptions::kLacrosSelectionName,
4444 flag_descriptions::kLacrosSelectionDescription, kOsCrOS,
4445 MULTI_VALUE_TYPE(kLacrosSelectionChoices)},
4446 {kLacrosSelectionPolicyIgnoreInternalName,
4447 flag_descriptions::kLacrosSelectionPolicyIgnoreName,
4448 flag_descriptions::kLacrosSelectionPolicyIgnoreDescription, kOsCrOS,
4449 SINGLE_VALUE_TYPE(ash::switches::kLacrosSelectionPolicyIgnore)},
4450 {kLacrosOnlyInternalName, flag_descriptions::kLacrosOnlyName,
4451 flag_descriptions::kLacrosOnlyDescription, kOsCrOS,
4452 FEATURE_VALUE_TYPE(ash::standalone_browser::features::kLacrosOnly)},
4453 {kLacrosAvailabilityIgnoreInternalName,
4454 flag_descriptions::kLacrosAvailabilityIgnoreName,
4455 flag_descriptions::kLacrosAvailabilityIgnoreDescription, kOsCrOS,
4456 SINGLE_VALUE_TYPE(ash::switches::kLacrosAvailabilityIgnore)},
4457 {"list-all-display-modes", flag_descriptions::kListAllDisplayModesName,
4458 flag_descriptions::kListAllDisplayModesDescription, kOsCrOS,
4459 FEATURE_VALUE_TYPE(display::features::kListAllDisplayModes)},
4460 {"enable-hardware_mirror-mode",
4461 flag_descriptions::kEnableHardwareMirrorModeName,
4462 flag_descriptions::kEnableHardwareMirrorModeDescription, kOsCrOS,
4463 FEATURE_VALUE_TYPE(display::features::kEnableHardwareMirrorMode)},
4464 {"enable-edid-based-display-ids",
4465 flag_descriptions::kEnableEdidBasedDisplayIdsName,
4466 flag_descriptions::kEnableEdidBasedDisplayIdsDescription, kOsCrOS,
4467 FEATURE_VALUE_TYPE(display::features::kEnableEdidBasedDisplayIds)},
4468 {"enable-wifi-qos", flag_descriptions::kEnableWifiQosName,
4469 flag_descriptions::kEnableWifiQosDescription, kOsCrOS,
4470 FEATURE_VALUE_TYPE(ash::features::kEnableWifiQos)},
4471 {"enforce-ash-extension-keeplist",
4472 flag_descriptions::kEnforceAshExtensionKeeplistName,
4473 flag_descriptions::kEnforceAshExtensionKeeplistDescription, kOsCrOS,
4474 FEATURE_VALUE_TYPE(ash::features::kEnforceAshExtensionKeeplist)},
4475 {"hotspot", flag_descriptions::kHotspotName,
4476 flag_descriptions::kHotspotDescription, kOsCrOS,
4477 FEATURE_VALUE_TYPE(ash::features::kHotspot)},
4478 {"instant-hotspot-rebrand", flag_descriptions::kInstantHotspotRebrandName,
4479 flag_descriptions::kInstantHotspotRebrandDescription, kOsCrOS,
4480 FEATURE_VALUE_TYPE(ash::features::kInstantHotspotRebrand)},
4481 {"instant-tethering", flag_descriptions::kTetherName,
4482 flag_descriptions::kTetherDescription, kOsCrOS,
4483 FEATURE_VALUE_TYPE(ash::features::kInstantTethering)},
4484 {"improved-keyboard-shortcuts",
4485 flag_descriptions::kImprovedKeyboardShortcutsName,
4486 flag_descriptions::kImprovedKeyboardShortcutsDescription, kOsCrOS,
4487 FEATURE_VALUE_TYPE(features::kImprovedKeyboardShortcuts)},
4488 {"deprecate-alt-click", flag_descriptions::kDeprecateAltClickName,
4489 flag_descriptions::kDeprecateAltClickDescription, kOsCrOS,
4490 FEATURE_VALUE_TYPE(features::kDeprecateAltClick)},
4491 {"deprecate-alt-based-six-pack",
4492 flag_descriptions::kDeprecateAltBasedSixPackName,
4493 flag_descriptions::kDeprecateAltBasedSixPackDescription, kOsCrOS,
4494 FEATURE_VALUE_TYPE(features::kDeprecateAltBasedSixPack)},
4495 {"deprecate-old-keyboard-shortcuts-accelerator",
4496 flag_descriptions::kDeprecateOldKeyboardShortcutsAcceleratorName,
4497 flag_descriptions::kDeprecateOldKeyboardShortcutsAcceleratorDescription,
4500 ash::features::kDeprecateOldKeyboardShortcutsAccelerator)},
4501 {"show-bluetooth-debug-log-toggle",
4502 flag_descriptions::kShowBluetoothDebugLogToggleName,
4503 flag_descriptions::kShowBluetoothDebugLogToggleDescription, kOsCrOS,
4504 FEATURE_VALUE_TYPE(ash::features::kShowBluetoothDebugLogToggle)},
4505 {"show-taps", flag_descriptions::kShowTapsName,
4506 flag_descriptions::kShowTapsDescription, kOsCrOS,
4507 SINGLE_VALUE_TYPE(ash::switches::kShowTaps)},
4508 {"show-touch-hud", flag_descriptions::kShowTouchHudName,
4509 flag_descriptions::kShowTouchHudDescription, kOsCrOS,
4510 SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud)},
4511 {"stylus-battery-status", flag_descriptions::kStylusBatteryStatusName,
4512 flag_descriptions::kStylusBatteryStatusDescription, kOsCrOS,
4513 FEATURE_VALUE_TYPE(ash::features::kStylusBatteryStatus)},
4514 {"suppress-text-messages", flag_descriptions::kSuppressTextMessagesName,
4515 flag_descriptions::kSuppressTextMessagesDescription, kOsCrOS,
4516 FEATURE_VALUE_TYPE(ash::features::kSuppressTextMessages)},
4517 {"wake-on-wifi-allowed", flag_descriptions::kWakeOnWifiAllowedName,
4518 flag_descriptions::kWakeOnWifiAllowedDescription, kOsCrOS,
4519 FEATURE_VALUE_TYPE(ash::features::kWakeOnWifiAllowed)},
4520 {"microphone-mute-notifications",
4521 flag_descriptions::kMicrophoneMuteNotificationsName,
4522 flag_descriptions::kMicrophoneMuteNotificationsDescription, kOsCrOS,
4523 FEATURE_VALUE_TYPE(ash::features::kMicMuteNotifications)},
4524 {"microphone-mute-switch-device",
4525 flag_descriptions::kMicrophoneMuteSwitchDeviceName,
4526 flag_descriptions::kMicrophoneMuteSwitchDeviceDescription, kOsCrOS,
4527 SINGLE_VALUE_TYPE("enable-microphone-mute-switch-device")},
4528 {"wifi-connect-mac-address-randomization",
4529 flag_descriptions::kWifiConnectMacAddressRandomizationName,
4530 flag_descriptions::kWifiConnectMacAddressRandomizationDescription, kOsCrOS,
4531 FEATURE_VALUE_TYPE(ash::features::kWifiConnectMacAddressRandomization)},
4532 {"consumer-auto-update-toggle-allowed",
4533 flag_descriptions::kConsumerAutoUpdateToggleAllowedName,
4534 flag_descriptions::kConsumerAutoUpdateToggleAllowedDescription, kOsCrOS,
4535 FEATURE_VALUE_TYPE(ash::features::kConsumerAutoUpdateToggleAllowed)},
4536 {"diagnostics-app-jelly", flag_descriptions::kDiagnosticsAppJellyName,
4537 flag_descriptions::kDiagnosticsAppJellyDescription, kOsCrOS,
4538 FEATURE_VALUE_TYPE(ash::features::kDiagnosticsAppJelly)},
4539 {"disable-lacros-tts-support",
4540 flag_descriptions::kDisableLacrosTtsSupportName,
4541 flag_descriptions::kDisableLacrosTtsSupportDescription, kOsCrOS,
4542 FEATURE_VALUE_TYPE(ash::features::kDisableLacrosTtsSupport)},
4543 {"disable-dns-proxy", flag_descriptions::kDisableDnsProxyName,
4544 flag_descriptions::kDisableDnsProxyDescription, kOsCrOS,
4545 FEATURE_VALUE_TYPE(ash::features::kDisableDnsProxy)},
4546 {"firmware-update-jelly", flag_descriptions::kFirmwareUpdateJellyName,
4547 flag_descriptions::kFirmwareUpdateJellyDescription, kOsCrOS,
4548 FEATURE_VALUE_TYPE(ash::features::kFirmwareUpdateJelly)},
4549 {"screen-saver-duration", flag_descriptions::kScreenSaverDurationName,
4550 flag_descriptions::kScreenSaverDurationDescription, kOsCrOS,
4551 FEATURE_VALUE_TYPE(ash::features::kScreenSaverDuration)},
4552 {"multi-zone-rgb-keyboard", flag_descriptions::kMultiZoneRgbKeyboardName,
4553 flag_descriptions::kMultiZoneRgbKeyboardDescription, kOsCrOS,
4554 FEATURE_VALUE_TYPE(ash::features::kMultiZoneRgbKeyboard)},
4555 {"passpoint-arc-support", flag_descriptions::kPasspointARCSupportName,
4556 flag_descriptions::kPasspointARCSupportDescription, kOsCrOS,
4557 FEATURE_VALUE_TYPE(ash::features::kPasspointARCSupport)},
4558 {"passpoint-settings", flag_descriptions::kPasspointSettingsName,
4559 flag_descriptions::kPasspointSettingsDescription, kOsCrOS,
4560 FEATURE_VALUE_TYPE(ash::features::kPasspointSettings)},
4561 {"policy-provided-trust-anchors-allowed-at-lock-screen",
4562 flag_descriptions::kPolicyProvidedTrustAnchorsAllowedAtLockScreenName,
4564 kPolicyProvidedTrustAnchorsAllowedAtLockScreenDescription,
4567 ash::features::kPolicyProvidedTrustAnchorsAllowedAtLockScreen)},
4568 {kTimeOfDayScreenSaverInternalName,
4569 flag_descriptions::kTimeOfDayScreenSaverName,
4570 flag_descriptions::kTimeOfDayScreenSaverDescription, kOsCrOS,
4571 FEATURE_VALUE_TYPE(ash::features::kTimeOfDayScreenSaver)},
4572 {kTimeOfDayWallpaperInternalName,
4573 flag_descriptions::kTimeOfDayWallpaperName,
4574 flag_descriptions::kTimeOfDayWallpaperDescription, kOsCrOS,
4575 FEATURE_VALUE_TYPE(ash::features::kTimeOfDayWallpaper)},
4576 {kTimeOfDayDlcInternalName, flag_descriptions::kTimeOfDayDlcName,
4577 flag_descriptions::kTimeOfDayDlcDescription, kOsCrOS,
4578 FEATURE_VALUE_TYPE(ash::features::kTimeOfDayDlc)},
4579 {"enable-rfc-8925", flag_descriptions::kEnableRFC8925Name,
4580 flag_descriptions::kEnableRFC8925Description, kOsCrOS,
4581 FEATURE_VALUE_TYPE(ash::features::kEnableRFC8925)},
4582 {"support-f11-and-f12-shortcuts",
4583 flag_descriptions::kSupportF11AndF12ShortcutsName,
4584 flag_descriptions::kSupportF11AndF12ShortcutsDescription, kOsCrOS,
4585 FEATURE_VALUE_TYPE(features::kSupportF11AndF12KeyShortcuts)},
4586 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
4588 #if BUILDFLAG(IS_CHROMEOS)
4589 {"cros-apps-background-event-handling",
4590 flag_descriptions::kCrosAppsBackgroundEventHandlingName,
4591 flag_descriptions::kCrosAppsBackgroundEventHandlingDescription,
4592 kOsCrOS | kOsLacros,
4593 FEATURE_VALUE_TYPE(chromeos::features::kCrosAppsBackgroundEventHandling)},
4594 {"cros-legacy-media-formats",
4595 flag_descriptions::kCrOSLegacyMediaFormatsName,
4596 flag_descriptions::kCrOSLegacyMediaFormatsDescription, kOsCrOS | kOsLacros,
4597 FEATURE_VALUE_TYPE(media::kCrOSLegacyMediaFormats)},
4598 {"disable-idle-sockets-close-on-memory-pressure",
4599 flag_descriptions::kDisableIdleSocketsCloseOnMemoryPressureName,
4600 flag_descriptions::kDisableIdleSocketsCloseOnMemoryPressureDescription,
4601 kOsCrOS | kOsLacros,
4603 chromeos::features::kDisableIdleSocketsCloseOnMemoryPressure)},
4604 {"disable-office-editing-component-app",
4605 flag_descriptions::kDisableOfficeEditingComponentAppName,
4606 flag_descriptions::kDisableOfficeEditingComponentAppDescription,
4607 kOsCrOS | kOsLacros,
4608 FEATURE_VALUE_TYPE(chromeos::features::kDisableOfficeEditingComponentApp)},
4609 {"one-group-per-renderer", flag_descriptions::kOneGroupPerRendererName,
4610 flag_descriptions::kOneGroupPerRendererDescription, kOsCrOS | kOsLacros,
4611 FEATURE_VALUE_TYPE(base::kOneGroupPerRenderer)},
4612 {"rounded-windows", flag_descriptions::kRoundedWindows,
4613 flag_descriptions::kRoundedWindowsDescription, kOsCrOS | kOsLacros,
4614 FEATURE_WITH_PARAMS_VALUE_TYPE(chromeos::features::kRoundedWindows,
4615 kRoundedWindowsRadiusVariation,
4617 {"cros-web-app-install-dialog",
4618 flag_descriptions::kCrosWebAppInstallDialogName,
4619 flag_descriptions::kCrosWebAppInstallDialogDescription,
4620 kOsCrOS | kOsLacros,
4621 FEATURE_VALUE_TYPE(chromeos::features::kCrosWebAppInstallDialog)},
4622 #endif // BUILDFLAG(IS_CHROMEOS)
4624 "disable-accelerated-video-decode",
4625 flag_descriptions::kAcceleratedVideoDecodeName,
4626 flag_descriptions::kAcceleratedVideoDecodeDescription,
4627 kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLacros | kOsFuchsia |
4629 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
4632 "disable-accelerated-video-encode",
4633 flag_descriptions::kAcceleratedVideoEncodeName,
4634 flag_descriptions::kAcceleratedVideoEncodeDescription,
4635 kOsMac | kOsWin | kOsCrOS | kOsAndroid,
4636 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoEncode),
4638 #if BUILDFLAG(IS_WIN)
4640 "enable-hardware-secure-decryption",
4641 flag_descriptions::kHardwareSecureDecryptionName,
4642 flag_descriptions::kHardwareSecureDecryptionDescription,
4644 FEATURE_VALUE_TYPE(media::kHardwareSecureDecryption),
4647 "enable-hardware-secure-decryption-experiment",
4648 flag_descriptions::kHardwareSecureDecryptionExperimentName,
4649 flag_descriptions::kHardwareSecureDecryptionExperimentDescription,
4651 FEATURE_VALUE_TYPE(media::kHardwareSecureDecryptionExperiment),
4654 "enable-hardware-secure-decryption-fallback",
4655 flag_descriptions::kHardwareSecureDecryptionFallbackName,
4656 flag_descriptions::kHardwareSecureDecryptionFallbackDescription,
4658 FEATURE_VALUE_TYPE(media::kHardwareSecureDecryptionFallback),
4661 "enable-media-foundation-clear",
4662 flag_descriptions::kMediaFoundationClearName,
4663 flag_descriptions::kMediaFoundationClearDescription,
4665 FEATURE_VALUE_TYPE(media::kMediaFoundationClearPlayback),
4667 {"enable-media-foundation-clear-rendering-strategy",
4668 flag_descriptions::kMediaFoundationClearStrategyName,
4669 flag_descriptions::kMediaFoundationClearStrategyDescription, kOsWin,
4670 FEATURE_WITH_PARAMS_VALUE_TYPE(media::kMediaFoundationClearRendering,
4671 kMediaFoundationClearStrategyVariations,
4672 "MediaFoundationClearRendering")},
4674 "enable-waitable-swap-chain",
4675 flag_descriptions::kUseWaitableSwapChainName,
4676 flag_descriptions::kUseWaitableSwapChainDescription,
4678 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kDXGIWaitableSwapChain,
4679 kDXGIWaitableSwapChainVariations,
4680 "DXGIWaitableSwapChain"),
4683 "fluent-scrollbars",
4684 flag_descriptions::kFluentScrollbarsName,
4685 flag_descriptions::kFluentScrollbarsDescription,
4687 FEATURE_VALUE_TYPE(features::kFluentScrollbar),
4690 #if BUILDFLAG(IS_CHROMEOS_ASH)
4692 "zero-copy-video-capture",
4693 flag_descriptions::kZeroCopyVideoCaptureName,
4694 flag_descriptions::kZeroCopyVideoCaptureDescription,
4696 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
4697 switches::kVideoCaptureUseGpuMemoryBuffer,
4699 switches::kDisableVideoCaptureUseGpuMemoryBuffer,
4703 "ash-debug-shortcuts",
4704 flag_descriptions::kDebugShortcutsName,
4705 flag_descriptions::kDebugShortcutsDescription,
4707 SINGLE_VALUE_TYPE(ash::switches::kAshDebugShortcuts),
4709 {"ui-slow-animations", flag_descriptions::kUiSlowAnimationsName,
4710 flag_descriptions::kUiSlowAnimationsDescription, kOsCrOS,
4711 SINGLE_VALUE_TYPE(switches::kUISlowAnimations)},
4712 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
4713 #if BUILDFLAG(IS_WIN)
4715 "zero-copy-video-capture",
4716 flag_descriptions::kZeroCopyVideoCaptureName,
4717 flag_descriptions::kZeroCopyVideoCaptureDescription,
4719 FEATURE_VALUE_TYPE(media::kMediaFoundationD3D11VideoCapture),
4721 #endif // BUILDFLAG(IS_WIN)
4722 {"debug-packed-apps", flag_descriptions::kDebugPackedAppName,
4723 flag_descriptions::kDebugPackedAppDescription, kOsDesktop,
4724 SINGLE_VALUE_TYPE(switches::kDebugPackedApps)},
4725 {"username-first-flow-fallback-crowdsourcing",
4726 flag_descriptions::kUsernameFirstFlowFallbackCrowdsourcingName,
4727 flag_descriptions::kUsernameFirstFlowFallbackCrowdsourcingDescription,
4730 password_manager::features::kUsernameFirstFlowFallbackCrowdsourcing)},
4731 {"username-first-flow-store-several-values",
4732 flag_descriptions::kUsernameFirstFlowStoreSeveralValuesName,
4733 flag_descriptions::kUsernameFirstFlowStoreSeveralValuesDescription, kOsAll,
4735 password_manager::features::kUsernameFirstFlowStoreSeveralValues)},
4736 {"username-first-flow-with-intermediate-values",
4737 flag_descriptions::kUsernameFirstFlowWithIntermediateValuesName,
4738 flag_descriptions::kUsernameFirstFlowWithIntermediateValuesDescription,
4741 password_manager::features::kUsernameFirstFlowWithIntermediateValues)},
4742 {"username-first-flow-with-intermediate-values-predictions",
4743 flag_descriptions::kUsernameFirstFlowWithIntermediateValuesPredictionsName,
4745 kUsernameFirstFlowWithIntermediateValuesPredictionsDescription,
4748 password_manager::features::
4749 kUsernameFirstFlowWithIntermediateValuesPredictions)},
4750 {"username-first-flow-with-intermediate-values-voting",
4751 flag_descriptions::kUsernameFirstFlowWithIntermediateValuesVotingName,
4753 kUsernameFirstFlowWithIntermediateValuesVotingDescription,
4755 FEATURE_VALUE_TYPE(password_manager::features::
4756 kUsernameFirstFlowWithIntermediateValuesVoting)},
4757 {"enable-show-autofill-signatures",
4758 flag_descriptions::kShowAutofillSignaturesName,
4759 flag_descriptions::kShowAutofillSignaturesDescription, kOsAll,
4760 SINGLE_VALUE_TYPE(autofill::switches::kShowAutofillSignatures)},
4761 {"wallet-service-use-sandbox",
4762 flag_descriptions::kWalletServiceUseSandboxName,
4763 flag_descriptions::kWalletServiceUseSandboxDescription,
4764 kOsAndroid | kOsDesktop,
4765 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
4766 autofill::switches::kWalletServiceUseSandbox,
4768 autofill::switches::kWalletServiceUseSandbox,
4770 {"web-authentication-filter-google-passkeys",
4771 flag_descriptions::kWebAuthnFilterGooglePasskeysName,
4772 flag_descriptions::kWebAuthnFilterGooglePasskeysDescription, kOsAll,
4773 FEATURE_VALUE_TYPE(device::kWebAuthnFilterGooglePasskeys)},
4774 {"web-authentication-screen-reader-mode",
4775 flag_descriptions::kWebAuthnScreenReaderModeName,
4776 flag_descriptions::kWebAuthnScreenReaderModeDescription, kOsDesktop,
4777 FEATURE_VALUE_TYPE(device::kWebAuthnScreenReaderMode)},
4778 {"enable-web-bluetooth", flag_descriptions::kWebBluetoothName,
4779 flag_descriptions::kWebBluetoothDescription, kOsLinux,
4780 FEATURE_VALUE_TYPE(features::kWebBluetooth)},
4781 {"enable-web-bluetooth-new-permissions-backend",
4782 flag_descriptions::kWebBluetoothNewPermissionsBackendName,
4783 flag_descriptions::kWebBluetoothNewPermissionsBackendDescription,
4784 kOsAndroid | kOsDesktop,
4785 FEATURE_VALUE_TYPE(features::kWebBluetoothNewPermissionsBackend)},
4786 {"enable-webusb-device-detection",
4787 flag_descriptions::kWebUsbDeviceDetectionName,
4788 flag_descriptions::kWebUsbDeviceDetectionDescription, kOsDesktop,
4789 FEATURE_VALUE_TYPE(features::kWebUsbDeviceDetection)},
4790 #if defined(USE_AURA)
4791 {"overscroll-history-navigation",
4792 flag_descriptions::kOverscrollHistoryNavigationName,
4793 flag_descriptions::kOverscrollHistoryNavigationDescription, kOsAura,
4794 FEATURE_VALUE_TYPE(features::kOverscrollHistoryNavigation)},
4795 {"pull-to-refresh", flag_descriptions::kPullToRefreshName,
4796 flag_descriptions::kPullToRefreshDescription, kOsAura,
4797 MULTI_VALUE_TYPE(kPullToRefreshChoices)},
4799 {"overscroll-history-navigation-setting",
4800 flag_descriptions::kOverscrollHistoryNavigationSettingName,
4801 flag_descriptions::kOverscrollHistoryNavigationSettingDescription,
4803 FEATURE_VALUE_TYPE(features::kOverscrollHistoryNavigationSetting)},
4804 {"enable-touch-drag-drop", flag_descriptions::kTouchDragDropName,
4805 flag_descriptions::kTouchDragDropDescription, kOsWin | kOsCrOS,
4806 ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTouchDragDrop,
4807 switches::kDisableTouchDragDrop)},
4808 {"touch-selection-strategy", flag_descriptions::kTouchSelectionStrategyName,
4809 flag_descriptions::kTouchSelectionStrategyDescription,
4810 kOsAndroid, // TODO(mfomitchev): Add CrOS/Win/Linux support soon.
4811 MULTI_VALUE_TYPE(kTouchTextSelectionStrategyChoices)},
4812 #if BUILDFLAG(IS_CHROMEOS_ASH)
4813 {"enable-virtual-keyboard", flag_descriptions::kVirtualKeyboardName,
4814 flag_descriptions::kVirtualKeyboardDescription, kOsCrOS,
4815 SINGLE_VALUE_TYPE(keyboard::switches::kEnableVirtualKeyboard)},
4816 {"disable-virtual-keyboard",
4817 flag_descriptions::kVirtualKeyboardDisabledName,
4818 flag_descriptions::kVirtualKeyboardDisabledDescription, kOsCrOS,
4819 SINGLE_VALUE_TYPE(keyboard::switches::kDisableVirtualKeyboard)},
4820 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
4821 {"enable-webgl-developer-extensions",
4822 flag_descriptions::kWebglDeveloperExtensionsName,
4823 flag_descriptions::kWebglDeveloperExtensionsDescription, kOsAll,
4824 SINGLE_VALUE_TYPE(switches::kEnableWebGLDeveloperExtensions)},
4825 {"enable-webgl-draft-extensions",
4826 flag_descriptions::kWebglDraftExtensionsName,
4827 flag_descriptions::kWebglDraftExtensionsDescription, kOsAll,
4828 SINGLE_VALUE_TYPE(switches::kEnableWebGLDraftExtensions)},
4829 {"enable-zero-copy", flag_descriptions::kZeroCopyName,
4830 flag_descriptions::kZeroCopyDescription, kOsAll,
4831 ENABLE_DISABLE_VALUE_TYPE(blink::switches::kEnableZeroCopy,
4832 blink::switches::kDisableZeroCopy)},
4833 {"enable-vulkan", flag_descriptions::kEnableVulkanName,
4834 flag_descriptions::kEnableVulkanDescription,
4835 kOsWin | kOsLinux | kOsAndroid | kOsCrOS,
4836 FEATURE_VALUE_TYPE(features::kVulkan)},
4837 #if BUILDFLAG(IS_ANDROID)
4838 {"translate-message-ui", flag_descriptions::kTranslateMessageUIName,
4839 flag_descriptions::kTranslateMessageUIDescription, kOsAndroid,
4840 FEATURE_WITH_PARAMS_VALUE_TYPE(translate::kTranslateMessageUI,
4841 kTranslateMessageUIVariations,
4842 "TranslateMessageUI")},
4843 #endif // BUILDFLAG(IS_ANDROID)
4845 #if BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS) && !BUILDFLAG(IS_CHROMEOS_ASH)
4846 {"enable-system-notifications",
4847 flag_descriptions::kNotificationsSystemFlagName,
4848 flag_descriptions::kNotificationsSystemFlagDescription,
4849 kOsMac | kOsLinux | kOsWin,
4850 FEATURE_VALUE_TYPE(features::kSystemNotifications)},
4851 #endif // BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS) && !BUILDFLAG(IS_CHROMEOS_ASH)
4852 #if BUILDFLAG(IS_ANDROID)
4853 {"adaptive-button-in-top-toolbar",
4854 flag_descriptions::kAdaptiveButtonInTopToolbarName,
4855 flag_descriptions::kAdaptiveButtonInTopToolbarDescription, kOsAndroid,
4856 FEATURE_WITH_PARAMS_VALUE_TYPE(
4857 chrome::android::kAdaptiveButtonInTopToolbar,
4858 kAdaptiveButtonInTopToolbarVariations,
4859 "OptionalToolbarButton")},
4860 {"adaptive-button-in-top-toolbar-translate",
4861 flag_descriptions::kAdaptiveButtonInTopToolbarTranslateName,
4862 flag_descriptions::kAdaptiveButtonInTopToolbarTranslateDescription,
4864 FEATURE_VALUE_TYPE(chrome::android::kAdaptiveButtonInTopToolbarTranslate)},
4865 {"adaptive-button-in-top-toolbar-add-to-bookmarks",
4866 flag_descriptions::kAdaptiveButtonInTopToolbarAddToBookmarksName,
4867 flag_descriptions::kAdaptiveButtonInTopToolbarAddToBookmarksDescription,
4870 chrome::android::kAdaptiveButtonInTopToolbarAddToBookmarks)},
4871 {"adaptive-button-in-top-toolbar-customization",
4872 flag_descriptions::kAdaptiveButtonInTopToolbarCustomizationName,
4873 flag_descriptions::kAdaptiveButtonInTopToolbarCustomizationDescription,
4875 FEATURE_WITH_PARAMS_VALUE_TYPE(
4876 chrome::android::kAdaptiveButtonInTopToolbarCustomizationV2,
4877 kAdaptiveButtonInTopToolbarCustomizationVariations,
4878 "OptionalToolbarButtonCustomization")},
4879 {"contextual-page-actions", flag_descriptions::kContextualPageActionsName,
4880 flag_descriptions::kContextualPageActionsDescription, kOsAndroid,
4881 FEATURE_WITH_PARAMS_VALUE_TYPE(
4882 segmentation_platform::features::kContextualPageActions,
4883 kContextualPageActionsVariations,
4884 "ContextualPageActions")},
4885 {"contextual-page-actions-with-price-tracking",
4886 flag_descriptions::kContextualPageActionsPriceTrackingName,
4887 flag_descriptions::kContextualPageActionsPriceTrackingDescription,
4889 FEATURE_WITH_PARAMS_VALUE_TYPE(
4890 segmentation_platform::features::kContextualPageActionPriceTracking,
4891 kContextualPageActionPriceTrackingVariations,
4892 "ContextualPageActionPriceTracking")},
4893 {"contextual-page-actions-reader-mode",
4894 flag_descriptions::kContextualPageActionsReaderModeName,
4895 flag_descriptions::kContextualPageActionsReaderModeDescription, kOsAndroid,
4896 FEATURE_WITH_PARAMS_VALUE_TYPE(
4897 segmentation_platform::features::kContextualPageActionReaderMode,
4898 kContextualPageActionReaderModeVariations,
4899 "ContextualPageActionReaderMode")},
4900 {"contextual-page-actions-share-model",
4901 flag_descriptions::kContextualPageActionsShareModelName,
4902 flag_descriptions::kContextualPageActionsShareModelDescription, kOsAndroid,
4904 segmentation_platform::features::kContextualPageActionShareModel)},
4905 {"reader-mode-heuristics", flag_descriptions::kReaderModeHeuristicsName,
4906 flag_descriptions::kReaderModeHeuristicsDescription, kOsAndroid,
4907 MULTI_VALUE_TYPE(kReaderModeHeuristicsChoices)},
4908 {"screenshots-for-android-v2",
4909 flag_descriptions::kScreenshotsForAndroidV2Name,
4910 flag_descriptions::kScreenshotsForAndroidV2Description, kOsAndroid,
4911 FEATURE_VALUE_TYPE(share::kScreenshotsForAndroidV2)},
4912 {"default-viewport-is-device-width",
4913 flag_descriptions::kDefaultViewportIsDeviceWidthName,
4914 flag_descriptions::kDefaultViewportIsDeviceWidthDescription, kOsAndroid,
4915 FEATURE_VALUE_TYPE(blink::features::kDefaultViewportIsDeviceWidth)},
4916 #endif // BUILDFLAG(IS_ANDROID)
4917 {"in-product-help-demo-mode-choice",
4918 flag_descriptions::kInProductHelpDemoModeChoiceName,
4919 flag_descriptions::kInProductHelpDemoModeChoiceDescription, kOsAll,
4920 FEATURE_WITH_PARAMS_VALUE_TYPE(
4921 feature_engagement::kIPHDemoMode,
4922 feature_engagement::kIPHDemoModeChoiceVariations,
4924 {"in-product-help-use-client-config",
4925 flag_descriptions::kInProductHelpUseClientConfigName,
4926 flag_descriptions::kInProductHelpUseClientConfigDescription, kOsAll,
4927 FEATURE_VALUE_TYPE(feature_engagement::kUseClientConfigIPH)},
4928 #if BUILDFLAG(IS_CHROMEOS_ASH)
4929 {"enable-lock-screen-notification",
4930 flag_descriptions::kLockScreenNotificationName,
4931 flag_descriptions::kLockScreenNotificationDescription, kOsCrOS,
4932 FEATURE_VALUE_TYPE(ash::features::kLockScreenNotifications)},
4933 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
4934 #if BUILDFLAG(IS_CHROMEOS_ASH)
4935 {"system-extensions", flag_descriptions::kSystemExtensionsName,
4936 flag_descriptions::kSystemExtensionsDescription, kOsCrOS,
4937 FEATURE_VALUE_TYPE(ash::features::kSystemExtensions)},
4938 {"enable-service-workers-for-chrome-untrusted",
4939 flag_descriptions::kEnableServiceWorkersForChromeUntrustedName,
4940 flag_descriptions::kEnableServiceWorkersForChromeUntrustedDescription,
4942 FEATURE_VALUE_TYPE(features::kEnableServiceWorkersForChromeUntrusted)},
4943 {"enterprise-reporting-ui", flag_descriptions::kEnterpriseReportingUIName,
4944 flag_descriptions::kEnterpriseReportingUIDescription, kOsCrOS,
4945 FEATURE_VALUE_TYPE(ash::features::kEnterpriseReportingUI)},
4946 {"crostini-reset-lxd-db", flag_descriptions::kCrostiniResetLxdDbName,
4947 flag_descriptions::kCrostiniResetLxdDbDescription, kOsCrOS,
4948 FEATURE_VALUE_TYPE(ash::features::kCrostiniResetLxdDb)},
4949 {"terminal-alternative-emulator",
4950 flag_descriptions::kTerminalAlternativeEmulatorName,
4951 flag_descriptions::kTerminalAlternativeEmulatorDescription, kOsCrOS,
4952 FEATURE_VALUE_TYPE(ash::features::kTerminalAlternativeEmulator)},
4953 {"terminal-dev", flag_descriptions::kTerminalDevName,
4954 flag_descriptions::kTerminalDevDescription, kOsCrOS,
4955 FEATURE_VALUE_TYPE(ash::features::kTerminalDev)},
4956 {"permissive-usb-passthrough",
4957 flag_descriptions::kPermissiveUsbPassthroughName,
4958 flag_descriptions::kPermissiveUsbPassthroughDescription, kOsCrOS,
4959 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootPermissiveUsbPassthrough")},
4960 {"crostini-multi-container", flag_descriptions::kCrostiniMultiContainerName,
4961 flag_descriptions::kCrostiniMultiContainerDescription, kOsCrOS,
4962 FEATURE_VALUE_TYPE(ash::features::kCrostiniMultiContainer)},
4963 {"crostini-qt-ime-support", flag_descriptions::kCrostiniQtImeSupportName,
4964 flag_descriptions::kCrostiniQtImeSupportDescription, kOsCrOS,
4965 FEATURE_VALUE_TYPE(ash::features::kCrostiniQtImeSupport)},
4966 {"crostini-virtual-keyboard-support",
4967 flag_descriptions::kCrostiniVirtualKeyboardSupportName,
4968 flag_descriptions::kCrostiniVirtualKeyboardSupportDescription, kOsCrOS,
4969 FEATURE_VALUE_TYPE(ash::features::kCrostiniVirtualKeyboardSupport)},
4970 {"crostini-use-lxd-5", flag_descriptions::kCrostiniUseLxd5Name,
4971 flag_descriptions::kCrostiniUseLxd5Description, kOsCrOS,
4972 FEATURE_VALUE_TYPE(ash::features::kCrostiniUseLxd5)},
4973 {"bruschetta", flag_descriptions::kBruschettaName,
4974 flag_descriptions::kBruschettaDescription, kOsCrOS,
4975 FEATURE_VALUE_TYPE(ash::features::kBruschetta)},
4976 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
4977 #if (BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || \
4978 BUILDFLAG(IS_ANDROID)) && \
4980 {"mojo-linux-sharedmem", flag_descriptions::kMojoLinuxChannelSharedMemName,
4981 flag_descriptions::kMojoLinuxChannelSharedMemDescription,
4982 kOsCrOS | kOsLinux | kOsLacros | kOsAndroid,
4983 FEATURE_VALUE_TYPE(mojo::core::kMojoLinuxChannelSharedMem)},
4985 #if BUILDFLAG(IS_ANDROID)
4986 {"enable-site-isolation-for-password-sites",
4987 flag_descriptions::kSiteIsolationForPasswordSitesName,
4988 flag_descriptions::kSiteIsolationForPasswordSitesDescription, kOsAndroid,
4990 site_isolation::features::kSiteIsolationForPasswordSites)},
4991 {"enable-site-per-process", flag_descriptions::kStrictSiteIsolationName,
4992 flag_descriptions::kStrictSiteIsolationDescription, kOsAndroid,
4993 SINGLE_VALUE_TYPE(switches::kSitePerProcess)},
4995 {"enable-isolated-web-apps", flag_descriptions::kEnableIsolatedWebAppsName,
4996 flag_descriptions::kEnableIsolatedWebAppsDescription, kOsDesktop,
4997 FEATURE_VALUE_TYPE(features::kIsolatedWebApps)},
4998 #if BUILDFLAG(IS_CHROMEOS)
4999 {"enable-isolated-web-app-automatic-updates",
5000 flag_descriptions::kEnableIsolatedWebAppAutomaticUpdatesName,
5001 flag_descriptions::kEnableIsolatedWebAppAutomaticUpdatesDescription,
5002 kOsCrOS | kOsLacros,
5003 FEATURE_VALUE_TYPE(features::kIsolatedWebAppAutomaticUpdates)},
5005 {"enable-isolated-web-app-dev-mode",
5006 flag_descriptions::kEnableIsolatedWebAppDevModeName,
5007 flag_descriptions::kEnableIsolatedWebAppDevModeDescription, kOsDesktop,
5008 FEATURE_VALUE_TYPE(features::kIsolatedWebAppDevMode)},
5009 #if BUILDFLAG(IS_CHROMEOS)
5010 {"install-isolated-web-app-from-url",
5011 flag_descriptions::kInstallIsolatedWebAppFromUrl,
5012 flag_descriptions::kInstallIsolatedWebAppFromUrlDescription, kOsAll,
5013 ORIGIN_LIST_VALUE_TYPE(switches::kInstallIsolatedWebAppFromUrl, "")},
5015 {"isolate-origins", flag_descriptions::kIsolateOriginsName,
5016 flag_descriptions::kIsolateOriginsDescription, kOsAll,
5017 ORIGIN_LIST_VALUE_TYPE(switches::kIsolateOrigins, "")},
5018 {about_flags::kSiteIsolationTrialOptOutInternalName,
5019 flag_descriptions::kSiteIsolationOptOutName,
5020 flag_descriptions::kSiteIsolationOptOutDescription, kOsAll,
5021 MULTI_VALUE_TYPE(kSiteIsolationOptOutChoices)},
5022 {"isolation-by-default", flag_descriptions::kIsolationByDefaultName,
5023 flag_descriptions::kIsolationByDefaultDescription, kOsAll,
5024 SINGLE_VALUE_TYPE(switches::kIsolationByDefault)},
5025 {"allow-insecure-localhost", flag_descriptions::kAllowInsecureLocalhostName,
5026 flag_descriptions::kAllowInsecureLocalhostDescription, kOsAll,
5027 SINGLE_VALUE_TYPE(switches::kAllowInsecureLocalhost)},
5028 {"text-based-audio-descriptions",
5029 flag_descriptions::kTextBasedAudioDescriptionName,
5030 flag_descriptions::kTextBasedAudioDescriptionDescription, kOsAll,
5031 FEATURE_VALUE_TYPE(features::kTextBasedAudioDescription)},
5032 {"bypass-app-banner-engagement-checks",
5033 flag_descriptions::kBypassAppBannerEngagementChecksName,
5034 flag_descriptions::kBypassAppBannerEngagementChecksDescription, kOsAll,
5035 SINGLE_VALUE_TYPE(webapps::switches::kBypassAppBannerEngagementChecks)},
5036 {"enable-pwas-default-offline-page",
5037 flag_descriptions::kPWAsDefaultOfflinePageName,
5038 flag_descriptions::kPWAsDefaultOfflinePageDescription,
5039 kOsAndroid | kOsDesktop,
5040 FEATURE_VALUE_TYPE(features::kPWAsDefaultOfflinePage)},
5041 {"enable-desktop-pwas-elided-extensions-menu",
5042 flag_descriptions::kDesktopPWAsElidedExtensionsMenuName,
5043 flag_descriptions::kDesktopPWAsElidedExtensionsMenuDescription, kOsDesktop,
5044 FEATURE_VALUE_TYPE(features::kDesktopPWAsElidedExtensionsMenu)},
5045 {"enable-desktop-pwas-tab-strip",
5046 flag_descriptions::kDesktopPWAsTabStripName,
5047 flag_descriptions::kDesktopPWAsTabStripDescription, kOsDesktop,
5048 FEATURE_VALUE_TYPE(blink::features::kDesktopPWAsTabStrip)},
5049 {"enable-desktop-pwas-tab-strip-settings",
5050 flag_descriptions::kDesktopPWAsTabStripSettingsName,
5051 flag_descriptions::kDesktopPWAsTabStripSettingsDescription, kOsDesktop,
5052 FEATURE_VALUE_TYPE(features::kDesktopPWAsTabStripSettings)},
5053 {"enable-desktop-pwas-tab-strip-customizations",
5054 flag_descriptions::kDesktopPWAsTabStripCustomizationsName,
5055 flag_descriptions::kDesktopPWAsTabStripCustomizationsDescription,
5057 FEATURE_VALUE_TYPE(blink::features::kDesktopPWAsTabStripCustomizations)},
5058 {"enable-desktop-pwas-launch-handler",
5059 flag_descriptions::kDesktopPWAsLaunchHandlerName,
5060 flag_descriptions::kDesktopPWAsLaunchHandlerDescription, kOsDesktop,
5061 FEATURE_VALUE_TYPE(blink::features::kWebAppEnableLaunchHandler)},
5062 {"enable-desktop-pwas-sub-apps", flag_descriptions::kDesktopPWAsSubAppsName,
5063 flag_descriptions::kDesktopPWAsSubAppsDescription,
5064 kOsWin | kOsLinux | kOsLacros | kOsMac | kOsCrOS | kOsFuchsia,
5065 FEATURE_VALUE_TYPE(blink::features::kDesktopPWAsSubApps)},
5066 {"enable-desktop-pwas-scope-extensions",
5067 flag_descriptions::kDesktopPWAsScopeExtensionsName,
5068 flag_descriptions::kDesktopPWAsScopeExtensionsDescription, kOsDesktop,
5069 FEATURE_VALUE_TYPE(blink::features::kWebAppEnableScopeExtensions)},
5070 {"enable-desktop-pwas-borderless",
5071 flag_descriptions::kDesktopPWAsBorderlessName,
5072 flag_descriptions::kDesktopPWAsBorderlessDescription,
5073 kOsLinux | kOsLacros | kOsCrOS,
5074 FEATURE_VALUE_TYPE(blink::features::kWebAppBorderless)},
5075 {"enable-desktop-pwas-additional-windowing-controls",
5076 flag_descriptions::kDesktopPWAsAdditionalWindowingControlsName,
5077 flag_descriptions::kDesktopPWAsAdditionalWindowingControlsDescription,
5078 kOsWin | kOsLinux | kOsLacros | kOsMac | kOsCrOS | kOsFuchsia,
5080 blink::features::kDesktopPWAsAdditionalWindowingControls)},
5081 {"enable-desktop-pwas-web-bundles",
5082 flag_descriptions::kDesktopPWAsWebBundlesName,
5083 flag_descriptions::kDesktopPWAsWebBundlesDescription, kOsDesktop,
5084 FEATURE_VALUE_TYPE(features::kDesktopPWAsWebBundles)},
5085 {"record-web-app-debug-info", flag_descriptions::kRecordWebAppDebugInfoName,
5086 flag_descriptions::kRecordWebAppDebugInfoDescription, kOsDesktop,
5087 FEATURE_VALUE_TYPE(features::kRecordWebAppDebugInfo)},
5088 #if !BUILDFLAG(IS_ANDROID)
5089 {"web-app-dedupe-install-urls",
5090 flag_descriptions::kWebAppDedupeInstallUrlsName,
5091 flag_descriptions::kWebAppDedupeInstallUrlsDescription, kOsDesktop,
5092 FEATURE_VALUE_TYPE(features::kWebAppDedupeInstallUrls)},
5093 {"web-app-manifest-immediate-updating",
5094 flag_descriptions::kWebAppManifestImmediateUpdatingName,
5095 flag_descriptions::kWebAppManifestImmediateUpdatingDescription, kOsDesktop,
5096 FEATURE_VALUE_TYPE(features::kWebAppManifestImmediateUpdating)},
5097 {"web-app-sync-generated-icon-background-fix",
5098 flag_descriptions::kWebAppSyncGeneratedIconBackgroundFixName,
5099 flag_descriptions::kWebAppSyncGeneratedIconBackgroundFixDescription,
5101 FEATURE_VALUE_TYPE(features::kWebAppSyncGeneratedIconBackgroundFix)},
5102 {"web-app-sync-generated-icon-retroactive-fix",
5103 flag_descriptions::kWebAppSyncGeneratedIconRetroactiveFixName,
5104 flag_descriptions::kWebAppSyncGeneratedIconRetroactiveFixDescription,
5106 FEATURE_VALUE_TYPE(features::kWebAppSyncGeneratedIconRetroactiveFix)},
5107 {"web-app-sync-generated-icon-update-fix",
5108 flag_descriptions::kWebAppSyncGeneratedIconUpdateFixName,
5109 flag_descriptions::kWebAppSyncGeneratedIconUpdateFixDescription,
5111 FEATURE_VALUE_TYPE(features::kWebAppSyncGeneratedIconUpdateFix)},
5112 #endif // !BUILDFLAG(IS_ANDROID)
5113 {"use-sync-sandbox", flag_descriptions::kSyncSandboxName,
5114 flag_descriptions::kSyncSandboxDescription, kOsAll,
5115 SINGLE_VALUE_TYPE_AND_VALUE(
5116 syncer::kSyncServiceURL,
5117 "https://chrome-sync.sandbox.google.com/chrome-sync/alpha")},
5118 #if !BUILDFLAG(IS_ANDROID)
5119 {"media-router-cast-allow-all-ips",
5120 flag_descriptions::kMediaRouterCastAllowAllIPsName,
5121 flag_descriptions::kMediaRouterCastAllowAllIPsDescription, kOsDesktop,
5122 FEATURE_VALUE_TYPE(media_router::kCastAllowAllIPsFeature)},
5123 {"global-media-controls-cast-start-stop",
5124 flag_descriptions::kGlobalMediaControlsCastStartStopName,
5125 flag_descriptions::kGlobalMediaControlsCastStartStopDescription,
5127 FEATURE_VALUE_TYPE(media_router::kGlobalMediaControlsCastStartStop)},
5128 {"media-remoting-without-fullscreen",
5129 flag_descriptions::kMediaRemotingWithoutFullscreenName,
5130 flag_descriptions::kMediaRemotingWithoutFullscreenDescription, kOsDesktop,
5131 FEATURE_VALUE_TYPE(media::kMediaRemotingWithoutFullscreen)},
5132 {"remote-playback-backend", flag_descriptions::kRemotePlaybackBackendName,
5133 flag_descriptions::kRemotePlaybackBackendDescription, kOsDesktop,
5134 FEATURE_VALUE_TYPE(blink::features::kRemotePlaybackBackend)},
5135 {"allow-all-sites-to-initiate-mirroring",
5136 flag_descriptions::kAllowAllSitesToInitiateMirroringName,
5137 flag_descriptions::kAllowAllSitesToInitiateMirroringDescription,
5139 FEATURE_VALUE_TYPE(media_router::kAllowAllSitesToInitiateMirroring)},
5140 {"media-route-dial-provider",
5141 flag_descriptions::kDialMediaRouteProviderName,
5142 flag_descriptions::kDialMediaRouteProviderDescription, kOsDesktop,
5143 FEATURE_VALUE_TYPE(media_router::kDialMediaRouteProvider)},
5145 {"cast-streaming-hardware-h264",
5146 flag_descriptions::kCastStreamingHardwareH264Name,
5147 flag_descriptions::kCastStreamingHardwareH264Description, kOsDesktop,
5148 ENABLE_DISABLE_VALUE_TYPE(
5149 switches::kCastStreamingForceEnableHardwareH264,
5150 switches::kCastStreamingForceDisableHardwareH264)},
5152 {"cast-streaming-hardware-vp8",
5153 flag_descriptions::kCastStreamingHardwareVp8Name,
5154 flag_descriptions::kCastStreamingHardwareVp8Description, kOsDesktop,
5155 ENABLE_DISABLE_VALUE_TYPE(
5156 switches::kCastStreamingForceEnableHardwareVp8,
5157 switches::kCastStreamingForceDisableHardwareVp8)},
5159 {"cast-streaming-performance-overlay",
5160 flag_descriptions::kCastStreamingPerformanceOverlayName,
5161 flag_descriptions::kCastStreamingPerformanceOverlayDescription, kOsDesktop,
5162 FEATURE_VALUE_TYPE(media::kCastStreamingPerformanceOverlay)},
5164 {"enable-openscreen-cast-streaming-session",
5165 flag_descriptions::kOpenscreenCastStreamingSessionName,
5166 flag_descriptions::kOpenscreenCastStreamingSessionDescription, kOsDesktop,
5167 FEATURE_VALUE_TYPE(media::kOpenscreenCastStreamingSession)},
5169 {"enable-cast-streaming-av1", flag_descriptions::kCastStreamingAv1Name,
5170 flag_descriptions::kCastStreamingAv1Description, kOsDesktop,
5171 FEATURE_VALUE_TYPE(media::kCastStreamingAv1)},
5173 {"enable-cast-streaming-vp9", flag_descriptions::kCastStreamingVp9Name,
5174 flag_descriptions::kCastStreamingVp9Description, kOsDesktop,
5175 FEATURE_VALUE_TYPE(media::kCastStreamingVp9)},
5177 {"enable-cast-streaming-with-hidpi",
5178 flag_descriptions::kCastEnableStreamingWithHiDPIName,
5179 flag_descriptions::kCastEnableStreamingWithHiDPIDescription, kOsDesktop,
5180 FEATURE_VALUE_TYPE(mirroring::features::kCastEnableStreamingWithHiDPI)},
5182 {"enable-os-integration-sub-managers",
5183 flag_descriptions::kEnableOsIntegrationSubManagersName,
5184 flag_descriptions::kEnableOsIntegrationSubManagersDescription, kOsDesktop,
5185 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kOsIntegrationSubManagers,
5186 kOsIntegrationSubManagersConfigVariations,
5187 "OsIntegrationSubManagers")},
5189 {"password-sharing", flag_descriptions::kEnablePasswordSharingName,
5190 flag_descriptions::kEnablePasswordSharingDescription, kOsDesktop,
5191 MULTI_VALUE_TYPE(kEnablePasswordSharingChoices)},
5193 #endif // !BUILDFLAG(IS_ANDROID)
5195 #if BUILDFLAG(IS_MAC)
5196 {"mac-syscall-sandbox", flag_descriptions::kMacSyscallSandboxName,
5197 flag_descriptions::kMacSyscallSandboxDescription, kOsMac,
5198 FEATURE_VALUE_TYPE(features::kMacSyscallSandbox)},
5200 {"mac-loopback-audio-for-cast",
5201 flag_descriptions::kMacLoopbackAudioForCastName,
5202 flag_descriptions::kMacLoopbackAudioForCastDescription, kOsMac,
5203 FEATURE_VALUE_TYPE(media::kMacLoopbackAudioForCast)},
5205 {"mac-loopback-audio-for-screen-share",
5206 flag_descriptions::kMacLoopbackAudioForScreenShareName,
5207 flag_descriptions::kMacLoopbackAudioForScreenShareDescription, kOsMac,
5208 FEATURE_VALUE_TYPE(media::kMacLoopbackAudioForScreenShare)},
5209 #endif // BUILDFLAG(IS_MAC)
5210 #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
5211 {"web-share", flag_descriptions::kWebShareName,
5212 flag_descriptions::kWebShareDescription, kOsWin | kOsCrOS | kOsMac,
5213 FEATURE_VALUE_TYPE(features::kWebShare)},
5214 #endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
5216 #if BUILDFLAG(IS_LINUX)
5217 {"ozone-platform-hint", flag_descriptions::kOzonePlatformHintName,
5218 flag_descriptions::kOzonePlatformHintDescription, kOsLinux,
5219 MULTI_VALUE_TYPE(kOzonePlatformHintRuntimeChoices)},
5220 #endif // BUILDFLAG(IS_LINUX)
5222 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
5223 {"skip-undecryptable-passwords",
5224 flag_descriptions::kSkipUndecryptablePasswordsName,
5225 flag_descriptions::kSkipUndecryptablePasswordsDescription,
5228 password_manager::features::kSkipUndecryptablePasswords)},
5230 {"force-password-initial-sync-when-decryption-fails",
5231 flag_descriptions::kForcePasswordInitialSyncWhenDecryptionFailsName,
5232 flag_descriptions::kForcePasswordInitialSyncWhenDecryptionFailsDescription,
5235 password_manager::features::kForceInitialSyncWhenDecryptionFails)},
5236 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC)
5238 #if BUILDFLAG(ENABLE_VR)
5239 {"webxr-incubations", flag_descriptions::kWebXrIncubationsName,
5240 flag_descriptions::kWebXrIncubationsDescription, kOsAll,
5241 FEATURE_VALUE_TYPE(device::features::kWebXrIncubations)},
5242 {"webxr-internals", flag_descriptions::kWebXrInternalsName,
5243 flag_descriptions::kWebXrInternalsDescription, kOsDesktop | kOsAndroid,
5244 FEATURE_VALUE_TYPE(device::features::kWebXrInternals)},
5245 {"webxr-runtime", flag_descriptions::kWebXrForceRuntimeName,
5246 flag_descriptions::kWebXrForceRuntimeDescription, kOsDesktop | kOsAndroid,
5247 MULTI_VALUE_TYPE(kWebXrForceRuntimeChoices)},
5248 #if BUILDFLAG(IS_ANDROID)
5249 {"webxr-shared-buffers", flag_descriptions::kWebXrSharedBuffersName,
5250 flag_descriptions::kWebXrSharedBuffersDescription, kOsAndroid,
5251 FEATURE_VALUE_TYPE(device::features::kWebXrSharedBuffers)},
5252 #if BUILDFLAG(ENABLE_OPENXR)
5253 {"enable-openxr-android", flag_descriptions::kOpenXRName,
5254 flag_descriptions::kOpenXRDescription, kOsAndroid,
5255 FEATURE_VALUE_TYPE(device::features::kOpenXR)},
5257 #endif // BUILDFLAG(IS_ANDROID)
5259 #if BUILDFLAG(IS_CHROMEOS_ASH)
5260 {"disable-accelerated-mjpeg-decode",
5261 flag_descriptions::kAcceleratedMjpegDecodeName,
5262 flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS,
5263 SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
5264 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
5265 {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName,
5266 flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop,
5267 FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)},
5268 #if BUILDFLAG(IS_ANDROID)
5269 {"add-to-homescreen-iph", flag_descriptions::kAddToHomescreenIPHName,
5270 flag_descriptions::kAddToHomescreenIPHDescription, kOsAndroid,
5271 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kAddToHomescreenIPH,
5272 kAddToHomescreenIPHVariations,
5273 "AddToHomescreen")},
5274 {"feature-notification-guide",
5275 flag_descriptions::kFeatureNotificationGuideName,
5276 flag_descriptions::kFeatureNotificationGuideDescription, kOsAndroid,
5277 FEATURE_WITH_PARAMS_VALUE_TYPE(
5278 feature_guide::features::kFeatureNotificationGuide,
5279 kFeatureNotificationGuideVariations,
5280 "FeatureNotificationGuide")},
5281 {"notification-permission-rationale-dialog",
5282 flag_descriptions::kNotificationPermissionRationaleName,
5283 flag_descriptions::kNotificationPermissionRationaleDescription, kOsAndroid,
5284 FEATURE_WITH_PARAMS_VALUE_TYPE(
5285 chrome::android::kNotificationPermissionVariant,
5286 kNotificationPermissionRationaleVariations,
5287 "NotificationPermissionVariant")},
5288 {"notification-permission-rationale-bottom-sheet",
5289 flag_descriptions::kNotificationPermissionRationaleBottomSheetName,
5290 flag_descriptions::kNotificationPermissionRationaleBottomSheetDescription,
5292 FEATURE_VALUE_TYPE(chrome::android::kNotificationPermissionBottomSheet)},
5293 {"feature-notification-guide-skip-check-for-low-engaged-users",
5295 kFeatureNotificationGuideSkipCheckForLowEngagedUsersName,
5297 kFeatureNotificationGuideSkipCheckForLowEngagedUsersDescription,
5299 FEATURE_VALUE_TYPE(feature_guide::features::kSkipCheckForLowEngagedUsers)},
5300 {"offline-pages-live-page-sharing",
5301 flag_descriptions::kOfflinePagesLivePageSharingName,
5302 flag_descriptions::kOfflinePagesLivePageSharingDescription, kOsAndroid,
5303 FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesLivePageSharingFeature)},
5304 {"query-tiles", flag_descriptions::kQueryTilesName,
5305 flag_descriptions::kQueryTilesDescription, kOsAndroid,
5306 FEATURE_WITH_PARAMS_VALUE_TYPE(query_tiles::features::kQueryTiles,
5307 kQueryTilesVariations,
5308 "QueryTilesVariations")},
5309 {"query-tiles-ntp", flag_descriptions::kQueryTilesNTPName,
5310 flag_descriptions::kQueryTilesNTPDescription, kOsAndroid,
5311 FEATURE_VALUE_TYPE(query_tiles::features::kQueryTilesInNTP)},
5312 {"query-tiles-on-start", flag_descriptions::kQueryTilesOnStartName,
5313 flag_descriptions::kQueryTilesOnStartDescription, kOsAndroid,
5314 FEATURE_VALUE_TYPE(query_tiles::features::kQueryTilesOnStart)},
5315 {"query-tiles-single-tier", flag_descriptions::kQueryTilesSingleTierName,
5316 flag_descriptions::kQueryTilesSingleTierDescription, kOsAndroid,
5317 SINGLE_VALUE_TYPE(query_tiles::switches::kQueryTilesSingleTier)},
5318 {"query-tiles-enable-query-editing",
5319 flag_descriptions::kQueryTilesEnableQueryEditingName,
5320 flag_descriptions::kQueryTilesEnableQueryEditingDescription, kOsAndroid,
5321 FEATURE_VALUE_TYPE(query_tiles::features::kQueryTilesEnableQueryEditing)},
5322 {"query-tiles-enable-trending",
5323 flag_descriptions::kQueryTilesEnableTrendingName,
5324 flag_descriptions::kQueryTilesEnableTrendingDescription, kOsAndroid,
5325 SINGLE_VALUE_TYPE(query_tiles::switches::kQueryTilesEnableTrending)},
5326 {"query-tiles-country-code", flag_descriptions::kQueryTilesCountryCode,
5327 flag_descriptions::kQueryTilesCountryCodeDescription, kOsAndroid,
5328 MULTI_VALUE_TYPE(kQueryTilesCountryChoices)},
5329 {"query-tiles-disable-country-override",
5330 flag_descriptions::kQueryTilesDisableCountryOverrideName,
5331 flag_descriptions::kQueryTilesDisableCountryOverrideDescription,
5334 query_tiles::features::kQueryTilesDisableCountryOverride)},
5335 {"query-tiles-instant-fetch",
5336 flag_descriptions::kQueryTilesInstantFetchName,
5337 flag_descriptions::kQueryTilesInstantFetchDescription, kOsAndroid,
5339 query_tiles::switches::kQueryTilesInstantBackgroundTask)},
5340 {"query-tiles-rank-tiles", flag_descriptions::kQueryTilesRankTilesName,
5341 flag_descriptions::kQueryTilesRankTilesDescription, kOsAndroid,
5342 SINGLE_VALUE_TYPE(query_tiles::switches::kQueryTilesRankTiles)},
5343 {"query-tiles-segmentation", flag_descriptions::kQueryTilesSegmentationName,
5344 flag_descriptions::kQueryTilesSegmentationDescription, kOsAndroid,
5345 FEATURE_VALUE_TYPE(query_tiles::features::kQueryTilesSegmentation)},
5346 {"query-tiles-swap-trending",
5347 flag_descriptions::kQueryTilesSwapTrendingName,
5348 flag_descriptions::kQueryTilesSwapTrendingDescription, kOsAndroid,
5350 query_tiles::features::kQueryTilesRemoveTrendingTilesAfterInactivity)},
5351 {"reengagement-notification",
5352 flag_descriptions::kReengagementNotificationName,
5353 flag_descriptions::kReengagementNotificationDescription, kOsAndroid,
5354 FEATURE_VALUE_TYPE(chrome::android::kReengagementNotification)},
5355 {"back-gesture-activity-tab-provider",
5356 flag_descriptions::kBackGestureActivityTabProviderName,
5357 flag_descriptions::kBackGestureActivityTabProviderDescription, kOsAndroid,
5358 FEATURE_VALUE_TYPE(chrome::android::kBackGestureRefactorAndroid)},
5359 {"back-gesture-refactor-android",
5360 flag_descriptions::kBackGestureRefactorAndroidName,
5361 flag_descriptions::kBackGestureRefactorAndroidDescription, kOsAndroid,
5362 FEATURE_VALUE_TYPE(chrome::android::kBackGestureRefactorAndroid)},
5363 {"back-gesture-refactor-activity-android",
5364 flag_descriptions::kBackGestureRefactorActivityAndroidName,
5365 flag_descriptions::kBackGestureRefactorActivityAndroidDescription,
5367 FEATURE_VALUE_TYPE(chrome::android::kBackGestureRefactorActivityAndroid)},
5368 {"draw-cutout-edge-to-edge", flag_descriptions::kDrawCutoutEdgeToEdgeName,
5369 flag_descriptions::kDrawCutoutEdgeToEdgeDescription, kOsAndroid,
5370 FEATURE_VALUE_TYPE(features::kDrawCutoutEdgeToEdge)},
5371 {"draw-edge-to-edge", flag_descriptions::kDrawEdgeToEdgeName,
5372 flag_descriptions::kDrawEdgeToEdgeDescription, kOsAndroid,
5373 FEATURE_VALUE_TYPE(chrome::android::kDrawEdgeToEdge)},
5374 {"draw-native-edge-to-edge", flag_descriptions::kDrawNativeEdgeToEdgeName,
5375 flag_descriptions::kDrawNativeEdgeToEdgeDescription, kOsAndroid,
5376 FEATURE_VALUE_TYPE(chrome::android::kDrawNativeEdgeToEdge)},
5377 {"draw-web-edge-to-edge", flag_descriptions::kDrawWebEdgeToEdgeName,
5378 flag_descriptions::kDrawWebEdgeToEdgeDescription, kOsAndroid,
5379 FEATURE_VALUE_TYPE(chrome::android::kDrawWebEdgeToEdge)},
5380 {"infobar-scroll-optimization",
5381 flag_descriptions::kInfobarScrollOptimizationName,
5382 flag_descriptions::kInfobarScrollOptimizationDescription, kOsAndroid,
5383 FEATURE_VALUE_TYPE(chrome::android::kInfobarScrollOptimization)},
5384 {"share-sheet-migration-android",
5385 flag_descriptions::kShareSheetMigrationAndroidName,
5386 flag_descriptions::kShareSheetMigrationAndroidDescription, kOsAndroid,
5387 FEATURE_VALUE_TYPE(chrome::android::kShareSheetMigrationAndroid)},
5388 {"share-sheet-custom-actions-polish",
5389 flag_descriptions::kShareSheetCustomActionsPolishName,
5390 flag_descriptions::kShareSheetCustomActionsPolishDescription, kOsAndroid,
5391 FEATURE_VALUE_TYPE(chrome::android::kShareSheetCustomActionsPolish)},
5393 #endif // BUILDFLAG(IS_ANDROID)
5394 {"disallow-doc-written-script-loads",
5395 flag_descriptions::kDisallowDocWrittenScriptsUiName,
5396 flag_descriptions::kDisallowDocWrittenScriptsUiDescription, kOsAll,
5397 // NOTE: if we want to add additional experiment entries for other
5398 // features controlled by kBlinkSettings, we'll need to add logic to
5399 // merge the flag values.
5400 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
5401 blink::switches::kBlinkSettings,
5402 "disallowFetchForDocWrittenScriptsInMainFrame=true",
5403 blink::switches::kBlinkSettings,
5404 "disallowFetchForDocWrittenScriptsInMainFrame=false")},
5405 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
5406 {"disallow-managed-profile-signout",
5407 flag_descriptions::kDisallowManagedProfileSignoutName,
5408 flag_descriptions::kDisallowManagedProfileSignoutDescription,
5409 kOsMac | kOsWin | kOsLinux | kOsLacros,
5410 FEATURE_VALUE_TYPE(kDisallowManagedProfileSignout)},
5411 #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH)
5412 {"view-transition-on-navigation",
5413 flag_descriptions::kViewTransitionOnNavigationName,
5414 flag_descriptions::kViewTransitionOnNavigationDescription, kOsAll,
5415 FEATURE_VALUE_TYPE(blink::features::kViewTransitionOnNavigation)},
5416 #if BUILDFLAG(IS_WIN)
5417 {"use-winrt-midi-api", flag_descriptions::kUseWinrtMidiApiName,
5418 flag_descriptions::kUseWinrtMidiApiDescription, kOsWin,
5419 FEATURE_VALUE_TYPE(midi::features::kMidiManagerWinrt)},
5420 {"webrtc-allow-wgc-screen-capturer",
5421 flag_descriptions::kWebRtcAllowWgcScreenCapturerName,
5422 flag_descriptions::kWebRtcAllowWgcScreenCapturerDescription, kOsWin,
5423 FEATURE_VALUE_TYPE(features::kWebRtcAllowWgcScreenCapturer)},
5424 {"webrtc-allow-wgc-window-capturer",
5425 flag_descriptions::kWebRtcAllowWgcWindowCapturerName,
5426 flag_descriptions::kWebRtcAllowWgcWindowCapturerDescription, kOsWin,
5427 FEATURE_VALUE_TYPE(features::kWebRtcAllowWgcWindowCapturer)},
5428 #endif // BUILDFLAG(IS_WIN)
5429 #if defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID)
5430 {"enable-autofill-credit-card-upload",
5431 flag_descriptions::kAutofillCreditCardUploadName,
5432 flag_descriptions::kAutofillCreditCardUploadDescription, kOsAll,
5433 FEATURE_VALUE_TYPE(autofill::features::kAutofillUpstream)},
5434 #endif // defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID)
5435 {"force-ui-direction", flag_descriptions::kForceUiDirectionName,
5436 flag_descriptions::kForceUiDirectionDescription, kOsAll,
5437 MULTI_VALUE_TYPE(kForceUIDirectionChoices)},
5438 {"force-text-direction", flag_descriptions::kForceTextDirectionName,
5439 flag_descriptions::kForceTextDirectionDescription, kOsAll,
5440 MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
5441 #if BUILDFLAG(IS_ANDROID)
5442 {"force-update-menu-type", flag_descriptions::kUpdateMenuTypeName,
5443 flag_descriptions::kUpdateMenuTypeDescription, kOsAndroid,
5444 MULTI_VALUE_TYPE(kForceUpdateMenuTypeChoices)},
5445 {"update-menu-item-custom-summary",
5446 flag_descriptions::kUpdateMenuItemCustomSummaryName,
5447 flag_descriptions::kUpdateMenuItemCustomSummaryDescription, kOsAndroid,
5448 SINGLE_VALUE_TYPE_AND_VALUE(
5449 switches::kForceShowUpdateMenuItemCustomSummary,
5451 {"force-show-update-menu-badge", flag_descriptions::kUpdateMenuBadgeName,
5452 flag_descriptions::kUpdateMenuBadgeDescription, kOsAndroid,
5453 SINGLE_VALUE_TYPE(switches::kForceShowUpdateMenuBadge)},
5454 {"set-market-url-for-testing",
5455 flag_descriptions::kSetMarketUrlForTestingName,
5456 flag_descriptions::kSetMarketUrlForTestingDescription, kOsAndroid,
5457 SINGLE_VALUE_TYPE_AND_VALUE(switches::kMarketUrlForTesting,
5458 "https://play.google.com/store/apps/"
5459 "details?id=com.android.chrome")},
5460 {"omaha-min-sdk-version-android",
5461 flag_descriptions::kOmahaMinSdkVersionAndroidName,
5462 flag_descriptions::kOmahaMinSdkVersionAndroidDescription, kOsAndroid,
5463 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kOmahaMinSdkVersionAndroid,
5464 kOmahaMinSdkVersionAndroidVariations,
5465 "OmahaMinSdkVersionAndroidStudy")},
5466 #endif // BUILDFLAG(IS_ANDROID)
5467 {"enable-tls13-early-data", flag_descriptions::kEnableTLS13EarlyDataName,
5468 flag_descriptions::kEnableTLS13EarlyDataDescription, kOsAll,
5469 FEATURE_VALUE_TYPE(net::features::kEnableTLS13EarlyData)},
5470 {"enable-tls13-kyber", flag_descriptions::kEnableTLS13KyberName,
5471 flag_descriptions::kEnableTLS13KyberDescription, kOsAll,
5472 FEATURE_VALUE_TYPE(net::features::kPostQuantumKyber)},
5473 #if BUILDFLAG(IS_ANDROID)
5474 {"feed-back-to-top", flag_descriptions::kFeedBackToTopName,
5475 flag_descriptions::kFeedBackToTopDescription, kOsAndroid,
5476 FEATURE_VALUE_TYPE(feed::kFeedBackToTop)},
5477 {"feed-loading-placeholder", flag_descriptions::kFeedLoadingPlaceholderName,
5478 flag_descriptions::kFeedLoadingPlaceholderDescription, kOsAndroid,
5479 FEATURE_VALUE_TYPE(feed::kFeedLoadingPlaceholder)},
5480 {"feed-signed-out-view-demotion",
5481 flag_descriptions::kFeedSignedOutViewDemotionName,
5482 flag_descriptions::kFeedSignedOutViewDemotionDescription, kOsAndroid,
5483 FEATURE_VALUE_TYPE(feed::kFeedSignedOutViewDemotion)},
5484 {"feed-v2-hearts", flag_descriptions::kInterestFeedV2HeartsName,
5485 flag_descriptions::kInterestFeedV2HeartsDescription, kOsAndroid,
5486 FEATURE_VALUE_TYPE(feed::kInterestFeedV2Hearts)},
5487 {"info-card-acknowledgement-tracking",
5488 flag_descriptions::kInfoCardAcknowledgementTrackingName,
5489 flag_descriptions::kInfoCardAcknowledgementTrackingDescription, kOsAndroid,
5490 FEATURE_VALUE_TYPE(feed::kInfoCardAcknowledgementTracking)},
5491 {"web-feed", flag_descriptions::kWebFeedName,
5492 flag_descriptions::kWebFeedDescription, kOsAndroid,
5493 FEATURE_WITH_PARAMS_VALUE_TYPE(feed::kWebFeed,
5496 {"web-feed-awareness", flag_descriptions::kWebFeedAwarenessName,
5497 flag_descriptions::kWebFeedAwarenessDescription, kOsAndroid,
5498 FEATURE_WITH_PARAMS_VALUE_TYPE(feed::kWebFeedAwareness,
5499 kWebFeedAwarenessVariations,
5500 "WebFeedAwareness")},
5501 {"web-feed-onboarding", flag_descriptions::kWebFeedOnboardingName,
5502 flag_descriptions::kWebFeedOnboardingDescription, kOsAndroid,
5503 FEATURE_VALUE_TYPE(feed::kWebFeedOnboarding)},
5504 {"web-feed-sort", flag_descriptions::kWebFeedSortName,
5505 flag_descriptions::kWebFeedSortDescription, kOsAndroid,
5506 FEATURE_VALUE_TYPE(feed::kWebFeedSort)},
5507 {"feed-header-stick-to-top", flag_descriptions::kFeedHeaderStickToTopName,
5508 flag_descriptions::kFeedHeaderStickToTopDescription, kOsAndroid,
5509 FEATURE_VALUE_TYPE(feed::kFeedHeaderStickToTop)},
5510 {"xsurface-metrics-reporting",
5511 flag_descriptions::kXsurfaceMetricsReportingName,
5512 flag_descriptions::kXsurfaceMetricsReportingDescription, kOsAndroid,
5513 FEATURE_VALUE_TYPE(feed::kXsurfaceMetricsReporting)},
5514 {"feed-close-refresh", flag_descriptions::kFeedCloseRefreshName,
5515 flag_descriptions::kFeedCloseRefreshDescription, kOsAndroid,
5516 FEATURE_WITH_PARAMS_VALUE_TYPE(feed::kFeedCloseRefresh,
5517 kFeedCloseRefreshVariations,
5518 "FeedCloseRefresh")},
5519 {"feed-discofeed-endpoint", flag_descriptions::kFeedDiscoFeedEndpointName,
5520 flag_descriptions::kFeedDiscoFeedEndpointDescription, kOsAndroid,
5521 FEATURE_VALUE_TYPE(feed::kDiscoFeedEndpoint)},
5522 {"feed-dynamic-colors", flag_descriptions::kFeedDynamicColorsName,
5523 flag_descriptions::kFeedDynamicColorsDescription, kOsAndroid,
5524 FEATURE_VALUE_TYPE(feed::kFeedDynamicColors)},
5525 {"feed-follow-ui-update", flag_descriptions::kFeedFollowUiUpdateName,
5526 flag_descriptions::kFeedFollowUiUpdateDescription, kOsAndroid,
5527 FEATURE_VALUE_TYPE(feed::kFeedFollowUiUpdate)},
5528 {"feed-sports-card", flag_descriptions::kFeedSportsCardName,
5529 flag_descriptions::kFeedSportsCardDescription, kOsAndroid,
5530 FEATURE_VALUE_TYPE(feed::kFeedSportsCard)},
5531 #endif // BUILDFLAG(IS_ANDROID)
5532 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
5533 BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
5534 {"following-feed-sidepanel", flag_descriptions::kFollowingFeedSidepanelName,
5535 flag_descriptions::kFollowingFeedSidepanelDescription, kOsDesktop,
5536 FEATURE_VALUE_TYPE(feed::kWebUiFeed)},
5537 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ||
5538 // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
5539 {"enable-force-dark", flag_descriptions::kAutoWebContentsDarkModeName,
5540 flag_descriptions::kAutoWebContentsDarkModeDescription, kOsAll,
5541 #if BUILDFLAG(IS_CHROMEOS_ASH)
5542 // TODO(https://crbug.com/1011696): Investigate crash reports and
5543 // re-enable variations for ChromeOS.
5544 FEATURE_VALUE_TYPE(blink::features::kForceWebContentsDarkMode)},
5546 FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kForceWebContentsDarkMode,
5547 kForceDarkVariations,
5548 "ForceDarkVariations")},
5549 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
5550 #if BUILDFLAG(IS_ANDROID)
5551 {"enable-accessibility-page-zoom",
5552 flag_descriptions::kAccessibilityPageZoomName,
5553 flag_descriptions::kAccessibilityPageZoomDescription, kOsAndroid,
5554 FEATURE_VALUE_TYPE(features::kAccessibilityPageZoom)},
5555 {"enable-accessibility-performance-filtering",
5556 flag_descriptions::kAccessibilityPerformanceFilteringName,
5557 flag_descriptions::kAccessibilityPerformanceFilteringDescription,
5559 FEATURE_VALUE_TYPE(features::kAccessibilityPerformanceFiltering)},
5560 {"enable-smart-zoom", flag_descriptions::kSmartZoomName,
5561 flag_descriptions::kSmartZoomDescription, kOsAndroid,
5562 FEATURE_VALUE_TYPE(features::kSmartZoom)},
5563 #endif // BUILDFLAG(IS_ANDROID)
5564 {"enable-experimental-accessibility-language-detection",
5565 flag_descriptions::kExperimentalAccessibilityLanguageDetectionName,
5566 flag_descriptions::kExperimentalAccessibilityLanguageDetectionDescription,
5569 ::switches::kEnableExperimentalAccessibilityLanguageDetection)},
5570 {"enable-experimental-accessibility-language-detection-dynamic",
5571 flag_descriptions::kExperimentalAccessibilityLanguageDetectionDynamicName,
5573 kExperimentalAccessibilityLanguageDetectionDynamicDescription,
5576 ::switches::kEnableExperimentalAccessibilityLanguageDetectionDynamic)},
5577 {"enable-aria-element-reflection",
5578 flag_descriptions::kAriaElementReflectionName,
5579 flag_descriptions::kAriaElementReflectionDescription, kOsAll,
5580 FEATURE_VALUE_TYPE(features::kEnableAriaElementReflection)},
5581 #if BUILDFLAG(IS_CHROMEOS_ASH)
5582 {"enable-cros-autocorrect-params-tuning",
5583 flag_descriptions::kAutocorrectParamsTuningName,
5584 flag_descriptions::kAutocorrectParamsTuningDescription, kOsCrOS,
5585 FEATURE_VALUE_TYPE(ash::features::kAutocorrectParamsTuning)},
5586 {"enable-cros-autocorrect-toggle",
5587 flag_descriptions::kAutocorrectToggleName,
5588 flag_descriptions::kAutocorrectToggleDescription, kOsCrOS,
5589 FEATURE_VALUE_TYPE(ash::features::kAutocorrectToggle)},
5590 {"enable-cros-autocorrect-by-default",
5591 flag_descriptions::kAutocorrectByDefaultName,
5592 flag_descriptions::kAutocorrectByDefaultDescription, kOsCrOS,
5593 FEATURE_VALUE_TYPE(ash::features::kAutocorrectByDefault)},
5594 {"enable-cros-autocorrect-use-replace-surrounding-text",
5595 flag_descriptions::kAutocorrectUseReplaceSurroundingTextName,
5596 flag_descriptions::kAutocorrectUseReplaceSurroundingTextDescription,
5598 FEATURE_VALUE_TYPE(ash::features::kAutocorrectUseReplaceSurroundingText)},
5599 {"enable-cros-avatars-cloud-migration",
5600 flag_descriptions::kAvatarsCloudMigrationName,
5601 flag_descriptions::kAvatarsCloudMigrationDescription, kOsCrOS,
5602 FEATURE_VALUE_TYPE(ash::features::kAvatarsCloudMigration)},
5603 {"enable-cros-diacritics-on-physical-keyboard-longpress",
5604 flag_descriptions::kDiacriticsOnPhysicalKeyboardLongpressName,
5605 flag_descriptions::kDiacriticsOnPhysicalKeyboardLongpressDescription,
5607 FEATURE_VALUE_TYPE(ash::features::kDiacriticsOnPhysicalKeyboardLongpress)},
5608 {"enable-cros-diacritics-use-replace-surrounding-text",
5609 flag_descriptions::kDiacriticsUseReplaceSurroundingTextName,
5610 flag_descriptions::kDiacriticsUseReplaceSurroundingTextDescription,
5612 FEATURE_VALUE_TYPE(ash::features::kDiacriticsUseReplaceSurroundingText)},
5613 {"enable-cros-first-party-vietnamese-input",
5614 flag_descriptions::kFirstPartyVietnameseInputName,
5615 flag_descriptions::kFirstPartyVietnameseInputDescription, kOsCrOS,
5616 FEATURE_VALUE_TYPE(ash::features::kFirstPartyVietnameseInput)},
5617 {"enable-cros-hindi-inscript-layout",
5618 flag_descriptions::kHindiInscriptLayoutName,
5619 flag_descriptions::kHindiInscriptLayoutDescription, kOsCrOS,
5620 FEATURE_VALUE_TYPE(ash::features::kHindiInscriptLayout)},
5621 {"enable-cros-ime-assist-emoji-enhanced",
5622 flag_descriptions::kImeAssistEmojiEnhancedName,
5623 flag_descriptions::kImeAssistEmojiEnhancedDescription, kOsCrOS,
5624 FEATURE_VALUE_TYPE(ash::features::kAssistEmojiEnhanced)},
5625 {"enable-cros-ime-assist-multi-word",
5626 flag_descriptions::kImeAssistMultiWordName,
5627 flag_descriptions::kImeAssistMultiWordDescription, kOsCrOS,
5628 FEATURE_VALUE_TYPE(ash::features::kAssistMultiWord)},
5629 {"enable-cros-ime-assist-multi-word-expanded",
5630 flag_descriptions::kImeAssistMultiWordExpandedName,
5631 flag_descriptions::kImeAssistMultiWordExpandedDescription, kOsCrOS,
5632 FEATURE_VALUE_TYPE(ash::features::kAssistMultiWordExpanded)},
5633 {"enable-cros-ime-fst-decoder-params-update",
5634 flag_descriptions::kImeFstDecoderParamsUpdateName,
5635 flag_descriptions::kImeFstDecoderParamsUpdateDescription, kOsCrOS,
5636 FEATURE_VALUE_TYPE(ash::features::kImeFstDecoderParamsUpdate)},
5637 {"enable-cros-virtual-keyboard-new-header",
5638 flag_descriptions::kVirtualKeyboardNewHeaderName,
5639 flag_descriptions::kVirtualKeyboardNewHeaderDescription, kOsCrOS,
5640 FEATURE_VALUE_TYPE(ash::features::kVirtualKeyboardNewHeader)},
5641 {"enable-cros-ime-system-emoji-picker-clipboard",
5642 flag_descriptions::kImeSystemEmojiPickerClipboardName,
5643 flag_descriptions::kImeSystemEmojiPickerClipboardDescription, kOsCrOS,
5644 FEATURE_VALUE_TYPE(ash::features::kImeSystemEmojiPickerClipboard)},
5645 {"enable-cros-ime-system-emoji-picker-extension",
5646 flag_descriptions::kImeSystemEmojiPickerExtensionName,
5647 flag_descriptions::kImeSystemEmojiPickerExtensionDescription, kOsCrOS,
5648 FEATURE_VALUE_TYPE(ash::features::kImeSystemEmojiPickerExtension)},
5649 {"enable-cros-ime-system-emoji-picker-gif-support",
5650 flag_descriptions::kImeSystemEmojiPickerGIFSupportName,
5651 flag_descriptions::kImeSystemEmojiPickerGIFSupportDescription, kOsCrOS,
5652 FEATURE_VALUE_TYPE(ash::features::kImeSystemEmojiPickerGIFSupport)},
5653 {"enable-cros-ime-system-emoji-picker-jelly-support",
5654 flag_descriptions::kImeSystemEmojiPickerJellySupportName,
5655 flag_descriptions::kImeSystemEmojiPickerJellySupportDescription, kOsCrOS,
5656 FEATURE_VALUE_TYPE(ash::features::kImeSystemEmojiPickerJellySupport)},
5657 {"enable-cros-ime-system-emoji-picker-search-extension",
5658 flag_descriptions::kImeSystemEmojiPickerSearchExtensionName,
5659 flag_descriptions::kImeSystemEmojiPickerSearchExtensionDescription,
5661 FEATURE_VALUE_TYPE(ash::features::kImeSystemEmojiPickerSearchExtension)},
5662 {"enable-cros-ime-stylus-handwriting",
5663 flag_descriptions::kImeStylusHandwritingName,
5664 flag_descriptions::kImeStylusHandwritingDescription, kOsCrOS,
5665 FEATURE_VALUE_TYPE(ash::features::kImeStylusHandwriting)},
5666 {"enable-cros-ime-tray-hide-voice-button",
5667 flag_descriptions::kImeTrayHideVoiceButtonName,
5668 flag_descriptions::kImeTrayHideVoiceButtonDescription, kOsCrOS,
5669 FEATURE_VALUE_TYPE(ash::features::kImeTrayHideVoiceButton)},
5670 {"enable-cros-ime-us-english-model-update",
5671 flag_descriptions::kImeUsEnglishModelUpdateName,
5672 flag_descriptions::kImeUsEnglishModelUpdateDescription, kOsCrOS,
5673 FEATURE_VALUE_TYPE(ash::features::kImeUsEnglishModelUpdate)},
5674 {"enable-cros-ime-korean-mode-switch-debug",
5675 flag_descriptions::kImeKoreanModeSwitchDebugName,
5676 flag_descriptions::kImeKoreanModeSwitchDebugDescription, kOsCrOS,
5677 FEATURE_VALUE_TYPE(ash::features::kImeKoreanModeSwitchDebug)},
5678 {"enable-cros-japanese-os-settings",
5679 flag_descriptions::kJapaneseOSSettingsName,
5680 flag_descriptions::kJapaneseOSSettingsDescription, kOsCrOS,
5681 FEATURE_VALUE_TYPE(ash::features::kJapaneseOSSettings)},
5682 {"enable-cros-multilingual-typing",
5683 flag_descriptions::kMultilingualTypingName,
5684 flag_descriptions::kMultilingualTypingDescription, kOsCrOS,
5685 FEATURE_VALUE_TYPE(ash::features::kMultilingualTyping)},
5686 {"enable-cros-on-device-grammar-check",
5687 flag_descriptions::kCrosOnDeviceGrammarCheckName,
5688 flag_descriptions::kCrosOnDeviceGrammarCheckDescription, kOsCrOS,
5689 FEATURE_VALUE_TYPE(ash::features::kOnDeviceGrammarCheck)},
5690 {"enable-cros-system-japanese-physical-typing",
5691 flag_descriptions::kSystemJapanesePhysicalTypingName,
5692 flag_descriptions::kSystemJapanesePhysicalTypingDescription, kOsCrOS,
5693 FEATURE_VALUE_TYPE(ash::features::kSystemJapanesePhysicalTyping)},
5694 {"enable-cros-virtual-keyboard-round-corners",
5695 flag_descriptions::kVirtualKeyboardRoundCornersName,
5696 flag_descriptions::kVirtualKeyboardRoundCornersDescription, kOsCrOS,
5697 FEATURE_VALUE_TYPE(ash::features::kVirtualKeyboardRoundCorners)},
5698 {"enable-cros-vm-memory-management-service",
5699 flag_descriptions::kVmMemoryManagementServiceName,
5700 flag_descriptions::kVmMemoryManagementServiceDescription, kOsCrOS,
5701 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootVmMemoryManagementService")},
5702 {"enable-experimental-accessibility-dictation-context-checking",
5703 flag_descriptions::kExperimentalAccessibilityDictationContextCheckingName,
5705 kExperimentalAccessibilityDictationContextCheckingDescription,
5708 features::kExperimentalAccessibilityDictationContextChecking)},
5709 {"enable-experimental-accessibility-google-tts-language-packs",
5710 flag_descriptions::kExperimentalAccessibilityGoogleTtsLanguagePacksName,
5712 kExperimentalAccessibilityGoogleTtsLanguagePacksDescription,
5715 features::kExperimentalAccessibilityGoogleTtsLanguagePacks)},
5716 {"enable-experimental-accessibility-google-tts-high-quality-voices",
5718 kExperimentalAccessibilityGoogleTtsHighQualityVoicesName,
5720 kExperimentalAccessibilityGoogleTtsHighQualityVoicesDescription,
5723 features::kExperimentalAccessibilityGoogleTtsHighQualityVoices)},
5724 {"enable-experimental-accessibility-manifest-v3",
5725 flag_descriptions::kExperimentalAccessibilityManifestV3Name,
5726 flag_descriptions::kExperimentalAccessibilityManifestV3Description,
5728 SINGLE_VALUE_TYPE(::switches::kEnableExperimentalAccessibilityManifestV3)},
5729 {"enable-experimental-accessibility-switch-access-text",
5730 flag_descriptions::kExperimentalAccessibilitySwitchAccessTextName,
5731 flag_descriptions::kExperimentalAccessibilitySwitchAccessTextDescription,
5734 ::switches::kEnableExperimentalAccessibilitySwitchAccessText)},
5735 {"expose-out-of-process-video-decoding-to-lacros",
5736 flag_descriptions::kExposeOutOfProcessVideoDecodingToLacrosName,
5737 flag_descriptions::kExposeOutOfProcessVideoDecodingToLacrosDescription,
5739 FEATURE_VALUE_TYPE(media::kExposeOutOfProcessVideoDecodingToLacros)},
5740 {"enable-system-proxy-for-system-services",
5741 flag_descriptions::kSystemProxyForSystemServicesName,
5742 flag_descriptions::kSystemProxyForSystemServicesDescription, kOsCrOS,
5743 FEATURE_VALUE_TYPE(ash::features::kSystemProxyForSystemServices)},
5744 {"enable-federated-service", flag_descriptions::kFederatedServiceName,
5745 flag_descriptions::kFederatedServiceDescription, kOsCrOS,
5746 FEATURE_VALUE_TYPE(ash::features::kFederatedService)},
5747 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
5748 {"enable-cros-touch-text-editing-redesign",
5749 flag_descriptions::kTouchTextEditingRedesignName,
5750 flag_descriptions::kTouchTextEditingRedesignDescription, kOsAll,
5751 FEATURE_VALUE_TYPE(features::kTouchTextEditingRedesign)},
5752 #if BUILDFLAG(IS_CHROMEOS)
5753 {"quickoffice-force-file-download",
5754 flag_descriptions::kQuickOfficeForceFileDownloadName,
5755 flag_descriptions::kQuickOfficeForceFileDownloadDescription,
5756 kOsCrOS | kOsLacros,
5757 FEATURE_VALUE_TYPE(features::kQuickOfficeForceFileDownload)},
5758 #endif // BUILDFLAG(IS_CHROMEOS)
5759 #if BUILDFLAG(IS_MAC)
5760 {"enable-retry-capture-device-enumeration-on-crash",
5761 flag_descriptions::kRetryGetVideoCaptureDeviceInfosName,
5762 flag_descriptions::kRetryGetVideoCaptureDeviceInfosDescription, kOsMac,
5763 FEATURE_VALUE_TYPE(features::kRetryGetVideoCaptureDeviceInfos)},
5764 #endif // BUILDFLAG(IS_MAC)
5765 #if BUILDFLAG(IS_MAC)
5766 {"enable-immersive-fullscreen-toolbar",
5767 flag_descriptions::kImmersiveFullscreenName,
5768 flag_descriptions::kImmersiveFullscreenDescription, kOsMac,
5769 FEATURE_VALUE_TYPE(features::kImmersiveFullscreen)},
5770 #endif // BUILDFLAG(IS_MAC)
5771 {"enable-web-payments-experimental-features",
5772 flag_descriptions::kWebPaymentsExperimentalFeaturesName,
5773 flag_descriptions::kWebPaymentsExperimentalFeaturesDescription, kOsAll,
5774 FEATURE_VALUE_TYPE(payments::features::kWebPaymentsExperimentalFeatures)},
5775 {"add-identity-in-can-make-payment",
5776 flag_descriptions::kAddIdentityInCanMakePaymentEventName,
5777 flag_descriptions::kAddIdentityInCanMakePaymentEventDescription, kOsAll,
5778 FEATURE_VALUE_TYPE(blink::features::kAddIdentityInCanMakePaymentEvent)},
5779 {"enable-debug-for-store-billing",
5780 flag_descriptions::kAppStoreBillingDebugName,
5781 flag_descriptions::kAppStoreBillingDebugDescription, kOsAll,
5782 FEATURE_VALUE_TYPE(payments::features::kAppStoreBillingDebug)},
5783 {"enable-debug-for-secure-payment-confirmation",
5784 flag_descriptions::kSecurePaymentConfirmationDebugName,
5785 flag_descriptions::kSecurePaymentConfirmationDebugDescription, kOsAll,
5786 FEATURE_VALUE_TYPE(features::kSecurePaymentConfirmationDebug)},
5787 {"mutation-events", flag_descriptions::kMutationEventsName,
5788 flag_descriptions::kMutationEventsDescription, kOsAll,
5789 FEATURE_VALUE_TYPE(blink::features::kMutationEvents)},
5790 {"fill-on-account-select", flag_descriptions::kFillOnAccountSelectName,
5791 flag_descriptions::kFillOnAccountSelectDescription, kOsAll,
5792 FEATURE_VALUE_TYPE(password_manager::features::kFillOnAccountSelect)},
5793 #if BUILDFLAG(IS_CHROMEOS_ASH)
5794 {"arc-aaudio-mmap-low-latency",
5795 flag_descriptions::kArcAAudioMMAPLowLatencyName,
5796 flag_descriptions::kArcAAudioMMAPLowLatencyDescription, kOsCrOS,
5797 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootArcVmAAudioMMAPLowLatency")},
5798 {"arc-custom-tabs-experiment",
5799 flag_descriptions::kArcCustomTabsExperimentName,
5800 flag_descriptions::kArcCustomTabsExperimentDescription, kOsCrOS,
5801 FEATURE_VALUE_TYPE(arc::kCustomTabsExperimentFeature)},
5802 {"arc-documents-provider-unknown-size",
5803 flag_descriptions::kArcDocumentsProviderUnknownSizeName,
5804 flag_descriptions::kArcDocumentsProviderUnknownSizeDescription, kOsCrOS,
5805 FEATURE_VALUE_TYPE(arc::kDocumentsProviderUnknownSizeFeature)},
5806 {"arc-enable-aaudio-mmap", flag_descriptions::kArcEnableAAudioMMAPName,
5807 flag_descriptions::kArcEnableAAudioMMAPDescription, kOsCrOS,
5808 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootArcVmAAudioMMAP")},
5809 {kArcEnableVirtioBlkForDataInternalName,
5810 flag_descriptions::kArcEnableVirtioBlkForDataName,
5811 flag_descriptions::kArcEnableVirtioBlkForDataDesc, kOsCrOS,
5812 FEATURE_VALUE_TYPE(arc::kEnableVirtioBlkForData)},
5813 {"arc-external-storage-access",
5814 flag_descriptions::kArcExternalStorageAccessName,
5815 flag_descriptions::kArcExternalStorageAccessDescription, kOsCrOS,
5816 FEATURE_VALUE_TYPE(arc::kExternalStorageAccess)},
5817 {"arc-file-picker-experiment",
5818 flag_descriptions::kArcFilePickerExperimentName,
5819 flag_descriptions::kArcFilePickerExperimentDescription, kOsCrOS,
5820 FEATURE_VALUE_TYPE(arc::kFilePickerExperimentFeature)},
5821 {"arc-instant-response-window-open",
5822 flag_descriptions::kArcInstantResponseWindowOpenName,
5823 flag_descriptions::kArcInstantResponseWindowOpenDescription, kOsCrOS,
5824 FEATURE_VALUE_TYPE(arc::kInstantResponseWindowOpen)},
5825 {"arc-keyboard-shortcut-helper-integration",
5826 flag_descriptions::kArcKeyboardShortcutHelperIntegrationName,
5827 flag_descriptions::kArcKeyboardShortcutHelperIntegrationDescription,
5829 FEATURE_VALUE_TYPE(arc::kKeyboardShortcutHelperIntegrationFeature)},
5830 {"arc-native-bridge-toggle", flag_descriptions::kArcNativeBridgeToggleName,
5831 flag_descriptions::kArcNativeBridgeToggleDescription, kOsCrOS,
5832 FEATURE_VALUE_TYPE(arc::kNativeBridgeToggleFeature)},
5833 {"arc-rounded-window-compat",
5834 flag_descriptions::kArcRoundedWindowCompatName,
5835 flag_descriptions::kArcRoundedWindowCompatDescription, kOsCrOS,
5836 FEATURE_WITH_PARAMS_VALUE_TYPE(arc::kRoundedWindowCompat,
5837 kArcRoundedWindowCompatVariation,
5838 "ArcRoundedWindowCompat")},
5839 {"arc-rt-vcpu-dual-core", flag_descriptions::kArcRtVcpuDualCoreName,
5840 flag_descriptions::kArcRtVcpuDualCoreDesc, kOsCrOS,
5841 FEATURE_VALUE_TYPE(arc::kRtVcpuDualCore)},
5842 {"arc-rt-vcpu-quad-core", flag_descriptions::kArcRtVcpuQuadCoreName,
5843 flag_descriptions::kArcRtVcpuQuadCoreDesc, kOsCrOS,
5844 FEATURE_VALUE_TYPE(arc::kRtVcpuQuadCore)},
5845 {"arc-touchscreen-emulation",
5846 flag_descriptions::kArcTouchscreenEmulationName,
5847 flag_descriptions::kArcTouchscreenEmulationDesc, kOsCrOS,
5848 FEATURE_VALUE_TYPE(arc::kTouchscreenEmulation)},
5849 {"arc-switch-to-keymint-daemon",
5850 flag_descriptions::kArcSwitchToKeyMintDaemonName,
5851 flag_descriptions::kArcSwitchToKeyMintDaemonDesc, kOsCrOS,
5852 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootArcSwitchToKeyMintDaemon")},
5853 {"arc-switch-to-keymint-on-t",
5854 flag_descriptions::kArcSwitchToKeyMintOnTName,
5855 flag_descriptions::kArcSwitchToKeyMintOnTDesc, kOsCrOS,
5856 FEATURE_VALUE_TYPE(arc::kSwitchToKeyMintOnT)},
5857 {"arc-switch-to-keymint-on-t-override",
5858 flag_descriptions::kArcSwitchToKeyMintOnTOverrideName,
5859 flag_descriptions::kArcSwitchToKeyMintOnTOverrideDesc, kOsCrOS,
5860 FEATURE_VALUE_TYPE(arc::kSwitchToKeyMintOnTOverride)},
5861 {"arc-sync-install-priority",
5862 flag_descriptions::kArcSyncInstallPriorityName,
5863 flag_descriptions::kArcSyncInstallPriorityDescription, kOsCrOS,
5864 FEATURE_VALUE_TYPE(arc::kSyncInstallPriority)},
5865 {"arc-vmm-swap-keyboard-shortcut",
5866 flag_descriptions::kArcVmmSwapKBShortcutName,
5867 flag_descriptions::kArcVmmSwapKBShortcutDesc, kOsCrOS,
5868 FEATURE_VALUE_TYPE(arc::kVmmSwapKeyboardShortcut)},
5869 {"arc-xdg-mode", flag_descriptions::kArcXdgModeName,
5870 flag_descriptions::kArcXdgModeDesc, kOsCrOS,
5871 FEATURE_VALUE_TYPE(arc::kXdgMode)},
5872 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
5873 {"enable-generic-sensor-extra-classes",
5874 flag_descriptions::kEnableGenericSensorExtraClassesName,
5875 flag_descriptions::kEnableGenericSensorExtraClassesDescription, kOsAll,
5876 FEATURE_VALUE_TYPE(features::kGenericSensorExtraClasses)},
5878 #if BUILDFLAG(IS_CHROMEOS_ASH)
5879 {ui_devtools::switches::kEnableUiDevTools,
5880 flag_descriptions::kUiDevToolsName,
5881 flag_descriptions::kUiDevToolsDescription, kOsCrOS,
5882 SINGLE_VALUE_TYPE(ui_devtools::switches::kEnableUiDevTools)},
5883 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
5885 {"enable-autofill-virtual-cards-on-touch-to-fill",
5886 flag_descriptions::kAutofillVirtualCardsOnTouchToFillAndroidName,
5887 flag_descriptions::kAutofillVirtualCardsOnTouchToFillAndroidDescription,
5890 autofill::features::kAutofillVirtualCardsOnTouchToFillAndroid)},
5892 #if BUILDFLAG(IS_ANDROID)
5893 {"enable-autofill-touch-to-fill-for-credit-cards",
5894 flag_descriptions::kAutofillTouchToFillForCreditCardsAndroidName,
5895 flag_descriptions::kAutofillTouchToFillForCreditCardsAndroidDescription,
5898 autofill::features::kAutofillTouchToFillForCreditCardsAndroid)},
5899 {"enable-autofill-virtual-view-structure",
5900 flag_descriptions::kAutofillVirtualViewStructureAndroidName,
5901 flag_descriptions::kAutofillVirtualViewStructureAndroidDescription,
5904 autofill::features::kAutofillVirtualViewStructureAndroid)},
5907 #if BUILDFLAG(IS_CHROMEOS_ASH)
5908 {"enable-touchscreen-calibration",
5909 flag_descriptions::kTouchscreenCalibrationName,
5910 flag_descriptions::kTouchscreenCalibrationDescription, kOsCrOS,
5911 SINGLE_VALUE_TYPE(ash::switches::kEnableTouchCalibrationSetting)},
5912 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
5913 #if BUILDFLAG(IS_CHROMEOS_ASH)
5914 {"prefer-constant-frame-rate",
5915 flag_descriptions::kPreferConstantFrameRateName,
5916 flag_descriptions::kPreferConstantFrameRateDescription, kOsCrOS,
5917 FEATURE_VALUE_TYPE(ash::features::kPreferConstantFrameRate)},
5918 {"more-video-capture-buffers",
5919 flag_descriptions::kMoreVideoCaptureBuffersName,
5920 flag_descriptions::kMoreVideoCaptureBuffersDescription, kOsCrOS,
5921 FEATURE_VALUE_TYPE(ash::features::kMoreVideoCaptureBuffers)},
5922 {"force-control-face-ae", flag_descriptions::kForceControlFaceAeName,
5923 flag_descriptions::kForceControlFaceAeDescription, kOsCrOS,
5924 MULTI_VALUE_TYPE(kForceControlFaceAeChoices)},
5925 {"auto-framing-override", flag_descriptions::kAutoFramingOverrideName,
5926 flag_descriptions::kAutoFramingOverrideDescription, kOsCrOS,
5927 MULTI_VALUE_TYPE(kAutoFramingOverrideChoices)},
5928 {"crostini-gpu-support", flag_descriptions::kCrostiniGpuSupportName,
5929 flag_descriptions::kCrostiniGpuSupportDescription, kOsCrOS,
5930 FEATURE_VALUE_TYPE(ash::features::kCrostiniGpuSupport)},
5931 {"disable-camera-frame-rotation-at-source",
5932 flag_descriptions::kDisableCameraFrameRotationAtSourceName,
5933 flag_descriptions::kDisableCameraFrameRotationAtSourceDescription, kOsCrOS,
5934 FEATURE_VALUE_TYPE(media::features::kDisableCameraFrameRotationAtSource)},
5935 {"file-transfer-enterprise-connector",
5936 flag_descriptions::kFileTransferEnterpriseConnectorName,
5937 flag_descriptions::kFileTransferEnterpriseConnectorDescription, kOsCrOS,
5938 FEATURE_VALUE_TYPE(features::kFileTransferEnterpriseConnector)},
5939 {"file-transfer-enterprise-connector-ui",
5940 flag_descriptions::kFileTransferEnterpriseConnectorUIName,
5941 flag_descriptions::kFileTransferEnterpriseConnectorUIDescription, kOsCrOS,
5942 FEATURE_VALUE_TYPE(features::kFileTransferEnterpriseConnectorUI)},
5943 {"files-app-experimental", flag_descriptions::kFilesAppExperimentalName,
5944 flag_descriptions::kFilesAppExperimentalDescription, kOsCrOS,
5945 FEATURE_VALUE_TYPE(ash::features::kFilesAppExperimental)},
5946 {"files-conflict-dialog", flag_descriptions::kFilesConflictDialogName,
5947 flag_descriptions::kFilesConflictDialogDescription, kOsCrOS,
5948 FEATURE_VALUE_TYPE(ash::features::kFilesConflictDialog)},
5949 {"files-drive-shortcuts", flag_descriptions::kFilesDriveShortcutsName,
5950 flag_descriptions::kFilesDriveShortcutsDescription, kOsCrOS,
5951 FEATURE_VALUE_TYPE(ash::features::kFilesDriveShortcuts)},
5952 {"files-google-drive-settings-page",
5953 flag_descriptions::kFilesGoogleDriveSettingsPageName,
5954 flag_descriptions::kFilesGoogleDriveSettingsPageDescription, kOsCrOS,
5955 FEATURE_VALUE_TYPE(ash::features::kFilesGoogleDriveSettingsPage)},
5956 {"files-inline-sync-status", flag_descriptions::kFilesInlineSyncStatusName,
5957 flag_descriptions::kFilesInlineSyncStatusDescription, kOsCrOS,
5958 FEATURE_VALUE_TYPE(ash::features::kFilesInlineSyncStatus)},
5959 {"files-inline-sync-status-progress-events",
5960 flag_descriptions::kFilesInlineSyncStatusProgressEventsName,
5961 flag_descriptions::kFilesInlineSyncStatusProgressEventsDescription,
5963 FEATURE_VALUE_TYPE(ash::features::kFilesInlineSyncStatusProgressEvents)},
5964 {"files-local-image-search", flag_descriptions::kFilesLocalImageSearchName,
5965 flag_descriptions::kFilesLocalImageSearchDescription, kOsCrOS,
5966 FEATURE_VALUE_TYPE(ash::features::kFilesLocalImageSearch)},
5967 {"files-new-directory-tree", flag_descriptions::kFilesNewDirectoryTreeName,
5968 flag_descriptions::kFilesNewDirectoryTreeDescription, kOsCrOS,
5969 FEATURE_VALUE_TYPE(ash::features::kFilesNewDirectoryTree)},
5970 {"files-single-partition-format",
5971 flag_descriptions::kFilesSinglePartitionFormatName,
5972 flag_descriptions::kFilesSinglePartitionFormatDescription, kOsCrOS,
5973 FEATURE_VALUE_TYPE(ash::features::kFilesSinglePartitionFormat)},
5974 {"files-trash-drive", flag_descriptions::kFilesTrashDriveName,
5975 flag_descriptions::kFilesTrashDriveDescription, kOsCrOS,
5976 FEATURE_VALUE_TYPE(ash::features::kFilesTrashDrive)},
5977 {"force-resync-drive", flag_descriptions::kForceReSyncDriveName,
5978 flag_descriptions::kForceReSyncDriveDescription, kOsCrOS,
5979 FEATURE_VALUE_TYPE(ash::features::kForceReSyncDrive)},
5980 {"force-spectre-v2-mitigation",
5981 flag_descriptions::kForceSpectreVariant2MitigationName,
5982 flag_descriptions::kForceSpectreVariant2MitigationDescription, kOsCrOS,
5984 sandbox::policy::features::kForceSpectreVariant2Mitigation)},
5985 {"fsps-in-recents", flag_descriptions::kFSPsInRecentsName,
5986 flag_descriptions::kFSPsInRecentsDescription, kOsCrOS,
5987 FEATURE_VALUE_TYPE(ash::features::kFSPsInRecents)},
5988 {"fuse-box-debug", flag_descriptions::kFuseBoxDebugName,
5989 flag_descriptions::kFuseBoxDebugDescription, kOsCrOS,
5990 FEATURE_VALUE_TYPE(ash::features::kFuseBoxDebug)},
5991 {"spectre-v2-mitigation", flag_descriptions::kSpectreVariant2MitigationName,
5992 flag_descriptions::kSpectreVariant2MitigationDescription, kOsCrOS,
5993 FEATURE_VALUE_TYPE(sandbox::policy::features::kSpectreVariant2Mitigation)},
5994 {"upload-office-to-cloud", flag_descriptions::kUploadOfficeToCloudName,
5995 flag_descriptions::kUploadOfficeToCloudName, kOsCrOS,
5996 FEATURE_VALUE_TYPE(chromeos::features::kUploadOfficeToCloud)},
5997 {"eap-gtc-wifi-authentication",
5998 flag_descriptions::kEapGtcWifiAuthenticationName,
5999 flag_descriptions::kEapGtcWifiAuthenticationDescription, kOsCrOS,
6000 FEATURE_VALUE_TYPE(ash::features::kEapGtcWifiAuthentication)},
6001 {"eche-swa", flag_descriptions::kEcheSWAName,
6002 flag_descriptions::kEcheSWADescription, kOsCrOS,
6003 FEATURE_VALUE_TYPE(ash::features::kEcheSWA)},
6004 {"eche-launcher", flag_descriptions::kEcheLauncherName,
6005 flag_descriptions::kEcheLauncherDescription, kOsCrOS,
6006 FEATURE_VALUE_TYPE(ash::features::kEcheLauncher)},
6007 {"eche-launcher-app-icon-in-more-apps-button",
6008 flag_descriptions::kEcheLauncherIconsInMoreAppsButtonName,
6009 flag_descriptions::kEcheLauncherIconsInMoreAppsButtonDescription, kOsCrOS,
6010 FEATURE_VALUE_TYPE(ash::features::kEcheLauncherIconsInMoreAppsButton)},
6011 {"eche-launcher-list-view", flag_descriptions::kEcheLauncherListViewName,
6012 flag_descriptions::kEcheLauncherListViewDescription, kOsCrOS,
6013 FEATURE_VALUE_TYPE(ash::features::kEcheLauncherListView)},
6014 {"eche-network-connection-state",
6015 flag_descriptions::kEcheNetworkConnectionStateName,
6016 flag_descriptions::kEcheNetworkConnectionStateDescription, kOsCrOS,
6017 FEATURE_VALUE_TYPE(ash::features::kEcheNetworkConnectionState)},
6018 {"eche-swa-check-android-network-info",
6019 flag_descriptions::kEcheSWACheckAndroidNetworkInfoName,
6020 flag_descriptions::kEcheSWACheckAndroidNetworkInfoDescription, kOsCrOS,
6021 FEATURE_VALUE_TYPE(ash::features::kEcheSWACheckAndroidNetworkInfo)},
6022 {"eche-swa-process-android-accessibility-tree",
6023 flag_descriptions::kEcheSWAProcessAndroidAccessibilityTreeName,
6024 flag_descriptions::kEcheSWAProcessAndroidAccessibilityTreeDescription,
6027 ash::features::kEcheSWAProcessAndroidAccessibilityTree)},
6028 {"eche-swa-debug-mode", flag_descriptions::kEcheSWADebugModeName,
6029 flag_descriptions::kEcheSWADebugModeDescription, kOsCrOS,
6030 FEATURE_VALUE_TYPE(ash::features::kEcheSWADebugMode)},
6031 {"eche-swa-disable-stun-server",
6032 flag_descriptions::kEcheSWADisableStunServerName,
6033 flag_descriptions::kEcheSWADisableStunServerDescription, kOsCrOS,
6034 FEATURE_VALUE_TYPE(ash::features::kEcheSWADisableStunServer)},
6035 {"eche-swa-measure-latency", flag_descriptions::kEcheSWAMeasureLatencyName,
6036 flag_descriptions::kEcheSWAMeasureLatencyDescription, kOsCrOS,
6037 FEATURE_VALUE_TYPE(ash::features::kEcheSWAMeasureLatency)},
6038 {"eche-swa-send-start-signaling",
6039 flag_descriptions::kEcheSWASendStartSignalingName,
6040 flag_descriptions::kEcheSWASendStartSignalingDescription, kOsCrOS,
6041 FEATURE_VALUE_TYPE(ash::features::kEcheSWASendStartSignaling)},
6042 {"phone-hub-onboarding-notifier-revemp",
6043 flag_descriptions::kPhoneHubOnboardingNotifierRevampName,
6044 flag_descriptions::kPhoneHubOnboardingNotifierRevampDescription, kOsCrOS,
6045 FEATURE_VALUE_TYPE(ash::features::kPhoneHubOnboardingNotifierRevamp)},
6046 {"print-management-jelly", flag_descriptions::kPrintManagementJellyName,
6047 flag_descriptions::kPrintManagementJellyDescription, kOsCrOS,
6048 FEATURE_VALUE_TYPE(ash::features::kPrintManagementJelly)},
6049 {"print-management-setup-assistance",
6050 flag_descriptions::kPrintManagementSetupAssistanceName,
6051 flag_descriptions::kPrintManagementSetupAssistanceDescription, kOsCrOS,
6052 FEATURE_VALUE_TYPE(ash::features::kPrintManagementSetupAssistance)},
6053 {"print-preview-discovered-printers",
6054 flag_descriptions::kPrintPreviewDiscoveredPrintersName,
6055 flag_descriptions::kPrintPreviewDiscoveredPrintersDescription, kOsCrOS,
6056 FEATURE_VALUE_TYPE(ash::features::kPrintPreviewDiscoveredPrinters)},
6057 {"printer-settings-printer-status",
6058 flag_descriptions::kPrinterSettingsPrinterStatusName,
6059 flag_descriptions::kPrinterSettingsPrinterStatusDescription, kOsCrOS,
6060 FEATURE_VALUE_TYPE(ash::features::kPrinterSettingsPrinterStatus)},
6061 {"printer-settings-revamp", flag_descriptions::kPrinterSettingsRevampName,
6062 flag_descriptions::kPrinterSettingsRevampDescription, kOsCrOS,
6063 FEATURE_VALUE_TYPE(ash::features::kPrinterSettingsRevamp)},
6064 {kGlanceablesV2InternalName, flag_descriptions::kGlanceablesV2Name,
6065 flag_descriptions::kGlanceablesV2Description, kOsCrOS,
6066 FEATURE_VALUE_TYPE(ash::features::kGlanceablesV2)},
6067 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
6069 #if BUILDFLAG(IS_ANDROID)
6070 {"omnibox-cache-suggestion-resources",
6071 flag_descriptions::kOmniboxCacheSuggestionResourcesName,
6072 flag_descriptions::kOmniboxCacheSuggestionResourcesDescription, kOsAndroid,
6073 FEATURE_VALUE_TYPE(chrome::android::kOmniboxCacheSuggestionResources)},
6075 {"omnibox-match-toolbar-and-status-bar-color",
6076 flag_descriptions::kOmniboxMatchToolbarAndStatusBarColorName,
6077 flag_descriptions::kOmniboxMatchToolbarAndStatusBarColorDescription,
6079 FEATURE_VALUE_TYPE(omnibox::kOmniboxMatchToolbarAndStatusBarColor)},
6081 {"omnibox-modernize-visual-update",
6082 flag_descriptions::kOmniboxModernizeVisualUpdateName,
6083 flag_descriptions::kOmniboxModernizeVisualUpdateDescription, kOsAndroid,
6084 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxModernizeVisualUpdate,
6085 kOmniboxModernizeVisualUpdateVariations,
6086 "OmniboxModernizeVisualUpdate")},
6088 {"omnibox-most-visited-tiles-horizontal-render-group",
6089 flag_descriptions::kOmniboxMostVisitedTilesHorizontalRenderGroupName,
6091 kOmniboxMostVisitedTilesHorizontalRenderGroupDescription,
6093 FEATURE_VALUE_TYPE(omnibox::kMostVisitedTilesHorizontalRenderGroup)},
6095 {"omnibox-query-tiles-in-zps-on-ntp",
6096 flag_descriptions::kOmniboxQueryTilesInZPSOnNTPName,
6097 flag_descriptions::kOmniboxQueryTilesInZPSOnNTPDesc, kOsAndroid,
6098 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kQueryTilesInZPSOnNTP,
6099 kOmniboxQueryTilesVariations,
6100 "OmniboxQueryTilesInZPSOnNTP")},
6102 {"omnibox-suppress-clipboard-suggestion-after-first-used",
6103 flag_descriptions::kOmniboxSuppressClipboardSuggestionAfterFirstUsedName,
6105 kOmniboxSuppressClipboardSuggestionAfterFirstUsedDescription,
6107 FEATURE_VALUE_TYPE(omnibox::kSuppressClipboardSuggestionAfterFirstUsed)},
6109 {"omnibox-warm-recycled-view-pool",
6110 flag_descriptions::kOmniboxWarmRecycledViewPoolName,
6111 flag_descriptions::kOmniboxWarmRecycledViewPoolDescription, kOsAndroid,
6112 FEATURE_VALUE_TYPE(chrome::android::kOmniboxWarmRecycledViewPool)},
6114 {"android-app-integration", flag_descriptions::kAndroidAppIntegrationName,
6115 flag_descriptions::kAndroidAppIntegrationDescription, kOsAndroid,
6116 FEATURE_VALUE_TYPE(chrome::android::kAndroidAppIntegration)},
6118 {"android-app-integration-safesearch",
6119 flag_descriptions::kAndroidAppIntegrationSafeSearchName,
6120 flag_descriptions::kAndroidAppIntegrationSafeSearchDescription, kOsAndroid,
6121 FEATURE_VALUE_TYPE(chrome::android::kAndroidAppIntegrationSafeSearch)},
6123 {"auxiliary-search-donation",
6124 flag_descriptions::kAuxiliarySearchDonationName,
6125 flag_descriptions::kAuxiliarySearchDonationDescription, kOsAndroid,
6126 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kAuxiliarySearchDonation,
6127 kAuxiliarySearchDonationVariations,
6128 "AuxiliarySearchDonation")},
6129 #endif // BUILDFLAG(IS_ANDROID)
6131 {"omnibox-local-history-zero-suggest-beyond-ntp",
6132 flag_descriptions::kOmniboxLocalHistoryZeroSuggestBeyondNTPName,
6133 flag_descriptions::kOmniboxLocalHistoryZeroSuggestBeyondNTPDescription,
6134 kOsAll, FEATURE_VALUE_TYPE(omnibox::kLocalHistoryZeroSuggestBeyondNTP)},
6136 {"omnibox-on-clobber-focus-type-on-content",
6137 flag_descriptions::kOmniboxOnClobberFocusTypeOnContentName,
6138 flag_descriptions::kOmniboxOnClobberFocusTypeOnContentDescription, kOsAll,
6139 FEATURE_VALUE_TYPE(omnibox::kOmniboxOnClobberFocusTypeOnContent)},
6141 {"omnibox-report-assisted-query-stats",
6142 flag_descriptions::kOmniboxReportAssistedQueryStatsName,
6143 flag_descriptions::kOmniboxReportAssistedQueryStatsDescription, kOsAll,
6144 FEATURE_VALUE_TYPE(omnibox::kReportAssistedQueryStats)},
6146 {"omnibox-report-searchbox-stats",
6147 flag_descriptions::kOmniboxReportSearchboxStatsName,
6148 flag_descriptions::kOmniboxReportSearchboxStatsDescription, kOsAll,
6149 FEATURE_VALUE_TYPE(omnibox::kReportSearchboxStats)},
6151 {"omnibox-zero-suggest-prefetching",
6152 flag_descriptions::kOmniboxZeroSuggestPrefetchingName,
6153 flag_descriptions::kOmniboxZeroSuggestPrefetchingDescription, kOsAll,
6154 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestPrefetching)},
6156 {"omnibox-zero-suggest-prefetching-on-srp",
6157 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnSRPName,
6158 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnSRPDescription, kOsAll,
6159 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestPrefetchingOnSRP)},
6161 {"omnibox-zero-suggest-prefetching-on-web",
6162 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnWebName,
6163 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnWebDescription, kOsAll,
6164 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestPrefetchingOnWeb)},
6166 {"omnibox-zero-suggest-in-memory-caching",
6167 flag_descriptions::kOmniboxZeroSuggestInMemoryCachingName,
6168 flag_descriptions::kOmniboxZeroSuggestInMemoryCachingDescription, kOsAll,
6169 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestInMemoryCaching)},
6171 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
6172 BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
6173 {"omnibox-actions-ui-simplification",
6174 flag_descriptions::kOmniboxActionsUISimplificationName,
6175 flag_descriptions::kOmniboxActionsUISimplificationDescription, kOsDesktop,
6176 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxActionsUISimplification,
6177 kOmniboxActionsUISimplificationVariations,
6178 "OmniboxActionsUISimplification")},
6179 {"omnibox-keyword-mode-refresh",
6180 flag_descriptions::kOmniboxKeywordModeRefreshName,
6181 flag_descriptions::kOmniboxKeywordModeRefreshDescription, kOsDesktop,
6182 FEATURE_VALUE_TYPE(omnibox::kOmniboxKeywordModeRefresh)},
6184 {"omnibox-domain-suggestions",
6185 flag_descriptions::kOmniboxDomainSuggestionsName,
6186 flag_descriptions::kOmniboxDomainSuggestionsDescription, kOsDesktop,
6187 FEATURE_VALUE_TYPE(omnibox::kDomainSuggestions)},
6188 {"omnibox-drive-suggestions",
6189 flag_descriptions::kOmniboxDriveSuggestionsName,
6190 flag_descriptions::kOmniboxDriveSuggestionsDescription, kOsDesktop,
6191 FEATURE_VALUE_TYPE(omnibox::kDocumentProvider)},
6192 {"omnibox-drive-suggestions-no-setting",
6193 flag_descriptions::kOmniboxDriveSuggestionsNoSettingName,
6194 flag_descriptions::kOmniboxDriveSuggestionsNoSettingDescription,
6195 kOsDesktop, FEATURE_VALUE_TYPE(omnibox::kDocumentProviderNoSetting)},
6196 {"omnibox-drive-suggestions-no-sync-requirement",
6197 flag_descriptions::kOmniboxDriveSuggestionsNoSyncRequirementName,
6198 flag_descriptions::kOmniboxDriveSuggestionsNoSyncRequirementDescription,
6200 FEATURE_VALUE_TYPE(omnibox::kDocumentProviderNoSyncRequirement)},
6201 {"omnibox-pref-based-data-collection-consent-helper",
6202 flag_descriptions::kOmniboxPrefBasedDataCollectionConsentHelperName,
6203 flag_descriptions::kOmniboxPrefBasedDataCollectionConsentHelperDescription,
6205 FEATURE_VALUE_TYPE(omnibox::kPrefBasedDataCollectionConsentHelper)},
6206 {"omnibox-shortcut-boost", flag_descriptions::kOmniboxShortcutBoostName,
6207 flag_descriptions::kOmniboxShortcutBoostDescription, kOsDesktop,
6208 FEATURE_WITH_PARAMS_VALUE_TYPE(
6209 omnibox_feature_configs::ShortcutBoosting::kShortcutBoost,
6210 kOmniboxShortcutBoostVariations,
6211 "OmniboxBundledExperimentV1")},
6212 {"omnibox-rich-autocompletion-promising",
6213 flag_descriptions::kOmniboxRichAutocompletionPromisingName,
6214 flag_descriptions::kOmniboxRichAutocompletionPromisingDescription,
6216 FEATURE_WITH_PARAMS_VALUE_TYPE(
6217 omnibox::kRichAutocompletion,
6218 kOmniboxRichAutocompletionPromisingVariations,
6219 "OmniboxBundledExperimentV1")},
6220 {"omnibox-ml-log-url-scoring-signals",
6221 flag_descriptions::kOmniboxMlLogUrlScoringSignalsName,
6222 flag_descriptions::kOmniboxMlLogUrlScoringSignalsDescription, kOsDesktop,
6223 FEATURE_VALUE_TYPE(omnibox::kLogUrlScoringSignals)},
6224 {"omnibox-ml-url-scoring", flag_descriptions::kOmniboxMlUrlScoringName,
6225 flag_descriptions::kOmniboxMlUrlScoringDescription, kOsDesktop,
6226 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kMlUrlScoring,
6227 kOmniboxMlUrlScoringVariations,
6229 {"omnibox-ml-url-scoring-model",
6230 flag_descriptions::kOmniboxMlUrlScoringModelName,
6231 flag_descriptions::kOmniboxMlUrlScoringModelDescription, kOsDesktop,
6232 FEATURE_VALUE_TYPE(omnibox::kUrlScoringModel)},
6234 {"realbox-secondary-zero-suggest",
6235 flag_descriptions::kRealboxSecondaryZeroSuggestName,
6236 flag_descriptions::kRealboxSecondaryZeroSuggestDescription, kOsDesktop,
6237 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kRealboxSecondaryZeroSuggest,
6238 kRealboxSecondaryZeroSuggestVariations,
6239 "RealboxSecondaryZeroSuggest")},
6240 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) ||
6241 // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_FUCHSIA)
6243 #if BUILDFLAG(IS_ANDROID)
6244 {"omnibox-actions-in-suggest",
6245 flag_descriptions::kOmniboxActionsInSuggestName,
6246 flag_descriptions::kOmniboxActionsInSuggestDescription, kOsAndroid,
6247 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kActionsInSuggest,
6248 kOmniboxActionsInSuggestVariants,
6249 "OmniboxBundledExperimentV1")},
6251 #endif // BUILDFLAG(IS_ANDROID)
6252 #if BUILDFLAG(IS_WIN)
6253 {"omnibox-on-device-head-suggestions",
6254 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsName,
6255 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsDescription, kOsWin,
6256 FEATURE_VALUE_TYPE(omnibox::kOnDeviceHeadProviderNonIncognito)},
6257 {"omnibox-on-device-head-suggestions-incognito",
6258 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsIncognitoName,
6259 flag_descriptions::kOmniboxOnDeviceHeadSuggestionsIncognitoDescription,
6260 kOsWin, FEATURE_VALUE_TYPE(omnibox::kOnDeviceHeadProviderIncognito)},
6261 #endif // BUILDFLAG(IS_WIN)
6263 {"omnibox-on-device-tail-suggestions",
6264 flag_descriptions::kOmniboxOnDeviceTailSuggestionsName,
6265 flag_descriptions::kOmniboxOnDeviceTailSuggestionsDescription, kOsAll,
6266 FEATURE_VALUE_TYPE(omnibox::kOnDeviceTailModel)},
6268 #if BUILDFLAG(IS_CHROMEOS_ASH)
6269 {"scheduler-configuration", flag_descriptions::kSchedulerConfigurationName,
6270 flag_descriptions::kSchedulerConfigurationDescription, kOsCrOS,
6271 MULTI_VALUE_TYPE(kSchedulerConfigurationChoices)},
6272 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
6274 #if BUILDFLAG(IS_ANDROID)
6275 {"enable-command-line-on-non-rooted-devices",
6276 flag_descriptions::kEnableCommandLineOnNonRootedName,
6277 flag_descriptions::kEnableCommandLineOnNoRootedDescription, kOsAndroid,
6278 FEATURE_VALUE_TYPE(chrome::android::kCommandLineOnNonRooted)},
6279 #endif // BUILDFLAG(IS_ANDROID)
6281 #if BUILDFLAG(IS_ANDROID)
6282 {"app-menu-mobile-site-option",
6283 flag_descriptions::kAppMenuMobileSiteOptionName,
6284 flag_descriptions::kAppMenuMobileSiteOptionDescription, kOsAndroid,
6285 FEATURE_VALUE_TYPE(chrome::android::kAppMenuMobileSiteOption)},
6286 #endif // BUILDFLAG(IS_ANDROID)
6288 {"force-color-profile", flag_descriptions::kForceColorProfileName,
6289 flag_descriptions::kForceColorProfileDescription, kOsAll,
6290 MULTI_VALUE_TYPE(kForceColorProfileChoices)},
6292 {"forced-colors", flag_descriptions::kForcedColorsName,
6293 flag_descriptions::kForcedColorsDescription, kOsAll,
6294 FEATURE_VALUE_TYPE(features::kForcedColors)},
6296 #if BUILDFLAG(IS_ANDROID)
6297 {"dynamic-color-gamut", flag_descriptions::kDynamicColorGamutName,
6298 flag_descriptions::kDynamicColorGamutDescription, kOsAndroid,
6299 FEATURE_VALUE_TYPE(features::kDynamicColorGamut)},
6302 {"memlog", flag_descriptions::kMemlogName,
6303 flag_descriptions::kMemlogDescription, kOsAll,
6304 MULTI_VALUE_TYPE(kMemlogModeChoices)},
6306 {"memlog-sampling-rate", flag_descriptions::kMemlogSamplingRateName,
6307 flag_descriptions::kMemlogSamplingRateDescription, kOsAll,
6308 MULTI_VALUE_TYPE(kMemlogSamplingRateChoices)},
6310 {"memlog-stack-mode", flag_descriptions::kMemlogStackModeName,
6311 flag_descriptions::kMemlogStackModeDescription, kOsAll,
6312 MULTI_VALUE_TYPE(kMemlogStackModeChoices)},
6314 {"omnibox-max-zero-suggest-matches",
6315 flag_descriptions::kOmniboxMaxZeroSuggestMatchesName,
6316 flag_descriptions::kOmniboxMaxZeroSuggestMatchesDescription,
6317 kOsDesktop | kOsAndroid,
6318 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kMaxZeroSuggestMatches,
6319 kMaxZeroSuggestMatchesVariations,
6320 "OmniboxBundledExperimentV1")},
6322 {"omnibox-ui-max-autocomplete-matches",
6323 flag_descriptions::kOmniboxUIMaxAutocompleteMatchesName,
6324 flag_descriptions::kOmniboxUIMaxAutocompleteMatchesDescription,
6325 kOsDesktop | kOsAndroid,
6326 FEATURE_WITH_PARAMS_VALUE_TYPE(
6327 omnibox::kUIExperimentMaxAutocompleteMatches,
6328 kOmniboxUIMaxAutocompleteMatchesVariations,
6329 "OmniboxBundledExperimentV1")},
6331 {"omnibox-max-url-matches", flag_descriptions::kOmniboxMaxURLMatchesName,
6332 flag_descriptions::kOmniboxMaxURLMatchesDescription, kOsAll,
6333 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxMaxURLMatches,
6334 kOmniboxMaxURLMatchesVariations,
6335 "OmniboxMaxURLMatchesVariations")},
6337 {"omnibox-dynamic-max-autocomplete",
6338 flag_descriptions::kOmniboxDynamicMaxAutocompleteName,
6339 flag_descriptions::kOmniboxDynamicMaxAutocompleteDescription, kOsAll,
6340 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kDynamicMaxAutocomplete,
6341 kOmniboxDynamicMaxAutocompleteVariations,
6342 "OmniboxBundledExperimentV1")},
6344 {"omnibox-square-suggest-icons",
6345 flag_descriptions::kOmniboxSimplifiedUiSquareSuggestIconName,
6346 flag_descriptions::kOmniboxSimplifiedUiSquareSuggestIconDescription,
6348 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kSquareSuggestIcons,
6349 kOmniboxSquareSuggestionIconVariations,
6350 "OmniboxBundledExperimentV1")},
6352 {"omnibox-uniform-suggestion-height",
6353 flag_descriptions::kOmniboxSimplifiedUiUniformRowHeightName,
6354 flag_descriptions::kOmniboxSimplifiedUiUniformRowHeightDescription, kOsAll,
6355 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kUniformRowHeight,
6356 kOmniboxSuggestionHeightVariations,
6357 "Uniform Omnibox Suggest Heights")},
6358 {"omnibox-cr23-action-chips",
6359 flag_descriptions::kOmniboxCR23ActionChipsName,
6360 flag_descriptions::kOmniboxCR23ActionChipsDescription, kOsDesktop,
6361 FEATURE_VALUE_TYPE(omnibox::kCr2023ActionChips)},
6363 {"omnibox-cr23-action-chips-icons",
6364 flag_descriptions::kOmniboxCR23ActionChipsIconsName,
6365 flag_descriptions::kOmniboxCR23ActionChipsIconsDescription, kOsDesktop,
6366 FEATURE_VALUE_TYPE(omnibox::kCr2023ActionChipsIcons)},
6368 {"omnibox-cr23-expanded-state-height",
6369 flag_descriptions::kOmniboxCR23ExpandedStateHeightName,
6370 flag_descriptions::kOmniboxCR23ExpandedStateHeightDescription, kOsDesktop,
6371 FEATURE_VALUE_TYPE(omnibox::kExpandedStateHeight)},
6373 {"omnibox-cr23-expanded-state-shape",
6374 flag_descriptions::kOmniboxCR23ExpandedStateShapeName,
6375 flag_descriptions::kOmniboxCR23ExpandedStateShapeDescription, kOsDesktop,
6376 FEATURE_VALUE_TYPE(omnibox::kExpandedStateShape)},
6378 {"omnibox-cr23-expanded-state-suggest-icons",
6379 flag_descriptions::kOmniboxCR23ExpandedStateSuggestIconsName,
6380 flag_descriptions::kOmniboxCR23ExpandedStateSuggestIconsDescription,
6381 kOsDesktop, FEATURE_VALUE_TYPE(omnibox::kExpandedStateSuggestIcons)},
6383 {"omnibox-cr23-steady-state-icons",
6384 flag_descriptions::kOmniboxCR23SteadyStateIconsName,
6385 flag_descriptions::kOmniboxCR23SteadyStateIconsDescription, kOsAll,
6386 FEATURE_VALUE_TYPE(omnibox::kOmniboxCR23SteadyStateIcons)},
6388 {"omnibox-cr23-expanded-state-colors",
6389 flag_descriptions::kOmniboxCR23ExpandedStateColorsName,
6390 flag_descriptions::kOmniboxCR23ExpandedStateColorsDescription, kOsDesktop,
6391 FEATURE_VALUE_TYPE(omnibox::kExpandedStateColors)},
6393 {"omnibox-cr23-expanded-state-layout",
6394 flag_descriptions::kOmniboxCR23ExpandedStateLayoutName,
6395 flag_descriptions::kOmniboxCR23ExpandedStateLayoutDescription, kOsDesktop,
6396 FEATURE_VALUE_TYPE(omnibox::kExpandedLayout)},
6398 {"omnibox-cr23-suggestion-hover-fill-shape",
6399 flag_descriptions::kOmniboxCR23SuggestionHoverFillShapeName,
6400 flag_descriptions::kOmniboxCR23SuggestionHoverFillShapeDescription,
6401 kOsDesktop, FEATURE_VALUE_TYPE(omnibox::kSuggestionHoverFillShape)},
6403 {"omnibox-gm3-steady-state-background-color",
6404 flag_descriptions::kOmniboxGM3SteadyStateBackgroundColorName,
6405 flag_descriptions::kOmniboxGM3SteadyStateBackgroundColorDescription,
6406 kOsAll, FEATURE_VALUE_TYPE(omnibox::kOmniboxSteadyStateBackgroundColor)},
6408 {"omnibox-gm3-steady-state-height",
6409 flag_descriptions::kOmniboxGM3SteadyStateHeightName,
6410 flag_descriptions::kOmniboxGM3SteadyStateHeightDescription, kOsAll,
6411 FEATURE_VALUE_TYPE(omnibox::kOmniboxSteadyStateHeight)},
6413 {"omnibox-gm3-steady-state-text-color",
6414 flag_descriptions::kOmniboxGM3SteadyStateTextColorName,
6415 flag_descriptions::kOmniboxGM3SteadyStateTextColorDescription, kOsAll,
6416 FEATURE_VALUE_TYPE(omnibox::kOmniboxSteadyStateTextColor)},
6418 {"omnibox-gm3-steady-state-text-style",
6419 flag_descriptions::kOmniboxGM3SteadyStateTextStyleName,
6420 flag_descriptions::kOmniboxGM3SteadyStateTextStyleDescription, kOsAll,
6421 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxSteadyStateTextStyle,
6422 kOmniboxFontSizeVariations,
6423 "OmniboxCR2023m113")},
6425 {"omnibox-grouping-framework-zps",
6426 flag_descriptions::kOmniboxGroupingFrameworkZPSName,
6427 flag_descriptions::kOmniboxGroupingFrameworkDescription, kOsAll,
6428 FEATURE_VALUE_TYPE(omnibox::kGroupingFrameworkForZPS)},
6430 {"omnibox-grouping-framework-non-zps",
6431 flag_descriptions::kOmniboxGroupingFrameworkNonZPSName,
6432 flag_descriptions::kOmniboxGroupingFrameworkDescription, kOsAll,
6433 FEATURE_VALUE_TYPE(omnibox::kGroupingFrameworkForNonZPS)},
6435 {"omnibox-company-entity-icon-adjustment",
6436 flag_descriptions::kOmniboxCompanyEntityIconAdjustmentName,
6437 flag_descriptions::kOmniboxCompanyEntityIconAdjustmentDescription, kOsAll,
6438 FEATURE_WITH_PARAMS_VALUE_TYPE(
6439 omnibox::kCompanyEntityIconAdjustment,
6440 kOmniboxCompanyEntityIconAdjustmentVariations,
6441 "OmniboxCompanyEntityIconAdjustment")},
6443 {"omnibox-calc-provider", flag_descriptions::kOmniboxCalcProviderName,
6444 flag_descriptions::kOmniboxCalcProviderDescription, kOsAll,
6445 FEATURE_VALUE_TYPE(omnibox_feature_configs::CalcProvider::kCalcProvider)},
6447 {"optimization-guide-debug-logs",
6448 flag_descriptions::kOptimizationGuideDebugLogsName,
6449 flag_descriptions::kOptimizationGuideDebugLogsDescription, kOsAll,
6450 SINGLE_VALUE_TYPE(optimization_guide::switches::kDebugLoggingEnabled)},
6452 {"optimization-guide-install-wide-model-store",
6453 flag_descriptions::kOptimizationGuideInstallWideModelStoreName,
6454 flag_descriptions::kOptimizationGuideInstallWideModelStoreDescription,
6456 FEATURE_VALUE_TYPE(optimization_guide::features::
6457 kOptimizationGuideInstallWideModelStore)},
6459 {"optimization-guide-model-execution",
6460 flag_descriptions::kOptimizationGuideModelExecutionName,
6461 flag_descriptions::kOptimizationGuideModelExecutionDescription, kOsDesktop,
6463 optimization_guide::features::kOptimizationGuideModelExecution)},
6465 {"organic-repeatable-queries",
6466 flag_descriptions::kOrganicRepeatableQueriesName,
6467 flag_descriptions::kOrganicRepeatableQueriesDescription,
6468 kOsDesktop | kOsAndroid,
6469 FEATURE_WITH_PARAMS_VALUE_TYPE(history::kOrganicRepeatableQueries,
6470 kOrganicRepeatableQueriesVariations,
6471 "OrganicRepeatableQueries")},
6473 {"history-journeys", flag_descriptions::kJourneysName,
6474 flag_descriptions::kJourneysDescription, kOsDesktop | kOsAndroid,
6475 FEATURE_WITH_PARAMS_VALUE_TYPE(history_clusters::internal::kJourneys,
6476 kJourneysVariations,
6477 "HistoryJourneys")},
6479 {"rename-history-journeys", flag_descriptions::kRenameJourneysName,
6480 flag_descriptions::kRenameJourneysDescription, kOsDesktop | kOsAndroid,
6481 FEATURE_VALUE_TYPE(history_clusters::kRenameJourneys)},
6483 {"history-journeys-labels", flag_descriptions::kJourneysLabelsName,
6484 flag_descriptions::kJourneysLabelsDescription, kOsDesktop | kOsAndroid,
6485 FEATURE_WITH_PARAMS_VALUE_TYPE(history_clusters::internal::kJourneysLabels,
6486 kJourneysLabelsVariations,
6487 "HistoryJourneysLabels")},
6489 {"history-journeys-show-all-clusters",
6490 flag_descriptions::kJourneysShowAllClustersName,
6491 flag_descriptions::kJourneysShowAllClustersDescription,
6492 kOsDesktop | kOsAndroid,
6493 SINGLE_VALUE_TYPE(history_clusters::switches::
6494 kShouldShowAllClustersOnProminentUiSurfaces)},
6496 {"history-journeys-include-synced-visits",
6497 flag_descriptions::kJourneysIncludeSyncedVisitsName,
6498 flag_descriptions::kJourneysIncludeSyncedVisitsDescription,
6499 kOsDesktop | kOsAndroid,
6501 history_clusters::internal::kJourneysIncludeSyncedVisits)},
6503 {"history-journeys-zero-state-filtering",
6504 flag_descriptions::kJourneysZeroStateFilteringName,
6505 flag_descriptions::kJourneysZeroStateFilteringDescription,
6506 kOsDesktop | kOsAndroid,
6508 history_clusters::internal::kJourneysZeroStateFiltering)},
6510 {"extract-related-searches-from-prefetched-zps-response",
6511 flag_descriptions::kExtractRelatedSearchesFromPrefetchedZPSResponseName,
6513 kExtractRelatedSearchesFromPrefetchedZPSResponseDescription,
6514 kOsDesktop | kOsAndroid,
6515 FEATURE_VALUE_TYPE(optimization_guide::features::
6516 kExtractRelatedSearchesFromPrefetchedZPSResponse)},
6518 {"page-image-service-optimization-guide-salient-images",
6519 flag_descriptions::kPageImageServiceOptimizationGuideSalientImagesName,
6521 kPageImageServiceOptimizationGuideSalientImagesDescription,
6522 kOsDesktop | kOsAndroid,
6523 FEATURE_WITH_PARAMS_VALUE_TYPE(
6524 page_image_service::kImageServiceOptimizationGuideSalientImages,
6525 kImageServiceOptimizationGuideSalientImagesVariations,
6526 "PageImageService")},
6528 {"page-image-service-suggest-powered-images",
6529 flag_descriptions::kPageImageServiceSuggestPoweredImagesName,
6530 flag_descriptions::kPageImageServiceSuggestPoweredImagesDescription,
6532 FEATURE_VALUE_TYPE(page_image_service::kImageServiceSuggestPoweredImages)},
6534 {"page-content-annotations", flag_descriptions::kPageContentAnnotationsName,
6535 flag_descriptions::kPageContentAnnotationsDescription,
6536 kOsDesktop | kOsAndroid,
6537 FEATURE_WITH_PARAMS_VALUE_TYPE(
6538 optimization_guide::features::kPageContentAnnotations,
6539 kPageContentAnnotationsVariations,
6540 "PageContentAnnotations")},
6542 {"page-content-annotations-persist-salient-image-metadata",
6543 flag_descriptions::kPageContentAnnotationsPersistSalientImageMetadataName,
6545 kPageContentAnnotationsPersistSalientImageMetadataDescription,
6548 optimization_guide::features::
6549 kPageContentAnnotationsPersistSalientImageMetadata)},
6551 {"page-content-annotations-remote-page-metadata",
6552 flag_descriptions::kPageContentAnnotationsRemotePageMetadataName,
6553 flag_descriptions::kPageContentAnnotationsRemotePageMetadataDescription,
6555 FEATURE_VALUE_TYPE(optimization_guide::features::kRemotePageMetadata)},
6557 {"page-entities-page-content-annotations",
6558 flag_descriptions::kPageEntitiesPageContentAnnotationsName,
6559 flag_descriptions::kPageEntitiesPageContentAnnotationsDescription,
6560 kOsDesktop | kOsAndroid,
6561 FEATURE_WITH_PARAMS_VALUE_TYPE(
6562 optimization_guide::features::kPageEntitiesPageContentAnnotations,
6563 kPageEntitiesPageContentAnnotationsVariations,
6564 "PageEntitiesPageContentAnnotations")},
6566 {"page-visibility-page-content-annotations",
6567 flag_descriptions::kPageVisibilityPageContentAnnotationsName,
6568 flag_descriptions::kPageVisibilityPageContentAnnotationsDescription,
6569 kOsDesktop | kOsAndroid,
6571 optimization_guide::features::kPageVisibilityPageContentAnnotations)},
6573 #if BUILDFLAG(IS_CHROMEOS_ASH)
6574 {"enable-remove-stale-policy-pinned-apps-from-shelf",
6575 flag_descriptions::kEnableRemoveStalePolicyPinnedAppsFromShelfName,
6576 flag_descriptions::kEnableRemoveStalePolicyPinnedAppsFromShelfDescription,
6578 FEATURE_VALUE_TYPE(ash::features::kRemoveStalePolicyPinnedAppsFromShelf)},
6579 {"handwriting-gesture-editing",
6580 flag_descriptions::kHandwritingGestureEditingName,
6581 flag_descriptions::kHandwritingGestureEditingDescription, kOsCrOS,
6582 FEATURE_VALUE_TYPE(ash::features::kHandwritingGestureEditing)},
6583 {"handwriting-legacy-recognition",
6584 flag_descriptions::kHandwritingLegacyRecognitionName,
6585 flag_descriptions::kHandwritingLegacyRecognitionDescription, kOsCrOS,
6586 FEATURE_VALUE_TYPE(ash::features::kHandwritingLegacyRecognition)},
6587 {"handwriting-library-dlc", flag_descriptions::kHandwritingLibraryDlcName,
6588 flag_descriptions::kHandwritingLibraryDlcDescription, kOsCrOS,
6589 FEATURE_VALUE_TYPE(ash::features::kHandwritingLibraryDlc)},
6590 {"language-packs-in-settings",
6591 flag_descriptions::kLanguagePacksInSettingsName,
6592 flag_descriptions::kLanguagePacksInSettingsDescription, kOsCrOS,
6593 FEATURE_VALUE_TYPE(ash::features::kLanguagePacksInSettings)},
6594 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
6596 {"block-insecure-private-network-requests",
6597 flag_descriptions::kBlockInsecurePrivateNetworkRequestsName,
6598 flag_descriptions::kBlockInsecurePrivateNetworkRequestsDescription, kOsAll,
6599 FEATURE_VALUE_TYPE(features::kBlockInsecurePrivateNetworkRequests)},
6601 {"private-network-access-respect-preflight-results",
6602 flag_descriptions::kPrivateNetworkAccessRespectPreflightResultsName,
6603 flag_descriptions::kPrivateNetworkAccessRespectPreflightResultsDescription,
6606 features::kPrivateNetworkAccessRespectPreflightResults)},
6608 {"private-network-access-preflight-short-timeout",
6609 flag_descriptions::kPrivateNetworkAccessPreflightShortTimeoutName,
6610 flag_descriptions::kPrivateNetworkAccessPreflightShortTimeoutDescription,
6613 network::features::kPrivateNetworkAccessPreflightShortTimeout)},
6615 {"private-network-access-permission-prompt",
6616 flag_descriptions::kPrivateNetworkAccessPermissionPromptName,
6617 flag_descriptions::kPrivateNetworkAccessPermissionPromptDescription,
6620 network::features::kPrivateNetworkAccessPermissionPrompt)},
6622 {"main-thread-compositing-priority",
6623 flag_descriptions::kMainThreadCompositingPriorityName,
6624 flag_descriptions::kMainThreadCompositingPriorityDescription, kOsAll,
6625 FEATURE_VALUE_TYPE(features::kMainThreadCompositingPriority)},
6627 {"mbi-mode", flag_descriptions::kMBIModeName,
6628 flag_descriptions::kMBIModeDescription, kOsAll,
6629 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kMBIMode,
6633 #if BUILDFLAG(IS_CHROMEOS_ASH)
6634 {"double-tap-to-zoom-in-tablet-mode",
6635 flag_descriptions::kDoubleTapToZoomInTabletModeName,
6636 flag_descriptions::kDoubleTapToZoomInTabletModeDescription, kOsCrOS,
6637 FEATURE_VALUE_TYPE(features::kDoubleTapToZoomInTabletMode)},
6639 {"quick-settings-pwa-notifications",
6640 flag_descriptions::kQuickSettingsPWANotificationsName,
6641 flag_descriptions::kQuickSettingsPWANotificationsDescription, kOsCrOS,
6642 FEATURE_VALUE_TYPE(features::kQuickSettingsPWANotifications)},
6643 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
6645 {flag_descriptions::kTabGroupsSaveId, flag_descriptions::kTabGroupsSaveName,
6646 flag_descriptions::kTabGroupsSaveDescription, kOsDesktop,
6647 FEATURE_VALUE_TYPE(features::kTabGroupsSave)},
6649 {flag_descriptions::kScrollableTabStripFlagId,
6650 flag_descriptions::kScrollableTabStripName,
6651 flag_descriptions::kScrollableTabStripDescription, kOsDesktop,
6652 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kScrollableTabStrip,
6653 kTabScrollingVariations,
6656 {flag_descriptions::kTabScrollingButtonPositionFlagId,
6657 flag_descriptions::kTabScrollingButtonPositionName,
6658 flag_descriptions::kTabScrollingButtonPositionDescription, kOsDesktop,
6659 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kTabScrollingButtonPosition,
6660 kTabScrollingButtonPositionVariations,
6661 "TabScrollingButtonPosition")},
6663 {flag_descriptions::kScrollableTabStripWithDraggingFlagId,
6664 flag_descriptions::kScrollableTabStripWithDraggingName,
6665 flag_descriptions::kScrollableTabStripWithDraggingDescription, kOsDesktop,
6666 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kScrollableTabStripWithDragging,
6667 kTabScrollingWithDraggingVariations,
6668 "TabScrollingWithDragging")},
6670 {flag_descriptions::kScrollableTabStripOverflowFlagId,
6671 flag_descriptions::kScrollableTabStripOverflowName,
6672 flag_descriptions::kScrollableTabStripOverflowDescription, kOsDesktop,
6673 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kScrollableTabStripOverflow,
6674 kScrollableTabStripOverflowVariations,
6675 "ScrollableTabStripOverflow")},
6677 {"split-tabstrip", flag_descriptions::kSplitTabStripName,
6678 flag_descriptions::kSplitTabStripDescription, kOsDesktop,
6679 FEATURE_VALUE_TYPE(features::kSplitTabStrip)},
6681 {flag_descriptions::kSidePanelJourneysFlagId,
6682 flag_descriptions::kSidePanelJourneysName,
6683 flag_descriptions::kSidePanelJourneysDescription, kOsDesktop,
6684 FEATURE_WITH_PARAMS_VALUE_TYPE(
6685 history_clusters::kSidePanelJourneys,
6686 kSidePanelJourneysOpensFromOmniboxVariations,
6687 "SidePanelJourneys")},
6689 {flag_descriptions::kSidePanelJourneysQuerylessFlagId,
6690 flag_descriptions::kSidePanelJourneysQuerylessName,
6691 flag_descriptions::kSidePanelJourneysQuerylessDescription, kOsDesktop,
6692 FEATURE_VALUE_TYPE(features::kSidePanelJourneysQueryless)},
6694 #if !BUILDFLAG(IS_ANDROID)
6695 {flag_descriptions::kSidePanelPinningFlagId,
6696 flag_descriptions::kSidePanelPinningName,
6697 flag_descriptions::kSidePanelPinningDescription, kOsDesktop,
6698 FEATURE_VALUE_TYPE(features::kSidePanelPinning)},
6699 #endif // !BUILDFLAG(IS_ANDROID)
6701 #if BUILDFLAG(IS_ANDROID)
6702 {"enable-reader-mode-in-cct", flag_descriptions::kReaderModeInCCTName,
6703 flag_descriptions::kReaderModeInCCTDescription, kOsAndroid,
6704 FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
6705 #endif // BUILDFLAG(IS_ANDROID)
6707 {"shopping-collection",
6708 commerce::flag_descriptions::kShoppingCollectionName,
6709 commerce::flag_descriptions::kShoppingCollectionDescription,
6710 kOsAndroid | kOsDesktop,
6711 FEATURE_VALUE_TYPE(commerce::kShoppingCollection)},
6713 {"shopping-list", commerce::flag_descriptions::kShoppingListName,
6714 commerce::flag_descriptions::kShoppingListDescription,
6715 kOsAndroid | kOsDesktop, FEATURE_VALUE_TYPE(commerce::kShoppingList)},
6717 {"shopping-list-track-by-default",
6718 commerce::flag_descriptions::kShoppingListTrackByDefaultName,
6719 commerce::flag_descriptions::kShoppingListTrackByDefaultDescription,
6720 kOsAndroid | kOsDesktop,
6721 FEATURE_VALUE_TYPE(commerce::kShoppingListTrackByDefault)},
6723 {"local-pdp-detection",
6724 commerce::flag_descriptions::kCommerceLocalPDPDetectionName,
6725 commerce::flag_descriptions::kCommerceLocalPDPDetectionDescription,
6726 kOsAndroid | kOsDesktop,
6727 FEATURE_VALUE_TYPE(commerce::kCommerceLocalPDPDetection)},
6729 {"parcel-tracking-test-data",
6730 commerce::flag_descriptions::kParcelTrackingTestDataName,
6731 commerce::flag_descriptions::kParcelTrackingTestDataDescription,
6732 kOsAndroid | kOsDesktop,
6733 FEATURE_WITH_PARAMS_VALUE_TYPE(commerce::kParcelTrackingTestData,
6734 kParcelTrackingTestDataVariations,
6735 "ParcelTrackingTestData")},
6737 #if !BUILDFLAG(IS_ANDROID)
6738 {"enable-price-tracking-chip-experiment",
6739 commerce::flag_descriptions::kPriceTrackingChipExperimentName,
6740 commerce::flag_descriptions::kPriceTrackingChipExperimentDescription,
6742 FEATURE_WITH_PARAMS_VALUE_TYPE(
6743 commerce::kCommercePriceTrackingChipExperiment,
6744 kPriceTrackingChipExperimentVariations,
6745 "PriceTrackingChipExperiment")},
6747 {"price-tracking-icon-colors",
6748 commerce::flag_descriptions::kPriceTrackingIconColorsDescription,
6749 commerce::flag_descriptions::kPriceTrackingIconColorsDescription,
6750 kOsDesktop, FEATURE_VALUE_TYPE(commerce::kPriceTrackingIconColors)},
6752 {"enable-retail-coupons", flag_descriptions::kRetailCouponsName,
6753 flag_descriptions::kRetailCouponsDescription, kOsDesktop,
6754 FEATURE_VALUE_TYPE(commerce::kRetailCoupons)},
6756 {"ntp-alpha-background-collections",
6757 flag_descriptions::kNtpAlphaBackgroundCollectionsName,
6758 flag_descriptions::kNtpAlphaBackgroundCollectionsDescription, kOsDesktop,
6759 FEATURE_VALUE_TYPE(ntp_features::kNtpAlphaBackgroundCollections)},
6761 {"ntp-background-image-error-detection",
6762 flag_descriptions::kNtpBackgroundImageErrorDetectionName,
6763 flag_descriptions::kNtpBackgroundImageErrorDetectionDescription,
6765 FEATURE_VALUE_TYPE(ntp_features::kNtpBackgroundImageErrorDetection)},
6767 {"ntp-cache-one-google-bar", flag_descriptions::kNtpCacheOneGoogleBarName,
6768 flag_descriptions::kNtpCacheOneGoogleBarDescription, kOsDesktop,
6769 FEATURE_VALUE_TYPE(ntp_features::kCacheOneGoogleBar)},
6771 {"ntp-chrome-cart-journeys-module-coexist",
6772 flag_descriptions::kNtpChromeCartHistoryClusterCoexistName,
6773 flag_descriptions::kNtpChromeCartHistoryClusterCoexistDescription,
6775 FEATURE_VALUE_TYPE(ntp_features::kNtpChromeCartHistoryClusterCoexist)},
6777 {"ntp-chrome-cart-in-journeys-module",
6778 flag_descriptions::kNtpChromeCartInHistoryClustersModuleName,
6779 flag_descriptions::kNtpChromeCartInHistoryClustersModuleDescription,
6781 FEATURE_WITH_PARAMS_VALUE_TYPE(
6782 ntp_features::kNtpChromeCartInHistoryClusterModule,
6783 kNtpChromeCartInHistoryClustersModuleVariations,
6784 "DesktopNtpModules")},
6786 {"ntp-discounts-in-journeys-module",
6787 flag_descriptions::kNtpDiscountsInHistoryClustersModuleName,
6788 flag_descriptions::kNtpDiscountsInHistoryClustersModuleDescription,
6790 FEATURE_VALUE_TYPE(ntp_features::kNtpHistoryClustersModuleDiscounts)},
6792 {"ntp-chrome-cart-module", flag_descriptions::kNtpChromeCartModuleName,
6793 flag_descriptions::kNtpChromeCartModuleDescription, kOsDesktop,
6794 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpChromeCartModule,
6795 kNtpChromeCartModuleVariations,
6796 "DesktopNtpModules")},
6798 {"chrome-cart-dom-based-heuristics",
6799 commerce::flag_descriptions::kChromeCartDomBasedHeuristicsName,
6800 commerce::flag_descriptions::kChromeCartDomBasedHeuristicsDescription,
6801 kOsDesktop, FEATURE_VALUE_TYPE(commerce::kChromeCartDomBasedHeuristics)},
6803 {"ntp-comprehensive-theme-realbox",
6804 flag_descriptions::kNtpComprehensiveThemeRealboxName,
6805 flag_descriptions::kNtpComprehensiveThemeRealboxDescription, kOsDesktop,
6806 FEATURE_VALUE_TYPE(ntp_features::kNtpComprehensiveThemeRealbox)},
6808 {"ntp-drive-module", flag_descriptions::kNtpDriveModuleName,
6809 flag_descriptions::kNtpDriveModuleDescription, kOsDesktop,
6810 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpDriveModule,
6811 kNtpDriveModuleVariations,
6812 "DesktopNtpModules")},
6814 {"ntp-drive-module-segmentation",
6815 flag_descriptions::kNtpDriveModuleSegmentationName,
6816 flag_descriptions::kNtpDriveModuleSegmentationDescription, kOsDesktop,
6817 FEATURE_VALUE_TYPE(ntp_features::kNtpDriveModuleSegmentation)},
6819 {"ntp-drive-module-show-six-files",
6820 flag_descriptions::kNtpDriveModuleShowSixFilesName,
6821 flag_descriptions::kNtpDriveModuleShowSixFilesDescription, kOsDesktop,
6822 FEATURE_VALUE_TYPE(ntp_features::kNtpDriveModuleShowSixFiles)},
6824 #if !defined(OFFICIAL_BUILD)
6825 {"ntp-dummy-modules", flag_descriptions::kNtpDummyModulesName,
6826 flag_descriptions::kNtpDummyModulesDescription, kOsDesktop,
6827 FEATURE_VALUE_TYPE(ntp_features::kNtpDummyModules)},
6830 {"ntp-journeys-module", flag_descriptions::kNtpHistoryClustersModuleName,
6831 flag_descriptions::kNtpHistoryClustersModuleDescription, kOsDesktop,
6832 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpHistoryClustersModule,
6833 kNtpHistoryClustersModuleVariations,
6834 "DesktopNtpModules")},
6836 {"ntp-journeys-module-suggestion-chip-header",
6837 flag_descriptions::kNtpHistoryClustersModuleSuggestionChipHeaderName,
6839 kNtpHistoryClustersModuleSuggestionChipHeaderDescription,
6842 ntp_features::kNtpHistoryClustersModuleSuggestionChipHeader)},
6844 {"ntp-journeys-module-model-ranking",
6845 flag_descriptions::kNtpHistoryClustersModuleUseModelRankingName,
6846 flag_descriptions::kNtpHistoryClustersModuleUseModelRankingDescription,
6849 ntp_features::kNtpHistoryClustersModuleUseModelRanking)},
6851 {"ntp-journeys-module-text-only",
6852 flag_descriptions::kNtpHistoryClustersModuleTextOnlyName,
6853 flag_descriptions::kNtpHistoryClustersModuleTextOnlyDescription,
6855 FEATURE_VALUE_TYPE(ntp_features::kNtpHistoryClustersModuleTextOnly)},
6857 {"ntp-modules-header-icon", flag_descriptions::kNtpModulesHeaderIconName,
6858 flag_descriptions::kNtpModulesHeaderIconDescription, kOsDesktop,
6859 FEATURE_VALUE_TYPE(ntp_features::kNtpModulesHeaderIcon)},
6861 {"ntp-wide-modules", flag_descriptions::kNtpWideModulesName,
6862 flag_descriptions::kNtpWideModulesDescription, kOsDesktop,
6863 FEATURE_VALUE_TYPE(ntp_features::kNtpWideModules)},
6865 {"ntp-reduced-logo-space", flag_descriptions::kNtpReducedLogoSpaceName,
6866 flag_descriptions::kNtpReducedLogoSpaceDescription, kOsDesktop,
6867 FEATURE_VALUE_TYPE(ntp_features::kNtpReducedLogoSpace)},
6869 {"ntp-single-row-shortcuts", flag_descriptions::kNtpSingleRowShortcutsName,
6870 flag_descriptions::kNtpSingleRowShortcutsDescription, kOsDesktop,
6871 FEATURE_VALUE_TYPE(ntp_features::kNtpSingleRowShortcuts)},
6873 {"ntp-middle-slot-promo-dismissal",
6874 flag_descriptions::kNtpMiddleSlotPromoDismissalName,
6875 flag_descriptions::kNtpMiddleSlotPromoDismissalDescription, kOsDesktop,
6876 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpMiddleSlotPromoDismissal,
6877 kNtpMiddleSlotPromoDismissalVariations,
6878 "DesktopNtpModules")},
6880 {"ntp-modules-drag-and-drop", flag_descriptions::kNtpModulesDragAndDropName,
6881 flag_descriptions::kNtpModulesDragAndDropDescription, kOsDesktop,
6882 FEATURE_VALUE_TYPE(ntp_features::kNtpModulesDragAndDrop)},
6884 {"ntp-modules-first-run-experience",
6885 flag_descriptions::kNtpModulesFirstRunExperienceName,
6886 flag_descriptions::kNtpModulesFirstRunExperienceDescription, kOsDesktop,
6887 FEATURE_VALUE_TYPE(ntp_features::kNtpModulesFirstRunExperience)},
6889 {"ntp-modules-redesigned", flag_descriptions::kNtpModulesRedesignedName,
6890 flag_descriptions::kNtpModulesRedesignedDescription, kOsDesktop,
6891 FEATURE_VALUE_TYPE(ntp_features::kNtpModulesRedesigned)},
6893 {"ntp-photos-module", flag_descriptions::kNtpPhotosModuleName,
6894 flag_descriptions::kNtpPhotosModuleDescription, kOsDesktop,
6895 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpPhotosModule,
6896 kNtpPhotosModuleVariations,
6897 "DesktopNtpModules")},
6899 {"ntp-photos-opt-in-art-work",
6900 flag_descriptions::kNtpPhotosModuleOptInArtWorkName,
6901 flag_descriptions::kNtpPhotosModuleOptInArtWorkDescription, kOsDesktop,
6902 FEATURE_WITH_PARAMS_VALUE_TYPE(
6903 ntp_features::kNtpPhotosModuleCustomizedOptInArtWork,
6904 kNtpPhotosModuleOptInArtWorkVariations,
6905 "DesktopNtpModules")},
6907 {"ntp-photos-opt-in-title",
6908 flag_descriptions::kNtpPhotosModuleOptInTitleName,
6909 flag_descriptions::kNtpPhotosModuleOptInTitleDescription, kOsDesktop,
6910 FEATURE_WITH_PARAMS_VALUE_TYPE(
6911 ntp_features::kNtpPhotosModuleCustomizedOptInTitle,
6912 kNtpPhotosModuleOptInTitleVariations,
6913 "DesktopNtpModules")},
6915 {"ntp-photos-soft-opt-out",
6916 flag_descriptions::kNtpPhotosModuleSoftOptOutName,
6917 flag_descriptions::kNtpPhotosModuleSoftOptOutDescription, kOsDesktop,
6918 FEATURE_VALUE_TYPE(ntp_features::kNtpPhotosModuleSoftOptOut)},
6920 {"ntp-recipe-tasks-module", flag_descriptions::kNtpRecipeTasksModuleName,
6921 flag_descriptions::kNtpRecipeTasksModuleDescription, kOsDesktop,
6922 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpRecipeTasksModule,
6923 kNtpRecipeTasksModuleVariations,
6924 "DesktopNtpModules")},
6926 {"ntp-realbox-is-tall", flag_descriptions::kNtpRealboxIsTallName,
6927 flag_descriptions::kNtpRealboxIsTallDescription, kOsDesktop,
6928 FEATURE_VALUE_TYPE(ntp_features::kRealboxIsTall)},
6930 {"ntp-realbox-cr23-all", flag_descriptions::kNtpRealboxCr23AllName,
6931 flag_descriptions::kNtpRealboxCr23AllDescription, kOsDesktop,
6932 FEATURE_VALUE_TYPE(ntp_features::kRealboxCr23All)},
6934 {"ntp-realbox-match-searchbox-theme",
6935 flag_descriptions::kNtpRealboxMatchSearchboxThemeName,
6936 flag_descriptions::kNtpRealboxMatchSearchboxThemeDescription, kOsDesktop,
6937 FEATURE_VALUE_TYPE(ntp_features::kRealboxMatchSearchboxTheme)},
6939 {"ntp-realbox-pedals", flag_descriptions::kNtpRealboxPedalsName,
6940 flag_descriptions::kNtpRealboxPedalsDescription, kOsDesktop,
6941 FEATURE_VALUE_TYPE(omnibox::kNtpRealboxPedals)},
6943 {"ntp-realbox-use-google-g-icon",
6944 flag_descriptions::kNtpRealboxUseGoogleGIconName,
6945 flag_descriptions::kNtpRealboxUseGoogleGIconDescription, kOsDesktop,
6946 FEATURE_VALUE_TYPE(ntp_features::kRealboxUseGoogleGIcon)},
6948 {"ntp-realbox-width-behavior",
6949 flag_descriptions::kNtpRealboxWidthBehaviorName,
6950 flag_descriptions::kNtpRealboxWidthBehaviorDescription, kOsDesktop,
6951 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kRealboxWidthBehavior,
6952 kNtpRealboxWidthBehaviorVariations,
6953 "NtpRealboxWidthBehavior")},
6955 {"ntp-safe-browsing-module", flag_descriptions::kNtpSafeBrowsingModuleName,
6956 flag_descriptions::kNtpSafeBrowsingModuleDescription, kOsDesktop,
6957 FEATURE_WITH_PARAMS_VALUE_TYPE(ntp_features::kNtpSafeBrowsingModule,
6958 kNtpSafeBrowsingModuleVariations,
6959 "DesktopNtpModules")},
6961 {"ntp-desktop-lens", flag_descriptions::kNtpDesktopLensName,
6962 flag_descriptions::kNtpDesktopLensDescription, kOsDesktop,
6963 FEATURE_VALUE_TYPE(ntp_features::kNtpRealboxLensSearch)},
6965 {"ntp-tab-resumption-module",
6966 flag_descriptions::kNtpTabResumptionModuleName,
6967 flag_descriptions::kNtpTabResumptionModuleDescription, kOsDesktop,
6968 FEATURE_VALUE_TYPE(ntp_features::kNtpTabResumptionModule)},
6970 {"price-insights", commerce::flag_descriptions::kPriceInsightsName,
6971 commerce::flag_descriptions::kPriceInsightsDescription, kOsDesktop,
6972 FEATURE_VALUE_TYPE(commerce::kPriceInsights)},
6974 {"shopping-page-types", commerce::flag_descriptions::kShoppingPageTypesName,
6975 commerce::flag_descriptions::kShoppingPageTypesDescription, kOsDesktop,
6976 FEATURE_VALUE_TYPE(commerce::kShoppingPageTypes)},
6978 {"show-discount-on-navigation",
6979 commerce::flag_descriptions::kShowDiscountOnNavigationName,
6980 commerce::flag_descriptions::kShowDiscountOnNavigationDescription,
6981 kOsDesktop, FEATURE_VALUE_TYPE(commerce::kShowDiscountOnNavigation)},
6983 #endif // !BUILDFLAG(IS_ANDROID)
6985 #if BUILDFLAG(CHROME_WIDE_ECHO_CANCELLATION)
6986 {"chrome-wide-echo-cancellation",
6987 flag_descriptions::kChromeWideEchoCancellationName,
6988 flag_descriptions::kChromeWideEchoCancellationDescription,
6989 kOsMac | kOsWin | kOsLinux,
6990 FEATURE_VALUE_TYPE(media::kChromeWideEchoCancellation)},
6991 #endif // BUILDFLAG(CHROME_WIDE_ECHO_CANCELLATION)
6993 #if BUILDFLAG(DCHECK_IS_CONFIGURABLE)
6994 {"dcheck-is-fatal", flag_descriptions::kDcheckIsFatalName,
6995 flag_descriptions::kDcheckIsFatalDescription, kOsWin,
6996 FEATURE_VALUE_TYPE(base::kDCheckIsFatalFeature)},
6997 #endif // BUILDFLAG(DCHECK_IS_CONFIGURABLE)
6999 {"enable-pixel-canvas-recording",
7000 flag_descriptions::kEnablePixelCanvasRecordingName,
7001 flag_descriptions::kEnablePixelCanvasRecordingDescription, kOsDesktop,
7002 FEATURE_VALUE_TYPE(features::kEnablePixelCanvasRecording)},
7004 {"enable-parallel-downloading", flag_descriptions::kParallelDownloadingName,
7005 flag_descriptions::kParallelDownloadingDescription, kOsAll,
7006 FEATURE_VALUE_TYPE(download::features::kParallelDownloading)},
7008 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
7009 {"enable-async-dns", flag_descriptions::kAsyncDnsName,
7010 flag_descriptions::kAsyncDnsDescription, kOsWin | kOsLinux,
7011 FEATURE_VALUE_TYPE(features::kAsyncDns)},
7012 #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
7014 {"enable-new-download-backend",
7015 flag_descriptions::kEnableNewDownloadBackendName,
7016 flag_descriptions::kEnableNewDownloadBackendDescription, kOsAll,
7018 download::features::kUseDownloadOfflineContentProvider)},
7020 {"downloads-migrate-to-jobs-api",
7021 flag_descriptions::kDownloadsMigrateToJobsAPIName,
7022 flag_descriptions::kDownloadsMigrateToJobsAPIDescription, kOsAndroid,
7023 FEATURE_VALUE_TYPE(download::features::kDownloadsMigrateToJobsAPI)},
7025 {"download-notification-service-unified-api",
7026 flag_descriptions::kDownloadNotificationServiceUnifiedAPIName,
7027 flag_descriptions::kDownloadNotificationServiceUnifiedAPIDescription,
7030 download::features::kDownloadNotificationServiceUnifiedAPI)},
7032 {"download-range", flag_descriptions::kDownloadRangeName,
7033 flag_descriptions::kDownloadRangeDescription, kOsAll,
7034 FEATURE_VALUE_TYPE(download::features::kDownloadRange)},
7036 {"tab-hover-card-image-settings",
7037 flag_descriptions::kTabHoverCardImageSettingsName,
7038 flag_descriptions::kTabHoverCardImageSettingsDescription, kOsDesktop,
7039 FEATURE_VALUE_TYPE(features::kTabHoverCardImageSettings)},
7041 {"tab-hover-card-images", flag_descriptions::kTabHoverCardImagesName,
7042 flag_descriptions::kTabHoverCardImagesDescription, kOsDesktop,
7043 FEATURE_VALUE_TYPE(features::kTabHoverCardImages)},
7045 {"enable-network-logging-to-file",
7046 flag_descriptions::kEnableNetworkLoggingToFileName,
7047 flag_descriptions::kEnableNetworkLoggingToFileDescription, kOsAll,
7048 SINGLE_VALUE_TYPE(network::switches::kLogNetLog)},
7050 #if !BUILDFLAG(IS_ANDROID)
7051 {"sync-webauthn-credentials",
7052 flag_descriptions::kSyncWebauthnCredentialsName,
7053 flag_descriptions::kSyncWebauthnCredentialsDescription, kOsDesktop,
7054 FEATURE_VALUE_TYPE(syncer::kSyncWebauthnCredentials)},
7056 {"web-authentication-new-passkey-ui",
7057 flag_descriptions::kWebAuthenticationNewPasskeyUIName,
7058 flag_descriptions::kWebAuthenticationNewPasskeyUIDescription, kOsDesktop,
7059 FEATURE_VALUE_TYPE(device::kWebAuthnNewPasskeyUI)},
7061 {"web-authentication-permit-enterprise-attestation",
7062 flag_descriptions::kWebAuthenticationPermitEnterpriseAttestationName,
7064 kWebAuthenticationPermitEnterpriseAttestationDescription,
7066 ORIGIN_LIST_VALUE_TYPE(
7067 webauthn::switches::kPermitEnterpriseAttestationOriginList,
7071 {"legacy-tech-report-enable-cookie-issue-reports",
7072 flag_descriptions::kLegacyTechReportEnableCookieIssueReportsName,
7073 flag_descriptions::kLegacyTechReportEnableCookieIssueReportsDescription,
7075 FEATURE_VALUE_TYPE(features::kLegacyTechReportEnableCookieIssueReports)},
7077 {"legacy-tech-report-top-level-url",
7078 flag_descriptions::kLegacyTechReportTopLevelUrlName,
7079 flag_descriptions::kLegacyTechReportTopLevelUrlDescription, kOsAll,
7080 FEATURE_VALUE_TYPE(features::kLegacyTechReportTopLevelUrl)},
7082 #if BUILDFLAG(IS_CHROMEOS_ASH)
7083 {"enable-web-authentication-chromeos-authenticator",
7084 flag_descriptions::kEnableWebAuthenticationChromeOSAuthenticatorName,
7086 kEnableWebAuthenticationChromeOSAuthenticatorDescription,
7087 kOsCrOS, FEATURE_VALUE_TYPE(device::kWebAuthCrosPlatformAuthenticator)},
7091 "zero-copy-tab-capture",
7092 flag_descriptions::kEnableZeroCopyTabCaptureName,
7093 flag_descriptions::kEnableZeroCopyTabCaptureDescription,
7094 kOsMac | kOsWin | kOsCrOS,
7095 FEATURE_VALUE_TYPE(blink::features::kZeroCopyTabCapture),
7098 #if BUILDFLAG(ENABLE_PDF)
7099 {"accessible-pdf-form", flag_descriptions::kAccessiblePDFFormName,
7100 flag_descriptions::kAccessiblePDFFormDescription, kOsDesktop,
7101 FEATURE_VALUE_TYPE(chrome_pdf::features::kAccessiblePDFForm)},
7103 {"pdf-oopif", flag_descriptions::kPdfOopifName,
7104 flag_descriptions::kPdfOopifDescription, kOsDesktop,
7105 FEATURE_VALUE_TYPE(chrome_pdf::features::kPdfOopif)},
7107 {"pdf-portfolio", flag_descriptions::kPdfPortfolioName,
7108 flag_descriptions::kPdfPortfolioDescription, kOsDesktop,
7109 FEATURE_VALUE_TYPE(chrome_pdf::features::kPdfPortfolio)},
7111 {"pdf-use-skia-renderer", flag_descriptions::kPdfUseSkiaRendererName,
7112 flag_descriptions::kPdfUseSkiaRendererDescription, kOsDesktop,
7113 FEATURE_VALUE_TYPE(chrome_pdf::features::kPdfUseSkiaRenderer)},
7114 #endif // BUILDFLAG(ENABLE_PDF)
7116 #if BUILDFLAG(ENABLE_PRINTING)
7117 #if BUILDFLAG(IS_CHROMEOS)
7118 {"enable-borderless-printing",
7119 flag_descriptions::kEnableBorderlessPrintingName,
7120 flag_descriptions::kEnableBorderlessPrintingDescription,
7121 kOsCrOS | kOsLacros,
7122 FEATURE_VALUE_TYPE(printing::features::kEnableBorderlessPrinting)},
7123 #endif // BUILDFLAG(IS_CHROMEOS)
7125 #if BUILDFLAG(IS_MAC)
7126 {"cups-ipp-printing-backend",
7127 flag_descriptions::kCupsIppPrintingBackendName,
7128 flag_descriptions::kCupsIppPrintingBackendDescription, kOsMac,
7129 FEATURE_VALUE_TYPE(printing::features::kCupsIppPrintingBackend)},
7130 #endif // BUILDFLAG(IS_MAC)
7132 #if BUILDFLAG(IS_WIN)
7133 {"print-with-postscript-type42-fonts",
7134 flag_descriptions::kPrintWithPostScriptType42FontsName,
7135 flag_descriptions::kPrintWithPostScriptType42FontsDescription, kOsWin,
7136 FEATURE_VALUE_TYPE(printing::features::kPrintWithPostScriptType42Fonts)},
7138 {"print-with-reduced-rasterization",
7139 flag_descriptions::kPrintWithReducedRasterizationName,
7140 flag_descriptions::kPrintWithReducedRasterizationDescription, kOsWin,
7141 FEATURE_VALUE_TYPE(printing::features::kPrintWithReducedRasterization)},
7143 {"read-printer-capabilities-with-xps",
7144 flag_descriptions::kReadPrinterCapabilitiesWithXpsName,
7145 flag_descriptions::kReadPrinterCapabilitiesWithXpsDescription, kOsWin,
7146 FEATURE_VALUE_TYPE(printing::features::kReadPrinterCapabilitiesWithXps)},
7148 {"use-xps-for-printing", flag_descriptions::kUseXpsForPrintingName,
7149 flag_descriptions::kUseXpsForPrintingDescription, kOsWin,
7150 FEATURE_VALUE_TYPE(printing::features::kUseXpsForPrinting)},
7152 {"use-xps-for-printing-from-pdf",
7153 flag_descriptions::kUseXpsForPrintingFromPdfName,
7154 flag_descriptions::kUseXpsForPrintingFromPdfDescription, kOsWin,
7155 FEATURE_VALUE_TYPE(printing::features::kUseXpsForPrintingFromPdf)},
7156 #endif // BUILDFLAG(IS_WIN)
7157 #endif // BUILDFLAG(ENABLE_PRINTING)
7159 #if BUILDFLAG(IS_WIN)
7160 {"enable-windows-gaming-input-data-fetcher",
7161 flag_descriptions::kEnableWindowsGamingInputDataFetcherName,
7162 flag_descriptions::kEnableWindowsGamingInputDataFetcherDescription, kOsWin,
7163 FEATURE_VALUE_TYPE(features::kEnableWindowsGamingInputDataFetcher)},
7165 {"windows11-mica-titlebar", flag_descriptions::kWindows11MicaTitlebarName,
7166 flag_descriptions::kWindows11MicaTitlebarDescription, kOsWin,
7167 FEATURE_VALUE_TYPE(kWindows11MicaTitlebar)},
7170 #if BUILDFLAG(IS_ANDROID)
7171 {"enable-new-tab-search-engine-url-android",
7172 flag_descriptions::kNewTabSearchEngineUrlAndroidName,
7173 flag_descriptions::kNewTabSearchEngineUrlAndroidDescription, kOsAndroid,
7174 FEATURE_WITH_PARAMS_VALUE_TYPE(
7175 chrome::android::kNewTabSearchEngineUrlAndroid,
7176 kNewTabSearchEngineUrlAndroidVariations,
7177 "NewTabSearchEngineUrl")},
7179 {"enable-start-surface", flag_descriptions::kStartSurfaceAndroidName,
7180 flag_descriptions::kStartSurfaceAndroidDescription, kOsAndroid,
7181 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kStartSurfaceAndroid,
7182 kStartSurfaceAndroidVariations,
7185 {"enable-feed-position-on-ntp", flag_descriptions::kFeedPositionAndroidName,
7186 flag_descriptions::kFeedPositionAndroidDescription, kOsAndroid,
7187 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kFeedPositionAndroid,
7188 kFeedPositionAndroidVariations,
7189 "FeedPositionAndroid")},
7191 {"enable-instant-start", flag_descriptions::kInstantStartName,
7192 flag_descriptions::kInstantStartDescription, kOsAndroid,
7193 FEATURE_VALUE_TYPE(chrome::android::kInstantStart)},
7195 {"enable-start-surface-disabled-feed-improvement",
7196 flag_descriptions::kStartSurfaceDisabledFeedImprovementName,
7197 flag_descriptions::kStartSurfaceDisabledFeedImprovementDescription,
7199 FEATURE_VALUE_TYPE(chrome::android::kStartSurfaceDisabledFeedImprovement)},
7201 {"enable-start-surface-refactor",
7202 flag_descriptions::kStartSurfaceRefactorName,
7203 flag_descriptions::kStartSurfaceRefactorDescription, kOsAndroid,
7204 FEATURE_VALUE_TYPE(chrome::android::kStartSurfaceRefactor)},
7206 {"enable-start-surface-on-tablet",
7207 flag_descriptions::kStartSurfaceOnTabletName,
7208 flag_descriptions::kStartSurfaceOnTabletDescription, kOsAndroid,
7209 FEATURE_VALUE_TYPE(chrome::android::kStartSurfaceOnTablet)},
7211 {"enable-start-surface-spare-tab",
7212 flag_descriptions::kStartSurfaceSpareTabName,
7213 flag_descriptions::kStartSurfaceSpareTabDescription, kOsAndroid,
7214 FEATURE_VALUE_TYPE(chrome::android::kStartSurfaceSpareTab)},
7216 {"enable-start-surface-with-accessibility",
7217 flag_descriptions::kStartSurfaceWithAccessibilityName,
7218 flag_descriptions::kStartSurfaceWithAccessibilityDescription, kOsAndroid,
7219 FEATURE_VALUE_TYPE(chrome::android::kStartSurfaceWithAccessibility)},
7221 {"enable-surface-polish", flag_descriptions::kSurfacePolishName,
7222 flag_descriptions::kSurfacePolishDescription, kOsAndroid,
7223 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kSurfacePolish,
7224 kSurfacePolishVariations,
7227 {"enable-show-ntp-at-startup",
7228 flag_descriptions::kShowNtpAtStartupAndroidName,
7229 flag_descriptions::kShowNtpAtStartupAndroidDescription, kOsAndroid,
7230 FEATURE_VALUE_TYPE(chrome::android::kShowNtpAtStartupAndroid)},
7232 {"enable-show-scrollable-mvt-on-ntp",
7233 flag_descriptions::kShowScrollableMVTOnNTPAndroidName,
7234 flag_descriptions::kShowScrollableMVTOnNTPAndroidDescription, kOsAndroid,
7235 FEATURE_VALUE_TYPE(chrome::android::kShowScrollableMVTOnNTPAndroid)},
7237 {"enable-search-resumption-module",
7238 flag_descriptions::kSearchResumptionModuleAndroidName,
7239 flag_descriptions::kSearchResumptionModuleAndroidDescription, kOsAndroid,
7240 FEATURE_WITH_PARAMS_VALUE_TYPE(
7241 chrome::android::kSearchResumptionModuleAndroid,
7242 kSearchResumptionModuleAndroidVariations,
7243 "kSearchResumptionModuleAndroid")},
7245 {"enable-close-tab-suggestions",
7246 flag_descriptions::kCloseTabSuggestionsName,
7247 flag_descriptions::kCloseTabSuggestionsDescription, kOsAndroid,
7248 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kCloseTabSuggestions,
7249 kCloseTabSuggestionsStaleVariations,
7250 "CloseSuggestionsTab")},
7252 {"enable-critical-persisted-tab-data",
7253 flag_descriptions::kCriticalPersistedTabDataName,
7254 flag_descriptions::kCriticalPersistedTabDataDescription, kOsAndroid,
7255 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kCriticalPersistedTabData,
7256 kCriticalPersistedTabDataVariations,
7257 "CriticalPersistedTabData")},
7258 {"enable-tabstate-flatbuffer", flag_descriptions::kTabStateFlatBufferName,
7259 flag_descriptions::kTabStateFlatBufferDescription, kOsAndroid,
7260 FEATURE_VALUE_TYPE(chrome::android::kTabStateFlatBuffer)},
7262 {"suppress-toolbar-captures",
7263 flag_descriptions::kSuppressToolbarCapturesName,
7264 flag_descriptions::kSuppressToolbarCapturesDescription, kOsAndroid,
7265 FEATURE_VALUE_TYPE(chrome::android::kSuppressToolbarCaptures)},
7267 {"enable-commerce-merchant-viewer",
7268 flag_descriptions::kCommerceMerchantViewerAndroidName,
7269 flag_descriptions::kCommerceMerchantViewerAndroidDescription, kOsAndroid,
7270 FEATURE_VALUE_TYPE(commerce::kCommerceMerchantViewer)},
7272 {"enable-commerce-price-tracking",
7273 commerce::flag_descriptions::kCommercePriceTrackingName,
7274 commerce::flag_descriptions::kCommercePriceTrackingDescription, kOsAndroid,
7275 FEATURE_WITH_PARAMS_VALUE_TYPE(
7276 commerce::kCommercePriceTracking,
7277 commerce::kCommercePriceTrackingAndroidVariations,
7278 "CommercePriceTracking")},
7280 {"enable-start-surface-return-time",
7281 flag_descriptions::kStartSurfaceReturnTimeName,
7282 flag_descriptions::kStartSurfaceReturnTimeDescription, kOsAndroid,
7283 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kStartSurfaceReturnTime,
7284 kStartSurfaceReturnTimeVariations,
7285 "StartSurfaceReturnTime")},
7286 {"account-reauthentication-recent-time-window",
7287 flag_descriptions::kAccountReauthenticationRecentTimeWindowName,
7288 flag_descriptions::kAccountReauthenticationRecentTimeWindowDescription,
7290 FEATURE_WITH_PARAMS_VALUE_TYPE(
7291 chrome::android::kAccountReauthenticationRecentTimeWindow,
7292 kAccountReauthenticationRecentTimeWindowVariations,
7293 "AccountReauthenticationRecentTimeWindow")},
7295 {"tab-drag-drop", flag_descriptions::kTabDragDropName,
7296 flag_descriptions::kTabDragDropDescription, kOsAndroid,
7297 FEATURE_VALUE_TYPE(chrome::android::kTabDragDropAndroid)},
7299 {"tab-link-drag-drop", flag_descriptions::kTabAndLinkDragDropName,
7300 flag_descriptions::kTabAndLinkDragDropDescription, kOsAndroid,
7301 FEATURE_VALUE_TYPE(chrome::android::kTabAndLinkDragDropAndroid)},
7303 {"enable-tab-engagement-reporting",
7304 flag_descriptions::kTabEngagementReportingName,
7305 flag_descriptions::kTabEngagementReportingDescription, kOsAndroid,
7306 FEATURE_VALUE_TYPE(chrome::android::kTabEngagementReportingAndroid)},
7308 {"enable-tab-strip-redesign",
7309 flag_descriptions::kTabStripRedesignAndroidName,
7310 flag_descriptions::kTabStripRedesignAndroidDescription, kOsAndroid,
7311 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kTabStripRedesign,
7312 kTabStripRedesignVariations,
7313 "TabStripRedesignAndroid")},
7315 {"enable-tablet-toolbar-reordering",
7316 flag_descriptions::kTabletToolbarReorderingAndroidName,
7317 flag_descriptions::kTabletToolbarReorderingAndroidDescription, kOsAndroid,
7318 FEATURE_VALUE_TYPE(chrome::android::kTabletToolbarReordering)},
7320 {"enable-empty-states", flag_descriptions::kEmptyStatesAndroidName,
7321 flag_descriptions::kEmptyStatesAndroidDescription, kOsAndroid,
7322 FEATURE_VALUE_TYPE(chrome::android::kEmptyStates)},
7324 {"enable-tab-strip-startup-refactoring",
7325 flag_descriptions::kTabStripStartupRefactoringName,
7326 flag_descriptions::kTabStripStartupRefactoringDescription, kOsAndroid,
7327 FEATURE_VALUE_TYPE(chrome::android::kTabStripStartupRefactoring)},
7329 {"enable-baseline-gm3-surface-colors",
7330 flag_descriptions::kBaselineGM3SurfaceColorsName,
7331 flag_descriptions::kBaselineGM3SurfaceColorsDescription, kOsAndroid,
7332 FEATURE_VALUE_TYPE(chrome::android::kBaselineGM3SurfaceColors)},
7334 {"enable-delay-temp-strip-removal",
7335 flag_descriptions::kDelayTempStripRemovalName,
7336 flag_descriptions::kDelayTempStripRemovalDescription, kOsAndroid,
7337 FEATURE_VALUE_TYPE(chrome::android::kDelayTempStripRemoval)},
7338 #endif // BUILDFLAG(IS_ANDROID)
7340 {"unsafely-treat-insecure-origin-as-secure",
7341 flag_descriptions::kTreatInsecureOriginAsSecureName,
7342 flag_descriptions::kTreatInsecureOriginAsSecureDescription, kOsAll,
7343 ORIGIN_LIST_VALUE_TYPE(
7344 network::switches::kUnsafelyTreatInsecureOriginAsSecure,
7347 {"disable-process-reuse", flag_descriptions::kDisableProcessReuse,
7348 flag_descriptions::kDisableProcessReuseDescription, kOsDesktop,
7349 FEATURE_VALUE_TYPE(features::kDisableProcessReuse)},
7351 #if !BUILDFLAG(IS_ANDROID)
7352 {"enable-accessibility-live-caption",
7353 flag_descriptions::kEnableAccessibilityLiveCaptionName,
7354 flag_descriptions::kEnableAccessibilityLiveCaptionDescription, kOsDesktop,
7355 FEATURE_VALUE_TYPE(media::kLiveCaption)},
7357 {"read-anything", flag_descriptions::kReadAnythingName,
7358 flag_descriptions::kReadAnythingDescription, kOsDesktop,
7359 FEATURE_VALUE_TYPE(features::kReadAnything)},
7361 {"read-anything-read-aloud", flag_descriptions::kReadAnythingReadAloudName,
7362 flag_descriptions::kReadAnythingReadAloudDescription, kOsDesktop,
7363 FEATURE_VALUE_TYPE(features::kReadAnythingReadAloud)},
7365 {"read-anything-with-screen2x",
7366 flag_descriptions::kReadAnythingWithScreen2xName,
7367 flag_descriptions::kReadAnythingWithScreen2xDescription, kOsDesktop,
7368 FEATURE_VALUE_TYPE(features::kReadAnythingWithScreen2x)},
7370 {"read-anything-webui-toolbar",
7371 flag_descriptions::kReadAnythingWebUIToolbarName,
7372 flag_descriptions::kReadAnythingWebUIToolbarDescription, kOsDesktop,
7373 FEATURE_VALUE_TYPE(features::kReadAnythingWebUIToolbar)},
7375 {"support-tool", flag_descriptions::kSupportTool,
7376 flag_descriptions::kSupportToolDescription, kOsDesktop,
7377 FEATURE_VALUE_TYPE(features::kSupportTool)},
7379 {"support-tool-screenshot", flag_descriptions::kSupportToolScreenshot,
7380 flag_descriptions::kSupportToolScreenshotDescription, kOsDesktop,
7381 FEATURE_VALUE_TYPE(features::kSupportToolScreenshot)},
7382 #endif // !BUILDFLAG(IS_ANDROID)
7384 {"enable-auto-disable-accessibility",
7385 flag_descriptions::kEnableAutoDisableAccessibilityName,
7386 flag_descriptions::kEnableAutoDisableAccessibilityDescription, kOsAll,
7387 FEATURE_VALUE_TYPE(features::kAutoDisableAccessibility)},
7389 #if BUILDFLAG(IS_ANDROID)
7390 {"enable-auto-disable-accessibility-v2",
7391 flag_descriptions::kEnableAutoDisableAccessibilityV2Name,
7392 flag_descriptions::kEnableAutoDisableAccessibilityV2Description,
7393 kOsAndroid, FEATURE_VALUE_TYPE(features::kAutoDisableAccessibilityV2)},
7396 #if BUILDFLAG(IS_ANDROID)
7397 {"cct-incognito-available-to-third-party",
7398 flag_descriptions::kCCTIncognitoAvailableToThirdPartyName,
7399 flag_descriptions::kCCTIncognitoAvailableToThirdPartyDescription,
7401 FEATURE_VALUE_TYPE(chrome::android::kCCTIncognitoAvailableToThirdParty)},
7404 #if BUILDFLAG(IS_ANDROID)
7405 {"cct-minimized", flag_descriptions::kCCTMinimizedName,
7406 flag_descriptions::kCCTMinimizedDescription, kOsAndroid,
7407 FEATURE_VALUE_TYPE(chrome::android::kCCTMinimized)},
7410 #if BUILDFLAG(IS_ANDROID)
7411 {"cct-page-insights-hub", flag_descriptions::kCCTPageInsightsHubName,
7412 flag_descriptions::kCCTPageInsightsHubDescription, kOsAndroid,
7413 FEATURE_WITH_PARAMS_VALUE_TYPE(
7414 chrome::android::kCCTPageInsightsHub,
7415 kCCTPageInsightsHubAutotriggerDurationVariations,
7416 "CCTPageInsightsHubAutotriggerDuration")},
7417 {"cct-prevent-touches", flag_descriptions::kCCTPreventTouchesName,
7418 flag_descriptions::kCCTPreventTouchesDescription, kOsAndroid,
7419 FEATURE_VALUE_TYPE(chrome::android::kCCTPreventTouches)},
7420 {"cct-resizable-90-maximum-height",
7421 flag_descriptions::kCCTResizable90MaximumHeightName,
7422 flag_descriptions::kCCTResizable90MaximumHeightDescription, kOsAndroid,
7423 FEATURE_VALUE_TYPE(chrome::android::kCCTResizable90MaximumHeight)},
7424 {"cct-resizable-for-third-parties",
7425 flag_descriptions::kCCTResizableForThirdPartiesName,
7426 flag_descriptions::kCCTResizableForThirdPartiesDescription, kOsAndroid,
7427 FEATURE_WITH_PARAMS_VALUE_TYPE(
7428 chrome::android::kCCTResizableForThirdParties,
7429 kCCTResizableThirdPartiesDefaultPolicyVariations,
7430 "CCTResizableThirdPartiesDefaultPolicy")},
7431 {"cct-resizable-side-sheet", flag_descriptions::kCCTResizableSideSheetName,
7432 flag_descriptions::kCCTResizableSideSheetDescription, kOsAndroid,
7433 FEATURE_VALUE_TYPE(chrome::android::kCCTResizableSideSheet)},
7434 {"cct-resizable-side-sheet-for-third-parties",
7435 flag_descriptions::kCCTResizableSideSheetForThirdPartiesName,
7436 flag_descriptions::kCCTResizableSideSheetForThirdPartiesDescription,
7439 chrome::android::kCCTResizableSideSheetForThirdParties)},
7442 #if BUILDFLAG(IS_ANDROID)
7443 {"cct-real-time-engagement-signals",
7444 flag_descriptions::kCCTRealTimeEngagementSignalsName,
7445 flag_descriptions::kCCTRealTimeEngagementSignalsDescription, kOsAndroid,
7446 FEATURE_WITH_PARAMS_VALUE_TYPE(
7447 chrome::android::kCCTRealTimeEngagementSignals,
7448 kCCTRealTimeEngagementSignalsVariations,
7449 "CCTRealTimeEngagementSignals")},
7450 {"cct-real-time-engagement-signals-alternative-impl",
7451 flag_descriptions::kCCTRealTimeEngagementSignalsAlternativeImplName,
7452 flag_descriptions::kCCTRealTimeEngagementSignalsAlternativeImplDescription,
7454 FEATURE_WITH_PARAMS_VALUE_TYPE(
7455 chrome::android::kCCTRealTimeEngagementSignalsAlternativeImpl,
7456 kCCTRealTimeEngagementSignalsAlternativeImplVariations,
7457 "CCTRealTimeEngagementSignalsAlternativeImpl")},
7460 #if BUILDFLAG(IS_ANDROID)
7461 {"cct-brand-transparency", flag_descriptions::kCCTBrandTransparencyName,
7462 flag_descriptions::kCCTBrandTransparencyDescription, kOsAndroid,
7463 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kCCTBrandTransparency,
7464 kCctBrandTransparencyVariations,
7465 "CCTBrandTransparency")},
7468 #if BUILDFLAG(IS_CHROMEOS)
7469 {"allow-dsp-based-aec", flag_descriptions::kCrOSDspBasedAecAllowedName,
7470 flag_descriptions::kCrOSDspBasedAecAllowedDescription, kOsCrOS | kOsLacros,
7471 FEATURE_VALUE_TYPE(media::kCrOSDspBasedAecAllowed)},
7472 {"allow-dsp-based-ns", flag_descriptions::kCrOSDspBasedNsAllowedName,
7473 flag_descriptions::kCrOSDspBasedNsAllowedDescription, kOsCrOS | kOsLacros,
7474 FEATURE_VALUE_TYPE(media::kCrOSDspBasedNsAllowed)},
7475 {"allow-dsp-based-agc", flag_descriptions::kCrOSDspBasedAgcAllowedName,
7476 flag_descriptions::kCrOSDspBasedAgcAllowedDescription, kOsCrOS | kOsLacros,
7477 FEATURE_VALUE_TYPE(media::kCrOSDspBasedAgcAllowed)},
7478 {"enforce-system-aec", flag_descriptions::kCrOSEnforceSystemAecName,
7479 flag_descriptions::kCrOSEnforceSystemAecDescription, kOsCrOS | kOsLacros,
7480 FEATURE_VALUE_TYPE(media::kCrOSEnforceSystemAec)},
7481 {"enforce-system-aec-agc", flag_descriptions::kCrOSEnforceSystemAecAgcName,
7482 flag_descriptions::kCrOSEnforceSystemAecAgcDescription,
7483 kOsCrOS | kOsLacros, FEATURE_VALUE_TYPE(media::kCrOSEnforceSystemAecAgc)},
7484 {"enforce-system-aec-ns-agc",
7485 flag_descriptions::kCrOSEnforceSystemAecNsAgcName,
7486 flag_descriptions::kCrOSEnforceSystemAecNsAgcDescription,
7487 kOsCrOS | kOsLacros,
7488 FEATURE_VALUE_TYPE(media::kCrOSEnforceSystemAecNsAgc)},
7489 {"enforce-system-aec-ns", flag_descriptions::kCrOSEnforceSystemAecNsName,
7490 flag_descriptions::kCrOSEnforceSystemAecNsDescription, kOsCrOS | kOsLacros,
7491 FEATURE_VALUE_TYPE(media::kCrOSEnforceSystemAecNs)},
7492 {"system-voice-isolation-option",
7493 flag_descriptions::kCrOSSystemVoiceIsolationOptionName,
7494 flag_descriptions::kCrOSSystemVoiceIsolationOptionDescription,
7495 kOsCrOS | kOsLacros,
7496 FEATURE_VALUE_TYPE(media::kCrOSSystemVoiceIsolationOption)},
7497 {"ignore-ui-gains", flag_descriptions::kIgnoreUiGainsName,
7498 flag_descriptions::kIgnoreUiGainsDescription, kOsCrOS | kOsLacros,
7499 FEATURE_VALUE_TYPE(media::kIgnoreUiGains)},
7500 {"show-force-respect-ui-gains-toggle",
7501 flag_descriptions::kShowForceRespectUiGainsToggleName,
7502 flag_descriptions::kShowForceRespectUiGainsToggleDescription,
7503 kOsCrOS | kOsLacros,
7504 FEATURE_VALUE_TYPE(media::kShowForceRespectUiGainsToggle)},
7505 {"audio-flexible-loopback-for-system-loopback",
7506 flag_descriptions::kAudioFlexibleLoopbackForSystemLoopbackName,
7507 flag_descriptions::kAudioFlexibleLoopbackForSystemLoopbackDescription,
7508 kOsCrOS | kOsLacros,
7509 FEATURE_VALUE_TYPE(media::kAudioFlexibleLoopbackForSystemLoopback)},
7512 {"enable-css-selector-fragment-anchor",
7513 flag_descriptions::kEnableCssSelectorFragmentAnchorName,
7514 flag_descriptions::kEnableCssSelectorFragmentAnchorDescription, kOsAll,
7515 FEATURE_VALUE_TYPE(blink::features::kCssSelectorFragmentAnchor)},
7517 {"drop-input-events-before-first-paint",
7518 flag_descriptions::kDropInputEventsBeforeFirstPaintName,
7519 flag_descriptions::kDropInputEventsBeforeFirstPaintDescription, kOsAll,
7520 FEATURE_VALUE_TYPE(blink::features::kDropInputEventsBeforeFirstPaint)},
7522 // Should only be available if kResamplingScrollEvents is on, and using
7523 // linear resampling.
7524 {"enable-resampling-scroll-events-experimental-prediction",
7525 flag_descriptions::kEnableResamplingScrollEventsExperimentalPredictionName,
7527 kEnableResamplingScrollEventsExperimentalPredictionDescription,
7529 FEATURE_WITH_PARAMS_VALUE_TYPE(
7530 ::features::kResamplingScrollEventsExperimentalPrediction,
7531 kResamplingScrollEventsExperimentalPredictionVariations,
7532 "ResamplingScrollEventsExperimentalLatency")},
7534 #if BUILDFLAG(IS_WIN)
7535 {"calculate-native-win-occlusion",
7536 flag_descriptions::kCalculateNativeWinOcclusionName,
7537 flag_descriptions::kCalculateNativeWinOcclusionDescription, kOsWin,
7538 FEATURE_VALUE_TYPE(features::kCalculateNativeWinOcclusion)},
7539 #endif // BUILDFLAG(IS_WIN)
7541 #if !BUILDFLAG(IS_ANDROID)
7542 {"happiness-tracking-surveys-for-desktop-demo",
7543 flag_descriptions::kHappinessTrackingSurveysForDesktopDemoName,
7544 flag_descriptions::kHappinessTrackingSurveysForDesktopDemoDescription,
7546 FEATURE_VALUE_TYPE(features::kHappinessTrackingSurveysForDesktopDemo)},
7547 #endif // !BUILDFLAG(IS_ANDROID)
7549 #if !BUILDFLAG(IS_ANDROID)
7550 {"hats-webui", flag_descriptions::kHatsWebUIName,
7551 flag_descriptions::kHatsWebUIDescription, kOsDesktop,
7552 FEATURE_VALUE_TYPE(features::kHaTSWebUI)},
7553 #endif // !BUILDFLAG(IS_ANDROID)
7555 #if BUILDFLAG(IS_ANDROID)
7556 {"android-hats-refactor", flag_descriptions::kAndroidHatsRefactorName,
7557 flag_descriptions::kAndroidHatsRefactorDescription, kOsAndroid,
7558 FEATURE_VALUE_TYPE(chrome::android::kAndroidHatsRefactor)},
7559 #endif // BUILDFLAG(IS_ANDROID)
7561 #if BUILDFLAG(IS_WIN)
7562 {"use-angle", flag_descriptions::kUseAngleName,
7563 flag_descriptions::kUseAngleDescriptionWindows, kOsWin,
7564 MULTI_VALUE_TYPE(kUseAngleChoicesWindows)},
7565 #elif BUILDFLAG(IS_MAC)
7566 {"use-angle", flag_descriptions::kUseAngleName,
7567 flag_descriptions::kUseAngleDescriptionMac, kOsMac,
7568 MULTI_VALUE_TYPE(kUseAngleChoicesMac)},
7571 #if BUILDFLAG(IS_CHROMEOS_ASH)
7572 {"enable-assistant-dsp", flag_descriptions::kEnableGoogleAssistantDspName,
7573 flag_descriptions::kEnableGoogleAssistantDspDescription, kOsCrOS,
7574 FEATURE_VALUE_TYPE(ash::assistant::features::kEnableDspHotword)},
7575 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
7577 #if BUILDFLAG(IS_CHROMEOS)
7578 {"disable-quick-answers-v2-translation",
7579 flag_descriptions::kDisableQuickAnswersV2TranslationName,
7580 flag_descriptions::kDisableQuickAnswersV2TranslationDescription,
7581 kOsCrOS | kOsLacros,
7582 FEATURE_VALUE_TYPE(chromeos::features::kDisableQuickAnswersV2Translation)},
7583 {"quick-answers-rich-card", flag_descriptions::kQuickAnswersRichCardName,
7584 flag_descriptions::kQuickAnswersRichCardDescription, kOsCrOS | kOsLacros,
7585 FEATURE_VALUE_TYPE(chromeos::features::kQuickAnswersRichCard)},
7586 #endif // BUILDFLAG(IS_CHROMEOS)
7588 #if BUILDFLAG(IS_ANDROID)
7589 {"instance-switcher", flag_descriptions::kInstanceSwitcherName,
7590 flag_descriptions::kInstanceSwitcherDescription, kOsAndroid,
7591 FEATURE_VALUE_TYPE(chrome::android::kInstanceSwitcher)},
7592 #endif // BUILDFLAG(IS_ANDROID)
7594 {"enable-gamepad-button-axis-events",
7595 flag_descriptions::kEnableGamepadButtonAxisEventsName,
7596 flag_descriptions::kEnableGamepadButtonAxisEventsDescription, kOsAll,
7597 FEATURE_VALUE_TYPE(features::kEnableGamepadButtonAxisEvents)},
7599 {"enable-gamepad-multitouch",
7600 flag_descriptions::kEnableGamepadMultitouchName,
7601 flag_descriptions::kEnableGamepadMultitouchDescription, kOsWin,
7602 FEATURE_VALUE_TYPE(features::kEnableGamepadMultitouch)},
7604 {"restrict-gamepad-access", flag_descriptions::kRestrictGamepadAccessName,
7605 flag_descriptions::kRestrictGamepadAccessDescription, kOsAll,
7606 FEATURE_VALUE_TYPE(features::kRestrictGamepadAccess)},
7608 {"enable-gamepad-trigger-rumble",
7609 flag_descriptions::kEnableGamepadTriggerRumbleName,
7610 flag_descriptions::kEnableGamepadTriggerRumbleDescription, kOsAll,
7611 FEATURE_VALUE_TYPE(blink::features::kWGIGamepadTriggerRumble)},
7613 #if !BUILDFLAG(IS_ANDROID)
7614 {"sharing-desktop-screenshots",
7615 flag_descriptions::kSharingDesktopScreenshotsName,
7616 flag_descriptions::kSharingDesktopScreenshotsDescription, kOsDesktop,
7617 FEATURE_VALUE_TYPE(sharing_hub::kDesktopScreenshots)},
7620 #if BUILDFLAG(IS_CHROMEOS_ASH)
7621 {"cros-labs-overview-desk-navigation",
7622 flag_descriptions::kOverviewDeskNavigationName,
7623 flag_descriptions::kOverviewDeskNavigationDescription, kOsCrOS,
7624 FEATURE_VALUE_TYPE(ash::features::kOverviewDeskNavigation)},
7625 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
7627 #if BUILDFLAG(IS_CHROMEOS_ASH)
7628 {"enable-assistant-stereo-input",
7629 flag_descriptions::kEnableGoogleAssistantStereoInputName,
7630 flag_descriptions::kEnableGoogleAssistantStereoInputDescription, kOsCrOS,
7631 FEATURE_VALUE_TYPE(ash::assistant::features::kEnableStereoAudioInput)},
7632 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
7634 {"enable-gpu-service-logging",
7635 flag_descriptions::kEnableGpuServiceLoggingName,
7636 flag_descriptions::kEnableGpuServiceLoggingDescription, kOsAll,
7637 SINGLE_VALUE_TYPE(switches::kEnableGPUServiceLogging)},
7639 #if !BUILDFLAG(IS_ANDROID)
7640 {"hardware-media-key-handling",
7641 flag_descriptions::kHardwareMediaKeyHandling,
7642 flag_descriptions::kHardwareMediaKeyHandlingDescription, kOsDesktop,
7643 FEATURE_VALUE_TYPE(media::kHardwareMediaKeyHandling)},
7646 #if BUILDFLAG(IS_CHROMEOS_ASH)
7647 {"app-management-app-details",
7648 flag_descriptions::kAppManagementAppDetailsName,
7649 flag_descriptions::kAppManagementAppDetailsDescription, kOsCrOS,
7650 FEATURE_VALUE_TYPE(features::kAppManagementAppDetails)},
7652 {"arc-window-predictor", flag_descriptions::kArcWindowPredictorName,
7653 flag_descriptions::kArcWindowPredictorDescription, kOsCrOS,
7654 FEATURE_VALUE_TYPE(full_restore::features::kArcWindowPredictor)},
7656 {"use-fake-device-for-media-stream",
7657 flag_descriptions::kUseFakeDeviceForMediaStreamName,
7658 flag_descriptions::kUseFakeDeviceForMediaStreamDescription, kOsCrOS,
7659 FEATURE_VALUE_TYPE(media::kUseFakeDeviceForMediaStream)},
7660 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
7662 #if BUILDFLAG(IS_CHROMEOS_ASH)
7663 {"arc-input-overlay-beta", flag_descriptions::kArcInputOverlayNameBeta,
7664 flag_descriptions::kArcInputOverlayDescriptionBeta, kOsCrOS,
7665 FEATURE_VALUE_TYPE(ash::features::kArcInputOverlayBeta)},
7667 {"arc-input-overlay-alpha-v2",
7668 flag_descriptions::kArcInputOverlayNameAlphaV2,
7669 flag_descriptions::kArcInputOverlayDescriptionAlphaV2, kOsCrOS,
7670 FEATURE_VALUE_TYPE(ash::features::kArcInputOverlayAlphaV2)},
7671 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
7673 #if BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
7674 #if !BUILDFLAG(USE_VAAPI)
7675 {"chromeos-direct-video-decoder",
7676 flag_descriptions::kChromeOSDirectVideoDecoderName,
7677 flag_descriptions::kChromeOSDirectVideoDecoderDescription,
7678 kOsCrOS | kOsLacros,
7679 FEATURE_VALUE_TYPE(media::kUseChromeOSDirectVideoDecoder)},
7680 #endif // !BUILDFLAG(USE_VAAPI)
7682 {"enable-vbr-encode-acceleration",
7683 flag_descriptions::kChromeOSHWVBREncodingName,
7684 flag_descriptions::kChromeOSHWVBREncodingDescription, kOsCrOS | kOsLacros,
7685 FEATURE_VALUE_TYPE(media::kChromeOSHWVBREncoding)},
7686 #if defined(ARCH_CPU_ARM_FAMILY)
7687 {"prefer-gl-image-processor",
7688 flag_descriptions::kPreferGLImageProcessorName,
7689 flag_descriptions::kPreferGLImageProcessorDescription, kOsCrOS | kOsLacros,
7690 FEATURE_VALUE_TYPE(media::kPreferGLImageProcessor)},
7691 {"prefer-software-mt21", flag_descriptions::kPreferSoftwareMT21Name,
7692 flag_descriptions::kPreferSoftwareMT21Description, kOsCrOS | kOsLacros,
7693 FEATURE_VALUE_TYPE(media::kPreferSoftwareMT21)},
7694 #endif // defined(ARCH_CPU_ARM_FAMILY)
7695 #endif // BUILDFLAG(IS_CHROMEOS) && BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION)
7697 #if BUILDFLAG(IS_ANDROID)
7698 {"force-startup-signin-promo",
7699 flag_descriptions::kForceStartupSigninPromoName,
7700 flag_descriptions::kForceStartupSigninPromoDescription, kOsAndroid,
7701 FEATURE_VALUE_TYPE(switches::kForceStartupSigninPromo)},
7703 {"tangible-sync", flag_descriptions::kTangibleSyncName,
7704 flag_descriptions::kTangibleSyncDescription, kOsAndroid,
7705 FEATURE_WITH_PARAMS_VALUE_TYPE(switches::kTangibleSync,
7706 kTangibleSyncVariations,
7707 "TangibleSyncVariations")},
7708 #endif // BUILDFLAG(IS_ANDROID)
7710 {"gainmap-hdr-images", flag_descriptions::kGainmapHdrImagesName,
7711 flag_descriptions::kGainmapHdrImagesDescription, kOsAll,
7712 FEATURE_VALUE_TYPE(blink::features::kGainmapHdrImages)},
7714 {"avif-gainmap-hdr-images", flag_descriptions::kAvifGainmapHdrImagesName,
7715 flag_descriptions::kAvifGainmapHdrImagesDescription, kOsAll,
7716 FEATURE_VALUE_TYPE(blink::features::kAvifGainmapHdrImages)},
7718 {"autofill-use-improved-label-disambiguation",
7719 flag_descriptions::kAutofillUseImprovedLabelDisambiguationName,
7720 flag_descriptions::kAutofillUseImprovedLabelDisambiguationDescription,
7723 autofill::features::kAutofillUseImprovedLabelDisambiguation)},
7725 {"file-handling-icons", flag_descriptions::kFileHandlingIconsName,
7726 flag_descriptions::kFileHandlingIconsDescription, kOsDesktop,
7727 FEATURE_VALUE_TYPE(blink::features::kFileHandlingIcons)},
7729 {"file-system-access-locking-scheme",
7730 flag_descriptions::kFileSystemAccessLockingSchemeName,
7731 flag_descriptions::kFileSystemAccessLockingSchemeDescription, kOsAll,
7732 FEATURE_VALUE_TYPE(blink::features::kFileSystemAccessLockingScheme)},
7734 {"file-system-access-persistent-permission",
7735 flag_descriptions::kFileSystemAccessPersistentPermissionName,
7736 flag_descriptions::kFileSystemAccessPersistentPermissionDescription,
7738 FEATURE_VALUE_TYPE(features::kFileSystemAccessPersistentPermissions)},
7740 {"file-system-observer", flag_descriptions::kFileSystemObserverName,
7741 flag_descriptions::kFileSystemObserverDescription, kOsAll,
7742 FEATURE_VALUE_TYPE(blink::features::kFileSystemObserver)},
7744 {"strict-origin-isolation", flag_descriptions::kStrictOriginIsolationName,
7745 flag_descriptions::kStrictOriginIsolationDescription, kOsAll,
7746 FEATURE_VALUE_TYPE(features::kStrictOriginIsolation)},
7748 #if BUILDFLAG(IS_ANDROID)
7749 {"enable-logging-js-console-messages",
7750 flag_descriptions::kLogJsConsoleMessagesName,
7751 flag_descriptions::kLogJsConsoleMessagesDescription, kOsAndroid,
7752 FEATURE_VALUE_TYPE(features::kLogJsConsoleMessages)},
7753 #endif // BUILDFLAG(IS_ANDROID)
7755 #if BUILDFLAG(IS_CHROMEOS_ASH)
7756 {"allow-cross-device-feature-suite",
7757 flag_descriptions::kAllowCrossDeviceFeatureSuiteName,
7758 flag_descriptions::kAllowCrossDeviceFeatureSuiteDescription, kOsCrOS,
7759 FEATURE_VALUE_TYPE(ash::features::kAllowCrossDeviceFeatureSuite)},
7761 {"link-cross-device-internals",
7762 flag_descriptions::kLinkCrossDeviceInternalsName,
7763 flag_descriptions::kLinkCrossDeviceInternalsDescription, kOsCrOS,
7764 FEATURE_VALUE_TYPE(ash::features::kLinkCrossDeviceInternals)},
7766 {"allow-repeated-updates", flag_descriptions::kAllowRepeatedUpdatesName,
7767 flag_descriptions::kAllowRepeatedUpdatesDescription, kOsCrOS,
7768 FEATURE_VALUE_TYPE(ash::features::kAllowRepeatedUpdates)},
7770 {"allow-scroll-settings", flag_descriptions::kAllowScrollSettingsName,
7771 flag_descriptions::kAllowScrollSettingsDescription, kOsCrOS,
7772 FEATURE_VALUE_TYPE(ash::features::kAllowScrollSettings)},
7774 {"enable-neural-palm-adaptive-hold",
7775 flag_descriptions::kEnableNeuralPalmAdaptiveHoldName,
7776 flag_descriptions::kEnableNeuralPalmAdaptiveHoldDescription, kOsCrOS,
7777 FEATURE_VALUE_TYPE(ui::kEnableNeuralPalmAdaptiveHold)},
7779 {"enable-neural-stylus-palm-rejection",
7780 flag_descriptions::kEnableNeuralStylusPalmRejectionName,
7781 flag_descriptions::kEnableNeuralStylusPalmRejectionDescription, kOsCrOS,
7782 FEATURE_VALUE_TYPE(ui::kEnableNeuralPalmDetectionFilter)},
7784 {"enable-edge-detection", flag_descriptions::kEnableEdgeDetectionName,
7785 flag_descriptions::kEnableEdgeDetectionDescription, kOsCrOS,
7786 FEATURE_VALUE_TYPE(ui::kEnableEdgeDetection)},
7788 {"fast-pair", flag_descriptions::kFastPairName,
7789 flag_descriptions::kFastPairDescription, kOsCrOS,
7790 FEATURE_VALUE_TYPE(ash::features::kFastPair)},
7792 {"fast-pair-devices-bluetooth-settings",
7793 flag_descriptions::kFastPairDevicesBluetoothSettingsName,
7794 flag_descriptions::kFastPairDevicesBluetoothSettingsDescription, kOsCrOS,
7795 FEATURE_VALUE_TYPE(ash::features::kFastPairDevicesBluetoothSettings)},
7797 {"fast-pair-handshake-long-term-refactor",
7798 flag_descriptions::kFastPairHandshakeLongTermRefactorName,
7799 flag_descriptions::kFastPairHandshakeLongTermRefactorDescription, kOsCrOS,
7800 FEATURE_VALUE_TYPE(ash::features::kFastPairHandshakeLongTermRefactor)},
7802 {"fast-pair-hid", flag_descriptions::kFastPairHIDName,
7803 flag_descriptions::kFastPairHIDDescription, kOsCrOS,
7804 FEATURE_VALUE_TYPE(ash::features::kFastPairHID)},
7806 {"fast-pair-low-power", flag_descriptions::kFastPairLowPowerName,
7807 flag_descriptions::kFastPairLowPowerDescription, kOsCrOS,
7808 FEATURE_VALUE_TYPE(ash::features::kFastPairLowPower)},
7810 {"fast-pair-pwa-companion", flag_descriptions::kFastPairPwaCompanionName,
7811 flag_descriptions::kFastPairPwaCompanionDescription, kOsCrOS,
7812 FEATURE_VALUE_TYPE(ash::features::kFastPairPwaCompanion)},
7814 {"fast-pair-saved-devices", flag_descriptions::kFastPairSavedDevicesName,
7815 flag_descriptions::kFastPairSavedDevicesDescription, kOsCrOS,
7816 FEATURE_VALUE_TYPE(ash::features::kFastPairSavedDevices)},
7818 {"fast-pair-software-scanning",
7819 flag_descriptions::kFastPairSoftwareScanningName,
7820 flag_descriptions::kFastPairSoftwareScanningDescription, kOsCrOS,
7821 FEATURE_VALUE_TYPE(ash::features::kFastPairSoftwareScanning)},
7823 {"pcie-billboard-notification",
7824 flag_descriptions::kPcieBillboardNotificationName,
7825 flag_descriptions::kPcieBillboardNotificationDescription, kOsCrOS,
7826 FEATURE_VALUE_TYPE(ash::features::kPcieBillboardNotification)},
7828 {"use-search-click-for-right-click",
7829 flag_descriptions::kUseSearchClickForRightClickName,
7830 flag_descriptions::kUseSearchClickForRightClickDescription, kOsCrOS,
7831 FEATURE_VALUE_TYPE(ash::features::kUseSearchClickForRightClick)},
7833 {"show-metered-toggle", flag_descriptions::kMeteredShowToggleName,
7834 flag_descriptions::kMeteredShowToggleDescription, kOsCrOS,
7835 FEATURE_VALUE_TYPE(features::kMeteredShowToggle)},
7837 {"display-alignment-assistance",
7838 flag_descriptions::kDisplayAlignmentAssistanceName,
7839 flag_descriptions::kDisplayAlignmentAssistanceDescription, kOsCrOS,
7840 FEATURE_VALUE_TYPE(ash::features::kDisplayAlignAssist)},
7842 {"dropdown-panel", flag_descriptions::kDropdownPanel,
7843 flag_descriptions::kDropdownPanelDescription, kOsCrOS,
7844 FEATURE_VALUE_TYPE(ash::features::kDropdownPanel)},
7846 {"enable-experimental-rgb-keyboard-patterns",
7847 flag_descriptions::kExperimentalRgbKeyboardPatternsName,
7848 flag_descriptions::kExperimentalRgbKeyboardPatternsDescription, kOsCrOS,
7849 FEATURE_VALUE_TYPE(ash::features::kExperimentalRgbKeyboardPatterns)},
7851 {"enable-get-debugd-logs-in-parallel",
7852 flag_descriptions::kEnableGetDebugdLogsInParallelName,
7853 flag_descriptions::kEnableGetDebugdLogsInParallelDescription, kOsCrOS,
7854 FEATURE_VALUE_TYPE(ash::features::kEnableGetDebugdLogsInParallel)},
7856 {"enable-hostname-setting", flag_descriptions::kEnableHostnameSettingName,
7857 flag_descriptions::kEnableHostnameSettingDescription, kOsCrOS,
7858 FEATURE_VALUE_TYPE(ash::features::kEnableHostnameSetting)},
7860 {"enable-oauth-ipp", flag_descriptions::kEnableOAuthIppName,
7861 flag_descriptions::kEnableOAuthIppDescription, kOsCrOS,
7862 FEATURE_VALUE_TYPE(ash::features::kEnableOAuthIpp)},
7864 {"enable-shortcut-customization-app",
7865 flag_descriptions::kEnableShortcutCustomizationAppName,
7866 flag_descriptions::kEnableShortcutCustomizationAppDescription, kOsCrOS,
7867 FEATURE_VALUE_TYPE(features::kShortcutCustomizationApp)},
7869 {"enable-shortcut-customization",
7870 flag_descriptions::kEnableShortcutCustomizationName,
7871 flag_descriptions::kEnableShortcutCustomizationDescription, kOsCrOS,
7872 FEATURE_VALUE_TYPE(features::kShortcutCustomization)},
7874 {"enable-search-customizable-shortcuts-in-launcher",
7875 flag_descriptions::kEnableSearchCustomizableShortcutsInLauncherName,
7876 flag_descriptions::kEnableSearchCustomizableShortcutsInLauncherDescription,
7878 FEATURE_VALUE_TYPE(ash::features::kSearchCustomizableShortcutsInLauncher)},
7880 {"enable-input-device-settings-split",
7881 flag_descriptions::kEnableInputDeviceSettingsSplitName,
7882 flag_descriptions::kEnableInputDeviceSettingsSplitDescription, kOsCrOS,
7883 FEATURE_VALUE_TYPE(ash::features::kInputDeviceSettingsSplit)},
7885 {"enable-peripheral-customization",
7886 flag_descriptions::kEnablePeripheralCustomizationName,
7887 flag_descriptions::kEnablePeripheralCustomizationDescription, kOsCrOS,
7888 FEATURE_VALUE_TYPE(ash::features::kPeripheralCustomization)},
7890 {"enable-peripheral-notification",
7891 flag_descriptions::kEnablePeripheralNotificationName,
7892 flag_descriptions::kEnablePeripheralNotificationDescription, kOsCrOS,
7893 FEATURE_VALUE_TYPE(ash::features::kPeripheralNotification)},
7895 {"enable-accessibility-accelerators-notifications-timeout",
7896 flag_descriptions::kAccessibilityAcceleratorNotificationsTimeoutName,
7898 kAccessibilityAcceleratorNotificationsTimeoutDescription,
7901 features::kAccessibilityAcceleratorNotificationsTimeout)},
7903 {"enable-accessibility-service",
7904 flag_descriptions::kAccessibilityServiceName,
7905 flag_descriptions::kAccessibilityServiceDescription, kOsCrOS,
7906 FEATURE_VALUE_TYPE(features::kAccessibilityService)},
7908 {"enable-accessibility-select-to-speak-hover-text-improvements",
7909 flag_descriptions::kAccessibilitySelectToSpeakHoverTextImprovementsName,
7911 kAccessibilitySelectToSpeakHoverTextImprovementsDescription,
7914 features::kAccessibilitySelectToSpeakHoverTextImprovements)},
7916 {"enable-accessibility-dictation-keyboard-improvements",
7917 flag_descriptions::kAccessibilityDictationKeyboardImprovementsName,
7918 flag_descriptions::kAccessibilityDictationKeyboardImprovementsDescription,
7920 FEATURE_VALUE_TYPE(features::kAccessibilityDictationKeyboardImprovements)},
7922 {"enable-accessibility-gameface-integration",
7923 flag_descriptions::kAccessibilityGameFaceIntegrationName,
7924 flag_descriptions::kAccessibilityGameFaceIntegrationDescription, kOsCrOS,
7925 FEATURE_VALUE_TYPE(features::kAccessibilityGameFaceIntegration)},
7927 {"enable-only-show-new-shortcut-app",
7928 flag_descriptions::kOnlyShowNewShortcutsAppName,
7929 flag_descriptions::kOnlyShowNewShortcutsAppDescription, kOsCrOS,
7930 FEATURE_VALUE_TYPE(ash::features::kOnlyShowNewShortcutsApp)},
7932 {"enable-pip-double-tap-to-resize",
7933 flag_descriptions::kPipDoubleTapToResizeName,
7934 flag_descriptions::kPipDoubleTapToResizeDescription, kOsCrOS,
7935 FEATURE_VALUE_TYPE(ash::features::kPipDoubleTapToResize)},
7937 {"enable-pip-pinch-to-resize", flag_descriptions::kPipPinchToResizeName,
7938 flag_descriptions::kPipPinchToResizeDescription, kOsCrOS,
7939 FEATURE_VALUE_TYPE(ash::features::kPipPinchToResize)},
7941 {"enable-pip-tilt", flag_descriptions::kPipTiltName,
7942 flag_descriptions::kPipTiltDescription, kOsCrOS,
7943 FEATURE_VALUE_TYPE(ash::features::kPipTilt)},
7945 {"enable-pip-tuck", flag_descriptions::kPipTuckName,
7946 flag_descriptions::kPipTuckDescription, kOsCrOS,
7947 FEATURE_VALUE_TYPE(ash::features::kPipTuck)},
7949 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
7951 {"enable-fenced-frames", flag_descriptions::kEnableFencedFramesName,
7952 flag_descriptions::kEnableFencedFramesDescription, kOsAll,
7953 FEATURE_VALUE_TYPE(blink::features::kFencedFrames)},
7955 {"enable-fenced-frames-developer-mode",
7956 flag_descriptions::kEnableFencedFramesDeveloperModeName,
7957 flag_descriptions::kEnableFencedFramesDeveloperModeDescription, kOsAll,
7958 FEATURE_VALUE_TYPE(blink::features::kFencedFramesDefaultMode)},
7960 {"storage-access-api", flag_descriptions::kStorageAccessAPIName,
7961 flag_descriptions::kStorageAccessAPIDescription, kOsAll,
7962 FEATURE_WITH_PARAMS_VALUE_TYPE(blink::features::kStorageAccessAPI,
7963 kStorageAccessAPIVariations,
7964 "kStorageAccessAPI")},
7966 {"enable-unsafe-webgpu", flag_descriptions::kUnsafeWebGPUName,
7967 flag_descriptions::kUnsafeWebGPUDescription, kOsAll,
7968 SINGLE_VALUE_TYPE(switches::kEnableUnsafeWebGPU)},
7970 {"enable-webgpu-developer-features",
7971 flag_descriptions::kWebGpuDeveloperFeaturesName,
7972 flag_descriptions::kWebGpuDeveloperFeaturesDescription, kOsAll,
7973 SINGLE_VALUE_TYPE(switches::kEnableWebGPUDeveloperFeatures)},
7975 #if BUILDFLAG(IS_ANDROID)
7976 {"autofill-use-mobile-label-disambiguation",
7977 flag_descriptions::kAutofillUseMobileLabelDisambiguationName,
7978 flag_descriptions::kAutofillUseMobileLabelDisambiguationDescription,
7980 FEATURE_WITH_PARAMS_VALUE_TYPE(
7981 autofill::features::kAutofillUseMobileLabelDisambiguation,
7982 kAutofillUseMobileLabelDisambiguationVariations,
7983 "AutofillUseMobileLabelDisambiguation")},
7984 #endif // BUILDFLAG(IS_ANDROID)
7986 #if BUILDFLAG(IS_ANDROID)
7987 {"metrics-settings-android", flag_descriptions::kMetricsSettingsAndroidName,
7988 flag_descriptions::kMetricsSettingsAndroidDescription, kOsAndroid,
7989 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kMetricsSettingsAndroid,
7990 kMetricsSettingsAndroidVariations,
7991 "MetricsSettingsAndroid")},
7994 #if BUILDFLAG(IS_CHROMEOS_ASH)
7995 {"gesture-properties-dbus-service",
7996 flag_descriptions::kEnableGesturePropertiesDBusServiceName,
7997 flag_descriptions::kEnableGesturePropertiesDBusServiceDescription, kOsCrOS,
7998 FEATURE_VALUE_TYPE(ash::features::kGesturePropertiesDBusService)},
7999 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8001 {"ev-details-in-page-info", flag_descriptions::kEvDetailsInPageInfoName,
8002 flag_descriptions::kEvDetailsInPageInfoDescription, kOsDesktop,
8003 FEATURE_VALUE_TYPE(features::kEvDetailsInPageInfo)},
8005 #if BUILDFLAG(IS_CHROMEOS)
8006 {"global-media-controls-cros-updated-ui",
8007 flag_descriptions::kGlobalMediaControlsCrOSUpdatedUIName,
8008 flag_descriptions::kGlobalMediaControlsCrOSUpdatedUIDescription, kOsCrOS,
8009 FEATURE_VALUE_TYPE(media::kGlobalMediaControlsCrOSUpdatedUI)},
8010 #endif // BUILDFLAG(IS_CHROMEOS)
8012 {"enable-cooperative-scheduling",
8013 flag_descriptions::kCooperativeSchedulingName,
8014 flag_descriptions::kCooperativeSchedulingDescription, kOsAll,
8015 FEATURE_VALUE_TYPE(features::kCooperativeScheduling)},
8017 #if BUILDFLAG(IS_CHROMEOS_ASH)
8018 {"enable-privacy-indicators", flag_descriptions::kPrivacyIndicatorsName,
8019 flag_descriptions::kPrivacyIndicatorsDescription, kOsCrOS,
8020 FEATURE_VALUE_TYPE(ash::features::kPrivacyIndicators)},
8021 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8023 #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
8024 {"enable-proto-api-for-classify-url",
8025 flag_descriptions::kEnableProtoApiForClassifyUrlName,
8026 flag_descriptions::kEnableProtoApiForClassifyUrlDescription,
8027 kOsAndroid | (kOsDesktop & ~kOsFuchsia),
8028 FEATURE_VALUE_TYPE(supervised_user::kEnableProtoApiForClassifyUrl)},
8029 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS)
8031 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
8032 {"enable-network-service-sandbox",
8033 flag_descriptions::kEnableNetworkServiceSandboxName,
8034 flag_descriptions::kEnableNetworkServiceSandboxDescription,
8035 kOsLinux | kOsLacros | kOsCrOS,
8036 FEATURE_VALUE_TYPE(sandbox::policy::features::kNetworkServiceSandbox)},
8037 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
8039 #if BUILDFLAG(ALLOW_OOP_VIDEO_DECODER)
8040 {"use-out-of-process-video-decoding",
8041 flag_descriptions::kUseOutOfProcessVideoDecodingName,
8042 flag_descriptions::kUseOutOfProcessVideoDecodingDescription,
8043 kOsLinux | kOsCrOS | kOsLacros,
8044 FEATURE_VALUE_TYPE(media::kUseOutOfProcessVideoDecoding)},
8045 #endif // BUILDFLAG(ALLOW_OOP_VIDEO_DECODER)
8047 #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
8049 {"enable-family-link-website-filtering",
8050 flag_descriptions::kFilterWebsitesForSupervisedUsersOnDesktopName,
8051 flag_descriptions::kFilterWebsitesForSupervisedUsersOnDesktopDescription,
8052 kOsLinux | kOsMac | kOsWin,
8054 supervised_user::kFilterWebsitesForSupervisedUsersOnDesktopAndIOS)},
8056 #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
8057 {"enable-family-link-extensions-permissions",
8059 kEnableExtensionsPermissionsForSupervisedUsersOnDesktopName,
8061 kEnableExtensionsPermissionsForSupervisedUsersOnDesktopDescription,
8062 kOsLinux | kOsMac | kOsWin,
8065 kEnableExtensionsPermissionsForSupervisedUsersOnDesktop)},
8068 {"enable-family-link-prefs-controls",
8069 flag_descriptions::kSupervisedPrefsControlledBySupervisedStoreName,
8070 flag_descriptions::kSupervisedPrefsControlledBySupervisedStoreDescription,
8071 kOsLinux | kOsMac | kOsWin,
8073 supervised_user::kSupervisedPrefsControlledBySupervisedStore)},
8075 {"enable-family-link-managed-ui",
8076 flag_descriptions::kEnableManagedByParentUiName,
8077 flag_descriptions::kEnableManagedByParentUiDescription,
8078 kOsLinux | kOsMac | kOsWin,
8079 FEATURE_VALUE_TYPE(supervised_user::kEnableManagedByParentUi)},
8081 {"enable-supervised-users-remain-signed-in",
8082 flag_descriptions::kClearingCookiesKeepsSupervisedUsersSignedInName,
8083 flag_descriptions::kClearingCookiesKeepsSupervisedUsersSignedInDescription,
8084 kOsLinux | kOsMac | kOsWin,
8086 supervised_user::kClearingCookiesKeepsSupervisedUsersSignedIn)},
8087 #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS)
8089 {"notification-scheduler", flag_descriptions::kNotificationSchedulerName,
8090 flag_descriptions::kNotificationSchedulerDescription, kOsAndroid,
8091 FEATURE_VALUE_TYPE(notifications::features::kNotificationScheduleService)},
8093 {"notification-scheduler-debug-options",
8094 flag_descriptions::kNotificationSchedulerDebugOptionName,
8095 flag_descriptions::kNotificationSchedulerDebugOptionDescription,
8096 kOsAndroid, MULTI_VALUE_TYPE(kNotificationSchedulerChoices)},
8098 #if BUILDFLAG(IS_ANDROID)
8100 {"debug-chime-notification",
8101 flag_descriptions::kChimeAlwaysShowNotificationName,
8102 flag_descriptions::kChimeAlwaysShowNotificationDescription, kOsAndroid,
8103 SINGLE_VALUE_TYPE(notifications::switches::kDebugChimeNotification)},
8105 {"use-chime-android-sdk", flag_descriptions::kChimeAndroidSdkName,
8106 flag_descriptions::kChimeAndroidSdkDescription, kOsAndroid,
8107 FEATURE_VALUE_TYPE(notifications::features::kUseChimeAndroidSdk)},
8109 #endif // BUILDFLAG(IS_ANDROID)
8111 {"use-client-gmb-interface", flag_descriptions::kUseClientGmbInterfaceName,
8112 flag_descriptions::kUseClientGmbInterfaceDescription, kOsAll,
8113 FEATURE_VALUE_TYPE(features::kUseClientGmbInterface)},
8115 #if BUILDFLAG(IS_CHROMEOS_ASH)
8116 {"contextual-nudges", flag_descriptions::kContextualNudgesName,
8117 flag_descriptions::kContextualNudgesDescription, kOsCrOS,
8118 FEATURE_VALUE_TYPE(ash::features::kContextualNudges)},
8120 {"scalable-iph-debug", flag_descriptions::kScalableIphDebugName,
8121 flag_descriptions::kScalableIphDebugDescription, kOsCrOS,
8122 FEATURE_VALUE_TYPE(ash::features::kScalableIphDebug)},
8123 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8125 #if BUILDFLAG(IS_CHROMEOS_ASH)
8126 {"settings-app-notification-settings",
8127 flag_descriptions::kSettingsAppNotificationSettingsName,
8128 flag_descriptions::kSettingsAppNotificationSettingsDescription, kOsCrOS,
8129 FEATURE_VALUE_TYPE(ash::features::kSettingsAppNotificationSettings)},
8130 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8132 {"use-sha1-server-handshakes", flag_descriptions::kSHA1ServerSignatureName,
8133 flag_descriptions::kSHA1ServerSignatureDescription, kOsAll,
8134 FEATURE_VALUE_TYPE(net::features::kSHA1ServerSignature)},
8136 {"encrypted-client-hello", flag_descriptions::kEncryptedClientHelloName,
8137 flag_descriptions::kEncryptedClientHelloDescription, kOsAll,
8138 FEATURE_VALUE_TYPE(net::features::kEncryptedClientHello)},
8140 {"use-dns-https-svcb-alpn", flag_descriptions::kUseDnsHttpsSvcbAlpnName,
8141 flag_descriptions::kUseDnsHttpsSvcbAlpnDescription,
8142 kOsLinux | kOsMac | kOsWin | kOsCrOS | kOsAndroid,
8143 FEATURE_VALUE_TYPE(net::features::kUseDnsHttpsSvcbAlpn)},
8145 #if !BUILDFLAG(IS_ANDROID)
8146 {"hidpi-capture", flag_descriptions::kWebContentsCaptureHiDpiName,
8147 flag_descriptions::kWebContentsCaptureHiDpiDescription, kOsDesktop,
8148 FEATURE_VALUE_TYPE(media::kWebContentsCaptureHiDpi)},
8149 #endif // !BUILDFLAG(IS_ANDROID)
8151 #if BUILDFLAG(IS_ANDROID)
8152 {"web-otp-backend", flag_descriptions::kWebOtpBackendName,
8153 flag_descriptions::kWebOtpBackendDescription, kOsAndroid,
8154 MULTI_VALUE_TYPE(kWebOtpBackendChoices)},
8156 {"darken-websites-checkbox-in-themes-setting",
8157 flag_descriptions::kDarkenWebsitesCheckboxInThemesSettingName,
8158 flag_descriptions::kDarkenWebsitesCheckboxInThemesSettingDescription,
8161 content_settings::kDarkenWebsitesCheckboxInThemesSetting)},
8163 {"context-menu-search-with-google-lens",
8164 flag_descriptions::kContextMenuSearchWithGoogleLensName,
8165 flag_descriptions::kContextMenuSearchWithGoogleLensDescription, kOsAndroid,
8166 FEATURE_WITH_PARAMS_VALUE_TYPE(
8167 chrome::android::kContextMenuSearchWithGoogleLens,
8168 kLensContextMenuSearchVariations,
8169 "ContextMenuSearchWithGoogleLens")},
8171 {"context-menu-google-lens-search-optimizations",
8172 flag_descriptions::kContextMenuGoogleLensSearchOptimizationsName,
8173 flag_descriptions::kContextMenuGoogleLensSearchOptimizationsDescription,
8175 FEATURE_WITH_PARAMS_VALUE_TYPE(
8176 chrome::android::kContextMenuGoogleLensSearchOptimizations,
8177 kContextMenuGoogleLensSearchOptimizationVariations,
8178 "ContextMenuGoogleLensSearchOptimizations")},
8180 {"lens-camera-assisted-search",
8181 flag_descriptions::kLensCameraAssistedSearchName,
8182 flag_descriptions::kLensCameraAssistedSearchDescription, kOsAndroid,
8183 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kLensCameraAssistedSearch,
8184 kLensCameraAssistedSearchVariations,
8185 "LensCameraAssistedSearch")},
8186 #endif // BUILDFLAG(IS_ANDROID)
8188 {"back-forward-cache", flag_descriptions::kBackForwardCacheName,
8189 flag_descriptions::kBackForwardCacheDescription, kOsAll,
8190 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kBackForwardCache,
8191 kBackForwardCacheVariations,
8192 "BackForwardCache")},
8194 {"windows-scrolling-personality",
8195 flag_descriptions::kWindowsScrollingPersonalityName,
8196 flag_descriptions::kWindowsScrollingPersonalityDescription, kOsAll,
8197 FEATURE_VALUE_TYPE(features::kWindowsScrollingPersonality)},
8199 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
8200 {"elastic-overscroll", flag_descriptions::kElasticOverscrollName,
8201 flag_descriptions::kElasticOverscrollDescription, kOsWin | kOsAndroid,
8202 FEATURE_VALUE_TYPE(features::kElasticOverscroll)},
8205 {"device-posture", flag_descriptions::kDevicePostureName,
8206 flag_descriptions::kDevicePostureDescription, kOsAll,
8207 FEATURE_VALUE_TYPE(features::kDevicePosture)},
8209 {"viewport-segments", flag_descriptions::kViewportSegmentsName,
8210 flag_descriptions::kViewportSegmentsDescription, kOsAll,
8211 FEATURE_VALUE_TYPE(features::kViewportSegments)},
8213 #if BUILDFLAG(IS_CHROMEOS_ASH)
8214 {"device-force-scheduled-reboot",
8215 flag_descriptions::kDeviceForceScheduledRebootName,
8216 flag_descriptions::kDeviceForceScheduledRebootDescription, kOsCrOS,
8217 FEATURE_VALUE_TYPE(ash::features::kDeviceForceScheduledReboot)},
8218 {"enable-assistant-aec", flag_descriptions::kEnableGoogleAssistantAecName,
8219 flag_descriptions::kEnableGoogleAssistantAecDescription, kOsCrOS,
8220 FEATURE_VALUE_TYPE(ash::assistant::features::kAssistantAudioEraser)},
8223 #if BUILDFLAG(IS_WIN)
8224 {"enable-winrt-geolocation-implementation",
8225 flag_descriptions::kWinrtGeolocationImplementationName,
8226 flag_descriptions::kWinrtGeolocationImplementationDescription, kOsWin,
8227 FEATURE_VALUE_TYPE(features::kWinrtGeolocationImplementation)},
8230 #if BUILDFLAG(IS_MAC)
8231 {"enable-core-location-backend",
8232 flag_descriptions::kMacCoreLocationBackendName,
8233 flag_descriptions::kMacCoreLocationBackendDescription, kOsMac,
8234 FEATURE_VALUE_TYPE(features::kMacCoreLocationBackend)},
8237 #if !BUILDFLAG(IS_ANDROID)
8238 {"mute-notification-snooze-action",
8239 flag_descriptions::kMuteNotificationSnoozeActionName,
8240 flag_descriptions::kMuteNotificationSnoozeActionDescription, kOsDesktop,
8241 FEATURE_VALUE_TYPE(features::kMuteNotificationSnoozeAction)},
8242 #endif // !BUILDFLAG(IS_ANDROID)
8244 #if BUILDFLAG(IS_MAC)
8245 {"enable-new-mac-notification-api",
8246 flag_descriptions::kNewMacNotificationAPIName,
8247 flag_descriptions::kNewMacNotificationAPIDescription, kOsMac,
8248 FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)},
8251 #if BUILDFLAG(IS_CHROMEOS_ASH)
8252 {"exo-consumed-by-ime-by-flag",
8253 flag_descriptions::kExoConsumedByImeByFlagName,
8254 flag_descriptions::kExoConsumedByImeByFlagDescription, kOsCrOS,
8255 FEATURE_VALUE_TYPE(ash::features::kExoConsumedByImeByFlag)},
8256 {"exo-gamepad-vibration", flag_descriptions::kExoGamepadVibrationName,
8257 flag_descriptions::kExoGamepadVibrationDescription, kOsCrOS,
8258 FEATURE_VALUE_TYPE(ash::features::kGamepadVibration)},
8259 {"exo-ordinal-motion", flag_descriptions::kExoOrdinalMotionName,
8260 flag_descriptions::kExoOrdinalMotionDescription, kOsCrOS,
8261 FEATURE_VALUE_TYPE(ash::features::kExoOrdinalMotion)},
8262 {"exo-surrounding-text-offset",
8263 flag_descriptions::kExoSurroundingTextOffsetName,
8264 flag_descriptions::kExoSurroundingTextOffsetDescription, kOsCrOS,
8265 FEATURE_VALUE_TYPE(ash::features::kExoSurroundingTextOffset)},
8266 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8268 #if BUILDFLAG(IS_MAC)
8269 {"screentime", flag_descriptions::kScreenTimeName,
8270 flag_descriptions::kScreenTimeDescription, kOsMac,
8271 FEATURE_VALUE_TYPE(screentime::kScreenTime)},
8274 {"enable-heavy-ad-intervention",
8275 flag_descriptions::kHeavyAdInterventionName,
8276 flag_descriptions::kHeavyAdInterventionDescription, kOsAll,
8277 FEATURE_VALUE_TYPE(heavy_ad_intervention::features::kHeavyAdIntervention)},
8279 {"heavy-ad-privacy-mitigations",
8280 flag_descriptions::kHeavyAdPrivacyMitigationsName,
8281 flag_descriptions::kHeavyAdPrivacyMitigationsDescription, kOsAll,
8283 heavy_ad_intervention::features::kHeavyAdPrivacyMitigations)},
8285 #if BUILDFLAG(IS_CHROMEOS_ASH)
8286 {"crostini-container-install",
8287 flag_descriptions::kCrostiniContainerInstallName,
8288 flag_descriptions::kCrostiniContainerInstallDescription, kOsCrOS,
8289 MULTI_VALUE_TYPE(kCrostiniContainerChoices)},
8290 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8292 #if BUILDFLAG(IS_CHROMEOS_ASH)
8293 {"os-settings-app-notifications-page",
8294 flag_descriptions::kOsSettingsAppNotificationsPageName,
8295 flag_descriptions::kOsSettingsAppNotificationsPageDescription, kOsCrOS,
8296 FEATURE_VALUE_TYPE(ash::features::kOsSettingsAppNotificationsPage)},
8297 {"help-app-auto-trigger-install-dialog",
8298 flag_descriptions::kHelpAppAutoTriggerInstallDialogName,
8299 flag_descriptions::kHelpAppAutoTriggerInstallDialogDescription, kOsCrOS,
8300 FEATURE_VALUE_TYPE(ash::features::kHelpAppAutoTriggerInstallDialog)},
8301 {"help-app-home-page-app-articles",
8302 flag_descriptions::kHelpAppHomePageAppArticlesName,
8303 flag_descriptions::kHelpAppHomePageAppArticlesDescription, kOsCrOS,
8304 FEATURE_VALUE_TYPE(ash::features::kHelpAppHomePageAppArticles)},
8305 {"help-app-launcher-search", flag_descriptions::kHelpAppLauncherSearchName,
8306 flag_descriptions::kHelpAppLauncherSearchDescription, kOsCrOS,
8307 FEATURE_VALUE_TYPE(ash::features::kHelpAppLauncherSearch)},
8308 {"media-app-pdf-a11y-ocr", flag_descriptions::kMediaAppPdfA11yOcrName,
8309 flag_descriptions::kMediaAppPdfA11yOcrDescription, kOsCrOS,
8310 FEATURE_VALUE_TYPE(ash::features::kMediaAppPdfA11yOcr)},
8311 {"release-notes-notification-all-channels",
8312 flag_descriptions::kReleaseNotesNotificationAllChannelsName,
8313 flag_descriptions::kReleaseNotesNotificationAllChannelsDescription,
8315 FEATURE_VALUE_TYPE(ash::features::kReleaseNotesNotificationAllChannels)},
8316 {"use-android-staging-smds", flag_descriptions::kUseAndroidStagingSmdsName,
8317 flag_descriptions::kUseAndroidStagingSmdsDescription, kOsCrOS,
8318 FEATURE_VALUE_TYPE(ash::features::kUseAndroidStagingSmds)},
8319 {"use-stork-smds-server-address",
8320 flag_descriptions::kUseStorkSmdsServerAddressName,
8321 flag_descriptions::kUseStorkSmdsServerAddressDescription, kOsCrOS,
8322 FEATURE_VALUE_TYPE(ash::features::kUseStorkSmdsServerAddress)},
8323 {"use-wallpaper-staging-url",
8324 flag_descriptions::kUseWallpaperStagingUrlName,
8325 flag_descriptions::kUseWallpaperStagingUrlDescription, kOsCrOS,
8326 FEATURE_VALUE_TYPE(ash::features::kUseWallpaperStagingUrl)},
8327 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8329 #if BUILDFLAG(IS_ANDROID)
8330 {"autofill-enable-manual-fallback-for-virtual-cards",
8331 flag_descriptions::kAutofillEnableManualFallbackForVirtualCardsName,
8332 flag_descriptions::kAutofillEnableManualFallbackForVirtualCardsDescription,
8335 autofill::features::kAutofillEnableManualFallbackForVirtualCards)},
8336 #endif // BUILDFLAG(IS_ANDROID)
8338 {"autofill-enable-card-product-name",
8339 flag_descriptions::kAutofillEnableCardProductNameName,
8340 flag_descriptions::kAutofillEnableCardProductNameDescription, kOsAll,
8341 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCardProductName)},
8343 #if BUILDFLAG(ENABLE_PAINT_PREVIEW) && BUILDFLAG(IS_ANDROID)
8344 {"paint-preview-demo", flag_descriptions::kPaintPreviewDemoName,
8345 flag_descriptions::kPaintPreviewDemoDescription, kOsAndroid,
8346 FEATURE_VALUE_TYPE(paint_preview::kPaintPreviewDemo)},
8347 #endif // BUILDFLAG(ENABLE_PAINT_PREVIEW) && BUILDFLAG(IS_ANDROID)
8349 #if BUILDFLAG(IS_CHROMEOS_ASH)
8350 {"panel-self-refresh-2", flag_descriptions::kPanelSelfRefresh2Name,
8351 flag_descriptions::kPanelSelfRefresh2Description, kOsCrOS,
8352 FEATURE_VALUE_TYPE(display::features::kPanelSelfRefresh2)},
8353 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8355 {"fullscreen-popup-windows", flag_descriptions::kFullscreenPopupWindowsName,
8356 flag_descriptions::kFullscreenPopupWindowsDescription,
8357 kOsDesktop | kOsAndroid,
8358 FEATURE_VALUE_TYPE(blink::features::kFullscreenPopupWindows)},
8360 #if BUILDFLAG(IS_WIN)
8361 {"run-video-capture-service-in-browser",
8362 flag_descriptions::kRunVideoCaptureServiceInBrowserProcessName,
8363 flag_descriptions::kRunVideoCaptureServiceInBrowserProcessDescription,
8365 FEATURE_VALUE_TYPE(features::kRunVideoCaptureServiceInBrowserProcess)},
8366 #endif // BUILDFLAG(IS_WIN)
8367 {"disruptive-notification-permission-revocation",
8368 flag_descriptions::kDisruptiveNotificationPermissionRevocationName,
8369 flag_descriptions::kDisruptiveNotificationPermissionRevocationDescription,
8371 FEATURE_VALUE_TYPE(features::kDisruptiveNotificationPermissionRevocation)},
8372 {"double-buffer-compositing",
8373 flag_descriptions::kDoubleBufferCompositingName,
8374 flag_descriptions::kDoubleBufferCompositingDescription, kOsCrOS,
8375 SINGLE_VALUE_TYPE(switches::kDoubleBufferCompositing)},
8377 #if !BUILDFLAG(IS_ANDROID)
8378 {"page-info-hide-site-settings",
8379 flag_descriptions::kPageInfoHideSiteSettingsName,
8380 flag_descriptions::kPageInfoHideSiteSettingsDescription, kOsDesktop,
8381 FEATURE_VALUE_TYPE(page_info::kPageInfoHideSiteSettings)},
8382 #endif // !BUILDFLAG(IS_ANDROID)
8384 #if !BUILDFLAG(IS_ANDROID)
8385 {"page-info-history-desktop",
8386 flag_descriptions::kPageInfoHistoryDesktopName,
8387 flag_descriptions::kPageInfoHistoryDesktopDescription, kOsDesktop,
8388 FEATURE_VALUE_TYPE(page_info::kPageInfoHistoryDesktop)},
8389 #endif // !BUILDFLAG(IS_ANDROID)
8391 #if !BUILDFLAG(IS_ANDROID)
8392 {"page-info-about-this-page-persistent-side-panel-entry",
8393 flag_descriptions::kPageInfoAboutThisPagePersistentEntryName,
8394 flag_descriptions::kPageInfoAboutThisPagePersistentEntryDescription,
8396 FEATURE_VALUE_TYPE(page_info::kAboutThisSitePersistentSidePanelEntry)},
8399 {"user-bypass-ui", flag_descriptions::kUserBypassUIName,
8400 flag_descriptions::kUserBypassUIDescription, kOsDesktop | kOsAndroid,
8401 FEATURE_VALUE_TYPE(content_settings::features::kUserBypassUI)},
8403 {"preloading-on-performance-page",
8404 flag_descriptions::kPreloadingOnPerformancePageName,
8405 flag_descriptions::kPreloadingOnPerformancePageDescription, kOsDesktop,
8406 FEATURE_WITH_PARAMS_VALUE_TYPE(
8407 features::kPerformanceSettingsPreloadingSubpage,
8408 kPerformanceSettingsPreloadingSubpageVariations,
8409 "PerformanceSettingsPreloadingSubpage")},
8411 {"tracking-protection-3pcd", flag_descriptions::kTrackingProtection3pcdName,
8412 flag_descriptions::kTrackingProtection3pcdDescription,
8413 kOsDesktop | kOsAndroid,
8414 FEATURE_VALUE_TYPE(content_settings::features::kTrackingProtection3pcd)},
8416 {"tracking-protection-onboarding-rollback-flow",
8417 flag_descriptions::kTrackingProtectionOnboardingRollbackName,
8418 flag_descriptions::kTrackingProtectionOnboardingRollbackDescription,
8419 kOsDesktop | kOsAndroid,
8421 privacy_sandbox::kTrackingProtectionOnboardingRollback)},
8423 #if BUILDFLAG(IS_CHROMEOS_ASH)
8424 {kClipboardHistoryLongpressInternalName,
8425 flag_descriptions::kClipboardHistoryLongpressName,
8426 flag_descriptions::kClipboardHistoryLongpressDescription, kOsCrOS,
8427 FEATURE_VALUE_TYPE(ash::features::kClipboardHistoryLongpress)},
8428 {kClipboardHistoryRefreshInternalName,
8429 flag_descriptions::kClipboardHistoryRefreshName,
8430 flag_descriptions::kClipboardHistoryRefreshDescription, kOsCrOS,
8431 FEATURE_VALUE_TYPE(chromeos::features::kClipboardHistoryRefresh)},
8432 {kClipboardHistoryUrlTitlesInternalName,
8433 flag_descriptions::kClipboardHistoryUrlTitlesName,
8434 flag_descriptions::kClipboardHistoryUrlTitlesDescription, kOsCrOS,
8435 FEATURE_VALUE_TYPE(ash::features::kClipboardHistoryUrlTitles)},
8436 {"clipboard-history-web-contents-paste",
8437 flag_descriptions::kClipboardHistoryWebContentsPasteName,
8438 flag_descriptions::kClipboardHistoryWebContentsPasteDescription, kOsCrOS,
8439 FEATURE_VALUE_TYPE(ash::features::kClipboardHistoryWebContentsPaste)},
8440 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8442 #if BUILDFLAG(IS_WIN)
8443 {"enable-media-foundation-video-capture",
8444 flag_descriptions::kEnableMediaFoundationVideoCaptureName,
8445 flag_descriptions::kEnableMediaFoundationVideoCaptureDescription, kOsWin,
8446 FEATURE_VALUE_TYPE(media::kMediaFoundationVideoCapture)},
8447 #endif // BUILDFLAG(IS_WIN)
8449 #if !BUILDFLAG(IS_ANDROID)
8450 {"copy-link-to-text", flag_descriptions::kCopyLinkToTextName,
8451 flag_descriptions::kCopyLinkToTextDescription, kOsDesktop,
8452 FEATURE_VALUE_TYPE(features::kCopyLinkToText)},
8453 #endif // !BUILDFLAG(IS_ANDROID)
8455 {"shared-highlighting-manager",
8456 flag_descriptions::kSharedHighlightingManagerName,
8457 flag_descriptions::kSharedHighlightingManagerDescription, kOsAll,
8458 FEATURE_VALUE_TYPE(shared_highlighting::kSharedHighlightingManager)},
8460 #if BUILDFLAG(IS_CHROMEOS_ASH)
8461 {"reset-shortcut-customizations",
8462 flag_descriptions::kResetShortcutCustomizationsName,
8463 flag_descriptions::kResetShortcutCustomizationsDescription, kOsCrOS,
8464 FEATURE_VALUE_TYPE(ash::features::kResetShortcutCustomizations)},
8465 {"shimless-rma-os-update", flag_descriptions::kShimlessRMAOsUpdateName,
8466 flag_descriptions::kShimlessRMAOsUpdateDescription, kOsCrOS,
8467 FEATURE_VALUE_TYPE(ash::features::kShimlessRMAOsUpdate)},
8468 {"shimless-rma-compliance-check",
8469 flag_descriptions::kShimlessRMAComplianceCheckName,
8470 flag_descriptions::kShimlessRMAComplianceCheckDescription, kOsCrOS,
8471 FEATURE_VALUE_TYPE(ash::features::kShimlessRMAComplianceCheck)},
8472 {"shimless-rma-sku-description",
8473 flag_descriptions::kShimlessRMASkuDescriptionName,
8474 flag_descriptions::kShimlessRMASkuDescriptionDescription, kOsCrOS,
8475 FEATURE_VALUE_TYPE(ash::features::kShimlessRMASkuDescription)},
8476 {"shortcut-customization-jelly",
8477 flag_descriptions::kShortcutCustomizationJellyName,
8478 flag_descriptions::kShortcutCustomizationJellyDescription, kOsCrOS,
8479 FEATURE_VALUE_TYPE(ash::features::kShortcutCustomizationJelly)},
8480 {"nearby-sharing-self-share",
8481 flag_descriptions::kNearbySharingSelfShareName,
8482 flag_descriptions::kNearbySharingSelfShareDescription, kOsCrOS,
8483 FEATURE_VALUE_TYPE(features::kNearbySharingSelfShare)},
8484 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8486 #if BUILDFLAG(IS_CHROMEOS_ASH)
8487 {"enable-palm-suppression", flag_descriptions::kEnablePalmSuppressionName,
8488 flag_descriptions::kEnablePalmSuppressionDescription, kOsCrOS,
8489 FEATURE_VALUE_TYPE(ui::kEnablePalmSuppression)},
8490 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8492 {"enable-experimental-cookie-features",
8493 flag_descriptions::kEnableExperimentalCookieFeaturesName,
8494 flag_descriptions::kEnableExperimentalCookieFeaturesDescription, kOsAll,
8495 MULTI_VALUE_TYPE(kEnableExperimentalCookieFeaturesChoices)},
8497 {"canvas-2d-layers", flag_descriptions::kCanvas2DLayersName,
8498 flag_descriptions::kCanvas2DLayersDescription, kOsAll,
8499 SINGLE_VALUE_TYPE(switches::kEnableCanvas2DLayers)},
8501 {"enable-machine-learning-model-loader-web-platform-api",
8502 flag_descriptions::kEnableMachineLearningModelLoaderWebPlatformApiName,
8504 kEnableMachineLearningModelLoaderWebPlatformApiDescription,
8507 features::kEnableMachineLearningModelLoaderWebPlatformApi)},
8509 {"confirmation-chip", flag_descriptions::kConfirmationChipName,
8510 flag_descriptions::kConfirmationChipNameDescription, kOsDesktop,
8511 FEATURE_VALUE_TYPE(permissions::features::kConfirmationChip)},
8513 {"chip-location-bar-icon-override",
8514 flag_descriptions::kChipLocationBarIconOverrideName,
8515 flag_descriptions::kChipLocationBarIconOverrideDescription, kOsDesktop,
8516 FEATURE_VALUE_TYPE(permissions::features::kChipLocationBarIconOverride)},
8518 {"one-time-permission", flag_descriptions::kOneTimePermissionName,
8519 flag_descriptions::kOneTimePermissionDescription, kOsDesktop,
8520 FEATURE_VALUE_TYPE(permissions::features::kOneTimePermission)},
8522 {"improved-semantics-activity-indicators",
8523 flag_descriptions::kImprovedSemanticsActivityIndicatorsName,
8524 flag_descriptions::kImprovedSemanticsActivityIndicatorsDescription,
8527 content_settings::features::kImprovedSemanticsActivityIndicators)},
8529 {"attribution-reporting-debug-mode",
8530 flag_descriptions::kAttributionReportingDebugModeName,
8531 flag_descriptions::kAttributionReportingDebugModeDescription, kOsAll,
8532 SINGLE_VALUE_TYPE(switches::kAttributionReportingDebugMode)},
8534 {"private-aggregation-developer-mode",
8535 flag_descriptions::kPrivateAggregationDeveloperModeName,
8536 flag_descriptions::kPrivateAggregationDeveloperModeDescription, kOsAll,
8537 SINGLE_VALUE_TYPE(switches::kPrivateAggregationDeveloperMode)},
8539 #if BUILDFLAG(IS_CHROMEOS_ASH)
8540 {"productivity-launcher", flag_descriptions::kProductivityLauncherName,
8541 flag_descriptions::kProductivityLauncherDescription, kOsCrOS,
8542 FEATURE_WITH_PARAMS_VALUE_TYPE(ash::features::kProductivityLauncher,
8543 kProductivityLauncherVariations,
8544 "ProductivityLauncher")},
8545 {"launcher-item-suggest", flag_descriptions::kLauncherItemSuggestName,
8546 flag_descriptions::kLauncherItemSuggestDescription, kOsCrOS,
8547 FEATURE_WITH_PARAMS_VALUE_TYPE(ash::kLauncherItemSuggest,
8548 kLauncherItemSuggestVariations,
8549 "LauncherItemSuggest")},
8550 {"eol-incentive", flag_descriptions::kEolIncentiveName,
8551 flag_descriptions::kEolIncentiveDescription, kOsCrOS,
8552 FEATURE_WITH_PARAMS_VALUE_TYPE(ash::features::kEolIncentive,
8553 kEolIncentiveVariations,
8555 {"productivity-launcher-image-search",
8556 flag_descriptions::kProductivityLauncherImageSearchName,
8557 flag_descriptions::kProductivityLauncherImageSearchDescription, kOsCrOS,
8558 FEATURE_VALUE_TYPE(ash::features::kProductivityLauncherImageSearch)},
8559 {"scanning-app-jelly", flag_descriptions::kScanningAppJellyName,
8560 flag_descriptions::kScanningAppJellyDescription, kOsCrOS,
8561 FEATURE_VALUE_TYPE(ash::features::kScanningAppJelly)},
8562 {"shelf-auto-hide-separation",
8563 flag_descriptions::kShelfAutoHideSeparationName,
8564 flag_descriptions::kShelfAutoHideSeparationDescription, kOsCrOS,
8565 FEATURE_VALUE_TYPE(ash::features::kShelfAutoHideSeparation)},
8566 {"shelf-stacked-hotseat", flag_descriptions::kShelfStackedHotseatName,
8567 flag_descriptions::kShelfStackedHotseatDescription, kOsCrOS,
8568 FEATURE_VALUE_TYPE(ash::features::kShelfStackedHotseat)},
8569 {"launcher-game-search", flag_descriptions::kLauncherGameSearchName,
8570 flag_descriptions::kLauncherGameSearchDescription, kOsCrOS,
8571 FEATURE_VALUE_TYPE(search_features::kLauncherGameSearch)},
8572 {"launcher-fuzzy-match-across-providers",
8573 flag_descriptions::kLauncherFuzzyMatchAcrossProvidersName,
8574 flag_descriptions::kLauncherFuzzyMatchAcrossProvidersDescription, kOsCrOS,
8575 FEATURE_VALUE_TYPE(search_features::kLauncherFuzzyMatchAcrossProviders)},
8576 {"launcher-keyword-extraction-scoring",
8577 flag_descriptions::kLauncherKeywordExtractionScoring,
8578 flag_descriptions::kLauncherKeywordExtractionScoringDescription, kOsCrOS,
8579 FEATURE_VALUE_TYPE(search_features::kLauncherKeywordExtractionScoring)},
8580 {"launcher-fuzzy-match-for-omnibox",
8581 flag_descriptions::kLauncherFuzzyMatchForOmniboxName,
8582 flag_descriptions::kLauncherFuzzyMatchForOmniboxDescription, kOsCrOS,
8583 FEATURE_VALUE_TYPE(search_features::kLauncherFuzzyMatchForOmnibox)},
8584 {"launcher-search-control", flag_descriptions::kLauncherSearchControlName,
8585 flag_descriptions::kLauncherSearchControlDescription, kOsCrOS,
8586 FEATURE_VALUE_TYPE(ash::features::kLauncherSearchControl)},
8587 {"launcher-nudge-session-reset",
8588 flag_descriptions::kLauncherNudgeSessionResetName,
8589 flag_descriptions::kLauncherNudgeSessionResetDescription, kOsCrOS,
8590 FEATURE_VALUE_TYPE(ash::features::kLauncherNudgeSessionReset)},
8591 {"launcher-system-info-answer-cards",
8592 flag_descriptions::kLauncherSystemInfoAnswerCardsName,
8593 flag_descriptions::kLauncherSystemInfoAnswerCardsDescription, kOsCrOS,
8594 FEATURE_VALUE_TYPE(search_features::kLauncherSystemInfoAnswerCards)},
8595 {"text-in-shelf", flag_descriptions::kTextInShelfName,
8596 flag_descriptions::kTextInShelfDescription, kOsCrOS,
8597 FEATURE_VALUE_TYPE(ash::features::kHomeButtonWithText)},
8598 {"launcher-local-image-search",
8599 flag_descriptions::kLauncherLocalImageSearchName,
8600 flag_descriptions::kLauncherLocalImageSearchDescription, kOsCrOS,
8601 FEATURE_VALUE_TYPE(search_features::kLauncherImageSearch)},
8602 {"launcher-local-image-search-ocr",
8603 flag_descriptions::kLauncherLocalImageSearchOcrName,
8604 flag_descriptions::kLauncherLocalImageSearchOcrDescription, kOsCrOS,
8605 FEATURE_VALUE_TYPE(search_features::kLauncherImageSearchOcr)},
8606 {"launcher-local-image-search-ica",
8607 flag_descriptions::kLauncherLocalImageSearchIcaName,
8608 flag_descriptions::kLauncherLocalImageSearchIcaDescription, kOsCrOS,
8609 FEATURE_VALUE_TYPE(search_features::kLauncherImageSearchIca)},
8610 {"quick-app-access-test-ui", flag_descriptions::kQuickAppAccessTestUIName,
8611 flag_descriptions::kQuickAppAccessTestUIDescription, kOsCrOS,
8612 FEATURE_VALUE_TYPE(ash::features::kQuickAppAccessTestUI)},
8614 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8616 #if BUILDFLAG(IS_CHROMEOS_ASH)
8617 {"mac-address-randomization",
8618 flag_descriptions::kMacAddressRandomizationName,
8619 flag_descriptions::kMacAddressRandomizationDescription, kOsCrOS,
8620 FEATURE_VALUE_TYPE(ash::features::kMacAddressRandomization)},
8622 {"oobe-jelly", flag_descriptions::kOobeJellyName,
8623 flag_descriptions::kOobeJellyDescription, kOsCrOS,
8624 FEATURE_VALUE_TYPE(ash::features::kOobeJelly)},
8625 {"oobe-jelly-modal", flag_descriptions::kOobeJellyModalName,
8626 flag_descriptions::kOobeJellyModalDescription, kOsCrOS,
8627 FEATURE_VALUE_TYPE(ash::features::kOobeJellyModal)},
8628 {"oobe-simon", flag_descriptions::kOobeSimonName,
8629 flag_descriptions::kOobeSimonDescription, kOsCrOS,
8630 FEATURE_VALUE_TYPE(ash::features::kOobeSimon)},
8632 {"smds-support", flag_descriptions::kSmdsSupportName,
8633 flag_descriptions::kSmdsSupportDescription, kOsCrOS,
8634 FEATURE_VALUE_TYPE(ash::features::kSmdsSupport)},
8636 {"smds-support-euicc-upload",
8637 flag_descriptions::kSmdsSupportEuiccUploadName,
8638 flag_descriptions::kSmdsSupportEuiccUploadDescription, kOsCrOS,
8639 FEATURE_VALUE_TYPE(ash::features::kSmdsSupportEuiccUpload)},
8641 {"smds-dbus-migration", flag_descriptions::kSmdsDbusMigrationName,
8642 flag_descriptions::kSmdsDbusMigrationDescription, kOsCrOS,
8643 FEATURE_VALUE_TYPE(ash::features::kSmdsDbusMigration)},
8645 {"dynamic-search-update-animation",
8646 flag_descriptions::kDynamicSearchUpdateAnimationName,
8647 flag_descriptions::kDynamicSearchUpdateAnimationDescription, kOsCrOS,
8648 FEATURE_WITH_PARAMS_VALUE_TYPE(
8649 app_list_features::kDynamicSearchUpdateAnimation,
8650 kDynamicSearchUpdateAnimationVariations,
8651 "LauncherDynamicAnimations")},
8652 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8654 #if BUILDFLAG(IS_CHROMEOS_ASH)
8655 {"frame-throttle-fps", flag_descriptions::kFrameThrottleFpsName,
8656 flag_descriptions::kFrameThrottleFpsDescription, kOsCrOS,
8657 MULTI_VALUE_TYPE(kFrameThrottleFpsChoices)},
8658 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8660 #if BUILDFLAG(IS_ANDROID)
8661 {"incognito-reauthentication-for-android",
8662 flag_descriptions::kIncognitoReauthenticationForAndroidName,
8663 flag_descriptions::kIncognitoReauthenticationForAndroidDescription,
8665 FEATURE_VALUE_TYPE(chrome::android::kIncognitoReauthenticationForAndroid)},
8668 #if BUILDFLAG(IS_ANDROID)
8669 {"enable-surface-control", flag_descriptions::kAndroidSurfaceControlName,
8670 flag_descriptions::kAndroidSurfaceControlDescription, kOsAndroid,
8671 FEATURE_VALUE_TYPE(features::kAndroidSurfaceControl)},
8673 {"enable-image-reader", flag_descriptions::kAImageReaderName,
8674 flag_descriptions::kAImageReaderDescription, kOsAndroid,
8675 FEATURE_VALUE_TYPE(features::kAImageReader)},
8676 #endif // BUILDFLAG(IS_ANDROID)
8678 #if BUILDFLAG(IS_ANDROID)
8679 {"smart-suggestion-for-large-downloads",
8680 flag_descriptions::kSmartSuggestionForLargeDownloadsName,
8681 flag_descriptions::kSmartSuggestionForLargeDownloadsDescription,
8683 FEATURE_VALUE_TYPE(download::features::kSmartSuggestionForLargeDownloads)},
8684 #endif // BUILDFLAG(IS_ANDROID)
8686 #if BUILDFLAG(IS_ANDROID)
8687 {"messages-for-android-ads-blocked",
8688 flag_descriptions::kMessagesForAndroidAdsBlockedName,
8689 flag_descriptions::kMessagesForAndroidAdsBlockedDescription, kOsAndroid,
8690 FEATURE_VALUE_TYPE(messages::kMessagesForAndroidAdsBlocked)},
8691 {"messages-for-android-infrastructure",
8692 flag_descriptions::kMessagesForAndroidInfrastructureName,
8693 flag_descriptions::kMessagesForAndroidInfrastructureDescription,
8695 FEATURE_VALUE_TYPE(messages::kMessagesForAndroidInfrastructure)},
8696 {"messages-for-android-offer-notification",
8697 flag_descriptions::kMessagesForAndroidOfferNotificationName,
8698 flag_descriptions::kMessagesForAndroidOfferNotificationDescription,
8700 FEATURE_VALUE_TYPE(messages::kMessagesForAndroidOfferNotification)},
8701 {"messages-for-android-permission-update",
8702 flag_descriptions::kMessagesForAndroidPermissionUpdateName,
8703 flag_descriptions::kMessagesForAndroidPermissionUpdateDescription,
8705 FEATURE_VALUE_TYPE(messages::kMessagesForAndroidPermissionUpdate)},
8706 {"messages-for-android-popup-blocked",
8707 flag_descriptions::kMessagesForAndroidPopupBlockedName,
8708 flag_descriptions::kMessagesForAndroidPopupBlockedDescription, kOsAndroid,
8709 FEATURE_VALUE_TYPE(messages::kMessagesForAndroidPopupBlocked)},
8710 {"messages-for-android-pwa-install",
8711 flag_descriptions::kMessagesForAndroidPWAInstallName,
8712 flag_descriptions::kMessagesForAndroidPWAInstallDescription, kOsAndroid,
8713 FEATURE_VALUE_TYPE(webapps::features::kInstallableAmbientBadgeMessage)},
8714 {"messages-for-android-save-card",
8715 flag_descriptions::kMessagesForAndroidSaveCardName,
8716 flag_descriptions::kMessagesForAndroidSaveCardDescription, kOsAndroid,
8717 FEATURE_VALUE_TYPE(messages::kMessagesForAndroidSaveCard)},
8718 {"messages-for-android-stacking-animation",
8719 flag_descriptions::kMessagesForAndroidStackingAnimationName,
8720 flag_descriptions::kMessagesForAndroidStackingAnimationDescription,
8722 FEATURE_VALUE_TYPE(messages::kMessagesForAndroidStackingAnimation)},
8725 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
8726 BUILDFLAG(IS_FUCHSIA)
8727 {"quick-commands", flag_descriptions::kQuickCommandsName,
8728 flag_descriptions::kQuickCommandsDescription, kOsDesktop,
8729 FEATURE_VALUE_TYPE(features::kQuickCommands)},
8732 #if BUILDFLAG(IS_ANDROID)
8733 {"quick-delete-for-android", flag_descriptions::kQuickDeleteForAndroidName,
8734 flag_descriptions::kQuickDeleteForAndroidDescription, kOsAndroid,
8735 FEATURE_VALUE_TYPE(chrome::android::kQuickDeleteForAndroid)},
8736 #endif // BUILDFLAG(IS_ANDROID)
8738 {"pwa-update-dialog-for-icon",
8739 flag_descriptions::kPwaUpdateDialogForAppIconName,
8740 flag_descriptions::kPwaUpdateDialogForAppIconDescription, kOsAll,
8741 FEATURE_VALUE_TYPE(features::kPwaUpdateDialogForIcon)},
8743 {"responsive-toolbar", flag_descriptions::kResponsiveToolbarName,
8744 flag_descriptions::kResponsiveToolbarDescription, kOsDesktop,
8745 FEATURE_VALUE_TYPE(features::kResponsiveToolbar)},
8747 #if BUILDFLAG(ENABLE_OOP_PRINTING)
8748 {"enable-oop-print-drivers", flag_descriptions::kEnableOopPrintDriversName,
8749 flag_descriptions::kEnableOopPrintDriversDescription, kOsDesktop,
8750 FEATURE_VALUE_TYPE(printing::features::kEnableOopPrintDrivers)},
8753 #if BUILDFLAG(IS_ANDROID)
8754 {"media-picker-adoption", flag_descriptions::kMediaPickerAdoptionStudyName,
8755 flag_descriptions::kMediaPickerAdoptionStudyDescription, kOsAndroid,
8756 FEATURE_WITH_PARAMS_VALUE_TYPE(
8757 photo_picker::features::kAndroidMediaPickerAdoption,
8758 kPhotoPickerAdoptionStudyFeatureVariations,
8759 "MediaPickerAdoption")},
8760 #endif // BUILDFLAG(IS_ANDROID)
8762 {"privacy-sandbox-ads-apis",
8763 flag_descriptions::kPrivacySandboxAdsAPIsOverrideName,
8764 flag_descriptions::kPrivacySandboxAdsAPIsOverrideDescription, kOsAll,
8765 SINGLE_VALUE_TYPE(switches::kEnablePrivacySandboxAdsApis)},
8767 {"privacy-sandbox-settings-4",
8768 flag_descriptions::kPrivacySandboxSettings4Name,
8769 flag_descriptions::kPrivacySandboxSettings4Description, kOsAll,
8770 FEATURE_WITH_PARAMS_VALUE_TYPE(privacy_sandbox::kPrivacySandboxSettings4,
8771 kPrivacySandboxSettings4Variations,
8772 "PrivacySandboxSettings4")},
8774 {"privacy-sandbox-proactive-topics-blocking",
8775 flag_descriptions::kPrivacySandboxProactiveTopicsBlockingName,
8776 flag_descriptions::kPrivacySandboxProactiveTopicsBlockingDescription,
8779 privacy_sandbox::kPrivacySandboxProactiveTopicsBlocking)},
8781 #if BUILDFLAG(IS_ANDROID)
8782 {"site-data-improvements", flag_descriptions::kSiteDataImprovementsName,
8783 flag_descriptions::kSiteDataImprovementsDescription, kOsAndroid,
8784 FEATURE_VALUE_TYPE(browser_ui::kSiteDataImprovements)},
8785 #endif // BUILDFLAG(IS_ANDROID)
8787 {"animated-image-resume", flag_descriptions::kAnimatedImageResumeName,
8788 flag_descriptions::kAnimatedImageResumeDescription, kOsAll,
8789 FEATURE_VALUE_TYPE(features::kAnimatedImageResume)},
8791 {"enable-friendlier-safe-browsing-settings-enhanced-protection",
8793 kEnableFriendlierSafeBrowsingSettingsEnhancedProtectionName,
8795 kEnableFriendlierSafeBrowsingSettingsEnhancedProtectionDescription,
8798 safe_browsing::kFriendlierSafeBrowsingSettingsEnhancedProtection)},
8800 {"enable-friendlier-safe-browsing-settings-standard-protection",
8802 kEnableFriendlierSafeBrowsingSettingsStandardProtectionName,
8804 kEnableFriendlierSafeBrowsingSettingsStandardProtectionDescription,
8807 safe_browsing::kFriendlierSafeBrowsingSettingsStandardProtection)},
8809 {"enable-red-interstitial-facelift",
8810 flag_descriptions::kEnableRedInterstitialFaceliftName,
8811 flag_descriptions::kEnableRedInterstitialFaceliftDescription, kOsAll,
8812 FEATURE_VALUE_TYPE(safe_browsing::kRedInterstitialFacelift)},
8814 {"enable-tailored-security-retry-for-sync-users",
8815 flag_descriptions::kTailoredSecurityRetryForSyncUsersName,
8816 flag_descriptions::kTailoredSecurityRetryForSyncUsersDescription, kOsAll,
8817 FEATURE_VALUE_TYPE(safe_browsing::kTailoredSecurityRetryForSyncUsers)},
8819 {"enable-tailored-security-updated-messages",
8820 flag_descriptions::kEnableTailoredSecurityUpdatedMessagesName,
8821 flag_descriptions::kEnableTailoredSecurityUpdatedMessagesDescription,
8823 FEATURE_VALUE_TYPE(safe_browsing::kTailoredSecurityUpdatedMessages)},
8825 #if !BUILDFLAG(IS_ANDROID)
8826 {"sct-auditing", flag_descriptions::kSCTAuditingName,
8827 flag_descriptions::kSCTAuditingDescription, kOsDesktop,
8828 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kSCTAuditing,
8829 kSCTAuditingVariations,
8830 "SCTAuditingVariations")},
8831 #endif // !BUILDFLAG(IS_ANDROID)
8833 #if BUILDFLAG(IS_ANDROID)
8834 // TODO(https://crbug.com/985245): remove flag when API version 33 is the
8835 // lowest supported version.
8836 {"incognito-screenshot", flag_descriptions::kIncognitoScreenshotName,
8837 flag_descriptions::kIncognitoScreenshotDescription, kOsAndroid,
8838 FEATURE_VALUE_TYPE(chrome::android::kIncognitoScreenshot)},
8840 {"incognito-downloads-warning",
8841 flag_descriptions::kIncognitoDownloadsWarningName,
8842 flag_descriptions::kIncognitoDownloadsWarningDescription, kOsAndroid,
8843 FEATURE_VALUE_TYPE(features::kIncognitoDownloadsWarning)},
8846 {"incognito-ntp-revamp", flag_descriptions::kIncognitoNtpRevampName,
8847 flag_descriptions::kIncognitoNtpRevampDescription, kOsAll,
8848 FEATURE_VALUE_TYPE(features::kIncognitoNtpRevamp)},
8850 {"insecure-download-warnings",
8851 flag_descriptions::kInsecureDownloadWarningsName,
8852 flag_descriptions::kInsecureDownloadWarningsDescription, kOsAll,
8853 FEATURE_VALUE_TYPE(features::kInsecureDownloadWarnings)},
8855 {"show-performance-metrics-hud",
8856 flag_descriptions::kShowPerformanceMetricsHudName,
8857 flag_descriptions::kShowPerformanceMetricsHudDescription, kOsAll,
8858 FEATURE_VALUE_TYPE(features::kHudDisplayForPerformanceMetrics)},
8860 #if BUILDFLAG(IS_CHROMEOS_ASH)
8861 {"disable-buffer-bw-compression",
8862 flag_descriptions::kDisableBufferBWCompressionName,
8863 flag_descriptions::kDisableBufferBWCompressionDescription, kOsCrOS,
8864 SINGLE_VALUE_TYPE(switches::kDisableBufferBWCompression)},
8865 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8867 {"enable-speculation-rules-prerendering-target-hint",
8868 flag_descriptions::kSpeculationRulesPrerenderingTargetHintName,
8869 flag_descriptions::kSpeculationRulesPrerenderingTargetHintDescription,
8870 kOsAll, FEATURE_VALUE_TYPE(blink::features::kPrerender2InNewTab)},
8872 {"search-suggestion-for-prerender2",
8873 flag_descriptions::kSupportSearchSuggestionForPrerender2Name,
8874 flag_descriptions::kSupportSearchSuggestionForPrerender2Description,
8876 FEATURE_VALUE_TYPE(features::kSupportSearchSuggestionForPrerender2)},
8878 {"omnibox-search-prefetch",
8879 flag_descriptions::kEnableOmniboxSearchPrefetchName,
8880 flag_descriptions::kEnableOmniboxSearchPrefetchDescription, kOsAll,
8881 FEATURE_WITH_PARAMS_VALUE_TYPE(kSearchPrefetchServicePrefetching,
8882 kSearchPrefetchServicePrefetchingVariations,
8883 "SearchSuggestionPrefetch")},
8884 {"omnibox-search-client-prefetch",
8885 flag_descriptions::kEnableOmniboxClientSearchPrefetchName,
8886 flag_descriptions::kEnableOmniboxClientSearchPrefetchDescription, kOsAll,
8887 FEATURE_VALUE_TYPE(kSearchNavigationPrefetch)},
8889 {"chrome-labs", flag_descriptions::kChromeLabsName,
8890 flag_descriptions::kChromeLabsDescription, kOsDesktop,
8891 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kChromeLabs,
8892 kChromeLabsVariations,
8895 {flag_descriptions::kChromeRefresh2023Id,
8896 flag_descriptions::kChromeRefresh2023Name,
8897 flag_descriptions::kChromeRefresh2023Description, kOsDesktop,
8898 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kChromeRefresh2023,
8899 kChromeRefresh2023Variations,
8900 "ChromeRefresh2023")},
8902 {"chrome-webui-refresh-2023",
8903 flag_descriptions::kChromeWebuiRefresh2023Name,
8904 flag_descriptions::kChromeWebuiRefresh2023Description, kOsDesktop,
8905 FEATURE_VALUE_TYPE(features::kChromeWebuiRefresh2023)},
8907 {"chrome-refresh-2023-ntb", flag_descriptions::kChromeRefresh2023NTBName,
8908 flag_descriptions::kChromeRefresh2023NTBDescription, kOsDesktop,
8909 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kChromeRefresh2023NTB,
8910 kChromeRefresh2023NTBVariations,
8911 "ChromeRefresh2023NTBVariations")},
8913 {"chrome-refresh-2023-top-chrome-font",
8914 flag_descriptions::kChromeRefresh2023TopChromeFontName,
8915 flag_descriptions::kChromeRefresh2023TopChromeFontDescription, kOsDesktop,
8916 FEATURE_VALUE_TYPE(features::kChromeRefresh2023TopChromeFont)},
8918 #if BUILDFLAG(IS_ANDROID)
8919 {"autofill-enable-offers-in-clank-keyboard-accessory",
8920 flag_descriptions::kAutofillEnableOffersInClankKeyboardAccessoryName,
8922 kAutofillEnableOffersInClankKeyboardAccessoryDescription,
8925 autofill::features::kAutofillEnableOffersInClankKeyboardAccessory)},
8928 #if BUILDFLAG(ENABLE_PDF)
8930 #if !BUILDFLAG(IS_ANDROID)
8931 // TODO(https://crbug.com/1443341): Add Windows once library supports it.
8932 {"pdf-ocr", flag_descriptions::kPdfOcrName,
8933 flag_descriptions::kPdfOcrDescription,
8934 kOsMac | kOsLinux | kOsCrOS | kOsLacros,
8935 FEATURE_VALUE_TYPE(features::kPdfOcr)},
8936 #endif // !BUILDFLAG(IS_ANDROID)
8938 {"pdf-xfa-forms", flag_descriptions::kPdfXfaFormsName,
8939 flag_descriptions::kPdfXfaFormsDescription, kOsDesktop,
8940 FEATURE_VALUE_TYPE(chrome_pdf::features::kPdfXfaSupport)},
8941 #endif // BUILDFLAG(ENABLE_PDF)
8943 #if BUILDFLAG(IS_CHROMEOS_ASH)
8944 {"backlight-ocr", flag_descriptions::kBacklightOcrName,
8945 flag_descriptions::kBacklightOcrDescription, kOsCrOS | kOsLacros,
8946 FEATURE_VALUE_TYPE(features::kBacklightOcr)},
8947 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8949 #if BUILDFLAG(IS_ANDROID)
8950 {"send-tab-to-self-v2", flag_descriptions::kSendTabToSelfV2Name,
8951 flag_descriptions::kSendTabToSelfV2Description, kOsAndroid,
8952 FEATURE_VALUE_TYPE(send_tab_to_self::kSendTabToSelfV2)},
8953 #endif // BUILDFLAG(IS_ANDROID)
8955 {"enable-managed-configuration-web-api",
8956 flag_descriptions::kEnableManagedConfigurationWebApiName,
8957 flag_descriptions::kEnableManagedConfigurationWebApiDescription, kOsCrOS,
8958 FEATURE_VALUE_TYPE(blink::features::kManagedConfiguration)},
8960 {"enable-system-entropy",
8961 flag_descriptions::kEnableSystemEntropyOnPerformanceNavigationTimingName,
8963 kEnableSystemEntropyOnPerformanceNavigationTimingDescription,
8965 FEATURE_VALUE_TYPE(blink::features::kPerformanceNavigateSystemEntropy)},
8967 {"clear-cross-site-cross-browsing-context-group-window-name",
8968 flag_descriptions::kClearCrossSiteCrossBrowsingContextGroupWindowNameName,
8970 kClearCrossSiteCrossBrowsingContextGroupWindowNameDescription,
8973 features::kClearCrossSiteCrossBrowsingContextGroupWindowName)},
8975 #if BUILDFLAG(IS_CHROMEOS)
8976 {kTaskManagerEndProcessDisabledForExtensionInternalName,
8977 flag_descriptions::kTaskManagerEndProcessDisabledForExtensionName,
8978 flag_descriptions::kTaskManagerEndProcessDisabledForExtensionDescription,
8979 kOsCrOS | kOsLacros,
8980 FEATURE_VALUE_TYPE(features::kDesktopPWAsRunOnOsLogin)},
8981 #endif // BUILDFLAG(IS_CHROMEOS)
8983 #if BUILDFLAG(IS_CHROMEOS_ASH)
8984 {kWallpaperFastRefreshInternalName,
8985 flag_descriptions::kWallpaperFastRefreshName,
8986 flag_descriptions::kWallpaperFastRefreshDescription, kOsCrOS,
8987 FEATURE_VALUE_TYPE(ash::features::kWallpaperFastRefresh)},
8988 {kWallpaperGooglePhotosSharedAlbumsInternalName,
8989 flag_descriptions::kWallpaperGooglePhotosSharedAlbumsName,
8990 flag_descriptions::kWallpaperGooglePhotosSharedAlbumsDescription, kOsCrOS,
8991 FEATURE_VALUE_TYPE(ash::features::kWallpaperGooglePhotosSharedAlbums)},
8992 {kWallpaperPerDeskName, flag_descriptions::kWallpaperPerDeskName,
8993 flag_descriptions::kWallpaperPerDeskDescription, kOsCrOS,
8994 FEATURE_VALUE_TYPE(ash::features::kWallpaperPerDesk)},
8995 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
8997 #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
8998 {"enable-get-all-screens-media", flag_descriptions::kGetAllScreensMediaName,
8999 flag_descriptions::kGetAllScreensMediaDescription,
9000 kOsCrOS | kOsLacros | kOsLinux,
9001 FEATURE_VALUE_TYPE(blink::features::kGetAllScreensMedia)},
9002 #endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
9004 #if BUILDFLAG(IS_CHROMEOS)
9005 {"enable-run-on-os-login", flag_descriptions::kRunOnOsLoginName,
9006 flag_descriptions::kRunOnOsLoginDescription, kOsCrOS | kOsLacros,
9007 FEATURE_VALUE_TYPE(features::kDesktopPWAsRunOnOsLogin)},
9008 {"enable-prevent-close", flag_descriptions::kPreventCloseName,
9009 flag_descriptions::kPreventCloseDescription, kOsCrOS | kOsLacros,
9010 FEATURE_VALUE_TYPE(features::kDesktopPWAsPreventClose)},
9012 {"enable-cloud-identifiers",
9013 flag_descriptions::kFileSystemAccessGetCloudIdentifiersName,
9014 flag_descriptions::kFileSystemAccessGetCloudIdentifiersDescription,
9015 kOsCrOS | kOsLacros,
9016 FEATURE_VALUE_TYPE(blink::features::kFileSystemAccessGetCloudIdentifiers)},
9018 {"lacros-color-management", flag_descriptions::kLacrosColorManagementName,
9019 flag_descriptions::kLacrosColorManagementDescription, kOsLacros,
9020 FEATURE_VALUE_TYPE(features::kLacrosColorManagement)},
9022 {"preinstalled-web-app-window-experiment",
9023 flag_descriptions::kPreinstalledWebAppWindowExperimentName,
9024 flag_descriptions::kPreinstalledWebAppWindowExperimentDescription,
9025 kOsCrOS | kOsLacros,
9026 FEATURE_WITH_PARAMS_VALUE_TYPE(
9027 features::kPreinstalledWebAppWindowExperiment,
9028 kPreinstalledWebAppWindowExperimentVariations,
9029 "PreinstalledWebAppWindowExperimentVariations")},
9030 #endif // BUILDFLAG(IS_CHROMEOS)
9032 {"enable-global-vaapi-lock", flag_descriptions::kGlobalVaapiLockName,
9033 flag_descriptions::kGlobalVaapiLockDescription,
9034 kOsCrOS | kOsLinux | kOsLacros,
9035 FEATURE_VALUE_TYPE(media::kGlobalVaapiLock)},
9037 #if BUILDFLAG(IS_WIN) || \
9038 (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) || \
9039 BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA)
9042 flag_descriptions::kUIDebugToolsName,
9043 flag_descriptions::kUIDebugToolsDescription,
9044 kOsWin | kOsLinux | kOsLacros | kOsMac | kOsFuchsia,
9045 FEATURE_VALUE_TYPE(features::kUIDebugTools),
9048 {"sync-poll-immediately-on-every-startup",
9049 flag_descriptions::kSyncPollImmediatelyOnEveryStartupName,
9050 flag_descriptions::kSyncPollImmediatelyOnEveryStartupDescription,
9052 FEATURE_VALUE_TYPE(syncer::kSyncPollImmediatelyOnEveryStartup)},
9054 {"http-cache-partitioning",
9055 flag_descriptions::kSplitCacheByNetworkIsolationKeyName,
9056 flag_descriptions::kSplitCacheByNetworkIsolationKeyDescription,
9057 kOsWin | kOsLinux | kOsLacros | kOsMac | kOsCrOS | kOsAndroid | kOsFuchsia,
9058 FEATURE_VALUE_TYPE(net::features::kSplitCacheByNetworkIsolationKey)},
9060 #if BUILDFLAG(IS_ANDROID)
9061 {"content-languages-in-language-picker",
9062 flag_descriptions::kContentLanguagesInLanguagePickerName,
9063 flag_descriptions::kContentLanguagesInLanguagePickerDescription,
9065 FEATURE_WITH_PARAMS_VALUE_TYPE(language::kContentLanguagesInLanguagePicker,
9066 kContentLanguagesInLanguaePickerVariations,
9067 "ContentLanguagesInLanguagePicker")},
9070 #if !BUILDFLAG(IS_ANDROID)
9071 {"filling-across-grouped-sites",
9072 flag_descriptions::kFillingAcrossGroupedSitesName,
9073 flag_descriptions::kFillingAcrossGroupedSitesDescription, kOsDesktop,
9075 password_manager::features::kFillingAcrossGroupedSites)},
9076 #endif // !BUILDFLAG(IS_ANDROID)
9078 {"draw-predicted-ink-point", flag_descriptions::kDrawPredictedPointsName,
9079 flag_descriptions::kDrawPredictedPointsDescription, kOsAll,
9080 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kDrawPredictedInkPoint,
9081 kDrawPredictedPointVariations,
9082 "DrawPredictedInkPoint")},
9084 #if BUILDFLAG(IS_ANDROID)
9085 {"optimization-guide-personalized-fetching",
9086 flag_descriptions::kOptimizationGuidePersonalizedFetchingName,
9087 flag_descriptions::kOptimizationGuidePersonalizedFetchingDescription,
9089 FEATURE_WITH_PARAMS_VALUE_TYPE(
9090 optimization_guide::features::kOptimizationGuidePersonalizedFetching,
9091 kOptimizationGuidePersonalizedFetchingAllowPageInsightsVariations,
9092 "OptimizationGuidePersonalizedFetchingAllowPageInsights")},
9093 {"optimization-guide-push-notifications",
9094 flag_descriptions::kOptimizationGuidePushNotificationName,
9095 flag_descriptions::kOptimizationGuidePushNotificationDescription,
9097 FEATURE_VALUE_TYPE(optimization_guide::features::kPushNotifications)},
9100 {"fedcm-authz", flag_descriptions::kFedCmAuthzName,
9101 flag_descriptions::kFedCmAuthzDescription, kOsDesktop,
9102 FEATURE_VALUE_TYPE(features::kFedCmAuthz)},
9104 {"fedcm-auto-selected-flag", flag_descriptions::kFedCmAutoSelectedFlagName,
9105 flag_descriptions::kFedCmAutoSelectedFlagDescription, kOsAll,
9106 FEATURE_VALUE_TYPE(features::kFedCmAutoSelectedFlag)},
9108 {"fedcm-error", flag_descriptions::kFedCmErrorName,
9109 flag_descriptions::kFedCmErrorDescription, kOsAll,
9110 FEATURE_VALUE_TYPE(features::kFedCmError)},
9112 {"fedcm-domain-hint", flag_descriptions::kFedCmDomainHintName,
9113 flag_descriptions::kFedCmDomainHintDescription, kOsAll,
9114 FEATURE_VALUE_TYPE(features::kFedCmDomainHint)},
9116 {"fedcm-idp-registration", flag_descriptions::kFedCmIdPRegistrationName,
9117 flag_descriptions::kFedCmIdPRegistrationDescription, kOsDesktop,
9118 FEATURE_VALUE_TYPE(features::kFedCmIdPRegistration)},
9120 {"fedcm-idp-signin-status-api",
9121 flag_descriptions::kFedCmIdpSigninStatusName,
9122 flag_descriptions::kFedCmIdpSigninStatusDescription, kOsAll,
9123 FEATURE_VALUE_TYPE(features::kFedCmIdpSigninStatusEnabled)},
9125 {"fedcm-logout-rps", flag_descriptions::kFedCmLogoutRpsName,
9126 flag_descriptions::kFedCmLogoutRpsDescription, kOsAll,
9127 FEATURE_VALUE_TYPE(features::kFedCmLogoutRps)},
9129 {"fedcm-metrics-endpoint", flag_descriptions::kFedCmMetricsEndpointName,
9130 flag_descriptions::kFedCmMetricsEndpointDescription, kOsAll,
9131 FEATURE_VALUE_TYPE(features::kFedCmMetricsEndpoint)},
9133 {"fedcm-multi-idp", flag_descriptions::kFedCmMultiIdpName,
9134 flag_descriptions::kFedCmMultiIdpDescription, kOsDesktop,
9135 FEATURE_VALUE_TYPE(features::kFedCmMultipleIdentityProviders)},
9137 {"fedcm-revoke", flag_descriptions::kFedCmRevokeName,
9138 flag_descriptions::kFedCmRevokeDescription, kOsAll,
9139 FEATURE_VALUE_TYPE(features::kFedCmRevoke)},
9141 {"fedcm-selective-disclosure",
9142 flag_descriptions::kFedCmSelectiveDisclosureName,
9143 flag_descriptions::kFedCmSelectiveDisclosureDescription, kOsAll,
9144 FEATURE_VALUE_TYPE(features::kFedCmSelectiveDisclosure)},
9146 {"fedcm-without-third-party-cookies",
9147 flag_descriptions::kFedCmWithoutThirdPartyCookiesName,
9148 flag_descriptions::kFedCmWithoutThirdPartyCookiesDescription, kOsAll,
9149 FEATURE_VALUE_TYPE(features::kFedCmWithoutThirdPartyCookies)},
9151 {"fedcm-without-well-known-enforcement",
9152 flag_descriptions::kFedCmWithoutWellKnownEnforcementName,
9153 flag_descriptions::kFedCmWithoutWellKnownEnforcementDescription, kOsAll,
9154 FEATURE_VALUE_TYPE(features::kFedCmWithoutWellKnownEnforcement)},
9156 {"web-identity-digital-credentials",
9157 flag_descriptions::kWebIdentityDigitalCredentialsName,
9158 flag_descriptions::kWebIdentityDigitalCredentialsDescription, kOsAndroid,
9159 FEATURE_VALUE_TYPE(features::kWebIdentityDigitalCredentials)},
9161 #if BUILDFLAG(IS_CHROMEOS_ASH)
9162 {"bluetooth-sessionized-metrics",
9163 flag_descriptions::kBluetoothSessionizedMetricsName,
9164 flag_descriptions::kBluetoothSessionizedMetricsDescription, kOsCrOS,
9165 FEATURE_VALUE_TYPE(metrics::structured::kBluetoothSessionizedMetrics)},
9168 {"autofill-highlight-only-changed-value-in-preview-mode",
9169 flag_descriptions::kAutofillHighlightOnlyChangedValuesInPreviewModeName,
9171 kAutofillHighlightOnlyChangedValuesInPreviewModeDescription,
9174 autofill::features::kAutofillHighlightOnlyChangedValuesInPreviewMode)},
9176 {"sanitizer-api", flag_descriptions::kSanitizerApiName,
9177 flag_descriptions::kSanitizerApiDescription, kOsAll,
9178 FEATURE_VALUE_TYPE(blink::features::kSanitizerAPI)},
9180 #if BUILDFLAG(IS_CHROMEOS_ASH)
9181 {"enable-input-event-logging",
9182 flag_descriptions::kEnableInputEventLoggingName,
9183 flag_descriptions::kEnableInputEventLoggingDescription, kOsCrOS,
9184 FEATURE_VALUE_TYPE(ui::kEnableInputEventLogging)},
9187 {"autofill-enable-sticky-manual-fallback-for-cards",
9188 flag_descriptions::kAutofillEnableStickyManualFallbackForCardsName,
9189 flag_descriptions::kAutofillEnableStickyManualFallbackForCardsDescription,
9192 autofill::features::kAutofillEnableStickyManualFallbackForCards)},
9194 {"autofill-prevent-overriding-prefilled-values",
9195 flag_descriptions::kAutofillPreventOverridingPrefilledValuesName,
9196 flag_descriptions::kAutofillPreventOverridingPrefilledValuesDescription,
9197 kOsDesktop | kOsAndroid,
9199 autofill::features::kAutofillPreventOverridingPrefilledValues)},
9201 {"autofill-show-autocomplete-delete-button",
9202 flag_descriptions::kAutofillShowAutocompleteDeleteButtonName,
9203 flag_descriptions::kAutofillShowAutocompleteDeleteButtonDescription,
9206 autofill::features::kAutofillShowAutocompleteDeleteButton)},
9208 {flag_descriptions::kEnableLensStandaloneFlagId,
9209 flag_descriptions::kEnableLensStandaloneName,
9210 flag_descriptions::kEnableLensStandaloneDescription, kOsDesktop,
9211 FEATURE_VALUE_TYPE(lens::features::kLensStandalone)},
9213 #if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES)
9214 {"csc-companion-enable-page-content",
9215 flag_descriptions::kCscCompanionEnablePageContentName,
9216 flag_descriptions::kCscCompanionEnablePageContentDescription, kOsDesktop,
9217 FEATURE_VALUE_TYPE(companion::features::kCompanionEnablePageContent)},
9219 {"csc-force-companion-pinned-state",
9220 flag_descriptions::kCscForceCompanionPinnedStateName,
9221 flag_descriptions::kCscForceCompanionPinnedStateDescription, kOsDesktop,
9222 MULTI_VALUE_TYPE(kForceCompanionPinnedStateChoices)},
9224 {"csc-side-panel-companion", flag_descriptions::kCscSidePanelCompanionName,
9225 flag_descriptions::kCscSidePanelCompanionDescription, kOsDesktop,
9226 FEATURE_WITH_PARAMS_VALUE_TYPE(
9227 companion::features::internal::kSidePanelCompanion,
9228 kSidePanelCompanionVariations,
9231 {"csc-visual-search-suggestions",
9232 flag_descriptions::kCscVisualSearchSuggestionsName,
9233 flag_descriptions::kCscVisualSearchSuggestionsDescription, kOsDesktop,
9235 companion::visual_search::features::kVisualSearchSuggestions)},
9237 {"enable-lens-region-search-static-page",
9238 flag_descriptions::kLensRegionSearchStaticPageName,
9239 flag_descriptions::kLensRegionSearchStaticPageDescription, kOsDesktop,
9240 FEATURE_VALUE_TYPE(lens::features::kLensRegionSearchStaticPage)},
9241 #endif // BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES)
9243 {"enable-lens-image-format-optimizations",
9244 flag_descriptions::kLensImageFormatOptimizationsName,
9245 flag_descriptions::kLensImageFormatOptimizationsDescription, kOsDesktop,
9246 FEATURE_WITH_PARAMS_VALUE_TYPE(
9247 lens::features::kLensImageFormatOptimizations,
9248 kLensImageFormatVariations,
9249 "LensImageFormatOptimizations")},
9251 {"enable-lens-image-translate", flag_descriptions::kLensImageTranslateName,
9252 flag_descriptions::kLensImageTranslateDescription, kOsDesktop,
9253 FEATURE_VALUE_TYPE(lens::features::kEnableImageTranslate)},
9255 {"enable-lens-ping", flag_descriptions::kEnableLensPingName,
9256 flag_descriptions::kEnableLensPingDescription, kOsDesktop,
9257 FEATURE_WITH_PARAMS_VALUE_TYPE(lens::features::kEnableLensPing,
9258 kLensPingVariations,
9261 #if BUILDFLAG(IS_ANDROID)
9262 {"biometric-reauth-password-filling",
9263 flag_descriptions::kBiometricReauthForPasswordFillingName,
9264 flag_descriptions::kBiometricReauthForPasswordFillingDescription,
9266 FEATURE_VALUE_TYPE(password_manager::features::kBiometricTouchToFill)},
9269 #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
9270 {"ios-promo-password-bubble",
9271 flag_descriptions::kIOSPromoPasswordBubbleName,
9272 flag_descriptions::kIOSPromoPasswordBubbleDecription, kOsDesktop,
9273 FEATURE_WITH_PARAMS_VALUE_TYPE(promos_features::kIOSPromoPasswordBubble,
9274 kIOSPromoPasswordBubbleVariations,
9275 "IOSPromoPasswordBubble")},
9278 #if BUILDFLAG(IS_CHROMEOS_ASH)
9279 {"enable-keyboard-backlight-toggle",
9280 flag_descriptions::kEnableKeyboardBacklightToggleName,
9281 flag_descriptions::kEnableKeyboardBacklightToggleDescription, kOsCrOS,
9282 FEATURE_VALUE_TYPE(ash::features::kEnableKeyboardBacklightToggle)},
9283 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9285 {"align-wakeups", flag_descriptions::kAlignWakeUpsName,
9286 flag_descriptions::kAlignWakeUpsDescription, kOsAll,
9287 FEATURE_VALUE_TYPE(base::kAlignWakeUps)},
9289 {"enable-throttle-display-none-and-visibility-hidden-cross-origin-iframes",
9291 kThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframesName,
9293 kThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframesDescription,
9294 kOsDesktop | kOsAndroid,
9297 kThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes)},
9299 {"enable-new-base-url-inheritance-behavior",
9300 flag_descriptions::kNewBaseUrlInheritanceBehaviorName,
9301 flag_descriptions::kNewBaseUrlInheritanceBehaviorDescription,
9302 kOsDesktop | kOsAndroid,
9303 FEATURE_VALUE_TYPE(blink::features::kNewBaseUrlInheritanceBehavior)},
9305 #if BUILDFLAG(ENABLE_VALIDATING_COMMAND_DECODER)
9306 {"use-passthrough-command-decoder",
9307 flag_descriptions::kUsePassthroughCommandDecoderName,
9308 flag_descriptions::kUsePassthroughCommandDecoderDescription, kOsAll,
9309 FEATURE_VALUE_TYPE(features::kDefaultPassthroughCommandDecoder)},
9310 #endif // BUILDFLAG(ENABLE_VALIDATING_COMMAND_DECODER)
9312 #if BUILDFLAG(IS_CHROMEOS_ASH)
9313 {"focus-follows-cursor", flag_descriptions::kFocusFollowsCursorName,
9314 flag_descriptions::kFocusFollowsCursorDescription, kOsCrOS,
9315 FEATURE_VALUE_TYPE(::features::kFocusFollowsCursor)},
9316 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9318 #if !BUILDFLAG(IS_ANDROID)
9319 {"password-generation-experiment",
9320 flag_descriptions::kPasswordGenerationExperimentName,
9321 flag_descriptions::kPasswordGenerationExperimentDescription, kOsDesktop,
9322 FEATURE_WITH_PARAMS_VALUE_TYPE(
9323 password_manager::features::kPasswordGenerationExperiment,
9324 kPasswordGenerationExperimentVariations,
9325 "PasswordGenerationExperiment")},
9328 #if BUILDFLAG(IS_CHROMEOS)
9329 {"local-printer-observing", flag_descriptions::kLocalPrinterObservingName,
9330 flag_descriptions::kLocalPrinterObservingDescription, kOsCrOS | kOsLacros,
9331 FEATURE_VALUE_TYPE(features::kLocalPrinterObserving)},
9332 {"print-preview-setup-assistance",
9333 flag_descriptions::kPrintPreviewSetupAssistanceName,
9334 flag_descriptions::kPrintPreviewSetupAssistanceDescription,
9335 kOsCrOS | kOsLacros,
9336 FEATURE_VALUE_TYPE(features::kPrintPreviewSetupAssistance)},
9339 #if !BUILDFLAG(IS_ANDROID)
9340 {"cbd-timeframe-required", flag_descriptions::kCbdTimeframeRequiredName,
9341 flag_descriptions::kCbdTimeframeRequiredDescription, kOsDesktop,
9342 FEATURE_VALUE_TYPE(features::kCbdTimeframeRequired)},
9345 #if BUILDFLAG(IS_ANDROID)
9346 {"privacy-guide-android", flag_descriptions::kPrivacyGuideAndroidName,
9347 flag_descriptions::kPrivacyGuideAndroidDescription, kOsAndroid,
9348 FEATURE_VALUE_TYPE(features::kPrivacyGuideAndroid)},
9351 #if BUILDFLAG(IS_ANDROID)
9352 {"privacy-guide-android-3", flag_descriptions::kPrivacyGuideAndroid3Name,
9353 flag_descriptions::kPrivacyGuideAndroid3Description, kOsAndroid,
9354 FEATURE_VALUE_TYPE(features::kPrivacyGuideAndroid3)},
9357 {"privacy-guide-3", flag_descriptions::kPrivacyGuide3Name,
9358 flag_descriptions::kPrivacyGuide3Description, kOsDesktop,
9359 FEATURE_VALUE_TYPE(features::kPrivacyGuide3)},
9361 {"privacy-guide-preload", flag_descriptions::kPrivacyGuidePreloadName,
9362 flag_descriptions::kPrivacyGuidePreloadDescription, kOsDesktop,
9363 FEATURE_VALUE_TYPE(features::kPrivacyGuidePreload)},
9365 #if BUILDFLAG(IS_ANDROID)
9366 {"privacy-guide-preload-android",
9367 flag_descriptions::kPrivacyGuidePreloadAndroidName,
9368 flag_descriptions::kPrivacyGuidePreloadAndroidDescription, kOsAndroid,
9369 FEATURE_VALUE_TYPE(features::kPrivacyGuidePreloadAndroid)},
9372 {"tab-search-fuzzy-search", flag_descriptions::kTabSearchFuzzySearchName,
9373 flag_descriptions::kTabSearchFuzzySearchDescription, kOsDesktop,
9374 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kTabSearchFuzzySearch,
9375 kTabSearchSearchThresholdVariations,
9376 "TabSearchFuzzySearch")},
9378 #if BUILDFLAG(IS_CHROMEOS_ASH)
9379 {"enable-phone-hub-call-notification",
9380 flag_descriptions::kPhoneHubCallNotificationName,
9381 flag_descriptions::kPhoneHubCallNotificationDescription, kOsCrOS,
9382 FEATURE_VALUE_TYPE(ash::features::kPhoneHubCallNotification)},
9383 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9385 {"test-third-party-cookie-phaseout",
9386 flag_descriptions::kTestThirdPartyCookiePhaseoutName,
9387 flag_descriptions::kTestThirdPartyCookiePhaseoutDescription, kOsAll,
9388 SINGLE_VALUE_TYPE(network::switches::kTestThirdPartyCookiePhaseout)},
9390 {"third-party-storage-partitioning",
9391 flag_descriptions::kThirdPartyStoragePartitioningName,
9392 flag_descriptions::kThirdPartyStoragePartitioningDescription, kOsAll,
9393 FEATURE_VALUE_TYPE(net::features::kThirdPartyStoragePartitioning)},
9395 {"tpc-phase-out-facilitated-testing",
9396 flag_descriptions::kTPCPhaseOutFacilitatedTestingName,
9397 flag_descriptions::kTPCPhaseOutFacilitatedTestingDescription, kOsAll,
9398 FEATURE_WITH_PARAMS_VALUE_TYPE(
9399 features::kCookieDeprecationFacilitatedTesting,
9400 kTPCPhaseOutFacilitatedTestingVariations,
9401 "TPCPhaseOutFacilitatedTesting")},
9403 {"tpcd-heuristics-grants", flag_descriptions::kTpcdHeuristicsGrantsName,
9404 flag_descriptions::kTpcdHeuristicsGrantsDescription, kOsAll,
9405 FEATURE_WITH_PARAMS_VALUE_TYPE(
9406 content_settings::features::kTpcdHeuristicsGrants,
9407 kTpcdHeuristicsGrantsVariations,
9408 "TpcdHeuristicsGrants")},
9410 {"bounce-tracking-mitigations", flag_descriptions::kDIPSName,
9411 flag_descriptions::kDIPSDescription, kOsAll,
9412 FEATURE_VALUE_TYPE(features::kDIPS)},
9414 #if BUILDFLAG(IS_CHROMEOS_ASH)
9415 {kBorealisBigGlInternalName, flag_descriptions::kBorealisBigGlName,
9416 flag_descriptions::kBorealisBigGlDescription, kOsCrOS,
9417 FEATURE_VALUE_TYPE(ash::features::kBorealisBigGl)},
9418 {kBorealisDGPUInternalName, flag_descriptions::kBorealisDGPUName,
9419 flag_descriptions::kBorealisDGPUDescription, kOsCrOS,
9420 FEATURE_VALUE_TYPE(ash::features::kBorealisDGPU)},
9421 {kBorealisForceBetaClientInternalName,
9422 flag_descriptions::kBorealisForceBetaClientName,
9423 flag_descriptions::kBorealisForceBetaClientDescription, kOsCrOS,
9424 FEATURE_VALUE_TYPE(ash::features::kBorealisForceBetaClient)},
9425 {kBorealisForceDoubleScaleInternalName,
9426 flag_descriptions::kBorealisForceDoubleScaleName,
9427 flag_descriptions::kBorealisForceDoubleScaleDescription, kOsCrOS,
9428 FEATURE_VALUE_TYPE(ash::features::kBorealisForceDoubleScale)},
9429 {kBorealisLinuxModeInternalName, flag_descriptions::kBorealisLinuxModeName,
9430 flag_descriptions::kBorealisLinuxModeDescription, kOsCrOS,
9431 FEATURE_VALUE_TYPE(ash::features::kBorealisLinuxMode)},
9432 {kBorealisPermittedInternalName, flag_descriptions::kBorealisPermittedName,
9433 flag_descriptions::kBorealisPermittedDescription, kOsCrOS,
9434 FEATURE_VALUE_TYPE(ash::features::kBorealisPermitted)},
9435 {kBorealisProvisionInternalName, flag_descriptions::kBorealisProvisionName,
9436 flag_descriptions::kBorealisProvisionDescription, kOsCrOS,
9437 FEATURE_VALUE_TYPE(ash::features::kBorealisProvision)},
9438 {kBorealisWebUIInstallerInternalName,
9439 flag_descriptions::kBorealisWebUIInstallerName,
9440 flag_descriptions::kBorealisWebUIInstallerDescription, kOsCrOS,
9441 FEATURE_VALUE_TYPE(ash::features::kBorealisWebUIInstaller)},
9442 {kVmPerBootShaderCacheName, flag_descriptions::kVmPerBootShaderCacheName,
9443 flag_descriptions::kVmPerBootShaderCacheDescription, kOsCrOS,
9444 FEATURE_VALUE_TYPE(ash::features::kVmPerBootShaderCache)},
9445 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9447 {"https-first-mode-v2-for-engaged-sites",
9448 flag_descriptions::kHttpsFirstModeV2ForEngagedSitesName,
9449 flag_descriptions::kHttpsFirstModeV2ForEngagedSitesDescription,
9450 kOsDesktop | kOsAndroid,
9451 FEATURE_VALUE_TYPE(features::kHttpsFirstModeV2ForEngagedSites)},
9453 {"https-upgrades", flag_descriptions::kHttpsUpgradesName,
9454 flag_descriptions::kHttpsUpgradesDescription, kOsDesktop | kOsAndroid,
9455 FEATURE_VALUE_TYPE(features::kHttpsUpgrades)},
9457 #if BUILDFLAG(IS_ANDROID)
9458 {"omnibox-2023-refresh-connection-security-indicators",
9459 flag_descriptions::kOmnibox2023RefreshConnectionSecurityIndicatorsName,
9461 kOmnibox2023RefreshConnectionSecurityIndicatorsDescription,
9463 FEATURE_VALUE_TYPE(omnibox::kUpdatedConnectionSecurityIndicators)},
9464 #endif // BUILDFLAG(IS_ANDROID)
9466 {"enable-drdc", flag_descriptions::kEnableDrDcName,
9467 flag_descriptions::kEnableDrDcDescription, kOsAll,
9468 FEATURE_VALUE_TYPE(features::kEnableDrDc)},
9470 {"force-gpu-main-thread-to-normal-priority-drdc",
9471 flag_descriptions::kForceGpuMainThreadToNormalPriorityDrDcName,
9472 flag_descriptions::kForceGpuMainThreadToNormalPriorityDrDcDescription,
9474 FEATURE_VALUE_TYPE(features::kForceGpuMainThreadToNormalPriorityDrDc)},
9476 #if BUILDFLAG(IS_CHROMEOS_ASH)
9477 {"traffic-counters", flag_descriptions::kTrafficCountersEnabledName,
9478 flag_descriptions::kTrafficCountersEnabledDescription, kOsCrOS,
9479 FEATURE_VALUE_TYPE(ash::features::kTrafficCountersEnabled)},
9480 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9482 #if BUILDFLAG(ENABLE_EXTENSIONS)
9483 {"extensions-menu-access-control",
9484 flag_descriptions::kExtensionsMenuAccessControlName,
9485 flag_descriptions::kExtensionsMenuAccessControlDescription, kOsDesktop,
9486 FEATURE_VALUE_TYPE(extensions_features::kExtensionsMenuAccessControl)},
9488 {"iph-extensions-menu-feature",
9489 flag_descriptions::kIPHExtensionsMenuFeatureName,
9490 flag_descriptions::kIPHExtensionsMenuFeatureDescription, kOsDesktop,
9491 FEATURE_VALUE_TYPE(feature_engagement::kIPHExtensionsMenuFeature)},
9493 {"iph-extensions-request-access-button-feature",
9494 flag_descriptions::kIPHExtensionsRequestAccessButtonFeatureName,
9495 flag_descriptions::kIPHExtensionsRequestAccessButtonFeatureDescription,
9498 feature_engagement::kIPHExtensionsRequestAccessButtonFeature)},
9500 #if BUILDFLAG(IS_CHROMEOS)
9501 {"extension-web-file-handlers",
9502 flag_descriptions::kExtensionWebFileHandlersName,
9503 flag_descriptions::kExtensionWebFileHandlersDescription, kOsCrOS,
9504 FEATURE_VALUE_TYPE(extensions_features::kExtensionWebFileHandlers)},
9505 #endif // IS_CHROMEOS
9506 #if BUILDFLAG(IS_WIN)
9507 {"launch-windows-native-hosts-directly",
9508 flag_descriptions::kLaunchWindowsNativeHostsDirectlyName,
9509 flag_descriptions::kLaunchWindowsNativeHostsDirectlyDescription, kOsWin,
9511 extensions_features::kLaunchWindowsNativeHostsDirectly)},
9513 #endif // ENABLE_EXTENSIONS
9515 {"canvas-oop-rasterization", flag_descriptions::kCanvasOopRasterizationName,
9516 flag_descriptions::kCanvasOopRasterizationDescription, kOsAll,
9517 FEATURE_VALUE_TYPE(features::kCanvasOopRasterization)},
9519 {"skia-graphite", flag_descriptions::kSkiaGraphiteName,
9520 flag_descriptions::kSkiaGraphiteDescription, kOsAll,
9521 FEATURE_VALUE_TYPE(features::kSkiaGraphite)},
9523 #if BUILDFLAG(IS_ANDROID)
9524 {"bookmarks-improved-save-flow",
9525 flag_descriptions::kBookmarksImprovedSaveFlowName,
9526 flag_descriptions::kBookmarksImprovedSaveFlowDescription, kOsAndroid,
9527 FEATURE_VALUE_TYPE(chrome::android::kBookmarksImprovedSaveFlow)},
9529 {"bookmarks-refresh", flag_descriptions::kBookmarksRefreshName,
9530 flag_descriptions::kBookmarksRefreshDescription, kOsAndroid,
9531 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kBookmarksRefresh,
9532 kBookmarksRefreshVariations,
9536 {"enable-tab-audio-muting", flag_descriptions::kTabAudioMutingName,
9537 flag_descriptions::kTabAudioMutingDescription, kOsDesktop,
9538 FEATURE_VALUE_TYPE(media::kEnableTabMuting)},
9540 {"upcoming-follow-features", flag_descriptions::kUpcomingFollowFeaturesName,
9541 flag_descriptions::kUpcomingFollowFeaturesDescription, kOsAll,
9542 FEATURE_VALUE_TYPE(follow::kUpcomingFollowFeatures)},
9544 #if defined(TOOLKIT_VIEWS)
9545 {"side-search", flag_descriptions::kSideSearchName,
9546 flag_descriptions::kSideSearchDescription, kOsDesktop,
9547 FEATURE_VALUE_TYPE(features::kSideSearch)},
9549 {"search-web-in-side-panel", flag_descriptions::kSearchWebInSidePanelName,
9550 flag_descriptions::kSearchWebInSidePanelDescription, kOsDesktop,
9551 FEATURE_VALUE_TYPE(features::kSearchWebInSidePanel)},
9552 #endif // defined(TOOLKIT_VIEWS)
9554 #if !BUILDFLAG(IS_ANDROID)
9555 {"customize-chrome-side-panel",
9556 flag_descriptions::kCustomizeChromeSidePanelName,
9557 flag_descriptions::KCustomizeChromeSidePanelDescription, kOsDesktop,
9558 FEATURE_VALUE_TYPE(features::kCustomizeChromeSidePanel)},
9560 {"customize-chrome-color-extraction",
9561 flag_descriptions::kCustomizeChromeColorExtractionName,
9562 flag_descriptions::kCustomizeChromeColorExtractionDescription, kOsDesktop,
9563 FEATURE_VALUE_TYPE(ntp_features::kCustomizeChromeColorExtraction)},
9565 {"customize-chrome-side-panel-extensions-card",
9566 flag_descriptions::kCustomizeChromeSidePanelExtensionsCardName,
9567 flag_descriptions::kCustomizeChromeSidePanelExtensionsCardDescription,
9569 FEATURE_VALUE_TYPE(ntp_features::kCustomizeChromeSidePanelExtensionsCard)},
9571 {"customize-chrome-wallpaper-search",
9572 flag_descriptions::kCustomizeChromeWallpaperSearchName,
9573 flag_descriptions::kCustomizeChromeWallpaperSearchDescription, kOsDesktop,
9574 FEATURE_VALUE_TYPE(ntp_features::kCustomizeChromeWallpaperSearch)},
9577 #if BUILDFLAG(IS_CHROMEOS_ASH)
9578 {"enable-component-updater-test-request",
9579 flag_descriptions::kComponentUpdaterTestRequestName,
9580 flag_descriptions::kComponentUpdaterTestRequestDescription, kOsCrOS,
9581 SINGLE_VALUE_TYPE_AND_VALUE(switches::kComponentUpdater,
9582 component_updater::kSwitchTestRequestParam)},
9585 {"enable-raw-draw", flag_descriptions::kEnableRawDrawName,
9586 flag_descriptions::kEnableRawDrawDescription, kOsAll,
9587 FEATURE_VALUE_TYPE(features::kRawDraw)},
9589 #if BUILDFLAG(IS_CHROMEOS_LACROS)
9590 {"enable-delegated-compositing",
9591 flag_descriptions::kEnableDelegatedCompositingName,
9592 flag_descriptions::kEnableDelegatedCompositingDescription, kOsAll,
9593 FEATURE_VALUE_TYPE(features::kDelegatedCompositing)},
9596 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \
9597 BUILDFLAG(IS_CHROMEOS_ASH)
9598 {"document-picture-in-picture-api",
9599 flag_descriptions::kDocumentPictureInPictureApiName,
9600 flag_descriptions::kDocumentPictureInPictureApiDescription,
9601 kOsMac | kOsWin | kOsLinux | kOsCrOS,
9602 FEATURE_VALUE_TYPE(blink::features::kDocumentPictureInPictureAPI)},
9604 {"media-session-enter-picture-in-picture",
9605 flag_descriptions::kMediaSessionEnterPictureInPictureName,
9606 flag_descriptions::kMediaSessionEnterPictureInPictureDescription,
9607 kOsMac | kOsWin | kOsLinux | kOsCrOS,
9608 FEATURE_VALUE_TYPE(blink::features::kMediaSessionEnterPictureInPicture)},
9609 #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) ||
9610 // BUILDFLAG(IS_CHROMEOS_ASH)
9612 {"web-midi", flag_descriptions::kWebMidiName,
9613 flag_descriptions::kWebMidiDescription, kOsAll,
9614 FEATURE_VALUE_TYPE(features::kWebMidi)},
9616 #if BUILDFLAG(IS_CHROMEOS_ASH)
9617 {"dns-over-https-with-identifiers-reuse-old-policy",
9618 flag_descriptions::kDnsOverHttpsWithIdentifiersReuseOldPolicyName,
9619 flag_descriptions::kDnsOverHttpsWithIdentifiersReuseOldPolicyDescription,
9622 ash::features::kDnsOverHttpsWithIdentifiersReuseOldPolicy)},
9625 {"enable-commerce-developer", flag_descriptions::kCommerceDeveloperName,
9626 flag_descriptions::kCommerceDeveloperDescription, kOsAll,
9627 FEATURE_VALUE_TYPE(commerce::kCommerceDeveloper)},
9629 #if BUILDFLAG(IS_CHROMEOS_ASH)
9630 {"enable-libinput-to-handle-touchpad",
9631 flag_descriptions::kEnableLibinputToHandleTouchpadName,
9632 flag_descriptions::kEnableLibinputToHandleTouchpadDescription, kOsCrOS,
9633 FEATURE_VALUE_TYPE(ui::kLibinputHandleTouchpad)},
9634 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9636 #if BUILDFLAG(IS_CHROMEOS_ASH)
9637 {"enable-desks-templates", flag_descriptions::kDesksTemplatesName,
9638 flag_descriptions::kDesksTemplatesDescription, kOsCrOS,
9639 FEATURE_VALUE_TYPE(ash::features::kDesksTemplates)},
9642 {"large-favicon-from-google",
9643 flag_descriptions::kLargeFaviconFromGoogleName,
9644 flag_descriptions::kLargeFaviconFromGoogleDescription, kOsAndroid,
9645 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kLargeFaviconFromGoogle,
9646 kLargeFaviconFromGoogleVariations,
9647 "LargeFaviconFromGoogle")},
9649 #if BUILDFLAG(IS_ANDROID)
9650 {"force-off-text-autosizing",
9651 flag_descriptions::kForceOffTextAutosizingName,
9652 flag_descriptions::kForceOffTextAutosizingDescription, kOsAndroid,
9653 FEATURE_VALUE_TYPE(features::kForceOffTextAutosizing)},
9656 #if BUILDFLAG(IS_CHROMEOS_ASH)
9657 {"video-conference", flag_descriptions::kVideoConferenceName,
9658 flag_descriptions::kVideoConferenceDescription, kOsCrOS,
9659 FEATURE_VALUE_TYPE(ash::features::kVideoConference)},
9661 {"vc-background-replace", flag_descriptions::kVcBackgroundReplaceName,
9662 flag_descriptions::kVcBackgroundReplaceDescription, kOsCrOS,
9663 FEATURE_VALUE_TYPE(ash::features::kVcBackgroundReplace)},
9665 {"vc-segmentation-model", flag_descriptions::kVcSegmentationModelName,
9666 flag_descriptions::kVcSegmentationModelDescription, kOsCrOS,
9667 FEATURE_WITH_PARAMS_VALUE_TYPE(ash::features::kVcSegmentationModel,
9668 kVcSegmentationModelVariations,
9669 "VCSegmentationModel")},
9670 {"vc-light-intensity", flag_descriptions::kVcLightIntensityName,
9671 flag_descriptions::kVcLightIntensityDescription, kOsCrOS,
9672 FEATURE_WITH_PARAMS_VALUE_TYPE(ash::features::kVcLightIntensity,
9673 kVcLightIntensityVariations,
9674 "VCLightIntensity")},
9675 {"vc-web-api", flag_descriptions::kVcWebApiName,
9676 flag_descriptions::kVcWebApiDescription, kOsCrOS,
9677 FEATURE_VALUE_TYPE(ash::features::kVcWebApi)},
9681 #if BUILDFLAG(IS_ANDROID)
9682 {"touch-drag-and-context-menu",
9683 flag_descriptions::kTouchDragAndContextMenuName,
9684 flag_descriptions::kTouchDragAndContextMenuDescription, kOsAndroid,
9685 FEATURE_VALUE_TYPE(features::kTouchDragAndContextMenu)},
9686 {"animated-image-drag-shadow",
9687 flag_descriptions::kAnimatedImageDragShadowName,
9688 flag_descriptions::kAnimatedImageDragShadowDescription, kOsAndroid,
9689 FEATURE_VALUE_TYPE(chrome::android::kAnimatedImageDragShadow)},
9690 {"drag-drop-into-omnibox", flag_descriptions::kDragDropIntoOmniboxName,
9691 flag_descriptions::kDragDropIntoOmniboxDescription, kOsAndroid,
9692 FEATURE_VALUE_TYPE(chrome::android::kDragDropIntoOmnibox)},
9693 #endif // BUILDFLAG(IS_ANDROID)
9695 {"autofill-enable-update-virtual-card-enrollment",
9696 flag_descriptions::kAutofillEnableUpdateVirtualCardEnrollmentName,
9697 flag_descriptions::kAutofillEnableUpdateVirtualCardEnrollmentDescription,
9700 autofill::features::kAutofillEnableUpdateVirtualCardEnrollment)},
9702 {"autofill-move-legal-terms-and-icon-for-new-card-enrollment",
9703 flag_descriptions::kAutofillMoveLegalTermsAndIconForNewCardEnrollmentName,
9705 kAutofillMoveLegalTermsAndIconForNewCardEnrollmentDescription,
9708 autofill::features::
9709 kAutofillMoveLegalTermsAndIconForNewCardEnrollment)},
9711 #if BUILDFLAG(IS_CHROMEOS_ASH)
9712 {"lacros-shared-components-dir",
9713 flag_descriptions::kLacrosSharedComponentsDirName,
9714 flag_descriptions::kLacrosSharedComponentsDirDescription, kOsCrOS,
9715 FEATURE_VALUE_TYPE(features::kLacrosSharedComponentsDir)},
9718 #if BUILDFLAG(IS_CHROMEOS_LACROS)
9719 {"lacros-merge-icu-data-file",
9720 flag_descriptions::kLacrosMergeIcuDataFileName,
9721 flag_descriptions::kLacrosMergeIcuDataFileDescription, kOsCrOS | kOsLacros,
9722 FEATURE_VALUE_TYPE(base::i18n::kLacrosMergeIcuDataFile)},
9725 #if !BUILDFLAG(IS_ANDROID)
9726 // TODO(https://crbug.com/1443349): Add Windows once library supports it.
9727 {"layout-extraction", flag_descriptions::kLayoutExtractionName,
9728 flag_descriptions::kLayoutExtractionDescription,
9729 kOsMac | kOsLinux | kOsCrOS | kOsLacros,
9730 FEATURE_VALUE_TYPE(features::kLayoutExtraction)},
9733 {"origin-agent-cluster-default",
9734 flag_descriptions::kOriginAgentClusterDefaultName,
9735 flag_descriptions::kOriginAgentClusterDefaultDescription, kOsAll,
9736 FEATURE_VALUE_TYPE(blink::features::kOriginAgentClusterDefaultEnabled)},
9738 {"origin-keyed-processes-by-default",
9739 flag_descriptions::kOriginKeyedProcessesByDefaultName,
9740 flag_descriptions::kOriginKeyedProcessesByDefaultDescription, kOsAll,
9741 FEATURE_VALUE_TYPE(features::kOriginKeyedProcessesByDefault)},
9743 #if !BUILDFLAG(IS_ANDROID)
9744 {"enable-code-based-rbd", flag_descriptions::kCodeBasedRBDName,
9745 flag_descriptions::kCodeBasedRBDDescription, kOsDesktop,
9746 FEATURE_WITH_PARAMS_VALUE_TYPE(commerce::kCodeBasedRBD,
9747 kCodeBasedRBDVariations,
9750 {"enable-discount-consent-v2", flag_descriptions::kDiscountConsentV2Name,
9751 flag_descriptions::kDiscountConsentV2Description, kOsDesktop,
9752 FEATURE_WITH_PARAMS_VALUE_TYPE(commerce::kDiscountConsentV2,
9753 kDiscountConsentV2Variations,
9754 "DiscountConsentV2")},
9756 {"enable-merchant-wide-promotions",
9757 flag_descriptions::kMerchantWidePromotionsName,
9758 flag_descriptions::kMerchantWidePromotionsDescription, kOsDesktop,
9759 FEATURE_WITH_PARAMS_VALUE_TYPE(commerce::kMerchantWidePromotion,
9760 kMerchantWidePromotionVariations,
9761 "MerchantWidePromotion")},
9764 {"edit-context", flag_descriptions::kEditContextName,
9765 flag_descriptions::kEditContextDescription, kOsAll,
9766 FEATURE_VALUE_TYPE(blink::features::kEditContext)},
9767 #if BUILDFLAG(IS_CHROMEOS_ASH)
9768 {"enable-fake-keyboard-heuristic",
9769 flag_descriptions::kEnableFakeKeyboardHeuristicName,
9770 flag_descriptions::kEnableFakeKeyboardHeuristicDescription, kOsCrOS,
9771 FEATURE_VALUE_TYPE(ui::kEnableFakeKeyboardHeuristic)},
9772 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9773 #if !BUILDFLAG(IS_ANDROID)
9774 {"enable-isolated-sandboxed-iframes",
9775 flag_descriptions::kIsolatedSandboxedIframesName,
9776 flag_descriptions::kIsolatedSandboxedIframesDescription, kOsDesktop,
9777 FEATURE_WITH_PARAMS_VALUE_TYPE(
9778 blink::features::kIsolateSandboxedIframes,
9779 kIsolateSandboxedIframesGroupingVariations,
9780 "IsolateSandboxedIframes" /* trial name */)},
9783 {"download-warning-improvements",
9784 flag_descriptions::kDownloadWarningImprovementsName,
9785 flag_descriptions::kDownloadWarningImprovementsDescription,
9786 kOsLinux | kOsLacros | kOsMac | kOsWin | kOsCrOS,
9787 MULTI_VALUE_TYPE(kDownloadWarningImprovementsChoices)},
9789 {"unthrottled-nested-timeout",
9790 flag_descriptions::kUnthrottledNestedTimeoutName,
9791 flag_descriptions::kUnthrottledNestedTimeoutDescription, kOsAll,
9792 FEATURE_WITH_PARAMS_VALUE_TYPE(
9793 blink::features::kMaxUnthrottledTimeoutNestingLevel,
9794 kUnthrottledNestedTimeout_Variations,
9797 {"reduce-accept-language", flag_descriptions::kReduceAcceptLanguageName,
9798 flag_descriptions::kReduceAcceptLanguageDescription, kOsAll,
9799 FEATURE_VALUE_TYPE(network::features::kReduceAcceptLanguage)},
9801 #if BUILDFLAG(IS_CHROMEOS_ASH)
9802 {"enable-variable-refresh-rate",
9803 flag_descriptions::kEnableVariableRefreshRateName,
9804 flag_descriptions::kEnableVariableRefreshRateDescription, kOsCrOS,
9805 FEATURE_VALUE_TYPE(features::kEnableVariableRefreshRate)},
9807 {"enable-variable-refresh-rate-always-on",
9808 flag_descriptions::kEnableVariableRefreshRateAlwaysOnName,
9809 flag_descriptions::kEnableVariableRefreshRateAlwaysOnDescription, kOsCrOS,
9810 FEATURE_VALUE_TYPE(features::kEnableVariableRefreshRateAlwaysOn)},
9812 {"enable-projector-app-debug", flag_descriptions::kProjectorAppDebugName,
9813 flag_descriptions::kProjectorAppDebugDescription, kOsCrOS,
9814 FEATURE_VALUE_TYPE(ash::features::kProjectorAppDebug)},
9816 {kProjectorServerSideSpeechRecognition,
9817 flag_descriptions::kProjectorServerSideSpeechRecognitionName,
9818 flag_descriptions::kProjectorServerSideSpeechRecognitionDescription,
9820 FEATURE_VALUE_TYPE(ash::features::kInternalServerSideSpeechRecognition)},
9821 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9823 {"web-sql-access", flag_descriptions::kWebSQLAccessName,
9824 flag_descriptions::kWebSQLAccessDescription, kOsAll,
9825 FEATURE_VALUE_TYPE(blink::features::kWebSQLAccess)},
9827 {"omit-cors-client-cert", flag_descriptions::kOmitCorsClientCertName,
9828 flag_descriptions::kOmitCorsClientCertDescription, kOsAll,
9829 FEATURE_VALUE_TYPE(network::features::kOmitCorsClientCert)},
9831 {"use-idna2008-non-transitional",
9832 flag_descriptions::kUseIDNA2008NonTransitionalName,
9833 flag_descriptions::kUseIDNA2008NonTransitionalDescription, kOsAll,
9834 FEATURE_VALUE_TYPE(url::kUseIDNA2008NonTransitional)},
9836 #if BUILDFLAG(IS_CHROMEOS)
9837 {"sync-chromeos-explicit-passphrase-sharing",
9838 flag_descriptions::kSyncChromeOSExplicitPassphraseSharingName,
9839 flag_descriptions::kSyncChromeOSExplicitPassphraseSharingDescription,
9840 kOsCrOS | kOsLacros,
9841 FEATURE_VALUE_TYPE(syncer::kSyncChromeOSExplicitPassphraseSharing)},
9844 #if BUILDFLAG(IS_CHROMEOS_ASH)
9845 {"always-enable-hdcp", flag_descriptions::kAlwaysEnableHdcpName,
9846 flag_descriptions::kAlwaysEnableHdcpDescription, kOsCrOS,
9847 MULTI_VALUE_TYPE(kAlwaysEnableHdcpChoices)},
9848 {"throttle-ambient-animations",
9849 flag_descriptions::kAmbientModeThrottleAnimationName,
9850 flag_descriptions::kAmbientModeThrottleAnimationDescription, kOsCrOS,
9851 FEATURE_VALUE_TYPE(ash::features::kAmbientModeThrottleAnimation)},
9852 {"enable-touchpads-in-diagnostics-app",
9853 flag_descriptions::kEnableTouchpadsInDiagnosticsAppName,
9854 flag_descriptions::kEnableTouchpadsInDiagnosticsAppDescription, kOsCrOS,
9855 FEATURE_VALUE_TYPE(ash::features::kEnableTouchpadsInDiagnosticsApp)},
9856 {"enable-touchscreens-in-diagnostics-app",
9857 flag_descriptions::kEnableTouchscreensInDiagnosticsAppName,
9858 flag_descriptions::kEnableTouchscreensInDiagnosticsAppDescription, kOsCrOS,
9859 FEATURE_VALUE_TYPE(ash::features::kEnableTouchscreensInDiagnosticsApp)},
9860 {"enable-external-keyboards-in-diagnostics-app",
9861 flag_descriptions::kEnableExternalKeyboardsInDiagnosticsAppName,
9862 flag_descriptions::kEnableExternalKeyboardsInDiagnosticsAppDescription,
9864 FEATURE_VALUE_TYPE(ash::features::kEnableExternalKeyboardsInDiagnostics)},
9865 {"enable-power-sounds", flag_descriptions::kSystemSoundsName,
9866 flag_descriptions::kSystemSoundsDescription, kOsCrOS,
9867 FEATURE_VALUE_TYPE(ash::features::kSystemSounds)},
9868 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
9870 {"autofill-enable-virtual-card-metadata",
9871 flag_descriptions::kAutofillEnableVirtualCardMetadataName,
9872 flag_descriptions::kAutofillEnableVirtualCardMetadataDescription, kOsAll,
9874 autofill::features::kAutofillEnableVirtualCardMetadata)},
9876 #if BUILDFLAG(IS_ANDROID)
9877 {"password-edit-dialog-with-details",
9878 flag_descriptions::kPasswordEditDialogWithDetailsName,
9879 flag_descriptions::kPasswordEditDialogWithDetailsDescription, kOsAndroid,
9881 password_manager::features::kPasswordEditDialogWithDetails)},
9883 {"password-suggestion-bottom-sheet-v2",
9884 flag_descriptions::kPasswordSuggestionBottomSheetV2Name,
9885 flag_descriptions::kPasswordSuggestionBottomSheetV2Description, kOsAndroid,
9887 password_manager::features::kPasswordSuggestionBottomSheetV2)},
9889 {"pwa-restore-ui", flag_descriptions::kPwaRestoreUiName,
9890 flag_descriptions::kPwaRestoreUiDescription, kOsAndroid,
9891 FEATURE_VALUE_TYPE(ui::kPwaRestoreUi)},
9892 #endif // BUILDFLAG(IS_ANDROID)
9893 {"autofill-enable-ranking-formula-address-profiles",
9894 flag_descriptions::kAutofillEnableRankingFormulaAddressProfilesName,
9895 flag_descriptions::kAutofillEnableRankingFormulaAddressProfilesDescription,
9898 autofill::features::kAutofillEnableRankingFormulaAddressProfiles)},
9900 {"autofill-enable-ranking-formula-credit-cards",
9901 flag_descriptions::kAutofillEnableRankingFormulaCreditCardsName,
9902 flag_descriptions::kAutofillEnableRankingFormulaCreditCardsDescription,
9905 autofill::features::kAutofillEnableRankingFormulaCreditCards)},
9907 {"autofill-enable-virtual-card-fido-enrollment",
9908 flag_descriptions::kAutofillEnableVirtualCardFidoEnrollmentName,
9909 flag_descriptions::kAutofillEnableVirtualCardFidoEnrollmentDescription,
9912 autofill::features::kAutofillEnableVirtualCardFidoEnrollment)},
9913 {"autofill-upstream-allow-additional-email-domains",
9914 flag_descriptions::kAutofillUpstreamAllowAdditionalEmailDomainsName,
9915 flag_descriptions::kAutofillUpstreamAllowAdditionalEmailDomainsDescription,
9918 autofill::features::kAutofillUpstreamAllowAdditionalEmailDomains)},
9919 {"autofill-upstream-allow-all-email-domains",
9920 flag_descriptions::kAutofillUpstreamAllowAllEmailDomainsName,
9921 flag_descriptions::kAutofillUpstreamAllowAllEmailDomainsDescription,
9924 autofill::features::kAutofillUpstreamAllowAllEmailDomains)},
9926 #if BUILDFLAG(IS_ANDROID)
9927 {"safe-browsing-hash-prefix",
9928 flag_descriptions::kSafeBrowsingHashPrefixRealTimeLookupsName,
9929 flag_descriptions::kSafeBrowsingHashPrefixRealTimeLookupsDescription,
9930 kOsAndroid, FEATURE_VALUE_TYPE(safe_browsing::kHashPrefixRealTimeLookups)},
9931 #endif // BUILDFLAG(IS_ANDROID)
9933 #if !BUILDFLAG(IS_ANDROID)
9934 {"safety-check-notification-permissions",
9935 flag_descriptions::kSafetyCheckNotificationPermissionsName,
9936 flag_descriptions::kSafetyCheckNotificationPermissionsDescription,
9938 FEATURE_VALUE_TYPE(features::kSafetyCheckNotificationPermissions)},
9940 {"notification-interaction-history",
9941 flag_descriptions::kNotificationInteractionHistoryName,
9942 flag_descriptions::kNotificationInteractionHistoryDescription, kOsDesktop,
9944 permissions::features::kNotificationInteractionHistory)},
9946 {"safety-check-unused-site-permissions",
9947 flag_descriptions::kSafetyCheckUnusedSitePermissionsName,
9948 flag_descriptions::kSafetyCheckUnusedSitePermissionsDescription,
9950 FEATURE_WITH_PARAMS_VALUE_TYPE(
9951 content_settings::features::kSafetyCheckUnusedSitePermissions,
9952 kSafetyCheckUnusedSitePermissionsVariations,
9953 "SafetyCheckUnusedSitePermissions")},
9955 {"record-permission-expiration-timestamps",
9956 flag_descriptions::kRecordPermissionExpirationTimestampsName,
9957 flag_descriptions::kRecordPermissionExpirationTimestampsDescription,
9960 permissions::features::kRecordPermissionExpirationTimestamps)},
9962 {"safety-hub", flag_descriptions::kSafetyHubName,
9963 flag_descriptions::kSafetyHubDescription, kOsDesktop,
9964 FEATURE_VALUE_TYPE(features::kSafetyHub)},
9965 #endif // !BUILDFLAG(IS_ANDROID)
9967 #if BUILDFLAG(IS_ANDROID)
9968 {"enable-commerce-hint-android",
9969 flag_descriptions::kCommerceHintAndroidName,
9970 flag_descriptions::kCommerceHintAndroidDescription, kOsAndroid,
9971 FEATURE_VALUE_TYPE(commerce::kCommerceHintAndroid)},
9974 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
9975 {"enable-web-bluetooth-confirm-pairing-support",
9976 flag_descriptions::kWebBluetoothConfirmPairingSupportName,
9977 flag_descriptions::kWebBluetoothConfirmPairingSupportDescription,
9979 FEATURE_VALUE_TYPE(device::features::kWebBluetoothConfirmPairingSupport)},
9980 #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
9982 {"quick-intensive-throttling-after-loading",
9983 flag_descriptions::kQuickIntensiveWakeUpThrottlingAfterLoadingName,
9984 flag_descriptions::kQuickIntensiveWakeUpThrottlingAfterLoadingDescription,
9987 blink::features::kQuickIntensiveWakeUpThrottlingAfterLoading)},
9989 #if BUILDFLAG(IS_MAC)
9990 {"swap-backquote-keys-in-iso-keyboard",
9991 flag_descriptions::kSwapBackquoteKeysInISOKeyboardName,
9992 flag_descriptions::kSwapBackquoteKeysInISOKeyboardDescription, kOsMac,
9993 FEATURE_VALUE_TYPE(features::kSwapBackquoteKeysInISOKeyboard)},
9995 {"system-color-chooser", flag_descriptions::kSystemColorChooserName,
9996 flag_descriptions::kSystemColorChooserDescription, kOsMac,
9997 FEATURE_VALUE_TYPE(blink::features::kSystemColorChooser)},
9998 #endif // BUILDFLAG(IS_MAC)
10000 {"ignore-sync-encryption-keys-long-missing",
10001 flag_descriptions::kIgnoreSyncEncryptionKeysLongMissingName,
10002 flag_descriptions::kIgnoreSyncEncryptionKeysLongMissingDescription, kOsAll,
10003 FEATURE_VALUE_TYPE(syncer::kIgnoreSyncEncryptionKeysLongMissing)},
10005 #if BUILDFLAG(IS_ANDROID)
10006 {"autofill-enable-fido-progress-dialog",
10007 flag_descriptions::kAutofillEnableFIDOProgressDialogName,
10008 flag_descriptions::kAutofillEnableFIDOProgressDialogDescription,
10010 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableFIDOProgressDialog)},
10011 #endif // BUILDFLAG(IS_ANDROID)
10013 {"enable-perfetto-system-tracing",
10014 flag_descriptions::kEnablePerfettoSystemTracingName,
10015 flag_descriptions::kEnablePerfettoSystemTracingDescription, kOsAndroid,
10016 FEATURE_VALUE_TYPE(features::kEnablePerfettoSystemTracing)},
10018 #if BUILDFLAG(IS_ANDROID)
10019 {"enable-android-gamepad-vibration",
10020 flag_descriptions::kEnableAndroidGamepadVibrationName,
10021 flag_descriptions::kEnableAndroidGamepadVibrationDescription, kOsAndroid,
10022 FEATURE_VALUE_TYPE(features::kEnableAndroidGamepadVibration)},
10023 #endif // BUILDFLAG(IS_ANDROID)
10025 #if BUILDFLAG(IS_ANDROID)
10026 {"request-desktop-site-additions",
10027 flag_descriptions::kRequestDesktopSiteAdditionsName,
10028 flag_descriptions::kRequestDesktopSiteAdditionsDescription, kOsAndroid,
10029 FEATURE_VALUE_TYPE(features::kRequestDesktopSiteAdditions)},
10030 #endif // BUILDFLAG(IS_ANDROID)
10032 #if BUILDFLAG(IS_ANDROID)
10033 {"request-desktop-site-defaults",
10034 flag_descriptions::kRequestDesktopSiteDefaultsName,
10035 flag_descriptions::kRequestDesktopSiteDefaultsDescription, kOsAndroid,
10036 FEATURE_VALUE_TYPE(chrome::android::kRequestDesktopSiteDefaults)},
10037 #endif // BUILDFLAG(IS_ANDROID)
10039 #if BUILDFLAG(IS_ANDROID)
10040 {"request-desktop-site-defaults-downgrade",
10041 flag_descriptions::kRequestDesktopSiteDefaultsDowngradeName,
10042 flag_descriptions::kRequestDesktopSiteDefaultsDowngradeDescription,
10044 FEATURE_VALUE_TYPE(chrome::android::kRequestDesktopSiteDefaultsDowngrade)},
10045 #endif // BUILDFLAG(IS_ANDROID)
10047 #if BUILDFLAG(IS_ANDROID)
10048 {"request-desktop-site-defaults-logging",
10049 flag_descriptions::kRequestDesktopSiteDefaultsLoggingName,
10050 flag_descriptions::kRequestDesktopSiteDefaultsLoggingDescription,
10052 FEATURE_VALUE_TYPE(chrome::android::kRequestDesktopSiteDefaultsLogging)},
10053 #endif // BUILDFLAG(IS_ANDROID)
10055 #if BUILDFLAG(IS_ANDROID)
10056 {"request-desktop-site-window-setting",
10057 flag_descriptions::kRequestDesktopSiteWindowSettingName,
10058 flag_descriptions::kRequestDesktopSiteWindowSettingDescription, kOsAndroid,
10059 FEATURE_VALUE_TYPE(features::kRequestDesktopSiteWindowSetting)},
10060 #endif // BUILDFLAG(IS_ANDROID)
10062 #if BUILDFLAG(IS_ANDROID)
10063 {"request-desktop-site-zoom",
10064 flag_descriptions::kRequestDesktopSiteZoomName,
10065 flag_descriptions::kRequestDesktopSiteZoomDescription, kOsAndroid,
10066 FEATURE_VALUE_TYPE(features::kRequestDesktopSiteZoom)},
10067 #endif // BUILDFLAG(IS_ANDROID)
10069 #if !BUILDFLAG(IS_ANDROID)
10070 {"enable-web-hid-on-extension-service-worker",
10071 flag_descriptions::kEnableWebHidOnExtensionServiceWorkerName,
10072 flag_descriptions::kEnableWebHidOnExtensionServiceWorkerDescription,
10074 FEATURE_VALUE_TYPE(features::kEnableWebHidOnExtensionServiceWorker)},
10077 {"autofill-enable-remade-downstream-metrics",
10078 flag_descriptions::kAutofillEnableRemadeDownstreamMetricsName,
10079 flag_descriptions::kAutofillEnableRemadeDownstreamMetricsDescription,
10081 FEATURE_VALUE_TYPE(
10082 autofill::features::kAutofillEnableRemadeDownstreamMetrics)},
10084 #if BUILDFLAG(IS_CHROMEOS_ASH)
10085 {"enable-seamless-refresh-rate-switching",
10086 flag_descriptions::kEnableSeamlessRefreshRateSwitchingName,
10087 flag_descriptions::kEnableSeamlessRefreshRateSwitchingDescription, kOsCrOS,
10088 FEATURE_VALUE_TYPE(ash::features::kSeamlessRefreshRateSwitching)},
10089 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10091 {"click-to-call", flag_descriptions::kClickToCallName,
10092 flag_descriptions::kClickToCallDescription, kOsAll,
10093 FEATURE_VALUE_TYPE(kClickToCall)},
10095 {"clipboard-unsanitized-content",
10096 flag_descriptions::kClipboardUnsanitizedContentName,
10097 flag_descriptions::kClipboardUnsanitizedContentDescription, kOsAll,
10098 FEATURE_VALUE_TYPE(blink::features::kClipboardUnsanitizedContent)},
10100 {"clipboard-well-formed-html-sanitization-write",
10101 flag_descriptions::kClipboardWellFormedHtmlSanitizationWriteName,
10102 flag_descriptions::kClipboardWellFormedHtmlSanitizationWriteDescription,
10104 FEATURE_VALUE_TYPE(
10105 blink::features::kClipboardWellFormedHtmlSanitizationWrite)},
10107 {"clipboard-maximum-age", flag_descriptions::kClipboardMaximumAgeName,
10108 flag_descriptions::kClipboardMaximumAgeDescription, kOsAndroid,
10109 FEATURE_WITH_PARAMS_VALUE_TYPE(kClipboardMaximumAge,
10110 kClipboardMaximumAgeVariations,
10111 "ClipboardMaximumAge")},
10113 #if BUILDFLAG(IS_CHROMEOS_ASH)
10114 {"enable-media-dynamic-cgroup", flag_descriptions::kMediaDynamicCgroupName,
10115 flag_descriptions::kMediaDynamicCgroupDescription, kOsCrOS,
10116 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootMediaDynamicCgroup")},
10117 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10119 {"autofill-parse-vcn-card-on-file-standalone-cvc-fields",
10120 flag_descriptions::kAutofillParseVcnCardOnFileStandaloneCvcFieldsName,
10121 flag_descriptions::
10122 kAutofillParseVcnCardOnFileStandaloneCvcFieldsDescription,
10124 FEATURE_VALUE_TYPE(
10125 autofill::features::kAutofillParseVcnCardOnFileStandaloneCvcFields)},
10127 {"background-resource-fetch",
10128 flag_descriptions::kBackgroundResourceFetchName,
10129 flag_descriptions::kBackgroundResourceFetchDescription, kOsAll,
10130 FEATURE_VALUE_TYPE(blink::features::kBackgroundResourceFetch)},
10132 {"skip-service-worker-fetch-handler",
10133 flag_descriptions::kSkipServiceWorkerFetchHandlerName,
10134 flag_descriptions::kSkipServiceWorkerFetchHandlerDescription, kOsAll,
10135 FEATURE_WITH_PARAMS_VALUE_TYPE(
10136 features::kServiceWorkerSkipIgnorableFetchHandler,
10137 kServiceWorkerSkipIgnorableFetchHandlerVariations,
10138 "ServiceWorkerSkipIgnorableFetchHandler")},
10140 #if BUILDFLAG(IS_ANDROID)
10141 {"external-navigation-debug-logs",
10142 flag_descriptions::kExternalNavigationDebugLogsName,
10143 flag_descriptions::kExternalNavigationDebugLogsDescription, kOsAndroid,
10144 FEATURE_VALUE_TYPE(external_intents::kExternalNavigationDebugLogs)},
10147 #if !BUILDFLAG(IS_ANDROID)
10148 {"memory-saver-multi-state-mode",
10149 flag_descriptions::kHighEfficiencyMultistateModeAvailableName,
10150 flag_descriptions::kHighEfficiencyMultistateModeAvailableDescription,
10152 FEATURE_WITH_PARAMS_VALUE_TYPE(
10153 performance_manager::features::kHighEfficiencyMultistateMode,
10154 kHighEfficiencyMultistateModeVariations,
10155 "HighEfficiencyMultistateMode")},
10157 {"memory-saver-discarded-tab-treatment",
10158 flag_descriptions::kHighEfficiencyDiscardedTabTreatmentName,
10159 flag_descriptions::kHighEfficiencyDiscardedTabTreatmentDescription,
10161 FEATURE_WITH_PARAMS_VALUE_TYPE(
10162 performance_manager::features::kDiscardedTabTreatment,
10163 kDiscardedTabTreatmentVariations,
10164 "DiscardedTabTreatment")},
10166 {"memory-saver-memory-usage-in-hovercards",
10167 flag_descriptions::kHighEfficiencyMemoryUsageInHovercardsName,
10168 flag_descriptions::kHighEfficiencyMemoryUsageInHovercardsDescription,
10170 FEATURE_WITH_PARAMS_VALUE_TYPE(
10171 performance_manager::features::kMemoryUsageInHovercards,
10172 kMemoryUsageInHovercardsVariations,
10173 "MemoryUsageInHovercards")},
10175 {"memory-saver-discard-exceptions-improvements",
10176 flag_descriptions::kHighEfficiencyDiscardExceptionsImprovementsName,
10177 flag_descriptions::kHighEfficiencyDiscardExceptionsImprovementsDescription,
10179 FEATURE_VALUE_TYPE(
10180 performance_manager::features::kDiscardExceptionsImprovements)},
10182 {"memory-saver-savings-reporting-improvements",
10183 flag_descriptions::kHighEfficiencySavingsReportingImprovementsName,
10184 flag_descriptions::kHighEfficiencySavingsReportingImprovementsDescription,
10186 FEATURE_WITH_PARAMS_VALUE_TYPE(
10187 performance_manager::features::kMemorySavingsReportingImprovements,
10188 kHighEfficiencyMemorySavingsReportingVariations,
10189 "MemorySavingsReportingImprovements")},
10193 {"webui-omnibox-popup", flag_descriptions::kWebUIOmniboxPopupName,
10194 flag_descriptions::kWebUIOmniboxPopupDescription, kOsDesktop,
10195 FEATURE_VALUE_TYPE(omnibox::kWebUIOmniboxPopup)},
10197 #if BUILDFLAG(IS_CHROMEOS_ASH)
10198 {"arc-nearby-share-fuse-box", flag_descriptions::kArcNearbyShareFuseBoxName,
10199 flag_descriptions::kArcNearbyShareFuseBoxDescription, kOsCrOS,
10200 FEATURE_VALUE_TYPE(arc::kEnableArcNearbyShareFuseBox)},
10203 {"autofill-enable-card-art-image",
10204 flag_descriptions::kAutofillEnableCardArtImageName,
10205 flag_descriptions::kAutofillEnableCardArtImageDescription, kOsAll,
10206 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCardArtImage)},
10208 #if BUILDFLAG(IS_ANDROID)
10209 {"restore-tabs-on-fre", flag_descriptions::kRestoreTabsOnFREName,
10210 flag_descriptions::kRestoreTabsOnFREDescription, kOsAndroid,
10211 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kRestoreTabsOnFRE,
10212 kRestoreTabsOnFREVariations,
10213 "RestoreTabsOnFRE")},
10215 {"restore-synced-placeholder-tabs",
10216 flag_descriptions::kRestoreSyncedPlaceholderTabsName,
10217 flag_descriptions::kRestoreSyncedPlaceholderTabsDescription, kOsAndroid,
10218 FEATURE_VALUE_TYPE(syncer::kRestoreSyncedPlaceholderTabs)},
10220 {"context-menu-popup-for-all-screen-sizes",
10221 flag_descriptions::kContextMenuPopupForAllScreenSizesName,
10222 flag_descriptions::kContextMenuPopupForAllScreenSizesDescription,
10224 FEATURE_VALUE_TYPE(chrome::android::kContextMenuPopupForAllScreenSizes)},
10226 {"use-dmsaa-for-tiles", flag_descriptions::kUseDMSAAForTilesName,
10227 flag_descriptions::kUseDMSAAForTilesDescription, kOsAll,
10228 FEATURE_VALUE_TYPE(::features::kUseDMSAAForTiles)},
10230 #if BUILDFLAG(IS_ANDROID)
10231 {"use-dmsaa-for-tiles-android-gl",
10232 flag_descriptions::kUseDMSAAForTilesAndroidGLName,
10233 flag_descriptions::kUseDMSAAForTilesAndroidGLDescription, kOsAndroid,
10234 FEATURE_VALUE_TYPE(::features::kUseDMSAAForTilesAndroidGL)},
10236 {"enable-web-usb-on-extension-service-worker",
10237 flag_descriptions::kEnableWebUsbOnExtensionServiceWorkerName,
10238 flag_descriptions::kEnableWebUsbOnExtensionServiceWorkerDescription,
10239 kOsAndroid | kOsDesktop,
10240 FEATURE_VALUE_TYPE(features::kEnableWebUsbOnExtensionServiceWorker)},
10242 #if BUILDFLAG(IS_CHROMEOS_ASH)
10243 {"enable-holding-space-predictability",
10244 flag_descriptions::kHoldingSpacePredictabilityName,
10245 flag_descriptions::kHoldingSpacePredictabilityDescription, kOsCrOS,
10246 FEATURE_VALUE_TYPE(ash::features::kHoldingSpacePredictability)},
10247 {"enable-holding-space-refresh",
10248 flag_descriptions::kHoldingSpaceRefreshName,
10249 flag_descriptions::kHoldingSpaceRefreshDescription, kOsCrOS,
10250 FEATURE_VALUE_TYPE(ash::features::kHoldingSpaceRefresh)},
10251 {"enable-holding-space-suggestions",
10252 flag_descriptions::kHoldingSpaceSuggestionsName,
10253 flag_descriptions::kHoldingSpaceSuggestionsDescription, kOsCrOS,
10254 FEATURE_VALUE_TYPE(ash::features::kHoldingSpaceSuggestions)},
10255 {"enable-welcome-tour", flag_descriptions::kWelcomeTourName,
10256 flag_descriptions::kWelcomeTourDescription, kOsCrOS,
10257 FEATURE_VALUE_TYPE(ash::features::kWelcomeTour)},
10258 {"enable-welcome-tour-force-user-eligibility",
10259 flag_descriptions::kWelcomeTourForceUserEligibilityName,
10260 flag_descriptions::kWelcomeTourForceUserEligibilityDescription, kOsCrOS,
10261 FEATURE_VALUE_TYPE(ash::features::kWelcomeTourForceUserEligibility)},
10264 {"use-nat64-for-ipv4-literal",
10265 flag_descriptions::kUseNAT64ForIPv4LiteralName,
10266 flag_descriptions::kUseNAT64ForIPv4LiteralDescription, kOsAll,
10267 FEATURE_VALUE_TYPE(net::features::kUseNAT64ForIPv4Literal)},
10269 #if BUILDFLAG(IS_ANDROID)
10270 {"enable-passwords-account-storage",
10271 flag_descriptions::kEnablePasswordsAccountStorageName,
10272 flag_descriptions::kEnablePasswordsAccountStorageDescription, kOsAndroid,
10273 FEATURE_VALUE_TYPE(
10274 password_manager::features::kEnablePasswordsAccountStorage)},
10275 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10277 #if BUILDFLAG(IS_WIN)
10278 {"cloud-ap-auth-attach-as-header",
10279 flag_descriptions::kCloudApAuthAttachAsHeaderName,
10280 flag_descriptions::kCloudApAuthAttachAsHeaderDescription, kOsWin,
10281 FEATURE_VALUE_TYPE(enterprise_auth::kCloudApAuthAttachAsHeader)},
10282 #endif // BUILDFLAG(IS_WIN)
10284 #if BUILDFLAG(IS_CHROMEOS_ASH)
10285 {"enable-per-desk-z-order", flag_descriptions::kEnablePerDeskZOrderName,
10286 flag_descriptions::kEnablePerDeskZOrderDescription, kOsCrOS,
10287 FEATURE_VALUE_TYPE(ash::features::kEnablePerDeskZOrder)},
10288 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10290 #if !BUILDFLAG(IS_ANDROID)
10291 {"simplified-bookmark-save-flow",
10292 power_bookmarks::flag_descriptions::kSimplifiedBookmarkSaveFlowName,
10293 power_bookmarks::flag_descriptions::kSimplifiedBookmarkSaveFlowName,
10295 FEATURE_VALUE_TYPE(power_bookmarks::kSimplifiedBookmarkSaveFlow)},
10298 #if BUILDFLAG(IS_CHROMEOS_ASH)
10299 {"gallery-app-pdf-edit-notification",
10300 flag_descriptions::kGalleryAppPdfEditNotificationName,
10301 flag_descriptions::kGalleryAppPdfEditNotificationDescription, kOsCrOS,
10302 FEATURE_WITH_PARAMS_VALUE_TYPE(
10303 ash::features::kGalleryAppPdfEditNotification,
10304 kGalleryAppPdfEditNotificationVariations,
10305 "GalleryAppPdfEditNotification")},
10308 #if BUILDFLAG(IS_CHROMEOS_ASH)
10309 {"google-one-offer-files-banner",
10310 flag_descriptions::kGoogleOneOfferFilesBannerName,
10311 flag_descriptions::kGoogleOneOfferFilesBannerDescription, kOsCrOS,
10312 FEATURE_VALUE_TYPE(ash::features::kGoogleOneOfferFilesBanner)},
10315 {"sync-autofill-wallet-credential-data",
10316 flag_descriptions::kSyncAutofillWalletCredentialDataName,
10317 flag_descriptions::kSyncAutofillWalletCredentialDataDescription, kOsAll,
10318 FEATURE_VALUE_TYPE(syncer::kSyncAutofillWalletCredentialData)},
10320 {"sync-autofill-wallet-usage-data",
10321 flag_descriptions::kSyncAutofillWalletUsageDataName,
10322 flag_descriptions::kSyncAutofillWalletUsageDataDescription, kOsAll,
10323 FEATURE_VALUE_TYPE(syncer::kSyncAutofillWalletUsageData)},
10325 #if !BUILDFLAG(IS_ANDROID)
10326 {"ui-enable-shared-image-cache-for-gpu",
10327 flag_descriptions::kUIEnableSharedImageCacheForGpuName,
10328 flag_descriptions::kUIEnableSharedImageCacheForGpuDescription, kOsDesktop,
10329 FEATURE_VALUE_TYPE(::features::kUIEnableSharedImageCacheForGpu)},
10332 #if !BUILDFLAG(IS_ANDROID)
10333 {"devtools-tab-target", flag_descriptions::kDevToolsTabTargetLiteralName,
10334 flag_descriptions::kDevToolsTabTargetLiteralDescription, kOsDesktop,
10335 FEATURE_VALUE_TYPE(::features::kDevToolsTabTarget)},
10338 #if BUILDFLAG(IS_CHROMEOS_ASH)
10339 {"cros-labs-window-cycle-shortcut",
10340 flag_descriptions::kSameAppWindowCycleName,
10341 flag_descriptions::kSameAppWindowCycleDescription, kOsCrOS,
10342 FEATURE_VALUE_TYPE(ash::features::kSameAppWindowCycle)},
10345 #if BUILDFLAG(IS_CHROMEOS_ASH)
10346 {"promise-icons", flag_descriptions::kPromiseIconsName,
10347 flag_descriptions::kPromiseIconsDescription, kOsCrOS,
10348 FEATURE_VALUE_TYPE(ash::features::kPromiseIcons)},
10351 #if BUILDFLAG(IS_CHROMEOS_ASH)
10352 {"printing-ppd-channel", flag_descriptions::kPrintingPpdChannelName,
10353 flag_descriptions::kPrintingPpdChannelDescription, kOsCrOS,
10354 MULTI_VALUE_TYPE(kPrintingPpdChannelChoices)},
10357 {"storage-buckets", flag_descriptions::kStorageBucketsName,
10358 flag_descriptions::kStorageBucketsDescription, kOsAll,
10359 FEATURE_VALUE_TYPE(blink::features::kStorageBuckets)},
10361 {"service-worker-bypass-fetch-handler",
10362 flag_descriptions::kServiceWorkerBypassFetchHandlerName,
10363 flag_descriptions::kServiceWorkerBypassFetchHandlerDescription, kOsAll,
10364 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kServiceWorkerBypassFetchHandler,
10365 kServiceWorkerBypassFetchHandlerVariations,
10366 "ServiceWorkerBypassFetchHandler")},
10368 {"service-worker-bypass-fetch-handler-for-main-resource",
10369 flag_descriptions::kServiceWorkerBypassFetchHandlerForMainResourceName,
10370 flag_descriptions::
10371 kServiceWorkerBypassFetchHandlerForMainResourceDescription,
10372 kOsAll, FEATURE_VALUE_TYPE(features::kServiceWorkerBypassFetchHandler)},
10374 {"service-worker-static-router",
10375 flag_descriptions::kServiceWorkerStaticRouterName,
10376 flag_descriptions::kServiceWorkerStaticRouterDescription, kOsAll,
10377 FEATURE_VALUE_TYPE(features::kServiceWorkerStaticRouter)},
10379 #if BUILDFLAG(IS_CHROMEOS_ASH)
10380 {"app-deduplication-service-fondue",
10381 flag_descriptions::kAppDeduplicationServiceFondueName,
10382 flag_descriptions::kAppDeduplicationServiceFondueDescription, kOsCrOS,
10383 FEATURE_VALUE_TYPE(features::kAppDeduplicationServiceFondue)},
10386 {"autofill-suggest-server-card-instead-of-local-card",
10387 flag_descriptions::kAutofillSuggestServerCardInsteadOfLocalCardName,
10388 flag_descriptions::kAutofillSuggestServerCardInsteadOfLocalCardDescription,
10390 FEATURE_VALUE_TYPE(
10391 autofill::features::kAutofillSuggestServerCardInsteadOfLocalCard)},
10393 #if BUILDFLAG(IS_ANDROID)
10394 {"android-improved-bookmarks",
10395 flag_descriptions::kAndroidImprovedBookmarksName,
10396 flag_descriptions::kAndroidImprovedBookmarksDescription, kOsAndroid,
10397 FEATURE_VALUE_TYPE(chrome::android::kAndroidImprovedBookmarks)},
10398 #endif // BUILDFLAG(IS_ANDROID)
10400 #if BUILDFLAG(IS_CHROMEOS_ASH)
10401 {"arc-idle-manager", flag_descriptions::kArcIdleManagerName,
10402 flag_descriptions::kArcIdleManagerDescription, kOsCrOS,
10403 FEATURE_VALUE_TYPE(arc::kEnableArcIdleManager)},
10404 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10406 #if BUILDFLAG(ENABLE_EXTENSIONS)
10407 {"enable-webview-tag-mparch-behavior",
10408 flag_descriptions::kWebViewTagMPArchBehaviorName,
10409 flag_descriptions::kWebViewTagMPArchBehaviorDescription, kOsDesktop,
10410 FEATURE_VALUE_TYPE(extensions_features::kWebviewTagMPArchBehavior)},
10411 #endif // BUILDFLAG(ENABLE_EXTENSIONS)
10413 #if BUILDFLAG(IS_ANDROID)
10414 {"thumbnail-cache-refactor", flag_descriptions::kThumbnailCacheRefactorName,
10415 flag_descriptions::kThumbnailCacheRefactorDescription, kOsAndroid,
10416 FEATURE_VALUE_TYPE(thumbnail::kThumbnailCacheRefactor)},
10418 {"surface-control-magnifier",
10419 flag_descriptions::kSurfaceControlMagnifierName,
10420 flag_descriptions::kSurfaceControlMagnifierDescription, kOsAndroid,
10421 FEATURE_VALUE_TYPE(features::kAndroidSurfaceControlMagnifier)},
10422 #endif // BUILDFLAG(IS_ANDROID)
10424 #if BUILDFLAG(IS_CHROMEOS_ASH)
10425 {"system-live-caption", flag_descriptions::kSystemLiveCaptionName,
10426 flag_descriptions::kSystemLiveCaptionDescription, kOsCrOS,
10427 FEATURE_VALUE_TYPE(ash::features::kSystemLiveCaption)},
10428 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10430 {"use-multi-plane-format-for-hardware-video",
10431 flag_descriptions::kUseMultiPlaneFormatForHardwareVideoName,
10432 flag_descriptions::kUseMultiPlaneFormatForHardwareVideoDescription, kOsAll,
10433 FEATURE_VALUE_TYPE(media::kUseMultiPlaneFormatForHardwareVideo)},
10435 {"use-multi-plane-format-for-software-video",
10436 flag_descriptions::kUseMultiPlaneFormatForSoftwareVideoName,
10437 flag_descriptions::kUseMultiPlaneFormatForSoftwareVideoDescription, kOsAll,
10438 FEATURE_VALUE_TYPE(media::kUseMultiPlaneFormatForSoftwareVideo)},
10440 #if BUILDFLAG(IS_CHROMEOS_ASH)
10441 {"enable-notification-image-drag",
10442 flag_descriptions::kEnableNotificationImageDragName,
10443 flag_descriptions::kEnableNotificationImageDragDescription, kOsCrOS,
10444 FEATURE_VALUE_TYPE(ash::features::kNotificationImageDrag)},
10447 #if BUILDFLAG(IS_CHROMEOS_ASH)
10448 {"enable-notifier-collision",
10449 flag_descriptions::kEnableNotifierCollisionName,
10450 flag_descriptions::kEnableNotifierCollisionDescription, kOsCrOS,
10451 FEATURE_VALUE_TYPE(ash::features::kNotifierCollision)},
10454 #if !BUILDFLAG(IS_ANDROID)
10455 {"autofill-enable-new-save-card-bubble-ui",
10456 flag_descriptions::kAutofillEnableNewSaveCardBubbleUiName,
10457 flag_descriptions::kAutofillEnableNewSaveCardBubbleUiDescription,
10459 FEATURE_VALUE_TYPE(
10460 autofill::features::kAutofillEnableNewSaveCardBubbleUi)},
10461 #endif // !BUILDFLAG(IS_ANDROID)
10463 {"autofill-enable-new-card-art-and-network-images",
10464 flag_descriptions::kAutofillEnableNewCardArtAndNetworkImagesName,
10465 flag_descriptions::kAutofillEnableNewCardArtAndNetworkImagesDescription,
10467 FEATURE_VALUE_TYPE(
10468 autofill::features::kAutofillEnableNewCardArtAndNetworkImages)},
10470 {"autofill-enable-card-art-server-side-stretching",
10471 flag_descriptions::kAutofillEnableCardArtServerSideStretchingName,
10472 flag_descriptions::kAutofillEnableCardArtServerSideStretchingDescription,
10474 FEATURE_VALUE_TYPE(
10475 autofill::features::kAutofillEnableCardArtServerSideStretching)},
10477 {"power-bookmark-backend", flag_descriptions::kPowerBookmarkBackendName,
10478 flag_descriptions::kPowerBookmarkBackendDescription, kOsAll,
10479 FEATURE_VALUE_TYPE(power_bookmarks::kPowerBookmarkBackend)},
10481 #if !BUILDFLAG(IS_ANDROID)
10482 {"user-notes-side-panel", flag_descriptions::kUserNotesSidePanelName,
10483 flag_descriptions::kUserNotesSidePanelDescription, kOsDesktop,
10484 FEATURE_VALUE_TYPE(user_notes::kUserNotes)},
10487 {"autofill-enable-merchant-opt-out-client-side-url-filtering",
10488 flag_descriptions::kAutofillEnableMerchantOptOutClientSideUrlFilteringName,
10489 flag_descriptions::
10490 kAutofillEnableMerchantOptOutClientSideUrlFilteringDescription,
10492 FEATURE_VALUE_TYPE(
10493 autofill::features::
10494 kAutofillEnableMerchantOptOutClientSideUrlFiltering)},
10496 #if BUILDFLAG(IS_CHROMEOS_ASH)
10497 {"enable-eol-notification-reset-dismissed-prefs",
10498 flag_descriptions::kEolResetDismissedPrefsName,
10499 flag_descriptions::kEolResetDismissedPrefsDescription, kOsCrOS,
10500 SINGLE_VALUE_TYPE(ash::switches::kEolResetDismissedPrefs)},
10503 #if BUILDFLAG(IS_ANDROID)
10504 {"password-generation-bottom-sheet",
10505 flag_descriptions::kPasswordGenerationBottomSheetName,
10506 flag_descriptions::kPasswordGenerationBottomSheetDescription, kOsAndroid,
10507 FEATURE_VALUE_TYPE(
10508 password_manager::features::kPasswordGenerationBottomSheet)},
10509 #endif // BUILDFLAG(IS_ANDROID)
10511 {"enable-preferences-account-storage",
10512 flag_descriptions::kEnablePreferencesAccountStorageName,
10513 flag_descriptions::kEnablePreferencesAccountStorageDescription, kOsAll,
10514 FEATURE_VALUE_TYPE(syncer::kEnablePreferencesAccountStorage)},
10516 #if BUILDFLAG(IS_CHROMEOS_ASH)
10517 {"app-launch-automation", flag_descriptions::kAppLaunchAutomationName,
10518 flag_descriptions::kAppLaunchAutomationDescription, kOsCrOS,
10519 FEATURE_VALUE_TYPE(ash::features::kAppLaunchAutomation)},
10522 #if BUILDFLAG(IS_CHROMEOS_LACROS)
10523 {"experimental-web-app-storage-partition-isolation",
10524 flag_descriptions::kExperimentalWebAppStoragePartitionIsolationName,
10525 flag_descriptions::kExperimentalWebAppStoragePartitionIsolationDescription,
10527 FEATURE_VALUE_TYPE(
10528 chromeos::features::kExperimentalWebAppStoragePartitionIsolation)},
10530 {"blink-extension", flag_descriptions::kBlinkExtensionName,
10531 flag_descriptions::kBlinkExtensionDescription, kOsLacros,
10532 FEATURE_VALUE_TYPE(chromeos::features::kBlinkExtension)},
10533 {"blink-extension-diagnostics",
10534 flag_descriptions::kBlinkExtensionDiagnosticsName,
10535 flag_descriptions::kBlinkExtensionDiagnosticsDescription, kOsLacros,
10536 FEATURE_VALUE_TYPE(chromeos::features::kBlinkExtensionDiagnostics)},
10537 #endif // BUILDFLAG(IS_CHROMEOS_LACROS)
10539 #if BUILDFLAG(IS_CHROMEOS_ASH)
10540 {"enable-desk-button", flag_descriptions::kDeskButtonName,
10541 flag_descriptions::kDeskButtonDescription, kOsCrOS,
10542 FEATURE_VALUE_TYPE(ash::features::kDeskButton)},
10545 #if BUILDFLAG(IS_CHROMEOS_ASH)
10546 {"render-arc-notifications-by-chrome",
10547 flag_descriptions::kRenderArcNotificationsByChromeName,
10548 flag_descriptions::kRenderArcNotificationsByChromeDescription, kOsCrOS,
10549 FEATURE_VALUE_TYPE(ash::features::kRenderArcNotificationsByChrome)},
10552 #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
10553 {"settings-enable-get-the-most-out-of-chrome",
10554 flag_descriptions::kSettingsEnableGetTheMostOutOfChromeName,
10555 flag_descriptions::kSettingsEnableGetTheMostOutOfChromeDescription,
10556 kOsDesktop, FEATURE_VALUE_TYPE(::features::kGetTheMostOutOfChrome)},
10559 {"enable-file-backed-blob-factory",
10560 flag_descriptions::kEnableFileBackedBlobFactoryName,
10561 flag_descriptions::kEnableFileBackedBlobFactoryDescription, kOsAll,
10562 FEATURE_VALUE_TYPE(blink::features::kEnableFileBackedBlobFactory)},
10564 #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
10565 {"autofill-enable-payments-mandatory-reauth",
10566 flag_descriptions::kAutofillEnablePaymentsMandatoryReauthName,
10567 flag_descriptions::kAutofillEnablePaymentsMandatoryReauthDescription,
10568 kOsMac | kOsWin | kOsAndroid,
10569 FEATURE_VALUE_TYPE(
10570 autofill::features::kAutofillEnablePaymentsMandatoryReauth)},
10571 #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID)
10573 {"autofill-enable-email-otp-for-vcn-yellow-path",
10574 flag_descriptions::kAutofillEnableEmailOtpForVcnYellowPathName,
10575 flag_descriptions::kAutofillEnableEmailOtpForVcnYellowPathDescription,
10577 FEATURE_VALUE_TYPE(
10578 autofill::features::kAutofillEnableEmailOtpForVcnYellowPath)},
10580 {"enable-compression-dictionary-transport",
10581 flag_descriptions::kCompressionDictionaryTransportName,
10582 flag_descriptions::kCompressionDictionaryTransportDescription, kOsAll,
10583 FEATURE_VALUE_TYPE(network::features::kCompressionDictionaryTransport)},
10585 {"enable-compression-dictionary-transport-backend",
10586 flag_descriptions::kCompressionDictionaryTransportBackendName,
10587 flag_descriptions::kCompressionDictionaryTransportBackendDescription,
10589 FEATURE_VALUE_TYPE(
10590 network::features::kCompressionDictionaryTransportBackend)},
10592 {"enable-zstd-content-encoding",
10593 flag_descriptions::kZstdContentEncodingName,
10594 flag_descriptions::kZstdContentEncodingDescription, kOsAll,
10595 FEATURE_VALUE_TYPE(net::features::kZstdContentEncoding)},
10597 {"enable-shared-zstd", flag_descriptions::kSharedZstdName,
10598 flag_descriptions::kSharedZstdDescription, kOsAll,
10599 FEATURE_VALUE_TYPE(network::features::kSharedZstd)},
10601 #if BUILDFLAG(IS_CHROMEOS_ASH)
10602 {"arc-arc-on-demand", flag_descriptions::kArcArcOnDemandExperimentName,
10603 flag_descriptions::kArcArcOnDemandExperimentDescription, kOsCrOS,
10604 FEATURE_VALUE_TYPE(arc::kArcOnDemandFeature)},
10607 #if BUILDFLAG(IS_ANDROID)
10608 {"web-authentication-android-credential-management",
10609 flag_descriptions::kWebAuthnAndroidCredManName,
10610 flag_descriptions::kWebAuthnAndroidCredManDescription, kOsAndroid,
10611 FEATURE_WITH_PARAMS_VALUE_TYPE(device::kWebAuthnAndroidCredMan,
10612 kWebAuthnAndroidCredManVariations,
10613 "WebAuthenticationAndroidCredMan")},
10614 #endif // BUILDFLAG(IS_ANDROID)
10616 {"permission-storage-access-api",
10617 flag_descriptions::kPermissionStorageAccessAPIName,
10618 flag_descriptions::kPermissionStorageAccessAPIDescription,
10619 kOsDesktop | kOsAndroid,
10620 FEATURE_VALUE_TYPE(permissions::features::kPermissionStorageAccessAPI)},
10622 #if BUILDFLAG(IS_ANDROID)
10623 {"android-extended-keyboard-shortcuts",
10624 flag_descriptions::kAndroidExtendedKeyboardShortcutsName,
10625 flag_descriptions::kAndroidExtendedKeyboardShortcutsDescription,
10627 FEATURE_VALUE_TYPE(blink::features::kAndroidExtendedKeyboardShortcuts)},
10628 {"convert-trackpad-events-to-mouse",
10629 flag_descriptions::kConvertTrackpadEventsToMouseName,
10630 flag_descriptions::kConvertTrackpadEventsToMouseDescription, kOsAndroid,
10631 FEATURE_VALUE_TYPE(ui::kConvertTrackpadEventsToMouse)},
10632 {"deprecated-external-picker-function",
10633 flag_descriptions::kDeprecatedExternalPickerFunctionName,
10634 flag_descriptions::kDeprecatedExternalPickerFunctionDescription,
10635 kOsAndroid, FEATURE_VALUE_TYPE(ui::kDeprecatedExternalPickerFunction)},
10636 {"enable-cct-text-fragment-lookup-api",
10637 flag_descriptions::kCCTTextFragmentLookupApiEnabledName,
10638 flag_descriptions::kCCTTextFragmentLookupApiEnabledDescription, kOsAndroid,
10639 FEATURE_VALUE_TYPE(chrome::android::kCCTTextFragmentLookupApiEnabled)},
10641 #endif // BUILDFLAG(IS_ANDROID)
10643 #if BUILDFLAG(IS_CHROMEOS_ASH)
10644 {"enable-missive-storage-config", flag_descriptions::kMissiveStorageName,
10645 flag_descriptions::kMissiveStorageDescription, kOsCrOS,
10646 PLATFORM_FEATURE_WITH_PARAMS_VALUE_TYPE(
10647 "CrOSLateBootMissiveStorage",
10648 kCrOSLateBootMissiveStorageDefaultVariations,
10649 "CrOSLateBootMissiveStorage")},
10650 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10652 #if !BUILDFLAG(IS_ANDROID)
10653 {"cast-mirroring-target-playout-delay",
10654 flag_descriptions::kCastMirroringTargetPlayoutDelayName,
10655 flag_descriptions::kCastMirroringTargetPlayoutDelayDescription, kOsDesktop,
10656 MULTI_VALUE_TYPE(kCastMirroringTargetPlayoutDelayChoices)},
10657 #endif // !BUILDFLAG(IS_ANDROID)
10659 {"enable-policy-test-page", flag_descriptions::kEnablePolicyTestPageName,
10660 flag_descriptions::kEnablePolicyTestPageDescription, kOsAll,
10661 FEATURE_VALUE_TYPE(policy::features::kEnablePolicyTestPage)},
10663 #if BUILDFLAG(IS_CHROMEOS_ASH)
10664 {"allow-devtools-in-system-ui",
10665 flag_descriptions::kAllowDevtoolsInSystemUIName,
10666 flag_descriptions::kAllowDevtoolsInSystemUIDescription, kOsCrOS,
10667 FEATURE_VALUE_TYPE(ash::features::kAllowDevtoolsInSystemUI)},
10668 {"cros-shortstand", flag_descriptions::kCrosShortstandName,
10669 flag_descriptions::kCrosShortstandDescription, kOsCrOS,
10670 FEATURE_VALUE_TYPE(features::kCrosShortstand)},
10671 {"cros-web-app-shortcut-ui-update",
10672 flag_descriptions::kCrosWebAppShortcutUiUpdateName,
10673 flag_descriptions::kCrosWebAppShortcutUiUpdateDescription, kOsCrOS,
10674 FEATURE_VALUE_TYPE(chromeos::features::kCrosWebAppShortcutUiUpdate)},
10675 {"enable-audio-focus-enforcement",
10676 flag_descriptions::kEnableAudioFocusEnforcementName,
10677 flag_descriptions::kEnableAudioFocusEnforcementDescription, kOsCrOS,
10678 FEATURE_VALUE_TYPE(media_session::features::kAudioFocusEnforcement)},
10679 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10681 {"use-gpu-scheduler-dfs", flag_descriptions::kUseGpuSchedulerDfsName,
10682 flag_descriptions::kUseGpuSchedulerDfsDescription, kOsAll,
10683 FEATURE_VALUE_TYPE(features::kUseGpuSchedulerDfs)},
10685 #if BUILDFLAG(IS_CHROMEOS_ASH)
10686 {"cros-battery-saver", flag_descriptions::kCrosBatterySaverName,
10687 flag_descriptions::kCrosBatterySaverDescription, kOsCrOS,
10688 FEATURE_VALUE_TYPE(ash::features::kBatterySaver)},
10689 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10691 #if BUILDFLAG(IS_ANDROID)
10692 {"thumbnail-placeholder", flag_descriptions::kThumbnailPlaceholderName,
10693 flag_descriptions::kThumbnailPlaceholderDescription, kOsAndroid,
10694 FEATURE_VALUE_TYPE(chrome::android::kThumbnailPlaceholder)},
10695 #endif // BUILDFLAG(IS_ANDROID)
10697 {"enable-process-per-site-up-to-main-frame-threshold",
10698 flag_descriptions::kEnableProcessPerSiteUpToMainFrameThresholdName,
10699 flag_descriptions::kEnableProcessPerSiteUpToMainFrameThresholdDescription,
10700 kOsDesktop | kOsAndroid,
10701 FEATURE_VALUE_TYPE(features::kProcessPerSiteUpToMainFrameThreshold)},
10703 #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || \
10704 BUILDFLAG(IS_FUCHSIA)
10705 {"camera-mic-effects", flag_descriptions::kCameraMicEffectsName,
10706 flag_descriptions::kCameraMicEffectsDescription,
10707 static_cast<unsigned short>(kOsMac | kOsWin | kOsLinux | kOsFuchsia),
10708 FEATURE_VALUE_TYPE(media::kCameraMicEffects)},
10710 {"camera-mic-preview", flag_descriptions::kCameraMicPreviewName,
10711 flag_descriptions::kCameraMicPreviewDescription,
10712 static_cast<unsigned short>(kOsMac | kOsWin | kOsLinux | kOsFuchsia),
10713 FEATURE_VALUE_TYPE(features::kCameraMicPreview)},
10716 #if BUILDFLAG(IS_CHROMEOS_ASH)
10717 {"cros-battery-saver-always-on",
10718 flag_descriptions::kCrosBatterySaverAlwaysOnName,
10719 flag_descriptions::kCrosBatterySaverAlwaysOnDescription, kOsCrOS,
10720 FEATURE_VALUE_TYPE(ash::features::kBatterySaverAlwaysOn)},
10721 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10723 {"render-document", flag_descriptions::kRenderDocumentName,
10724 flag_descriptions::kRenderDocumentDescription, kOsAll,
10725 FEATURE_WITH_PARAMS_VALUE_TYPE(features::kRenderDocument,
10726 kRenderDocumentVariations,
10727 "RenderDocument")},
10729 {"site-instance-groups-for-data-urls",
10730 flag_descriptions::kSiteInstanceGroupsForDataUrlsName,
10731 flag_descriptions::kSiteInstanceGroupsForDataUrlsDescription, kOsAll,
10732 FEATURE_VALUE_TYPE(features::kSiteInstanceGroupsForDataUrls)},
10734 {"early-document-swap-for-back-forward-transitions",
10735 flag_descriptions::kEarlyDocumentSwapForBackForwardTransitionsName,
10736 flag_descriptions::kEarlyDocumentSwapForBackForwardTransitionsDescription,
10738 FEATURE_VALUE_TYPE(features::kEarlyDocumentSwapForBackForwardTransitions)},
10740 #if BUILDFLAG(ENABLE_EXTENSIONS)
10741 {"cws-info-fast-check", flag_descriptions::kCWSInfoFastCheckName,
10742 flag_descriptions::kCWSInfoFastCheckDescription, kOsDesktop,
10743 FEATURE_VALUE_TYPE(extensions::kCWSInfoFastCheck)},
10745 {"safety-check-extensions", flag_descriptions::kSafetyCheckExtensionsName,
10746 flag_descriptions::kSafetyCheckExtensionsDescription, kOsDesktop,
10747 FEATURE_VALUE_TYPE(features::kSafetyCheckExtensions)},
10748 #endif // BUILDFLAG(ENABLE_EXTENSIONS)
10750 #if BUILDFLAG(IS_ANDROID)
10751 {"webapk-install-failure-notification",
10752 flag_descriptions::kWebApkInstallFailureNotificationName,
10753 flag_descriptions::kWebApkInstallFailureNotificationDescription,
10755 FEATURE_VALUE_TYPE(webapps::features::kWebApkInstallFailureNotification)},
10756 {"webapk-install-failure-retry",
10757 flag_descriptions::kWebApkInstallFailureRetryName,
10758 flag_descriptions::kWebApkInstallFailureRetryDescription, kOsAndroid,
10759 FEATURE_VALUE_TYPE(webapps::features::kWebApkInstallFailureRetry)},
10760 #endif // BUILDFLAG(IS_ANDROID)
10762 {"autofill-enable-cvc-storage-and-filling",
10763 flag_descriptions::kAutofillEnableCvcStorageAndFillingName,
10764 flag_descriptions::kAutofillEnableCvcStorageAndFillingDescription, kOsAll,
10765 FEATURE_VALUE_TYPE(
10766 autofill::features::kAutofillEnableCvcStorageAndFilling)},
10768 #if BUILDFLAG(IS_CHROMEOS_ASH)
10769 {"drive-fs-show-cse-files", flag_descriptions::kDriveFsShowCSEFilesName,
10770 flag_descriptions::kDriveFsShowCSEFilesDescription, kOsCrOS,
10771 FEATURE_VALUE_TYPE(ash::features::kDriveFsShowCSEFiles)},
10772 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10774 #if BUILDFLAG(IS_CHROMEOS_ASH)
10775 {"cros-labs-continuous-overview-animation",
10776 flag_descriptions::kContinuousOverviewScrollAnimationName,
10777 flag_descriptions::kContinuousOverviewScrollAnimationDescription, kOsCrOS,
10778 FEATURE_VALUE_TYPE(ash::features::kContinuousOverviewScrollAnimation)},
10779 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10781 #if BUILDFLAG(IS_CHROMEOS_ASH)
10782 {"system-nudge-v2", flag_descriptions::kSystemNudgeV2Name,
10783 flag_descriptions::kSystemNudgeV2Description, kOsCrOS,
10784 FEATURE_VALUE_TYPE(ash::features::kSystemNudgeV2)},
10785 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10787 #if BUILDFLAG(IS_CHROMEOS_ASH)
10788 {"cros-labs-window-splitting", flag_descriptions::kWindowSplittingName,
10789 flag_descriptions::kWindowSplittingDescription, kOsCrOS,
10790 FEATURE_VALUE_TYPE(ash::features::kWindowSplitting)},
10791 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10793 #if BUILDFLAG(IS_CHROMEOS_ASH)
10794 {"speak-on-mute-opt-in-nudge-prefs-reset",
10795 flag_descriptions::kSpeakOnMuteOptInNudgePrefsResetName,
10796 flag_descriptions::kSpeakOnMuteOptInNudgePrefsResetDescription, kOsCrOS,
10797 FEATURE_VALUE_TYPE(ash::features::kSpeakOnMuteOptInNudgePrefsReset)},
10798 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10800 {"privacy-sandbox-enrollment-overrides",
10801 flag_descriptions::kPrivacySandboxEnrollmentOverridesName,
10802 flag_descriptions::kPrivacySandboxEnrollmentOverridesDescription, kOsAll,
10803 ORIGIN_LIST_VALUE_TYPE(privacy_sandbox::kPrivacySandboxEnrollmentOverrides,
10806 #if !BUILDFLAG(IS_ANDROID)
10807 {"enable-smart-card-web-api", flag_descriptions::kSmartCardWebApiName,
10808 flag_descriptions::kSmartCardWebApiDescription, kOsDesktop,
10809 FEATURE_VALUE_TYPE(blink::features::kSmartCard)},
10810 {"create-shortcut-ignores-manifest",
10811 flag_descriptions::kCreateShortcutIgnoresManifestName,
10812 flag_descriptions::kCreateShortcutIgnoresManifestDescription, kOsDesktop,
10813 FEATURE_VALUE_TYPE(webapps::features::kCreateShortcutIgnoresManifest)},
10814 #endif // !BUILDFLAG(IS_ANDROID)
10816 #if BUILDFLAG(IS_ANDROID)
10817 {"ml-mobile-pwa-prompt", flag_descriptions::kMobilePWAInstallPromptMlName,
10818 flag_descriptions::kMobilePWAInstallPromptMlDescription, kOsAndroid,
10819 FEATURE_VALUE_TYPE(webapps::features::kInstallPromptSegmentation)},
10822 #if BUILDFLAG(IS_ANDROID)
10823 {"mouse-and-trackpad-dropdown-menu",
10824 flag_descriptions::kMouseAndTrackpadDropdownMenuName,
10825 flag_descriptions::kMouseAndTrackpadDropdownMenuDescription, kOsAndroid,
10826 FEATURE_VALUE_TYPE(features::kMouseAndTrackpadDropdownMenu)},
10829 #if BUILDFLAG(IS_ANDROID)
10830 {"autofill-enable-payments-android-bottom-sheet",
10831 flag_descriptions::kAutofillEnablePaymentsAndroidBottomSheetName,
10832 flag_descriptions::kAutofillEnablePaymentsAndroidBottomSheetDescription,
10834 FEATURE_VALUE_TYPE(
10835 autofill::features::kAutofillEnablePaymentsAndroidBottomSheet)},
10838 #if BUILDFLAG(IS_CHROMEOS_ASH)
10839 {"asynchronous-scanner-discovery",
10840 flag_descriptions::kAsynchronousScannerDiscoveryName,
10841 flag_descriptions::kAsynchronousScannerDiscoveryDescription, kOsCrOS,
10842 FEATURE_VALUE_TYPE(ash::features::kAsynchronousScannerDiscovery)},
10843 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10845 #if BUILDFLAG(IS_ANDROID)
10846 {"read-aloud", flag_descriptions::kReadAloudName,
10847 flag_descriptions::kReadAloudDescription, kOsAndroid,
10848 FEATURE_VALUE_TYPE(chrome::android::kReadAloud)},
10851 {"hide-incognito-media-metadata",
10852 flag_descriptions::kHideIncognitoMediaMetadataName,
10853 flag_descriptions::kHideIncognitoMediaMetadataDescription, kOsAll,
10854 FEATURE_VALUE_TYPE(media::kHideIncognitoMediaMetadata)},
10856 #if BUILDFLAG(IS_ANDROID)
10857 {"advanced-peripherals-support",
10858 flag_descriptions::kAdvancedPeripheralsSupportName,
10859 flag_descriptions::kAdvancedPeripheralsSupportDescription, kOsAndroid,
10860 FEATURE_VALUE_TYPE(chrome::android::kAdvancedPeripheralsSupport)},
10862 {"advanced-peripherals-support-tab-strip",
10863 flag_descriptions::kAdvancedPeripheralsSupportTabStripName,
10864 flag_descriptions::kAdvancedPeripheralsSupportTabStripDescription,
10866 FEATURE_VALUE_TYPE(chrome::android::kAdvancedPeripheralsSupportTabStrip)},
10867 #endif // BUILDFLAG(IS_ANDROID)
10869 #if BUILDFLAG(IS_ANDROID)
10870 {"grid-tab-switcher-landscape-aspect-ratio-phones",
10871 flag_descriptions::kGridTabSwitcherLandscapeAspectRatioPhonesName,
10872 flag_descriptions::kGridTabSwitcherLandscapeAspectRatioPhonesDescription,
10874 FEATURE_VALUE_TYPE(
10875 chrome::android::kGridTabSwitcherLandscapeAspectRatioPhones)},
10878 #if BUILDFLAG(IS_ANDROID)
10879 {"filling-across-affiliated-websites-android",
10880 flag_descriptions::kFillingAcrossAffiliatedWebsitesName,
10881 flag_descriptions::kFillingAcrossAffiliatedWebsitesDescription, kOsAndroid,
10882 FEATURE_VALUE_TYPE(
10883 password_manager::features::kFillingAcrossAffiliatedWebsitesAndroid)},
10886 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
10887 {"third-party-profile-management",
10888 flag_descriptions::kThirdPartyProfileManagementName,
10889 flag_descriptions::kThirdPartyProfileManagementDescription,
10890 kOsLinux | kOsMac | kOsWin,
10891 FEATURE_VALUE_TYPE(
10892 profile_management::features::kThirdPartyProfileManagement)},
10894 {"uno-desktop", flag_descriptions::kUnoDesktopName,
10895 flag_descriptions::kUnoDesktopDescription, kOsLinux | kOsMac | kOsWin,
10896 FEATURE_VALUE_TYPE(switches::kUnoDesktop)},
10898 {"enable-user-link-capturing-pwa",
10899 flag_descriptions::kDesktopPWAsUserLinkCapturingName,
10900 flag_descriptions::kDesktopPWAsUserLinkCapturingDescription,
10901 kOsLinux | kOsMac | kOsWin,
10902 FEATURE_VALUE_TYPE(apps::features::kDesktopPWAsLinkCapturing)},
10903 #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
10905 {"forgot-password-form-support",
10906 flag_descriptions::kForgotPasswordFormSupportName,
10907 flag_descriptions::kForgotPasswordFormSupportDescription, kOsAll,
10908 FEATURE_VALUE_TYPE(
10909 password_manager::features::kForgotPasswordFormSupport)},
10911 {"ip-protection-proxy-opt-out",
10912 flag_descriptions::kIpProtectionProxyOptOutName,
10913 flag_descriptions::kIpProtectionProxyOptOutDescription, kOsAll,
10914 MULTI_VALUE_TYPE(kIpProtectionProxyOptOutChoices)},
10916 #if BUILDFLAG(IS_ANDROID)
10917 {"autofill-enable-android-n-key-for-fido-authentication",
10918 flag_descriptions::kAutofillEnableAndroidNKeyForFidoAuthenticationName,
10919 flag_descriptions::
10920 kAutofillEnableAndroidNKeyForFidoAuthenticationDescription,
10922 FEATURE_VALUE_TYPE(
10923 autofill::features::kAutofillEnableAndroidNKeyForFidoAuthentication)},
10924 #endif // BUILDFLAG(IS_ANDROID)
10926 {"protected-audience-debug-token",
10927 flag_descriptions::kProtectedAudiencesConsentedDebugTokenName,
10928 flag_descriptions::kProtectedAudiencesConsentedDebugTokenDescription,
10930 STRING_VALUE_TYPE(switches::kProtectedAudiencesConsentedDebugToken, "")},
10932 {"deprecate-unload", flag_descriptions::kDeprecateUnloadName,
10933 flag_descriptions::kDeprecateUnloadDescription, kOsAll | kDeprecated,
10934 FEATURE_VALUE_TYPE(blink::features::kDeprecateUnload)},
10936 {"autofill-enable-fpan-risk-based-authentication",
10937 flag_descriptions::kAutofillEnableFpanRiskBasedAuthenticationName,
10938 flag_descriptions::kAutofillEnableFpanRiskBasedAuthenticationDescription,
10940 FEATURE_VALUE_TYPE(
10941 autofill::features::kAutofillEnableFpanRiskBasedAuthentication)},
10943 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS)
10944 {"cco-test1", flag_descriptions::kCcoTest1Name,
10945 flag_descriptions::kCcoTest1Description, kOsLinux | kOsMac | kOsWin,
10946 FEATURE_VALUE_TYPE(features::kCcoTest1)},
10949 {"draw-immediately-when-interactive",
10950 flag_descriptions::kDrawImmediatelyWhenInteractiveName,
10951 flag_descriptions::kDrawImmediatelyWhenInteractiveDescription, kOsAll,
10952 FEATURE_VALUE_TYPE(features::kDrawImmediatelyWhenInteractive)},
10954 #if BUILDFLAG(IS_CHROMEOS_ASH)
10955 {"almanac-game-migration", flag_descriptions::kAlmanacGameMigrationName,
10956 flag_descriptions::kAlmanacGameMigrationDescription, kOsCrOS,
10957 FEATURE_VALUE_TYPE(apps::kAlmanacGameMigration)},
10960 #if BUILDFLAG(IS_MAC)
10961 {"enable-mac-pwas-notification-attribution",
10962 flag_descriptions::kMacPWAsNotificationAttributionName,
10963 flag_descriptions::kMacPWAsNotificationAttributionDescription, kOsMac,
10964 FEATURE_VALUE_TYPE(features::kAppShimNotificationAttribution)},
10965 #endif // BUILDFLAG(IS_MAC)
10967 {"indexed-db-compress-values-with-snappy",
10968 flag_descriptions::kIndexedDBCompressValuesWithSnappy,
10969 flag_descriptions::kIndexedDBCompressValuesWithSnappyDescription, kOsAll,
10970 FEATURE_VALUE_TYPE(blink::features::kIndexedDBCompressValuesWithSnappy)},
10972 {"indexed-db-default-durability-relaxed",
10973 flag_descriptions::kIndexedDBDefaultDurabilityRelaxed,
10974 flag_descriptions::kIndexedDBDefaultDurabilityRelaxed, kOsAll,
10975 FEATURE_VALUE_TYPE(storage::kDefaultBucketUsesRelaxedDurability)},
10977 {"autofill-enable-server-iban",
10978 flag_descriptions::kAutofillEnableServerIbanName,
10979 flag_descriptions::kAutofillEnableServerIbanDescription, kOsDesktop,
10980 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableServerIban)},
10982 #if !BUILDFLAG(IS_ANDROID)
10983 {"enable-manta-service", flag_descriptions::kEnableMantaServiceName,
10984 flag_descriptions::kEnableMantaServiceDescription, kOsDesktop,
10985 FEATURE_VALUE_TYPE(manta::features::kMantaService)},
10986 #endif // !BUILDFLAG(IS_ANDROID)
10988 #if BUILDFLAG(IS_CHROMEOS_ASH)
10989 {"advanced-documentscan-api",
10990 flag_descriptions::kAdvancedDocumentScanApiName,
10991 flag_descriptions::kAdvancedDocumentScanApiDescription, kOsCrOS,
10992 FEATURE_VALUE_TYPE(ash::features::kAdvancedDocumentScanAPI)},
10993 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
10995 #if BUILDFLAG(ENABLE_HLS_DEMUXER)
10996 {"enable-builtin-hls", flag_descriptions::kEnableBuiltinHlsName,
10997 flag_descriptions::kEnableBuiltinHlsDescription, kOsAll,
10998 FEATURE_VALUE_TYPE(media::kBuiltInHlsPlayer)},
11001 #if !BUILDFLAG(IS_CHROMEOS_ASH)
11002 {"profiles-reordering", flag_descriptions::kProfilesReorderingName,
11003 flag_descriptions::kProfilesReorderingDescription, kOsDesktop,
11004 FEATURE_VALUE_TYPE(kProfilesReordering)},
11007 #if BUILDFLAG(IS_ANDROID)
11008 {"hide-tab-on-tab-switcher", flag_descriptions::kHideTabOnTabSwitcherName,
11009 flag_descriptions::kHideTabOnTabSwitcherDescription, kOsAndroid,
11010 FEATURE_VALUE_TYPE(chrome::android::kHideTabOnTabSwitcher)},
11011 #endif // BUILDFLAG(IS_ANDROID)
11013 {"autofill-enable-merchant-domain-in-unmask-card-request",
11014 flag_descriptions::kAutofillEnableMerchantDomainInUnmaskCardRequestName,
11015 flag_descriptions::
11016 kAutofillEnableMerchantDomainInUnmaskCardRequestDescription,
11018 FEATURE_VALUE_TYPE(
11019 autofill::features::kAutofillEnableMerchantDomainInUnmaskCardRequest)},
11021 {"autofill-update-chrome-settings-link-to-gpay-web",
11022 flag_descriptions::kAutofillUpdateChromeSettingsLinkToGPayWebName,
11023 flag_descriptions::kAutofillUpdateChromeSettingsLinkToGPayWebDescription,
11025 FEATURE_VALUE_TYPE(
11026 autofill::features::kAutofillUpdateChromeSettingsLinkToGPayWeb)},
11028 #if !BUILDFLAG(IS_ANDROID)
11029 {"new-confirmation-bubble-for-generated-passwords",
11030 flag_descriptions::kNewConfirmationBubbleForGeneratedPasswordsName,
11031 flag_descriptions::kNewConfirmationBubbleForGeneratedPasswordsDescription,
11033 FEATURE_VALUE_TYPE(password_manager::features::
11034 kNewConfirmationBubbleForGeneratedPasswords)},
11035 #endif // !BUILDFLAG(IS_ANDROID)
11037 {"enable-secure-payment-confirmation-extensions",
11038 flag_descriptions::kSecurePaymentConfirmationExtensionsName,
11039 flag_descriptions::kSecurePaymentConfirmationExtensionsDescription, kOsAll,
11040 FEATURE_VALUE_TYPE(blink::features::kSecurePaymentConfirmationExtensions)},
11042 #if BUILDFLAG(IS_CHROMEOS_ASH)
11043 {"enable-runtime-counters-telemetry",
11044 flag_descriptions::kEnableRuntimeCountersTelemetryName,
11045 flag_descriptions::kEnableRuntimeCountersTelemetryDescription, kOsCrOS,
11046 FEATURE_VALUE_TYPE(reporting::kEnableRuntimeCountersTelemetry)},
11047 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
11048 #if BUILDFLAG(IS_CHROMEOS_ASH)
11049 {"upstream-trusted-reports-firmware",
11050 flag_descriptions::kUpstreamTrustedReportsFirmwareName,
11051 flag_descriptions::kUpstreamTrustedReportsFirmwareDescription, kOsCrOS,
11052 FEATURE_VALUE_TYPE(ash::features::kUpstreamTrustedReportsFirmware)},
11053 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
11055 #if BUILDFLAG(IS_CHROMEOS_ASH)
11056 {"ipp-first-setup-for-usb-printers",
11057 flag_descriptions::kIppFirstSetupForUsbPrintersName,
11058 flag_descriptions::kIppFirstSetupForUsbPrintersDescription, kOsCrOS,
11059 FEATURE_VALUE_TYPE(ash::features::kIppFirstSetupForUsbPrinters)},
11060 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
11062 #if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
11063 {"enable-bound-session-credentials",
11064 flag_descriptions::kEnableBoundSessionCredentialsName,
11065 flag_descriptions::kEnableBoundSessionCredentialsDescription,
11066 kOsMac | kOsWin | kOsLinux,
11067 FEATURE_WITH_PARAMS_VALUE_TYPE(switches::kEnableBoundSessionCredentials,
11068 kEnableBoundSessionCredentialsVariations,
11069 "EnableBoundSessionCredentials")},
11070 #endif // BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
11072 #if BUILDFLAG(IS_CHROMEOS_ASH)
11073 {"cros-soul", flag_descriptions::kCrosSoulName,
11074 flag_descriptions::kCrosSoulDescription, kOsCrOS,
11075 PLATFORM_FEATURE_NAME_TYPE("CrOSLateBootCrOSSOUL")},
11076 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
11077 {"use-shared-images-for-pepper-video",
11078 flag_descriptions::kUseSharedImagesForPepperVideoName,
11079 flag_descriptions::kUseSharedImagesForPepperVideoDescription, kOsAll,
11080 FEATURE_VALUE_TYPE(media::kUseSharedImagesForPepperVideo)},
11082 #if BUILDFLAG(IS_ANDROID)
11083 {"grid-tab-switcher-android-animations",
11084 flag_descriptions::kGridTabSwitcherAndroidAnimationsName,
11085 flag_descriptions::kGridTabSwitcherAndroidAnimationsDescription,
11087 FEATURE_VALUE_TYPE(chrome::android::kGridTabSwitcherAndroidAnimations)},
11088 #endif // !BUILDFLAG(IS_ANDROID)
11090 #if BUILDFLAG(ENABLE_LIBRARY_CDMS)
11091 {"cdm-storage-database", flag_descriptions::kCdmStorageDatabaseName,
11092 flag_descriptions::kCdmStorageDatabaseDescription, kOsDesktop,
11093 FEATURE_VALUE_TYPE(features::kCdmStorageDatabase)},
11095 {"cdm-storage-database-migration",
11096 flag_descriptions::kCdmStorageDatabaseMigrationName,
11097 flag_descriptions::kCdmStorageDatabaseMigrationDescription, kOsDesktop,
11098 FEATURE_VALUE_TYPE(features::kCdmStorageDatabaseMigration)},
11099 #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
11101 #if BUILDFLAG(IS_ANDROID)
11102 {"defer-tab-switcher-layout-creation",
11103 flag_descriptions::kDeferTabSwitcherLayoutCreationName,
11104 flag_descriptions::kDeferTabSwitcherLayoutCreationDescription, kOsAndroid,
11105 FEATURE_VALUE_TYPE(chrome::android::kDeferTabSwitcherLayoutCreation)},
11106 #endif // BUILDFLAG(IS_ANDROID)
11108 {"observable-api", flag_descriptions::kObservableAPIName,
11109 flag_descriptions::kObservableAPIDescription, kOsAll,
11110 FEATURE_VALUE_TYPE(blink::features::kObservableAPI)},
11112 #if BUILDFLAG(IS_ANDROID)
11113 {"android-hub", flag_descriptions::kAndroidHubName,
11114 flag_descriptions::kAndroidHubDescription, kOsAndroid,
11115 FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kAndroidHub,
11116 kAndroidHubVariations,
11118 #endif // !BUILDFLAG(IS_ANDROID)
11120 #if BUILDFLAG(IS_WIN)
11121 {"enable-web-app-system-media-controls-win",
11122 flag_descriptions::kWebAppSystemMediaControlsWinName,
11123 flag_descriptions::kWebAppSystemMediaControlsWinDescription, kOsWin,
11124 FEATURE_VALUE_TYPE(webapps::features::kWebAppSystemMediaControlsWin)},
11125 #endif // BUILDFLAG(IS_WIN)
11127 #if BUILDFLAG(IS_CHROMEOS)
11128 {"app-to-app-link-capturing", flag_descriptions::kAppToAppLinkCapturingName,
11129 flag_descriptions::kAppToAppLinkCapturingDescription, kOsCrOS,
11130 FEATURE_VALUE_TYPE(apps::features::kAppToAppLinkCapturing)},
11132 {"app-to-app-link-capturing-workspace-apps",
11133 flag_descriptions::kAppToAppLinkCapturingWorkspaceAppsName,
11134 flag_descriptions::kAppToAppLinkCapturingWorkspaceAppsDescription, kOsCrOS,
11135 FEATURE_VALUE_TYPE(apps::features::kAppToAppLinkCapturingWorkspaceApps)},
11136 #endif // BUILDFLAG(IS_CHROMEOS)
11138 {"related-website-sets-permission-grants",
11139 flag_descriptions::kShowRelatedWebsiteSetsPermissionGrantsName,
11140 flag_descriptions::kShowRelatedWebsiteSetsPermissionGrantsDescription,
11141 kOsDesktop | kOsAndroid,
11142 FEATURE_VALUE_TYPE(
11143 permissions::features::kShowRelatedWebsiteSetsPermissionGrants)},
11145 {"password-parsing-on-save-uses-predictions",
11146 flag_descriptions::kPasswordParsingOnSaveUsesPredictionsName,
11147 flag_descriptions::kPasswordParsingOnSaveUsesPredictionsDescription,
11149 FEATURE_VALUE_TYPE(
11150 password_manager::features::kUseServerPredictionsOnSaveParsing)},
11152 #if BUILDFLAG(IS_ANDROID)
11153 {"upm-local-no-migration",
11154 flag_descriptions::
11155 kUnifiedPasswordManagerLocalPasswordsAndroidNoMigrationName,
11156 flag_descriptions::
11157 kUnifiedPasswordManagerLocalPasswordsAndroidNoMigrationDescription,
11159 FEATURE_VALUE_TYPE(
11160 password_manager::features::
11161 kUnifiedPasswordManagerLocalPasswordsAndroidNoMigration)},
11162 #endif // BUILDFLAG(IS_ANDROID)
11164 #if BUILDFLAG(IS_CHROMEOS_ASH)
11165 {"app-install-service-uri", flag_descriptions::kAppInstallServiceUriName,
11166 flag_descriptions::kAppInstallServiceUriDescription, kOsCrOS,
11167 FEATURE_VALUE_TYPE(chromeos::features::kAppInstallServiceUri)},
11169 {"coral-feature-key", flag_descriptions::kCoralFeatureKeyName,
11170 flag_descriptions::kCoralFeatureKeyDescription, kOsCrOS,
11171 STRING_VALUE_TYPE(ash::switches::kCoralFeatureKey, "")},
11173 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
11175 #if BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
11176 {"theora-video-codec", flag_descriptions::kTheoraVideoCodecName,
11177 flag_descriptions::kTheoraVideoCodecDescription, kOsDesktop,
11178 FEATURE_VALUE_TYPE(media::kTheoraVideoCodec)},
11181 {"sync-session-on-visibility-changed",
11182 flag_descriptions::kSyncSessionOnVisibilityChangedName,
11183 flag_descriptions::kSyncSessionOnVisibilityChangedDescription, kOsAll,
11184 FEATURE_VALUE_TYPE(syncer::kSyncSessionOnVisibilityChanged)},
11186 #if !BUILDFLAG(IS_ANDROID)
11187 {"password-generation-strong-label-experiment",
11188 flag_descriptions::kPasswordGenerationStrongLabelExperimentName,
11189 flag_descriptions::kPasswordGenerationStrongLabelExperimentDescription,
11190 kOsDesktop, FEATURE_VALUE_TYPE(blink::features::kPasswordStrongLabel)},
11193 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
11194 {"attach-logs-to-autofill-rater-extentsion-report",
11195 flag_descriptions::kAttachLogsToAutofillRaterExtensionReportName,
11196 flag_descriptions::kAttachLogsToAutofillRaterExtensionReportDescription,
11197 kOsMac | kOsWin | kOsLinux,
11198 FEATURE_VALUE_TYPE(password_manager::features::
11199 kAttachLogsToAutofillRaterExtensionReport)},
11202 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
11203 {"fill-multi-line", flag_descriptions::kFillMultiLineName,
11204 flag_descriptions::kFillMultiLineDescription, kOsWin | kOsLinux | kOsMac,
11205 FEATURE_VALUE_TYPE(compose::features::kFillMultiLine)},
11208 #if !BUILDFLAG(IS_ANDROID)
11209 {"trusted-vault-frequent-degraded-recoverability-polling",
11210 flag_descriptions::kTrustedVaultFrequentDegradedRecoverabilityPollingName,
11211 flag_descriptions::
11212 kTrustedVaultFrequentDegradedRecoverabilityPollingDescription,
11214 FEATURE_VALUE_TYPE(
11215 trusted_vault::kTrustedVaultFrequentDegradedRecoverabilityPolling)}
11217 // NOTE: Adding a new flag requires adding a corresponding entry to enum
11218 // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
11219 // Histograms" in tools/metrics/histograms/README.md (run the
11220 // AboutFlagsHistogramTest unit test to verify this process).
11223 class FlagsStateSingleton : public flags_ui::FlagsState::Delegate {
11225 FlagsStateSingleton()
11227 std::make_unique<flags_ui::FlagsState>(kFeatureEntries, this)) {}
11228 FlagsStateSingleton(const FlagsStateSingleton&) = delete;
11229 FlagsStateSingleton& operator=(const FlagsStateSingleton&) = delete;
11230 ~FlagsStateSingleton() override = default;
11232 static FlagsStateSingleton* GetInstance() {
11233 return base::Singleton<FlagsStateSingleton>::get();
11236 static flags_ui::FlagsState* GetFlagsState() {
11237 return GetInstance()->flags_state_.get();
11240 void RebuildState(const std::vector<flags_ui::FeatureEntry>& entries) {
11241 flags_state_ = std::make_unique<flags_ui::FlagsState>(entries, this);
11244 void RestoreDefaultState() {
11246 std::make_unique<flags_ui::FlagsState>(kFeatureEntries, this);
11250 // flags_ui::FlagsState::Delegate:
11251 bool ShouldExcludeFlag(const flags_ui::FlagsStorage* storage,
11252 const FeatureEntry& entry) override {
11253 return flags::IsFlagExpired(storage, entry.internal_name);
11256 std::unique_ptr<flags_ui::FlagsState> flags_state_;
11259 bool ShouldSkipNonDeprecatedFeatureEntry(const FeatureEntry& entry) {
11260 return ~entry.supported_platforms & kDeprecated;
11265 #if BUILDFLAG(IS_CHROMEOS_ASH)
11266 // This method may be invoked both synchronously or asynchronously. Based on
11267 // whether the current user is the owner of the device, generates the
11268 // appropriate flag storage.
11269 void GetStorageAsync(Profile* profile,
11270 GetStorageCallback callback,
11271 bool current_user_is_owner) {
11272 // On ChromeOS the owner can set system wide flags and other users can only
11273 // set flags for their own session.
11274 if (current_user_is_owner) {
11275 ash::OwnerSettingsServiceAsh* service =
11276 ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(profile);
11277 std::move(callback).Run(
11278 std::make_unique<ash::about_flags::OwnerFlagsStorage>(
11279 profile->GetPrefs(), service),
11280 flags_ui::kOwnerAccessToFlags);
11282 std::move(callback).Run(std::make_unique<flags_ui::PrefServiceFlagsStorage>(
11283 profile->GetPrefs()),
11284 flags_ui::kGeneralAccessFlagsOnly);
11289 // ash-chrome uses different storage flag storage logic from other desktop
11291 void GetStorage(Profile* profile, GetStorageCallback callback) {
11292 #if BUILDFLAG(IS_CHROMEOS_ASH)
11293 // Bypass possible incognito profile.
11294 // On ChromeOS the owner can set system wide flags and other users can only
11295 // set flags for their own session.
11296 Profile* original_profile = profile->GetOriginalProfile();
11297 if (base::SysInfo::IsRunningOnChromeOS() &&
11298 ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(
11299 original_profile)) {
11300 ash::OwnerSettingsServiceAsh* service =
11301 ash::OwnerSettingsServiceAshFactory::GetForBrowserContext(
11303 service->IsOwnerAsync(base::BindOnce(&GetStorageAsync, original_profile,
11304 std::move(callback)));
11306 GetStorageAsync(original_profile, std::move(callback),
11307 /*current_user_is_owner=*/false);
11310 std::move(callback).Run(std::make_unique<flags_ui::PrefServiceFlagsStorage>(
11311 g_browser_process->local_state()),
11312 flags_ui::kOwnerAccessToFlags);
11316 bool ShouldSkipConditionalFeatureEntry(const flags_ui::FlagsStorage* storage,
11317 const FeatureEntry& entry) {
11318 version_info::Channel channel = chrome::GetChannel();
11319 #if BUILDFLAG(IS_CHROMEOS_ASH)
11320 // enable-projector-server-side-speech-recognition is only available if
11321 // the InternalServerSideSpeechRecognitionControl flag is enabled as well.
11322 if (!strcmp(kProjectorServerSideSpeechRecognition, entry.internal_name)) {
11323 return !ash::features::
11324 IsInternalServerSideSpeechRecognitionControlEnabled();
11327 // enable-ui-devtools is only available on for non Stable channels.
11328 if (!strcmp(ui_devtools::switches::kEnableUiDevTools, entry.internal_name) &&
11329 channel == version_info::Channel::STABLE) {
11333 // Skip lacros-availability-policy always. This is a pseudo entry
11334 // and used to carry the policy value crossing the Chrome's lifetime.
11335 if (!strcmp(ash::standalone_browser::kLacrosAvailabilityPolicyInternalName,
11336 entry.internal_name)) {
11340 // Skip lacros-backward-data-migration-policy always. This is a pseudo entry
11341 // and used to carry the policy value crossing the Chrome's lifetime.
11342 if (!strcmp(crosapi::browser_util::
11343 kLacrosDataBackwardMigrationModePolicyInternalName,
11344 entry.internal_name)) {
11347 // Skip lacros-selection if it is controlled by LacrosSelection policy.
11348 if (!strcmp(kLacrosSelectionInternalName, entry.internal_name)) {
11349 return crosapi::browser_util::GetCachedLacrosSelectionPolicy() !=
11350 crosapi::browser_util::LacrosSelectionPolicy::kUserChoice;
11353 if (!strcmp(kPreferDcheckInternalName, entry.internal_name)) {
11354 return !crosapi::browser_util::IsLacrosAllowedToBeEnabled();
11357 if (!strcmp(kLacrosStabilityInternalName, entry.internal_name)) {
11358 return !crosapi::browser_util::IsLacrosAllowedToBeEnabled();
11361 if (!strcmp(kLacrosOnlyInternalName, entry.internal_name)) {
11362 return !crosapi::browser_util::IsLacrosOnlyFlagAllowed();
11365 if (!strcmp(kArcEnableVirtioBlkForDataInternalName, entry.internal_name)) {
11366 return !arc::IsArcVmEnabled();
11369 if (!strcmp(kEnableSuspendToDiskInternalName, entry.internal_name) ||
11370 !strcmp(kEnableSuspendToDiskAllowS4InternalName, entry.internal_name)) {
11371 // All Suspend to disk flags require that hibernate is supported.
11372 if (!ash::HibernateManager::IsHibernateSupported()) {
11376 // We only show the suspend to disk allow S4 flag on systems that have
11378 if (!strcmp(kEnableSuspendToDiskAllowS4InternalName, entry.internal_name)) {
11379 return !ash::HibernateManager::HasAESKL();
11385 // Only show Borealis flags on enabled devices.
11386 if (!strcmp(kBorealisBigGlInternalName, entry.internal_name)) {
11387 return !base::FeatureList::IsEnabled(features::kBorealis);
11390 if (!strcmp(kBorealisDGPUInternalName, entry.internal_name)) {
11391 return !base::FeatureList::IsEnabled(features::kBorealis);
11394 if (!strcmp(kBorealisForceBetaClientInternalName, entry.internal_name)) {
11395 return !base::FeatureList::IsEnabled(features::kBorealis);
11398 if (!strcmp(kBorealisForceDoubleScaleInternalName, entry.internal_name)) {
11399 return !base::FeatureList::IsEnabled(features::kBorealis);
11402 if (!strcmp(kBorealisLinuxModeInternalName, entry.internal_name)) {
11403 return !base::FeatureList::IsEnabled(features::kBorealis);
11406 if (!strcmp(kBorealisPermittedInternalName, entry.internal_name)) {
11407 return !base::FeatureList::IsEnabled(features::kBorealis);
11410 if (!strcmp(kBorealisProvisionInternalName, entry.internal_name)) {
11411 return !base::FeatureList::IsEnabled(features::kBorealis);
11414 if (!strcmp(kBorealisWebUIInstallerInternalName, entry.internal_name)) {
11415 return !base::FeatureList::IsEnabled(features::kBorealis);
11418 // Only show wallpaper fast refresh flag if channel is one of
11419 // Dev/Canary/Unknown.
11420 if (!strcmp(kWallpaperFastRefreshInternalName, entry.internal_name)) {
11421 return (channel != version_info::Channel::DEV &&
11422 channel != version_info::Channel::CANARY &&
11423 channel != version_info::Channel::UNKNOWN);
11426 // Only show clipboard history longpress flag if channel is one of
11427 // Beta/Dev/Canary/Unknown.
11428 if (!strcmp(kClipboardHistoryLongpressInternalName, entry.internal_name)) {
11429 return channel != version_info::Channel::BETA &&
11430 channel != version_info::Channel::DEV &&
11431 channel != version_info::Channel::CANARY &&
11432 channel != version_info::Channel::UNKNOWN;
11435 // Disable and prevent users from enabling Floss on boards that were
11436 // explicitly built without it (b/228902194 for more info).
11437 if (!strcmp(kBluetoothUseFlossInternalName, entry.internal_name)) {
11438 return floss::features::IsFlossAvailabilityCheckNeeded() &&
11439 base::FeatureList::GetInstance()->IsFeatureOverriddenFromCommandLine(
11440 floss::features::kFlossIsAvailable.name,
11441 base::FeatureList::OVERRIDE_DISABLE_FEATURE);
11444 // Only show Time of Day wallpaper flag if channel is one of
11445 // Dev/Canary/Unknown.
11446 if (!strcmp(kTimeOfDayWallpaperInternalName, entry.internal_name)) {
11447 return (channel != version_info::Channel::DEV &&
11448 channel != version_info::Channel::CANARY &&
11449 channel != version_info::Channel::UNKNOWN);
11452 // Only show Time of Day Screen Saver flag if channel is one of
11453 // Dev/Canary/Unknown.
11454 if (!strcmp(kTimeOfDayScreenSaverInternalName, entry.internal_name)) {
11455 return (channel != version_info::Channel::DEV &&
11456 channel != version_info::Channel::CANARY &&
11457 channel != version_info::Channel::UNKNOWN);
11460 // Only show glanceables flag if channel is one of Beta/Dev/Canary/Unknown.
11461 if (!strcmp(kGlanceablesV2InternalName, entry.internal_name)) {
11462 return channel != version_info::Channel::BETA &&
11463 channel != version_info::Channel::DEV &&
11464 channel != version_info::Channel::CANARY &&
11465 channel != version_info::Channel::UNKNOWN;
11467 #endif // BUILDFLAG(IS_CHROMEOS_ASH)
11469 // enable-unsafe-webgpu is only available on Dev/Canary channels.
11470 if (!strcmp("enable-unsafe-webgpu", entry.internal_name) &&
11471 channel != version_info::Channel::DEV &&
11472 channel != version_info::Channel::CANARY &&
11473 channel != version_info::Channel::UNKNOWN) {
11477 if (flags::IsFlagExpired(storage, entry.internal_name)) {
11484 void ConvertFlagsToSwitches(flags_ui::FlagsStorage* flags_storage,
11485 base::CommandLine* command_line,
11486 flags_ui::SentinelsMode sentinels) {
11487 if (command_line->HasSwitch(switches::kNoExperiments)) {
11491 FlagsStateSingleton::GetFlagsState()->ConvertFlagsToSwitches(
11492 flags_storage, command_line, sentinels, switches::kEnableFeatures,
11493 switches::kDisableFeatures);
11496 std::vector<std::string> RegisterAllFeatureVariationParameters(
11497 flags_ui::FlagsStorage* flags_storage,
11498 base::FeatureList* feature_list) {
11499 return FlagsStateSingleton::GetFlagsState()
11500 ->RegisterAllFeatureVariationParameters(flags_storage, feature_list);
11503 void GetFlagFeatureEntries(flags_ui::FlagsStorage* flags_storage,
11504 flags_ui::FlagAccess access,
11505 base::Value::List& supported_entries,
11506 base::Value::List& unsupported_entries) {
11507 FlagsStateSingleton::GetFlagsState()->GetFlagFeatureEntries(
11508 flags_storage, access, supported_entries, unsupported_entries,
11509 base::BindRepeating(&ShouldSkipConditionalFeatureEntry,
11510 // Unretained: this callback doesn't outlive this
11512 base::Unretained(flags_storage)));
11515 void GetFlagFeatureEntriesForDeprecatedPage(
11516 flags_ui::FlagsStorage* flags_storage,
11517 flags_ui::FlagAccess access,
11518 base::Value::List& supported_entries,
11519 base::Value::List& unsupported_entries) {
11520 FlagsStateSingleton::GetFlagsState()->GetFlagFeatureEntries(
11521 flags_storage, access, supported_entries, unsupported_entries,
11522 base::BindRepeating(&ShouldSkipNonDeprecatedFeatureEntry));
11525 flags_ui::FlagsState* GetCurrentFlagsState() {
11526 return FlagsStateSingleton::GetFlagsState();
11529 bool IsRestartNeededToCommitChanges() {
11530 return FlagsStateSingleton::GetFlagsState()->IsRestartNeededToCommitChanges();
11533 void SetFeatureEntryEnabled(flags_ui::FlagsStorage* flags_storage,
11534 const std::string& internal_name,
11536 FlagsStateSingleton::GetFlagsState()->SetFeatureEntryEnabled(
11537 flags_storage, internal_name, enable);
11540 void SetOriginListFlag(const std::string& internal_name,
11541 const std::string& value,
11542 flags_ui::FlagsStorage* flags_storage) {
11543 FlagsStateSingleton::GetFlagsState()->SetOriginListFlag(internal_name, value,
11547 void SetStringFlag(const std::string& internal_name,
11548 const std::string& value,
11549 flags_ui::FlagsStorage* flags_storage) {
11550 FlagsStateSingleton::GetFlagsState()->SetStringFlag(internal_name, value,
11554 void RemoveFlagsSwitches(base::CommandLine::SwitchMap* switch_list) {
11555 FlagsStateSingleton::GetFlagsState()->RemoveFlagsSwitches(switch_list);
11558 void ResetAllFlags(flags_ui::FlagsStorage* flags_storage) {
11559 FlagsStateSingleton::GetFlagsState()->ResetAllFlags(flags_storage);
11562 #if BUILDFLAG(IS_CHROMEOS)
11563 void CrosUrlFlagsRedirect() {
11564 #if BUILDFLAG(IS_CHROMEOS_LACROS)
11565 lacros_url_handling::NavigateInAsh(GURL(chrome::kChromeUIFlagsURL));
11567 // Note: This will only be called by the UI when Lacros is available.
11568 DCHECK(crosapi::BrowserManager::Get());
11569 crosapi::BrowserManager::Get()->SwitchToTab(
11570 GURL(chrome::kChromeUIFlagsURL),
11571 /*path_behavior=*/NavigateParams::RESPECT);
11576 void RecordUMAStatistics(flags_ui::FlagsStorage* flags_storage,
11577 const std::string& histogram_name) {
11578 std::set<std::string> switches;
11579 std::set<std::string> features;
11580 std::set<std::string> variation_ids;
11581 FlagsStateSingleton::GetFlagsState()->GetSwitchesAndFeaturesFromFlags(
11582 flags_storage, &switches, &features, &variation_ids);
11583 // Don't report variation IDs since we don't have an UMA histogram for them.
11584 flags_ui::ReportAboutFlagsHistogram(histogram_name, switches, features);
11587 namespace testing {
11589 std::vector<FeatureEntry>* GetEntriesForTesting() {
11590 static base::NoDestructor<std::vector<FeatureEntry>> entries;
11591 return entries.get();
11594 void SetFeatureEntries(const std::vector<FeatureEntry>& entries) {
11595 CHECK(GetEntriesForTesting()->empty()); // IN-TEST
11596 for (const auto& entry : entries) {
11597 GetEntriesForTesting()->push_back(entry); // IN-TEST
11599 FlagsStateSingleton::GetInstance()->RebuildState(
11600 *GetEntriesForTesting()); // IN-TEST
11603 ScopedFeatureEntries::ScopedFeatureEntries(
11604 const std::vector<flags_ui::FeatureEntry>& entries) {
11605 SetFeatureEntries(entries);
11608 ScopedFeatureEntries::~ScopedFeatureEntries() {
11609 GetEntriesForTesting()->clear(); // IN-TEST
11610 // Restore the flag state to the production flags.
11611 FlagsStateSingleton::GetInstance()->RestoreDefaultState();
11614 base::span<const FeatureEntry> GetFeatureEntries() {
11615 if (!GetEntriesForTesting()->empty()) {
11616 return base::span<FeatureEntry>(*GetEntriesForTesting());
11618 return base::make_span(kFeatureEntries, std::size(kFeatureEntries));
11621 } // namespace testing
11623 } // namespace about_flags