// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_AUTOFILL_CORE_COMMON_AUTOFILL_FEATURES_H_
#define COMPONENTS_AUTOFILL_CORE_COMMON_AUTOFILL_FEATURES_H_

#include "base/component_export.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "base/time/time.h"
#include "build/build_config.h"

namespace autofill::features {

// Declares a country restricted feature flag on mobile platforms and a
// non-country restricted one on desktop. This is useful for certain AutofillAi
// features.
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
#define DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(feature_name) \
  BASE_DECLARE_FEATURE_WITH_COUNTRY_RESTRICTIONS(feature_name)
#else
#define DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(feature_name) \
  BASE_DECLARE_FEATURE(feature_name)
#endif

// All features in alphabetical order.

COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kActorFormFillingServiceEnableAddress);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kActorFormFillingServiceEnableCreditCard);

COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAcceptDomMutationAfterAutofillSubmission);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAcrossIframesIosThrottling);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAcrossIframesIosTriggerFormExtraction);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillActorFormFillingSplitOutContactInfo);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillActorMode);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string,
                           kAutofillActorModeExtraInformationPreamble);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillActorRewriteCreditCardTriggerField);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillActorSuppressImport);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAddressSuggestionsOnTyping);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(int, kAutofillOnTypingMinNumberCharactersToMatch);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(int, kAutofillOnTypingMaxNumberCharactersToMatch);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(int, kAutofillOnTypingMinMissingCharactersNumber);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillOnTypingFieldTypes);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool,
                           kAutofillOnTypingAllowOnlyOnUnclassifiedFields);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAddressSuggestionsOnTypingHasStrikeDatabase);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAddressUserDeclinedSaveSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAddressUserDeclinedSuggestionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAddressUserPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiAlwaysTriggerServerModel);
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(kAutofillAiAvailableByDefault);
#endif
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(kAutofillAiDedupeEntities);
#if BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiEditEntitiesFromSaveUpdatePrompt);
#endif  // BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillAiFillingSurvey);

COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillAiIgnoreGeoIp);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillAiIgnoreGeoIpAllowlist);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillAiIgnoreGeoIpBlocklist);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiImportConstraintsForSync);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiLimitSuggestionWidth);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiNewUpdatePrompt);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiNoFillingIconsExperiment);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiOnlineModelToggleNewTitle);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillAiOrder);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiPrivateAiShadowMetric);
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(kAutofillAiReauthRequired);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillAiSavePromptSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string,
                           kAutofillAiSavePromptSurveyAcceptedTriggerId);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string,
                           kAutofillAiSavePromptSurveyDeclinedTriggerId);
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(kAutofillAiServerModel);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta, kAutofillAiServerModelCacheAge);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(int, kAutofillAiServerModelCacheSize);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta,
                           kAutofillAiServerModelExecutionTimeout);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool, kAutofillAiServerModelSendPageContent);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool, kAutofillAiServerModelSendPageUrl);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool, kAutofillAiServerModelUseCacheResults);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiShipment);
#if BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiShowDialogInSettingsWhenUpstreamingFails);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiShowPersonalContextFillingYourInfoDialog);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiShowServerWalletFillingYourInfoDialog);
#endif  // BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiShowWalletDisabledBanner);
#if BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiUseMaterialDatePickerInEntityEditor);
#endif  // BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiUsePrivateAi);
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(
    kAutofillAiVoteForFormatStringsForFlightNumbers);
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(
    kAutofillAiWalletFlightReservation);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiWalletPassBranding2026);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(int, kAutofillAiWalletPassBranding2026StringVariant);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_WITH_COUNTRY_RESTRICTIONS(kAutofillAiWalletPrivatePasses);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiWalletPrivatePassesCapability);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiWalletPrivatePassesDeepLink);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAiWalletShopping);
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(
    kAutofillAiWalletVehicleRegistration);
COMPONENT_EXPORT(AUTOFILL)
DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION(kAutofillAiWithDataSchema);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAllowFillingModifiedInitialValues);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAmbientAutofill);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillAmbientAutofillEligibleTiers);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string,
                           kAutofillAmbientAutofillSupportedEntityTypes);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillAmbientAutofillEnabledDevices);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    base::TimeDelta,
    kAutofillAmbientAutofillPrefetchedEntitiesAndSignalsCacheTTL);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta,
                           kAutofillAmbientAutofillUnmaskedSpiiCacheTTL);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAmbientAutofillSourceAttribution);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAmbientAutofillSpiiCache);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAmbientAutofillSuppression);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAmbientAutofillSuppressionUI);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAndPasswordsRemoveSignInPromo);

COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAndroidDesktopKeyboardAccessoryRevamp);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAndroidDesktopSuppressAccessoryOnEmpty);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAndroidDisableSuggestionsOnJSFocus);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAndroidKeyboardAccessoryDynamicPositioning);
#if BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAndroidKeyboardAccessoryHoverPreview);
#endif  // BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAndroidUseGlobalIdForFormComparison);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAtMemory);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillAtMemoryEligibleTiers);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillAtMemoryEnabledDevices);

COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta, kAutofillAtMemoryRequestTimeout);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAtMemoryInactivityNudge);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAtMemoryPreviouslyFilled);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAtMemorySearchStatefulness);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAtMemorySupportContenteditableOnAndroid);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillAtMemoryTriggerShortcut);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillBetterLocalHeuristicPlaceholderSupport);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillCheckTriggeringFieldDoesNotChangeDuringFilling);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillComplementCountryUsingPhoneNumber);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillCreditCardUserPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillDelayApcForPredictions);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillDisableAddressImport);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillDisableFilling);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillDisallowMoreHyphenLikeLabels);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillEnableAblationStudy);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool,
                           kAutofillAblationStudyEnabledForAddressesParam);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool, kAutofillAblationStudyEnabledForPaymentsParam);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(int,
                           kAutofillAblationStudyAblationWeightPerMilleParam);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    int,
    kAutofillAblationStudyAblationWeightPerMilleList1Param);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    int,
    kAutofillAblationStudyAblationWeightPerMilleList2Param);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    int,
    kAutofillAblationStudyAblationWeightPerMilleList3Param);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    int,
    kAutofillAblationStudyAblationWeightPerMilleList4Param);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    int,
    kAutofillAblationStudyAblationWeightPerMilleList5Param);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    int,
    kAutofillAblationStudyAblationWeightPerMilleList6Param);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool, kAutofillAblationStudyIsDryRun);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableAddressFieldParserNG);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableAutofillSettingsEnterprisePolicy);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableDeduplicationOnBackgroundThread);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableEntryLimitInPopup);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableExpandIbanRegexPattern);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableExpirationDateImprovements);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableGermanTransliteration);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableImportOfUnchangedValuesForCountryAndState);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableImportWhenMultiplePhoneNumbers);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableKeyboardAccessoryOnSearchFields);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableNonAffiliatedLoyaltyCardsFilling);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableOneTimeCodeHeuristics);
#if BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid);
#endif  // BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableSkippingUnrecognizedAttribute);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableStreetAddressMergeModes);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillEnableWalletReminderNoticePublicPass);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillExtendZipCodeValidation);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillExtractOnlyNonAdFrames);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillFilterPlaceholderValuesOnImport);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillFixIframeOwnership);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillFixLabelGenerationForStreetAddress);

COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillFixRewriterRules);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillFixStateCountryMisclassification);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillGmailOtp);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillGreekRegexes);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillIgnoreUnchangedFrameResizes);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillIntroduceGlobalEmptyValueRewriterRules);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillLabelSensitiveAutocomplete);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(
    int,
    kAutofillLabelSensitiveAutocompleteMigrationGeneration);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillModelPredictions);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool, kAutofillModelPredictionsAreActive);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(bool, kAutofillModelPredictionsSmallFormRules);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillMoveSmallFormLogicToClient);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillNewSuggestionGeneration);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillOptimizeIsNormalizedNameVariantOf);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillPageLanguageDetection);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillPaymentsFieldSwapping);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillPolicyControlledFeatureAutofill);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillPolicyControlledFeatureManualText);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillPopupCheckHtmlFormPopupOverlap);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillPopupDontAcceptNonVisibleEnoughSuggestion);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillReplaceFormElementObserver);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillRestrictOtpToSameTldPlusOne);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillServerExperimentalSignatures);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillServerQueryPredictionsEarly);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillServerUploadMoreData);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillSimplifyFocusCheck);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillSmsOtpCrowdsourcingFetchFromGmscore);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillStructuredFieldsDisableAddressLines);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillSupportCombinedZipAndCityFR);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillSupportSplitZipCode);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillSupportStandaloneZipCodeGlobally);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillThrottleAskForValuesToFillByTriggerSource);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillThrottleBruteForceProbing);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(int, kAutofillThrottleBruteForceProbingMaxTokens);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta,
                           kAutofillThrottleBruteForceProbingReplenishRate);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillTrackSelectFieldEdits);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillUKMExperimentalFields);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillUKMExperimentalFieldsBucket0);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillUKMExperimentalFieldsBucket1);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillUKMExperimentalFieldsBucket2);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillUKMExperimentalFieldsBucket3);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(std::string, kAutofillUKMExperimentalFieldsBucket4);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillUseINAddressModel);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillUseNegativePatternForAllAttributes);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillUseOriginalPayloadIos);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kAutofillUseStructuralSignatureInsteadOfSecondary);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kFieldClassificationModelCaching);
COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kGlicActorAutofill);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta, kGlicActorAutofillFillingTimeout);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta, kGlicActorAutofillMaximumTimeout);

COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kManageContactInfoPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kManageIdentityDocsPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kManagePasswordsPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kManagePaymentsPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kManageTravelPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kManageYourSavedInfoPerceptionSurvey);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kResetNativePointerInCreditCardAuthDialog);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kShowAutocompleteAtMemoryButton);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kSuggestionManageButtonSplitForEnhancedAutofill);
COMPONENT_EXPORT(AUTOFILL)
BASE_DECLARE_FEATURE(kUseSettingsAddressEditorInPaymentsRequest);

#undef DECLARE_FEATURE_WITH_MOBILE_COUNTRY_RESTRICTION

}  // namespace autofill::features

#endif  // COMPONENTS_AUTOFILL_CORE_COMMON_AUTOFILL_FEATURES_H_
