blob: 801a27a516921de53199a30bdcd1cbbde1b02466 [file] [log] [blame]
Avi Drissmanea1be232022-09-14 23:29:061// Copyright 2012 The Chromium Authors
sdefresne14900ee2015-11-27 14:43:212// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Implementation of about_flags for iOS that sets flags based on experimental
6// settings.
7
Gauthier Ambard999088c2022-09-13 08:36:578#import "ios/chrome/browser/flags/about_flags.h"
sdefresne14900ee2015-11-27 14:43:219
Nazerke9c259052019-06-26 15:30:1010#import <UIKit/UIKit.h>
Gauthier Ambard999088c2022-09-13 08:36:5711#import <stddef.h>
12#import <stdint.h>
sdefresne14900ee2015-11-27 14:43:2113
Avi Drissmaneac566b02023-08-18 02:56:2114#import "base/apple/foundation_util.h"
Gauthier Ambard999088c2022-09-13 08:36:5715#import "base/base_switches.h"
Gauthier Ambard999088c2022-09-13 08:36:5716#import "base/check_op.h"
Peter Boström3f798572022-07-26 23:44:3617#import "base/debug/debugging_buildflags.h"
Avi Drissmancac43f22023-01-12 00:58:4118#import "base/functional/bind.h"
19#import "base/functional/callback_helpers.h"
Gauthier Ambard999088c2022-09-13 08:36:5720#import "base/no_destructor.h"
21#import "base/strings/stringprintf.h"
22#import "base/strings/sys_string_conversions.h"
23#import "base/system/sys_info.h"
24#import "components/autofill/core/common/autofill_features.h"
25#import "components/autofill/core/common/autofill_payments_features.h"
26#import "components/autofill/core/common/autofill_switches.h"
Vidhan Jain1199e202024-03-15 14:42:5927#import "components/autofill/ios/common/features.h"
Menghan YANGf3fe2de52023-02-27 16:38:5028#import "components/bookmarks/common/bookmark_features.h"
Marc Treib1f6c5db992024-01-04 20:25:1429#import "components/browser_sync/browser_sync_switches.h"
Gauthier Ambard999088c2022-09-13 08:36:5730#import "components/commerce/core/commerce_feature_list.h"
31#import "components/commerce/core/flag_descriptions.h"
32#import "components/content_settings/core/common/features.h"
Asami Doi93db79e2024-09-06 18:16:5533#import "components/data_sharing/public/features.h"
Gauthier Ambard999088c2022-09-13 08:36:5734#import "components/dom_distiller/core/dom_distiller_switches.h"
Raj Tb95d813542022-11-16 21:27:5235#import "components/download/public/background_service/features.h"
Gauthier Ambard999088c2022-09-13 08:36:5736#import "components/enterprise/browser/enterprise_switches.h"
Gauthier Ambard999088c2022-09-13 08:36:5737#import "components/feature_engagement/public/feature_constants.h"
38#import "components/feature_engagement/public/feature_list.h"
39#import "components/feed/feed_feature_list.h"
40#import "components/flags_ui/feature_entry.h"
41#import "components/flags_ui/feature_entry_macros.h"
42#import "components/flags_ui/flags_storage.h"
43#import "components/flags_ui/flags_ui_switches.h"
Benjamin Williams11f39912023-04-13 19:00:2544#import "components/history/core/browser/features.h"
Gauthier Ambard999088c2022-09-13 08:36:5745#import "components/invalidation/impl/invalidation_switches.h"
Benjamin Williamsaa8da8142022-11-14 19:51:0346#import "components/ntp_tiles/features.h"
Gauthier Ambard999088c2022-09-13 08:36:5747#import "components/ntp_tiles/switches.h"
Ameur Hosni3d764c92024-05-28 14:11:1248#import "components/omnibox/browser/omnibox_feature_configs.h"
Gauthier Ambard999088c2022-09-13 08:36:5749#import "components/omnibox/browser/omnibox_field_trial.h"
50#import "components/omnibox/common/omnibox_features.h"
51#import "components/optimization_guide/core/optimization_guide_features.h"
Raj Ta921ffc2022-08-25 19:00:2052#import "components/optimization_guide/core/optimization_guide_switches.h"
Raj Tc66dd122024-04-01 18:48:3953#import "components/page_content_annotations/core/page_content_annotations_features.h"
Olivier ROBINcb76f4fe2024-06-05 16:11:4254#import "components/page_image_service/features.h"
Vasilii Sukhanov32b14452023-10-12 17:31:2755#import "components/password_manager/core/browser/features/password_features.h"
Gauthier Ambard999088c2022-09-13 08:36:5756#import "components/password_manager/core/common/password_manager_features.h"
57#import "components/payments/core/features.h"
Guillaume Jenkinseeb7007c2020-06-25 22:55:4058#import "components/policy/core/common/policy_loader_ios_constants.h"
Gauthier Ambard999088c2022-09-13 08:36:5759#import "components/policy/policy_constants.h"
Gauthier Ambard999088c2022-09-13 08:36:5760#import "components/safe_browsing/core/common/features.h"
Benjamin Williamsd7f854b2024-10-09 17:12:2761#import "components/segmentation_platform/embedder/home_modules/tips_ephemeral_module_constants.h"
Chris Lu6fd4eaf2023-08-08 18:29:3062#import "components/segmentation_platform/public/constants.h"
Chris Lub0bad572023-08-07 18:13:2963#import "components/segmentation_platform/public/features.h"
Victor Hugo Vianna Silva0399402f2021-09-07 21:41:2564#import "components/send_tab_to_self/features.h"
Gauthier Ambard999088c2022-09-13 08:36:5765#import "components/shared_highlighting/core/common/shared_highlighting_features.h"
66#import "components/signin/core/browser/account_reconcilor.h"
67#import "components/signin/ios/browser/features.h"
68#import "components/signin/public/base/signin_switches.h"
69#import "components/strings/grit/components_strings.h"
Nohemi Fernandez64acf982023-08-04 09:27:1570#import "components/supervised_user/core/common/features.h"
Gauthier Ambard999088c2022-09-13 08:36:5771#import "components/sync/base/command_line_switches.h"
72#import "components/sync/base/features.h"
73#import "components/sync/base/pref_names.h"
74#import "components/translate/core/browser/translate_prefs.h"
75#import "components/translate/core/common/translate_util.h"
Ed Chin91e44992022-07-27 13:42:3476#import "ios/chrome/app/background_mode_buildflags.h"
Gauthier Ambard5b7f3c22023-09-13 12:03:3077#import "ios/chrome/browser/browsing_data/model/browsing_data_features.h"
Aman Vermab6f55572023-09-28 11:40:5378#import "ios/chrome/browser/crash_report/model/features.h"
Sebsgfcd5b0b2024-04-09 08:18:3279#import "ios/chrome/browser/credential_provider/model/features.h"
Aman Vermaf8a157f62023-10-03 15:32:1180#import "ios/chrome/browser/default_browser/model/utils.h"
Nan Lina498c412024-06-13 15:33:3281#import "ios/chrome/browser/download/ui_bundled/features.h"
mmrashadbc0ca942023-10-06 13:12:1482#import "ios/chrome/browser/find_in_page/model/util.h"
Gauthier Ambard92605132022-08-26 13:25:1783#import "ios/chrome/browser/flags/chrome_switches.h"
Gauthier Ambard999088c2022-09-13 08:36:5784#import "ios/chrome/browser/flags/ios_chrome_flag_descriptions.h"
Vincent Boisselle8b321bb2023-11-28 13:58:3185#import "ios/chrome/browser/follow/model/follow_features.h"
Rubin Deliallisib66a77a2024-10-02 18:09:4886#import "ios/chrome/browser/incognito_reauth/ui_bundled/features.h"
Ali Jumad29dc1872023-10-19 13:33:5887#import "ios/chrome/browser/iph_for_new_chrome_user/model/features.h"
Chris Lu09019af2024-08-28 08:38:4488#import "ios/chrome/browser/ntp/ui_bundled/new_tab_page_feature.h"
mmrashadd0c7f952023-12-14 13:36:3889#import "ios/chrome/browser/policy/model/policy_util.h"
Cheick Cisse85457f22024-05-23 22:37:5990#import "ios/chrome/browser/price_insights/model/price_insights_feature.h"
Stepan Khapugin5694d702024-01-31 13:23:0891#import "ios/chrome/browser/promos_manager/model/features.h"
mmrashadf158cad942023-10-03 09:15:4892#import "ios/chrome/browser/screen_time/model/screen_time_buildflags.h"
Gauthier Ambard7aa0fb922023-03-09 15:10:4693#import "ios/chrome/browser/shared/public/features/features.h"
Gauthier Ambard818938c2023-06-16 14:48:3594#import "ios/chrome/browser/shared/public/features/system_flags.h"
Tina Wang75f21e82024-07-01 18:00:3595#import "ios/chrome/browser/start_surface/ui_bundled/start_surface_features.h"
Robbie Gibson596fe292023-10-27 01:00:3696#import "ios/chrome/browser/tabs/model/inactive_tabs/features.h"
Ewann Pelled2eaeba2023-09-19 09:15:2897#import "ios/chrome/browser/text_selection/model/text_selection_util.h"
Charles Yang0bba5262024-05-14 17:46:4798#import "ios/chrome/browser/ui/lens/features.h"
Christian Xub8c06cd2022-04-29 20:55:0199#import "ios/chrome/browser/ui/omnibox/omnibox_ui_features.h"
Filipa Senra0bd07982023-12-19 10:56:25100#import "ios/chrome/browser/ui/page_info/features.h"
Robbie Gibson686c56732021-10-04 17:11:45101#import "ios/chrome/browser/ui/popup_menu/overflow_menu/feature_flags.h"
Filipa Senrabe00cbe2024-04-19 14:21:33102#import "ios/chrome/browser/ui/settings/clear_browsing_data/features.h"
Rubin Deliallisi4170b1c2024-02-28 16:15:42103#import "ios/chrome/browser/ui/settings/google_services/features.h"
Rubin Deliallisi072bc842023-10-19 12:00:41104#import "ios/chrome/browser/ui/settings/privacy/privacy_guide/features.h"
Cheick Cisse5d2b6cb82023-06-05 17:27:58105#import "ios/chrome/browser/ui/whats_new/whats_new_util.h"
Weizhong Xia8b908bda2023-12-05 16:00:22106#import "ios/chrome/browser/web/model/features.h"
Gauthier Ambard999088c2022-09-13 08:36:57107#import "ios/chrome/grit/ios_strings.h"
108#import "ios/components/security_interstitials/https_only_mode/feature.h"
109#import "ios/public/provider/chrome/browser/app_utils/app_utils_api.h"
110#import "ios/web/common/features.h"
111#import "ios/web/common/user_agent.h"
112#import "ios/web/common/web_view_creation_util.h"
sdefresne14900ee2015-11-27 14:43:21113
Sylvain Defresne9c107082020-10-27 16:39:13114#if BUILDFLAG(IOS_SCREEN_TIME_ENABLED)
mmrashadf158cad942023-10-03 09:15:48115#import "ios/chrome/browser/screen_time/model/features.h"
Sylvain Defresne9c107082020-10-27 16:39:13116#endif
117
sdefresne14900ee2015-11-27 14:43:21118#if !defined(OFFICIAL_BUILD)
Gauthier Ambard999088c2022-09-13 08:36:57119#import "components/variations/variations_switches.h"
vitaliii489217aa2017-01-30 14:50:22120#endif
stkhapuginc1be1792016-12-13 14:30:53121
elawrence816f6790e2017-06-16 18:19:28122using flags_ui::FeatureEntry;
123
sdefresne14900ee2015-11-27 14:43:21124namespace {
Emily Starkbafa9062017-12-27 15:22:46125
Nohemi Fernandezc00842a2021-07-26 11:47:34126const FeatureEntry::Choice
127 kWaitThresholdMillisecondsForCapabilitiesApiChoices[] = {
128 {flags_ui::kGenericExperimentChoiceDefault, "", ""},
129 {"200", signin::kWaitThresholdMillisecondsForCapabilitiesApi, "200"},
130 {"500", signin::kWaitThresholdMillisecondsForCapabilitiesApi, "500"},
131 {"5000", signin::kWaitThresholdMillisecondsForCapabilitiesApi, "5000"},
132};
133
Stepan Khapugincc4e9842019-01-23 13:38:13134const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches3[] = {
135 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "3"}};
136const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches4[] = {
137 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "4"}};
138const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches5[] = {
139 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "5"}};
140const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches6[] = {
141 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "6"}};
142const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches8[] = {
143 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "8"}};
144const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches10[] = {
145 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "10"}};
146const FeatureEntry::FeatureParam kOmniboxUIMaxAutocompleteMatches12[] = {
147 {OmniboxFieldTrial::kUIMaxAutocompleteMatchesParam, "12"}};
148
149const FeatureEntry::FeatureVariation
150 kOmniboxUIMaxAutocompleteMatchesVariations[] = {
151 {"3 matches", kOmniboxUIMaxAutocompleteMatches3,
Daniel Cheng1f047a82022-02-26 10:04:53152 std::size(kOmniboxUIMaxAutocompleteMatches3), nullptr},
Stepan Khapugincc4e9842019-01-23 13:38:13153 {"4 matches", kOmniboxUIMaxAutocompleteMatches4,
Daniel Cheng1f047a82022-02-26 10:04:53154 std::size(kOmniboxUIMaxAutocompleteMatches4), nullptr},
Stepan Khapugincc4e9842019-01-23 13:38:13155 {"5 matches", kOmniboxUIMaxAutocompleteMatches5,
Daniel Cheng1f047a82022-02-26 10:04:53156 std::size(kOmniboxUIMaxAutocompleteMatches5), nullptr},
Stepan Khapugincc4e9842019-01-23 13:38:13157 {"6 matches", kOmniboxUIMaxAutocompleteMatches6,
Daniel Cheng1f047a82022-02-26 10:04:53158 std::size(kOmniboxUIMaxAutocompleteMatches6), nullptr},
Stepan Khapugincc4e9842019-01-23 13:38:13159 {"8 matches", kOmniboxUIMaxAutocompleteMatches8,
Daniel Cheng1f047a82022-02-26 10:04:53160 std::size(kOmniboxUIMaxAutocompleteMatches8), nullptr},
Stepan Khapugincc4e9842019-01-23 13:38:13161 {"10 matches", kOmniboxUIMaxAutocompleteMatches10,
Daniel Cheng1f047a82022-02-26 10:04:53162 std::size(kOmniboxUIMaxAutocompleteMatches10), nullptr},
Stepan Khapugincc4e9842019-01-23 13:38:13163 {"12 matches", kOmniboxUIMaxAutocompleteMatches12,
Daniel Cheng1f047a82022-02-26 10:04:53164 std::size(kOmniboxUIMaxAutocompleteMatches12), nullptr}};
Stepan Khapugincc4e9842019-01-23 13:38:13165
Stepan Khapuginbac467e2022-05-06 21:11:54166const FeatureEntry::FeatureParam kOmniboxMaxZPSMatches6[] = {
167 {OmniboxFieldTrial::kMaxZeroSuggestMatchesParam, "6"}};
168const FeatureEntry::FeatureParam kOmniboxMaxZPSMatches15[] = {
169 {OmniboxFieldTrial::kMaxZeroSuggestMatchesParam, "15"}};
170const FeatureEntry::FeatureParam kOmniboxMaxZPSMatches20[] = {
171 {OmniboxFieldTrial::kMaxZeroSuggestMatchesParam, "20"}};
172
173const FeatureEntry::FeatureVariation kOmniboxMaxZPSMatchesVariations[] = {
174 {"6 matches", kOmniboxMaxZPSMatches6, std::size(kOmniboxMaxZPSMatches6),
175 nullptr},
176 {"15 matches", kOmniboxMaxZPSMatches15, std::size(kOmniboxMaxZPSMatches15),
177 nullptr},
178 {"20 matches", kOmniboxMaxZPSMatches20, std::size(kOmniboxMaxZPSMatches20),
179 nullptr},
180};
181
Christian Xucf26d562022-07-06 09:28:36182const FeatureEntry::FeatureParam kOmniboxMaxURLMatches5[] = {
183 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "5"}};
184const FeatureEntry::FeatureParam kOmniboxMaxURLMatches6[] = {
185 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "6"}};
186const FeatureEntry::FeatureParam kOmniboxMaxURLMatches7[] = {
187 {OmniboxFieldTrial::kOmniboxMaxURLMatchesParam, "7"}};
188
189const FeatureEntry::FeatureVariation kOmniboxMaxURLMatchesVariations[] = {
190 {"5 matches", kOmniboxMaxURLMatches5, std::size(kOmniboxMaxURLMatches5),
191 nullptr},
192 {"6 matches", kOmniboxMaxURLMatches6, std::size(kOmniboxMaxURLMatches6),
193 nullptr},
194 {"7 matches", kOmniboxMaxURLMatches7, std::size(kOmniboxMaxURLMatches7),
195 nullptr},
196};
197
Guillem Perez40086ef2023-11-20 20:03:52198const FeatureEntry::FeatureParam kContentPushNotificationsEnabledPromo[] = {
199 {kContentPushNotificationsExperimentType, "1"}};
200const FeatureEntry::FeatureParam kContentPushNotificationsEnabledSetupLists[] =
201 {{kContentPushNotificationsExperimentType, "2"}};
Guillem Perez222b5b22024-01-20 02:16:27202const FeatureEntry::FeatureParam kContentPushNotificationsEnabledProvisional[] =
203 {{kContentPushNotificationsExperimentType, "3"}};
Tina Wangb7f5b3f2024-05-07 06:24:26204const FeatureEntry::FeatureParam
205 kContentPushNotificationsPromoRegistrationOnly[] = {
206 {kContentPushNotificationsExperimentType, "5"}};
207const FeatureEntry::FeatureParam
208 kContentPushNotificationsProvisionalRegistrationOnly[] = {
209 {kContentPushNotificationsExperimentType, "6"}};
210const FeatureEntry::FeatureParam
211 kContentPushNotificationsSetUpListRegistrationOnly[] = {
212 {kContentPushNotificationsExperimentType, "7"}};
Guillem Perez40086ef2023-11-20 20:03:52213
214const FeatureEntry::FeatureVariation kContentPushNotificationsVariations[] = {
215 {"Promo", kContentPushNotificationsEnabledPromo,
216 std::size(kContentPushNotificationsEnabledPromo), nullptr},
217 {"Set up list", kContentPushNotificationsEnabledSetupLists,
Guillem Perez222b5b22024-01-20 02:16:27218 std::size(kContentPushNotificationsEnabledSetupLists), nullptr},
219 {"Provisional Notification", kContentPushNotificationsEnabledProvisional,
Guillem Perez749b3fc2024-02-13 19:29:49220 std::size(kContentPushNotificationsEnabledProvisional), nullptr},
Tina Wangb7f5b3f2024-05-07 06:24:26221 {"Promo Registeration Only", kContentPushNotificationsPromoRegistrationOnly,
222 std::size(kContentPushNotificationsPromoRegistrationOnly), nullptr},
223 {"Provisional Notification Registeration Only",
224 kContentPushNotificationsProvisionalRegistrationOnly,
225 std::size(kContentPushNotificationsProvisionalRegistrationOnly), nullptr},
226 {"Set up list Registeration Only",
227 kContentPushNotificationsSetUpListRegistrationOnly,
228 std::size(kContentPushNotificationsSetUpListRegistrationOnly), nullptr}};
Guillem Perez40086ef2023-11-20 20:03:52229
Chris Ludca9ce32023-09-20 16:53:50230const FeatureEntry::FeatureParam kStartSurfaceTenSeconds[] = {
gogerald53c6e7a2021-04-15 22:07:35231 {kReturnToStartSurfaceInactiveDurationInSeconds, "10"}};
Chris Ludca9ce32023-09-20 16:53:50232const FeatureEntry::FeatureParam kStartSurfaceOneHour[] = {
gogerald53c6e7a2021-04-15 22:07:35233 {kReturnToStartSurfaceInactiveDurationInSeconds, "3600"}};
Chris Lu5470417c2021-03-03 18:43:08234
gogerald0e39e3aa2021-02-10 18:41:23235const FeatureEntry::FeatureVariation kStartSurfaceVariations[] = {
Chris Ludca9ce32023-09-20 16:53:50236 {"10s:Show Home Surface", kStartSurfaceTenSeconds,
237 std::size(kStartSurfaceTenSeconds), nullptr},
238 {"1h:Show Home Surface", kStartSurfaceOneHour,
239 std::size(kStartSurfaceOneHour), nullptr},
Chris Lu5470417c2021-03-03 18:43:08240};
gogerald0e39e3aa2021-02-10 18:41:23241
Chris Luce928eb2023-05-12 21:36:26242const FeatureEntry::FeatureParam kMagicStackMostVisitedModule[] = {
243 {kMagicStackMostVisitedModuleParam, "true"},
244 {kReducedSpaceParam, "-80"}};
Chris Lu28c0ede2023-08-25 19:25:22245const FeatureEntry::FeatureParam
246 kMagicStackMostVisitedModuleHideIrrelevantModules[] = {
247 {kMagicStackMostVisitedModuleParam, "true"},
248 {kReducedSpaceParam, "-80"},
249 {kHideIrrelevantModulesParam, "true"}};
Chris Lu8cf8ef82024-03-18 18:30:54250const FeatureEntry::FeatureParam kMagicStackHidIrrelevantModules[] = {
Chris Luce928eb2023-05-12 21:36:26251 {kMagicStackMostVisitedModuleParam, "false"},
Chris Lu8cf8ef82024-03-18 18:30:54252 {kHideIrrelevantModulesParam, "true"}};
Chris Luce928eb2023-05-12 21:36:26253
254const FeatureEntry::FeatureVariation kMagicStackVariations[]{
255 {"Most Visited Tiles in Magic Stack", kMagicStackMostVisitedModule,
256 std::size(kMagicStackMostVisitedModule), nullptr},
Chris Lu28c0ede2023-08-25 19:25:22257 {"Most Visited Tiles in Magic Stack and hide irrelevant modules",
258 kMagicStackMostVisitedModuleHideIrrelevantModules,
259 std::size(kMagicStackMostVisitedModuleHideIrrelevantModules), nullptr},
Chris Lu8cf8ef82024-03-18 18:30:54260 {"Hide irrelevant modules", kMagicStackHidIrrelevantModules,
261 std::size(kMagicStackHidIrrelevantModules), nullptr},
Chris Luce928eb2023-05-12 21:36:26262};
263
Chris Lu6fd4eaf2023-08-08 18:29:30264const FeatureEntry::FeatureParam kEnableDefaultModel[] = {
265 {segmentation_platform::kDefaultModelEnabledParam, "true"}};
266
267const FeatureEntry::FeatureVariation
268 kSegmentationPlatformIosModuleRankerVariations[]{
269 {"Enabled With Default Model Parameter (Must Set this!)",
270 kEnableDefaultModel, std::size(kEnableDefaultModel), nullptr},
271 };
272
Scott Yoderaf2bdf32024-01-30 20:26:15273const FeatureEntry::FeatureParam kIOSTipsNotifications5SecondTrigger[] = {
Scott Yoder3c99d732024-08-15 19:48:31274 {kIOSTipsNotificationsUnknownTriggerTimeParam, "5s"},
275 {kIOSTipsNotificationsActiveSeekerTriggerTimeParam, "5s"},
276 {kIOSTipsNotificationsLessEngagedTriggerTimeParam, "5s"},
Scott Yoderaf2bdf32024-01-30 20:26:15277};
278const FeatureEntry::FeatureParam kIOSTipsNotifications10SecondTrigger[] = {
Scott Yoder3c99d732024-08-15 19:48:31279 {kIOSTipsNotificationsUnknownTriggerTimeParam, "10s"},
280 {kIOSTipsNotificationsActiveSeekerTriggerTimeParam, "10s"},
281 {kIOSTipsNotificationsLessEngagedTriggerTimeParam, "10s"},
Scott Yoderaf2bdf32024-01-30 20:26:15282};
Scott Yoderd2dbc87f2024-03-07 18:23:37283const FeatureEntry::FeatureParam kIOSTipsNotifications30SecondTrigger[] = {
Scott Yoder3c99d732024-08-15 19:48:31284 {kIOSTipsNotificationsUnknownTriggerTimeParam, "30s"},
285 {kIOSTipsNotificationsActiveSeekerTriggerTimeParam, "30s"},
286 {kIOSTipsNotificationsLessEngagedTriggerTimeParam, "30s"},
Scott Yoderd2dbc87f2024-03-07 18:23:37287};
Scott Yoderaf2bdf32024-01-30 20:26:15288const FeatureEntry::FeatureVariation kIOSTipsNotificationsVariations[] = {
289 {"(5s trigger)", kIOSTipsNotifications5SecondTrigger,
290 std::size(kIOSTipsNotifications10SecondTrigger), nullptr},
291 {"(10s trigger)", kIOSTipsNotifications10SecondTrigger,
292 std::size(kIOSTipsNotifications10SecondTrigger), nullptr},
Scott Yoderd2dbc87f2024-03-07 18:23:37293 {"(30s trigger)", kIOSTipsNotifications30SecondTrigger,
294 std::size(kIOSTipsNotifications10SecondTrigger), nullptr},
Scott Yoderaf2bdf32024-01-30 20:26:15295};
296
Ed Chin91e44992022-07-27 13:42:34297#if BUILDFLAG(IOS_BACKGROUND_MODE_ENABLED)
Ed Chin178ec2a2023-02-10 22:21:26298// Feed Background Refresh Feature Params.
Ed Chin321b8fe2022-08-16 07:02:01299const FeatureEntry::FeatureParam kOneHourIntervalOneHourMaxAgeOnce[] = {
Ed Chin59f617b2022-07-19 22:12:04300 {kEnableServerDrivenBackgroundRefreshSchedule, "false"},
301 {kEnableRecurringBackgroundRefreshSchedule, "false"},
Ed Chin321b8fe2022-08-16 07:02:01302 {kMaxCacheAgeInSeconds, /*60*60*/ "3600"},
Ed Chin59f617b2022-07-19 22:12:04303 {kBackgroundRefreshIntervalInSeconds, /* 60*60= */ "3600"}};
Ed Chin321b8fe2022-08-16 07:02:01304const FeatureEntry::FeatureParam kFourHourIntervalSixHourMaxAgeOnce[] = {
Ed Chin59f617b2022-07-19 22:12:04305 {kEnableServerDrivenBackgroundRefreshSchedule, "false"},
306 {kEnableRecurringBackgroundRefreshSchedule, "false"},
Ed Chin321b8fe2022-08-16 07:02:01307 {kMaxCacheAgeInSeconds, /*6*60*60*/ "21600"},
Ed Chin59f617b2022-07-19 22:12:04308 {kBackgroundRefreshIntervalInSeconds, /* 4*60*60= */ "14400"}};
Ed Chin321b8fe2022-08-16 07:02:01309const FeatureEntry::FeatureParam kOneHourIntervalOneHourMaxAgeRecurring[] = {
Ed Chin59f617b2022-07-19 22:12:04310 {kEnableServerDrivenBackgroundRefreshSchedule, "false"},
311 {kEnableRecurringBackgroundRefreshSchedule, "true"},
Ed Chin321b8fe2022-08-16 07:02:01312 {kMaxCacheAgeInSeconds, /*60*60*/ "3600"},
Ed Chin59f617b2022-07-19 22:12:04313 {kBackgroundRefreshIntervalInSeconds, /* 60*60= */ "3600"}};
Ed Chin321b8fe2022-08-16 07:02:01314const FeatureEntry::FeatureParam kFourHourIntervalSixHourMaxAgeRecurring[] = {
Ed Chin59f617b2022-07-19 22:12:04315 {kEnableServerDrivenBackgroundRefreshSchedule, "false"},
316 {kEnableRecurringBackgroundRefreshSchedule, "true"},
Ed Chin321b8fe2022-08-16 07:02:01317 {kMaxCacheAgeInSeconds, /*6*60*60*/ "21600"},
Ed Chin59f617b2022-07-19 22:12:04318 {kBackgroundRefreshIntervalInSeconds, /* 4*60*60= */ "14400"}};
Ed Chin321b8fe2022-08-16 07:02:01319const FeatureEntry::FeatureParam kServerDrivenOneHourMaxAgeOnce[] = {
Ed Chin59f617b2022-07-19 22:12:04320 {kEnableServerDrivenBackgroundRefreshSchedule, "true"},
321 {kEnableRecurringBackgroundRefreshSchedule, "false"},
Ed Chin321b8fe2022-08-16 07:02:01322 {kMaxCacheAgeInSeconds, /*60*60*/ "3600"},
323 {kBackgroundRefreshIntervalInSeconds, "0"}};
324const FeatureEntry::FeatureParam kServerDrivenOneHourMaxAgeRecurring[] = {
Ed Chin59f617b2022-07-19 22:12:04325 {kEnableServerDrivenBackgroundRefreshSchedule, "true"},
326 {kEnableRecurringBackgroundRefreshSchedule, "true"},
Ed Chin321b8fe2022-08-16 07:02:01327 {kMaxCacheAgeInSeconds, /*60*60*/ "3600"},
328 {kBackgroundRefreshIntervalInSeconds, "0"}};
329const FeatureEntry::FeatureParam kServerDrivenSixHourMaxAgeOnce[] = {
330 {kEnableServerDrivenBackgroundRefreshSchedule, "true"},
331 {kEnableRecurringBackgroundRefreshSchedule, "false"},
332 {kMaxCacheAgeInSeconds, /*6*60*60*/ "21600"},
333 {kBackgroundRefreshIntervalInSeconds, "0"}};
334const FeatureEntry::FeatureParam kServerDrivenSixHourMaxAgeRecurring[] = {
335 {kEnableServerDrivenBackgroundRefreshSchedule, "true"},
336 {kEnableRecurringBackgroundRefreshSchedule, "true"},
337 {kMaxCacheAgeInSeconds, /*6*60*60*/ "21600"},
338 {kBackgroundRefreshIntervalInSeconds, "0"}};
Ed Chin59f617b2022-07-19 22:12:04339
Ed Chin178ec2a2023-02-10 22:21:26340// Feed Background Refresh Feature Variations.
Ed Chin59f617b2022-07-19 22:12:04341const FeatureEntry::FeatureVariation kFeedBackgroundRefreshVariations[] = {
Ed Chin321b8fe2022-08-16 07:02:01342 {"1hr Interval 1hr Max Age Once", kOneHourIntervalOneHourMaxAgeOnce,
343 std::size(kOneHourIntervalOneHourMaxAgeOnce), nullptr},
344 {"4hr Interval 6hr Max Age Once", kFourHourIntervalSixHourMaxAgeOnce,
345 std::size(kFourHourIntervalSixHourMaxAgeOnce), nullptr},
346 {"1hr Interval 1hr Max Age Recurring",
347 kOneHourIntervalOneHourMaxAgeRecurring,
348 std::size(kOneHourIntervalOneHourMaxAgeRecurring), nullptr},
349 {"4hr Interval 6hr Max Age Recurring",
350 kFourHourIntervalSixHourMaxAgeRecurring,
351 std::size(kFourHourIntervalSixHourMaxAgeRecurring), nullptr},
352 {"Server Driven 1hr Max Age Once", kServerDrivenOneHourMaxAgeOnce,
353 std::size(kServerDrivenOneHourMaxAgeOnce), nullptr},
354 {"Server Driven 1hr Max Age Recurring", kServerDrivenOneHourMaxAgeRecurring,
355 std::size(kServerDrivenOneHourMaxAgeRecurring), nullptr},
356 {"Server Driven 6hr Max Age Once", kServerDrivenSixHourMaxAgeOnce,
357 std::size(kServerDrivenSixHourMaxAgeOnce), nullptr},
358 {"Server Driven 6hr Max Age Recurring", kServerDrivenSixHourMaxAgeRecurring,
359 std::size(kServerDrivenSixHourMaxAgeRecurring), nullptr},
Ed Chin59f617b2022-07-19 22:12:04360};
Ed Chin91e44992022-07-27 13:42:34361#endif // BUILDFLAG(IOS_BACKGROUND_MODE_ENABLED)
Ed Chin59f617b2022-07-19 22:12:04362
David Jeanf361ae9d2024-04-09 08:19:47363const FeatureEntry::FeatureParam kEnableExpKitTextClassifierAddressOneTap[] = {
364 {kTextClassifierAddressParameterName, "true"}};
365const FeatureEntry::FeatureVariation
366 kEnableExpKitTextClassifierAddressVariations[] = {
367 {"Long-Press and One-Tap", kEnableExpKitTextClassifierAddressOneTap,
368 std::size(kEnableExpKitTextClassifierAddressOneTap), nullptr}};
369
370const FeatureEntry::FeatureParam
371 kEnableExpKitTextClassifierPhoneNumberOneTap[] = {
372 {kTextClassifierPhoneNumberParameterName, "true"}};
373const FeatureEntry::FeatureVariation
374 kEnableExpKitTextClassifierPhoneNumberVariations[] = {
375 {"Long-Press and One-Tap", kEnableExpKitTextClassifierPhoneNumberOneTap,
376 std::size(kEnableExpKitTextClassifierPhoneNumberOneTap), nullptr}};
377
378const FeatureEntry::FeatureParam kEnableExpKitTextClassifierEmailOneTap[] = {
379 {kTextClassifierEmailParameterName, "true"}};
380const FeatureEntry::FeatureVariation
381 kEnableExpKitTextClassifierEmailVariations[] = {
382 {"Long-Press and One-Tap", kEnableExpKitTextClassifierEmailOneTap,
383 std::size(kEnableExpKitTextClassifierEmailOneTap), nullptr}};
Raj T18a2c8c2023-03-15 17:20:15384
Ewann Pellea2bcb3a2023-08-28 13:53:00385const FeatureEntry::FeatureParam kTabResumptionMostRecentTabOnly[] = {
386 {kTabResumptionParameterName, kTabResumptionMostRecentTabOnlyParam}};
387const FeatureEntry::FeatureParam kTabResumptionAllTabs[] = {
388 {kTabResumptionParameterName, kTabResumptionAllTabsParam}};
Ewann Pelleb08ee062023-10-16 10:04:48389const FeatureEntry::FeatureParam kTabResumptionAllTabsOneDayThreshold[] = {
Olivier Robinbb46d05d2024-06-25 17:56:35390 {kTabResumptionParameterName, kTabResumptionAllTabsParam},
391 {kTabResumptionThresholdParameterName, /* 24 hours */ "86400"}};
Ewann Pellea2bcb3a2023-08-28 13:53:00392
393const FeatureEntry::FeatureVariation kTabResumptionVariations[] = {
394 {"Most recent tab only", kTabResumptionMostRecentTabOnly,
395 std::size(kTabResumptionMostRecentTabOnly), nullptr},
Ewann Pelleb08ee062023-10-16 10:04:48396 {"Most recent tab and last synced tab (12 hours threshold)",
397 kTabResumptionAllTabs, std::size(kTabResumptionAllTabs), nullptr},
398 {"Most recent tab and last synced tab (24 hours threshold)",
399 kTabResumptionAllTabsOneDayThreshold,
Olivier Robin08bc56d02024-06-05 14:05:18400 std::size(kTabResumptionAllTabsOneDayThreshold), nullptr}};
Ewann Pelle6eecb8f2023-06-23 14:31:37401
Olivier ROBIN2613bcd02023-04-20 10:00:47402
Christian Xu07d600192023-07-24 12:29:52403const FeatureEntry::FeatureParam kBottomOmniboxDefaultSettingTop[] = {
404 {kBottomOmniboxDefaultSettingParam, kBottomOmniboxDefaultSettingParamTop}};
405const FeatureEntry::FeatureParam kBottomOmniboxDefaultSettingBottom[] = {
406 {kBottomOmniboxDefaultSettingParam,
407 kBottomOmniboxDefaultSettingParamBottom}};
408const FeatureEntry::FeatureParam kBottomOmniboxDefaultSettingSafariSwitcher[] =
409 {{kBottomOmniboxDefaultSettingParam,
410 kBottomOmniboxDefaultSettingParamSafariSwitcher}};
411const FeatureEntry::FeatureVariation kBottomOmniboxDefaultSettingVariations[] =
412 {
413 {"Top", kBottomOmniboxDefaultSettingTop,
414 std::size(kBottomOmniboxDefaultSettingTop), nullptr},
415 {"Bottom", kBottomOmniboxDefaultSettingBottom,
416 std::size(kBottomOmniboxDefaultSettingBottom), nullptr},
417 {"Bottom for Safari Switcher",
418 kBottomOmniboxDefaultSettingSafariSwitcher,
419 std::size(kBottomOmniboxDefaultSettingSafariSwitcher), nullptr},
420};
421
Cheick Cisse85457f22024-05-23 22:37:59422constexpr flags_ui::FeatureEntry::FeatureParam kPriceInsightsPriceIsLowParam[] =
423 {{kLowPriceParam, kLowPriceParamPriceIsLow}};
424constexpr flags_ui::FeatureEntry::FeatureParam
425 kPriceInsightsGoodDealNowParam[] = {
426 {kLowPriceParam, kLowPriceParamGoodDealNow}};
427constexpr flags_ui::FeatureEntry::FeatureParam
428 kPriceInsightsSeePriceHistoryParam[] = {
429 {kLowPriceParam, kLowPriceParamSeePriceHistory}};
430constexpr flags_ui::FeatureEntry::FeatureVariation kPriceInsightsVariations[] =
431 {{"Price is low", kPriceInsightsPriceIsLowParam,
432 std::size(kPriceInsightsPriceIsLowParam), nullptr},
433 {"Good deal now", kPriceInsightsGoodDealNowParam,
434 std::size(kPriceInsightsGoodDealNowParam), nullptr},
435 {"See price history", kPriceInsightsSeePriceHistoryParam,
436 std::size(kPriceInsightsSeePriceHistoryParam), nullptr}};
437
Christian Xu10b84d72024-04-09 17:12:33438const FeatureEntry::FeatureParam kRichAutocompletionImplementationLabel[] = {
439 {kRichAutocompletionParam, kRichAutocompletionParamLabel}};
Christian Xua17f9b72024-04-22 10:22:31440const FeatureEntry::FeatureParam
Christian Xu2cf421f2024-05-17 19:23:52441 kRichAutocompletionImplementationTextField3Chars[] = {
442 {kRichAutocompletionParam, kRichAutocompletionParamTextField},
Christian Xu7bb33bc2024-05-29 15:10:52443 {"RichAutocompletionAutocompleteShortcutTextMinChar", "3"},
444 {"RichAutocompletionAutocompleteTitlesMinChar", "3"}};
Christian Xu2cf421f2024-05-17 19:23:52445const FeatureEntry::FeatureParam
446 kRichAutocompletionImplementationTextField4Chars[] = {
447 {kRichAutocompletionParam, kRichAutocompletionParamTextField},
Christian Xu7bb33bc2024-05-29 15:10:52448 {"RichAutocompletionAutocompleteShortcutTextMinChar", "4"},
449 {"RichAutocompletionAutocompleteTitlesMinChar", "4"}};
Christian Xu2cf421f2024-05-17 19:23:52450const FeatureEntry::FeatureParam
451 kRichAutocompletionImplementationNoAdditionalText3Chars[] = {
452 {kRichAutocompletionParam, kRichAutocompletionParamNoAdditionalText},
Christian Xu7bb33bc2024-05-29 15:10:52453 {"RichAutocompletionAutocompleteShortcutTextMinChar", "3"},
454 {"RichAutocompletionAutocompleteTitlesMinChar", "3"}};
Christian Xu2cf421f2024-05-17 19:23:52455const FeatureEntry::FeatureParam
456 kRichAutocompletionImplementationNoAdditionalText4Chars[] = {
457 {kRichAutocompletionParam, kRichAutocompletionParamNoAdditionalText},
Christian Xu7bb33bc2024-05-29 15:10:52458 {"RichAutocompletionAutocompleteShortcutTextMinChar", "4"},
459 {"RichAutocompletionAutocompleteTitlesMinChar", "4"}};
Christian Xu10b84d72024-04-09 17:12:33460const FeatureEntry::FeatureVariation
461 kRichAutocompletionImplementationVariations[] = {
462 {"In Label", kRichAutocompletionImplementationLabel,
463 std::size(kRichAutocompletionImplementationLabel), nullptr},
Christian Xu2cf421f2024-05-17 19:23:52464 {"In TextField, 3 Min Chars",
465 kRichAutocompletionImplementationTextField3Chars,
466 std::size(kRichAutocompletionImplementationTextField3Chars), nullptr},
467 {"In TextField, 4 Min Chars",
468 kRichAutocompletionImplementationTextField4Chars,
469 std::size(kRichAutocompletionImplementationTextField4Chars), nullptr},
470 {"No Additional Text, 3 Min Chars",
471 kRichAutocompletionImplementationNoAdditionalText3Chars,
472 std::size(kRichAutocompletionImplementationNoAdditionalText3Chars),
473 nullptr},
474 {"No Additional Text, 4 Min Chars",
475 kRichAutocompletionImplementationNoAdditionalText4Chars,
476 std::size(kRichAutocompletionImplementationNoAdditionalText4Chars),
477 nullptr},
Christian Xu10b84d72024-04-09 17:12:33478};
479
Olivier ROBIN82b67002023-07-31 14:34:46480const FeatureEntry::FeatureParam kOneTapForMapsConsentModeDefault[] = {
481 {web::features::kOneTapForMapsConsentModeParamTitle,
482 web::features::kOneTapForMapsConsentModeDefaultParam}};
483const FeatureEntry::FeatureParam kOneTapForMapsConsentModeForced[] = {
484 {web::features::kOneTapForMapsConsentModeParamTitle,
485 web::features::kOneTapForMapsConsentModeForcedParam}};
486const FeatureEntry::FeatureParam kOneTapForMapsConsentModeDisabled[] = {
487 {web::features::kOneTapForMapsConsentModeParamTitle,
488 web::features::kOneTapForMapsConsentModeDisabledParam}};
Olivier ROBIN333f0b542023-09-01 14:53:31489const FeatureEntry::FeatureParam kOneTapForMapsConsentModeIPH[] = {
490 {web::features::kOneTapForMapsConsentModeParamTitle,
491 web::features::kOneTapForMapsConsentModeIPHParam}};
492const FeatureEntry::FeatureParam kOneTapForMapsConsentModeIPHForced[] = {
493 {web::features::kOneTapForMapsConsentModeParamTitle,
494 web::features::kOneTapForMapsConsentModeIPHForcedParam}};
Olivier ROBIN82b67002023-07-31 14:34:46495const FeatureEntry::FeatureVariation kOneTapForMapsWithVariations[] = {
496 {"Consent Default", kOneTapForMapsConsentModeDefault,
497 std::size(kOneTapForMapsConsentModeDefault), nullptr},
498 {"Consent Forced", kOneTapForMapsConsentModeForced,
499 std::size(kOneTapForMapsConsentModeForced), nullptr},
Olivier ROBIN333f0b542023-09-01 14:53:31500 {"Consent IPH", kOneTapForMapsConsentModeIPH,
501 std::size(kOneTapForMapsConsentModeIPH), nullptr},
502 {"Consent IPH forced", kOneTapForMapsConsentModeIPHForced,
503 std::size(kOneTapForMapsConsentModeIPHForced), nullptr},
Olivier ROBIN82b67002023-07-31 14:34:46504 {"Consent Disabled", kOneTapForMapsConsentModeDisabled,
505 std::size(kOneTapForMapsConsentModeDisabled), nullptr},
506};
507
Benjamin Williams1dc8f2342024-01-04 21:25:55508const FeatureEntry::FeatureParam kIOSDockingPromoDisplayedAfterFRE[] = {
509 {kIOSDockingPromoExperimentType, "0"}};
510const FeatureEntry::FeatureParam kIOSDockingPromoDisplayedAtAppLaunch[] = {
511 {kIOSDockingPromoExperimentType, "1"}};
512const FeatureEntry::FeatureParam kIOSDockingPromoDisplayedDuringFRE[] = {
513 {kIOSDockingPromoExperimentType, "2"}};
514
515const FeatureEntry::FeatureVariation kIOSDockingPromoVariations[] = {
516 {"Display promo after FRE", kIOSDockingPromoDisplayedAfterFRE,
517 std::size(kIOSDockingPromoDisplayedAfterFRE), nullptr},
518 {"Display promo at app launch", kIOSDockingPromoDisplayedAtAppLaunch,
519 std::size(kIOSDockingPromoDisplayedAtAppLaunch), nullptr},
520 {"Display promo during FRE", kIOSDockingPromoDisplayedDuringFRE,
521 std::size(kIOSDockingPromoDisplayedDuringFRE), nullptr}};
522
Ewann Pellec8634ab2024-02-23 16:50:35523const FeatureEntry::FeatureParam kModernTabStripNTBDynamic[] = {
524 {kModernTabStripParameterName, kModernTabStripNTBDynamicParam}};
525const FeatureEntry::FeatureParam kModernTabStripNTBStatic[] = {
526 {kModernTabStripParameterName, kModernTabStripNTBStaticParam}};
Gauthier Ambardf1cd72f2024-10-08 16:15:33527const FeatureEntry::FeatureParam kModernTabStripCloserNTBOption[] = {
528 {kModernTabStripCloserNTB, "true"},
529 {kModernTabStripBiggerNTB, "true"}};
530const FeatureEntry::FeatureParam kModernTabStripDarkerBackgroundOption[] = {
531 {kModernTabStripDarkerBackground, "true"},
532 {kModernTabStripBiggerNTB, "true"}};
533const FeatureEntry::FeatureParam
534 kModernTabStripCloserNTBDarkerBackgroundOption[] = {
535 {kModernTabStripDarkerBackground, "true"},
536 {kModernTabStripCloserNTB, "true"},
537 {kModernTabStripBiggerNTB, "true"}};
538const FeatureEntry::FeatureParam kModernTabStripNTBNoBackgroundOption[] = {
539 {kModernTabStripNTBNoBackground, "true"},
540 {kModernTabStripBiggerNTB, "true"}};
541const FeatureEntry::FeatureParam kModernTabStripBlackBackgroundOption[] = {
542 {kModernTabStripBlackBackground, "true"},
543 {kModernTabStripNTBNoBackground, "true"},
544 {kModernTabStripBiggerNTB, "true"}};
Ewann Pellec8634ab2024-02-23 16:50:35545
Gauthier Ambard13b1a742024-10-09 07:53:22546const FeatureEntry::FeatureParam kModernTabStripCloseButtonVisibleOption[] = {
Gauthier Ambard5ae1e11c2024-10-09 15:11:25547 {kModernTabStripCloseButtonsVisible, "true"},
548 {kModernTabStripCloserNTB, "true"},
Gauthier Ambard6a26ebd2024-10-14 11:12:41549 {kModernTabStripHighContrastNTB, "true"},
Gauthier Ambard5ae1e11c2024-10-09 15:11:25550 {kModernTabStripBiggerNTB, "true"}};
Gauthier Ambard13b1a742024-10-09 07:53:22551const FeatureEntry::FeatureParam
552 kModernTabStripInactiveTabsHighContrastOption[] = {
553 {kModernTabStripInactiveTabsHighContrast, "true"},
Gauthier Ambard5ae1e11c2024-10-09 15:11:25554 {kModernTabStripCloserNTB, "true"},
555 {kModernTabStripDarkerBackgroundV3, "true"},
Gauthier Ambard6a26ebd2024-10-14 11:12:41556 {kModernTabStripHighContrastNTB, "true"},
Gauthier Ambard5ae1e11c2024-10-09 15:11:25557 {kModernTabStripBiggerNTB, "true"}};
Gauthier Ambard13b1a742024-10-09 07:53:22558const FeatureEntry::FeatureParam kModernTabStripHighContrastNTBOption[] = {
Gauthier Ambard5ae1e11c2024-10-09 15:11:25559 {kModernTabStripHighContrastNTB, "true"},
Gauthier Ambard4934d1c2024-10-10 13:49:50560 {kModernTabStripNTBNoBackground, "true"},
Gauthier Ambard5ae1e11c2024-10-09 15:11:25561 {kModernTabStripCloserNTB, "true"},
562 {kModernTabStripBiggerNTB, "true"}};
Gauthier Ambardcfa64ec02024-10-11 14:56:42563const FeatureEntry::FeatureParam kModernTabStripV3AllOptions[] = {
Gauthier Ambard13b1a742024-10-09 07:53:22564 {kModernTabStripCloseButtonsVisible, "true"},
Gauthier Ambard4934d1c2024-10-10 13:49:50565 {kModernTabStripNTBNoBackground, "true"},
Gauthier Ambard13b1a742024-10-09 07:53:22566 {kModernTabStripInactiveTabsHighContrast, "true"},
Gauthier Ambard5ae1e11c2024-10-09 15:11:25567 {kModernTabStripCloserNTB, "true"},
Gauthier Ambard13b1a742024-10-09 07:53:22568 {kModernTabStripHighContrastNTB, "true"},
Gauthier Ambard5ae1e11c2024-10-09 15:11:25569 {kModernTabStripDarkerBackgroundV3, "true"},
570 {kModernTabStripBiggerNTB, "true"}};
Gauthier Ambardcfa64ec02024-10-11 14:56:42571const FeatureEntry::FeatureParam kModernTabStripDetachedTabsOptions[] = {
572 {kModernTabStripCloseButtonsVisible, "true"},
573 {kModernTabStripHighContrastNTB, "true"},
574 {kModernTabStripInactiveTabsHighContrast, "true"},
Gauthier Ambard6a26ebd2024-10-14 11:12:41575 {kModernTabStripDarkerBackgroundV3, "true"},
Gauthier Ambardcfa64ec02024-10-11 14:56:42576 {kModernTabStripDetachedTabs, "true"},
577 {kModernTabStripCloserNTB, "true"},
578 {kModernTabStripNTBNoBackground, "true"},
579 {kModernTabStripBiggerNTB, "true"}};
Gauthier Ambard13b1a742024-10-09 07:53:22580
Ewann Pellec8634ab2024-02-23 16:50:35581const FeatureEntry::FeatureVariation kModernTabStripVariations[] = {
582 {"New tab button dynamic", kModernTabStripNTBDynamic,
583 std::size(kModernTabStripNTBDynamic), nullptr},
584 {"New tab button static", kModernTabStripNTBStatic,
585 std::size(kModernTabStripNTBStatic), nullptr},
Gauthier Ambardf1cd72f2024-10-08 16:15:33586 {"Closer NTB", kModernTabStripCloserNTBOption,
587 std::size(kModernTabStripCloserNTBOption), nullptr},
588 {"Darker background", kModernTabStripDarkerBackgroundOption,
589 std::size(kModernTabStripDarkerBackgroundOption), nullptr},
590 {"Closer NTB + darker background",
591 kModernTabStripCloserNTBDarkerBackgroundOption,
592 std::size(kModernTabStripCloserNTBDarkerBackgroundOption), nullptr},
593 {"NTB no background", kModernTabStripNTBNoBackgroundOption,
594 std::size(kModernTabStripNTBNoBackgroundOption), nullptr},
595 {"Black background", kModernTabStripBlackBackgroundOption,
596 std::size(kModernTabStripBlackBackgroundOption), nullptr},
Gauthier Ambard13b1a742024-10-09 07:53:22597 {"V3 Close buttons", kModernTabStripCloseButtonVisibleOption,
598 std::size(kModernTabStripCloseButtonVisibleOption), nullptr},
599 {"V3 High Contrast tabs", kModernTabStripInactiveTabsHighContrastOption,
600 std::size(kModernTabStripInactiveTabsHighContrastOption), nullptr},
601 {"V3 Visible NTB", kModernTabStripHighContrastNTBOption,
602 std::size(kModernTabStripHighContrastNTBOption), nullptr},
Gauthier Ambardcfa64ec02024-10-11 14:56:42603 {"V3 all options", kModernTabStripV3AllOptions,
604 std::size(kModernTabStripV3AllOptions), nullptr},
605 {"V3 detached tabs", kModernTabStripDetachedTabsOptions,
606 std::size(kModernTabStripDetachedTabsOptions), nullptr},
Ewann Pellec8634ab2024-02-23 16:50:35607};
608
Olivier ROBINcb76f4fe2024-06-05 16:11:42609const FeatureEntry::FeatureVariation
610 kImageServiceOptimizationGuideSalientImagesVariations[] = {
611 {"High Performance Canonicalization", nullptr, 0, "3362133"},
612};
613
Olivier Robinf8374f12024-06-05 19:00:04614const FeatureEntry::FeatureParam kTabResumption15DisableSeeMoreButtonImages[] =
615 {{kTR15SeeMoreButtonParam, "false"}};
Olivier Robinf8374f12024-06-05 19:00:04616
617const FeatureEntry::FeatureVariation kTabResumption15Variations[] = {
Olivier Robinf8374f12024-06-05 19:00:04618 {"No See More Button", kTabResumption15DisableSeeMoreButtonImages,
619 std::size(kTabResumption15DisableSeeMoreButtonImages), nullptr},
Olivier Robinf8374f12024-06-05 19:00:04620};
Olivier ROBINb17c14b92024-10-09 13:49:13621
622const FeatureEntry::FeatureParam kTabResumptionImagesOnlyThumbnail[] = {
623 {kTabResumptionImagesTypes, kTabResumptionImagesTypesThumbnails}};
624const FeatureEntry::FeatureParam kTabResumptionImagesOnlySalient[] = {
625 {kTabResumptionImagesTypes, kTabResumptionImagesTypesSalient}};
626
627const FeatureEntry::FeatureVariation kTabResumptionImagesVariations[] = {
628 {"Only thumbnails", kTabResumptionImagesOnlyThumbnail,
629 std::size(kTabResumptionImagesOnlyThumbnail), nullptr},
630 {"Only salient", kTabResumptionImagesOnlySalient,
631 std::size(kTabResumptionImagesOnlySalient), nullptr},
632};
633
Charles Yangf8e7adf2024-06-11 00:17:00634// Uses int values from Lens filters ablation mode enum.
635const FeatureEntry::FeatureParam kLensFiltersAblationModeDisabled[] = {
636 {kLensFiltersAblationMode, "0"}};
637const FeatureEntry::FeatureParam kLensFiltersAblationModePostCapture[] = {
638 {kLensFiltersAblationMode, "1"}};
639const FeatureEntry::FeatureParam kLensFiltersAblationModeLVF[] = {
640 {kLensFiltersAblationMode, "2"}};
641const FeatureEntry::FeatureParam kLensFiltersAblationModeAlways[] = {
642 {kLensFiltersAblationMode, "3"}};
643
644const FeatureEntry::FeatureVariation kLensFiltersAblationModeVariations[] = {
645 {"(Disabled)", kLensFiltersAblationModeDisabled,
646 std::size(kLensFiltersAblationModeDisabled), nullptr},
647 {"(Post Capture)", kLensFiltersAblationModePostCapture,
648 std::size(kLensFiltersAblationModePostCapture), nullptr},
649 {"(LVF)", kLensFiltersAblationModeLVF,
650 std::size(kLensFiltersAblationModeLVF), nullptr},
651 {"(Always)", kLensFiltersAblationModeAlways,
652 std::size(kLensFiltersAblationModeAlways), nullptr}};
653
654// Uses int values from Lens translate toggle mode enum.
655const FeatureEntry::FeatureParam kLensTranslateToggleModeDisabled[] = {
656 {kLensTranslateToggleMode, "0"}};
657const FeatureEntry::FeatureParam kLensTranslateToggleModePostCapture[] = {
658 {kLensTranslateToggleMode, "1"}};
659const FeatureEntry::FeatureParam kLensTranslateToggleModeLVF[] = {
660 {kLensTranslateToggleMode, "2"}};
661const FeatureEntry::FeatureParam kLensTranslateToggleModeAlways[] = {
662 {kLensTranslateToggleMode, "3"}};
663
664const FeatureEntry::FeatureVariation kLensTranslateToggleModeVariations[] = {
665 {"(Disabled)", kLensTranslateToggleModeDisabled,
666 std::size(kLensTranslateToggleModeDisabled), nullptr},
667 {"(Post Capture)", kLensTranslateToggleModePostCapture,
668 std::size(kLensTranslateToggleModePostCapture), nullptr},
669 {"(LVF)", kLensTranslateToggleModeLVF,
670 std::size(kLensTranslateToggleModeLVF), nullptr},
671 {"(Always)", kLensTranslateToggleModeAlways,
672 std::size(kLensTranslateToggleModeAlways), nullptr}};
Olivier Robinf8374f12024-06-05 19:00:04673
Khalid Peer7cf75a22024-06-13 17:25:49674const FeatureEntry::FeatureParam
675 kMlUrlPiecewiseMappedSearchBlendingAdjustedBy0[] = {
676 {"MlUrlPiecewiseMappedSearchBlending", "true"},
677 {"MlUrlPiecewiseMappedSearchBlending_BreakPoints",
678 "0,550;0.018,1300;0.14,1398;1,1422"},
679 {"MlUrlPiecewiseMappedSearchBlending_GroupingThreshold", "1400"},
680 {"MlUrlPiecewiseMappedSearchBlending_RelevanceBias", "0"}};
681const FeatureEntry::FeatureParam
Khalid Peer9c07798f2024-07-15 22:39:41682 kMlUrlPiecewiseMappedSearchBlendingDemotedBy50[] = {
Khalid Peer7cf75a22024-06-13 17:25:49683 {"MlUrlPiecewiseMappedSearchBlending", "true"},
684 {"MlUrlPiecewiseMappedSearchBlending_BreakPoints",
685 "0,550;0.018,1250;0.14,1348;1,1422"},
686 {"MlUrlPiecewiseMappedSearchBlending_GroupingThreshold", "1350"},
687 {"MlUrlPiecewiseMappedSearchBlending_RelevanceBias", "0"}};
688const FeatureEntry::FeatureParam
Khalid Peer9c07798f2024-07-15 22:39:41689 kMlUrlPiecewiseMappedSearchBlendingPromotedBy50[] = {
Khalid Peer7cf75a22024-06-13 17:25:49690 {"MlUrlPiecewiseMappedSearchBlending", "true"},
691 {"MlUrlPiecewiseMappedSearchBlending_BreakPoints",
Khalid Peer9c07798f2024-07-15 22:39:41692 "0,550;0.018,1350;0.14,1448;1,1472"},
693 {"MlUrlPiecewiseMappedSearchBlending_GroupingThreshold", "1450"},
Khalid Peer7cf75a22024-06-13 17:25:49694 {"MlUrlPiecewiseMappedSearchBlending_RelevanceBias", "0"}};
695const FeatureEntry::FeatureParam
Khalid Peer9c07798f2024-07-15 22:39:41696 kMlUrlPiecewiseMappedSearchBlendingPromotedBy100[] = {
Khalid Peer7cf75a22024-06-13 17:25:49697 {"MlUrlPiecewiseMappedSearchBlending", "true"},
698 {"MlUrlPiecewiseMappedSearchBlending_BreakPoints",
Khalid Peer9c07798f2024-07-15 22:39:41699 "0,550;0.018,1400;0.14,1498;1,1522"},
700 {"MlUrlPiecewiseMappedSearchBlending_GroupingThreshold", "1500"},
Khalid Peer7cf75a22024-06-13 17:25:49701 {"MlUrlPiecewiseMappedSearchBlending_RelevanceBias", "0"}};
Khalid Peer4501c1f2024-06-27 16:12:04702const FeatureEntry::FeatureParam
703 kMlUrlPiecewiseMappedSearchBlendingMobileMapping[] = {
704 {"MlUrlPiecewiseMappedSearchBlending", "true"},
705 {"MlUrlPiecewiseMappedSearchBlending_BreakPoints",
Khalid Peer5c9bd9e2024-07-17 17:16:42706 "0,590;0.006,790;0.082,1290;0.443,1360;0.464,1400;0.987,1425;1,1530"},
Khalid Peer4501c1f2024-06-27 16:12:04707 {"MlUrlPiecewiseMappedSearchBlending_GroupingThreshold", "1340"},
708 {"MlUrlPiecewiseMappedSearchBlending_RelevanceBias", "0"}};
Khalid Peer7cf75a22024-06-13 17:25:49709
710const FeatureEntry::FeatureVariation
711 kMlUrlPiecewiseMappedSearchBlendingVariations[] = {
712 {"adjusted by 0", kMlUrlPiecewiseMappedSearchBlendingAdjustedBy0,
713 std::size(kMlUrlPiecewiseMappedSearchBlendingAdjustedBy0), nullptr},
Khalid Peer9c07798f2024-07-15 22:39:41714 {"demoted by 50", kMlUrlPiecewiseMappedSearchBlendingDemotedBy50,
715 std::size(kMlUrlPiecewiseMappedSearchBlendingDemotedBy50), nullptr},
716 {"promoted by 50", kMlUrlPiecewiseMappedSearchBlendingPromotedBy50,
717 std::size(kMlUrlPiecewiseMappedSearchBlendingPromotedBy50), nullptr},
718 {"promoted by 100", kMlUrlPiecewiseMappedSearchBlendingPromotedBy100,
719 std::size(kMlUrlPiecewiseMappedSearchBlendingPromotedBy100), nullptr},
Khalid Peer4501c1f2024-06-27 16:12:04720 {"mobile mapping", kMlUrlPiecewiseMappedSearchBlendingMobileMapping,
721 std::size(kMlUrlPiecewiseMappedSearchBlendingMobileMapping), nullptr},
Khalid Peer7cf75a22024-06-13 17:25:49722};
723
724const FeatureEntry::FeatureParam kOmniboxMlUrlScoringEnabledWithFixes[] = {
725 {"enable_scoring_signals_annotators_for_ml_scoring", "true"},
726 {"MlUrlScoringShortcutDocumentSignals", "true"},
727};
728const FeatureEntry::FeatureParam kOmniboxMlUrlScoringUnlimitedNumCandidates[] =
729 {
730 {"MlUrlScoringUnlimitedNumCandidates", "true"},
731 {"enable_scoring_signals_annotators_for_ml_scoring", "true"},
732 {"MlUrlScoringShortcutDocumentSignals", "true"},
733};
734// Sets Bookmark(1), History Quick(4), History URL(8), Shortcuts(64),
735// Document(512), and History Fuzzy(65536) providers max matches to 10.
736const FeatureEntry::FeatureParam kOmniboxMlUrlScoringMaxMatchesByProvider10[] =
737 {
738 {"MlUrlScoringMaxMatchesByProvider",
739 "1:10,4:10,8:10,64:10,512:10,65536:10"},
740 {"enable_scoring_signals_annotators_for_ml_scoring", "true"},
741 {"MlUrlScoringShortcutDocumentSignals", "true"},
742};
743
744const FeatureEntry::FeatureVariation kOmniboxMlUrlScoringVariations[] = {
745 {"Enabled with fixes", kOmniboxMlUrlScoringEnabledWithFixes,
746 std::size(kOmniboxMlUrlScoringEnabledWithFixes), nullptr},
747 {"unlimited suggestion candidates",
748 kOmniboxMlUrlScoringUnlimitedNumCandidates,
749 std::size(kOmniboxMlUrlScoringUnlimitedNumCandidates), nullptr},
750 {"Increase provider max limit to 10",
751 kOmniboxMlUrlScoringMaxMatchesByProvider10,
752 std::size(kOmniboxMlUrlScoringMaxMatchesByProvider10), nullptr},
753};
754
755const FeatureEntry::FeatureParam kMlUrlSearchBlendingStable[] = {
756 {"MlUrlSearchBlending_StableSearchBlending", "true"},
757 {"MlUrlSearchBlending_MappedSearchBlending", "false"},
758};
759const FeatureEntry::FeatureParam kMlUrlSearchBlendingMappedConservativeUrls[] =
760 {
761 {"MlUrlSearchBlending_StableSearchBlending", "false"},
762 {"MlUrlSearchBlending_MappedSearchBlending", "true"},
763 {"MlUrlSearchBlending_MappedSearchBlendingMin", "0"},
764 {"MlUrlSearchBlending_MappedSearchBlendingMax", "2000"},
765 {"MlUrlSearchBlending_MappedSearchBlendingGroupingThreshold", "1000"},
766};
767const FeatureEntry::FeatureParam kMlUrlSearchBlendingMappedModerateUrls[] = {
768 {"MlUrlSearchBlending_StableSearchBlending", "false"},
769 {"MlUrlSearchBlending_MappedSearchBlending", "true"},
770};
771const FeatureEntry::FeatureParam kMlUrlSearchBlendingMappedAggressiveUrls[] = {
772 {"MlUrlSearchBlending_StableSearchBlending", "false"},
773 {"MlUrlSearchBlending_MappedSearchBlending", "true"},
774 {"MlUrlSearchBlending_MappedSearchBlendingMin", "1000"},
775 {"MlUrlSearchBlending_MappedSearchBlendingMax", "4000"},
776 {"MlUrlSearchBlending_MappedSearchBlendingGroupingThreshold", "1500"},
777};
778
779const FeatureEntry::FeatureVariation kMlUrlSearchBlendingVariations[] = {
780 {"Stable", kMlUrlSearchBlendingStable,
781 std::size(kMlUrlSearchBlendingStable), nullptr},
782 {"Mapped conservative urls", kMlUrlSearchBlendingMappedConservativeUrls,
783 std::size(kMlUrlSearchBlendingMappedConservativeUrls), nullptr},
784 {"Mapped moderate urls", kMlUrlSearchBlendingMappedModerateUrls,
785 std::size(kMlUrlSearchBlendingMappedModerateUrls), nullptr},
786 {"Mapped aggressive urls", kMlUrlSearchBlendingMappedAggressiveUrls,
787 std::size(kMlUrlSearchBlendingMappedAggressiveUrls), nullptr},
788};
789
Khalid Peer4501c1f2024-06-27 16:12:04790const FeatureEntry::FeatureVariation kUrlScoringModelVariations[] = {
791 {"Small model", nullptr, 0, "3379590"},
792 {"Full model", nullptr, 0, "3380197"},
793};
794
Benjamin Williams0594caf2024-07-09 17:51:38795const FeatureEntry::FeatureParam kSafetyCheckNotificationsVerbose[] = {
796 {kSafetyCheckNotificationsExperimentType, "0"}};
797const FeatureEntry::FeatureParam kSafetyCheckNotificationsSuccinct[] = {
798 {kSafetyCheckNotificationsExperimentType, "1"}};
799
800const FeatureEntry::FeatureVariation kSafetyCheckNotificationsVariations[] = {
801 {"Display multiple notifications at once", kSafetyCheckNotificationsVerbose,
802 std::size(kSafetyCheckNotificationsVerbose), nullptr},
803 {"Display one notification at a time", kSafetyCheckNotificationsSuccinct,
804 std::size(kSafetyCheckNotificationsSuccinct), nullptr}};
805
Elmehdi Rahmaouif5b76462024-06-24 10:44:46806const FeatureEntry::FeatureParam kSaveToPhotosContextMenuImprovement[] = {
807 {kSaveToPhotosContextMenuImprovementParam, "true"},
808 {kSaveToPhotosTitleImprovementParam, "false"},
809 {kSaveToPhotosAccountDefaultChoiceImprovementParam, "false"},
810};
811const FeatureEntry::FeatureParam kSaveToPhotosTitleImprovement[] = {
812 {kSaveToPhotosContextMenuImprovementParam, "false"},
813 {kSaveToPhotosTitleImprovementParam, "true"},
814 {kSaveToPhotosAccountDefaultChoiceImprovementParam, "false"},
815};
816const FeatureEntry::FeatureParam
817 kSaveToPhotosAccountDefaultChoiceImprovement[] = {
818 {kSaveToPhotosContextMenuImprovementParam, "false"},
819 {kSaveToPhotosTitleImprovementParam, "false"},
820 {kSaveToPhotosAccountDefaultChoiceImprovementParam, "true"},
821};
822
823const FeatureEntry::FeatureVariation kSaveToPhotosImprovementsVariations[] = {
824 {"With Context Menu improvement Only", kSaveToPhotosContextMenuImprovement,
825 std::size(kSaveToPhotosContextMenuImprovement), nullptr},
826 {"With Title improvement Only", kSaveToPhotosTitleImprovement,
827 std::size(kSaveToPhotosTitleImprovement), nullptr},
828 {"With Account Default choice improvement Only",
829 kSaveToPhotosAccountDefaultChoiceImprovement,
830 std::size(kSaveToPhotosAccountDefaultChoiceImprovement), nullptr},
831};
832
Stephen McGruer8fe98b62024-07-16 13:10:13833// LINT.IfChange(AutofillUploadCardRequestTimeouts)
834const FeatureEntry::FeatureParam
835 kAutofillUploadCardRequestTimeout_6Point5Seconds[] = {
836 {"autofill_upload_card_request_timeout_milliseconds", "6500"}};
837const FeatureEntry::FeatureParam kAutofillUploadCardRequestTimeout_7Seconds[] =
838 {{"autofill_upload_card_request_timeout_milliseconds", "7000"}};
839const FeatureEntry::FeatureParam kAutofillUploadCardRequestTimeout_9Seconds[] =
840 {{"autofill_upload_card_request_timeout_milliseconds", "9000"}};
841const FeatureEntry::FeatureVariation
842 kAutofillUploadCardRequestTimeoutOptions[] = {
843 {"6.5 seconds", kAutofillUploadCardRequestTimeout_6Point5Seconds,
844 std::size(kAutofillUploadCardRequestTimeout_6Point5Seconds), nullptr},
845 {"7 seconds", kAutofillUploadCardRequestTimeout_7Seconds,
846 std::size(kAutofillUploadCardRequestTimeout_7Seconds), nullptr},
847 {"9 seconds", kAutofillUploadCardRequestTimeout_9Seconds,
848 std::size(kAutofillUploadCardRequestTimeout_9Seconds), nullptr}};
Benjamin Williamse589c382024-07-30 12:11:03849// LINT.ThenChange(/chrome/browser/about_flags.cc:AutofillUploadCardRequestTimeouts)
Stephen McGruer8fe98b62024-07-16 13:10:13850
Stephen McGruer0904cae2024-07-17 19:54:46851// LINT.IfChange(AutofillVcnEnrollRequestTimeouts)
852const FeatureEntry::FeatureParam kAutofillVcnEnrollRequestTimeout_5Seconds[] = {
853 {"autofill_vcn_enroll_request_timeout_milliseconds", "5000"}};
854const FeatureEntry::FeatureParam
855 kAutofillVcnEnrollRequestTimeout_7Point5Seconds[] = {
856 {"autofill_vcn_enroll_request_timeout_milliseconds", "7500"}};
857const FeatureEntry::FeatureParam kAutofillVcnEnrollRequestTimeout_10Seconds[] =
858 {{"autofill_vcn_enroll_request_timeout_milliseconds", "10000"}};
859const FeatureEntry::FeatureVariation kAutofillVcnEnrollRequestTimeoutOptions[] =
860 {{"5 seconds", kAutofillVcnEnrollRequestTimeout_5Seconds,
861 std::size(kAutofillVcnEnrollRequestTimeout_5Seconds), nullptr},
862 {"7.5 seconds", kAutofillVcnEnrollRequestTimeout_7Point5Seconds,
863 std::size(kAutofillVcnEnrollRequestTimeout_7Point5Seconds), nullptr},
864 {"10 seconds", kAutofillVcnEnrollRequestTimeout_10Seconds,
865 std::size(kAutofillVcnEnrollRequestTimeout_10Seconds), nullptr}};
Benjamin Williamse589c382024-07-30 12:11:03866// LINT.ThenChange(/chrome/browser/about_flags.cc:AutofillVcnEnrollRequestTimeouts)
Stephen McGruer0904cae2024-07-17 19:54:46867
Nicolas MacBethc738c4e2024-07-19 21:14:19868// Contextual Panel flag variations.
869const FeatureEntry::FeatureParam kContextualPanelRichIPHArms[] = {
870 {"entrypoint-highlight-iph", "true"},
871 {"entrypoint-rich-iph", "true"},
872};
873const FeatureEntry::FeatureParam kContextualPanelSmallIPHArm[] = {
874 {"entrypoint-highlight-iph", "false"},
875 {"entrypoint-rich-iph", "false"},
876};
877const FeatureEntry::FeatureParam
878 kContextualPanelSmallIPHWithBlueHighlightArm[] = {
879 {"entrypoint-highlight-iph", "true"},
880 {"entrypoint-rich-iph", "false"},
881};
882
883const FeatureEntry::FeatureVariation kContextualPanelEntrypointArmVariations[] =
884 {
885 {"- Rich IPH", kContextualPanelRichIPHArms,
886 std::size(kContextualPanelRichIPHArms), nullptr},
887 {"- Small IPH, no blue highlight", kContextualPanelSmallIPHArm,
888 std::size(kContextualPanelSmallIPHArm), nullptr},
889 {"- Small IPH with blue highlight",
890 kContextualPanelSmallIPHWithBlueHighlightArm,
891 std::size(kContextualPanelSmallIPHWithBlueHighlightArm), nullptr},
892};
893
Jood Hajeer3867886d2024-07-29 16:15:35894const FeatureEntry::FeatureParam kIdentityConfirmationSnackbarTestingConfig[] =
Jood562c885f2024-09-05 17:06:55895 {{"IdentityConfirmationMinDisplayInterval1", "0"},
896 {"IdentityConfirmationMinDisplayInterval2", "0"},
897 {"IdentityConfirmationMinDisplayInterval3", "0"}};
Jood Hajeer3867886d2024-07-29 16:15:35898const FeatureEntry::FeatureVariation
899 kIdentityConfirmationSnackbarTestingVariations[] = {
900 {" - for testing", kIdentityConfirmationSnackbarTestingConfig,
901 std::size(kIdentityConfirmationSnackbarTestingConfig), nullptr}};
902
Chris Lu4c688e02024-09-07 00:48:08903const FeatureEntry::FeatureParam kPriceTrackingPromoForceShowArm[] = {
904 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
905 segmentation_platform::features::kPriceTrackingPromoForceOverride},
906};
907const FeatureEntry::FeatureParam kPriceTrackingPromoForceHideArm[] = {
908 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
909 segmentation_platform::features::kPriceTrackingPromoForceOverride},
910};
911
Benjamin Williamsd7f854b2024-10-09 17:12:27912// Address Bar Position
913const FeatureEntry::FeatureParam kTipsAddressBarPositionForceShowArm[] = {
914 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
915 segmentation_platform::home_modules::kTipsAddressBarPositionVariation},
916};
917const FeatureEntry::FeatureParam kTipsAddressBarPositionForceHideArm[] = {
918 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
919 segmentation_platform::home_modules::kTipsAddressBarPositionVariation},
920};
921
922// Autofill Passwords
923const FeatureEntry::FeatureParam kTipsAutofillPasswordsForceShowArm[] = {
924 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
925 segmentation_platform::home_modules::kTipsAutofillPasswordsVariation},
926};
927const FeatureEntry::FeatureParam kTipsAutofillPasswordsForceHideArm[] = {
928 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
929 segmentation_platform::home_modules::kTipsAutofillPasswordsVariation},
930};
931
932// Enhanced Safe Browsing
933const FeatureEntry::FeatureParam kTipsEnhancedSafeBrowsingForceShowArm[] = {
934 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
935 segmentation_platform::home_modules::kTipsEnhancedSafeBrowsingVariation},
936};
937const FeatureEntry::FeatureParam kTipsEnhancedSafeBrowsingForceHideArm[] = {
938 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
939 segmentation_platform::home_modules::kTipsEnhancedSafeBrowsingVariation},
940};
941
942// Lens Search
943const FeatureEntry::FeatureParam kTipsLensSearchForceShowArm[] = {
944 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
945 segmentation_platform::home_modules::kTipsLensSearchVariation},
946};
947const FeatureEntry::FeatureParam kTipsLensSearchForceHideArm[] = {
948 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
949 segmentation_platform::home_modules::kTipsLensSearchVariation},
950};
951
952// Lens Shop
953const FeatureEntry::FeatureParam kTipsLensShopForceShowArm[] = {
954 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
955 segmentation_platform::home_modules::kTipsLensShopVariation},
956};
957const FeatureEntry::FeatureParam kTipsLensShopForceHideArm[] = {
958 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
959 segmentation_platform::home_modules::kTipsLensShopVariation},
960};
961
962// Lens Translate
963const FeatureEntry::FeatureParam kTipsLensTranslateForceShowArm[] = {
964 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
965 segmentation_platform::home_modules::kTipsLensTranslateVariation},
966};
967const FeatureEntry::FeatureParam kTipsLensTranslateForceHideArm[] = {
968 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
969 segmentation_platform::home_modules::kTipsLensTranslateVariation},
970};
971
972// Save Passwords
973const FeatureEntry::FeatureParam kTipsSavePasswordsForceShowArm[] = {
974 {segmentation_platform::features::kEphemeralCardRankerForceShowCardParam,
975 segmentation_platform::home_modules::kTipsSavePasswordsVariation},
976};
977const FeatureEntry::FeatureParam kTipsSavePasswordsForceHideArm[] = {
978 {segmentation_platform::features::kEphemeralCardRankerForceHideCardParam,
979 segmentation_platform::home_modules::kTipsSavePasswordsVariation},
980};
981
Chris Lu4c688e02024-09-07 00:48:08982const FeatureEntry::FeatureVariation kEphemeralCardRankerCardOverrideOptions[] =
983 {
984 {"- Force Show Price Tracking Notification",
985 kPriceTrackingPromoForceShowArm,
986 std::size(kPriceTrackingPromoForceShowArm), nullptr},
987 {"- Force Hide Price Tracking Notification",
988 kPriceTrackingPromoForceHideArm,
989 std::size(kPriceTrackingPromoForceHideArm), nullptr},
Benjamin Williamsd7f854b2024-10-09 17:12:27990
991 // Address Bar Position
992 {"- Force Show Address Bar Position Tip",
993 kTipsAddressBarPositionForceShowArm,
994 std::size(kTipsAddressBarPositionForceShowArm), nullptr},
995 {"- Force Hide Address Bar Position Tip",
996 kTipsAddressBarPositionForceHideArm,
997 std::size(kTipsAddressBarPositionForceHideArm), nullptr},
998
999 // Autofill Passwords
1000 {"- Force Show Autofill Passwords Tip",
1001 kTipsAutofillPasswordsForceShowArm,
1002 std::size(kTipsAutofillPasswordsForceShowArm), nullptr},
1003 {"- Force Hide Autofill Passwords Tip",
1004 kTipsAutofillPasswordsForceHideArm,
1005 std::size(kTipsAutofillPasswordsForceHideArm), nullptr},
1006
1007 // Enhanced Safe Browsing
1008 {"- Force Show Enhanced Safe Browsing Tip",
1009 kTipsEnhancedSafeBrowsingForceShowArm,
1010 std::size(kTipsEnhancedSafeBrowsingForceShowArm), nullptr},
1011 {"- Force Hide Enhanced Safe Browsing Tip",
1012 kTipsEnhancedSafeBrowsingForceHideArm,
1013 std::size(kTipsEnhancedSafeBrowsingForceHideArm), nullptr},
1014
1015 // Lens Search
1016 {"- Force Show Lens Search Tip", kTipsLensSearchForceShowArm,
1017 std::size(kTipsLensSearchForceShowArm), nullptr},
1018 {"- Force Hide Lens Search Tip", kTipsLensSearchForceHideArm,
1019 std::size(kTipsLensSearchForceHideArm), nullptr},
1020
1021 // Lens Shop
1022 {"- Force Show Lens Shop Tip", kTipsLensShopForceShowArm,
1023 std::size(kTipsLensShopForceShowArm), nullptr},
1024 {"- Force Hide Lens Shop Tip", kTipsLensShopForceHideArm,
1025 std::size(kTipsLensShopForceHideArm), nullptr},
1026
1027 // Lens Translate
1028 {"- Force Show Lens Translate Tip", kTipsLensTranslateForceShowArm,
1029 std::size(kTipsLensTranslateForceShowArm), nullptr},
1030 {"- Force Hide Lens Translate Tip", kTipsLensTranslateForceHideArm,
1031 std::size(kTipsLensTranslateForceHideArm), nullptr},
1032
1033 // Save Passwords
1034 {"- Force Show Save Passwords Tip", kTipsSavePasswordsForceShowArm,
1035 std::size(kTipsSavePasswordsForceShowArm), nullptr},
1036 {"- Force Hide Save Passwords Tip", kTipsSavePasswordsForceHideArm,
1037 std::size(kTipsSavePasswordsForceHideArm), nullptr},
Chris Lu4c688e02024-09-07 00:48:081038};
1039
Hira Mahmood00c17e52024-10-09 14:30:481040const FeatureEntry::FeatureParam
1041 kSendTabIOSPushNotificationsWithMagicStackCard[] = {
1042 {send_tab_to_self::kSendTabIOSPushNotificationsWithMagicStackCardParam,
1043 "true"}};
1044const FeatureEntry::FeatureVariation kSendTabIOSPushNotificationsVariations[] =
1045 {
1046 {"With Magic Stack Card",
1047 kSendTabIOSPushNotificationsWithMagicStackCard,
1048 std::size(kSendTabIOSPushNotificationsWithMagicStackCard), nullptr},
1049};
1050
Cooper Knaak1e026562017-07-26 05:22:281051// To add a new entry, add to the end of kFeatureEntries. There are four
sdefresne14900ee2015-11-27 14:43:211052// distinct types of entries:
Cooper Knaak1e026562017-07-26 05:22:281053// . ENABLE_DISABLE_VALUE: entry is either enabled, disabled, or uses the
1054// default value for this feature. Use the ENABLE_DISABLE_VALUE_TYPE
sdefresne14900ee2015-11-27 14:43:211055// macro for this type supplying the command line to the macro.
1056// . MULTI_VALUE: a list of choices, the first of which should correspond to a
1057// deactivated state for this lab (i.e. no command line option). To specify
1058// this type of entry use the macro MULTI_VALUE_TYPE supplying it the
1059// array of choices.
Cooper Knaak1e026562017-07-26 05:22:281060// . FEATURE_VALUE: entry is associated with a base::Feature instance. Entry is
1061// either enabled, disabled, or uses the default value of the associated
1062// base::Feature instance. To specify this type of entry use the macro
1063// FEATURE_VALUE_TYPE supplying it the base::Feature instance.
1064// . FEATURE_WITH_PARAM_VALUES: a list of choices associated with a
1065// base::Feature instance. Choices corresponding to the default state, a
1066// universally enabled state, and a universally disabled state are
1067// automatically included. To specify this type of entry use the macro
1068// FEATURE_WITH_PARAMS_VALUE_TYPE supplying it the base::Feature instance and
1069// the array of choices.
1070//
sdefresne14900ee2015-11-27 14:43:211071// See the documentation of FeatureEntry for details on the fields.
1072//
1073// When adding a new choice, add it to the end of the list.
1074const flags_ui::FeatureEntry kFeatureEntries[] = {
Cooper Knaak1e026562017-07-26 05:22:281075 {"in-product-help-demo-mode-choice",
1076 flag_descriptions::kInProductHelpDemoModeName,
1077 flag_descriptions::kInProductHelpDemoModeDescription, flags_ui::kOsIos,
1078 FEATURE_WITH_PARAMS_VALUE_TYPE(
Tommy Nyquistc1d6dea12017-07-26 20:37:231079 feature_engagement::kIPHDemoMode,
1080 feature_engagement::kIPHDemoModeChoiceVariations,
Marc Treib2752e8b2017-08-04 14:12:091081 "IPH_DemoMode")},
Moe Ahmadic3fd7cd2018-05-11 21:40:221082 {"enable-autofill-credit-card-upload",
1083 flag_descriptions::kAutofillCreditCardUploadName,
1084 flag_descriptions::kAutofillCreditCardUploadDescription, flags_ui::kOsIos,
Anne Lim579b5732018-08-30 18:24:241085 FEATURE_VALUE_TYPE(autofill::features::kAutofillUpstream)},
Moe Ahmadid6d5d172018-06-20 17:20:231086 {"use-sync-sandbox", flag_descriptions::kSyncSandboxName,
1087 flag_descriptions::kSyncSandboxDescription, flags_ui::kOsIos,
1088 SINGLE_VALUE_TYPE_AND_VALUE(
Victor Hugo Vianna Silva3cd7ae92022-02-09 20:49:511089 syncer::kSyncServiceURL,
Moe Ahmadid6d5d172018-06-20 17:20:231090 "https://chrome-sync.sandbox.google.com/chrome-sync/alpha")},
1091 {"wallet-service-use-sandbox",
1092 flag_descriptions::kWalletServiceUseSandboxName,
1093 flag_descriptions::kWalletServiceUseSandboxDescription, flags_ui::kOsIos,
1094 ENABLE_DISABLE_VALUE_TYPE_AND_VALUE(
1095 autofill::switches::kWalletServiceUseSandbox,
1096 "1",
1097 autofill::switches::kWalletServiceUseSandbox,
1098 "0")},
Mohamad Ahmadic4df81f2017-12-20 04:41:591099 {"show-autofill-type-predictions",
1100 flag_descriptions::kShowAutofillTypePredictionsName,
1101 flag_descriptions::kShowAutofillTypePredictionsDescription,
1102 flags_ui::kOsIos,
Florian Leimgruberf53ca392023-02-21 15:56:501103 FEATURE_VALUE_TYPE(
1104 autofill::features::test::kAutofillShowTypePredictions)},
Benjamin Williamsdf18e7e2022-10-03 18:46:051105 {"fullscreen-promos-manager-skip-internal-limits",
1106 flag_descriptions::kFullscreenPromosManagerSkipInternalLimitsName,
1107 flag_descriptions::kFullscreenPromosManagerSkipInternalLimitsDescription,
1108 flags_ui::kOsIos,
1109 FEATURE_VALUE_TYPE(kFullscreenPromosManagerSkipInternalLimits)},
Kurt Horimotodc33af32018-05-01 01:39:141110 {"fullscreen-viewport-adjustment-experiment",
Chris Lu481a9322019-09-25 22:16:531111 flag_descriptions::kFullscreenSmoothScrollingName,
1112 flag_descriptions::kFullscreenSmoothScrollingDescription, flags_ui::kOsIos,
Aliona DANGLA4e3b4732023-03-22 09:35:191113 FEATURE_VALUE_TYPE(web::features::kSmoothScrollingDefault)},
Robbie Gibson1f37a5e2020-08-06 17:03:061114 {"webpage-default-zoom-from-dynamic-type",
1115 flag_descriptions::kWebPageDefaultZoomFromDynamicTypeName,
1116 flag_descriptions::kWebPageDefaultZoomFromDynamicTypeDescription,
1117 flags_ui::kOsIos,
1118 FEATURE_VALUE_TYPE(web::kWebPageDefaultZoomFromDynamicType)},
Robbie Gibson88f23962020-09-28 14:35:561119 {"webpage-alternative-text-zoom",
1120 flag_descriptions::kWebPageAlternativeTextZoomName,
1121 flag_descriptions::kWebPageAlternativeTextZoomDescription,
1122 flags_ui::kOsIos, FEATURE_VALUE_TYPE(web::kWebPageAlternativeTextZoom)},
Robbie Gibson1095b72c2022-06-06 17:03:341123 {"webpage-text-zoom-ipad", flag_descriptions::kWebPageTextZoomIPadName,
1124 flag_descriptions::kWebPageTextZoomIPadDescription, flags_ui::kOsIos,
1125 FEATURE_VALUE_TYPE(web::kWebPageTextZoomIPad)},
Stepan Khapugincc4e9842019-01-23 13:38:131126 {"omnibox-ui-max-autocomplete-matches",
1127 flag_descriptions::kOmniboxUIMaxAutocompleteMatchesName,
1128 flag_descriptions::kOmniboxUIMaxAutocompleteMatchesDescription,
1129 flags_ui::kOsIos,
1130 FEATURE_WITH_PARAMS_VALUE_TYPE(
1131 omnibox::kUIExperimentMaxAutocompleteMatches,
1132 kOmniboxUIMaxAutocompleteMatchesVariations,
1133 "OmniboxUIMaxAutocompleteVariations")},
Moe Ahmadi01028f22022-08-06 17:57:351134 {"omnibox-local-history-zero-suggest-beyond-ntp",
1135 flag_descriptions::kOmniboxLocalHistoryZeroSuggestBeyondNTPName,
1136 flag_descriptions::kOmniboxLocalHistoryZeroSuggestBeyondNTPDescription,
1137 flags_ui::kOsIos,
1138 FEATURE_VALUE_TYPE(omnibox::kLocalHistoryZeroSuggestBeyondNTP)},
Stepan Khapuginbac467e2022-05-06 21:11:541139 {"omnibox-max-zps-matches", flag_descriptions::kOmniboxMaxZPSMatchesName,
1140 flag_descriptions::kOmniboxMaxZPSMatchesDescription, flags_ui::kOsIos,
1141 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kMaxZeroSuggestMatches,
1142 kOmniboxMaxZPSMatchesVariations,
1143 "OmniboxMaxZPSVariations")},
Jérôme Lebelc374fdd2019-09-27 10:36:481144 {"force-startup-signin-promo",
1145 flag_descriptions::kForceStartupSigninPromoName,
1146 flag_descriptions::kForceStartupSigninPromoDescription, flags_ui::kOsIos,
Alice Wang345e09442021-07-05 09:03:291147 FEATURE_VALUE_TYPE(switches::kForceStartupSigninPromo)},
Tommy Martino6b4eb7e2020-06-25 18:25:411148 {"shared-highlighting-ios", flag_descriptions::kSharedHighlightingIOSName,
1149 flag_descriptions::kSharedHighlightingIOSDescription, flags_ui::kOsIos,
1150 FEATURE_VALUE_TYPE(kSharedHighlightingIOS)},
Sylvain Defresne9c107082020-10-27 16:39:131151#if BUILDFLAG(IOS_SCREEN_TIME_ENABLED)
edchin81467b82020-09-03 19:31:451152 {"screen-time-integration-ios",
1153 flag_descriptions::kScreenTimeIntegrationName,
1154 flag_descriptions::kScreenTimeIntegrationDescription, flags_ui::kOsIos,
1155 FEATURE_VALUE_TYPE(kScreenTimeIntegration)},
Sylvain Defresne9c107082020-10-27 16:39:131156#endif
Nazerke3e993f72020-09-21 13:00:061157 {"modern-tab-strip", flag_descriptions::kModernTabStripName,
1158 flag_descriptions::kModernTabStripDescription, flags_ui::kOsIos,
Ewann Pellec8634ab2024-02-23 16:50:351159 FEATURE_WITH_PARAMS_VALUE_TYPE(kModernTabStrip,
1160 kModernTabStripVariations,
1161 "ModernTabStrip")},
Cheick Cisse76ade3d2020-12-16 00:15:111162 {"ios-shared-highlighting-color-change",
1163 flag_descriptions::kIOSSharedHighlightingColorChangeName,
1164 flag_descriptions::kIOSSharedHighlightingColorChangeDescription,
Cheick Cissed0b5bfe2021-02-11 14:23:071165 flags_ui::kOsIos,
1166 FEATURE_VALUE_TYPE(web::features::kIOSSharedHighlightingColorChange)},
Cheick Cissefe994862021-12-15 16:01:341167 {"ios-shared-highlighting-v2",
1168 flag_descriptions::kIOSSharedHighlightingV2Name,
1169 flag_descriptions::kIOSSharedHighlightingV2Description, flags_ui::kOsIos,
1170 FEATURE_VALUE_TYPE(shared_highlighting::kIOSSharedHighlightingV2)},
Scott Yoderc0cd99d2024-01-10 19:54:511171 {"ios-tips-notifications", flag_descriptions::kIOSTipsNotificationsName,
1172 flag_descriptions::kIOSTipsNotificationsDescription, flags_ui::kOsIos,
Scott Yoderaf2bdf32024-01-30 20:26:151173 FEATURE_WITH_PARAMS_VALUE_TYPE(kIOSTipsNotifications,
1174 kIOSTipsNotificationsVariations,
1175 "IOSTipsNotifications")},
gogerald0ff29e52021-02-03 18:56:191176 {"start-surface", flag_descriptions::kStartSurfaceName,
1177 flag_descriptions::kStartSurfaceDescription, flags_ui::kOsIos,
gogerald0e39e3aa2021-02-10 18:41:231178 FEATURE_WITH_PARAMS_VALUE_TYPE(kStartSurface,
1179 kStartSurfaceVariations,
1180 "StartSurface")},
Nohemi Fernandezc00842a2021-07-26 11:47:341181 {"wait-threshold-seconds-for-capabilities-api",
1182 flag_descriptions::kWaitThresholdMillisecondsForCapabilitiesApiName,
1183 flag_descriptions::kWaitThresholdMillisecondsForCapabilitiesApiDescription,
1184 flags_ui::kOsIos,
1185 MULTI_VALUE_TYPE(kWaitThresholdMillisecondsForCapabilitiesApiChoices)},
Tina Wang686fa002024-05-18 10:10:061186 {"content-notification-experiment",
1187 flag_descriptions::kContentNotificationExperimentName,
1188 flag_descriptions::kContentNotificationExperimentDescription,
1189 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kContentNotificationExperiment)},
Tina Wang1cc9f472024-05-30 20:51:251190 {"content-notification-provisional-ignore-conditions",
1191 flag_descriptions::kContentNotificationProvisionalIgnoreConditionsName,
1192 flag_descriptions::
1193 kContentNotificationProvisionalIgnoreConditionsDescription,
1194 flags_ui::kOsIos,
1195 FEATURE_VALUE_TYPE(kContentNotificationProvisionalIgnoreConditions)},
Guillem Perez49e1df42023-08-23 22:15:241196 {"content-push-notifications",
1197 flag_descriptions::kContentPushNotificationsName,
1198 flag_descriptions::kContentPushNotificationsDescription, flags_ui::kOsIos,
Guillem Perez40086ef2023-11-20 20:03:521199 FEATURE_WITH_PARAMS_VALUE_TYPE(kContentPushNotifications,
1200 kContentPushNotificationsVariations,
1201 "ContentPushNotifications")},
Jason Hu67cfb0f2022-11-14 20:21:441202 {"enable-lens-in-omnibox-copied-image",
1203 flag_descriptions::kEnableLensInOmniboxCopiedImageName,
1204 flag_descriptions::kEnableLensInOmniboxCopiedImageDescription,
1205 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kEnableLensInOmniboxCopiedImage)},
Radu Nitescuab5bf732024-09-18 14:07:401206 {"enable-lens-overlay", flag_descriptions::kEnableLensOverlayName,
1207 flag_descriptions::kEnableLensOverlayDescription, flags_ui::kOsIos,
1208 FEATURE_VALUE_TYPE(kEnableLensOverlay)},
Sergio Collazos9fcc6ed2021-10-06 00:58:031209 {"enable-disco-feed-endpoint",
1210 flag_descriptions::kEnableDiscoverFeedDiscoFeedEndpointName,
1211 flag_descriptions::kEnableDiscoverFeedDiscoFeedEndpointDescription,
1212 flags_ui::kOsIos,
Aliona DANGLA8fae66f02021-10-06 15:47:111213 FEATURE_VALUE_TYPE(kEnableDiscoverFeedDiscoFeedEndpoint)},
Tommy Martino7393d762021-10-12 17:59:281214 {"shared-highlighting-amp",
1215 flag_descriptions::kIOSSharedHighlightingAmpName,
1216 flag_descriptions::kIOSSharedHighlightingAmpDescription, flags_ui::kOsIos,
1217 FEATURE_VALUE_TYPE(shared_highlighting::kSharedHighlightingAmp)},
David Maunderf4a5e1e2021-10-18 17:24:281218 {"enable-commerce-price-tracking",
Matt Jones125dfb42022-02-11 17:23:421219 commerce::flag_descriptions::kCommercePriceTrackingName,
1220 commerce::flag_descriptions::kCommercePriceTrackingDescription,
1221 flags_ui::kOsIos,
1222 FEATURE_WITH_PARAMS_VALUE_TYPE(commerce::kCommercePriceTracking,
1223 commerce::kCommercePriceTrackingVariations,
adamta67b6c5812021-10-19 17:02:151224 "CommercePriceTracking")},
Matt Jones2e47b9692024-02-23 21:56:431225 {"track-by-default-mobile",
1226 commerce::flag_descriptions::kTrackByDefaultOnMobileName,
1227 commerce::flag_descriptions::kTrackByDefaultOnMobileDescription,
1228 flags_ui::kOsIos, FEATURE_VALUE_TYPE(commerce::kTrackByDefaultOnMobile)},
adamta250f4ad2023-08-02 15:26:061229 {"web-feed-ios", flag_descriptions::kEnableWebChannelsName,
1230 flag_descriptions::kEnableWebChannelsDescription, flags_ui::kOsIos,
1231 FEATURE_VALUE_TYPE(kEnableWebChannels)},
adamta39331592021-11-01 20:18:541232 {"ntp-view-hierarchy-repair",
1233 flag_descriptions::kNTPViewHierarchyRepairName,
1234 flag_descriptions::kNTPViewHierarchyRepairDescription, flags_ui::kOsIos,
adamta8da8dce2022-11-17 18:03:201235 FEATURE_VALUE_TYPE(kEnableNTPViewHierarchyRepair)},
Cheick Cisse39b6a182024-05-29 15:13:441236 {"price-insights", commerce::flag_descriptions::kPriceInsightsName,
1237 commerce::flag_descriptions::kPriceInsightsDescription, flags_ui::kOsIos,
1238 FEATURE_VALUE_TYPE(commerce::kPriceInsights)},
Cheick Cisse7c03928d2024-03-11 23:27:381239 {"price-insights-ios", commerce::flag_descriptions::kPriceInsightsIosName,
1240 commerce::flag_descriptions::kPriceInsightsIosDescription,
Cheick Cisse85457f22024-05-23 22:37:591241 flags_ui::kOsIos,
1242 FEATURE_WITH_PARAMS_VALUE_TYPE(commerce::kPriceInsightsIos,
1243 kPriceInsightsVariations,
1244 "PriceInsightsIos")},
1245 {"price-insights-high-price-ios",
1246 commerce::flag_descriptions::kPriceInsightsHighPriceIosName,
1247 commerce::flag_descriptions::kPriceInsightsHighPriceIosDescription,
1248 flags_ui::kOsIos,
1249 FEATURE_VALUE_TYPE(commerce::kPriceInsightsHighPriceIos)},
Vishwas Uppoor89303a92022-08-03 00:56:261250 {"autofill-enable-card-product-name",
1251 flag_descriptions::kAutofillEnableCardProductNameName,
1252 flag_descriptions::kAutofillEnableCardProductNameDescription,
1253 flags_ui::kOsIos,
1254 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCardProductName)},
Raj Tb95d813542022-11-16 21:27:521255 {"enable-download-service-foreground-session",
1256 flag_descriptions::kDownloadServiceForegroundSessionName,
1257 flag_descriptions::kDownloadServiceForegroundSessionDescription,
1258 flags_ui::kOsIos,
1259 FEATURE_VALUE_TYPE(download::kDownloadServiceForegroundSessionIOSFeature)},
Olivier Robinffe767c2022-04-21 13:13:231260 {"enable-tflite-language-detection",
1261 flag_descriptions::kTFLiteLanguageDetectionName,
1262 flag_descriptions::kTFLiteLanguageDetectionDescription, flags_ui::kOsIos,
1263 FEATURE_VALUE_TYPE(translate::kTFLiteLanguageDetectionEnabled)},
Raj Ta921ffc2022-08-25 19:00:201264 {"optimization-guide-debug-logs",
1265 flag_descriptions::kOptimizationGuideDebugLogsName,
1266 flag_descriptions::kOptimizationGuideDebugLogsDescription,
1267 flags_ui::kOsIos,
1268 SINGLE_VALUE_TYPE(optimization_guide::switches::kDebugLoggingEnabled)},
Daniel Whited02b6962023-02-14 14:19:551269 {"optimization-guide-push-notifications",
1270 flag_descriptions::kOptimizationGuidePushNotificationClientName,
1271 flag_descriptions::kOptimizationGuidePushNotificationClientDescription,
1272 flags_ui::kOsIos,
1273 FEATURE_VALUE_TYPE(optimization_guide::features::kPushNotifications)},
David Jeanad303a92023-07-31 16:58:111274 {"intents-on-measurements", flag_descriptions::kMeasurementsName,
1275 flag_descriptions::kMeasurementsDescription, flags_ui::kOsIos,
1276 FEATURE_VALUE_TYPE(web::features::kEnableMeasurements)},
David Jeanea886ba2024-01-17 11:50:221277 {"intents-on-viewport", flag_descriptions::kEnableViewportIntentsName,
1278 flag_descriptions::kEnableViewportIntentsDescription, flags_ui::kOsIos,
1279 FEATURE_VALUE_TYPE(web::features::kEnableViewportIntents)},
David Jeandcc3e202024-05-22 08:36:331280 {"improve-parcel-detection",
1281 flag_descriptions::kEnableNewParcelTrackingNumberDetectionName,
1282 flag_descriptions::kEnableNewParcelTrackingNumberDetectionDescription,
1283 flags_ui::kOsIos,
1284 FEATURE_VALUE_TYPE(
1285 web::features::kEnableNewParcelTrackingNumberDetection)},
David Jeanf361ae9d2024-04-09 08:19:471286 {"enable-expkit-text-classifier-date",
1287 flag_descriptions::kEnableExpKitTextClassifierDateName,
1288 flag_descriptions::kEnableExpKitTextClassifierDateDescription,
1289 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kEnableExpKitTextClassifierDate)},
1290 {"enable-expkit-text-classifier-address",
1291 flag_descriptions::kEnableExpKitTextClassifierAddressName,
1292 flag_descriptions::kEnableExpKitTextClassifierAddressDescription,
Raj T18a2c8c2023-03-15 17:20:151293 flags_ui::kOsIos,
David Jeanf361ae9d2024-04-09 08:19:471294 FEATURE_WITH_PARAMS_VALUE_TYPE(
1295 kEnableExpKitTextClassifierAddress,
1296 kEnableExpKitTextClassifierAddressVariations,
1297 "ExpKitTextClassifierAddress")},
1298 {"enable-expkit-text-classifier-phonenumber",
1299 flag_descriptions::kEnableExpKitTextClassifierPhoneNumberName,
1300 flag_descriptions::kEnableExpKitTextClassifierPhoneNumberDescription,
1301 flags_ui::kOsIos,
1302 FEATURE_WITH_PARAMS_VALUE_TYPE(
1303 kEnableExpKitTextClassifierPhoneNumber,
1304 kEnableExpKitTextClassifierPhoneNumberVariations,
1305 "ExpKitTextClassifierPhoneNumber")},
1306 {"enable-expkit-text-classifier-email",
1307 flag_descriptions::kEnableExpKitTextClassifierEmailName,
1308 flag_descriptions::kEnableExpKitTextClassifierEmailDescription,
1309 flags_ui::kOsIos,
1310 FEATURE_WITH_PARAMS_VALUE_TYPE(kEnableExpKitTextClassifierEmail,
1311 kEnableExpKitTextClassifierEmailVariations,
1312 "ExpKitTextClassifierEmail")},
Elmehdi Rahmaoui458f4a22023-02-14 15:13:331313 {"one-tap-experience-maps", flag_descriptions::kOneTapForMapsName,
1314 flag_descriptions::kOneTapForMapsDescription, flags_ui::kOsIos,
Olivier ROBIN82b67002023-07-31 14:34:461315 FEATURE_WITH_PARAMS_VALUE_TYPE(web::features::kOneTapForMaps,
1316 kOneTapForMapsWithVariations,
1317 "OneTapForMaps")},
Mustafa Emre Acerb8bb01f2022-07-20 19:43:251318 {"omnibox-https-upgrades", flag_descriptions::kOmniboxHttpsUpgradesName,
1319 flag_descriptions::kOmniboxHttpsUpgradesDescription, flags_ui::kOsIos,
1320 FEATURE_VALUE_TYPE(omnibox::kDefaultTypedNavigationsToHttps)},
Alexander Tekleb4643812023-01-06 23:12:301321 {"autofill-enable-ranking-formula-address-profiles",
1322 flag_descriptions::kAutofillEnableRankingFormulaAddressProfilesName,
1323 flag_descriptions::kAutofillEnableRankingFormulaAddressProfilesDescription,
1324 flags_ui::kOsIos,
1325 FEATURE_VALUE_TYPE(
1326 autofill::features::kAutofillEnableRankingFormulaAddressProfiles)},
Alexander Tekle35dfbbd2023-01-31 08:32:391327 {"autofill-enable-ranking-formula-credit-cards",
1328 flag_descriptions::kAutofillEnableRankingFormulaCreditCardsName,
1329 flag_descriptions::kAutofillEnableRankingFormulaCreditCardsDescription,
1330 flags_ui::kOsIos,
1331 FEATURE_VALUE_TYPE(
1332 autofill::features::kAutofillEnableRankingFormulaCreditCards)},
Sergio Collazos58558712022-05-18 17:24:021333 {"enable-feed-ablation", flag_descriptions::kEnableFeedAblationName,
1334 flag_descriptions::kEnableFeedAblationDescription, flags_ui::kOsIos,
1335 FEATURE_VALUE_TYPE(kEnableFeedAblation)},
Chris Luc36e3962023-04-11 21:50:521336 {"content-suggestions-magic-stack", flag_descriptions::kMagicStackName,
1337 flag_descriptions::kMagicStackDescription, flags_ui::kOsIos,
Chris Luce928eb2023-05-12 21:36:261338 FEATURE_WITH_PARAMS_VALUE_TYPE(kMagicStack,
1339 kMagicStackVariations,
1340 flag_descriptions::kMagicStackName)},
Alexis Hetuec9d70c2023-11-13 16:27:311341 {"ios-keyboard-accessory-upgrade",
1342 flag_descriptions::kIOSKeyboardAccessoryUpgradeName,
1343 flag_descriptions::kIOSKeyboardAccessoryUpgradeDescription,
1344 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kIOSKeyboardAccessoryUpgrade)},
Noémie St-Onge9da904ef2024-10-01 14:16:051345 {"ios-keyboard-accessory-upgrade-short-manual-fill-menu",
1346 flag_descriptions::kIOSKeyboardAccessoryUpgradeShortManualFillMenuName,
1347 flag_descriptions::
1348 kIOSKeyboardAccessoryUpgradeShortManualFillMenuDescription,
1349 flags_ui::kOsIos,
1350 FEATURE_VALUE_TYPE(kIOSKeyboardAccessoryUpgradeShortManualFillMenu)},
Scott Yoder7b9e51f2023-09-13 23:47:261351 {"ios-large-fakebox", flag_descriptions::kIOSLargeFakeboxName,
1352 flag_descriptions::kIOSLargeFakeboxDescription, flags_ui::kOsIos,
1353 FEATURE_VALUE_TYPE(kIOSLargeFakebox)},
Chris Lub0bad572023-08-07 18:13:291354 {"ios-magic-stack-segmentation-ranking",
1355 flag_descriptions::kSegmentationPlatformIosModuleRankerName,
1356 flag_descriptions::kSegmentationPlatformIosModuleRankerDescription,
1357 flags_ui::kOsIos,
Chris Lu6fd4eaf2023-08-08 18:29:301358 FEATURE_WITH_PARAMS_VALUE_TYPE(
1359 segmentation_platform::features::kSegmentationPlatformIosModuleRanker,
1360 kSegmentationPlatformIosModuleRankerVariations,
1361 flag_descriptions::kSegmentationPlatformIosModuleRankerName)},
Chris Lu63aa3942024-05-10 22:15:321362 {"ios-magic-stack-segmentation-ranking-caching",
1363 flag_descriptions::kSegmentationPlatformIosModuleRankerCachingName,
1364 flag_descriptions::kSegmentationPlatformIosModuleRankerCachingDescription,
1365 flags_ui::kOsIos,
1366 FEATURE_VALUE_TYPE(kSegmentationPlatformIosModuleRankerCaching)},
Chris Lu9e4f17b2024-05-09 00:54:111367 {"ios-magic-stack-segmentation-ranking-split-by-surface",
1368 flag_descriptions::kSegmentationPlatformIosModuleRankerSplitBySurfaceName,
1369 flag_descriptions::
1370 kSegmentationPlatformIosModuleRankerSplitBySurfaceDescription,
1371 flags_ui::kOsIos,
1372 FEATURE_VALUE_TYPE(
1373 segmentation_platform::features::
1374 kSegmentationPlatformIosModuleRankerSplitBySurface)},
Olivier Robin058c1fad2022-05-31 18:24:061375 {"default-browser-intents-show-settings",
1376 flag_descriptions::kDefaultBrowserIntentsShowSettingsName,
1377 flag_descriptions::kDefaultBrowserIntentsShowSettingsDescription,
1378 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kDefaultBrowserIntentsShowSettings)},
Alexis Hetu5e726602023-12-15 15:18:281379 {"ios-password-bottom-sheet-autofocus",
1380 flag_descriptions::kIOSPasswordBottomSheetAutofocusName,
1381 flag_descriptions::kIOSPasswordBottomSheetAutofocusDescription,
1382 flags_ui::kOsIos,
1383 FEATURE_VALUE_TYPE(
1384 password_manager::features::kIOSPasswordBottomSheetAutofocus)},
Charlotte Cloutier18f0a5362024-07-16 13:23:041385 {"ios-proactive-password-generation-bottom-sheet",
1386 flag_descriptions::kIOSProactivePasswordGenerationBottomSheetName,
1387 flag_descriptions::kIOSProactivePasswordGenerationBottomSheetDescription,
1388 flags_ui::kOsIos,
1389 FEATURE_VALUE_TYPE(password_manager::features::
1390 kIOSProactivePasswordGenerationBottomSheet)},
Alexis Hetu0677e182024-04-10 16:07:371391 {"sync-webauthn-credentials",
1392 flag_descriptions::kSyncWebauthnCredentialsName,
1393 flag_descriptions::kSyncWebauthnCredentialsDescription, flags_ui::kOsIos,
1394 FEATURE_VALUE_TYPE(syncer::kSyncWebauthnCredentials)},
Moe Ahmadi098519d82022-07-27 18:34:241395 {"omnibox-zero-suggest-prefetching",
1396 flag_descriptions::kOmniboxZeroSuggestPrefetchingName,
1397 flag_descriptions::kOmniboxZeroSuggestPrefetchingDescription,
1398 flags_ui::kOsIos, FEATURE_VALUE_TYPE(omnibox::kZeroSuggestPrefetching)},
Khalid Peer79df5652022-10-26 21:59:451399 {"omnibox-zero-suggest-prefetching-on-srp",
1400 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnSRPName,
1401 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnSRPDescription,
1402 flags_ui::kOsIos,
1403 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestPrefetchingOnSRP)},
1404 {"omnibox-zero-suggest-prefetching-on-web",
1405 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnWebName,
1406 flag_descriptions::kOmniboxZeroSuggestPrefetchingOnWebDescription,
1407 flags_ui::kOsIos,
1408 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestPrefetchingOnWeb)},
Khalid Peer11b4b2c2022-10-12 20:53:471409 {"omnibox-zero-suggest-in-memory-caching",
1410 flag_descriptions::kOmniboxZeroSuggestInMemoryCachingName,
1411 flag_descriptions::kOmniboxZeroSuggestInMemoryCachingDescription,
1412 flags_ui::kOsIos,
1413 FEATURE_VALUE_TYPE(omnibox::kZeroSuggestInMemoryCaching)},
Ce Chenbdfaed22022-10-20 16:08:351414 {"omnibox-on-device-tail-suggestions",
1415 flag_descriptions::kOmniboxOnDeviceTailSuggestionsName,
1416 flag_descriptions::kOmniboxOnDeviceTailSuggestionsDescription,
1417 flags_ui::kOsIos, FEATURE_VALUE_TYPE(omnibox::kOnDeviceTailModel)},
Christian Xucf26d562022-07-06 09:28:361418 {"omnibox-max-url-matches", flag_descriptions::kOmniboxMaxURLMatchesName,
1419 flag_descriptions::kOmniboxMaxURLMatchesDescription, flags_ui::kOsIos,
1420 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kOmniboxMaxURLMatches,
1421 kOmniboxMaxURLMatchesVariations,
1422 "OmniboxMaxURLMatches")},
Stepan Khapugin1f83c5ae2024-01-31 15:55:201423 {"omnibox-most-visited-tiles-horizontal-render-group",
1424 flag_descriptions::kMostVisitedTilesHorizontalRenderGroupName,
1425 flag_descriptions::kMostVisitedTilesHorizontalRenderGroupDescription,
1426 flags_ui::kOsIos,
1427 FEATURE_VALUE_TYPE(omnibox::kMostVisitedTilesHorizontalRenderGroup)},
Olivier Robin60d3a062022-07-06 17:34:061428 {"metrickit-non-crash-reports",
1429 flag_descriptions::kMetrickitNonCrashReportName,
1430 flag_descriptions::kMetrickitNonCrashReportDescription, flags_ui::kOsIos,
1431 FEATURE_VALUE_TYPE(kMetrickitNonCrashReport)},
Nakul Vaidya13ca2042022-07-27 01:59:551432 {"autofill-parse-vcn-card-on-file-standalone-cvc-fields",
1433 flag_descriptions::kAutofillParseVcnCardOnFileStandaloneCvcFieldsName,
1434 flag_descriptions::
1435 kAutofillParseVcnCardOnFileStandaloneCvcFieldsDescription,
1436 flags_ui::kOsIos,
1437 FEATURE_VALUE_TYPE(
1438 autofill::features::kAutofillParseVcnCardOnFileStandaloneCvcFields)},
Gayane Petrosyan5960a172023-06-19 15:40:171439 {"default-browser-promo-trigger-criteria-experiment",
1440 flag_descriptions::kDefaultBrowserTriggerCriteriaExperimentName,
1441 flag_descriptions::kDefaultBrowserTriggerCriteriaExperimentDescription,
1442 flags_ui::kOsIos,
Gayane Petrosyan01f711782024-02-21 23:00:211443 FEATURE_VALUE_TYPE(
1444 feature_engagement::kDefaultBrowserTriggerCriteriaExperiment)},
Gayane Petrosyancffeda12024-09-17 17:10:371445 {"blue-dot-on-tools-menu-button",
1446 flag_descriptions::kBlueDotOnToolsMenuButtonName,
1447 flag_descriptions::kBlueDotOnToolsMenuButtonDescription, flags_ui::kOsIos,
1448 FEATURE_VALUE_TYPE(kBlueDotOnToolsMenuButton)},
Ed Chin91e44992022-07-27 13:42:341449#if BUILDFLAG(IOS_BACKGROUND_MODE_ENABLED)
1450 {"feed-background-refresh-ios",
1451 flag_descriptions::kFeedBackgroundRefreshName,
1452 flag_descriptions::kFeedBackgroundRefreshDescription, flags_ui::kOsIos,
1453 FEATURE_WITH_PARAMS_VALUE_TYPE(kEnableFeedBackgroundRefresh,
1454 kFeedBackgroundRefreshVariations,
1455 "FeedBackgroundRefresh")},
Ed Chin178ec2a2023-02-10 22:21:261456#endif // BUILDFLAG(IOS_BACKGROUND_MODE_ENABLED)
Petro Akzhygitov2e2322e2023-04-25 16:26:571457 {"tab-grid-new-transitions", flag_descriptions::kTabGridNewTransitionsName,
1458 flag_descriptions::kTabGridNewTransitionsDescription, flags_ui::kOsIos,
1459 FEATURE_VALUE_TYPE(kTabGridNewTransitions)},
Daniel Whiteae1cb672022-12-14 18:25:251460 {"iph-price-notifications-while-browsing",
1461 flag_descriptions::kIPHPriceNotificationsWhileBrowsingName,
1462 flag_descriptions::kIPHPriceNotificationsWhileBrowsingDescription,
1463 flags_ui::kOsIos,
1464 FEATURE_VALUE_TYPE(
1465 feature_engagement::kIPHPriceNotificationsWhileBrowsingFeature)},
Ewann Pelledec2d042023-01-25 15:28:391466 {"shopping-list", commerce::flag_descriptions::kShoppingListName,
1467 commerce::flag_descriptions::kShoppingListDescription, flags_ui::kOsIos,
1468 FEATURE_VALUE_TYPE(commerce::kShoppingList)},
Matt Jones1795eda2023-05-09 20:24:481469 {"local-pdp-detection",
1470 commerce::flag_descriptions::kCommerceLocalPDPDetectionName,
1471 commerce::flag_descriptions::kCommerceLocalPDPDetectionDescription,
1472 flags_ui::kOsIos,
1473 FEATURE_VALUE_TYPE(commerce::kCommerceLocalPDPDetection)},
Gauthier Ambard8c9b7332024-10-24 16:24:041474 {"inactive-tabs", flag_descriptions::kInactiveTabsIPadName,
1475 flag_descriptions::kInactiveTabsIPadDescription, flags_ui::kOsIos,
1476 FEATURE_VALUE_TYPE(kInactiveTabsIPadFeature)},
Ali Juma57849c42023-02-21 22:53:431477 {"notification-settings-menu-item",
1478 flag_descriptions::kNotificationSettingsMenuItemName,
1479 flag_descriptions::kNotificationSettingsMenuItemDescription,
1480 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kNotificationSettingsMenuItem)},
kalettucefb09e402023-02-27 18:35:531481 {"web-feed-feedback-reroute",
1482 flag_descriptions::kWebFeedFeedbackRerouteName,
1483 flag_descriptions::kWebFeedFeedbackRerouteDescription, flags_ui::kOsIos,
1484 FEATURE_VALUE_TYPE(kWebFeedFeedbackReroute)},
Tina Wangd3f6f192023-04-05 05:22:431485 {"enable-follow-IPH-exp-params",
1486 flag_descriptions::kEnableFollowIPHExpParamsName,
1487 flag_descriptions::kEnableFollowIPHExpParamsDescription, flags_ui::kOsIos,
1488 FEATURE_VALUE_TYPE(kEnableFollowIPHExpParams)},
Guillem Perez3c139a822023-05-24 19:34:251489 {"enable-follow-ui-update", flag_descriptions::kEnableFollowUIUpdateName,
1490 flag_descriptions::kEnableFollowUIUpdateDescription, flags_ui::kOsIos,
1491 FEATURE_VALUE_TYPE(kEnableFollowUIUpdate)},
Olivier ROBINa229d2132023-03-21 12:44:201492 {"ios-browser-edit-menu-metrics",
1493 flag_descriptions::kIOSBrowserEditMenuMetricsName,
1494 flag_descriptions::kIOSBrowserEditMenuMetricsDescription, flags_ui::kOsIos,
1495 FEATURE_VALUE_TYPE(kIOSBrowserEditMenuMetrics)},
Benjamin Williams1dc8f2342024-01-04 21:25:551496 {"ios-docking-promo", flag_descriptions::kIOSDockingPromoName,
1497 flag_descriptions::kIOSDockingPromoDescription, flags_ui::kOsIos,
1498 FEATURE_WITH_PARAMS_VALUE_TYPE(kIOSDockingPromo,
1499 kIOSDockingPromoVariations,
1500 "IOSDockingPromo")},
Stepan Khapuginb2f49522023-04-03 18:25:241501 {"omnibox-grouping-framework-non-zps",
1502 flag_descriptions::kOmniboxGroupingFrameworkForTypedSuggestionsName,
1503 flag_descriptions::kOmniboxGroupingFrameworkForTypedSuggestionsDescription,
1504 flags_ui::kOsIos,
1505 FEATURE_VALUE_TYPE(omnibox::kGroupingFrameworkForNonZPS)},
Robbie Gibson0ea280602023-04-12 01:02:391506 {"only-access-clipboard-async",
1507 flag_descriptions::kOnlyAccessClipboardAsyncName,
1508 flag_descriptions::kOnlyAccessClipboardAsyncDescription, flags_ui::kOsIos,
1509 FEATURE_VALUE_TYPE(kOnlyAccessClipboardAsync)},
Olivier ROBIN2613bcd02023-04-20 10:00:471510 {"ios-edit-menu-hide-search-web",
1511 flag_descriptions::kIOSEditMenuHideSearchWebName,
1512 flag_descriptions::kIOSEditMenuHideSearchWebDescription, flags_ui::kOsIos,
1513 FEATURE_VALUE_TYPE(kIOSEditMenuHideSearchWeb)},
Stephen McGruer9afca1a2023-05-18 20:55:171514 {"autofill-enable-card-art-image",
1515 flag_descriptions::kAutofillEnableCardArtImageName,
1516 flag_descriptions::kAutofillEnableCardArtImageDescription,
1517 flags_ui::kOsIos,
1518 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCardArtImage)},
Tina Wangcda2c902023-05-25 17:39:451519 {"enable-signed-out-view-demotion",
1520 flag_descriptions::kEnableSignedOutViewDemotionName,
1521 flag_descriptions::kEnableSignedOutViewDemotionDescription,
1522 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kEnableSignedOutViewDemotion)},
Stepan Khapugin72c74292024-06-19 16:48:331523 {"spotlight-never-retain-index",
1524 flag_descriptions::kSpotlightNeverRetainIndexName,
1525 flag_descriptions::kSpotlightNeverRetainIndexDescription, flags_ui::kOsIos,
1526 FEATURE_VALUE_TYPE(kSpotlightNeverRetainIndex)},
Huiting Yubc1bf4d2023-06-26 18:15:321527 {"ios-iph-for-safari-switcher",
1528 flag_descriptions::kIPHForSafariSwitcherName,
1529 flag_descriptions::kIPHForSafariSwitcherDescription, flags_ui::kOsIos,
1530 FEATURE_VALUE_TYPE(kIPHForSafariSwitcher)},
Benjamin Williams9773edd42023-06-26 20:22:071531 {"safety-check-magic-stack", flag_descriptions::kSafetyCheckMagicStackName,
1532 flag_descriptions::kSafetyCheckMagicStackDescription, flags_ui::kOsIos,
1533 FEATURE_VALUE_TYPE(kSafetyCheckMagicStack)},
Ewann Pelle9cd85b22023-07-12 14:42:011534 {"tab-resumption", flag_descriptions::kTabResumptionName,
1535 flag_descriptions::kTabResumptionDescription, flags_ui::kOsIos,
Ewann Pellea2bcb3a2023-08-28 13:53:001536 FEATURE_WITH_PARAMS_VALUE_TYPE(kTabResumption,
1537 kTabResumptionVariations,
1538 "TabResumption")},
Christian Xu07d600192023-07-24 12:29:521539 {"bottom-omnibox-default-setting",
1540 flag_descriptions::kBottomOmniboxDefaultSettingName,
1541 flag_descriptions::kBottomOmniboxDefaultSettingDescription,
1542 flags_ui::kOsIos,
1543 FEATURE_WITH_PARAMS_VALUE_TYPE(kBottomOmniboxDefaultSetting,
1544 kBottomOmniboxDefaultSettingVariations,
1545 "BottomOmniboxDefaultSetting")},
Joemer Ramos46ca6f52024-09-27 18:12:291546 {"enable-async-real-time-check",
1547 flag_descriptions::kSafeBrowsingAsyncRealTimeCheckName,
1548 flag_descriptions::kSafeBrowsingAsyncRealTimeCheckDescription,
1549 flags_ui::kOsIos,
1550 FEATURE_VALUE_TYPE(safe_browsing::kSafeBrowsingAsyncRealTimeCheck)},
Quentin Pubert476786e82023-08-16 12:45:281551 {"enable-save-to-photos", flag_descriptions::kIOSSaveToPhotosName,
1552 flag_descriptions::kIOSSaveToPhotosDescription, flags_ui::kOsIos,
1553 FEATURE_VALUE_TYPE(kIOSSaveToPhotos)},
Elmehdi Rahmaouif5b76462024-06-24 10:44:461554 {"enable-save-to-photos-improvements",
1555 flag_descriptions::kIOSSaveToPhotosImprovementsName,
1556 flag_descriptions::kIOSSaveToPhotosImprovementsDescription,
1557 flags_ui::kOsIos,
1558 FEATURE_WITH_PARAMS_VALUE_TYPE(kIOSSaveToPhotosImprovements,
1559 kSaveToPhotosImprovementsVariations,
1560 "IOSSaveToPhotosImprovements")},
Jérôme Lebelcc9523e2024-10-08 13:34:011561 {"enable-identity-in-auth-error",
1562 flag_descriptions::kEnableIdentityInAuthErrorName,
1563 flag_descriptions::kEnableIdentityInAuthErrorDescription, flags_ui::kOsIos,
1564 FEATURE_VALUE_TYPE(switches::kEnableIdentityInAuthError)},
Mihai Sardarescucca83442024-10-16 12:19:131565 {"enable-asweb-authentication-session",
1566 flag_descriptions::kEnableASWebAuthenticationSessionName,
1567 flag_descriptions::kEnableASWebAuthenticationSessionDescription,
1568 flags_ui::kOsIos,
1569 FEATURE_VALUE_TYPE(switches::kEnableASWebAuthenticationSession)},
Christian Xu90e952f2023-09-13 09:05:281570 {"top-toolbar-theme-color", flag_descriptions::kThemeColorInTopToolbarName,
1571 flag_descriptions::kThemeColorInTopToolbarDescription, flags_ui::kOsIos,
1572 FEATURE_VALUE_TYPE(kThemeColorInTopToolbar)},
Rubin Deliallisi072bc842023-10-19 12:00:411573 {"privacy-guide-ios", flag_descriptions::kPrivacyGuideIosName,
1574 flag_descriptions::kPrivacyGuideIosDescription, flags_ui::kOsIos,
1575 FEATURE_VALUE_TYPE(kPrivacyGuideIos)},
Quentin Pubertf2d75c32023-10-25 12:17:451576 {"enable-save-to-drive", flag_descriptions::kIOSSaveToDriveName,
1577 flag_descriptions::kIOSSaveToDriveDescription, flags_ui::kOsIos,
1578 FEATURE_VALUE_TYPE(kIOSSaveToDrive)},
Aliona DANGLA5971a8b2023-11-10 11:55:351579 {"fullscreen-improvement", flag_descriptions::kFullscreenImprovementName,
1580 flag_descriptions::kFullscreenImprovementDescription, flags_ui::kOsIos,
1581 FEATURE_VALUE_TYPE(kFullscreenImprovement)},
Gauthier Ambard8cca29a2024-04-10 08:27:361582 {"tab-groups-on-ipad", flag_descriptions::kTabGroupsIPadName,
1583 flag_descriptions::kTabGroupsIPadDescription, flags_ui::kOsIos,
1584 FEATURE_VALUE_TYPE(kTabGroupsIPad)},
Vidhan Jain1199e202024-03-15 14:42:591585 {"autofill-enable-dynamically-loading-fields-on-input",
1586 flag_descriptions::
1587 kAutofillEnableDynamicallyLoadingFieldsForAddressInputName,
1588 flag_descriptions::
1589 kAutofillEnableDynamicallyLoadingFieldsForAddressInputDescription,
1590 flags_ui::kOsIos,
1591 FEATURE_VALUE_TYPE(kAutofillDynamicallyLoadsFieldsForAddressInput)},
aliaaborhamy00f89df2023-12-21 14:55:031592 {"share-in-web-context-menu-ios",
1593 flag_descriptions::kShareInWebContextMenuIOSName,
1594 flag_descriptions::kShareInWebContextMenuIOSDescription, flags_ui::kOsIos,
1595 FEATURE_VALUE_TYPE(kShareInWebContextMenuIOS)},
Marc Treib1f6c5db992024-01-04 20:25:141596 {"migrate-syncing-user-to-signed-in",
1597 flag_descriptions::kMigrateSyncingUserToSignedInName,
1598 flag_descriptions::kMigrateSyncingUserToSignedInDescription,
1599 flags_ui::kOsIos,
1600 FEATURE_VALUE_TYPE(switches::kMigrateSyncingUserToSignedIn)},
1601 {"undo-migration-of-syncing-user-to-signed-in",
1602 flag_descriptions::kUndoMigrationOfSyncingUserToSignedInName,
1603 flag_descriptions::kUndoMigrationOfSyncingUserToSignedInDescription,
1604 flags_ui::kOsIos,
1605 FEATURE_VALUE_TYPE(switches::kUndoMigrationOfSyncingUserToSignedIn)},
Mustafa Emre Acer05412ee2024-01-11 01:03:551606 {"https-upgrades-ios", flag_descriptions::kHttpsUpgradesName,
1607 flag_descriptions::kHttpsUpgradesDescription, flags_ui::kOsIos,
1608 FEATURE_VALUE_TYPE(security_interstitials::features::kHttpsUpgrades)},
Robbie Gibsona04957be2024-01-15 19:52:461609 {"contextual-panel", flag_descriptions::kContextualPanelName,
1610 flag_descriptions::kContextualPanelDescription, flags_ui::kOsIos,
Nicolas MacBethc738c4e2024-07-19 21:14:191611 FEATURE_WITH_PARAMS_VALUE_TYPE(kContextualPanel,
1612 kContextualPanelEntrypointArmVariations,
1613 "ContextualPanel")},
Nicolas MacBeth47d6b622024-01-16 17:05:391614 {"contextual-panel-force-show-entrypoint",
1615 flag_descriptions::kContextualPanelForceShowEntrypointName,
1616 flag_descriptions::kContextualPanelForceShowEntrypointDescription,
1617 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kContextualPanelForceShowEntrypoint)},
adamtad0e8cfc2024-01-16 18:43:471618 {"enable-ipad-feed-ghost-cards",
1619 flag_descriptions::kEnableiPadFeedGhostCardsName,
1620 flag_descriptions::kEnableiPadFeedGhostCardsDescription, flags_ui::kOsIos,
1621 FEATURE_VALUE_TYPE(kEnableiPadFeedGhostCards)},
Christian Xu11df0ae2024-02-08 16:07:511622 {"omnibox-rich-autocompletion",
1623 flag_descriptions::kOmniboxRichAutocompletionName,
1624 flag_descriptions::kOmniboxRichAutocompletionDescription, flags_ui::kOsIos,
Christian Xu10b84d72024-04-09 17:12:331625 FEATURE_WITH_PARAMS_VALUE_TYPE(
1626 omnibox::kRichAutocompletion,
1627 kRichAutocompletionImplementationVariations,
1628 "RichAutocompletionImplementationVariations")},
Jason Hud445445f2024-02-02 18:28:121629 {"disable-lens-camera", flag_descriptions::kDisableLensCameraName,
1630 flag_descriptions::kDisableLensCameraDescription, flags_ui::kOsIos,
1631 FEATURE_VALUE_TYPE(kDisableLensCamera)},
Charles Yang30c90b92024-03-08 18:00:591632 {"omnibox-color-icons", flag_descriptions::kOmniboxColorIconsName,
1633 flag_descriptions::kOmniboxColorIconsDescription, flags_ui::kOsIos,
1634 FEATURE_VALUE_TYPE(kOmniboxColorIcons)},
Charles Yang682634b2024-03-19 01:46:091635 {"enable-color-lens-and-voice-icons-in-home-screen-widget",
1636 flag_descriptions::kEnableColorLensAndVoiceIconsInHomeScreenWidgetName,
1637 flag_descriptions::
1638 kEnableColorLensAndVoiceIconsInHomeScreenWidgetDescription,
1639 flags_ui::kOsIos,
1640 FEATURE_VALUE_TYPE(kEnableColorLensAndVoiceIconsInHomeScreenWidget)},
Alexander Tekleeebe42b92024-02-23 21:27:151641 {"autofill-enable-card-benefits-for-american-express",
1642 flag_descriptions::kAutofillEnableCardBenefitsForAmericanExpressName,
1643 flag_descriptions::
1644 kAutofillEnableCardBenefitsForAmericanExpressDescription,
1645 flags_ui::kOsIos,
1646 FEATURE_VALUE_TYPE(
1647 autofill::features::kAutofillEnableCardBenefitsForAmericanExpress)},
1648 {"autofill-enable-card-benefits-for-capital-one",
1649 flag_descriptions::kAutofillEnableCardBenefitsForCapitalOneName,
1650 flag_descriptions::kAutofillEnableCardBenefitsForCapitalOneDescription,
1651 flags_ui::kOsIos,
1652 FEATURE_VALUE_TYPE(
1653 autofill::features::kAutofillEnableCardBenefitsForCapitalOne)},
Yishui Liub88a38c2024-02-28 08:46:551654 {"autofill-enable-card-benefits-sync",
1655 flag_descriptions::kAutofillEnableCardBenefitsSyncName,
1656 flag_descriptions::kAutofillEnableCardBenefitsSyncDescription,
1657 flags_ui::kOsIos,
1658 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableCardBenefitsSync)},
Rubin Deliallisi4170b1c2024-02-28 16:15:421659 {"linked-services-setting-ios",
1660 flag_descriptions::kLinkedServicesSettingIosName,
1661 flag_descriptions::kLinkedServicesSettingIosDescription, flags_ui::kOsIos,
1662 FEATURE_VALUE_TYPE(kLinkedServicesSettingIos)},
Aliona DANGLA52e69ff2024-02-29 12:22:281663 {"disable-fullscreen-scrolling",
1664 flag_descriptions::kDisableFullscreenScrollingName,
1665 flag_descriptions::kDisableFullscreenScrollingDescription,
1666 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kDisableFullscreenScrolling)},
hvs7c6cb402024-03-27 02:39:001667 {"autofill-enable-prefetching-risk-data-for-retrieval",
1668 flag_descriptions::kAutofillEnablePrefetchingRiskDataForRetrievalName,
Vincent Boisselle2e95b882024-03-29 21:03:561669 flag_descriptions::
1670 kAutofillEnablePrefetchingRiskDataForRetrievalDescription,
hvs7c6cb402024-03-27 02:39:001671 flags_ui::kOsIos,
Vincent Boisselle2e95b882024-03-29 21:03:561672 FEATURE_VALUE_TYPE(
1673 autofill::features::kAutofillEnablePrefetchingRiskDataForRetrieval)},
1674 {"autofill-sticky-infobar", flag_descriptions::kAutofillStickyInfobarName,
1675 flag_descriptions::kAutofillStickyInfobarDescription, flags_ui::kOsIos,
1676 FEATURE_VALUE_TYPE(kAutofillStickyInfobarIos)},
Raj Tc66dd122024-04-01 18:48:391677 {"page-content-annotations", flag_descriptions::kPageContentAnnotationsName,
1678 flag_descriptions::kPageContentAnnotationsDescription, flags_ui::kOsIos,
1679 FEATURE_VALUE_TYPE(
1680 page_content_annotations::features::kPageContentAnnotations)},
1681 {"page-content-annotations-persist-salient-image-metadata",
1682 flag_descriptions::kPageContentAnnotationsPersistSalientImageMetadataName,
1683 flag_descriptions::
1684 kPageContentAnnotationsPersistSalientImageMetadataDescription,
1685 flags_ui::kOsIos,
1686 FEATURE_VALUE_TYPE(
1687 page_content_annotations::features::
1688 kPageContentAnnotationsPersistSalientImageMetadata)},
1689 {"page-content-annotations-remote-page-metadata",
1690 flag_descriptions::kPageContentAnnotationsRemotePageMetadataName,
1691 flag_descriptions::kPageContentAnnotationsRemotePageMetadataDescription,
1692 flags_ui::kOsIos,
1693 FEATURE_VALUE_TYPE(
1694 page_content_annotations::features::kRemotePageMetadata)},
1695 {"page-visibility-page-content-annotations",
1696 flag_descriptions::kPageVisibilityPageContentAnnotationsName,
1697 flag_descriptions::kPageVisibilityPageContentAnnotationsDescription,
1698 flags_ui::kOsIos,
1699 FEATURE_VALUE_TYPE(page_content_annotations::features::
1700 kPageVisibilityPageContentAnnotations)},
Daniel White7867261f2024-04-02 19:08:121701 {"enhanced-safe-browsing-promo",
1702 flag_descriptions::kEnhancedSafeBrowsingPromoName,
1703 flag_descriptions::kEnhancedSafeBrowsingPromoDescription, flags_ui::kOsIos,
Daniel Whiteb6285082024-05-03 18:00:021704 FEATURE_VALUE_TYPE(safe_browsing::kEnhancedSafeBrowsingPromo)},
Sebsgfcd5b0b2024-04-09 08:18:321705 {"cpe-performance-improvements",
1706 flag_descriptions::kCredentialProviderPerformanceImprovementsName,
1707 flag_descriptions::kCredentialProviderPerformanceImprovementsDescription,
1708 flags_ui::kOsIos,
1709 FEATURE_VALUE_TYPE(kCredentialProviderPerformanceImprovements)},
Vincent Boissellea1f27f322024-04-17 14:53:191710 {"password-manager-detect-username-in-uff",
1711 flag_descriptions::kIOSDetectUsernameInUffName,
vincbb01c53ed2024-08-22 13:09:561712 flag_descriptions::kIOSDetectUsernameInUffDescription, flags_ui::kOsIos,
Vincent Boissellea1f27f322024-04-17 14:53:191713 FEATURE_VALUE_TYPE(password_manager::features::kIosDetectUsernameInUff)},
Jérôme Lebel993c7e3d2024-07-08 14:05:351714 {"identity-disc-account-menu",
1715 flag_descriptions::kIdentityDiscAccountMenuName,
1716 flag_descriptions::kIdentityDiscAccountMenuDescription, flags_ui::kOsIos,
1717 FEATURE_VALUE_TYPE(kIdentityDiscAccountMenu)},
Jood Hajeer3867886d2024-07-29 16:15:351718 {"identity-confirmation-snackbar",
1719 flag_descriptions::kIdentityConfirmationSnackbarName,
1720 flag_descriptions::kIdentityConfirmationSnackbarDescription,
1721 flags_ui::kOsIos,
1722 FEATURE_WITH_PARAMS_VALUE_TYPE(
1723 kIdentityConfirmationSnackbar,
1724 kIdentityConfirmationSnackbarTestingVariations,
1725 "IdentityConfirmationSnackbar")},
Filipa Senrabe00cbe2024-04-19 14:21:331726 {"ios-quick-delete", flag_descriptions::kIOSQuickDeleteName,
1727 flag_descriptions::kIOSQuickDeleteDescription, flags_ui::kOsIos,
1728 FEATURE_VALUE_TYPE(kIOSQuickDelete)},
Vipul Vinod Koul1629a192024-04-24 00:04:001729 {"autofill-enable-verve-card-support",
1730 flag_descriptions::kAutofillEnableVerveCardSupportName,
1731 flag_descriptions::kAutofillEnableVerveCardSupportDescription,
1732 flags_ui::kOsIos,
1733 FEATURE_VALUE_TYPE(autofill::features::kAutofillEnableVerveCardSupport)},
Ameur Hosni20b75fe52024-04-24 16:36:021734 {"omnibox-actions-in-suggest",
1735 flag_descriptions::kOmniboxActionsInSuggestName,
1736 flag_descriptions::kOmniboxActionsInSuggestDescription, flags_ui::kOsIos,
1737 FEATURE_VALUE_TYPE(kOmniboxActionsInSuggest)},
Ewann Pelle34939b62024-08-22 10:45:491738 {"tab-group-sync", flag_descriptions::kTabGroupSyncName,
1739 flag_descriptions::kTabGroupSyncDescription, flags_ui::kOsIos,
Louis Romero5a84afc2024-04-25 10:29:201740 FEATURE_VALUE_TYPE(kTabGroupSync)},
Kavita Sonic8eaa982024-05-16 17:09:111741 {"autofill-enable-save-card-loading-and-confirmation",
1742 flag_descriptions::kAutofillEnableSaveCardLoadingAndConfirmationName,
1743 flag_descriptions::
1744 kAutofillEnableSaveCardLoadingAndConfirmationDescription,
1745 flags_ui::kOsIos,
1746 FEATURE_VALUE_TYPE(
1747 autofill::features::kAutofillEnableSaveCardLoadingAndConfirmation)},
1748 {"autofill-enable-save-card-local-save-fallback",
1749 flag_descriptions::kAutofillEnableSaveCardLocalSaveFallbackName,
1750 flag_descriptions::kAutofillEnableSaveCardLocalSaveFallbackDescription,
1751 flags_ui::kOsIos,
1752 FEATURE_VALUE_TYPE(
1753 autofill::features::kAutofillEnableSaveCardLocalSaveFallback)},
1754 {"autofill-enable-vcn-enroll-loading-and-confirmation",
1755 flag_descriptions::kAutofillEnableVcnEnrollLoadingAndConfirmationName,
1756 flag_descriptions::
1757 kAutofillEnableVcnEnrollLoadingAndConfirmationDescription,
1758 flags_ui::kOsIos,
1759 FEATURE_VALUE_TYPE(
1760 autofill::features::kAutofillEnableVcnEnrollLoadingAndConfirmation)},
Ameur Hosni3d764c92024-05-28 14:11:121761 {"omnibox-suggestion-answer-migration",
1762 flag_descriptions::kOmniboxSuggestionAnswerMigrationName,
1763 flag_descriptions::kOmniboxSuggestionAnswerMigrationDescription,
1764 flags_ui::kOsIos,
1765 FEATURE_VALUE_TYPE(omnibox_feature_configs::SuggestionAnswerMigration::
Olivier Robin51ffd172024-05-29 08:56:301766 kOmniboxSuggestionAnswerMigration)},
1767 {"tab-resumption1-5", flag_descriptions::kTabResumption1_5Name,
1768 flag_descriptions::kTabResumption1_5Description, flags_ui::kOsIos,
Olivier Robinf8374f12024-06-05 19:00:041769 FEATURE_WITH_PARAMS_VALUE_TYPE(kTabResumption1_5,
1770 kTabResumption15Variations,
1771 "TabResumption1_5")},
Hira Mahmood6e2a894e2024-05-31 15:18:191772 {"send-tab-ios-push-notifications",
1773 flag_descriptions::kSendTabToSelfIOSPushNotificationsName,
1774 flag_descriptions::kSendTabToSelfIOSPushNotificationsDescription,
1775 flags_ui::kOsIos,
Hira Mahmood00c17e52024-10-09 14:30:481776 FEATURE_WITH_PARAMS_VALUE_TYPE(
1777 send_tab_to_self::kSendTabToSelfIOSPushNotifications,
1778 kSendTabIOSPushNotificationsVariations,
1779 "SendTabToSelfIOSPushNotifications")},
Olivier Robin08bc56d02024-06-05 14:05:181780 {"tab-resumption-2", flag_descriptions::kTabResumption2Name,
1781 flag_descriptions::kTabResumption2Description, flags_ui::kOsIos,
Olivier ROBINb17c14b92024-10-09 13:49:131782 FEATURE_VALUE_TYPE(kTabResumption2)},
Olivier ROBINcb76f4fe2024-06-05 16:11:421783 {"page-image-service-optimization-guide-salient-images",
1784 flag_descriptions::kPageImageServiceSalientImageName,
1785 flag_descriptions::kPageImageServiceSalientImageDescription,
1786 flags_ui::kOsIos,
1787 FEATURE_WITH_PARAMS_VALUE_TYPE(
1788 page_image_service::kImageServiceOptimizationGuideSalientImages,
1789 kImageServiceOptimizationGuideSalientImagesVariations,
1790 "PageImageService")},
Elmehdi Rahmaouifafd5b72024-06-06 08:34:221791 {"downloaded-pdf-opening-ios", flag_descriptions::kDownloadedPDFOpeningName,
1792 flag_descriptions::kDownloadedPDFOpeningDescription, flags_ui::kOsIos,
1793 FEATURE_VALUE_TYPE(kDownloadedPDFOpening)},
Charles Yangf8e7adf2024-06-11 00:17:001794 {"lens-filters-ablation-mode-enabled",
1795 flag_descriptions::kLensFiltersAblationModeEnabledName,
1796 flag_descriptions::kLensFiltersAblationModeEnabledDescription,
1797 flags_ui::kOsIos,
1798 FEATURE_WITH_PARAMS_VALUE_TYPE(kLensFiltersAblationModeEnabled,
1799 kLensFiltersAblationModeVariations,
1800 "LensFiltersAblationMode")},
1801 {"lens-translate-toogle-mode-enabled",
1802 flag_descriptions::kLensTranslateToggleModeEnabledName,
1803 flag_descriptions::kLensTranslateToggleModeEnabledDescription,
1804 flags_ui::kOsIos,
1805 FEATURE_WITH_PARAMS_VALUE_TYPE(kLensTranslateToggleModeEnabled,
1806 kLensTranslateToggleModeVariations,
1807 "LensTranslateToggleMode")},
Quentin Pubertb0984c72024-06-12 15:41:591808 {"ios-choose-from-drive", flag_descriptions::kIOSChooseFromDriveName,
1809 flag_descriptions::kIOSChooseFromDriveDescription, flags_ui::kOsIos,
1810 FEATURE_VALUE_TYPE(kIOSChooseFromDrive)},
Khalid Peer7cf75a22024-06-13 17:25:491811 {"omnibox-ml-log-url-scoring-signals",
1812 flag_descriptions::kOmniboxMlLogUrlScoringSignalsName,
1813 flag_descriptions::kOmniboxMlLogUrlScoringSignalsDescription,
1814 flags_ui::kOsIos, FEATURE_VALUE_TYPE(omnibox::kLogUrlScoringSignals)},
1815 {"omnibox-ml-url-piecewise-mapped-search-blending",
1816 flag_descriptions::kOmniboxMlUrlPiecewiseMappedSearchBlendingName,
1817 flag_descriptions::kOmniboxMlUrlPiecewiseMappedSearchBlendingDescription,
1818 flags_ui::kOsIos,
1819 FEATURE_WITH_PARAMS_VALUE_TYPE(
1820 omnibox::kMlUrlPiecewiseMappedSearchBlending,
1821 kMlUrlPiecewiseMappedSearchBlendingVariations,
1822 "MlUrlPiecewiseMappedSearchBlending")},
1823 {"omnibox-ml-url-score-caching",
1824 flag_descriptions::kOmniboxMlUrlScoreCachingName,
1825 flag_descriptions::kOmniboxMlUrlScoreCachingDescription, flags_ui::kOsIos,
1826 FEATURE_VALUE_TYPE(omnibox::kMlUrlScoreCaching)},
1827 {"omnibox-ml-url-scoring", flag_descriptions::kOmniboxMlUrlScoringName,
1828 flag_descriptions::kOmniboxMlUrlScoringDescription, flags_ui::kOsIos,
1829 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kMlUrlScoring,
1830 kOmniboxMlUrlScoringVariations,
1831 "MlUrlScoring")},
1832 {"omnibox-ml-url-search-blending",
1833 flag_descriptions::kOmniboxMlUrlSearchBlendingName,
1834 flag_descriptions::kOmniboxMlUrlSearchBlendingDescription,
1835 flags_ui::kOsIos,
1836 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kMlUrlSearchBlending,
1837 kMlUrlSearchBlendingVariations,
1838 "MlUrlScoring")},
1839 {"omnibox-ml-url-scoring-model",
1840 flag_descriptions::kOmniboxMlUrlScoringModelName,
1841 flag_descriptions::kOmniboxMlUrlScoringModelDescription, flags_ui::kOsIos,
Khalid Peer4501c1f2024-06-27 16:12:041842 FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kUrlScoringModel,
1843 kUrlScoringModelVariations,
1844 "MlUrlScoring")},
Siyu An4a486f02024-06-18 19:41:281845 {"autofill-show-manual-fill-for-virtual-cards",
1846 flag_descriptions::kAutofillShowManualFillForVirtualCardsName,
1847 flag_descriptions::kAutofillShowManualFillForVirtualCardsDescription,
1848 flags_ui::kOsIos,
1849 FEATURE_VALUE_TYPE(
1850 autofill::features::kAutofillShowManualFillForVirtualCards)},
adamtaf85e48d2024-07-08 17:13:291851 {"home-customization", flag_descriptions::kHomeCustomizationName,
1852 flag_descriptions::kHomeCustomizationDescription, flags_ui::kOsIos,
1853 FEATURE_VALUE_TYPE(kHomeCustomization)},
Benjamin Williams0594caf2024-07-09 17:51:381854 {"safety-check-notifications",
1855 flag_descriptions::kSafetyCheckNotificationsName,
1856 flag_descriptions::kSafetyCheckNotificationsDescription, flags_ui::kOsIos,
1857 FEATURE_WITH_PARAMS_VALUE_TYPE(kSafetyCheckNotifications,
1858 kSafetyCheckNotificationsVariations,
1859 "SafetyCheckNotifications")},
Federica Germinarioa1fe0902024-07-12 08:28:461860 {"app-background-refresh-ios", flag_descriptions::kAppBackgroundRefreshName,
1861 flag_descriptions::kAppBackgroundRefreshDescription, flags_ui::kOsIos,
1862 FEATURE_VALUE_TYPE(kEnableAppBackgroundRefresh)},
Chris Lu3eba26312024-07-12 20:21:381863 {"home-memory-improvements", flag_descriptions::kHomeMemoryImprovementsName,
1864 flag_descriptions::kHomeMemoryImprovementsDescription, flags_ui::kOsIos,
1865 FEATURE_VALUE_TYPE(kHomeMemoryImprovements)},
Stephen McGruer8fe98b62024-07-16 13:10:131866 {"autofill-upload-card-request-timeout",
1867 flag_descriptions::kAutofillUploadCardRequestTimeoutName,
1868 flag_descriptions::kAutofillUploadCardRequestTimeoutDescription,
1869 flags_ui::kOsIos,
1870 FEATURE_WITH_PARAMS_VALUE_TYPE(
1871 autofill::features::kAutofillUploadCardRequestTimeout,
1872 kAutofillUploadCardRequestTimeoutOptions,
1873 "AutofillUploadCardRequestTimeout")},
Karol Sygiet6ac82c82024-07-16 14:22:391874 {"clear-undecryptable-passwords",
1875 flag_descriptions::kClearUndecryptablePasswordsName,
1876 flag_descriptions::kClearUndecryptablePasswordsDescription,
1877 flags_ui::kOsIos,
1878 FEATURE_VALUE_TYPE(
1879 password_manager::features::kClearUndecryptablePasswords)},
Stephen McGruer0904cae2024-07-17 19:54:461880 {"autofill-vcn-enroll-request-timeout",
1881 flag_descriptions::kAutofillVcnEnrollRequestTimeoutName,
1882 flag_descriptions::kAutofillVcnEnrollRequestTimeoutDescription,
1883 flags_ui::kOsIos,
1884 FEATURE_WITH_PARAMS_VALUE_TYPE(
1885 autofill::features::kAutofillVcnEnrollRequestTimeout,
1886 kAutofillVcnEnrollRequestTimeoutOptions,
1887 "AutofillVcnEnrollRequestTimeout")},
Charles Yang98bef0c2024-07-19 12:24:141888 {"lens-web-page-load-optimization-enabled",
1889 flag_descriptions::kLensWebPageLoadOptimizationEnabledName,
1890 flag_descriptions::kLensWebPageLoadOptimizationEnabledDescription,
1891 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kLensWebPageLoadOptimizationEnabled)},
Eric Ekey4a930592024-07-19 18:58:141892 {"segmented-default-browser-promo",
1893 flag_descriptions::kSegmentedDefaultBrowserPromoName,
1894 flag_descriptions::kSegmentedDefaultBrowserPromoDescription,
1895 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kSegmentedDefaultBrowserPromo)},
Nicolas MacBethc738c4e2024-07-19 21:14:191896 {"rich-bubble-without-image",
1897 flag_descriptions::kRichBubbleWithoutImageName,
1898 flag_descriptions::kRichBubbleWithoutImageDescription, flags_ui::kOsIos,
1899 FEATURE_VALUE_TYPE(kRichBubbleWithoutImage)},
Junhui He52294652024-07-23 23:50:151900 {"autofill-unmask-card-request-timeout",
1901 flag_descriptions::kAutofillUnmaskCardRequestTimeoutName,
1902 flag_descriptions::kAutofillUnmaskCardRequestTimeoutDescription,
1903 flags_ui::kOsIos,
1904 FEATURE_VALUE_TYPE(autofill::features::kAutofillUnmaskCardRequestTimeout)},
vincbe1379832024-08-06 19:08:121905 {"autofill-across-iframes", flag_descriptions::kAutofillAcrossIframesName,
1906 flag_descriptions::kAutofillAcrossIframesDescription, flags_ui::kOsIos,
1907 FEATURE_VALUE_TYPE(autofill::features::kAutofillAcrossIframesIos)},
Cristian Ciacu62fe1912024-08-07 10:14:501908 {"ios-page-info-last-visited",
1909 flag_descriptions::kPageInfoLastVisitedIOSName,
1910 flag_descriptions::kPageInfoLastVisitedIOSDescription, flags_ui::kOsIos,
1911 FEATURE_VALUE_TYPE(kPageInfoLastVisitedIOS)},
Daniel White1ced9e62024-08-15 19:27:381912 {"enable-trait-collection-registration",
1913 flag_descriptions::kEnableTraitCollectionRegistrationName,
1914 flag_descriptions::kEnableTraitCollectionRegistrationDescription,
1915 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kEnableTraitCollectionRegistration)},
Ernesto Izquierdo Cluaebe0a0252024-08-19 22:05:541916 {"autofill-isolated-world-ios",
1917 flag_descriptions::kAutofillIsolatedWorldForJavascriptIOSName,
1918 flag_descriptions::kAutofillIsolatedWorldForJavascriptIOSDescription,
1919 flags_ui::kOsIos,
1920 FEATURE_VALUE_TYPE(kAutofillIsolatedWorldForJavascriptIos)},
Ewann Pelle34939b62024-08-22 10:45:491921 {"tab-group-indicator", flag_descriptions::kTabGroupIndicatorName,
1922 flag_descriptions::kTabGroupIndicatorDescription, flags_ui::kOsIos,
1923 FEATURE_VALUE_TYPE(kTabGroupIndicator)},
thefrog8ed47452024-08-30 13:32:481924 {"safe-browsing-local-lists-use-sbv5",
1925 flag_descriptions::kSafeBrowsingLocalListsUseSBv5Name,
1926 flag_descriptions::kSafeBrowsingLocalListsUseSBv5Description,
1927 flags_ui::kOsIos, FEATURE_VALUE_TYPE(safe_browsing::kLocalListsUseSBv5)},
Chris Lu4c688e02024-09-07 00:48:081928 {"ios-price-tracking-notification-promo-card",
1929 flag_descriptions::kPriceTrackingPromoName,
1930 flag_descriptions::kPriceTrackingPromoDescription, flags_ui::kOsIos,
1931 FEATURE_VALUE_TYPE(commerce::kPriceTrackingPromo)},
1932 {"ios-segmentation-ephemeral-card-ranker",
1933 flag_descriptions::kSegmentationPlatformEphemeralCardRankerName,
1934 flag_descriptions::kSegmentationPlatformEphemeralCardRankerDescription,
1935 flags_ui::kOsIos,
1936 FEATURE_WITH_PARAMS_VALUE_TYPE(
1937 segmentation_platform::features::
1938 kSegmentationPlatformEphemeralCardRanker,
1939 kEphemeralCardRankerCardOverrideOptions,
1940 "SegmentationPlatformEphemeralCardRanker")},
Asami Doi55f87dd2024-09-12 12:55:481941 {"new-sync-opt-in-illustration",
1942 flag_descriptions::kNewSyncOptInIllustrationName,
1943 flag_descriptions::kNewSyncOptInIllustrationDescription, flags_ui::kOsIos,
1944 FEATURE_VALUE_TYPE(kNewSyncOptInIllustration)},
Alexander Tekle8cf3c8e2024-09-13 21:38:071945 {"autofill-enable-log-form-events-to-all-parsed-form-types",
1946 flag_descriptions::kAutofillEnableLogFormEventsToAllParsedFormTypesName,
1947 flag_descriptions::
1948 kAutofillEnableLogFormEventsToAllParsedFormTypesDescription,
1949 flags_ui::kOsIos,
1950 FEATURE_VALUE_TYPE(
1951 autofill::features::kAutofillEnableLogFormEventsToAllParsedFormTypes)},
Ananya Seelam2893d7b2024-09-23 19:49:391952 {"omnibox-on-clobber-focus-type-on-ios",
1953 flag_descriptions::kOmniboxOnClobberFocusTypeOnIOSName,
1954 flag_descriptions::kOmniboxOnClobberFocusTypeOnIOSDescription,
1955 flags_ui::kOsIos,
1956 FEATURE_VALUE_TYPE(omnibox::kOmniboxOnClobberFocusTypeOnContent)},
Radu Nitescu06133382024-10-21 18:33:291957 {"lens-overlay-enable-ipad-compatibility",
1958 flag_descriptions::kLensOverlayEnableIPadCompatibilityName,
1959 flag_descriptions::kLensOverlayEnableIPadCompatibilityDescription,
1960 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kLensOverlayEnableIPadCompatibility)},
Ameur Hosni22b62d92024-09-25 10:51:021961 {"lens-overlay-force-show-onboarding-screen",
1962 flag_descriptions::kLensOverlayForceShowOnboardingScreenName,
1963 flag_descriptions::kLensOverlayForceShowOnboardingScreenDescription,
1964 flags_ui::kOsIos,
1965 FEATURE_VALUE_TYPE(kLensOverlayForceShowOnboardingScreen)},
Gauthier Ambard766f4cf2024-09-26 16:56:251966 {"data-sharing", flag_descriptions::kDataSharingName,
1967 flag_descriptions::kDataSharingDescription, flags_ui::kOsIos,
1968 FEATURE_VALUE_TYPE(data_sharing::features::kDataSharingFeature)},
1969 {"data-sharing-join-only", flag_descriptions::kDataSharingJoinOnlyName,
1970 flag_descriptions::kDataSharingJoinOnlyDescription, flags_ui::kOsIos,
1971 FEATURE_VALUE_TYPE(data_sharing::features::kDataSharingJoinOnly)},
Rubin Deliallisib66a77a2024-10-02 18:09:481972 {"ios-soft-lock", flag_descriptions::kIOSSoftLockName,
1973 flag_descriptions::kIOSSoftLockDescription, flags_ui::kOsIos,
Marc Treib31e4f9f2024-10-07 09:55:541974 FEATURE_VALUE_TYPE(kIOSSoftLock)},
1975 {"separate-profiles-for-managed-accounts",
1976 flag_descriptions::kSeparateProfilesForManagedAccountsName,
1977 flag_descriptions::kSeparateProfilesForManagedAccountsDescription,
Olivier ROBINb17c14b92024-10-09 13:49:131978 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kSeparateProfilesForManagedAccounts)},
1979 {"tab-resumption-2-reason", flag_descriptions::kTabResumption2ReasonName,
1980 flag_descriptions::kTabResumption2ReasonDescription, flags_ui::kOsIos,
1981 FEATURE_VALUE_TYPE(kTabResumption2Reason)},
1982 {"tab-resumption-images", flag_descriptions::kTabResumptionImagesName,
1983 flag_descriptions::kTabResumptionImagesDescription, flags_ui::kOsIos,
1984 FEATURE_WITH_PARAMS_VALUE_TYPE(kTabResumptionImages,
1985 kTabResumptionImagesVariations,
1986 "TabResumption1_5")},
Benjamin Williamsd7f854b2024-10-09 17:12:271987 {"segmentation-platform-tips-ephemeral-card",
1988 flag_descriptions::kSegmentationPlatformTipsEphemeralCardName,
1989 flag_descriptions::kSegmentationPlatformTipsEphemeralCardDescription,
1990 flags_ui::kOsIos,
1991 FEATURE_VALUE_TYPE(segmentation_platform::features::
vincbf23f7332024-10-11 19:32:121992 kSegmentationPlatformTipsEphemeralCard)},
1993 {"ios-password-suggestion-bottom-sheet-v2",
1994 flag_descriptions::kPasswordSuggestionBottomSheetV2Name,
1995 flag_descriptions::kPasswordSuggestionBottomSheetV2Description,
1996 flags_ui::kOsIos,
Federica Germinariof58b5a7e2024-10-22 10:35:421997 FEATURE_VALUE_TYPE(password_manager::features::kIOSPasswordBottomSheetV2)},
1998 {"ios-post-profile-switch-actions",
1999 flag_descriptions::kPostProfileSwitchActionsName,
2000 flag_descriptions::kPostProfileSwitchActionsDescription, flags_ui::kOsIos,
2001 FEATURE_VALUE_TYPE(kPostProfileSwitchActions)},
Charles Yang11dd8ab2024-10-24 19:15:532002 {"lens-unary-apis-with-http-transport-enabled",
2003 flag_descriptions::kLensUnaryApisWithHttpTransportEnabledName,
2004 flag_descriptions::kLensUnaryApisWithHttpTransportEnabledDescription,
2005 flags_ui::kOsIos,
2006 FEATURE_VALUE_TYPE(kLensUnaryApisWithHttpTransportEnabled)},
Christian Xu6db322d2024-10-25 14:12:492007 {"lens-overlay-enable-same-tab-navigation",
2008 flag_descriptions::kLensOverlayEnableSameTabNavigationName,
2009 flag_descriptions::kLensOverlayEnableSameTabNavigationDescription,
2010 flags_ui::kOsIos, FEATURE_VALUE_TYPE(kLensOverlayEnableSameTabNavigation)},
Federica Germinariof58b5a7e2024-10-22 10:35:422011};
sdefresne14900ee2015-11-27 14:43:212012
Rohit Raobed794c2020-04-27 15:27:452013bool SkipConditionalFeatureEntry(const flags_ui::FeatureEntry& entry) {
2014 return false;
2015}
2016
2017flags_ui::FlagsState& GetGlobalFlagsState() {
2018 static base::NoDestructor<flags_ui::FlagsState> flags_state(kFeatureEntries,
2019 nullptr);
2020 return *flags_state;
2021}
David Jean5ca263c2021-08-18 09:19:302022// Creates the experimental test policies map, used by AsyncPolicyLoader and
2023// PolicyLoaderIOS to locally enable policies.
Vincent Boisselleed0e6f1a2021-11-09 06:47:342024NSMutableDictionary* CreateExperimentalTestingPolicies() {
sdefresne14900ee2015-11-27 14:43:212025 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
2026
Guillaume Jenkins25e9bd72020-08-27 17:39:062027 // Shared variables for all enterprise experimental flags.
Guillaume Jenkins57606d72020-08-13 17:32:552028 NSMutableDictionary* testing_policies = [[NSMutableDictionary alloc] init];
Guillaume Jenkins25e9bd72020-08-27 17:39:062029 NSMutableArray* allowed_experimental_policies = [[NSMutableArray alloc] init];
Guillaume Jenkins57606d72020-08-13 17:32:552030
Guillaume Jenkins25e9bd72020-08-27 17:39:062031 // Set some sample policy values for testing if EnableSamplePolicies is set to
2032 // true.
Guillaume Jenkinseeb7007c2020-06-25 22:55:402033 if ([defaults boolForKey:@"EnableSamplePolicies"]) {
Guillaume Jenkins57606d72020-08-13 17:32:552034 [testing_policies addEntriesFromDictionary:@{
Tina Wang59d0b7e2020-08-11 04:41:012035 base::SysUTF8ToNSString(policy::key::kAutofillAddressEnabled) : @NO,
2036
Guillaume Jenkinseeb7007c2020-06-25 22:55:402037 base::SysUTF8ToNSString(policy::key::kAutofillCreditCardEnabled) : @NO,
2038
2039 // 2 = Disable all variations
2040 base::SysUTF8ToNSString(policy::key::kChromeVariations) : @2,
2041
2042 // 2 = Do not allow any site to show popups
2043 base::SysUTF8ToNSString(policy::key::kDefaultPopupsSetting) : @2,
2044
Tina Wang5abee802020-07-29 23:09:522045 // Set default search engine.
2046 base::SysUTF8ToNSString(policy::key::kDefaultSearchProviderEnabled) :
2047 @YES,
2048 base::SysUTF8ToNSString(policy::key::kDefaultSearchProviderSearchURL) :
2049 @"http://www.google.com/search?q={searchTerms}",
2050 base::SysUTF8ToNSString(policy::key::kDefaultSearchProviderName) :
Tina Wang7cd0a062020-09-15 21:31:022051 @"TestEngine",
Tina Wang5abee802020-07-29 23:09:522052
Tina Wang89068c82020-10-29 15:51:502053 base::SysUTF8ToNSString(policy::key::kEditBookmarksEnabled) : @NO,
2054
Gauthier Ambard21b23702021-04-16 16:11:272055 base::SysUTF8ToNSString(policy::key::kNTPContentSuggestionsEnabled) : @NO,
2056
Tina Wang59d0b7e2020-08-11 04:41:012057 base::SysUTF8ToNSString(policy::key::kTranslateEnabled) : @NO,
Tina Wang54dddfc22020-08-20 22:34:532058
2059 // 2 = Enhanced safe browsing protection
2060 base::SysUTF8ToNSString(policy::key::kSafeBrowsingProtectionLevel) : @2,
2061
2062 base::SysUTF8ToNSString(policy::key::kSearchSuggestEnabled) : @YES,
Hira Mahmooda53b8d632023-01-03 10:03:292063
2064 base::SysUTF8ToNSString(policy::key::kAppStoreRatingEnabled) : @NO,
Guillaume Jenkins57606d72020-08-13 17:32:552065 }];
2066 }
2067
Ewann227a3c02021-04-19 12:04:542068 if ([defaults boolForKey:@"EnableSyncDisabledPolicy"]) {
Guillaume Jenkinsfe46d3a2021-04-26 19:51:042069 NSString* sync_policy_key =
2070 base::SysUTF8ToNSString(policy::key::kSyncDisabled);
David Jean5ca263c2021-08-18 09:19:302071 [testing_policies addEntriesFromDictionary:@{sync_policy_key : @YES}];
Ewann227a3c02021-04-19 12:04:542072 }
Ewann227a3c02021-04-19 12:04:542073
Ewann570a6302021-08-17 07:22:422074 // SyncTypesListDisabled policy.
2075 NSString* Sync_types_list_disabled_key =
2076 base::SysUTF8ToNSString(policy::key::kSyncTypesListDisabled);
2077 NSMutableArray* Sync_types_list_disabled_values =
2078 [[NSMutableArray alloc] init];
2079 if ([defaults boolForKey:@"SyncTypesListBookmarks"]) {
2080 [Sync_types_list_disabled_values addObject:@"bookmarks"];
2081 }
2082 if ([defaults boolForKey:@"SyncTypesListReadingList"]) {
2083 [Sync_types_list_disabled_values addObject:@"readingList"];
2084 }
2085 if ([defaults boolForKey:@"SyncTypesListPreferences"]) {
2086 [Sync_types_list_disabled_values addObject:@"preferences"];
2087 }
2088 if ([defaults boolForKey:@"SyncTypesListPasswords"]) {
2089 [Sync_types_list_disabled_values addObject:@"passwords"];
2090 }
2091 if ([defaults boolForKey:@"SyncTypesListAutofill"]) {
2092 [Sync_types_list_disabled_values addObject:@"autofill"];
2093 }
2094 if ([defaults boolForKey:@"SyncTypesListTypedUrls"]) {
2095 [Sync_types_list_disabled_values addObject:@"typedUrls"];
2096 }
2097 if ([defaults boolForKey:@"SyncTypesListTabs"]) {
2098 [Sync_types_list_disabled_values addObject:@"tabs"];
2099 }
2100 if ([Sync_types_list_disabled_values count]) {
2101 [testing_policies addEntriesFromDictionary:@{
2102 Sync_types_list_disabled_key : Sync_types_list_disabled_values
2103 }];
Ewann570a6302021-08-17 07:22:422104 }
2105
Gauthier Ambard073eaa92021-11-22 15:24:132106 // If an incognito mode availability is set, set the value.
Tina Wangc6bcf572021-01-27 18:15:522107 NSString* incognito_policy_key =
2108 base::SysUTF8ToNSString(policy::key::kIncognitoModeAvailability);
2109 NSInteger incognito_mode_availability =
2110 [defaults integerForKey:incognito_policy_key];
2111 if (incognito_mode_availability) {
Tina Wangc6bcf572021-01-27 18:15:522112 [testing_policies addEntriesFromDictionary:@{
2113 incognito_policy_key : @(incognito_mode_availability),
2114 }];
2115 }
2116
Ewann40a8f8a2021-07-29 10:01:202117 NSString* restriction_pattern =
2118 [defaults stringForKey:@"RestrictAccountsToPatterns"];
2119 if ([restriction_pattern length] > 0) {
Ewannb3bee382021-08-16 09:12:292120 NSString* restrict_key =
2121 base::SysUTF8ToNSString(policy::key::kRestrictAccountsToPatterns);
Ewann40a8f8a2021-07-29 10:01:202122 [testing_policies addEntriesFromDictionary:@{
Ewannb3bee382021-08-16 09:12:292123 restrict_key : @[ restriction_pattern ]
Ewann40a8f8a2021-07-29 10:01:202124 }];
2125 }
2126
Vincent Boisselle19200bc2021-09-01 17:58:252127 // If the sign-in policy is set (not "None"), add the policy key to the list
2128 // of enabled experimental policies, and set the value.
2129 NSString* const kSigninPolicyKey = @"BrowserSignin";
2130 NSInteger signin_policy_mode = [defaults integerForKey:kSigninPolicyKey];
2131 if (signin_policy_mode) {
2132 // Remove the mode offset that was used to represent the unset policy.
2133 --signin_policy_mode;
2134 DCHECK(signin_policy_mode >= 0);
2135
Vincent Boisselle19200bc2021-09-01 17:58:252136 [testing_policies addEntriesFromDictionary:@{
2137 kSigninPolicyKey : @(signin_policy_mode),
2138 }];
2139 }
2140
Veronique Nguyen9b1044f2022-01-11 14:41:132141 // If the New Tab Page URL is set (not empty) add the value to the list of
2142 // test policies.
2143 NSString* ntp_location = [defaults stringForKey:@"NTPLocation"];
2144 if ([ntp_location length] > 0) {
2145 NSString* ntp_location_key =
2146 base::SysUTF8ToNSString(policy::key::kNewTabPageLocation);
2147 [testing_policies
2148 addEntriesFromDictionary:@{ntp_location_key : ntp_location}];
Veronique Nguyen302d8702022-01-12 21:18:572149 [allowed_experimental_policies addObject:ntp_location_key];
Veronique Nguyen9b1044f2022-01-11 14:41:132150 }
2151
Ali Juma9ec36d22022-03-28 14:53:122152 if ([defaults boolForKey:@"DisallowChromeDataInBackups"]) {
2153 NSString* allow_backups_key =
2154 base::SysUTF8ToNSString(policy::key::kAllowChromeDataInBackups);
2155 [testing_policies addEntriesFromDictionary:@{allow_backups_key : @NO}];
2156 [allowed_experimental_policies addObject:allow_backups_key];
2157 }
2158
Victor Hugo Vianna Silva9e1a7302023-02-21 08:56:242159 if ([defaults boolForKey:@"DisablePasswordManagerPolicy"]) {
2160 NSString* password_manager_key =
2161 base::SysUTF8ToNSString(policy::key::kPasswordManagerEnabled);
2162 [testing_policies addEntriesFromDictionary:@{password_manager_key : @NO}];
2163 [allowed_experimental_policies addObject:password_manager_key];
2164 }
Vincent Boisselle003569a72023-09-11 16:03:122165
2166 if ([defaults boolForKey:@"EnableUserPolicyMerge"]) {
2167 NSString* user_policy_merge_key =
2168 base::SysUTF8ToNSString(policy::key::kCloudUserPolicyMerge);
2169 [testing_policies addEntriesFromDictionary:@{user_policy_merge_key : @YES}];
2170 [allowed_experimental_policies addObject:user_policy_merge_key];
2171 }
2172
Arthur Milchiorbb44f5c82023-03-14 16:14:462173 if ([defaults boolForKey:@"AddManagedBookmarks"]) {
2174 NSString* managed_bookmarks_key =
2175 base::SysUTF8ToNSString(policy::key::kManagedBookmarks);
2176 NSString* managed_bookmarks_value =
Avi Drissmanaa245812023-04-27 20:20:572177 @"["
2178 // The following gets filtered out from
2179 // the JSON string when parsed.
2180 " {"
2181 " \"toplevel_name\": \"Managed Bookmarks\""
2182 " },"
2183 " {"
2184 " \"name\": \"Google\","
2185 " \"url\": \"google.com\""
2186 " },"
2187 " {"
2188 " \"name\": \"Empty Folder\","
2189 " \"children\": []"
2190 " },"
2191 " {"
2192 " \"name\": \"Big Folder\","
2193 " \"children\": ["
2194 " {"
2195 " \"name\": \"Youtube\","
2196 " \"url\": \"youtube.com\""
2197 " },"
2198 " {"
2199 " \"name\": \"Chromium\","
2200 " \"url\": \"chromium.org\""
2201 " },"
2202 " {"
2203 " \"name\": \"More Stuff\","
2204 " \"children\": ["
2205 " {"
2206 " \"name\": \"Bugs\","
2207 " \"url\": \"crbug.com\""
2208 " }"
2209 " ]"
2210 " }"
2211 " ]"
2212 " }"
2213 "]";
Arthur Milchiorbb44f5c82023-03-14 16:14:462214 [testing_policies addEntriesFromDictionary:@{
2215 managed_bookmarks_key : managed_bookmarks_value
2216 }];
2217 [allowed_experimental_policies addObject:managed_bookmarks_key];
2218 }
Victor Hugo Vianna Silva9e1a7302023-02-21 08:56:242219
Guillaume Jenkins25e9bd72020-08-27 17:39:062220 // If any experimental policy was allowed, set the EnableExperimentalPolicies
2221 // policy.
2222 if ([allowed_experimental_policies count] > 0) {
2223 [testing_policies setValue:allowed_experimental_policies
2224 forKey:base::SysUTF8ToNSString(
2225 policy::key::kEnableExperimentalPolicies)];
2226 }
2227
jlebel2eb40222022-05-06 11:15:422228 NSString* metrics_reporting_key = @"MetricsReportingEnabled";
2229 switch ([defaults integerForKey:metrics_reporting_key]) {
2230 case 1:
2231 // Metrics reporting forced.
Louis Romeroec603fd5f62023-01-20 14:07:132232 [testing_policies setValue:@YES forKey:metrics_reporting_key];
jlebel2eb40222022-05-06 11:15:422233 break;
2234 case 2:
2235 // Metrics reporting disabled.
Louis Romeroec603fd5f62023-01-20 14:07:132236 [testing_policies setValue:@NO forKey:metrics_reporting_key];
jlebel2eb40222022-05-06 11:15:422237 break;
2238 default:
2239 // Metrics reporting not managed.
2240 break;
2241 }
2242
David Jean6f85d44f2021-08-19 08:08:452243 // Warning: Add new flags to TestingPoliciesHash() below.
2244
David Jean5ca263c2021-08-18 09:19:302245 return testing_policies;
2246}
David Jean6f85d44f2021-08-19 08:08:452247
David Jean5ca263c2021-08-18 09:19:302248} // namespace
2249
Gauthier Ambard02dbf022022-08-23 08:28:472250// Add all switches from experimental flags to `command_line`.
David Jean5ca263c2021-08-18 09:19:302251void AppendSwitchesFromExperimentalSettings(base::CommandLine* command_line) {
2252 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
2253
2254 // Set the UA flag if UseMobileSafariUA is enabled.
2255 if ([defaults boolForKey:@"UseMobileSafariUA"]) {
2256 // Safari uses "Vesion/", followed by the OS version excluding bugfix, where
2257 // Chrome puts its product token.
2258 int32_t major = 0;
2259 int32_t minor = 0;
2260 int32_t bugfix = 0;
2261 base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &bugfix);
2262 std::string product = base::StringPrintf("Version/%d.%d", major, minor);
2263
2264 command_line->AppendSwitchASCII(switches::kUserAgent,
2265 web::BuildMobileUserAgent(product));
2266 }
2267
2268 // Shared variables for all enterprise experimental flags.
Vincent Boisselleed0e6f1a2021-11-09 06:47:342269 NSMutableDictionary* testing_policies = CreateExperimentalTestingPolicies();
David Jean5ca263c2021-08-18 09:19:302270
2271 // If a CBCM enrollment token is provided, force Chrome Browser Cloud
2272 // Management to enabled and add the token to the list of policies.
2273 NSString* token_key =
2274 base::SysUTF8ToNSString(policy::key::kCloudManagementEnrollmentToken);
2275 NSString* token = [defaults stringForKey:token_key];
2276
2277 if ([token length] > 0) {
2278 command_line->AppendSwitch(switches::kEnableChromeBrowserCloudManagement);
2279 [testing_policies setValue:token forKey:token_key];
2280 }
2281
Guillaume Jenkins57606d72020-08-13 17:32:552282 // If some policies were set, commit them to the app's registration defaults.
2283 if ([testing_policies count] > 0) {
Guillaume Jenkinseeb7007c2020-06-25 22:55:402284 NSDictionary* registration_defaults =
2285 @{kPolicyLoaderIOSConfigurationKey : testing_policies};
2286 [defaults registerDefaults:registration_defaults];
2287 }
2288
sdefresne14900ee2015-11-27 14:43:212289 // Freeform commandline flags. These are added last, so that any flags added
2290 // earlier in this function take precedence.
2291 if ([defaults boolForKey:@"EnableFreeformCommandLineFlags"]) {
2292 base::CommandLine::StringVector flags;
2293 // Append an empty "program" argument.
2294 flags.push_back("");
2295
2296 // The number of flags corresponds to the number of text fields in
2297 // Experimental.plist.
2298 const int kNumFreeformFlags = 5;
2299 for (int i = 1; i <= kNumFreeformFlags; ++i) {
2300 NSString* key =
2301 [NSString stringWithFormat:@"FreeformCommandLineFlag%d", i];
2302 NSString* flag = [defaults stringForKey:key];
2303 if ([flag length]) {
Robbie Gibsonc91ce622019-05-20 14:44:332304 // iOS keyboard replaces -- with —, so undo that.
2305 flag = [flag stringByReplacingOccurrencesOfString:@"—"
2306 withString:@"--"
2307 options:0
2308 range:NSMakeRange(0, 1)];
2309 // To make things easier, allow flags with no dashes by prepending them
2310 // here. This also allows for flags that just have one dash if they
2311 // exist.
2312 if (![flag hasPrefix:@"-"]) {
2313 flag = [@"--" stringByAppendingString:flag];
2314 }
sdefresne14900ee2015-11-27 14:43:212315 flags.push_back(base::SysNSStringToUTF8(flag));
2316 }
2317 }
2318
2319 base::CommandLine temp_command_line(flags);
2320 command_line->AppendArguments(temp_command_line, false);
2321 }
msardafc76f662017-02-24 12:46:282322
justincohendacc85d2017-06-28 23:34:102323 // Populate command line flag for 3rd party keyboard omnibox workaround.
2324 NSString* enableThirdPartyKeyboardWorkaround =
2325 [defaults stringForKey:@"EnableThirdPartyKeyboardWorkaround"];
2326 if ([enableThirdPartyKeyboardWorkaround isEqualToString:@"Enabled"]) {
2327 command_line->AppendSwitch(switches::kEnableThirdPartyKeyboardWorkaround);
2328 } else if ([enableThirdPartyKeyboardWorkaround isEqualToString:@"Disabled"]) {
2329 command_line->AppendSwitch(switches::kDisableThirdPartyKeyboardWorkaround);
2330 }
2331
Sylvain Defresned3cd8d92022-01-18 13:35:082332 ios::provider::AppendSwitchesFromExperimentalSettings(defaults, command_line);
sdefresne14900ee2015-11-27 14:43:212333}
2334
sdefresne14900ee2015-11-27 14:43:212335void ConvertFlagsToSwitches(flags_ui::FlagsStorage* flags_storage,
2336 base::CommandLine* command_line) {
Sylvain Defresne8327a2f2019-01-17 14:19:182337 GetGlobalFlagsState().ConvertFlagsToSwitches(
sdefresnec9763902015-12-02 10:30:112338 flags_storage, command_line, flags_ui::kAddSentinels,
Gregory Chatzinofff6523722017-11-21 01:33:532339 switches::kEnableFeatures, switches::kDisableFeatures);
sdefresne14900ee2015-11-27 14:43:212340}
2341
jkrcalbf073372016-07-29 07:21:312342std::vector<std::string> RegisterAllFeatureVariationParameters(
2343 flags_ui::FlagsStorage* flags_storage,
2344 base::FeatureList* feature_list) {
Sylvain Defresne8327a2f2019-01-17 14:19:182345 return GetGlobalFlagsState().RegisterAllFeatureVariationParameters(
2346 flags_storage, feature_list);
jkrcalbf073372016-07-29 07:21:312347}
2348
sdefresne14900ee2015-11-27 14:43:212349void GetFlagFeatureEntries(flags_ui::FlagsStorage* flags_storage,
2350 flags_ui::FlagAccess access,
Matt Menke4d777572022-06-15 15:55:502351 base::Value::List& supported_entries,
2352 base::Value::List& unsupported_entries) {
Sylvain Defresne8327a2f2019-01-17 14:19:182353 GetGlobalFlagsState().GetFlagFeatureEntries(
sdefresne14900ee2015-11-27 14:43:212354 flags_storage, access, supported_entries, unsupported_entries,
Renjie Tang208c8192020-11-03 00:46:512355 base::BindRepeating(&SkipConditionalFeatureEntry));
sdefresne14900ee2015-11-27 14:43:212356}
2357
2358void SetFeatureEntryEnabled(flags_ui::FlagsStorage* flags_storage,
2359 const std::string& internal_name,
2360 bool enable) {
Sylvain Defresne8327a2f2019-01-17 14:19:182361 GetGlobalFlagsState().SetFeatureEntryEnabled(flags_storage, internal_name,
2362 enable);
sdefresne14900ee2015-11-27 14:43:212363}
2364
2365void ResetAllFlags(flags_ui::FlagsStorage* flags_storage) {
Sylvain Defresne8327a2f2019-01-17 14:19:182366 GetGlobalFlagsState().ResetAllFlags(flags_storage);
sdefresne14900ee2015-11-27 14:43:212367}
2368
Nicolas MacBeth972e2592023-02-23 15:22:092369bool IsRestartNeededToCommitChanges() {
2370 return GetGlobalFlagsState().IsRestartNeededToCommitChanges();
2371}
2372
sdefresne14900ee2015-11-27 14:43:212373namespace testing {
2374
Elly Fong-Jones323ab1092021-08-23 22:36:312375base::span<const flags_ui::FeatureEntry> GetFeatureEntries() {
2376 return base::span<const flags_ui::FeatureEntry>(kFeatureEntries,
Daniel Cheng1f047a82022-02-26 10:04:532377 std::size(kFeatureEntries));
sdefresne14900ee2015-11-27 14:43:212378}
2379
2380} // namespace testing