910e62b5创建于 1月15日历史提交
<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file is used to generate a comprehensive list of Autofill histograms
along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<histograms>

<variants name="Autofill.Ablation.FormType">
  <variant name="Address" summary="The form is an address form."/>
  <variant name="CreditCard" summary="The form is a credit card form."/>
</variants>

<variants name="Autofill.Ablation.Group">
  <variant name="ConditionalAblation"
      summary="The sample is recorded only when there was data available to
               be filled and it was assigned to the ablation case."/>
  <variant name="ConditionalControl"
      summary="The sample is recorded only when there was data available to
               be filled and it was assigned to the control case."/>
  <variant name="UnconditionalAblation"
      summary="The sample is recorded regardless whether data was available
               to be filled and assigned to the ablation case."/>
  <variant name="UnconditionalControl"
      summary="The sample is recorded regardless whether data was available
               to be filled and assigned to the control case."/>
</variants>

<variants name="Autofill.Actor.FillingComposition">
  <variant name="Any"
      summary="Emitted regardless of the accepted suggestion type."/>
  <variant name="WithoutPaymentInformation"
      summary="Emmitted only if none of the accepted suggestions contains
               payment information."/>
  <variant name="WithPaymentInformation"
      summary="Emitted only if at least one of the accepted suggestions
               contains payment information."/>
</variants>

<!-- LINT.IfChange(Autofill.Ai.EntityRecordType) -->

<variants name="Autofill.Ai.EntityRecordType">
  <variant name=".Local" summary="Emitted for local entities only."/>
  <variant name=".ServerWallet"
      summary="Emitted for Wallet server entities only."/>
</variants>

<!-- LINT.ThenChange(//components/autofill/core/browser/integrators/autofill_ai/metrics/autofill_ai_metrics.cc:EntityRecordTypeToMetricsString) -->

<!-- LINT.IfChange(Autofill.Ai.EntityType) -->

<variants name="Autofill.Ai.EntityType">
  <variant name=".DriversLicense"
      summary="Emitted for driver's license forms or entities only."/>
  <variant name=".FlightReservation"
      summary="Emitted for flight reservation forms or entities only."/>
  <variant name=".KnownTravelerNumber"
      summary="Emitted for Known Traveler Number forms or entities only."/>
  <variant name=".NationalIdCard"
      summary="Emitted for national id card forms or entities only."/>
  <variant name=".Passport"
      summary="Emitted for passport forms or entities only."/>
  <variant name=".RedressNumber"
      summary="Emitted for redress number forms or entities only."/>
  <variant name=".Vehicle"
      summary="Emitted for vehicle information forms or entities only."/>
</variants>

<!-- LINT.ThenChange(//components/autofill/core/browser/integrators/autofill_ai/metrics/autofill_ai_metrics.cc:EntityTypeToMetricsString) -->

<!-- LINT.IfChange(Autofill.Ai.PromptTypes) -->

<variants name="Autofill.Ai.PromptTypes">
  <variant name="MigratePrompt"
      summary="The prompt is asking users to migrate an existing local
               entity."/>
  <variant name="SavePrompt"
      summary="The prompt is asking users to save a new entity."/>
  <variant name="UpdatePrompt"
      summary="The prompt is asking users to update an existing entity."/>
</variants>

<!-- LINT.ThenChange(//components/autofill/core/browser/integrators/autofill_ai/metrics/autofill_ai_metrics.cc:EntityPromptTypeToMetricsString) -->

<variants name="Autofill.BetterAuthFlowType">
  <variant name="Cvc" summary="CVC authentication only"/>
  <variant name="CvcFallbackFromFido"
      summary="CVC fallback from FIDO authentication"/>
  <variant name="CvcThenFido" summary="CVC followed by FIDO authentication"/>
  <variant name="Fido" summary="FIDO authentication only"/>
  <variant name="Otp" summary="OTP auth only"/>
  <variant name="OtpFallbackFromFido"
      summary="OTP fallback from FIDO authentication"/>
  <variant name="ThreeDomainSecure"
      summary="3DS (Three Domain Secure) authentication only"/>
</variants>

<variants name="Autofill.BnplIssuer">
  <variant name="Affirm" summary="Buy-now-pay-later issued by Affirm"/>
  <variant name="Afterpay" summary="Buy-now-pay-later issued by Afterpay"/>
  <variant name="Klarna" summary="Buy-now-pay-later issued by Klarna"/>
  <variant name="Zip" summary="Buy-now-pay-later issued by Zip"/>
</variants>

<variants name="Autofill.CardMetadataVisible">
  <variant name="ArtImageShown" summary="Only art image was visible"/>
  <variant name="MetadataNotShown" summary="No metadata was visible"/>
  <variant name="ProductDescriptionAndArtImageShown"
      summary="Both product description and art image were visible"/>
  <variant name="ProductDescriptionShown"
      summary="Only product description was visible"/>
</variants>

<variants name="Autofill.CreditCardBenefitSource">
  <variant name="Amex" summary="American Express"/>
  <variant name="Bmo" summary="BMO"/>
  <variant name="Curinos" summary="Curinos"/>
</variants>

<variants name="Autofill.CreditCardIssuerId">
  <variant name="Amex" summary="card issued by American Express"/>
  <variant name="Anz" summary="card issued by ANZ"/>
  <variant name="Bmo" summary="card issued by BMO"/>
  <variant name="CapitalOne" summary="card issued by Capital One"/>
  <variant name="Chase" summary="card issued by JP Morgan Chase"/>
  <variant name="Citi" summary="card issued by Citibank"/>
  <variant name="Discover" summary="card issued by Discover"/>
  <variant name="Lloyds" summary="card issued by American Express"/>
  <variant name="Marqeta" summary="card issued by Marqeta"/>
  <variant name="Nab" summary="card issued by National Australia Bank"/>
  <variant name="Natwest" summary="card issued by Natwest"/>
</variants>

<variants name="Autofill.CreditCardNetwork">
  <variant name="Mastercard" summary="card with the Mastercard network."/>
  <variant name="Visa" summary="card with the Visa network."/>
</variants>

<variants name="Autofill.DialogError">
  <variant name="WithNoTemporaryError"
      summary="No temporary error has been shown in the dialog"/>
  <variant name="WithPreviousTemporaryError"
      summary="A temporary error has been shown in the dialog"/>
</variants>

<variants name="Autofill.FeaturePreviousStrikes">
  <variant name="" summary="previous strikes are not considered"/>
  <variant name=".WithNoPreviousStrike"
      summary="no strike has been logged under the key used for the feature"/>
  <variant name=".WithPreviousStrikes"
      summary="at least one strike has been logged under the key for the
               feature"/>
</variants>

<!-- LINT.IfChange(Autofill.FillingProduct) -->

<variants name="Autofill.FillingProduct">
  <variant name="Address"
      summary="User chose to fill a form or field with an address profile."/>
  <variant name="Autocomplete"
      summary="User chose to fill a field with autocomplete."/>
  <variant name="AutofillAi"
      summary="User chose to fill a field with Autofill AI."/>
  <variant name="Compose"
      summary="User chose to fill a field with a compose suggestion."/>
  <variant name="CreditCard"
      summary="User chose to fill a form or field with a credit card profile."/>
  <variant name="DataList"
      summary="User chose to fill a field with a datalist suggestion."/>
  <variant name="Iban" summary="User chose to fill a field with an iban."/>
  <variant name="IdentityCredential"
      summary="User chose to fill a field with an identity credential."/>
  <variant name="LoyaltyCard"
      summary="User chose to fill a field with a loyalty card."/>
  <variant name="MerchantPromoCode"
      summary="User chose to fill a field with a merchant promo code."/>
  <variant name="None" summary="No filling product matches."/>
  <variant name="OneTimePassword"
      summary="User chose to fill a field with a one time password
               suggestion."/>
  <variant name="Passkey"
      summary="User chose to not fill a form but continue with a passkey."/>
  <variant name="Password"
      summary="User chose to fill a form or field with password credentials."/>
  <variant name="PlusAddresses"
      summary="User chose to fill a field with a plus addresses suggestion."/>
</variants>

<!-- LINT.ThenChange(/components/autofill/core/browser/filling/filling_product.cc:FillingProductToString) -->

<variants name="Autofill.FormEventWithMetadata">
  <variant name="FilledWithMetadata" summary="A card with metadata was filled"/>
  <variant name="FilledWithMetadataOnce"
      summary="A card with metadata was filled, logged once per page load"/>
  <variant name="SelectedWithMetadata"
      summary="A card with metadata was selected"/>
  <variant name="SelectedWithMetadataOnce"
      summary="A card with metadata was selected, logged once per page load"/>
  <variant name="ShownWithMetadata" summary="A card with metadata was shown"/>
  <variant name="ShownWithMetadataOnce"
      summary="A card with metadata was shown, logged once per page load"/>
  <variant name="SubmittedWithMetadataOnce"
      summary="A form was submitted after a card with metadata was filled.
               This event can only be triggered once per page load"/>
  <variant name="WillSubmitWithMetadataOnce"
      summary="A form was about to be submitted after a card with metadata
               was filled. This event can only be triggered once per page
               load"/>
</variants>

<variants name="Autofill.MandatoryReauth.AuthenticationMethod">
  <variant name="Biometric" summary="biometric auth"/>
  <variant name="ScreenLock" summary="screen lock"/>
  <variant name="UnknownMethod" summary="an unknown auth type"/>
  <variant name="UnsupportedMethod" summary="an unsupported auth type"/>
</variants>

<variants name="Autofill.MandatoryReauth.ChangingStatus">
  <variant name="OptIn" summary="Feature is trying to be opted in"/>
  <variant name="OptOut" summary="Feature is trying to be opted out"/>
</variants>

<variants name="Autofill.MandatoryReauth.Source">
  <variant name="CheckoutFullServerCard"
      summary="Feature is trying to be updated from full server card checkout"/>
  <variant name="CheckoutLocalCard"
      summary="Feature is trying to be updated from local card checkout"/>
  <variant name="CheckoutLocalIban"
      summary="Feature is trying to be updated from local IBAN checkout"/>
  <variant name="CheckoutMaskedServerCard"
      summary="Feature is trying to be updated from masked server card
               checkout"/>
  <variant name="CheckoutServerIban"
      summary="Feature is trying to be updated from server IBAN checkout"/>
  <variant name="CheckoutVirtualCard"
      summary="Feature is trying to be updated from virtual card checkout"/>
  <variant name="SettingsPage"
      summary="Feature is trying to be updated from the Settings page"/>
  <variant name="Unknown"
      summary="Feature is trying to be updated from an unknown source"/>
</variants>

<variants name="Autofill.NonInteractivePaymentMethodType">
  <variant name="LocalCard" summary="local card"/>
  <variant name="LocalIban" summary="local IBAN"/>
  <variant name="ServerCard" summary="server card"/>
  <variant name="ServerIban" summary="server IBAN"/>
  <variant name="UnknownCard" summary="unknown card type"/>
  <variant name="VirtualCard" summary="virtual card"/>
</variants>

<variants name="Autofill.OtpAuth.Type">
  <variant name="EmailOtp" summary="The OTP authentication with an email."/>
  <variant name="SmsOtp" summary="The OTP authentication with a SMS OTP."/>
</variants>

<variants name="Autofill.PaymentsRequestType">
  <variant name="UnmaskCardRequest" summary="credit card unmask"/>
  <variant name="UpdateVirtualCardEnrollment_Enroll" summary="VCN enrollment"/>
  <variant name="UploadCardRequest" summary="credit card upload"/>
</variants>

<!-- TODO(crbug.com/40926801): Rename PaymentsRpcCardType since we add LocalCard here. -->

<variants name="Autofill.PaymentsRpcCardType">
  <variant name="LocalCard" summary="local card"/>
  <variant name="ServerCard" summary="server card"/>
  <variant name="UnknownCard" summary="unknown card type"/>
  <variant name="VirtualCard" summary="virtual card"/>
</variants>

<variants name="Autofill.PaymentsRpcResult">
  <variant name="ClientSideTimeout"
      summary="Request took longer time to finish than the set client-side
               timeout. The request may still have completed on the server
               side."/>
  <variant name="Failure"
      summary="Request failed during the authentication process. This is not
               related to virtual cards."/>
  <variant name="NetworkError"
      summary="Unable to connect to Payments servers. Prompt user to check
               internet connection."/>
  <variant name="Success" summary="Request succeeded."/>
  <variant name="VcnRetrievalFailure"
      summary="Request failed in retrieving the virtual card information."/>
</variants>

<variants name="Autofill.PaymentsSigninState">
  <variant name="SignedIn" summary="The user is signed in to Chromium"/>
  <variant name="SignedInAndSyncFeatureEnabled"
      summary="The user is signed in, has enabled the sync feature and has
               not disabled Wallet sync"/>
  <variant name="SignedInAndWalletSyncTransportEnabled"
      summary="The user is signed in to Chromium and sync transport is active
               for Wallet data"/>
  <variant name="SignedOut" summary="The user is not signed in to Chromium"/>
  <variant name="SyncPaused"
      summary="The user has enabled the sync feature, but has then signed
               out, so sync is paused"/>
  <variant name="Unknown" summary="Unknown state"/>
</variants>

<variants name="Autofill.ProgressDialog.FlowType">
  <variant name="3dsFetchVirtualCard"
      summary="Progress dialog after the VCN 3DS pop-up has closed"/>
  <variant name="CardInfoRetrievalEnrolledUnmask"
      summary="Progress dialog for for cards enrolled in CardInfoRetrieval
               unmask flow"/>
  <variant name="ServerCardUnmask"
      summary="Progress dialog for the credit card risk-based unmask flow"/>
  <variant name="ServerIbanUnmask"
      summary="Progress dialog for the server IBAN unmask flow"/>
  <variant name="VirtualCardUnmask"
      summary="Progress dialog for the VCN Card Unmask Flow"/>
</variants>

<variants name="Autofill.RequestResult">
  <variant name=""
      summary="there is no result specified and it is logged as an aggregated
               histogram"/>
  <variant name=".Failure" summary="the request failed"/>
  <variant name=".Success"
      summary="the request succeeded and returned valid response"/>
</variants>

<variants name="Autofill.ServerCardUnmaskFlowType">
  <variant name="DeviceUnlock" summary="Device unlock authentication"/>
  <variant name="Fido" summary="FIDO authentication only"/>
  <variant name="Otp" summary="OTP auth only"/>
  <variant name="OtpFallbackFromFido"
      summary="OTP fallback from FIDO authentication"/>
  <variant name="RiskBased" summary="Risk-based authentication"/>
  <variant name="ThreeDomainSecure"
      summary="3DS (Three Domain Secure) authentication"/>
  <variant name="UnspecifiedFlowType" summary="No authentication specified"/>
</variants>

<variants name="Autofill.SettingsPage.VirtualCardDialogType">
  <variant name="SettingsPageEnrollment"
      summary="the virtual card enrollment dialog"/>
  <variant name="SettingsPageUnenrollment"
      summary="the virtual card unenrollment dialog"/>
</variants>

<variants name="Autofill.Snackbar.Type">
  <variant name="BnplVirtualCard"
      summary="Snackbar shown after BNPL virtual card is autofilled."/>
  <variant name="MandatoryReauth"
      summary="Snackbar shown after opting into mandatory reauth."/>
  <variant name="PlusAddressEmailOverride"
      summary="Snackbar shown after plus address was filled instead of the
               user's email."/>
  <variant name="SaveCardSuccess"
      summary="Snackbar shown after card has been successfully saved."/>
  <variant name="SaveServerIbanSuccess"
      summary="Snackbar shown after a server IBAN has been successfully
               saved."/>
  <variant name="VirtualCard"
      summary="Snackbar shown after virtual card is autofilled."/>
  <variant name="VirtualCardEnrollSuccess"
      summary="Snackbar shown after virtual card has been successfully
               enrolled."/>
</variants>

<variants name="Autofill.TimingPrecise.Callee">
  <variant name="ExtractFormData"/>
  <variant name="UpdateFormCache"/>
</variants>

<variants name="Autofill.TimingPrecise.Caller">
  <variant name="ApplyFieldsAction"/>
  <variant name="BatchSelectOptionChange"/>
  <variant name="DidChangeScrollOffsetImpl"/>
  <variant name="DidDispatchDomContentLoadedEvent"/>
  <variant name="EmitFormIssuesToDevtools"/>
  <variant name="ExtractForm"/>
  <variant name="ExtractForms"/>
  <variant name="ExtractFormsAndNotifyPasswordAutofillAgent"/>
  <variant name="FocusedElementChanged"/>
  <variant name="GetFormDataFromUnownedInputElements"/>
  <variant name="GetFormDataFromWebForm"/>
  <variant name="GetSubmittedForm"/>
  <variant name="HandleCaretMovedInFormField"/>
  <variant name="JavaScriptChangedValue"/>
  <variant name="NotifyPasswordManagerAboutClearedForm"/>
  <variant name="OnDevToolsSessionConnectionChanged"/>
  <variant name="OnProvisionallySaveForm"/>
  <variant name="OnTextFieldValueChanged"/>
  <variant name="QueryAutofillSuggestions"/>
  <variant name="ShowSuggestionPopup"/>
  <variant name="UpdateFormCache"/>
  <variant name="UpdateLastInteractedElement"/>
</variants>

<variants name="Autofill.VirtualCard.RequestSource">
  <variant name="Downstream"
      summary="The enrollment change happens after an Autofill Downstream
               retrieving the actual card information"/>
  <variant name="SettingsPage"
      summary="The enrollment change comes from the Chrome payments settings
               page"/>
  <variant name="Unknown" summary="Unknown source, should not be used"/>
  <variant name="Upstream"
      summary="The enrollment change happens after an Autofill Upstream
               saving the actual card to Google Payments"/>
</variants>

<variants name="Autofill.VirtualCardEnrollmentLinkType">
  <variant name="GoogleLegalMessageLink"
      summary="The user selected the Google Payments terms of service link."/>
  <variant name="IssuerLegalMessageLink"
      summary="The user selected the Issuer's terms of service link."/>
  <variant name="LearnMoreLink"
      summary="The user selected the learn more about virtual cards link."/>
</variants>

<variants name="Autofill.VirtualCardEnrollmentSource">
  <variant name="Downstream" summary="credit card unmasking enrollment flow"/>
  <variant name="SettingsPage" summary="settings page enrollment flow"/>
  <variant name="Unknown" summary="uncategorized enrollment source"/>
  <variant name="Upstream" summary="credit card uploading enrollment flow"/>
</variants>

<variants name="AutofillCreditCardSaveType">
  <variant name="" summary="aggregated across all situations"/>
  <variant name=".RequestingCardholderName"
      summary="explicitly requesting cardholder name"/>
  <variant name=".RequestingExpirationDate"
      summary="explicitly requesting expiration date"/>
  <variant name=".SavingWithCvc"
      summary="saved security code at the same time"/>
</variants>

<variants name="AutofillCreditCardType">
  <variant name=".Local" summary="Local"/>
  <variant name=".Server" summary="Server (Google Payments)"/>
</variants>

<variants name="AutofillFidoAuthenticationEnabledState">
  <variant name="OptedIn" summary="FIDO authentication enabled"/>
  <variant name="OptedOut" summary="FIDO authentication disabled"/>
</variants>

<variants name="AutofillFieldPredictionSource">
  <variant name=".Heuristic"
      summary="Field type predictions using local heuristics."/>
  <variant name=".ML"
      summary="Field types based on ML predictions (only recorded if ML
               predictions are enabled but not the active heuristic source)."/>
  <variant name=".Overall"
      summary="Field type prediction as seen by the user after combining the
               heuristic and crowd sourced predictions."/>
  <variant name=".Server"
      summary="Field types based on crowd-sourced prediction fetched from the
               Autofill Server"/>
</variants>

<variants name="AutofillFieldPredictionSubmissionEvent">
  <variant name=""/>
  <variant name=".BasedOnAutocomplete"
      summary="Quality metrics based on autocomplete attributes."/>
  <variant name=".NoSubmission" summary="No observed submission."/>
</variants>

<!-- Generated from components/autofill/core/browser/field_types.h.
Called by update_autofill_enums.py. This is a manual comment.-->

<variants name="AutofillFieldType">
  <variant name="ACCOUNT_CREATION_PASSWORD"/>
  <variant name="ADDRESS_HOME_ADDRESS"/>
  <variant name="ADDRESS_HOME_ADDRESS_WITH_NAME"/>
  <variant name="ADDRESS_HOME_ADMIN_LEVEL2"/>
  <variant name="ADDRESS_HOME_APT"/>
  <variant name="ADDRESS_HOME_APT_NUM"/>
  <variant name="ADDRESS_HOME_APT_TYPE"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS_1"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS_2"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS_OR_LANDMARK"/>
  <variant name="ADDRESS_HOME_CITY"/>
  <variant name="ADDRESS_HOME_COUNTRY"/>
  <variant name="ADDRESS_HOME_DEPENDENT_LOCALITY"/>
  <variant name="ADDRESS_HOME_DEPENDENT_LOCALITY_AND_LANDMARK"/>
  <variant name="ADDRESS_HOME_FLOOR"/>
  <variant name="ADDRESS_HOME_HOUSE_NUMBER"/>
  <variant name="ADDRESS_HOME_HOUSE_NUMBER_AND_APT"/>
  <variant name="ADDRESS_HOME_LANDMARK"/>
  <variant name="ADDRESS_HOME_LINE1"/>
  <variant name="ADDRESS_HOME_LINE2"/>
  <variant name="ADDRESS_HOME_LINE3"/>
  <variant name="ADDRESS_HOME_OTHER_SUBUNIT"/>
  <variant name="ADDRESS_HOME_OVERFLOW"/>
  <variant name="ADDRESS_HOME_OVERFLOW_AND_LANDMARK"/>
  <variant name="ADDRESS_HOME_SORTING_CODE"/>
  <variant name="ADDRESS_HOME_STATE"/>
  <variant name="ADDRESS_HOME_STREET_ADDRESS"/>
  <variant name="ADDRESS_HOME_STREET_LOCATION"/>
  <variant name="ADDRESS_HOME_STREET_LOCATION_AND_LANDMARK"/>
  <variant name="ADDRESS_HOME_STREET_LOCATION_AND_LOCALITY"/>
  <variant name="ADDRESS_HOME_STREET_NAME"/>
  <variant name="ADDRESS_HOME_SUBPREMISE"/>
  <variant name="ADDRESS_HOME_ZIP"/>
  <variant name="ADDRESS_HOME_ZIP_PREFIX"/>
  <variant name="ADDRESS_HOME_ZIP_SUFFIX"/>
  <variant name="ALTERNATIVE_FAMILY_NAME"/>
  <variant name="ALTERNATIVE_FULL_NAME"/>
  <variant name="ALTERNATIVE_GIVEN_NAME"/>
  <variant name="AMBIGUOUS_TYPE"/>
  <variant name="COMPANY_NAME"/>
  <variant name="CONFIRMATION_PASSWORD"/>
  <variant name="CREDIT_CARD_EXP_2_DIGIT_YEAR"/>
  <variant name="CREDIT_CARD_EXP_4_DIGIT_YEAR"/>
  <variant name="CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR"/>
  <variant name="CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR"/>
  <variant name="CREDIT_CARD_EXP_MONTH"/>
  <variant name="CREDIT_CARD_NAME_FIRST"/>
  <variant name="CREDIT_CARD_NAME_FULL"/>
  <variant name="CREDIT_CARD_NAME_LAST"/>
  <variant name="CREDIT_CARD_NUMBER"/>
  <variant name="CREDIT_CARD_STANDALONE_VERIFICATION_CODE"/>
  <variant name="CREDIT_CARD_TYPE"/>
  <variant name="CREDIT_CARD_VERIFICATION_CODE"/>
  <variant name="DELIVERY_INSTRUCTIONS"/>
  <variant name="DRIVERS_LICENSE_EXPIRATION_DATE"/>
  <variant name="DRIVERS_LICENSE_ISSUE_DATE"/>
  <variant name="DRIVERS_LICENSE_NUMBER"/>
  <variant name="DRIVERS_LICENSE_REGION"/>
  <variant name="EMAIL_ADDRESS"/>
  <variant name="EMAIL_OR_LOYALTY_MEMBERSHIP_ID"/>
  <variant name="EMPTY_TYPE"/>
  <variant name="FLIGHT_RESERVATION_ARRIVAL_AIRPORT"/>
  <variant name="FLIGHT_RESERVATION_CONFIRMATION_CODE"/>
  <variant name="FLIGHT_RESERVATION_DEPARTURE_AIRPORT"/>
  <variant name="FLIGHT_RESERVATION_DEPARTURE_DATE"/>
  <variant name="FLIGHT_RESERVATION_FLIGHT_NUMBER"/>
  <variant name="FLIGHT_RESERVATION_TICKET_NUMBER"/>
  <variant name="IBAN_VALUE"/>
  <variant name="KNOWN_TRAVELER_NUMBER"/>
  <variant name="KNOWN_TRAVELER_NUMBER_EXPIRATION_DATE"/>
  <variant name="LOYALTY_MEMBERSHIP_ID"/>
  <variant name="LOYALTY_MEMBERSHIP_PROGRAM"/>
  <variant name="LOYALTY_MEMBERSHIP_PROVIDER"/>
  <variant name="MERCHANT_EMAIL_SIGNUP"/>
  <variant name="MERCHANT_PROMO_CODE"/>
  <variant name="NAME_FIRST"/>
  <variant name="NAME_FULL"/>
  <variant name="NAME_HONORIFIC_PREFIX"/>
  <variant name="NAME_LAST"/>
  <variant name="NAME_LAST_CONJUNCTION"/>
  <variant name="NAME_LAST_CORE"/>
  <variant name="NAME_LAST_FIRST"/>
  <variant name="NAME_LAST_PREFIX"/>
  <variant name="NAME_LAST_SECOND"/>
  <variant name="NAME_MIDDLE"/>
  <variant name="NAME_MIDDLE_INITIAL"/>
  <variant name="NAME_SUFFIX"/>
  <variant name="NATIONAL_ID_CARD_EXPIRATION_DATE"/>
  <variant name="NATIONAL_ID_CARD_ISSUE_DATE"/>
  <variant name="NATIONAL_ID_CARD_ISSUING_COUNTRY"/>
  <variant name="NATIONAL_ID_CARD_NUMBER"/>
  <variant name="NEW_PASSWORD"/>
  <variant name="NO_SERVER_DATA"/>
  <variant name="NOT_ACCOUNT_CREATION_PASSWORD"/>
  <variant name="NOT_NEW_PASSWORD"/>
  <variant name="NOT_PASSWORD"/>
  <variant name="NOT_USERNAME"/>
  <variant name="NUMERIC_QUANTITY"/>
  <variant name="ONE_TIME_CODE"/>
  <variant name="PASSPORT_EXPIRATION_DATE"/>
  <variant name="PASSPORT_ISSUE_DATE"/>
  <variant name="PASSPORT_ISSUING_COUNTRY"/>
  <variant name="PASSPORT_NUMBER"/>
  <variant name="PASSWORD"/>
  <variant name="PHONE_HOME_CITY_AND_NUMBER"/>
  <variant name="PHONE_HOME_CITY_AND_NUMBER_WITHOUT_TRUNK_PREFIX"/>
  <variant name="PHONE_HOME_CITY_CODE"/>
  <variant name="PHONE_HOME_CITY_CODE_WITH_TRUNK_PREFIX"/>
  <variant name="PHONE_HOME_COUNTRY_CODE"/>
  <variant name="PHONE_HOME_EXTENSION"/>
  <variant name="PHONE_HOME_NUMBER"/>
  <variant name="PHONE_HOME_NUMBER_PREFIX"/>
  <variant name="PHONE_HOME_NUMBER_SUFFIX"/>
  <variant name="PHONE_HOME_WHOLE_NUMBER"/>
  <variant name="PRICE"/>
  <variant name="PROBABLY_NEW_PASSWORD"/>
  <variant name="REDRESS_NUMBER"/>
  <variant name="SEARCH_TERM"/>
  <variant name="SINGLE_USERNAME"/>
  <variant name="SINGLE_USERNAME_FORGOT_PASSWORD"/>
  <variant name="SINGLE_USERNAME_WITH_INTERMEDIATE_VALUES"/>
  <variant name="UNKNOWN_TYPE"/>
  <variant name="USERNAME"/>
  <variant name="USERNAME_AND_EMAIL_ADDRESS"/>
  <variant name="VEHICLE_LICENSE_PLATE"/>
  <variant name="VEHICLE_MAKE"/>
  <variant name="VEHICLE_MODEL"/>
  <variant name="VEHICLE_PLATE_STATE"/>
  <variant name="VEHICLE_VIN"/>
  <variant name="VEHICLE_YEAR"/>
</variants>

<variants name="AutofillFormType">
  <variant name=".Address" summary="Address form"/>
  <variant name=".CreditCard" summary="Credit card form"/>
  <variant name=".Password" summary="Password form"/>
  <variant name=".StandaloneCvc"
      summary="Standalone CVC form for a card saved on file"/>
  <variant name=".Unknown" summary="Unknown form type"/>
</variants>

<!-- Subset of variants "AutofillFormType.Fillable". Keep in sync. -->

<variants name="AutofillFormType.Address">
  <variant name="Address" summary="Address form"/>
  <variant name="EmailOnly" summary="Email-only form"/>
  <variant name="PostalAddress" summary="Postal address form"/>
</variants>

<variants name="AutofillFormType.CreditCard">
  <variant name="CreditCard" summary="Credit card form"/>
  <variant name="StandaloneCvc"
      summary="Standalone CVC form for a card saved on file"/>
</variants>

<!-- Superset of variants "AutofillFormType.Address/CreditCard". Keep in sync. -->

<variants name="AutofillFormType.Fillable">
  <variant name="Address" summary="Address form"/>
  <variant name="CreditCard" summary="Credit card form"/>
  <variant name="EmailOnly" summary="Email-only form"/>
  <variant name="LoyaltyCard" summary="Loyalty card form"/>
  <variant name="OneTimePassword"
      summary="A form containing a one time password"/>
  <variant name="PostalAddress" summary="Postal address form"/>
  <variant name="StandaloneCvc"
      summary="Standalone CVC form for a card saved on file"/>
</variants>

<variants name="AutofillImage">
  <variant name="CreditCardArt" summary="credit card art image"/>
  <variant name="PixAccountImage" summary="Pix account image"/>
  <variant name="ValuableImage" summary="Google Wallet valuable image"/>
</variants>

<variants name="AutofillPopupInteractionLevel">
  <variant name="0"
      summary="a root popup suggestion(s) was either shown or interacted with
               by the user (selected or accepted)"/>
  <variant name="1"
      summary="a second level popup suggestion(s) was either shown or
               interacted with by the user (selected or accepted)"/>
  <variant name="2"
      summary="a third level popup suggestion(s) was either shown or
               interacted with by the user (selected or accepted)"/>
</variants>

<variants name="AutofillProfile.StorableTypes">
  <variant name="ADDRESS_HOME_ADMIN_LEVEL2"/>
  <variant name="ADDRESS_HOME_APT"/>
  <variant name="ADDRESS_HOME_APT_NUM"/>
  <variant name="ADDRESS_HOME_APT_TYPE"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS_1"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS_2"/>
  <variant name="ADDRESS_HOME_BETWEEN_STREETS_OR_LANDMARK"/>
  <variant name="ADDRESS_HOME_CITY"/>
  <variant name="ADDRESS_HOME_COUNTRY"/>
  <variant name="ADDRESS_HOME_DEPENDENT_LOCALITY"/>
  <variant name="ADDRESS_HOME_FLOOR"/>
  <variant name="ADDRESS_HOME_HOUSE_NUMBER"/>
  <variant name="ADDRESS_HOME_LANDMARK"/>
  <variant name="ADDRESS_HOME_OTHER_SUBUNIT"/>
  <variant name="ADDRESS_HOME_OVERFLOW"/>
  <variant name="ADDRESS_HOME_OVERFLOW_AND_LANDMARK"/>
  <variant name="ADDRESS_HOME_SORTING_CODE"/>
  <variant name="ADDRESS_HOME_STATE"/>
  <variant name="ADDRESS_HOME_STREET_ADDRESS"/>
  <variant name="ADDRESS_HOME_STREET_LOCATION"/>
  <variant name="ADDRESS_HOME_STREET_NAME"/>
  <variant name="ADDRESS_HOME_SUBPREMISE"/>
  <variant name="ADDRESS_HOME_ZIP"/>
  <variant name="ADDRESS_HOME_ZIP_PREFIX"/>
  <variant name="ADDRESS_HOME_ZIP_SUFFIX"/>
  <variant name="ALTERNATIVE_FAMILY_NAME"/>
  <variant name="ALTERNATIVE_FULL_NAME"/>
  <variant name="ALTERNATIVE_GIVEN_NAME"/>
  <variant name="COMPANY_NAME"/>
  <variant name="EMAIL_ADDRESS"/>
  <variant name="NAME_FIRST"/>
  <variant name="NAME_FULL"/>
  <variant name="NAME_LAST"/>
  <variant name="NAME_LAST_CONJUNCTION"/>
  <variant name="NAME_LAST_CORE"/>
  <variant name="NAME_LAST_FIRST"/>
  <variant name="NAME_LAST_PREFIX"/>
  <variant name="NAME_LAST_SECOND"/>
  <variant name="NAME_MIDDLE"/>
  <variant name="NAME_SUFFIX"/>
  <variant name="PHONE_HOME_WHOLE_NUMBER"/>
</variants>

<!-- LINT.IfChange(ProfileRecordTypeSuffix) -->

<variants name="AutofillProfileRecordTypes">
  <variant name="Account" summary="Synced cross-device account profile"/>
  <variant name="AccountHome" summary="Read-only home address from account"/>
  <variant name="AccountNameEmail"
      summary="Read-only profile using account name and email"/>
  <variant name="AccountWork" summary="Read-only work address from account"/>
  <variant name="LocalOrSyncable" summary="Local or legacy-synced profile"/>
</variants>

<!-- LINT.ThenChange(/components/autofill/core/browser/metrics/autofill_metrics_utils.cc:ProfileRecordTypeSuffix) -->

<variants name="AutofillSaveCardDestination">
  <variant name="Local" summary="local"/>
  <variant name="Server" summary="server"/>
</variants>

<variants name="AutofillSaveCardPromptOverlayTypeForIos">
  <variant name="Banner" summary="Infobar Banner"/>
  <variant name="BottomSheet" summary="BottomSheet"/>
  <variant name="Modal" summary="Infobar Modal"/>
</variants>

<variants name="AutofillSaveCardSituation">
  <variant name="RequestingCardHolderName"
      summary="explicitly requesting cardholder name"/>
  <variant name="RequestingExpirationDate"
      summary="explicitly requesting expiration date"/>
  <variant name="SavingWithCvc"
      summary="saving security code at the same time"/>
</variants>

<variants name="AutofillSaveCardWithCvcSituation">
  <variant name="" summary="not saved with CVC"/>
  <variant name=".SavingWithCvc" summary="saved with CVC"/>
</variants>

<!-- TODO(crbug.com/430588721): Replace use of AutofillSaveCreditCardPromptDestination with AutofillSaveCardDestination. -->

<variants name="AutofillSaveCreditCardPromptDestination">
  <variant name="Local" summary="locally"/>
  <variant name="Upload" summary="to server"/>
</variants>

<variants name="AutofillSeamlessnessFillability">
  <variant name="Fillable"
      summary="Recorded under the assumption of a complete profile (i.e., the
               profile holds data for all present fields)."/>
  <variant name="Fills"
      summary="Recorded taking only the actually filled fields into account."/>
</variants>

<variants name="AutofillSeamlessnessMeasurementTime">
  <variant name=".AtFillTimeAfterSecurityPolicy"
      summary="Recorded after applying restrictions due to the cross-frame
               security policy."/>
  <variant name=".AtFillTimeBeforeSecurityPolicy"
      summary="Recorded before applying restrictions due to the cross-frame
               security policy."/>
  <variant name=".AtSubmissionTime"
      summary="Recorded at submission time. May be missed due to submission
               detection problems."/>
</variants>

<variants name="AutofillSeamlessnessVisibility">
  <variant name=""
      summary="Recorded for all detected fields, including those that may be
               invisible to the user."/>
  <variant name=".Visible"
      summary="Recorded only for fields that are visible to the user as per
               Autofill's visibility detection (IsWebElementVisible())."/>
</variants>

<variants name="AutofillServerSaveCardSituation">
  <variant name="WithMultipleLegalLines"
      summary="has a legal message with multiple lines"/>
  <variant name="WithSameLastFourButDifferentExpiration"
      summary="has the same last four digits as an existing server card but
               different expiratation date"/>
</variants>

<variants name="AutofillStrikeDatabaseProjectType">
  <variant name="CreditCardSave" summary="Credit card save"/>
  <variant name="CvcStorage" summary="CVC save"/>
  <variant name="FidoAuthentication"
      summary="Fido authentication (Better Auth Project)"/>
  <variant name="IBANSave" summary="IBAN save"/>
  <variant name="SaveAndFill" summary="save and fill"/>
  <variant name="VirtualCardEnrollment" summary="virtual card enrollment"/>
</variants>

<variants name="ClassificationMatchesFillingProduct">
  <variant name=".TriggeringFieldDoesNotMatchFillingProduct"
      summary="The filling product chosen by the user does not match the
               triggering field type."/>
  <variant name=".TriggeringFieldMatchesFillingProduct"
      summary="The filling product chosen by the user matches the triggering
               field type."/>
</variants>

<variants name="CreditCardDataAvailability">
  <variant name=".WithBothServerAndLocalData"
      summary="both server and local autofill data"/>
  <variant name=".WithNoData" summary="no autofill data"/>
  <variant name=".WithOnlyLocalData" summary="only local autofill data"/>
  <variant name=".WithOnlyServerData" summary="only server autofill data"/>
</variants>

<variants name="FirstShowOrReshow">
  <variant name="FirstShow" summary="first-show"/>
  <variant name="Reshows" summary="re-show"/>
</variants>

<variants name="IbanRecordType">
  <variant name="Local" summary="Local IBAN"/>
  <variant name="Server" summary="Server IBAN"/>
</variants>

<variants name="IbanTypeToBeSaved">
  <variant name="Local" summary="Local IBAN save"/>
  <variant name="Upload" summary="Server IBAN save"/>
</variants>

<variants name="StoredProfileCategories">
  <variant name="AccountChrome"
      summary="kAccount profiles originating from Chrome"/>
  <variant name="AccountHome" summary="kAccountHome profile"/>
  <variant name="AccountNameEmail" summary="kAccountNameEmail profile"/>
  <variant name="AccountNonChrome"
      summary="kAccount profiles originating from outside Chrome"/>
  <variant name="AccountWork" summary="kAccountWork profile"/>
  <variant name="Legacy" summary="kLegacyOrSyncable profiles"/>
</variants>

<variants name="Vcn3ds.ConsentAlreadyGiven">
  <variant name="ConsentAlreadyGiven"
      summary="The consent for a pop-up was already given prior to the flow
               starting"/>
  <variant name="ConsentNotGivenYet"
      summary="The consent for a pop-up was not given prior to the flow
               starting and needs to be requested"/>
</variants>

<histogram name="Autocomplete.DaysSinceLastUse" units="days"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when users select Autocomplete entries in the dropdown, this
    histogram captures the number of days that have passed since the selected
    autocomplete entry was last submitted on a website. I.e., the distribution
    of time between uses of an &quot;active&quot; autocomplete entry.
  </summary>
</histogram>

<histogram name="Autocomplete.Events2" enum="AutocompleteEvents"
    expires_after="M144">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    THIS METRIC IS DEPRECRATED BECAUSE THE SHOWN BUCKET IS INFLATED, USE
    Autocomplete.Events3 INSTEAD. Autocomplete events which are recorded when
    the user interacts with suggestions served from Autocomplete. The histogram
    is recorded when an autocomplete suggestion is shown, selected or deleted.
  </summary>
</histogram>

<histogram name="Autocomplete.Events3" enum="AutocompleteEvents"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Autocomplete events which are recorded when the user interacts with
    suggestions served from Autocomplete. The histogram is recorded when an
    autocomplete suggestion is shown, selected or deleted.
  </summary>
</histogram>

<histogram
    name="Autofill.Ablation.FillDurationSinceInteraction.{FormType}.{Group}"
    units="ms" expires_after="2026-12-14">
  <expired_intentionally>
    This is for an ablation study that we may want to reactivate at some points
    in the future.
  </expired_intentionally>
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records for time from the first change to an input element (typed or
    autofilled) on any form of a frame to a form submission. Note that the
    change could even happen to a different form on the page than the one
    submitted.
  </summary>
  <token key="FormType" variants="Autofill.Ablation.FormType"/>
  <token key="Group" variants="Autofill.Ablation.Group"/>
</histogram>

<histogram
    name="Autofill.Ablation.FormSubmissionAfterInteraction.{FormType}.{Group}"
    enum="Boolean" expires_after="2026-12-14">
  <expired_intentionally>
    This is for an ablation study that we may want to reactivate at some points
    in the future.
  </expired_intentionally>
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether after changing the value of an input element (typed or
    autofilled) in a frame, any form on that page is submitted.
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
  <token key="Group" variants="Autofill.Ablation.Group"/>
</histogram>

<histogram name="Autofill.AcceptedSuggestionDesktopRowViewVisibleEnough"
    enum="Boolean" expires_after="2026-02-07">
  <owner>sygiet@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    This metric is emitted by the desktop autofill popup row view just before
    accepting the suggestion. This indicates that at least 50% of the popup were
    visible for at least 500ms and serves as a safeguard against quick (and
    potentially deceptive, which can lead to revealing user's data) accepts.
    This metric serves as a sanity check for the guarding logic (the number of
    `false`s is expected to be extremly low) and will be removed with the
    `kAutofillPopupDontAcceptNonVisibleEnoughSuggestion` feature.
  </summary>
</histogram>

<histogram name="Autofill.Actor.FillSuggestions.{FillingComposition}.Latency"
    units="ms" expires_after="2026-11-30">
  <owner>battre@chromium.org</owner>
  <owner>jkeitel@google.com</owner>
  <owner>slobodan@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Measures the time between the call to FillSuggestions and the execution of
    the callback. Emitted whenever the callback is executed (which is guaranteed
    to always happen once for every call).

    {FillingComposition}
  </summary>
  <token key="FillingComposition" variants="Autofill.Actor.FillingComposition"/>
</histogram>

<histogram name="Autofill.Actor.FillSuggestions.{FillingComposition}.Outcome"
    units="ActorFormFillingOutcome" expires_after="2026-11-30">
  <owner>battre@chromium.org</owner>
  <owner>jkeitel@google.com</owner>
  <owner>slobodan@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Measures the outcome of a call to FillSuggestions. Emitted whenever the
    callback is executed (which is guaranteed to always happen once for every
    call).

    {FillingComposition}
  </summary>
  <token key="FillingComposition" variants="Autofill.Actor.FillingComposition"/>
</histogram>

<histogram name="Autofill.Actor.GetSuggestions.Latency" units="ms"
    expires_after="2026-11-30">
  <owner>battre@chromium.org</owner>
  <owner>jkeitel@google.com</owner>
  <owner>slobodan@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Measures the time between the call to
    ActorFormFillingService::GetSuggestions and the execution of the callback.
    Emitted whenever the callback is executed (which is guaranteed to always
    happen once for every call).
  </summary>
</histogram>

<histogram name="Autofill.Actor.GetSuggestions.Outcome"
    units="ActorFormFillingOutcome" expires_after="2026-11-30">
  <owner>battre@chromium.org</owner>
  <owner>jkeitel@google.com</owner>
  <owner>slobodan@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Measures the outcome of a call to ActorFormFillingService::GetSuggestions.
    Emitted whenever the callback is executed (which is guaranteed to always
    happen once for every call).
  </summary>
</histogram>

<histogram name="Autofill.AddedNewAddress"
    enum="AutofillManuallyAddedAddressSurface" expires_after="2026-04-05">
  <owner>brunobraga@google.com</owner>
  <owner>vykochko@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the surface from which the user manually added an address. Emitted
    every time the user adds an address manually.
  </summary>
</histogram>

<histogram name="Autofill.Address.DisabledReason.PageLoad"
    enum="AutofillPreferenceSetter" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    If the pref autofill.profile_enabled is disabled, this metric records the
    source. Emitted on page load for a page containing forms. The corresponding
    metric tracking the activation rate of autofill.profile_enabled is
    Autofill.Address.IsEnabled.PageLoad.
  </summary>
</histogram>

<histogram name="Autofill.Address.DisabledReason.Startup"
    enum="AutofillPreferenceSetter" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    If the pref autofill.profile_enabled is disabled, this metric records the
    source. Emitted on startup. The corresponding metric tracking the activation
    rate of autofill.profile_enabled is Autofill.Address.IsEnabled.Startup.
  </summary>
</histogram>

<histogram name="Autofill.Address.IsEnabled.Change"
    enum="AutofillAddressOptInChange" expires_after="2026-12-12">
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Recorded whenever the user explicitly changes the address autofill opt-in
    status in settings.
  </summary>
</histogram>

<histogram name="Autofill.Address.IsEnabled.PageLoad" enum="BooleanEnabled"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Tracks whether Profile (Address) Autofill is enabled on page load for a page
    containing forms.
  </summary>
</histogram>

<histogram name="Autofill.Address.IsEnabled.Startup" enum="BooleanEnabled"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Tracks whether Profile (Address) Autofill is enabled when Chrome launches.
  </summary>
</histogram>

<histogram name="Autofill.AddressesDeletedForDisuse" units="addresses"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Log the number of kLocalOrSyncable Autofill addresses that were deleted
    because they have not been used for `kDisusedDataModelDeletionTimeDelta`.
    Emitted once on browser startup, if the user has at least one address.
  </summary>
</histogram>

<histogram name="Autofill.AddressesSettingsPage.VisitReferrer"
    enum="AutofillSettingsReferrer" expires_after="2026-09-15">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the entry point (referrer) every time the user visits the
    'Addresses' settings page from a tracked entry point. This metric is emitted
    on navigation to the page, with the enum values distinguishing the entry
    points (different ways of reaching the page).
  </summary>
</histogram>

<histogram name="Autofill.AddressesSuppressedForDisuse" units="addresses"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of address suggestions not shown in the Autofill popup because
    they have not been used recently enough. Note that suppression only applies
    when the user has not typed any text into the field. If any text is in the
    field, all matching addresses are displayed, regardless of how recently they
    have been used.
  </summary>
</histogram>

<histogram name="Autofill.AddressProfileImportCountrySpecificFieldRequirements"
    enum="AutofillAddressProfileImportCountrySpecificFieldRequirement"
    expires_after="2026-12-12">
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Each country can require different fields (ZIP code, state, city) to exist
    for an address to be valid. This histogram logs which mandatory fields were
    missing in a submitted address form.
  </summary>
</histogram>

<histogram name="Autofill.AddressProfileImportRequirements"
    enum="AutofillAddressProfileImportRequirement" expires_after="2026-12-12">
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Logs whether the individual requirements for importing an address profile
    are met at form submission time.
  </summary>
</histogram>

<histogram name="Autofill.AddressProfileImportStatus"
    enum="AutofillAddressProfileImportStatus" expires_after="2026-12-12">
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Logs the overall status of a profile import attempt on form submission time.
  </summary>
</histogram>

<histogram name="Autofill.AddressSuggestionOnTyping.AddressFieldTypeUsed"
    enum="AutofillFieldType" expires_after="2026-06-19">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when the users accepts an Autofill on typing suggestion, records the
    field type used in the suggestion generation.
  </summary>
</histogram>

<histogram
    name="Autofill.AddressSuggestionOnTypingAcceptance.FieldClassication"
    enum="BooleanFieldClassificationType" expires_after="2026-06-19">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Recorded at the acceptance moment, this metric keeps track of whether the
    field where Autofill on typing suggestion was accepted was classified or
    not.
  </summary>
</histogram>

<histogram
    name="Autofill.AddressSuggestionOnTypingAcceptance.NumberOfCharactersTyped"
    units="units" expires_after="2026-10-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of characters a user typed before accepting an address autofill
    on typing suggestion. Emited every time a user accepts an autofill on typing
    suggestion.
  </summary>
</histogram>

<histogram name="Autofill.AddressSuggestionOnTypingAcceptance.PerFieldType"
    enum="FillingAcceptanceByFieldType" expires_after="2026-12-12">
  <owner>brunobraga@google.com</owner>
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    During navigation, for each field where an autofill address suggestion on
    typing is displayed, logs per field type whether the user has accepted it or
    not.
  </summary>
</histogram>

<histogram
    name="Autofill.AddressSuggestionOnTypingAcceptance.{ClassificationTypes}"
    enum="BooleanAutofillAddressSuggestionOnTypingAcceptance"
    expires_after="2026-06-13">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    During navigation, for each field where an autofill address suggestion on
    typing is displayed, logs whether the user has accepted it or not.
  </summary>
  <token key="ClassificationTypes">
    <variant name="Any" summary="any of the following"/>
    <variant name="Classified"
        summary="the triggering field where the suggestion was shown was
                 classified"/>
    <variant name="Unclassified"
        summary="the triggering field where the suggestion was shown was not
                 classified"/>
  </token>
</histogram>

<histogram
    name="Autofill.AddressSuggestionOnTypingAccepted.DaysSinceLastUse.Profile"
    units="days" expires_after="2026-10-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged at submission/navigation time, specifies the last time in days a
    profile that was used to build Autofill on typing suggestions (and later
    accepted) was accepted before by a previous suggestion (such as a regular
    address suggestion).
  </summary>
</histogram>

<histogram
    name="Autofill.AddressSuggestionOnTypingFieldTypeAddedToStrikeDatabase"
    enum="AutofillFieldType" expires_after="2026-10-29">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when an address on typing suggestion is not accepted for a field type
    repetitive times, leading this type to the added to the strike database.
    Emitted during frame destruction.
  </summary>
</histogram>

<histogram
    name="Autofill.AddressSuggestionOnTypingShown.DaysSinceLastUse.Profile"
    units="days" expires_after="2026-10-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged at submission/navigation time, specifies the last time in days a
    profile that was used to build Autofill on typing suggestions was accepted
    before by a previous suggestion (such as a regular address suggestion).
  </summary>
</histogram>

<histogram
    name="Autofill.AddressTokenVerificationStatusAtProfileUsage.{AddressType}"
    enum="AufofillStructuredTokenVerificationStatus" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>vizcay@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    For each {AddressType} in a given AutofillProfile, the verification status
    of the corresponding non-empty type is recorded when a profile is used to
    fill a form.
  </summary>
  <token key="AddressType">
    <variant name="Any" summary="any of the following"/>
    <variant name="ApartmentNumber"
        summary="the apartment number of the address"/>
    <variant name="FloorNumber" summary="the floor number of the address"/>
    <variant name="HouseNumber" summary="the house number of the address"/>
    <variant name="Premise" summary="the premise of the address"/>
    <variant name="StreetAddress" summary="the full street address"/>
    <variant name="StreetName" summary="the street name of the address"/>
    <variant name="SubPremise" summary="the subpremise of the address"/>
  </token>
</histogram>

<histogram
    name="Autofill.Ai.Deduplication.NumberOfLocalEntitiesConsidered.AllEntities"
    units="entities" expires_after="2026-06-01">
  <owner>brunobraga@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill AI entities that have been considered for
    deduplication. Emitted once per major version if there are at least more
    than two entities of a certain type.
  </summary>
</histogram>

<histogram
    name="Autofill.Ai.Deduplication.NumberOfLocalEntitiesConsidered{EntityType}"
    enum="Boolean" expires_after="2026-06-01">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill AI {EntityType} entities that have been considered
    for deduplication. Emitted once per major version if the user has at least
    two {EntityType} entities.
  </summary>
  <token key="EntityType" variants="Autofill.Ai.EntityType"/>
</histogram>

<histogram
    name="Autofill.Ai.Deduplication.NumberOfLocalEntitiesDeduped.AllEntities"
    units="entities" expires_after="2026-06-01">
  <owner>brunobraga@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill AI entities that have been deduped. Emitted once per
    major version only.
  </summary>
</histogram>

<histogram
    name="Autofill.Ai.Deduplication.NumberOfLocalEntitiesDeduped{EntityType}"
    enum="Boolean" expires_after="2026-06-01">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill AI {EntityType} entities that have been deduped.
    Emitted once per major version.
  </summary>
  <token key="EntityType" variants="Autofill.Ai.EntityType"/>
</histogram>

<histogram name="Autofill.Ai.EditedAutofilledFieldAtSubmission"
    enum="AutofilledFieldUserEditingStatus" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    On submission time, this metric emits for every field that was autofilled
    with Autofill AI, if the filling was accepted or subsequently corrected.
  </summary>
</histogram>

<histogram name="Autofill.Ai.EditedAutofilledFieldAtSubmission.ByFieldType"
    enum="AutofilledFieldUserEditingStatusByFieldType"
    expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    On submission time, this metric emits for every field that was autofilled
    with Autofill AI, if the filling was accepted or subsequently corrected, and
    also split the buckets by the Autofill AI type of the field.
  </summary>
</histogram>

<histogram name="Autofill.Ai.EntityTable.DecryptStatus2"
    enum="AutofillAiDecryptStatus" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the decryption stage of reading from the EntityTable was
    successful or not (and in that case whether it was a permanent failure (key
    was lost or data was corrupted) or a temporary failure (e.g. the decryption
    service was unavailable). Emitted every time autofill tries to decrypt a
    value to read/write to the table.
  </summary>
</histogram>

<histogram name="Autofill.Ai.EntityTable.{EncryptionStage}Status"
    enum="Boolean" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the {EncryptionStage} stage of reading/writing into the
    EntityTable was successful or not. Emitted every time autofill tries to
    {EncryptionStage} a value to read/write to the table.
  </summary>
  <token key="EncryptionStage">
    <variant name="Decrypt" summary="decrypt"/>
    <variant name="Encrypt" summary="encrypt"/>
  </token>
</histogram>

<histogram name="Autofill.Ai.Funnel.{SubmissionState}.Eligibility2"
    enum="AutofillAiEntityType" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the EntityType's for which a form is eligible for filling. Emitted
    once per form submission/abandonment.
  </summary>
  <token key="SubmissionState">
    <variant name="Abandoned"/>
    <variant name="Aggregate"/>
    <variant name="Submitted"/>
  </token>
</histogram>

<histogram
    name="Autofill.Ai.Funnel.{SubmissionState}.{FunnelStage}{EntityGranularity}"
    enum="Boolean" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records various stages of the Autofill AI funnel. The same metric is logged
    for submitted and for abandoned forms, with an additional metric aggregating
    both. The metric is recorded once per form per submission/abandonment.

    Note that the variant aggregated over all EntityTypes was emitted
    differently before M140 and then not emitted at all in M141, so data is most
    accurate starting from M142.

    {FunnelStage}

    {EntityGranularity}
  </summary>
  <token key="SubmissionState">
    <variant name="Abandoned"/>
    <variant name="Aggregate"/>
    <variant name="Submitted"/>
  </token>
  <token key="FunnelStage">
    <variant name="CorrectionAfterFill"
        summary="Given a form where the user filled an Autofill AI
                 suggestion, records whether the filling was corrected or
                 not."/>
    <variant name="FillAfterSuggestion"
        summary="Given a form where the user saw Autofill AI filling
                 suggestions, records whether the suggestion was filled or
                 not."/>
    <variant name="ReadinessAfterEligibility"
        summary="Given an Autofill-AI-eligible form, this metric records
                 whether the user has stored data to fill the form."/>
    <variant name="SuggestionAfterReadiness"
        summary="Given an Autofill-AI-eligible form where the user has data
                 stored to fill it, this metric records whether the user saw
                 an Autofill AI suggestion or not."/>
  </token>
  <token key="EntityGranularity" variants="Autofill.Ai.EntityType">
    <variant name="" summary="Emitted for any kind of entities."/>
  </token>
</histogram>

<histogram
    name="Autofill.Ai.Funnel.{SubmissionState}.{FunnelStage}{EntityGranularity}{EntityRecordType}"
    enum="Boolean" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records various stages of the Autofill AI funnel. The same metric is logged
    for submitted and for abandoned forms, with an additional metric aggregating
    both. The metric is recorded once per form per submission/abandonment.

    {FunnelStage}

    {EntityGranularity}

    {EntityRecordType}
  </summary>
  <token key="SubmissionState">
    <variant name="Abandoned"/>
    <variant name="Aggregate"/>
    <variant name="Submitted"/>
  </token>
  <token key="FunnelStage">
    <variant name="CorrectionAfterFill"
        summary="Given a form where the user filled an Autofill AI
                 suggestion, records whether the filling was corrected or
                 not."/>
    <variant name="FillAfterSuggestion"
        summary="Given a form where the user saw Autofill AI filling
                 suggestions, records whether the suggestion was filled or
                 not."/>
    <variant name="ReadinessAfterEligibility"
        summary="Given an Autofill-AI-eligible form, this metric records
                 whether the user has stored data to fill the form."/>
    <variant name="SuggestionAfterReadiness"
        summary="Given an Autofill-AI-eligible form where the user has data
                 stored to fill it, this metric records whether the user saw
                 an Autofill AI suggestion or not."/>
  </token>
  <token key="EntityGranularity" variants="Autofill.Ai.EntityType"/>
  <token key="EntityRecordType" variants="Autofill.Ai.EntityRecordType"/>
</histogram>

<histogram name="Autofill.Ai.KeyMetrics{KeyMetric}{EntityGranularity}"
    enum="Boolean" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Similar to Autofill.KeyMetrics.*. Emitted only for users who have AutofillAi
    enabled in settings.

    {KeyMetric}

    {EntityGranularity}
  </summary>
  <token key="KeyMetric">
    <variant name=".FillingAcceptance"
        summary="Records, at form submission, and given that the user saw an
                 Autofill AI prompt, whether the user used AutofillAI to fill
                 the form or not."/>
    <variant name=".FillingAssistance"
        summary="Records, at form submission, whether the user used Autofill
                 AI to fill the form or not."/>
    <variant name=".FillingCorrectness"
        summary="Records, at form submission, and given that the user filled
                 an Autofill AI suggestion, whether the user manually edited
                 an autofilled field filled by Autofill AI or not."/>
    <variant name=".FillingReadiness"
        summary="Records, at form submission, whether the user had Autofill
                 AI data to fill the form or not."/>
  </token>
  <token key="EntityGranularity" variants="Autofill.Ai.EntityType">
    <variant name="" summary="Emitted for any kind of entities."/>
  </token>
</histogram>

<histogram
    name="Autofill.Ai.KeyMetrics{KeyMetric}{EntityGranularity}{EntityRecordType}"
    enum="Boolean" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Similar to Autofill.KeyMetrics.*. Emitted only for users who have AutofillAi
    enabled in settings.

    {KeyMetric}

    {EntityGranularity}

    {EntityRecordType}
  </summary>
  <token key="KeyMetric">
    <variant name=".FillingAcceptance"
        summary="Records, at form submission, and given that the user saw an
                 Autofill AI prompt, whether the user used AutofillAI to fill
                 the form or not."/>
    <variant name=".FillingAssistance"
        summary="Records, at form submission, whether the user used Autofill
                 AI to fill the form or not."/>
    <variant name=".FillingCorrectness"
        summary="Records, at form submission, and given that the user filled
                 an Autofill AI suggestion, whether the user manually edited
                 an autofilled field filled by Autofill AI or not."/>
    <variant name=".FillingReadiness"
        summary="Records, at form submission, whether the user had Autofill
                 AI data to fill the form or not."/>
  </token>
  <token key="EntityGranularity" variants="Autofill.Ai.EntityType"/>
  <token key="EntityRecordType" variants="Autofill.Ai.EntityRecordType"/>
</histogram>

<histogram name="Autofill.Ai.ModelExecutionStatus"
    enum="AutofillAiModelExecutionStatus" expires_after="2026-04-30">
  <owner>jkeitel@google.com</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Describes the outcome of an AutofillAI (server-side) model run. Recorded
    whenever the client receives the result of a model execution or the model
    execution times out.
  </summary>
</histogram>

<histogram name="Autofill.Ai.NumberOfFilledFields.{FillType}.{SplitCriteria}"
    units="fields" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records, at form submission, the number of fields filled in a form. Only
    emitted for forms that can be filled by Autofill AI.

    {FillType}

    {SplitCriteria}
  </summary>
  <token key="FillType">
    <variant name="AutofillAi"
        summary="Only counts fields filled by Autofill AI and nothing else."/>
    <variant name="Total"
        summary="Counts fields filled by any Autofill source, except
                 Autocomplete and Compose."/>
  </token>
  <token key="SplitCriteria">
    <variant name=".HasDataToFill"
        summary="Only emitted for users who have some Autofill AI entity
                 saved and can therefore fill using Autofill AI."/>
    <variant name=".NoDataToFill"
        summary="Only emitted for users with no entities saved."/>
    <variant name="OptedIn"
        summary="Only emitted for users opted in to Autofill AI."/>
    <variant name="OptedOut"
        summary="Only emitted for users not opted in to Autofill AI."/>
  </token>
</histogram>

<histogram name="Autofill.Ai.OptIn.Change" enum="AutofillAiOptInStatus"
    expires_after="2026-06-30">
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records changes to the user's opt-in status to Autofill with AI. The
    recorded value is the opt-in status after the change. Recorded whenever the
    user explicitly triggers a change to the opt-in status (i.e., during the
    first run experience or in settings). Not recorded during implicit changes
    to the effective opt-in status (e.g., if the user signs out or changes their
    locale).
  </summary>
</histogram>

<histogram name="Autofill.Ai.OptIn.Funnel" enum="AutofillAiOptInFunnelEvents"
    expires_after="2026-06-30">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records events related to the surfaces available for users to find out and
    opt in Autofill AI. These educational surfaces are the IPH and the FFR
    dialog. Logged when any of them are shown and when the FFR (final step in
    the funnel) is accepted.
  </summary>
</histogram>

<histogram name="Autofill.Ai.OptIn.PrefMigration."
    enum="AutofillAiPrefMigrationStatus" expires_after="2026-12-12">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the Autofill AI syncable pref migration result, which depends on the
    its initial value and the account keyed pref. Emitted during startup.
  </summary>
</histogram>

<histogram name="Autofill.Ai.OptIn.Status.{EmissionStrategy}"
    enum="AutofillAiOptInStatus" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the user is opted into the Autofill AI feature or not.

    {EmissionStrategy}.
  </summary>
  <token key="EmissionStrategy">
    <variant name="Startup" summary="Emitted on startup of the profile."/>
    <variant name="Submission"
        summary="Emitted each time a form fillable by Autofill AI is
                 submitted."/>
  </token>
</histogram>

<histogram name="Autofill.Ai.PromptSuppression.{PromptType}{EntityType}"
    enum="Boolean" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records for each entity observed at form submission that qualified for a
    prompt whether it was suppressed or not.

    {EntityType}

    {PromptType}
  </summary>
  <token key="PromptType" variants="Autofill.Ai.PromptTypes"/>
  <token key="EntityType" variants="Autofill.Ai.EntityType"/>
</histogram>

<histogram name="Autofill.Ai.StoredEntitiesCount{EntityType}{RecordType}"
    units="units" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of entities stored by the user. Emitted on startup after
    the initial loading of data.

    {EntityType}

    {RecordType}
  </summary>
  <token key="EntityType" variants="Autofill.Ai.EntityType"/>
  <token key="RecordType" variants="Autofill.Ai.EntityRecordType">
    <variant name="" summary="Emitted for all entity record types."/>
  </token>
</histogram>

<histogram
    name="Autofill.Ai.Timing.GetEntityUpstreamCandidateFromSubmittedForm"
    units="ms" expires_after="2026-05-03">
  <owner>brunobraga@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <summary>
    Number of milliseconds passed between the start and end of the method that
    returns a local entity candidates to be migrated to the Wallet server.
    Emitted during form submission.
  </summary>
</histogram>

<histogram name="Autofill.Ai.WalletContextualSurfacingEnabled" enum="Boolean"
    expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records, at browser startup, whether a user has the Wallet setting regarding
    contextual surfacing enabled or not.
  </summary>
</histogram>

<histogram name="Autofill.Ai.{PromptType}.AllEntities"
    enum="AutofillAiBubbleClosedReason" expires_after="2026-04-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records events related to the save or update prompt dialog for all entity
    types. Emitted when the dialog its closed, regardless of whether it was done
    so by an user action or not.
  </summary>
  <token key="PromptType" variants="Autofill.Ai.PromptTypes"/>
</histogram>

<histogram name="Autofill.Ai.{PromptType}{EntityType}{RecordType}"
    enum="AutofillAiBubbleClosedReason" expires_after="2026-04-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records events related to the save or update prompt dialog for each entity
    type. Emitted when the dialog its closed, regardless of whether it was done
    so by an user action or not.

    {RecordType}
  </summary>
  <token key="PromptType" variants="Autofill.Ai.PromptTypes"/>
  <token key="EntityType" variants="Autofill.Ai.EntityType"/>
  <token key="RecordType" variants="Autofill.Ai.EntityRecordType">
    <variant name="" summary="Emitted for all entity record types."/>
  </token>
</histogram>

<histogram
    name="Autofill.AmountExtraction.HeuristicRegexesComponentInstallationResult"
    enum="AmountExtractionComponentInstallationResult"
    expires_after="2026-06-01">
  <owner>longsheng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The result from Amount Extraction Heuristic Regexes component installation.
    This metric is recorded every time when a new regexes version is installed.
  </summary>
</histogram>

<histogram
    name="Autofill.AmountExtraction.Latency2.{AmountExtractionLatencyResult}"
    units="ms" expires_after="2026-06-01">
  <owner>yiwenqian@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the latency of amount extraction process. This latency is measured
    from the moment amount extraction is initiated in the browser process to
    when a response is received. Logged when the search is finished.
  </summary>
  <token key="AmountExtractionLatencyResult">
    <variant name="Failure"
        summary="Labeled amount extraction latency when amount extraction
                 failed"/>
    <variant name="Success"
        summary="Labeled amount extraction latency when amount extraction
                 succeeded"/>
  </token>
</histogram>

<histogram name="Autofill.AmountExtraction.Result2"
    enum="AmountExtractionResult" expires_after="2026-06-01">
  <owner>yiwenqian@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the result of amount extraction process. Amount extraction process
    is initiated once user clicks on the credit card form on Desktop. The result
    is recorded upon receiving the response in the browser process or the
    extraction timeout is reached before a response is received. This metric
    records three types of amount extraction results: success, amount not found
    and timeout.
  </summary>
</histogram>

<histogram name="Autofill.AndroidAutofillAvailabilityStatus"
    enum="AndroidAutofillAvailabilityStatus" expires_after="2026-04-05">
  <owner>friedrichh@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Clank only. Logs whether Android Autofill was available. If not, it splits
    the reasons why. Only one reason is recorded (e.g. the pref isn't checked if
    a policy makes it impossible to set the pref). The reasons are not ordered.
    Emitted only once per cold start of Chrome when the first tab is created.
  </summary>
</histogram>

<histogram name="Autofill.AndroidAutofillManagerErrors"
    enum="AutofillManagerMethod" expires_after="2026-04-12">
  <owner>friedrichh@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Clank and WebView only. Logs failures when calling Android Autofill's
    AutofillManager. All logged failures are caught and silently ignores since
    they are RuntimeExceptions neither the user nor the browser can affect and
    may be recoverable with later invocations. This includes but is not limited
    to timeouts. Emitted for every failed API call. No success metric exists
    since the call volume is quite high but the expected error volume is not.
  </summary>
</histogram>

<histogram
    name="Autofill.Autocomplete.NotOff.EditedAutofilledFieldAtSubmission2{AutofillFormType}"
    enum="AutofilledFieldUserEditingStatus" expires_after="2026-04-12">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records at submission time for each autofilled field with autocomplete !=
    off whether the user edited the autofilled field value or not.
    {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Autofill.Autocomplete.NotOff.FillingAcceptance.{FormType}"
    enum="BooleanAutofillFillingAcceptance" expires_after="2026-04-12">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records for each submitted form whether the user accepted the suggestion to
    fill values and the triggering field has autocomplete != off. This is
    counted as 'yes' if the user accepted such a suggestion at any time,
    regardless whether other suggestions were ignored or whether the accepted
    suggestion was reverted afterwards. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram
    name="Autofill.Autocomplete.Off.EditedAutofilledFieldAtSubmission2{AutofillFormType}"
    enum="AutofilledFieldUserEditingStatus" expires_after="2026-04-12">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records at submission time for each autofilled field with autocomplete = off
    whether the user edited the autofilled field value or not.
    {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Autofill.Autocomplete.Off.FillingAcceptance.{FormType}"
    enum="BooleanAutofillFillingAcceptance" expires_after="2026-04-12">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records for each submitted form whether the user accepted the suggestion to
    fill values and the triggering field has autocomplete = off. This is counted
    as 'yes' if the user accepted such a suggestion at any time, regardless
    whether other suggestions were ignored or whether the accepted suggestion
    was reverted afterwards. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.Autocomplete.PredictionCollisionState"
    enum="PredictionStateAutocompleteStatePair" expires_after="2026-05-03">
  <owner>koerber@google.com</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records a pair of (PredictionState, AutocompleteState) for each field in a
    submitted form. PredictionState indicates if server and/or heuristic type
    prediction were available. AutocompleteState indicates if the autocomplete
    attribute was present and whether it was valid. Emitted on form submission.
  </summary>
</histogram>

<histogram name="Autofill.Autocomplete.PredictionCollisionType.Heuristics"
    enum="AutofillFieldType" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the heuristic type of each field with autocomplete=garbage in a
    submitted form. Emitted on form submission.
  </summary>
</histogram>

<histogram name="Autofill.Autocomplete.PredictionCollisionType.Server"
    enum="AutofillFieldType" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the server type of each field with autocomplete=garbage in a
    submitted form. Emitted on form submission.
  </summary>
</histogram>

<histogram
    name="Autofill.Autocomplete.PredictionCollisionType.ServerOrHeuristics"
    enum="AutofillFieldType" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the server type of each field with autocomplete=garbage in a
    submitted form. If no server type is available, the heuristics type is
    logged instead. Emitted on form submission.
  </summary>
</histogram>

<histogram
    name="Autofill.Autocomplete.PredictionCollisionType2.{PredictionType}.{AutocompleteState}"
    enum="AutofillFieldType" expires_after="2026-04-26">
  <owner>koerber@google.com</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the PredictionType of each field in a submitted form, depending on
    the field's AutocompleteState. Emitted on form submission.
  </summary>
  <token key="PredictionType">
    <variant name="Heuristics"/>
    <variant name="Server"/>
    <variant name="ServerOrHeuristics"
        summary="If available, the server type. Otherwise the heuristic type."/>
  </token>
  <token key="AutocompleteState">
    <variant name="Garbage"/>
    <variant name="None"/>
    <variant name="Off"/>
    <variant name="Valid"/>
  </token>
</histogram>

<histogram name="Autofill.Autocomplete.SingleEntryRemovalMethod"
    enum="AutofillSingleEntryRemovalMethod" expires_after="2026-05-03">
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records how a user removed a single Autocomplete entry (i.e. via the
    keyboard or via a delete button in the Autofill popup). Emitted on
    Autocomplete entry deletion.
  </summary>
</histogram>

<histogram name="Autofill.AutocompleteUnrecognized.FieldFillingStats2"
    enum="FieldFillingStatus" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records for every field with autocomplete unrecognized, whether it was
    filled, corrected, manually filled, or left empty. Recorded at submission
    time.
  </summary>
</histogram>

<histogram name="Autofill.AutofillAi.ModelCache.InitSuccess" enum="Boolean"
    expires_after="2026-05-03">
  <owner>jkeitel@google.com</owner>
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records initializing the AutofillAI model cache was successful. Recorded
    when the model cache is created, i.e., at profile creation.
  </summary>
</histogram>

<histogram name="Autofill.AutofillAndPasswordsSettingsPage.VisitReferrer"
    enum="AutofillSettingsReferrer" expires_after="2026-09-15">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the entry point (referrer) every time the user visits the 'Autofill
    and Passwords' settings page from a tracked entry point. This metric is
    emitted on navigation to the page, with the enum values distinguishing the
    entry points (different ways of reaching the page).
  </summary>
</histogram>

<histogram name="Autofill.AutomationRate.{FormType}" units="%"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the percentage of input text field characters that were autofilled.
    This function measures text input as a number of UTF-16 code points. Fields
    with more than 150 code points input are ignored. Emitted on form
    submission. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.BetterAuth.CardUnmaskDuration.Fido" units="ms"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the time it takes to fetch the full PAN of a credit card once user
    successfully authenticates using WebAuthn.
  </summary>
</histogram>

<histogram
    name="Autofill.BetterAuth.CardUnmaskDuration.Fido.{CardType}.{Result}"
    units="ms" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the time it takes to fetch the full PAN of a credit card once user
    successfully authenticates using WebAuthn.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="Result" variants="Autofill.PaymentsRpcResult"/>
</histogram>

<histogram
    name="Autofill.BetterAuth.CardUnmaskPreflightCalledWithFidoOptInStatus"
    enum="Boolean" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The total count of this histogram tracks the number of times Chrome made a
    preflight GetDetailsForGetRealPan call. A preflight call is only made when
    card suggestions are shown, and can only happen when the user has server
    cards and is eligible for WebAuthn. For every log in this histogram, it also
    tracks whether the user is opted-in to WebAuthn or opted-out of WebAuthn. A
    log of true indicates the user is opted-in, and a log of false indicates the
    user is opted-out.

    As a percentage of the number of times card suggestions are shown, which is
    tracked under Autofill.FormEvents.CreditCard, this metric provides an
    estimate for the potential reach for the Autofill Better Auth project.
    Moreover, this acts as a baseline value for other metrics in this project.
  </summary>
</histogram>

<histogram name="Autofill.BetterAuth.CardUnmaskPreflightDuration" units="ms"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracking the latency of a GetDetailsForGetRealPan call to Payments servers.
    This duration should be comparable to that of Autofill.UnmaskPrompt.Duration
    and should ideally stay under 500 ms in order for the user to autofill their
    credit card without experiencing much friction.
  </summary>
</histogram>

<histogram name="Autofill.BetterAuth.CardUnmaskPreflightInitiated"
    enum="Boolean" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the number of times that we initiate the card unmask preflight flow.
    This will log both when the user is eligible for WebAuthn as well as when
    the user is not eligible for WebAuthn, as it is logged before we check this
    status.
  </summary>
</histogram>

<histogram name="Autofill.BetterAuth.CardUnmaskTypeDecision"
    enum="AutofillCreditCardUnmaskDecisionMetric" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    If the user is definitely opted-in to the new auth flow, Payments sends a
    list of instrument IDs in the GDFGRP call, and Chrome makes the final call
    on whether CVC or WebAuthn should be shown. Tracks which authentication
    method was prompted.
  </summary>
</histogram>

<histogram name="Autofill.BetterAuth.EnrollmentPromptOffered" enum="Boolean"
    expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records whether the Better Auth (FIDO) enrollment prompt was offered. Logged
    at the time of showing the prompt, or if not shown, when the prompt would
    have been shown. This metric can only be logged from the checkout flow,
    after a CVC authentication has completed.
  </summary>
</histogram>

<histogram
    name="Autofill.BetterAuth.FlowEvents.{BetterAuthFlowType}.{CardType}"
    enum="AutofillCreditCardAuthenticationEvents" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks when a user completes each step in a card unmasking flow per
    authentication flow type, with an additional breakdown for if it was a
    server card or virtual card.
  </summary>
  <token key="BetterAuthFlowType" variants="Autofill.BetterAuthFlowType"/>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram
    name="Autofill.BetterAuth.FlowEvents{AutofillCreditCardAuthenticationFlows}"
    enum="AutofillCreditCardAuthenticationEvents" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks when a user completes each step in a card unmasking flow per
    authentication type. This will provide a relative conversion rate for each
    authentication type. {AutofillCreditCardAuthenticationFlows}
  </summary>
  <token key="AutofillCreditCardAuthenticationFlows">
    <variant name=""/>
    <variant name=".Cvc" summary="CVC authentication only"/>
    <variant name=".CvcFallbackFromFido"
        summary="CVC fallback from FIDO authentication"/>
    <variant name=".CvcThenFido" summary="CVC followed by FIDO authentication"/>
    <variant name=".Fido" summary="FIDO authentication only"/>
  </token>
</histogram>

<histogram name="Autofill.BetterAuth.OptInCalled.FromCheckoutFlow"
    enum="AutofillCreditCardWebauthnOptInParameters" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks when users opt-in from a checkout flow, making an
    UpdateAutofillUserPreference call. For each call to payments, logs if the
    call was made in order to verify an existing credential, to create a new
    credential, or to fetch a challenge.
  </summary>
</histogram>

<histogram name="Autofill.BetterAuth.OptInPromoNotOfferedReason"
    enum="WebauthnOptInPromoNotOfferedReason" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>shgar@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records when the Better Auth (FIDO) opt-in promo could have been offered on
    Desktop, but wasn't. Logged at the time of the promo not being shown. This
    metric can only be logged from the checkout flow, as we do not block opting
    in to FIDO from the settings page. It logs the enum reason of what caused
    the promo to not be shown.
  </summary>
</histogram>

<histogram name="Autofill.BetterAuth.OptInPromoShown.FromCheckoutFlow"
    enum="BooleanHit" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the number of times the opt-in promo to use FIDO authentication for
    card unmasking has been shown. Only applicable on Desktop.

    This is useful when compared to Autofill.BetterAuth.OptInPromoUserDecision,
    to see what percentage of users are interacting with the dialog. Also, when
    an opted-out user receives the preflight call before selecting a card (which
    is recorded by the first bucket in
    Autofill.BetterAuth.UserPerceivedLatencyOnCardSelection.OptedOut), then the
    promo should eventually show if the user selects a masked card and
    successfully authenticates through CVC.
  </summary>
</histogram>

<histogram name="Autofill.BetterAuth.OptInPromoUserDecision.FromCheckoutFlow"
    enum="AutofillWebauthnOptInPromoUserDecision" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the user response to the opt-in promo for using FIDO authentication
    for card unmasking. The user can either accept the promo and proceed to
    perform user-verification, can decline the promo immediately, or first
    accept the promo but then decline while the challenge is being fetched. Only
    applicable on Desktop.
  </summary>
</histogram>

<histogram
    name="Autofill.BetterAuth.PreflightCallResponseReceivedOnCardSelection.{AutofillFidoAuthenticationEnabledState}.{CardType}"
    enum="AutofillCreditCardPreflightCallEvent" expires_after="2026-06-01">
  <owner>junhuihe@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The GetDetailsForGetRealPan call is made when card suggestions are shown.
    This metric tracks whether the response is received before or after a card
    is chosen by the user. For an opted-in user, a late response would imply
    FIDO registration/authentication for the selected card will not be offered.
    For an opted-out user, a late response would imply that opt-in may not have
    been offered. This metric is split by whether the user is opted-out or
    opted-in, and by the type of card used.
  </summary>
  <token key="AutofillFidoAuthenticationEnabledState"
      variants="AutofillFidoAuthenticationEnabledState"/>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram
    name="Autofill.BetterAuth.UserPerceivedLatencyOnCardSelection.OptedIn.Duration"
    units="ms" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The GetDetailsForGetRealPan call is made when card suggestions are shown.
    This metric logs the duration of the perceived latency when the response for
    this call is received after a card is chosen by an opted-in user. After
    waiting a set number of seconds without receiving a response, Chrome will
    fall back to CVC authentication.
  </summary>
</histogram>

<histogram
    name="Autofill.BetterAuth.UserPerceivedLatencyOnCardSelection.OptedIn.TimedOutCvcFallback"
    enum="AutofillCreditCardUserPerceivedLatencyFollowUp"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The GetDetailsForGetRealPan call is made when card suggestions are shown. If
    an opted-in user selects a card before the response is returned, latency is
    perceived. Given that the user perceives latency, this metric logs whether
    the request timed out and fell back to CVC or if the request was completed
    and continued to WebAuthn.
  </summary>
</histogram>

<histogram
    name="Autofill.BetterAuth.UserPerceivedLatencyOnCardSelection.{AutofillFidoAuthenticationEnabledState}"
    enum="AutofillCreditCardPreflightCallEvent" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The GetDetailsForGetRealPan call is made when card suggestions are shown.
    This metric tracks whether the response is received before or after a card
    is chosen by the user. For an opted-in user, a late response would imply
    perceived latency. For an opted-out user, a late response would imply that
    opt-in may not have been offered. {AutofillFidoAuthenticationEnabledState}
  </summary>
  <token key="AutofillFidoAuthenticationEnabledState"
      variants="AutofillFidoAuthenticationEnabledState"/>
</histogram>

<histogram name="Autofill.BetterAuth.UserVerifiabilityCheckDuration" units="ms"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks how long it takes to check that the user is verifiable through
    WebAuthn's IsUserVerifiablePlatformAuthenticatorAvailable() call. This check
    is done before deciding to make a GetDetailsForGetRealPan call to Payments.
  </summary>
</histogram>

<histogram
    name="Autofill.BetterAuth.WebauthnResult{AutofillFidoUserVerificationFlow}"
    enum="AutofillCreditCardWebauthnResultMetric" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    This metric tracks the result of the WebAuthn prompt when the user attempts
    to either opt-in for FIDO authentication or unmask a card using FIDO
    authentication. {AutofillFidoUserVerificationFlow}
  </summary>
  <token key="AutofillFidoUserVerificationFlow">
    <variant name=".AuthenticationAfterCVC" summary="WebAuthn after CVC"/>
    <variant name=".CheckoutOptIn"
        summary="Registering for WebAuthn on checkout"/>
    <variant name=".ImmediateAuthentication"
        summary="WebAuthn for card downstream"/>
  </token>
</histogram>

<histogram name="Autofill.Bnpl.IssuersSyncedCount.Startup" units="issuers"
    expires_after="2026-06-01">
  <owner>yiwenqian@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of BNPL issuers that were successfully synced at startup,
    measured at Chrome profile launch time.
  </summary>
</histogram>

<histogram name="Autofill.Bnpl.PopupWindowLatency.{Issuer}.{Result}" units="ms"
    expires_after="2026-06-01">
  <owner>longsheng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logged when the pop-up is closed. Broken down by issuer and result, because
    each issuer should be looked at separately, and each result should also be
    looked at separately to understand user behavior better inside of the pop-up
    flow.
  </summary>
  <token key="Issuer" variants="Autofill.BnplIssuer"/>
  <token key="Result">
    <variant name="Failure"/>
    <variant name="Success"/>
    <variant name="UserClosed"/>
  </token>
</histogram>

<histogram name="Autofill.Bnpl.PopupWindowResult.{Issuer}"
    enum="BnplPopupWindowResult" expires_after="2026-06-01">
  <owner>wilsonlow@google.com</owner>
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the result of the BNPL pop-up window for {Issuer}, i.e. Success,
    Failure, or NotFinished. Logged once when the pop-up window is closed.
  </summary>
  <token key="Issuer" variants="Autofill.BnplIssuer"/>
</histogram>

<histogram name="Autofill.Bnpl.PopupWindowShown.{Issuer}" enum="BooleanShown"
    expires_after="2026-06-01">
  <owner>wilsonlow@google.com</owner>
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The count for the number of times the BNPL popup window for {Issuer} is
    shown. Records true every time the popup window is shown.
  </summary>
  <token key="Issuer" variants="Autofill.BnplIssuer"/>
</histogram>

<histogram name="Autofill.Bnpl.SelectionDialogIssuerSelected"
    enum="BnplIssuerId" expires_after="2026-06-01">
  <owner>yishuil@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The count of BNPL issuer selection per issuer. Records when an issuer is
    selected from the select BNPL issuer dialog.
  </summary>
</histogram>

<histogram name="Autofill.Bnpl.SelectionDialogResult"
    enum="SelectBnplIssuerDialogResult" expires_after="2026-06-01">
  <owner>yishuil@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The result of the select BNPL issuer Dialog. Records when an action is taken
    on the dialog.
  </summary>
</histogram>

<histogram name="Autofill.Bnpl.SelectionDialogShown" enum="BooleanShown"
    expires_after="2026-06-01">
  <owner>wilsonlow@google.com</owner>
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The count for the number of times the BNPL Issuer Selection Dialog is shown.
    Records true every time the dialog is shown.
  </summary>
</histogram>

<histogram name="Autofill.Bnpl.SuggestionUnavailableReason"
    enum="BnplSuggestionUnavailableReason" expires_after="2026-06-01">
  <owner>wilsonlow@google.com</owner>
  <owner>vinnypersky@google.com</owner>
  <owner>viplavkadam@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the reason why a BNPL suggestion was unavailable, i.e. Amount
    extraction failure or Checkout amount not supported. Logged once per page
    load when a BNPL suggestion is unavailable on an eligible BNPL merchant's
    website when suggestions were shown.
  </summary>
</histogram>

<histogram name="Autofill.Bnpl.TosDialogResult.{Issuer}"
    enum="BnplTosDialogResult" expires_after="2026-06-01">
  <owner>longsheng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The result of the BNPL ToS Dialog, broken down by result. Records when an
    action was taken on the dialog.
  </summary>
  <token key="Issuer" variants="Autofill.BnplIssuer"/>
</histogram>

<histogram name="Autofill.Bnpl.TosDialogShown.{Issuer}" enum="BooleanShown"
    expires_after="2026-06-01">
  <owner>longsheng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The count for the number of times the BNPL ToS Dialog is shown for {Issuer}.
    Records true every time the dialog is shown.
  </summary>
  <token key="Issuer" variants="Autofill.BnplIssuer"/>
</histogram>

<histogram name="Autofill.Bubble.HideDueToTabHide" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the type of the active bubble that is hidden and moved to the
    pending queue because its tab was deactivated (moved to the background).
    Recorded when a tab is about to be hidden.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.AddedDueToActiveBubble"
    enum="AutofillBubbleType" expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when a bubble is added to the queue because another bubble was
    active. It counts the bubbles that were queued because of a higher priority
    bubble that is currently showing. This metric is recorded when a bubble
    requests to show.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.AddedDueToHover"
    enum="AutofillBubbleType" expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when a bubble is added to the queue because the user was hovering
    over the active bubble. This metric is recorded when a bubble requests to
    show.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.Discarded" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the count of bubbles that are not added to the queue because a
    non-timed-out, non-preemptible bubble of the same type is already pending.
    This metric is recorded when a bubble requests to show.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.Replaced" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when a bubble in the queue is replaced by a new bubble of the same
    type due to the bubble type's immediate preemption policy (e.g., for
    passwords), not due to a timeout. This metric is recorded once a bubble is
    hidden and the pending queue of bubbles is cleaned up.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.ShownFromQueue"
    enum="AutofillBubbleType" expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs, per bubble type, when a bubble from the queue is shown to the user.
    This metric is recorded when the bubble is shown after the user acted upon
    another bubble.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.ShownFromQueueOnTabVisible"
    enum="AutofillBubbleType" expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs, per bubble type, when a bubble from the queue is shown to the user
    when the tab became visible. This metric is recorded when the bubble is
    shown.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.TimedOut" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when a bubble is erased from the queue because it has exceeded its
    timeout. This can occur during general queue cleanup or when a new bubble of
    the same type replaces the timed-out one.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Queue.TimeInQueue.{BubbleType}" units="ms"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged for bubbles from the queue, tracking the time from being queued to
    being shown for each bubble type when they are shown. This metric is
    recorded when a bubble is shown from the queue.
  </summary>
<!-- LINT.IfChange(Autofill.Bubble.Queue.TimeInQueue.BubbleType) -->

  <token key="BubbleType">
    <variant name="FilledCardInformation"
        summary="Filled card information bubble."/>
    <variant name="MandatoryReauth" summary="Mandatory reauth bubble."/>
    <variant name="OfferNotification" summary="Offer notification bubble."/>
    <variant name="Password" summary="Password bubble."/>
    <variant name="SaveIban" summary="Save IBAN bubble."/>
    <variant name="SaveUpdateAddress" summary="Save/update address bubble."/>
    <variant name="SaveUpdateAutofillAi"
        summary="Save/update Autofill AI data bubble."/>
    <variant name="SaveUpdateCard" summary="Save/update card bubble."/>
    <variant name="VirtualCardEnrollConfirmation"
        summary="Virtual card enroll confirmation bubble."/>
    <variant name="WalletablePassConsent"
        summary="Walletable pass consent bubble."/>
    <variant name="WalletablePassSave" summary="Walletable pass save bubble."/>
  </token>
<!-- LINT.ThenChange(//chrome/browser/ui/autofill/bubble_manager_impl.cc:BubbleTypeToMetricSuffix) -->

</histogram>

<histogram name="Autofill.Bubble.RequestShow" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    This metric tracks the count all bubble-show attempts per bubble type.
    Logged when the bubble requests to show and recorded when a bubble requests
    to show.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.RequestShow.ForceShow"
    enum="AutofillBubbleType" expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    This metric tracks the count of all bubble force show attempts bypassing the
    priority logic of the BubbleManager. Recorded when a bubble requests to
    show.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Show.NoActiveBubble" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when the bubble requests to be shown but no other bubble is active,
    leading to the bubble being shown immediately. This metric tracks the count
    of bubbles that were directly shown.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.Show.Preemption" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged when a new bubble successfully hides and replaces an active bubble.
    It tells the count of bubbles that were shown while hiding another actively
    shown bubble per bubble type.
  </summary>
</histogram>

<histogram name="Autofill.Bubble.WasPreempted" enum="AutofillBubbleType"
    expires_after="2026-04-22">
  <owner>vidhanj@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the type of a bubble that was actively showing but was hidden due to
    preemption by a higher-priority bubble. Recorded at the moment an active
    bubble is preempted by a new bubble is requested to be shown that has a
    higher priority or was requested with the force_show flag.
  </summary>
</histogram>

<histogram name="Autofill.CardholderNameFixFlowPrompt.Events"
    enum="AutofillCardholderNameFixFlowPromptEvent" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Events tracking the usage of the cardholder name fix flow prompt. This
    prompt is triggered whenever cardholder name must be explicitly requested
    from the user in order to upload the card to Google Payments.
  </summary>
</histogram>

<histogram name="Autofill.CardInfoRetrievalEnrolled.Result"
    enum="CardInfoRetrievalEnrolledUnmaskResult" expires_after="2026-06-01">
  <owner>jialihuang@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the result of a card info retrieval enrolled card unmasking process
    when the unmasking is finished (whether it succeeded or otherwise reason of
    the failure).
  </summary>
</histogram>

<histogram name="Autofill.CardUnmask.ScreenLockCheckBox.InitialState"
    enum="CheckBoxStatus" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siashah@chromium.org</owner>
  <owner>longsheng@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the initial state of the ScreenLockCheckBox. The ScreenLockCheckBox
    is the checkbox shown to the user as part of the CardUnmaskPrompt. This
    histogram will be logged only when the CardUnmaskPrompt is initialized. This
    is only available on Android.
  </summary>
</histogram>

<histogram name="Autofill.CardUnmask.ScreenLockCheckBox.UserChecked"
    enum="Boolean" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siashah@chromium.org</owner>
  <owner>longsheng@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the check/uncheck action from users on the ScreenLockCheckBox. The
    ScreenLockCheckBox is the checkbox shown to the user as part of the
    CardUnmaskPrompt. This histogram will be updated whenever the user
    clicks/unclicks the checkbox. This is only available on Android.
  </summary>
</histogram>

<histogram name="Autofill.CardUnmaskAuthenticationSelectionDialog.Result"
    enum="AutofillCardUnmaskAuthenticationSelectionDialogResult"
    expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>siashah@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the result of the Card Unmask Authentication Selection Dialog, such
    as user cancelation before/after selecting a challenge option, or automatic
    dismissal after a server success/failure for a selected option was returned.
    The metric is recorded any time the dialog is dismissed.
  </summary>
</histogram>

<histogram name="Autofill.CardUnmaskAuthenticationSelectionDialog.Shown2"
    units="challenge_options" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>siashah@chromium.org</owner>
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    On every show of the card unmask challenge option selection dialog, this
    histogram records a count (with a maximum of 10) for the number of challenge
    options that were shown. This dialog is shown when a user needs to select a
    challenge option to authenticate a card for payments autofill.
  </summary>
</histogram>

<histogram name="Autofill.CardUploadDecisionMetric"
    enum="AutofillCardUploadDecisionMetric" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Whether upload was offered upon detecting a form submission with credit card
    data, a detailed reason if upload was offered even with some missing fields
    and detailed reasons if it wasn't.
  </summary>
</histogram>

<histogram name="Autofill.CardUploadEnabled2" enum="AutofillCardUploadEnabled"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>aneeshali@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Detailed reasons why (or why not) card upload was enabled. When a user
    submits a form from which a card was extracted, this check is triggered to
    decide whether to ask the user if they want to upload the card.
  </summary>
</histogram>

<histogram name="Autofill.ConditionalPasskeysFlow.PasskeysState"
    enum="WebAuthnCredManDelegateState" expires_after="2026-04-26">
  <owner>friedrichh@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Clank only. Logs the state of passkeys in a conditional passkey flow. It
    could be that the passkeys were not ready, there were no saved passkeys or
    there were passkeys. Emitted when the CredMan UI was closed.
  </summary>
</histogram>

<histogram name="Autofill.CreditCard.DisabledReason.PageLoad"
    enum="AutofillPreferenceSetter" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    If the pref autofill.credit_card_enabled is disabled, this metric records
    the source. Emitted on page load for a page containing forms. The
    corresponding metric tracking the activation rate of
    autofill.credit_card_enabled is Autofill.CreditCard.IsEnabled.PageLoad.
  </summary>
</histogram>

<histogram name="Autofill.CreditCard.DisabledReason.Startup"
    enum="AutofillPreferenceSetter" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    If the pref autofill.credit_card_enabled is disabled, this metric records
    the source. Emitted on browser startup when a new Chrome profile is loaded.
    The corresponding metric tracking the activation rate of
    autofill.credit_card_enabled is Autofill.CreditCard.IsEnabled.Startup.
  </summary>
</histogram>

<histogram name="Autofill.CreditCard.IsEnabled.PageLoad" enum="BooleanEnabled"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks whether Credit Card Autofill is enabled on page load for a page
    containing forms.
  </summary>
</histogram>

<histogram name="Autofill.CreditCard.IsEnabled.Startup" enum="BooleanEnabled"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks whether Credit Card Autofill is enabled when Chrome launches.
  </summary>
</histogram>

<histogram
    name="Autofill.CreditCard.Seamless{AutofillSeamlessnessFillability}{AutofillSeamlessnessMeasurementTime}{AutofillSeamlessnessVisibility}"
    enum="CreditCardSeamlessFill" expires_after="2026-05-24">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records for each credit card form the quality of the fill.
    {AutofillSeamlessnessFillability} {AutofillSeamlessnessMeasurementTime}
    {AutofillSeamlessnessVisibility}

    The fields in question are: cardholder name (full, or first and last),
    credit card number, expiration date (MM/YY, MM/YYYY, MM and YY, or MM and
    YYYY), and CVC.

    Each bucket represents a minimal set of fields that must be autofilled.
    Lower numbers are better:

    Bucket 0 = name &amp; number &amp; exp. date &amp; CVC = Full fill :-D

    Bucket 1 = number &amp; exp. date &amp; CVC = Optional name missing :-)

    Bucket 2 = name &amp; number &amp; exp. date = Optional CVC missing :-)

    Bucket 3 = number &amp; exp. date = Optional name and CVC missing :-)

    Bucket 4 = name &amp; number &amp; CVC = Full fill but exp. date missing :-|

    Bucket 5 = all other scenarios = Partial fill :-(

    Any form that contains at least one credit card field counts as credit card
    form.

    Note that the Fillable.AtFillTimeAfterSecurityPolicy variant is not recorded
    because at the time of recording the available information are not enough to
    infer this metric.
  </summary>
  <token key="AutofillSeamlessnessFillability"
      variants="AutofillSeamlessnessFillability"/>
  <token key="AutofillSeamlessnessMeasurementTime"
      variants="AutofillSeamlessnessMeasurementTime"/>
  <token key="AutofillSeamlessnessVisibility"
      variants="AutofillSeamlessnessVisibility"/>
</histogram>

<histogram
    name="Autofill.CreditCard.Seamless{AutofillSeamlessnessFillability}{AutofillSeamlessnessMeasurementTime}{AutofillSeamlessnessVisibility}.Bitmask"
    enum="AutofillCreditCardSeamlessnessBitmask" expires_after="2026-05-24">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records for each credit card form the quality of the fill.
    {AutofillSeamlessnessFillability} {AutofillSeamlessnessMeasurementTime}
    {AutofillSeamlessnessVisibility}

    The emitted value is a non-zero bitmask whose bits have the following
    meaning, from highest to lowest bit:

    Bit #4 is true iff a cardholder name was filled.

    Bit #3 is true iff a card number was filled.

    Bit #2 is true iff an expiraton date was filled.

    Bit #1 is true iff a CVC name was filled.

    Note that the Fillable.AtFillTimeAfterSecurityPolicy variant is not recorded
    because at the time of recording the available information are not enough to
    infer this metric.
  </summary>
  <token key="AutofillSeamlessnessFillability"
      variants="AutofillSeamlessnessFillability"/>
  <token key="AutofillSeamlessnessMeasurementTime"
      variants="AutofillSeamlessnessMeasurementTime"/>
  <token key="AutofillSeamlessnessVisibility"
      variants="AutofillSeamlessnessVisibility"/>
</histogram>

<histogram
    name="Autofill.CreditCard.SelectionLatencySinceShown.CardWithIssuerId.{CardMetadataVisible}.{CardIssuerId}"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The latency between an Autofill credit card suggestion being shown, and when
    it was selected, in milliseconds. Logged immediately when a card is selected
    by the user if the card has an issuer id, and it is broken down by whether
    the selected card has card metadata available. This is also broken down by
    card issuer id. This helps identify whether showing the card metadata has
    potential impact on latency for selecting a particular card.
  </summary>
  <token key="CardMetadataVisible" variants="Autofill.CardMetadataVisible"/>
  <token key="CardIssuerId" variants="Autofill.CreditCardIssuerId"/>
</histogram>

<histogram
    name="Autofill.CreditCard.SelectionLatencySinceShown.{CardMetadataVisible}"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The latency between Autofill credit card suggestion dropdown being shown,
    and when a suggestion was selected, in milliseconds. Logged immediately when
    a card suggestion is selected by the user. Broken down by whether any card
    (not necessarily the selected card) in the suggestion list has card metadata
    available. This helps identify whether showing the card metadata has
    potential impact on assisting card selection in general.
  </summary>
  <token key="CardMetadataVisible" variants="Autofill.CardMetadataVisible"/>
</histogram>

<histogram name="Autofill.CreditCard.SyncDisabledReason"
    enum="AutofillSyncDisabledReason" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    When a credit card form is submitted and Chrome extracted a card from the
    form, Chrome runs a sequence of checks to see if it should offer upload of
    the card to Google Payments. The result of these checks are logged in the
    &quot;Autofill.CardUploadEnabled2&quot; histogram. If it results in the
    &quot;SyncServiceMissingAutofillWalletDataActiveType&quot; bucket, denoting
    that Chrome Sync was missing an active kPayments sync type, this metric
    additionally records the reason the sync type was deemed inactive. Logged at
    the time these checks happen.
  </summary>
</histogram>

<histogram
    name="Autofill.CreditCard.{CardIssuer}.SelectedWithIssuerMetadataPresentOnce"
    enum="Boolean" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true if a {CardIssuer} was selected in the suggestions. Emits false if
    a {CardIssuer} with metadata existed in the suggestions list but was not
    selected from the suggestions. Logged at the time a card selection was made.
    Logged only once per page load.
  </summary>
  <token key="CardIssuer" variants="Autofill.CreditCardIssuerId"/>
</histogram>

<histogram name="Autofill.CreditCard.{CardIssuer}.{FormEventWithMetadata}"
    enum="Boolean" expires_after="2026-06-01">
  <owner>viplavkadam@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true if a {CardIssuer}:

    1. shown in Autofill suggestions had metadata

    2. selected from Autofill suggestions had metadata

    Emits false if:

    1. every {CardIssuer} shown in Autofill suggestions did not have metadata

    2. a {CardIssuer} selected from Autofill suggestions did not have metadata

    Histograms without &quot;Once&quot; are logged every time Autofill
    suggestions that are shown or selected have an issuer id. Histograms with
    &quot;Once&quot; are logged once per page load.
  </summary>
  <token key="CardIssuer" variants="Autofill.CreditCardIssuerId"/>
  <token key="FormEventWithMetadata" variants="Autofill.FormEventWithMetadata"/>
</histogram>

<histogram
    name="Autofill.CreditCard.{CardNetwork}.SelectedWithIssuerMetadataPresentOnce"
    enum="Boolean" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true if a {CardNetwork} was selected in the suggestions. Emits false
    if a {CardNetwork} with metadata existed in the suggestions list but was not
    selected from the suggestions. Logged at the time a card selection was made.
    Logged only once per page load.
  </summary>
  <token key="CardNetwork" variants="Autofill.CreditCardNetwork"/>
</histogram>

<histogram name="Autofill.CreditCard.{CardNetwork}.{FormEventWithMetadata}"
    enum="Boolean" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true if a {CardNetwork}:

    1. shown in Autofill suggestions had metadata

    2. selected from Autofill suggestions had metadata

    Histograms without `Once` are logged every time Autofill suggestions that
    are shown or selected have an issuer id. Histograms with `Once` are logged
    once per page load.
  </summary>
  <token key="CardNetwork" variants="Autofill.CreditCardNetwork"/>
  <token key="FormEventWithMetadata" variants="Autofill.FormEventWithMetadata"/>
</histogram>

<histogram
    name="Autofill.CreditCardInfoBar{AutofillCreditCardInfoBarSaveType}{SaveType}"
    enum="AutofillCreditCardInfoBar" expires_after="2026-12-12">
  <owner>osaul@google.com</owner>
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which users accept, deny, or ignore the Autofill
    credit card info bar prompt. {AutofillCreditCardInfoBarSaveType},
    {SaveType}.
  </summary>
  <token key="AutofillCreditCardInfoBarSaveType">
    <variant name=".Local" summary="Local credit card save"/>
    <variant name=".Server" summary="Server/upload credit card save"/>
  </token>
  <token key="SaveType" variants="AutofillCreditCardSaveType"/>
</histogram>

<histogram name="Autofill.CreditCardSaveFlowResult.{SaveDestination}{SaveType}"
    enum="AutofillCreditCardSaveFlowResult" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which users accept, deny, or ignore the Autofill
    credit card prompt when card is saved to for a {SaveDestination} save,
    {SaveType}. Note that this metric concerns the result of final save, rather
    than the CTR of the prompt, and this metric should record when a decision of
    whether card will be saved or not is made.
  </summary>
  <token key="SaveDestination">
    <variant name="Local" summary="local"/>
    <variant name="Server" summary="server"/>
  </token>
  <token key="SaveType" variants="AutofillCreditCardSaveType"/>
</histogram>

<histogram name="Autofill.CreditCardsDeletedForDisuse" units="units"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>koerber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of local credit cards deleted during a major version upgrade
    because they have not been used recently enough and are expired.
  </summary>
</histogram>

<histogram name="Autofill.CreditCardsSuppressedForDisuse" units="units"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>koerber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of credit card suggestions not shown in the Autofill popup
    because they have not been used recently enough and are expired. Note that
    suppression only applies when the user has not typed any text into the
    field. If any text is in the field, all matching cards are displayed,
    regardless of how recently they have been used and their expiration status.
  </summary>
</histogram>

<histogram name="Autofill.CreditCardUpload.ConfirmationResult.{IsCardUploaded}"
    enum="AutofillSavePaymentMethodPromptResultEnum" expires_after="2026-05-10">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason for closing the save card confirmation bubble which is
    shown after the credit card upload is completed. IsCardUploaded
    ({IsCardUploaded}) indicates whether the bubble shown was for a successful
    credit card upload or not. Recorded when the confirmation bubble is closed.
  </summary>
  <token key="IsCardUploaded">
    <variant name="CardNotUploaded"
        summary="Credit card failed to be uploaded to the server."/>
    <variant name="CardUploaded"
        summary="Credit card was successfully uploaded to the server."/>
  </token>
</histogram>

<histogram name="Autofill.CreditCardUpload.ConfirmationShown.{IsCardUploaded}"
    enum="Boolean" expires_after="2026-05-10">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records if the save card confirmation bubble is shown after credit card
    upload is completed. IsCardUploaded ({IsCardUploaded}) indicates whether the
    confirmation bubble is for a successfull credit card upload or not. Recorded
    after the confirmation bubble is shown or after the decision to not show the
    confirmation bubble.
  </summary>
  <token key="IsCardUploaded">
    <variant name="CardNotUploaded"
        summary="Credit card failed to be uploaded to the server."/>
    <variant name="CardUploaded"
        summary="Credit card was successfully uploaded to the server."/>
  </token>
</histogram>

<histogram name="Autofill.CreditCardUpload.LoadingResult"
    enum="AutofillSavePaymentMethodPromptResultEnum" expires_after="2026-05-10">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason for closing the save card loading bubble which is shown
    during the credit card upload. Recorded when the loading bubble is closed.
  </summary>
</histogram>

<histogram name="Autofill.CreditCardUpload.LoadingShown" enum="Boolean"
    expires_after="2026-05-10">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records if the save card loading bubble is shown during credit card upload.
    Recorded after the loading bubble is shown or after the decision to not show
    the loading bubble.
  </summary>
</histogram>

<histogram name="Autofill.CreditCardUpload.RanLocalSaveFallback" enum="Boolean"
    expires_after="2026-05-10">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records if a new card is locally added during a local card save fallback on
    credit card upload failures. This is true when the card being saved is a new
    addition to the local cards and false when the card is identified as an
    existing local card and so isn't added to the local cards. The value is
    recorded immediately after running the local card save fallback.
  </summary>
</histogram>

<histogram name="Autofill.CvcAuth.{CardType}.Attempt" enum="BooleanAttempted"
    expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when a CVC authentication starts and does not emit any value
    otherwise. Broken down into sub-histograms based on the type of the card,
    for example virtual card or server card.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.CvcAuth.{CardType}.Result"
    enum="AutofillCvcAuthEvent" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the result of the OTP authentication, broken down into sub-histograms
    by card type. The different possible results can be found in the
    AutofillCvcAuthEvent enum, with the exception of any retriable failure,
    which is logged in a separate histogram. This histogram is 1:1 with
    Autofill.CvcAuth.{CardType}.Attempt
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.CvcAuth.{CardType}.RetryableError"
    enum="AutofillCvcAuthEvent" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs any retryable failure that occurs during the CVC authentication flow.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.CvcInfoBar.{AutofillSaveCreditCardPromptDestination}"
    enum="AutofillCreditCardInfoBar" expires_after="2026-06-01">
  <owner>yishuil@google.com</owner>
  <owner>sujiezhu@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which users accept, deny, or ignore the Autofill
    info bar prompt for saving card CVC
    {AutofillSaveCreditCardPromptDestination}.
  </summary>
  <token key="AutofillSaveCreditCardPromptDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
</histogram>

<histogram name="Autofill.CvcStorage.CvcFilling.{CardType}"
    enum="CvcFillingFlowType" expires_after="2026-06-01">
  <owner>jialihuang@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the authentication method used to fill a card that has a saved CVC.
    Logged when CVC was filled in the form.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.DataList.Events" enum="AutofillDataListEvents"
    expires_after="2026-03-01">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records different events about datalist suggestions and the parsing of data
    list options. It is emitted at different times, including during parsing
    (for the respective event), suggestion generation and popup being displayed
  </summary>
</histogram>

<histogram name="Autofill.DataUtilization.ByPossibleType"
    enum="AutofillDataUtilizationByFieldType" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records, for fields that were submitted with values that were found in the
    user's stored address profiles / credit cards, whether the field value was
    autofilled or manually entered by the user. Note that fields that were
    autofilled and then edited by the user or JavaScript count as &quot;manually
    entered&quot;. Note that fields that were submitted with a prefilled value
    don't get recorded. Emitted on form submission. Broken down by the field's
    possible types. Possible types are the field types that correspond to stored
    values which matched the field value on form submission. A field can have
    multiple possible types. This metric is recorded for every possible type.
  </summary>
</histogram>

<histogram name="Autofill.DataUtilization.{FieldState}.ByPossibleType"
    enum="AutofillDataUtilizationByFieldType" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Split between fields that had predictions and fields that did not, records
    whether they were submitted with values that were found in the user's stored
    address profiles / credit cards, whether the field value was autofilled or
    manually entered by the user. Note that fields that were autofilled and then
    edited by the user or JavaScript count as &quot;manually entered&quot;. Note
    that fields that were submitted with a prefilled value don't get recorded.
    Emitted on form submission. Broken down by the field's possible types.
    Possible types are the field types that correspond to stored values which
    matched the field value on form submission. A field can have multiple
    possible types. This metric is recorded for every possible type.
  </summary>
  <token key="FieldState">
    <variant name="AutocompleteOffHadPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns a
                 known type and the autocomplete value is off."/>
    <variant name="AutocompleteOffNoPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns an
                 unknown type and the autocomplete value is off."/>
    <variant name="GarbageHadPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns a
                 known type and the autocomplete value is unrecognized."/>
    <variant name="GarbageNoPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns an
                 unknown type and the autocomplete value is unrecognized."/>
    <variant name="HadPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns a
                 known type."/>
    <variant name="NoPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns an
                 unknown type."/>
  </token>
</histogram>

<histogram name="Autofill.DataUtilization.{FieldTypesSelection}.{FieldState}"
    enum="AutofillDataUtilization" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records, for fields that were submitted with values that were found in the
    user's stored address profiles / credit cards, whether the field value was
    autofilled or manually entered by the user. Note that fields that were
    autofilled and then edited by the user or JavaScript count as &quot;manually
    entered&quot;. Note that fields that were submitted with a prefilled value
    don't get recorded. Emitted on form submission.
  </summary>
  <token key="FieldTypesSelection">
    <variant name="AllFieldTypes"
        summary="Metrics are recorded for all field types."/>
    <variant name="SelectedFieldTypes"
        summary="Metrics are recorded for field types whose associated values
                 typically are not small numbers, i.e. less than 100."/>
  </token>
  <token key="FieldState">
    <variant name="Aggregate"
        summary="Aggregated data of all fields (within in the selection of
                 field types)."/>
    <variant name="Garbage"
        summary="Metrics are recorded if the autocomplete attribute is
                 unrecognized."/>
    <variant name="GarbageHadPrediction"
        summary="Metrics are recorded if the autocomplete attribute is
                 unrecognized and if AutofillField::Type() returns a known
                 type."/>
    <variant name="HadPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns a
                 known type."/>
    <variant name="NoPrediction"
        summary="Metrics are recorded if AutofillField::Type() returns an
                 unknown type."/>
  </token>
</histogram>

<histogram name="Autofill.DaysSinceLastUse.CreditCard" units="days"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the number of days that have passed since the credit card was last
    used.
  </summary>
</histogram>

<histogram name="Autofill.DaysSinceLastUse.Profile" units="days"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logged at the time of autofill address use, this histogram captures the
    number of days that have passed since the address was last used. I.e., the
    distribution of time between uses of an &quot;active&quot; autofill address.
  </summary>
</histogram>

<histogram
    name="Autofill.DaysSinceLastUse.StoredCreditCard{AutofillCreditCardType}"
    units="days" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the number of days that have passed since each credit card belonging to
    a given Chrome Profile was last used. This is logged for each Autofill
    credit card once per Chrome User Profile load. {AutofillCreditCardType}
  </summary>
  <token key="AutofillCreditCardType" variants="AutofillCreditCardType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Autofill.DaysSinceLastUse.StoredIban.{IbanRecordType}"
    units="days" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the number of days that have passed since each IBAN belonging to a
    given Chrome Profile was last used. This is logged for each Autofill IBAN
    once per Chrome User Profile load.
  </summary>
  <token key="IbanRecordType" variants="IbanRecordType"/>
</histogram>

<histogram name="Autofill.DaysSinceLastUse.StoredProfile.{Category}"
    units="days" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    This histogram captures the number of days that have passed since each
    stored address profile belonging to a given Chrome Profile was last used.
    This is logged for each Autofill address profile of the given category once
    per Chrome User Profile load.
  </summary>
  <token key="Category" variants="StoredProfileCategories"/>
</histogram>

<histogram name="Autofill.DaysUntilFirstUsage.Profile" units="day"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of days from saving an Autofill profile until using it
    for the first time before it got purged. Emitted on the first usage of the
    profile for filling a form.
  </summary>
</histogram>

<histogram name="Autofill.DOMContentLoadedInOutermostMainFrame" enum="Boolean"
    expires_after="2026-02-22">
  <owner>schwering@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the AutofillAgent receives a DOMContentLoaded event in an
    outermost main frame. This is useful as a denominator for timing metrics to
    see how much time is spent in a certain function per page load (where page
    includes the subframes).
  </summary>
</histogram>

<histogram name="Autofill.DriverRouter.TriggerFormExtractionExcept.Duration"
    units="microseconds" expires_after="2026-03-29">
  <owner>vincb@google.com</owner>
  <owner>schwering@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the time it takes to trigger form extraction in all frames. This
    corresponds to the duration of FormForest::TriggerFormExtractionExcept() and
    is emitted per each execution. Note that histogram samples for clients
    without high-resolution clocks are dropped.
  </summary>
</histogram>

<histogram name="Autofill.DriverRouter.TriggerFormExtractionExcept.FrameCount"
    units="frames" expires_after="2026-05-24">
  <owner>vincb@google.com</owner>
  <owner>schwering@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the number of frames on which to trigger form extraction on. This
    corresponds to the number of frames that will be iterated when calling
    FormForest::TriggerFormExtractionExcept() and is emitted per each execution.
  </summary>
</histogram>

<histogram name="Autofill.EditedAutofilledFieldAtSubmission.AddressOnTyping"
    enum="AutofilledFieldUserEditingStatus" expires_after="2026-06-19">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Emitted on form submission, for each field where an autofill address
    suggestion on typing is accepted, logs whether the filled value was changed
    between acceptance and submission time.
  </summary>
</histogram>

<histogram name="Autofill.EditedAutofilledFieldAtSubmission2.Aggregate"
    enum="AutofilledFieldUserEditingStatus" expires_after="2026-04-26">
  <owner>koerber@google.com</owner>
  <owner>battre@google.com</owner>
  <summary>
    On submission time, this metric tracks for every field that was autofilled
    if the filling was accepted or subsequently corrected. This metric is
    aggregated over all field types.
  </summary>
</histogram>

<histogram name="Autofill.EditedAutofilledFieldAtSubmission2.ByFieldType"
    enum="AutofilledFieldUserEditingStatusByFieldType"
    expires_after="2026-04-26">
  <owner>koerber@google.com</owner>
  <owner>battre@google.com</owner>
  <summary>
    On submission time, this metric tracks for every field that was autofilled
    if the filling was accepted or subsequently corrected. This metrics resolves
    the field type.
  </summary>
</histogram>

<histogram
    name="Autofill.EditedDistanceAutofilledFieldAtSubmission.AddressOnTyping"
    units="units" expires_after="2026-08-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The string distance between the filled value and the value submitted.
    Emitted on form submission for each field where an autofill address
    suggestion on typing is accepted.
  </summary>
</histogram>

<histogram
    name="Autofill.EditedPercentageAutofilledFieldAtSubmission.AddressOnTyping"
    units="%" expires_after="2026-08-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The ratio between the number of characters edited and the total length of
    the original string filled. This metric tries to measure the feature overall
    feature value. Emitted on form submission for each field where an autofill
    address suggestion on typing is accepted.
  </summary>
</histogram>

<histogram name="Autofill.EmailHeuristicOnlyAcceptance"
    enum="BooleanAutofillFillingAcceptance" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>mreichhoff@chromium.org</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    This metric is intended to mimic the Autofill.KeyMetrics.FillingAcceptance
    metric, but is recorded when the an email heuristic only form is observed.
    Counts for submitted forms whether users accepted the suggestion to fill
    values. This is counted as 'yes' if the user accepted such a suggestion at
    any time, regardless of whether other suggestions were ignored or whether
    the accepted suggestion was reverted afterwards.

    This metric is experimental and may be removed in the future.
  </summary>
</histogram>

<histogram name="Autofill.EmailPredictionCorrectness.Precision"
    enum="EmailPredictionConfusionMatrix" expires_after="2026-05-03">
  <owner>vizcay@chromium.org</owner>
  <owner>jkeitel@chromium.org</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs the precision of an EMAIL_ADDRESS field prediction. Emitted at form
    submission time for every field predicted as EMAIL_ADDRESS type.
  </summary>
</histogram>

<histogram name="Autofill.EmailPredictionCorrectness.Recall"
    enum="EmailPredictionConfusionMatrix" expires_after="2026-05-03">
  <owner>vizcay@chromium.org</owner>
  <owner>jkeitel@chromium.org</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs the recall of an EMAIL_ADDRESS field prediction. Emitted at form
    submission time for every field for which its value matches the email
    format.
  </summary>
</histogram>

<histogram name="Autofill.ErrorDialogShown" enum="AutofillErrorDialogType"
    expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>siashah@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Log when an autofill error dialog is shown to the user along with its type.
    The type here denotes the flows in which the dialog is shown. Such flows
    include virtual card retrieval, masked server card risk based authentication
    and etc. See &quot;AutofillErrorDialogType&quot; for details.
  </summary>
</histogram>

<histogram name="Autofill.ErrorDialogShown.WithServerText"
    enum="AutofillErrorDialogType" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs when an autofill error dialog is shown along with its type. The type
    here denotes the flows in which the dialog is shown. Such flows include
    virtual card retrieval, masked server card risk based authentication and
    etc. See &quot;AutofillErrorDialogType&quot; for details. This is a
    secondary histogram to the &quot;Autofill.ErrorDialogShown&quot; and it is
    logged when server side returns text to override the static client-side
    error messages to be shown in the dialog.
  </summary>
</histogram>

<histogram name="Autofill.ExpirationDateFixFlowPrompt.Events"
    enum="AutofillExpirationDateFixFlowPromptEvent" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siashah@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Events tracking the usage of the expiration date fix flow prompt. This
    prompt is triggered whenever expiration date must be explicitly requested
    from the user in order to upload the card to Google Payments.
  </summary>
</histogram>

<histogram name="Autofill.ExpirationDateFixFlowPromptShown" enum="Boolean"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siashah@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of times the expiration date fix flow prompt is shown.
  </summary>
</histogram>

<histogram name="Autofill.ExtractForm{OwnershipType}.FieldCount2"
    units="fields" expires_after="2026-02-22">
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of FormFieldData contained in FormData::fields. Emitted whenever
    a FormData is extracted in the renderer.
  </summary>
  <token key="OwnershipType">
    <variant name="Owned"
        summary="FormDatas for form controls inside HTML form tags."/>
    <variant name="Unowned" summary="FormDatas for unowned form controls."/>
  </token>
</histogram>

<histogram
    name="Autofill.FastCheckout.CapabilitiesFetcher.CacheStateForIsTriggerFormSupported"
    enum="FastCheckoutCacheStateForIsTriggerFormSupported"
    expires_after="2026-02-22">
  <owner>jkeitel@google.com</owner>
  <owner>vizcay@google.com</owner>
  <summary>
    Cache state for when a given origin and form signature are checked for their
    Fast Checkout trigger form capability.
  </summary>
</histogram>

<histogram
    name="Autofill.FastCheckout.CapabilitiesFetcher.HttpResponseAndNetErrorCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2026-02-22">
  <owner>vizcay@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The http response code or net error code returned on a query.
  </summary>
</histogram>

<histogram name="Autofill.FastCheckout.CapabilitiesFetcher.ParsingResult"
    enum="FastCheckoutCapabilitiesParsingResult" expires_after="2026-02-22">
  <owner>jkeitel@google.com</owner>
  <owner>vizcay@google.com</owner>
  <summary>
    Parsing result of the response body of a Fast Checkout capabilities fetch.
  </summary>
</histogram>

<histogram name="Autofill.FastCheckout.CapabilitiesFetcher.ResponseTime"
    units="ms" expires_after="2026-02-22">
  <owner>vizcay@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Response time for fetching FastCheckout capabilities. The time is recorded
    for both successful and failed fetches.
  </summary>
</histogram>

<histogram name="Autofill.FastCheckout.RunOutcome"
    enum="FastCheckoutRunOutcome" expires_after="2026-06-01">
  <owner>jkeitel@google.com</owner>
  <owner>vizcay@google.com</owner>
  <summary>
    The outcome of a Fast Checkout run. It is recorded when a run is completed,
    successfully or not, or when the run got cancelled, e.g. by the user closing
    the tab.
  </summary>
</histogram>

<histogram name="Autofill.FastCheckout.TriggerOutcome"
    enum="FastCheckoutTriggerOutcome" expires_after="2026-02-22">
  <owner>jkeitel@google.com</owner>
  <owner>vizcay@google.com</owner>
  <summary>
    The outcome of an attempt to trigger a FastCheckout bottomsheet for a user
    that has the feature enabled and a form on a site for which FastCheckout is
    known to be available.
  </summary>
</histogram>

<histogram name="Autofill.FieldCount" units="form fields"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>Number of fields in a form that Autofill encounters.</summary>
</histogram>

<histogram name="Autofill.FieldFillingStats.{FormType}"
    enum="FieldFillingStatus" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the status (see FieldFillingStatus) of a submitted field. Emitted once
    per field at submission time.
  </summary>
  <token key="FormType">
    <variant name="Address"/>
    <variant name="CreditCard"/>
    <variant name="PostalAddress"/>
    <variant name="StandaloneCvc"/>
    <variant name="Unknown"/>
  </token>
</histogram>

<histogram name="Autofill.FieldPrediction.PhoneNumberGrammarUsage2"
    enum="PhoneNumberGrammarUsage2" expires_after="2026-12-12">
  <owner>battre@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the index of the phone number grammar that matched. Emitted when
    parsing forms using local heuristics.
  </summary>
</histogram>

<histogram
    name="Autofill.FieldPredictionOverlap.{PerAutocompleteAttribute}.{PerActiveSource}.{PerType}"
    enum="AutofillSourcesSupersetEnum" expires_after="2026-12-12">
  <owner>doland@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Which predicted types overlapped with the submitted type. Emitted on form
    submission. Not emitted for EMPTY_TYPE and UNKNOWN_TYPE. Not emitted when
    there is more than one possible type. See
    go/field-prediction-overlap-metric-design.
  </summary>
<!-- LINT.IfChange(AutofillPredictionSources) -->

  <token key="PerAutocompleteAttribute">
    <variant name="AutocompleteAttributeAbsent"/>
    <variant name="AutocompleteAttributeAggregate"/>
    <variant name="AutocompleteAttributePresent"/>
  </token>
  <token key="PerActiveSource">
    <variant name="AutocompleteAttributeActive"/>
    <variant name="HeuristicsActive"/>
    <variant name="NoPredictionExists"/>
    <variant name="Overall"/>
    <variant name="RationalizationActive"/>
    <variant name="ServerCrowdsourcingActive"/>
    <variant name="ServerOverrideActive"/>
  </token>
  <token key="PerType" variants="AutofillFieldType">
    <variant name="AllTypes"/>
  </token>
<!-- LINT.ThenChange(/components/autofill/core/browser/autofill_field.cc:PredictionSourceTranslation) -->

</histogram>

<histogram
    name="Autofill.FieldPredictionQuality.Aggregate.Heuristic.{LabelSource}"
    enum="BooleanPredictionQualityByLabelSource" expires_after="2026-12-12">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Whether or not the heuristic type is contained in the possible types at
    submission time. Not emitted if the possible type is empty or unknown.
  </summary>
  <token key="LabelSource">
    <variant name="AriaLabel"/>
    <variant name="Combined"/>
    <variant name="DdTag"/>
    <variant name="DefaultSelectText"/>
    <variant name="DivTable"/>
    <variant name="ForId"/>
    <variant name="ForName"/>
    <variant name="ForShadowHostId"/>
    <variant name="ForShadowHostName"/>
    <variant name="LabelTag"/>
    <variant name="LiTag"/>
    <variant name="NoLabel"/>
    <variant name="OverlayingLabel"/>
    <variant name="Placeholder"/>
    <variant name="PTag"/>
    <variant name="TdTag"/>
    <variant name="Value"/>
  </token>
</histogram>

<histogram
    name="Autofill.FieldPredictionQuality.Aggregate{AutofillFieldPredictionSource}{AutofillFieldPredictionSubmissionEvent}"
    enum="AutofillFieldPredictionQuality" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Aggregate Autofill field-type prediction outcomes. See
    https://en.wikipedia.org/wiki/Confusion_matrix for an explanation of the
    values. {AutofillFieldPredictionSource}
    {AutofillFieldPredictionSubmissionEvent}
  </summary>
</histogram>

<histogram
    name="Autofill.FieldPredictionQuality.ByFieldType{AutofillFieldPredictionSource}{AutofillFieldPredictionSubmissionEvent}"
    enum="AutofillFieldPredictionQualityByFieldType" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Autofill field-type prediction outcomes, broken down by field type. See
    https://en.wikipedia.org/wiki/Confusion_matrix for an explanation of the
    values. {AutofillFieldPredictionSource}
    {AutofillFieldPredictionSubmissionEvent}
  </summary>
</histogram>

<histogram
    name="Autofill.FieldPrediction{AutofillFieldPredictionSource}{AutofillFieldPredictionSubmissionEvent}"
    units="units" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Predicted and actual form field type. This is a computed sparse histogram
    where the value is ((predicted &lt;&lt; 16)| actual). Predicted and actual
    are taken from the autofill::FieldType enumeration.
    {AutofillFieldPredictionSource} {AutofillFieldPredictionSubmissionEvent}
  </summary>
</histogram>

<histogram
    name="Autofill.FillDuration.FromInteraction.WithAutofill{AutofillFormType}"
    units="units" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Time elapsed between the user's first interaction with a form and the form's
    submission, for an autofilled form. An interaction requires changing a form
    control's value manually or via autofill. The interaction can happen on a
    different form than the one which is submitted. {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="Autofill.FillDuration.FromInteraction.WithoutAutofill{AutofillFormType}"
    units="units" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Time elapsed between the user's first interaction with a form and the form's
    submission, for a non-autofilled form. An interaction requires changing a
    form control's value manually or via autofill. The interaction can happen on
    a different form than the one which is submitted. {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Autofill.FillDuration.FromLoad.WithAutofill" units="units"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Time elapsed between form load and form submission, for an autofilled form.
  </summary>
</histogram>

<histogram name="Autofill.FillDuration.FromLoad.WithoutAutofill" units="units"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Time elapsed between form load and form submission, for a non-autofilled
    form.
  </summary>
</histogram>

<histogram name="Autofill.FilledCardInformationBubble.FieldClicked"
    enum="AutofillFilledCardInformationBubbleFieldClicked"
    expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records which field in the filled card information bubble was selected by
    the user and had its contents copied to the clipboard. Recorded on every
    click of a field in the bubble.
  </summary>
</histogram>

<histogram name="Autofill.FilledCardInformationBubble.Result.{ShowType}"
    enum="AutofillFilledCardInformationBubbleResult" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason for closing the filled card information bubble. Recorded
    when the bubble is closed.
  </summary>
  <token key="ShowType" variants="FirstShowOrReshow"/>
</histogram>

<histogram name="Autofill.FilledCardInformationBubble.Shown"
    enum="BooleanPreviouslyShown" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    This metric is recorded whenever the filled card information bubble is
    shown, after the user has just unmasked and autofilled a virtual card. It
    records whether the bubble has just appeared for the first time (false) or
    if it is being reshown due to user actions (true).
  </summary>
</histogram>

<histogram name="Autofill.Filling.DidAlternativeNameFieldRequireConversion"
    enum="BooleanYesNo" expires_after="2026-03-29">
  <owner>aayazhan@google.com</owner>
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the alternative name field requires transliteration from
    Hiragana to Katakana. It will be true if conversion is required and false
    otherwise. Recorded during the preview and field filling moment.
  </summary>
</histogram>

<histogram name="Autofill.FormEvents.CreditCard.Benefits"
    enum="CardBenefitFormEvent" expires_after="2026-06-01">
  <owner>ferny@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Autofill form events for credit card forms that contain at least one
    suggestion where a card benefit is available. This includes logging for when
    card suggestions with benefits are shown, selected, filled, and submitted,
    and logs at each of those times. Log emission pertains to all credit cards
    with card benefits available. Each CardBenefitFormEvent metric can be
    recorded once per page load.
  </summary>
</histogram>

<histogram name="Autofill.FormEvents.CreditCard.Benefits.{CardBenefitSource}"
    enum="CardBenefitFormEvent" expires_after="2026-06-01">
  <owner>ferny@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Autofill form events for credit card forms that contain at least one
    suggestion where a card benefit is available. This includes logging for when
    card suggestions with benefits are shown, selected, filled, and submitted,
    and logs at each of those times. Log emission pertains to credit cards where
    the benefit source is {CardBenefitSource}. Each CardBenefitFormEvent metric
    can be recorded once per page load.
  </summary>
  <token key="CardBenefitSource" variants="Autofill.CreditCardBenefitSource"/>
</histogram>

<histogram name="Autofill.FormEvents.CreditCard.Bnpl" enum="BnplFormEvent"
    expires_after="2026-06-01">
  <owner>yiwenqian@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    This histogram records events related to Buy Now Pay Later (BNPL)
    suggestions on credit card forms of BNPL-eligible merchant sites. It tracks
    when the BNPL suggestion is shown, selected, filled, and submitted. Each
    event log is emitted when the action occurs (suggestion shown, selected,
    etc.). Each BnplFormEvent metric can be recorded once per page load.
  </summary>
</histogram>

<histogram name="Autofill.FormEvents.CreditCard.CardInfoRetrievalEnrolled"
    enum="CardInfoRetrievalEnrolledLoggingEvent" expires_after="2026-06-01">
  <owner>jialihuang@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    These metrics log the autofill form events for card info retrieval enrolled
    card, such as when card info retrieval enrolled card suggestion(s) is/are
    shown, selected, or filled for a card info retrieval enrolled card, or the
    form is about to be submitted or submitted after a card info retrieval
    enrolled card is autofilled.
  </summary>
</histogram>

<histogram name="Autofill.FormEvents.CreditCard.SaveAndFill"
    enum="SaveAndFillFormEvent" expires_after="2026-06-01">
  <owner>averina@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    This histogram logs form events related to the Save and Fill suggestion on
    credit card forms. Logged once per page load when the suggestion is shown.
  </summary>
</histogram>

<histogram
    name="Autofill.FormEvents.CreditCard.WithBenefits.{CardBenefitSource}"
    enum="AutofillFormEvent" expires_after="2026-06-01">
  <owner>yishuil@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Autofill form events for credit card forms that contain at least one
    suggestion where a card benefit is available. This includes logging for when
    card suggestions with benefits are shown, selected, filled, and submitted,
    and logs at each of those times. Log emission pertains to credit cards where
    the benefit source is {CardBenefitSource}.
  </summary>
  <token key="CardBenefitSource" variants="Autofill.CreditCardBenefitSource"/>
</histogram>

<histogram name="Autofill.FormEvents.{AddressFormType}"
    enum="AutofillFormEvent" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>koerber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Autofill form events for {AddressFormType} forms. These are recorded when
    the user interacts with a form requesting an address.

    Important caveat about submission metrics: - Submission using autofill data
    is determined by simply evaluating if there was a fill operation in this
    page. So, if the user filled with local data, completed erased or modified
    the data after and then submitted, we would only emit one &quot;Submitted
    with server suggestion filled (once)&quot;; - The submission segmentation
    works by checking what kind of data was last filled for this type of form in
    the page load. So, if a user initially filled with local data and after that
    filled with server, we will only emit &quot;Submitted with server suggestion
    filled (once)&quot;.
  </summary>
  <token key="AddressFormType" variants="AutofillFormType.Address"/>
</histogram>

<histogram
    name="Autofill.FormEvents.{CreditCardFormType}{CreditCardDataAvailability}"
    enum="AutofillFormEvent" expires_after="2026-12-12">
  <owner>osaul@google.com</owner>
  <owner>battre@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Autofill form events for {CreditCardFormType} forms. These are recorded when
    the user interacts with a form requesting a credit card.
    {CreditCardDataAvailability}

    Important caveat about submission metrics: - Submission using autofill data
    is determined by simply evaluating if there was a fill operation in this
    page. So, if the user filled with local data, then completed, erased, or
    modified the data after and then submitted, we would only emit one
    &quot;Submitted with server suggestion filled (once)&quot;; - The submission
    segmentation works by checking what kind of data was last filled for this
    type of form in the page load. So, if a user initially filled with local
    data and after that filled with server, we will only emit &quot;Submitted
    with server suggestion filled (once)&quot;.
  </summary>
  <token key="CreditCardFormType" variants="AutofillFormType.CreditCard"/>
  <token key="CreditCardDataAvailability" variants="CreditCardDataAvailability">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Autofill.FormFillingComplexScore{AutofillFormType}"
    units="complex filling score" expires_after="2026-04-26">
  <owner>koerber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    For {AutofillFormType} logs a filling complex score on form submission that
    is calculated as following:

    Score = 10 * number_of_accepted_fields + number_of_corrected_fields

    The score resembles a two dimensional histogram to evaluate the number of
    accepted fields against the number of corrected ones. Both number of fields
    used in the score are limited to 9 to guaranteed that the score will be
    within 0 and 99 and that the significant digit corresponds to the number of
    accepted fields while the least significant digit corresponds to the number
    of corrected fields.

    The score is only emitted when there is at least one correct or accepted
    field.
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram name="Autofill.FormFillingScore{AutofillFormType}"
    units="filling score" expires_after="2026-12-12">
  <owner>battre@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    For {AutofillFormType} logs a filling score on form submission that is
    calculated as following:

    Score = 2 * number_of_accepted_fields - 3 * number_of_corrected_fields + 100

    The score is only emitted when there is at least one correct or accepted
    field.
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram name="Autofill.FormFillSuccessIOS"
    enum="BooleanAutofillFormFillSuccessIOS" expires_after="2025-12-12">
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the form was successfully filled by Autofill on iOS.
    Recorded after receiving the filling results from the renderer.
  </summary>
</histogram>

<histogram name="Autofill.FormForest.GetBrowserFormOfRendererForm.Duration"
    units="microseconds" expires_after="2026-04-26">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the time it takes to retrieve a browser form for a given renderer
    form. (A renderer form is a single frame's form, whereas a browser form may
    or may not transcend multiple frames.) This corresponds to the duration of
    FormForest::GetBrowserFormOfRendererForm() and is emitted per each
    execution. Note that histogram samples for clients without high-resolution
    clocks are dropped.
  </summary>
</histogram>

<histogram name="Autofill.FormForest.GetRendererFormsOfBrowserForm.Duration"
    units="microseconds" expires_after="2026-05-10">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the time it takes to retrieve the renderer forms for a given browser
    form. (A renderer form is a single frame's form, whereas a browser form may
    or may not transcend multiple frames.) This corresponds to the duration of
    FormForest::GetRendererFormsOfBrowserForm() and is emitted per each
    execution. Note that histogram samples for clients without high-resolution
    clocks are dropped.
  </summary>
</histogram>

<histogram name="Autofill.FormForest.UpdateTreeOfRendererForm.Duration"
    units="microseconds" expires_after="2026-05-10">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the time it takes to update Autofill's form/frame tree. This
    corresponds to the duration of FormForest::UpdateTreeOfRendererForm() and is
    emitted per each execution. Note that histogram samples for clients without
    high-resolution clocks are dropped.
  </summary>
</histogram>

<histogram name="Autofill.FormForest.UpdateTreeOfRendererForm.Visits"
    units="node-visits" expires_after="2026-04-26">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records nodes visited on a form/frame tree. This is emitted per each call of
    FormForest::UpdateTreeOfRendererForm() that actually does an entire tree
    traversal.
  </summary>
</histogram>

<histogram name="Autofill.FormsAiSettingsPage.VisitReferrer"
    enum="AutofillSettingsReferrer" expires_after="2026-09-15">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the entry point (referrer) every time the user visits the 'Forms AI'
    settings page from a tracked entry point. This metric is emitted on
    navigation to the page, with the enum values distinguishing the entry points
    (different ways of reaching the page).
  </summary>
</histogram>

<histogram name="Autofill.FormSubmission.PerProfileType"
    enum="BrowserProfileType" expires_after="2026-05-03">
  <owner>arabm@google.com</owner>
  <owner>chrome-privacy-core@google.com</owner>
  <summary>
    This histogram records the browser profile type when an autofill form is
    submitted.
  </summary>
</histogram>

<histogram
    name="Autofill.Funnel.ClassifiedAsTargetFilling.FillAfterSuggestion.Password"
    enum="BooleanAutofillFillAfterSuggestion" expires_after="2026-06-05">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users accepted any password suggestion that was shown to them
    for a given form. This metric is conditioned to those suggestions that were
    triggered via the context menu on a field that matches the target filling
    product password.

    This metric is only recorded if a suggestion for the password form was
    shown, accepted, and the suggestion was filled successfully. This is
    recorded once per navigation. It is reported as &quot;User chose to
    fill&quot; once. It does not matter if the user clears the filled values nor
    if the user accepts a different suggestion later.

    If the accepted suggestion is not filled (e.g., if it required
    authentication and the user cancelled or failed that step), then this metric
    is not recorded.
  </summary>
</histogram>

<histogram name="Autofill.Funnel.FillAfterSuggestion.{FormType}"
    enum="BooleanAutofillFillAfterSuggestion" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users accepted any autofill suggestion that was shown to them
    for a given form.

    This metric is only recorded if a suggestion for the {FormType} was shown,
    accepted, and the suggestion was filled successfully. This is recorded once
    per navigation. It is reported as &quot;User chose to fill&quot; once. It
    does not matter if the user clears the filled values nor if the user accepts
    a different suggestion later.

    If the accepted suggestion is not filled (e.g., if it required
    authentication and the user cancelled or failed that step), then this metric
    is not recorded.
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.Funnel.InteractionAfterParsedAsType.{FormType}"
    enum="BooleanAutofillInteractionAfterParsedAsType"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users interacted with a form of a certain type.

    Focusing a field is sufficient to consider a form as being interacted with.
    The user does not need to type anything. Note that some forms may get
    focused on page load.

    This metric is recorded once per form observed by Autofill, but only for
    forms that Autofill classifies to be of the type indicated by the histogram
    name. If a form changes dynamically, Autofill interprets the forms before
    and after the change as two different forms and records two values. If a
    form did not have features that classify it as a form of a certain type
    (e.g. an address form or payment form), then nothing is recorded. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram
    name="Autofill.Funnel.NotClassifiedAsTargetFilling.FillAfterSuggestion.Password"
    enum="BooleanAutofillFillAfterSuggestion" expires_after="2026-04-05">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users accepted any password suggestion that was shown to them
    for a given form. This metric is conditioned to those suggestions that were
    triggered via the context menu on a field that does not match the target
    filling product.

    This metric is only recorded if a password suggestion was shown, accepted,
    and the suggestion was filled successfully. This is recorded once per
    navigation. It is reported as &quot;User chose to fill&quot; once. It does
    not matter if the user clears the filled values nor if the user accepts a
    different suggestion later.

    If the accepted suggestion is not filled (e.g., if it required
    authentication and the user cancelled or failed that step), then this metric
    is not recorded.
  </summary>
</histogram>

<histogram name="Autofill.Funnel.ParsedAsType.{FormType}"
    enum="BooleanAutofillParsedAsType" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether a form was parsed/interpreted to be of the type indicated in
    the histogram name.

    This metric is recorded once for each form observed by Autofill. If a form
    changes dynamically, then Autofill treats the different versions of the form
    as different forms. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.Funnel.SubmissionAfterFill.{FormType}"
    enum="BooleanAutofillSubmissionAfterFill" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users submitted a form that was filled via autofill.

    This metric is recorded once for each form observed by Autofill but only for
    forms that the user filled via Autofill. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.Funnel.SuggestionAfterInteraction.{FormType}"
    enum="BooleanAutofillSuggestionAfterInteraction" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users were shown suggestions to fill the form, given that
    they have already interacted with the form.

    This metric is recorded only for forms that users interacted with. It is
    recorded only once per form, meaning that it does not matter how often the
    user sees suggestions. If a form changes dynamically, then Autofill treats
    the different versions of the form as different forms. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.HomeAndWork.ProfileFiltered" enum="BooleanFiltered"
    expires_after="2026-05-01">
  <owner>jsobiech@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Tracks whether a Home/Work profile was filtered out due to incompleteness.
    Emitted the moment Home/Work profiles are received or updated via sync.

    Since the server already checks completeness on a best-effort basis, this
    metric is not representative of the total fraction of incomplete Home/Work
    addresses.
  </summary>
</histogram>

<histogram name="Autofill.HomeAndWork.RemovedFromChrome.{Type}"
    enum="BooleanAutofillHomeAndWorkRemoved" expires_after="2026-05-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    On browser startup, emits whether the user has chosen to remove their {Type}
    address from Chrome. Only emitted for users with a {Type} address.
  </summary>
  <token key="Type">
    <variant name="Home"/>
    <variant name="Work"/>
  </token>
</histogram>

<histogram name="Autofill.HomeAndWork.SilentUpdates.Lost" units="SilentUpdates"
    expires_after="2026-05-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    On sign-out, emits the total number of silent updates to Home and Work
    addresses since the previous sign-out. Since these silent updates are not
    synced, this corresponds to the total number of silent updates lost.
  </summary>
</histogram>

<histogram name="Autofill.HomeAndWork.SilentUpdates.Performed"
    units="SilentUpdates" expires_after="2026-05-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Whenever a Home and Work address is updated, emits the total number of
    silent updates that this address has received since the last sign-out. The
    total count of this metrics puts the number of
    Autofill.HomeAndWork.SilentUpdates.Lost into perspective.
  </summary>
</histogram>

<histogram name="Autofill.HomeAndWork.SilentUpdates.Usage"
    enum="BooleanAutofillHomeAndWorkSilentUpdateUsage"
    expires_after="2026-05-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Whenever a Home and Work address is filled, logs whether this address has
    received any silent updates since the last sign-out.
  </summary>
</histogram>

<histogram name="Autofill.HomeAndWork.SuggestionPresent.{SuggestionType}"
    enum="BooleanYesNo" expires_after="2026-05-01">
  <owner>jsobiech@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Tracks the presence of a home/work profile in address suggestions at least
    once during the form interaction. Metric emitted at form submission time,
    only when a user has a home/work profile set and if at least one suggestion
    was shown.
  </summary>
  <token key="SuggestionType">
    <variant name="Home"/>
    <variant name="Work"/>
  </token>
</histogram>

<histogram name="Autofill.Iban.CountryOfSaveAcceptedIban" enum="IbanCountry"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The country code of an IBAN that was accepted to be saved. Recorded upon the
    user deciding to accept the offer to save the IBAN. This metric includes
    both local and server IBANs.
  </summary>
</histogram>

<histogram name="Autofill.Iban.CountryOfSaveOfferedIban" enum="IbanCountry"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The country code of an IBAN that was offered to be saved. Recorded upon
    deciding whether to offer save.
  </summary>
</histogram>

<histogram name="Autofill.Iban.CountryOfSelectedIban" enum="IbanCountry"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The country code of an IBAN suggestion that was selected. Recorded when the
    user clicks on the IBAN suggestion. This metric includes both local and
    server IBANs.
  </summary>
</histogram>

<histogram name="Autofill.Iban.ShowSuggestionsBlocklistDecision"
    enum="IbanSuggestionBlockListStatus" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Recorded when the user has IBANs and clicks on an IBAN form field. Logs
    whether IBAN suggestions were allowed to be shown, blocked from being shown,
    or if the blocklist was not accessible at all.
  </summary>
</histogram>

<histogram name="Autofill.Iban.Suggestions" enum="IbanSuggestionsEvent"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    These metrics are relevant to the IBAN suggestions popup, such as when it is
    shown or when a suggestion is selected. The IBAN-based suggestions popup
    gets displayed when a form's field that can be autofilled with an IBAN is
    selected, and the user has at least one IBAN saved. The metric is recorded
    upon each action, such as IBAN suggestions being shown or selected.
  </summary>
</histogram>

<histogram name="Autofill.Iban.UnmaskIbanDuration{UnmaskIbanResult}" units="ms"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Recorded at a successful return of an unmask server IBAN call. This metric
    tracks the duration from the user's click on a server IBAN suggestion to the
    successful reception of a response of unmasking a server IBAN.
  </summary>
  <token key="UnmaskIbanResult">
    <variant name="" summary="UnmaskIban request overall"/>
    <variant name=".Failure" summary="UnmaskIban request failed"/>
    <variant name=".Success" summary="UnmaskIban request succeeded"/>
  </token>
</histogram>

<histogram name="Autofill.Iban.UnmaskIbanResult" enum="Boolean"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Recorded upon receiving the response for an unmask server IBAN call. This
    metric tracks whether the unmask call succeeded or failed.
  </summary>
</histogram>

<histogram name="Autofill.IbanUpload.SaveFailed" enum="Boolean"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Indicates that an IBAN upload save failed, logged at the time of failure.
    Records true if the IBAN was able to be saved locally as a fallback, or
    false if it was not (such as in the case of an existing local IBAN).
  </summary>
</histogram>

<histogram name="Autofill.IbanUploadEnabled" enum="IbanUploadEnabledStatus"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the reason why (or why not) IBAN upload was enabled. Logged when a user
    submits a form, which triggers the check to decide whether to ask the users
    if they want to upload the IBAN.
  </summary>
</histogram>

<histogram name="Autofill.IbanUploadEnabled.{AutofillPaymentsSigninState}"
    enum="IbanUploadEnabledStatus" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the reason why (or why not) IBAN upload was enabled. Logged when a user
    submits a form, which triggers the check to decide whether to ask the users
    if they want to upload the IBAN.
  </summary>
  <token key="AutofillPaymentsSigninState"
      variants="Autofill.PaymentsSigninState"/>
</histogram>

<histogram
    name="Autofill.ImageFetcher.{AutofillImage}.OverallResultOnBrowserStart"
    enum="BooleanSuccess" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>siashah@google.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the image fetching overall result for a {AutofillImage} on browser
    startup. Logged once for each {AutofillImage} either when the fetching was
    successful or when a preset maximum number of fetching attempts were made.
    Logs true if the image was fetched successfully, and false if the image
    fetching was unsuccessful after a preset maximum number of attempts.
  </summary>
  <token key="AutofillImage" variants="AutofillImage"/>
</histogram>

<histogram name="Autofill.ImageFetcher.{AutofillImage}.Result"
    enum="BooleanSuccess" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>siashah@google.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the image fetch result of a {AutofillImage} image. Logged every time
    an attempt is made to fetch the {AutofillImage}, including retries. All
    attempts are made during browser startup. If the image was fetched
    successfully, logs true, false otherwise.
  </summary>
  <token key="AutofillImage" variants="AutofillImage"/>
</histogram>

<histogram name="Autofill.iOS.FormActivity.SendRatio" units="%"
    expires_after="2026-05-17">
  <owner>vincb@google.com</owner>
  <owner>eic@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the percentage of form activities that were really sent to the
    browser from the renderer. Recorded when the browser receives the last
    message of a batch of form activity messages. Only recorded on iOS.
  </summary>
</histogram>

<histogram
    name="Autofill.iOS.FormActivity.SubmissionDetectedBeforeProcessing.BatchSize"
    enum="CountedSubmissionType" expires_after="2025-12-30">
  <owner>vincb@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the size of the batch of form submission reports. Recorded when when
    the browser receives a batch of reports. Only recorded on iOS.
  </summary>
</histogram>

<histogram
    name="Autofill.iOS.FormActivity.SubmissionDetectedBeforeProcessing.PerType.{Source}"
    enum="CountedSubmissionType" expires_after="2025-12-30">
  <owner>vincb@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the type of form submission detected in the renderer before
    processing the submission (including throttling), split by {Source} of
    reporting. Recorded when the browser receives the form submission count
    report. Only recorded on iOS.
  </summary>
  <token key="Source">
    <variant name="FromInstant" summary="instant reporting, no throttling"/>
    <variant name="FromScheduledTask"
        summary="reporting done via a scheduled task"/>
    <variant name="FromUnloadPage" summary="reporting done on page unload"/>
  </token>
</histogram>

<histogram name="Autofill.iOS.FormActivity.{Outcome}Count" units="count"
    expires_after="2026-05-17">
  <owner>vincb@google.com</owner>
  <owner>eic@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the number of form activies observed in the renderer where
    {Outcome}. Recorded when the browser receives the last message of a batch of
    form activity messages. Only recorded on iOS.
  </summary>
  <token key="Outcome">
    <variant name="Drop" summary="form activity was dropped"/>
    <variant name="Send" summary="form activity sent to the browser"/>
  </token>
</histogram>

<histogram name="Autofill.iOS.FormExtraction.ForScan.BatchSize" units="count"
    expires_after="2026-08-24">
  <owner>vincb@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>eic@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the number of form extraction requests in a form extraction batch
    done for scanning a document, when batching is enabled. Recorded when the
    batch delayed task is run regardless of the outcome of the task (e.g. the
    task failed because the frame disappeared somewhere between scheduling and
    running).
  </summary>
</histogram>

<histogram name="Autofill.iOS.FormRemoval.RemovedUnownedFields" units="count"
    expires_after="2026-03-01">
  <owner>vincb@google.com</owner>
  <owner>eic@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records then number of removed formless fields in a form removal event.
    Recorded when a set of html forms or formless fields are removed from the
    page. Maximum number of fields recorded is 100. iOS only.
  </summary>
</histogram>

<histogram name="Autofill.iOS.FormRemoval.SubmissionDetected" enum="Boolean"
    expires_after="2026-05-03">
  <owner>vincb@google.com</owner>
  <owner>eic@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records whether a form submission was inferred after html forms or formless
    fields were removed from the page. Recorded when a set of html forms or
    formless fields are removed from the page. iOS only.
  </summary>
</histogram>

<histogram name="Autofill.iOS.FormSubmission.IsProgrammatic" enum="Boolean"
    expires_after="2026-05-24">
  <owner>eic@google.com</owner>
  <owner>vincb@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records whether an http form submission was triggered by a script (i.e.
    form.submit()). On iOS, we have to modify the prototype of HtmlFormElement
    to detect programmatic form submissions. This histogram is for tracking
    which submissions are detected through the modified prototype. Recorded when
    the browser process receives a form submission message from the renderer.
    iOS only.
  </summary>
</histogram>

<histogram name="Autofill.iOS.FormSubmission.Outcome.InvalidFormReason"
    enum="InvalidSubmittedFormReasonIOS" expires_after="2026-05-24">
  <owner>eic@google.com</owner>
  <owner>vincb@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the reason why a submitted form data was found invalid by the
    browser process. Recorded when the browser process receives a form
    submission message from the renderer. iOS only.
  </summary>
</histogram>

<histogram name="Autofill.iOS.FormSubmission.OutcomeV2"
    enum="FormSubmissionOutcomeIOS" expires_after="2026-05-24">
  <owner>eic@google.com</owner>
  <owner>vincb@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the outcome of a form submission on iOS. This histogram tracks the
    various reasons why a form submission message received by the browser
    process from the renderer may be invalid or successfully handled. Recorded
    when the browser process receives a form submission message from the
    renderer. iOS only.
  </summary>
</histogram>

<histogram name="Autofill.iOS.TriggeredFormExtractionFromDriver.{Range}"
    units="count" expires_after="2026-10-12">
  <owner>vincb@google.com</owner>
  <owner>tmartino@chromium.org</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    Records the number of form extractions that were triggered on a frame during
    its driver lifetime. Covers a {Range} of possible counts to balance between
    coverage and precision by offering different levels of granularity. Each
    driver (aka each frame), records their count. Recorded when the driver is
    deleted and if there was at least one extraction done.
  </summary>
  <token key="Range">
    <variant name="LargeRange" summary="large range of possible counts"/>
    <variant name="MediumRange" summary="medium range of possible counts"/>
    <variant name="SmallRange" summary="small range of possible counts"/>
  </token>
</histogram>

<histogram name="Autofill.IsEnabled.PageLoad" enum="BooleanEnabled"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    This includes Autofill.Address.IsEnabled.PageLoad and
    Autofill.CreditCard.IsEnabled.PageLoad, and tracks whether either profile
    Autofill or payment Autofill is enabled on page load for a page containing
    forms. It helps deduce the overlap by showing what percentage of users have
    one type of Autofill enabled but not the other.
  </summary>
</histogram>

<histogram name="Autofill.IsEnabled.Startup" enum="BooleanEnabled"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    This includes Autofill.Address.IsEnabled.Startup and
    Autofill.CreditCard.IsEnabled.Startup, and tracks whether either profile
    Autofill or payment Autofill is enabled when Chrome launches. It helps
    deduce the overlap by showing what percentage of users have one type of
    Autofill enabled but not the other.
  </summary>
</histogram>

<histogram
    name="Autofill.KeyMetrics.FillingAcceptance.GroupedByFocusedFieldType"
    enum="FillingAcceptanceByFieldType" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Emitted for submitted forms. For each field type, records whether the user
    accepted a suggestion or not from a field with that type, provided that a
    suggestion was shown for such a field.

    &quot;Foo: Accepted&quot; means that regardless how many times the user
    ignored suggestions of fields with type &quot;Foo&quot;, they accepted a
    suggestion on such a field at least once before submission.
  </summary>
</histogram>

<histogram name="Autofill.KeyMetrics.FillingAcceptance.{FormType}"
    enum="BooleanAutofillFillingAcceptance" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for submitted forms whether users accepted the suggestion to fill
    values. This is counted as 'yes' if the user accepted such a suggestion at
    any time, regardless whether other suggestions were ignored or whether the
    accepted suggestion was reverted afterwards. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.KeyMetrics.FillingAssistance.{FormType}"
    enum="BooleanAutofillFillingAssistance" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for submitted forms whether the user filled any fields via Autofill.

    If the user reverts the filling, the form is still counted as filled.

    This metric is different from Autofill.KeyMetrics.FillingAcceptance in the
    sense that the latter is only recorded if the user has actually seen a
    prompt to fill data. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.KeyMetrics.FillingCorrectness.{FormType}"
    enum="BooleanAutofillFillingCorrectness" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for submitted and autofilled forms whether users edited at least one
    filled value before submitting the form. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.KeyMetrics.FillingReadiness.{FormType}"
    enum="BooleanAutofillFillingReadiness" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for submitted forms whether Chromium had any address or payments data
    to fill.

    It does not matter whether the user actually requested to fill the data. It
    does not matter either whether the data available for filling corresponded
    to the submitted data. {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.KeyMetrics.FormSubmission.Autofilled.{FormType}"
    enum="BooleanAutofillSubmission" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for filled (by Autofill) forms whether users submitted those forms.

    This is only recorded for forms that the user filled via Autofill. It does
    not matter if the user reverted the filling afterwards.

    This is recorded once Autofill stops tracking the form (e.g. due to a
    navigation or due to removal from the DOM). {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.KeyMetrics.FormSubmission.NotAutofilled.{FormType}"
    enum="BooleanAutofillSubmission" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for not filled (by Autofill) forms whether users submitted those
    forms.

    This is only recorded for forms into which the user typed anything but did
    not fill anything. It does not matter if the user reverted what they typed.

    This is recorded once Autofill stops tracking the form (e.g. due to a
    navigation or due to removal from the DOM). {FormType}
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram name="Autofill.LabelInference.InferredLabelSource.AtSubmission2"
    enum="InferredLabelSource" expires_after="2026-03-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs how/if the label of an input was derived. Emitted at form submission
    for every field where the data the user entered matches some stored Autofill
    data.
  </summary>
</histogram>

<histogram
    name="Autofill.Leipzig.Duplication.NumberOfLocalSupersetProfilesOnStartup"
    units="Profiles" expires_after="2026-05-03">
  <owner>koerber@google.com</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the number of kLocalOrSynable profiles that are a strict superset of
    some kAccount profile. This corresponds to the number of profiles that
    cannot be automatically deduplicated, since no profiles should be silently
    deleted from the account storage. Emitted when the Chrome user profile is
    loaded.
  </summary>
</histogram>

<histogram name="Autofill.Leipzig.FillingAssistanceCategory"
    enum="AutofillCategoryResolvedFillingAssistance" expires_after="2026-05-24">
  <owner>koerber@chromium.org</owner>
  <owner>fleimgruber@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Like Autofill.KeyMetrics.FillingAssistance.Address, but split by profile
    category.
  </summary>
</histogram>

<histogram name="Autofill.Leipzig.FillingCorrectness.{Category}"
    enum="BooleanAutofillFillingCorrectness" expires_after="2026-05-24">
  <owner>koerber@chromium.org</owner>
  <owner>fleimgruber@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Like Autofill.KeyMetrics.FillingCorrectness.Address, but split by profile
    category.
  </summary>
  <token key="Category">
    <variant name="AccountChrome"
        summary="Only kAccount profiles originating from Chrome were used"/>
    <variant name="AccountHome" summary="Only a kAccountHome profile was used"/>
    <variant name="AccountNameEmail"
        summary="Only a kAccountNameEmail profile was used"/>
    <variant name="AccountNonChrome"
        summary="Only kAccount profiles originating from outside Chrome were
                 used"/>
    <variant name="AccountWork" summary="Only a kAccountWork profile was used"/>
    <variant name="Legacy" summary="Only kLegacyOrSyncable profiles were used"/>
    <variant name="Mixed"
        summary="Multiple profiles of mixed categories were used"/>
  </token>
</histogram>

<histogram name="Autofill.Leipzig.FillingReadinessCategory"
    enum="AutofillCategoryResolvedFillingReadiness" expires_after="2026-04-26">
  <owner>koerber@chromium.org</owner>
  <owner>fleimgruber@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Like Autofill.KeyMetrics.FillingReadiness.Address, but split by profile
    category.
  </summary>
</histogram>

<histogram name="Autofill.LocalHeuristics.MatchedAttribute"
    enum="AutofillMatchAttribute" expires_after="2026-02-09">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Whenever local heuristics are computed, logs the MatchAttribute that was
    used to determine the heuristic type for each field. &quot;None&quot; means
    that no parser found a classification for the field, resulting in an
    UNKNOWN_TYPE. &quot;Ambiguous&quot; means that multiple MatchAttributes
    matched for different regexes. Since local heuristics attempt to match
    regexes against the label first, this metric is skewed towards label
    matches. A match in the label doesn't imply that the name wouldn't have
    matched, but a match in name means that the label did't match.
  </summary>
</histogram>

<histogram name="Autofill.LogEvent.{LogEventTypes}" units="units"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of log events of type {LogEventTypes} which have been recorded
    until the FieldInfo metric is recorded into UKM at form submission or form
    destruction time (whatever comes first).
  </summary>
  <token key="LogEventTypes">
    <variant name="AblationEvent"
        summary="total number of AblationEvent events recorded"/>
    <variant name="All" summary="total number of all the log events recorded"/>
    <variant name="AskForValuesToFillEvent"
        summary="total number of AskForValuesToFillFieldLogEvent events
                 recorded"/>
    <variant name="AutocompleteAttributeEvent"
        summary="total number of AutocompleteAttributeFieldLogEvent events
                 recorded"/>
    <variant name="FillEvent"
        summary="total number of FillFieldLogEvent events recorded"/>
    <variant name="HeuristicPredictionEvent"
        summary="total number of HeuristicPredictionFieldLogEvent events
                 recorded"/>
    <variant name="RationalizationEvent"
        summary="total number of RationalizationFieldLogEvent events recorded"/>
    <variant name="ServerPredictionEvent"
        summary="total number of ServerPredictionFieldLogEvent events
                 recorded"/>
    <variant name="TriggerFillEvent"
        summary="total number of TriggerFillFieldLogEvent events recorded"/>
    <variant name="TypingEvent"
        summary="total number of TypingFieldLogEvent events recorded"/>
  </token>
</histogram>

<histogram name="Autofill.LoyaltyCard.EmailOrLoyaltyCardAcceptance"
    enum="AutofillEmailOrLoyaltyCardAcceptanceMetricValue"
    expires_after="2026-06-13">
  <owner>vizcay@google.com</owner>
  <owner>piotrwrotniak@google.com</owner>
  <summary>
    Metric to measure acceptance on `EMAIL_OR_LOYALTY_MEMBERSHIP_ID` fields.
    This metric is emitted every time user selects email or loyalty card
    suggestion presented for `EMAIL_OR_LOYALTY_MEMBERSHIP_ID` fields as long as
    the user has any loyalty cards available.
  </summary>
</histogram>

<histogram name="Autofill.LoyaltyCard.FillingAcceptance.Affiliated"
    enum="BooleanAutofillFillingAcceptance" expires_after="2026-05-03">
  <owner>vizcay@google.com</owner>
  <owner>tchudakov@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Like Autofill.KeyMetrics.FillingAcceptance.Address, but for affiliated
    loyalty cards.

    Counts for submitted forms whether users accepted the suggestion to fill
    values. This is counted as 'yes' if the user accepted such a suggestion at
    any time, regardless whether other suggestions were ignored or whether the
    accepted suggestion was reverted afterwards.
  </summary>
</histogram>

<histogram name="Autofill.LoyaltyCard.FillingAssistance.Affiliated"
    enum="BooleanAutofillFillingAssistance" expires_after="2026-06-01">
  <owner>vizcay@google.com</owner>
  <owner>tchudakov@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Like Autofill.KeyMetrics.FillingAssistance.Address, but for affiliated
    loyalty cards.

    Counts for submitted forms whether the user filled any fields via Autofill.
    If the user reverts the filling, the form is still counted as filled. This
    metric is different from Autofill.KeyMetrics.FillingAcceptance in the sense
    that the latter is only recorded if the user has actually seen a prompt to
    fill data.
  </summary>
</histogram>

<histogram name="Autofill.LoyaltyCard.FillingCorrectness.{Category}"
    enum="BooleanAutofillFillingCorrectness" expires_after="2026-06-01">
  <owner>vizcay@google.com</owner>
  <owner>tchudakov@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Like Autofill.KeyMetrics.FillingCorrectness.Address, but split by
    affiliation category.

    Counts for submitted and autofilled forms whether users edited at least one
    filled value before submitting the form.
  </summary>
  <token key="Category">
    <variant name="Affiliated"
        summary="Only affiliated loyalty cards were used"/>
    <variant name="Mixed"
        summary="Multiple profiles of mixed categories were used"/>
    <variant name="NonAffiliated"
        summary="Only non-affiliated loyalty cards were used"/>
  </token>
</histogram>

<histogram name="Autofill.LoyaltyCard.FillingReadinessAffiliationCategory"
    enum="AutofillLoyaltyCardAffiliationCategoryFillingReadiness"
    expires_after="2026-04-26">
  <owner>vizcay@google.com</owner>
  <owner>tchudakov@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Like Autofill.KeyMetrics.FillingReadiness.Address, but split by affiliation
    category.

    Counts for submitted forms whether Chromium had any loyalty card data to
    fill. It does not matter whether the user actually requested to fill the
    data. It does not matter either whether the data available for filling
    corresponded to the submitted data.
  </summary>
</histogram>

<histogram name="Autofill.LoyaltyCard.StoredCardsCount" units="units"
    expires_after="2026-06-01">
  <owner>vizcay@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of loyalty cards stored in Chrome, measured at Chrome profile
    launch.
  </summary>
</histogram>

<histogram name="Autofill.ManageCardsPrompt" enum="AutofillManageCardsPrompt"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The frequency of user interactions with the Manage Cards prompt, which is
    shown after a successful local card save.
  </summary>
</histogram>

<histogram
    name="Autofill.ManualFallback.ExplicitlyTriggered.ClassifiedAsTargetFilling.Password"
    enum="BooleanSelectManualFallback" expires_after="2026-04-05">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records per form type the acceptance of manual fallback suggestions on
    fields that are classified as the target filling product password. This
    tracks the number of times a user accepted/didn't accept the manual fallback
    option in the context menu. Emitted on navigation (when the
    PasswordAutofillManager is destroyed/reset), at most once per page.
  </summary>
</histogram>

<histogram
    name="Autofill.ManualFallback.ExplicitlyTriggered.NotClassifiedAsTargetFilling.Password"
    enum="BooleanSelectManualFallback" expires_after="2026-04-05">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records per form type the acceptance of manual fallback suggestions on
    fields that are either unclassified or classified differently than the
    filling product password. This tracks the number of times a user
    accepted/didn't accept the manual fallback option in the context menu.
    Emitted on navigation (when the PasswordAutofillManager is destroyed/reset),
    at most once per page.
  </summary>
</histogram>

<histogram name="Autofill.Message.{MessageType}.{Event}" enum="BooleanShown"
    expires_after="2026-06-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Emits true when an autofill Android Message event occurs (shown, dismissed,
    etc.) and does not emit any value otherwise. See event variants for
    additional details on when each individual logging event happens.
  </summary>
  <token key="MessageType">
    <variant name="SaveCardFailure"
        summary="Autofill Android Message shown after a credit card has
                 failed to have been saved to the server."/>
    <variant name="VirtualCardEnrollFailure"
        summary="Autofill Android Message shown after a virtual card has
                 failed to have been enrolled."/>
  </token>
  <token key="Event">
    <variant name="ActionClicked"
        summary="Event for when the action button on the message is clicked
                 by the user."/>
    <variant name="Dismissed"
        summary="Event for when the message is dismissed."/>
    <variant name="Shown"
        summary="Event for when the message is initially shown."/>
  </token>
</histogram>

<histogram name="Autofill.NameTokenVerificationStatusAtProfileUsage.{NameType}"
    enum="AufofillStructuredTokenVerificationStatus" expires_after="2026-04-26">
  <owner>koerber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    For each {NameType} in a given AutofillProfile, the verification status of
    the corresponding non-empty type is recorded when a profile is used to fill
    a form.
  </summary>
  <token key="NameType">
    <variant name="Any" summary="any of the following"/>
    <variant name="FirstLast" summary="the first last name of the profile"/>
    <variant name="Full" summary="the full name of the profile"/>
    <variant name="Last" summary="the last name of the profile"/>
    <variant name="Middle" summary="the middle name of the profile"/>
    <variant name="SecondLast" summary="the second last name of the profile"/>
  </token>
</histogram>

<histogram name="Autofill.NumberOfDriversPerFactory" units="count"
    expires_after="2026-04-26">
  <owner>schwering@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>vincb@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the maximum number of simultaneously existing drivers that a factory
    saw over its lifetime. Recorded on all platforms. Recorded on destruction of
    the factory, which happens on destruction of the WebContents / WebState.
  </summary>
</histogram>

<histogram name="Autofill.NumberOfFieldsPerAutofill" units="count"
    expires_after="2026-05-20">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of autofilled fields per autofill operation. Only filling
    operations that may affect multiple fields are logged (that is, no preview,
    no undo, no autocomplete, no IBANs, for example, but email-only forms
    because they are treated as address forms even if they contain a single
    field). Recorded in Chrome on all platforms.
  </summary>
</histogram>

<histogram name="Autofill.NumberOfFieldsPerAutofill.{FillTypeData}"
    units="count" expires_after="2026-05-20">
  <owner>schwering@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of autofilled fields per {FillTypeData} autofill
    operation. Only filling operations are logged (that is, no preview, no
    undo). Recorded in Chrome on all platforms.
  </summary>
  <token key="FillTypeData">
    <variant name="AutofillProfile" summary="AutofillProfile (address)"/>
    <variant name="CreditCard" summary="CreditCard"/>
    <variant name="EntityInstance" summary="EntityInstance (Autofill AI)"/>
  </token>
</histogram>

<histogram name="Autofill.NumberOfFramesPerFormForest" units="count"
    expires_after="2026-04-26">
  <owner>schwering@google.com</owner>
  <owner>vincb@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the maximum number of simultaneously existing
    `FormForest::FrameData` objects that a `AutofillDriverRouter` saw over its
    lifetime. Recorded on all platforms. Recorded on destruction of the router,
    which happens on destruction of the WebContents.
  </summary>
</histogram>

<histogram name="Autofill.NumberOfNamesMigratedToAlternativeNamesDuringCleanUp"
    units="count" expires_after="2026-05-03">
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of phonetic names that have been migrated from regular name
    fields to alternative name fields during cleanup. Emitted on every startup.
  </summary>
</histogram>

<histogram name="Autofill.NumberOfProfilesConsideredForDedupe" units="profiles"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill profiles that have been considered for deduplication.
    Emitted once per major version, if the user has at least two profiles.
  </summary>
</histogram>

<histogram name="Autofill.NumberOfProfilesRemovedDuringDedupe" units="profiles"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill profiles that have been removed during deduplication.
    Emitted once per major version, if the user has at least two profiles.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.Backend.Sms.APIError"
    enum="SmsOtpRetrievalApiErrorCode" expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Records the error encountered while attempting to retrieve sms one time
    token from the GMSCore backend. This is recorded after the asynchronous call
    comes back with an error. This is currently only recorded on Android.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.Backend.Sms.ErrorCode"
    enum="OneTimeTokensBackendErrorCode" expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Records the error encountered while attempting to retrieve sms one time
    token from the GMSCore backend. This is recorded after the asynchronous call
    comes back with an error. This is currently only recorded on Android.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.Backend.Sms.ErrorLatency" units="ms"
    expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Real-time duration of the asynchronous attempt to retrieve sms one time
    token from the GMSCore backend. Recorded when the asynchronous job failed.
    This is currently only recorded on Android.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.Backend.Sms.Success" enum="Boolean"
    expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Records whether the attempt to retrieve sms one time token from the GMSCore
    backend succeeds. Recorded when the asynchronous job has returned. This is
    currently only recorded on Android.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.Backend.Sms.SuccessLatency" units="ms"
    expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Real-time duration of the asynchronous attempt to retrieve sms one time
    token from the GMSCore backend. Only recorded when the asynchronous job has
    returned successfully. This is currently only recorded on Android.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.PhishGuard.CheckPerformed"
    enum="Boolean" expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Whether a PhishGuard check was performed before offering to autofill
    one-time tokens. Recorded every time a one-time token field is detected.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.PhishGuard.Latency" units="ms"
    expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    The latency of a PhishGuard check before offering to autofill one-time
    tokens. Recorded every time a PhishGuard check is completed.
  </summary>
</histogram>

<histogram name="Autofill.OneTimeTokens.PhishGuard.Verdict"
    enum="OneTimeTokensPhishGuardVerdict" expires_after="2026-10-31">
  <owner>luchenpeng@google.com</owner>
  <owner>koerber@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    The verdict of a PhishGuard check before offering to autofill one-time
    tokens. Recorded every time a PhishGuard check is completed.
  </summary>
</histogram>

<histogram name="Autofill.OtpAuth.{CardType}.{OtpAuthType}.Attempt"
    enum="BooleanAttempted" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when an OTP authentication starts and does not emit any value
    otherwise.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram
    name="Autofill.OtpAuth.{CardType}.{OtpAuthType}.RequestLatency.SelectChallengeOptionRequest"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the roundtrip latency of the SelectChallengeOptionRequest in the OTP
    authentication.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram
    name="Autofill.OtpAuth.{CardType}.{OtpAuthType}.RequestLatency.UnmaskCardRequest"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the roundtrip latency of the UnmaskCardRequest in the OTP
    authentication.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.OtpAuth.{CardType}.{OtpAuthType}.Result"
    enum="AutofillOtpAuthEvent" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>Logs the result of the OTP authentication.</summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.OtpAuth.{CardType}.{OtpAuthType}.RetriableError"
    enum="AutofillOtpAuthEvent" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs any retriable failure before the OTP authentication completes.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram
    name="Autofill.OtpInputDialog.{CardType}.{OtpAuthType}.ErrorMessageShown"
    enum="AutofillOtpInputDialogError" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the type of the error when any temporary error is shown in the card
    unmask OTP dialog.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram
    name="Autofill.OtpInputDialog.{CardType}.{OtpAuthType}.NewOtpRequested"
    enum="BooleanRequested" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when the &quot;Get New Code&quot; button is clicked and a new OTP
    is requested. Doesn't emit any other value.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.OtpInputDialog.{CardType}.{OtpAuthType}.Result"
    enum="AutofillOtpInputDialogResult" expires_after="2026-04-05">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the reason of the closure when the card unmask OTP dialog is closed.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram
    name="Autofill.OtpInputDialog.{CardType}.{OtpAuthType}.Result.{WithError}"
    enum="AutofillOtpInputDialogResult" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the reason of the closure when the card unmask OTP dialog is closed.
    This breaks down on whether any temporary error happened before the card
    unmask OTP dialog was closed.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
  <token key="WithError" variants="Autofill.DialogError"/>
</histogram>

<histogram name="Autofill.OtpInputDialog.{CardType}.{OtpAuthType}.Shown"
    enum="BooleanShown" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when the card unmask OTP dialog is shown. Doesn't emit any other
    value.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.OtpInputDialog.{OtpAuthType}.ErrorMessageShown"
    enum="AutofillOtpInputDialogError" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the type of the error when any temporary error is shown in the card
    unmask OTP dialog.
  </summary>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.OtpInputDialog.{OtpAuthType}.NewOtpRequested"
    enum="BooleanRequested" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when the &quot;Get New Code&quot; button is clicked and a new OTP
    is requested. Doesn't emit any other value.
  </summary>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.OtpInputDialog.{OtpAuthType}.Result"
    enum="AutofillOtpInputDialogResult" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the reason of the closure when the card unmask OTP dialog is closed.
  </summary>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.OtpInputDialog.{OtpAuthType}.Result.{WithError}"
    enum="AutofillOtpInputDialogResult" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the reason of the closure when the card unmask OTP dialog is closed.
    This breaks down on whether any temporary error happened before the card
    unmask OTP dialog was closed.
  </summary>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
  <token key="WithError" variants="Autofill.DialogError"/>
</histogram>

<histogram name="Autofill.OtpInputDialog.{OtpAuthType}.Shown"
    enum="BooleanShown" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when the card unmask OTP dialog is shown. Doesn't emit any other
    value.
  </summary>
  <token key="OtpAuthType" variants="Autofill.OtpAuth.Type"/>
</histogram>

<histogram name="Autofill.PaymentMethods.CardBenefitsIsEnabled.Startup"
    enum="BooleanEnabled" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>yishuil@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks enablement of the credit card benefits toggle on the payment methods
    settings page. This histogram will be populated during profile loadup for
    users who have enabled autofill for payment methods. A value of true denotes
    that credit card benefits are enabled for the user, while false denotes that
    they are not.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentMethods.CheckoutFlow.ReauthUsage.{PaymentMethodType}.{AuthenticationMethod}"
    enum="MandatoryReauthAuthEvent" expires_after="2026-06-01">
  <owner>sujiezhu@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the users mandatory reauth result during the checkout flow for
    opted-in users breakdown by each card type and each authentication method.
    Whenever a reauth opted-in user starts, succeeds or fails the mandatory
    reauth flow during a payments autofill form fill, we will log the
    MandatoryReauthAuthEvent to this histogram. This is logged in order to get
    the reauth usages and corresponding success rate for each breakdown. This
    subhistogram pertains to {PaymentMethodType}s that used
    {AuthenticationMethod} during the checkout flow.
  </summary>
  <token key="PaymentMethodType"
      variants="Autofill.NonInteractivePaymentMethodType"/>
  <token key="AuthenticationMethod"
      variants="Autofill.MandatoryReauth.AuthenticationMethod"/>
</histogram>

<histogram name="Autofill.PaymentMethods.CvcStorageIsEnabled.Startup"
    enum="BooleanEnabled" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the user opt-in rate for CVC storage. This histogram will be
    populated during profile loadup for users who have enabled autofill for
    payments. It is not reported for incognito profiles. A value of true denotes
    that the CVC feature is enabled, while false denotes the feature is
    disabled.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentMethods.MandatoryReauth.AuthEvent.SettingsPage.{ActionType}"
    enum="MandatoryReauthAuthEvent" expires_after="2026-06-01">
  <owner>sujiezhu@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the auth result when the user tries to {ActionType} and mandatory
    reauth feature is enabled. Whenever a user tries to {ActionType}, we will
    log into the `flow started` bucket. The user would then be challenged with
    an auth, where if the auth was successful, we will log in the `flow
    succeded` bucket, else we will log in the `flow failed` bucket.
  </summary>
  <token key="ActionType">
    <variant name="DeleteCard"
        summary="delete a card from the payment methods settings"/>
    <variant name="EditCard"
        summary="edit a card on the payment methods settings"/>
  </token>
</histogram>

<histogram
    name="Autofill.PaymentMethods.MandatoryReauth.CheckoutFlow.ReauthOfferOptInDecision2"
    enum="MandatoryReauthOfferOptInDecision" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>sujiezhu@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the detailed reason why (or why not) mandatory reauth opt-in was
    offered during a credit card checkout flow. Whenever we determine whether to
    offer the mandatory reauth opt-in prompt, we will log the decision result to
    this histogram.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentMethods.MandatoryReauth.OptChangeEvent.{Source}.{ChangingStatus}"
    enum="MandatoryReauthAuthEvent" expires_after="2026-06-01">
  <owner>sujiezhu@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the users auth result during the {ChangingStatus} flow for the
    mandatory reauth feature. Whenever a user triggers to change the mandatory
    reauth feature from the {Source}, we will log into the `flow started`
    bucket. The user would then be challenged with an auth, where if the auth
    was successful, we will log in the `flow succeded` bucket, else we will log
    in the `flow failed` bucket.
  </summary>
  <token key="Source" variants="Autofill.MandatoryReauth.Source"/>
  <token key="ChangingStatus"
      variants="Autofill.MandatoryReauth.ChangingStatus"/>
</histogram>

<histogram
    name="Autofill.PaymentMethods.MandatoryReauth.OptInBubbleOffer.{ShowType}"
    enum="MandatoryReauthOptInBubbleOffer" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks events related to offering the mandatory reauth opt-in feature, for
    instance when it is shown or why it is not shown. This metric is recorded
    when the mandatory reauth opt-in prompt is or is not displayed. Mandatory
    reauth requires the user to unlock their device or pass a biometric auth
    when autofilling payment method information.
  </summary>
  <token key="ShowType" variants="FirstShowOrReshow"/>
</histogram>

<histogram
    name="Autofill.PaymentMethods.MandatoryReauth.OptInBubbleResult.{ShowType}"
    enum="MandatoryReauthOptInBubbleResult" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the reason the mandatory reauth opt-in prompt was closed. This metric
    is recorded when the user closes the mandatory reauth opt-in prompt.
    Mandatory reauth requires the user to unlock their device or pass a
    biometric auth when autofilling payment method information.
  </summary>
  <token key="ShowType" variants="FirstShowOrReshow"/>
</histogram>

<histogram
    name="Autofill.PaymentMethods.MandatoryReauth.OptInConfirmationBubble"
    enum="MandatoryReauthOptInConfirmationBubbleMetric"
    expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks various events related to the mandatory reauth opt-in confirmation
    prompt. These metrics are recorded when the prompt is displayed or the user
    interacts with the prompt. Mandatory reauth requires the user to unlock
    their device or pass a biometric auth when autofilling payment method
    information.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentMethods.SettingsPage.StoredCreditCardCountBeforeCardAdded"
    units="cards" expires_after="2026-10-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Tracks the number of stored credit cards (both local and server) after a
    user adds a new local card through the Chrome payment methods settings page.
    The number of existing cards is calculated before saving the new card, but
    the value is recorded after saving the new card. Note that the new local
    card is not counted towards this number (i.e. if there aren't any existing
    cards when adding the new card, the &quot;cards&quot; bucket labeled 0 will
    be incremented).
  </summary>
</histogram>

<histogram name="Autofill.PaymentMethodsSettingsPage.AddCardClicked2"
    enum="Boolean" expires_after="2026-10-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Logs when the add card flow is started. Recorded when a user starts the flow
    to add a new local card through the Chrome payment methods settings page.

    Note that a previous version of this histogram incorrectly measured both add
    and edit cases, and was obsoleted in mid-June 2025.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentMethodsSettingsPage.AddCardClickedWithoutExistingCards2"
    enum="Boolean" expires_after="2026-10-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Logs true when the add card flow is started when the user does not have any
    existing cards. If the user has existing cards, this metric is logged as
    false. Recorded when a user starts the flow to add a new card through the
    Chrome payment methods settings page and they do not have any existing
    cards.

    Note that a previous version of this histogram incorrectly measured both add
    and edit cases, and was obsoleted in mid-June 2025.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentMethodsSettingsPage.CardAddedWithoutExistingCards"
    enum="Boolean" expires_after="2026-10-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Logs true when a card is saved when the user does not have any existing
    cards. If the user has existing cards, this metric is logged as false.
    Recorded when a user adds a new card through the Chrome payment methods
    settings page and they do not have any existing cards.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentMethodsSettingsPage.CardsViewedWithoutExistingCards"
    enum="Boolean" expires_after="2026-10-01">
  <owner>darwinyang@google.com</owner>
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Logs true when the cards are viewed when the user does not have any existing
    cards. If the user has existing cards, this metric is logged as false.
    Recorded only if Autofill for Payment methods is enabled, when a user either
    enters the Payment Methods Settings Page or if that page is rebuilt while
    the user is on it (e.g., if a preference toggle is changed or new payment
    methods are synced).

    Note that this metric does not care about the presence or absence of other
    payment methods (e.g., IBAN, pay over time, etc). It only measures whether
    or not there are local or server cards shown on the settings page.
  </summary>
</histogram>

<histogram name="Autofill.PaymentMethodsSettingsPage.ScanCardResult"
    enum="AutofillScanCreditCardResult" expires_after="2026-10-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Logs how (or if) the credit card scanner is used by the user in the payment
    methods settings page. Recorded when a user hits the save button to save a
    new credit card through the Chrome payment methods settings page and there
    is a credit card scanner shown to the user on the payments methods settings
    page.
  </summary>
</histogram>

<histogram name="Autofill.PaymentMethodsSettingsPage.VisitReferrer"
    enum="AutofillSettingsReferrer" expires_after="2026-09-15">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the entry point (referrer) every time the user visits the 'Payment
    methods' settings page from a tracked entry point. This metric is emitted on
    navigation to the page, with the enum values distinguishing the entry points
    (different ways of reaching the page).
  </summary>
</histogram>

<histogram name="Autofill.PaymentsDataManager.LocalCardAdded" enum="Boolean"
    expires_after="2026-02-09">
  <owner>npnavarro@google.com</owner>
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Logs when a credit card is saved locally for any reason. This includes when
    a server card upload fails, or when the user adds a new local card through
    the Chrome payment methods settings page.
  </summary>
</histogram>

<histogram
    name="Autofill.PaymentsNetworkInterface.RequestLatency.GetCardUploadDetails{Result}"
    units="ms" expires_after="2026-05-17">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Logs the roundtrip latency of a GetCardUploadDetailsRequest in the
    PaymentsNetworkInterface. This is recorded when the response is received
    (right before the callback is called).
  </summary>
  <token key="Result">
    <variant name="" summary="Includes all result types."/>
    <variant name=".Failure" summary="Failed to get the card upload details."/>
    <variant name=".Success"
        summary="Successfully got the card upload details."/>
  </token>
</histogram>

<histogram
    name="Autofill.PaymentsNetworkInterface.{PaymentsRequestType}.ClientSideTimedOut"
    enum="Boolean" expires_after="2026-03-15">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    For an API call to Google Payments servers of type {PaymentsRequestType},
    denotes whether or not that API call triggered the client-side timeout.
    Logged when the request either completes or times out on the client side,
    and only if there is a client-side timeout value specified for the given
    type.

    The non-timeout case is logged only if the request succeeds according to the
    server, to try to best measure the ratio of failed calls that are due to the
    client-side timeout.
  </summary>
  <token key="PaymentsRequestType" variants="Autofill.PaymentsRequestType"/>
</histogram>

<histogram name="Autofill.PerfectFilling.{FormType}" enum="Boolean"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    For a form of type {FormType}, log at submission time if the filling
    experience was perfect. In a perfect filling experience, the user must have
    not edited any field, meaning that the filed must either be autofilled
    without prefix-matching and without further corrections, empty, have the
    same value as pageload or have its value set by JavaScript.

    Note that the {FormType} is not mutually exclusive. If a single form
    contains both address and credit card information, the metric is recorded
    for each {FormType}. In such a combined form, both the address and the
    credit card information needs to be filled perfectly, in order to record
    perfect filling.
  </summary>
  <token key="FormType">
    <variant name="Addresses" summary="Form contains address information."/>
    <variant name="CreditCards"
        summary="Form contains credit card information."/>
  </token>
</histogram>

<histogram name="Autofill.PopupHidingReason"
    enum="AutofillSuggestionHidingReason" expires_after="2026-05-03">
  <owner>koerber@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    This tracks the reasons for which the Autofill popup disappers or cannot be
    displayed. Recorded everytime an Autofill popup disappears or cannot be
    displayed.
  </summary>
</histogram>

<histogram name="Autofill.PopupHidingReason.{FillingProduct}"
    enum="AutofillSuggestionHidingReason" expires_after="2026-05-03">
  <owner>brunobraga@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <summary>
    This tracks per filling product the reasons for which the Autofill popup
    disappers or cannot be displayed. Recorded everytime an Autofill popup
    disappears or cannot be displayed.
  </summary>
  <token key="FillingProduct" variants="Autofill.FillingProduct"/>
</histogram>

<histogram
    name="Autofill.PopupInteraction.PopupLevel.{AutofillPopupInteractionLevel}"
    enum="AutofillPopupInteraction" expires_after="2026-05-10">
  <owner>brunobraga@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <summary>
    This is emitted when {AutofillPopupInteractionLevel}. Its goal is to learn
    about user's behaviour related to the Autofill popup therefore it is only
    emitted on desktop.
  </summary>
  <token key="AutofillPopupInteractionLevel"
      variants="AutofillPopupInteractionLevel"/>
</histogram>

<histogram
    name="Autofill.PopupInteraction.PopupLevel.{AutofillPopupInteractionLevel}.{FillingProduct}"
    enum="AutofillPopupInteraction" expires_after="2026-05-17">
  <owner>brunobraga@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <summary>
    This is emitted when {AutofillPopupInteractionLevel}. This is also specific
    for a {FillingProduct}. It is emitted when the popup is shown, a suggestion
    is selected (hover) or accepted. Its goal is to learn about user's behaviour
    related to the Autofill popup therefore it is only emitted on desktop.
  </summary>
  <token key="AutofillPopupInteractionLevel"
      variants="AutofillPopupInteractionLevel"/>
  <token key="FillingProduct" variants="Autofill.FillingProduct"/>
</histogram>

<histogram name="Autofill.ProfileDeleted.ImplicitAccountNameEmail"
    enum="Boolean" expires_after="2026-06-01">
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records true when the AccountNameEmail profile gets implicitly removed,
    because of the not accepted suggestions strike limit hit. Records false if
    the suggestion contained AccountNameEmail profile, but the counter is lower
    than the removal threshold. Recorded after user leaves the page with form
    where a suggestion containing AccountNameEmail profile was shown.
  </summary>
</histogram>

<histogram name="Autofill.ProfileDeleted.{DeletionType}.{RecordType}"
    enum="BooleanAutofillDeleteAddress" expires_after="2026-05-03">
  <owner>tchudakov@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Autofill.ProfileDeleted is emitted in the following scenarios: Settings,
    Popup and KeyboardAccessory. There is also an &quot;Any&quot; bucket, which
    sums all of the above.

    {DeletionType}

    {RecordType}
  </summary>
  <token key="DeletionType">
    <variant name="Any"
        summary="This metric records how many users tried to delete an
                 address and whether they canceled or confirmed the deletion
                 (regardless of how the address was deleted)."/>
    <variant name="KeyboardAccessory"
        summary="This metric records how many users long-pressed on an
                 address suggestion button in the keyboard accessory, and
                 whether they canceled or confirmed the deletion."/>
    <variant name="Popup"
        summary="Counts how many users deleted an address using shift+delete
                 while hovering on a first-level popup. This metric is
                 emitted only for the &quot;Confirmed&quot; bucket, as the
                 user cannot cancel this process."/>
    <variant name="Settings"
        summary="This metric records how many users pressed the &quot;Delete
                 address&quot; button in chrome://settings, and whether they
                 canceled or confirmed the deletion."/>
  </token>
  <token key="RecordType" variants="AutofillProfileRecordTypes">
    <variant name="Total"
        summary="Any record type, it will contain deletions for all record
                 types."/>
  </token>
</histogram>

<histogram name="Autofill.ProfileImport.HomeAndWorkSupersetAffectedType"
    enum="AutofillSettingsVisibleTypes" expires_after="2026-05-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs that a value for a specific type was changed or added, which caused a
    home/work superset prompt to be shown. The metric is independent of the user
    decision on the prompt and recorded on form submission.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.HomeAndWorkSupersetProfileDecision"
    enum="AutofillProfileImportDecision" expires_after="2026-05-01">
  <owner>jsobiech@google.com</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the user's decision for saving a home/work profile superset. This
    metric is emitted at the end of an import process once the user-provided
    import decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.HomeOrWorkAndNameEmailMergeDecision"
    enum="AutofillProfileImportDecision" expires_after="2026-04-19">
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the user's decision for saving a merge of a home/work and a name email
    profile. This metric is emitted at the end of an import process once the
    user-provided import decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.InaccessibleFieldsRemoved.ByFieldType"
    enum="AutofillSettingsVisibleTypes" expires_after="2026-03-08">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs that a given field type was removed on import, due to being setting
    inaccessible in the imported profile's country. Emitted on profile import.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.InaccessibleFieldsRemoved.Total"
    enum="Boolean" expires_after="2026-02-22">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs if at least one field was removed on import, due to being setting
    inaccessible in the imported profile's country. Emitted on profile import.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.MigrateProfileDecision"
    enum="AutofillProfileImportDecision" expires_after="2026-05-03">
  <owner>koerber@google.com</owner>
  <owner>fleimgruber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs the user's decision for migrating a stored profile with record type
    AutofillProfile::RecordType::kLocalOrSyncable to the account storage. This
    metric is emitted at the end of an import process once the user-provided
    import decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.NameEmailSupersetProfileDecision"
    enum="AutofillProfileImportDecision" expires_after="2026-04-19">
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the user's decision for saving a name email profile superset. This
    metric is emitted at the end of an import process once the user-provided
    import decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.NewProfileDecision"
    enum="AutofillProfileImportDecision" expires_after="M126">
  <owner>koerber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Obsolete metric, replaced by Autofill.ProfileImport.NewProfileDecision2.
    Logs the user's decision for storing a new address profile observed in a
    form submission. This metric is emitted at the end of an import process once
    the user-provided import decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.NewProfileDecision2.{UserGroup}"
    enum="AutofillProfileImportDecision" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs the user's decision for storing a new address profile observed in a
    form submission. This metric is emitted at the end of an import process once
    the user-provided import decision is final.
  </summary>
  <token key="UserGroup">
    <variant name="Aggregate" summary="Aggregated data of all users."/>
    <variant name="UserHasExistingProfile"
        summary="Metrics are recorded for users who have address profiles
                 saved already."/>
    <variant name="UserHasNoExistingProfiles"
        summary="Metrics are recorded for users who don't have any address
                 profiles saved."/>
    <variant name="UserHasQuasiDuplicateProfile"
        summary="Metrics are recorded for users where an existing address
                 profile matches the import candidate after removing one
                 field."/>
  </token>
</histogram>

<histogram name="Autofill.ProfileImport.PhoneNumberParsed" enum="Boolean"
    expires_after="2026-02-10">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs if a phone number was parsed successfully on profile import. Only
    emitted when a number is present in the submitted form.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.ProfileImportType"
    enum="AutofillProfileImportType" expires_after="2026-05-03">
  <owner>koerber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    The type of an import of an address that is observed in a form submission.
    This metric is emitted once the import decision is final. This does not
    necessarily mean that the user was prompted.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.SilentUpdatesProfileImportType"
    enum="AutofillProfileImportType" expires_after="2026-04-19">
  <owner>koerber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    The type of an import of an address that is observed in a form submission
    when the form does not satisfy profile import requirements. This metric is
    emitted once the import decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.SplitZipFields.NewProfileDecision"
    enum="AutofillProfileImportDecision" expires_after="2026-05-01">
  <owner>mmaryia@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the user's decision for storing a new address profile extracted from a
    form with non-empty split zip code fields on form submission. This metric is
    emitted at the end of an import process once the user-provided import
    decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.StorageNewAddressIsSavedTo"
    enum="AutofillProfileRecordType" expires_after="2026-04-26">
  <owner>amelies@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs in which storage type the new address profile will be stored when the
    user accepted the save prompt that was shown to them after a form
    submission. This metric is emitted at the end of an import process once the
    user-provided import decision is final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.UpdateProfileAffectedType.{Decision}"
    enum="AutofillSettingsVisibleTypes" expires_after="2026-05-03">
  <owner>koerber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs that a specific type would have changed in a profile update process
    that received a specific {Decision}. The update was shown to the user
    because a profile similar to an already existing profile was observed in a
    form submission. Note that this metric collects the changed types before the
    user potentially applies additional edits. The metric is recorded on form
    submission once the user decision is final.
  </summary>
  <token key="Decision">
    <variant name="Accepted"
        summary="The user accepted the update flow from the initial prompt."/>
    <variant name="Any" summary="Any decision."/>
    <variant name="AutoDeclined"
        summary="The prompt is suppressed most likely because there is
                 already another prompt shown on the same tab."/>
    <variant name="Declined"
        summary="The user declined the update flow from the initial prompt."/>
    <variant name="EditAccepted"
        summary="The user accepted the update flow from the edit dialog."/>
    <variant name="EditDeclined"
        summary="The user declined the update flow from the edit dialog."/>
    <variant name="Ignored" summary="The user ignored the prompt."/>
    <variant name="MessageDeclined"
        summary="The user swipes away the update Message. This is only
                 relevant on mobile."/>
    <variant name="MessageTimeout"
        summary="The update message timed out before the user interacted.
                 This is only relevant on mobile."/>
    <variant name="Never"
        summary="The user selected to never save a new profile on a given
                 domain or update a specific profile (currently not
                 supported)."/>
    <variant name="Undefined" summary="Undefined"/>
    <variant name="UserNotAsked"
        summary="No prompt is shown and no decision is needed to proceed with
                 the process."/>
  </token>
</histogram>

<histogram name="Autofill.ProfileImport.UpdateProfileDecision"
    enum="AutofillProfileImportDecision" expires_after="M126">
  <owner>koerber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Obsolete metric, replaced by Autofill.ProfileImport.UpdateProfileDecision2.
    Logs the user's decision for editing an already existing address after a
    similar profile was observed in a form submission. This metric is emitted at
    the end of an import process once the user-provided import decision is
    final.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImport.UpdateProfileDecision2.{UserGroup}"
    enum="AutofillProfileImportDecision" expires_after="2026-04-19">
  <owner>koerber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs the user's decision for editing an already existing address after a
    similar profile was observed in a form submission. This metric is emitted at
    the end of an import process once the user-provided import decision is
    final.
  </summary>
  <token key="UserGroup">
    <variant name="Aggregate" summary="Aggregated data of all users."/>
    <variant name="UserHasQuasiDuplicateProfile"
        summary="Metrics are recorded for users where an existing address
                 profile matches the import candidate after removing one
                 field. The profile to be updated is not considered an
                 existing profile in the calculation of the duplication rank."/>
  </token>
</histogram>

<histogram
    name="Autofill.ProfileImport.UpdateProfileNumberOfAffectedFields.{Decision}"
    units="fields" expires_after="2026-04-26">
  <owner>koerber@google.com</owner>
  <owner>src/components/autofill/OWNERS</owner>
  <summary>
    Logs the number of fields that would be changed by an accepted update for
    any possible Decision. Note that this metric collects the number of changed
    fields before the user potentially applies additional edits. The metric is
    recorded on form submission once the user decision is final.
  </summary>
  <token key="Decision">
    <variant name="Accepted"
        summary="The user accepted the update flow from the initial prompt."/>
    <variant name="Any" summary="Any decision."/>
    <variant name="AutoDeclined"
        summary="The prompt is suppressed most likely because there is
                 already another prompt shown on the same tab."/>
    <variant name="Declined"
        summary="The user declined the update flow from the initial prompt."/>
    <variant name="EditAccepted"
        summary="The user accepted the update flow from the edit dialog."/>
    <variant name="EditDeclined"
        summary="The user declined the update flow from the edit dialog."/>
    <variant name="Ignored" summary="The user ignored the prompt."/>
    <variant name="MessageDeclined"
        summary="The user swipes away the update Message. This is only
                 relevant on mobile."/>
    <variant name="MessageTimeout"
        summary="The update message timed out before the user interacted.
                 This is only relevant on mobile."/>
    <variant name="Never"
        summary="The user selected to never save a new profile on a given
                 domain or update a specific profile (currently not
                 supported)."/>
    <variant name="Undefined" summary="Undefined"/>
    <variant name="UserNotAsked"
        summary="No prompt is shown and no decision is needed to proceed with
                 the process."/>
  </token>
</histogram>

<!-- LINT.IfChange(Autofill.ProfileImport.EditedType.ImportTypes) -->

<histogram name="Autofill.ProfileImport.{ImportType}EditedType"
    enum="AutofillSettingsVisibleTypes" expires_after="2026-06-01">
  <owner>sygiet@google.com</owner>
  <owner>pawelstus@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs that a specific type was edited in a save/update/migrate/merge prompt.
    This metric is emitted once the user-provided import decision is final.

    {ImportType}
  </summary>
  <token key="ImportType">
    <variant name="HomeAndWorkSuperset"
        summary="Logs that a specific type was edited in a home/work superset
                 prompt."/>
    <variant name="HomeWorkNameEmailMerge"
        summary="Logs that a specific type was edited in a
                 `kAccountNameEmail` and H/W superset prompt."/>
    <variant name="MigrateProfile"
        summary="Logs that a specific type was edited in a profile migration
                 prompt."/>
    <variant name="NameEmailSuperset"
        summary="Logs that a specific type was edited in a
                 `kAccountNameEmail` superset prompt."/>
    <variant name="NewProfile"
        summary="Logs that a specific type was edited in a new profile save
                 prompt that was shown to the user when a new address profile
                 is observed in a form submission."/>
    <variant name="UpdateProfile"
        summary="Logs that a specific type was edited in a profile update
                 prompt that was shown to the user when a profile similar to
                 an already existing profile was observed in a form
                 submission."/>
  </token>
</histogram>

<!-- LINT.ThenChange(/components/autofill/core/browser/metrics/profile_import_metrics.cc:GetImportTypeMetricsString) -->

<histogram name="Autofill.ProfileImportValidCandidate.ZipCode.Length"
    units="units" expires_after="2026-04-05">
  <owner>mmaryia@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the zip code length. This metric is emitted during the import process,
    after the extracted profile has been validated and passed minimal address
    requirements, but before the final import decision.
  </summary>
</histogram>

<histogram name="Autofill.ProfileImportValidCandidate.ZipCode.Separator"
    enum="AutofillZipCodeSeparators" expires_after="2026-04-05">
  <owner>mmaryia@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the specific separator character found in a zip code. This metric is
    emitted during the import process, after the extracted profile has been
    validated and passed minimal address requirements, but before the final
    import decision.
  </summary>
</histogram>

<histogram name="Autofill.ProfileTokenQuality.PerProfile" units="Percents"
    expires_after="2026-03-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The overall acceptance rate of all stored observations for the profile.
    Emitted once per profile at Chrome profile start-up.
  </summary>
</histogram>

<histogram
    name="Autofill.ProfileTokenQuality.StoredObservationsCount.PerProfile"
    units="Observations" expires_after="2026-03-01">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the total number of observations stored for a profile. Emitted once
    per profile at Chrome profile start-up.
  </summary>
</histogram>

<histogram name="Autofill.ProfileTokenQuality.StoredObservationTypes.{Type}"
    enum="AutofillProfileTokenQualityObservationType"
    expires_after="2026-05-17">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records which observation types are stored. Emitted once per profile and
    storable type at Chrome profile start-up. For additional supported types,
    consulte the metric of the corresponding storable type.
  </summary>
  <token key="Type" variants="AutofillProfile.StorableTypes"/>
</histogram>

<histogram name="Autofill.ProfileTokenQuality.{Type}" units="Percents"
    expires_after="2026-05-24">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the acceptance rate of {Type}, based on the available observations
    for it. Emitted once per profile and storeable type at Chrome profile
    start-up. For additional supported types, consulte the metric of the
    corresponding storable type.
  </summary>
  <token key="Type" variants="AutofillProfile.StorableTypes"/>
</histogram>

<histogram name="Autofill.ProfileTokenQualityScore" units="bits"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>bwolfgang@google.com</owner>
  <owner>mlerman@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the {number of observations (bits 0-3, capped at 10), quality score
    (bits 4-7), profile token (bits 8-15)} as a bitmask, if there were any
    observations. The score is an integer ranging from 0 to 10, as is the number
    of observations. Observations are from the profile that was used for
    filling. Emitted on form submission, after the profile's observations were
    updated.
  </summary>
</histogram>

<histogram name="Autofill.ProgressDialog.{FlowType}.Result"
    enum="BooleanCanceled" expires_after="2026-06-01">
  <owner>siashah@chromium.org</owner>
  <owner>siyua@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the result of the progress dialog, which can either be canceled
    (user canceled while it was in progress) or not canceled (user waited until
    confirmation). This dialog is shown in between other dialogs in a flow to
    provide a progress state to the user. If the user does not cancel it, after
    its related background task completes it moves on to the next dialog in the
    flow that it is a part of. The metric is recorded when this dialog is
    dismissed, and the result that gets logged is false if the user waited until
    confirmation or true if the user canceled the dialog.
  </summary>
  <token key="FlowType" variants="Autofill.ProgressDialog.FlowType"/>
</histogram>

<histogram name="Autofill.ProgressDialog.{FlowType}.Shown" enum="BooleanShown"
    expires_after="2026-06-01">
  <owner>siashah@chromium.org</owner>
  <owner>siyua@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records true every time the progress dialog is shown. This dialog is shown
    in between other dialogs in a payments autofill flow to provide a progress
    state to the user. If the user does not cancel it, after its related
    background task completes it moves on to the next dialog in the flow that it
    is a part of.
  </summary>
  <token key="FlowType" variants="Autofill.ProgressDialog.FlowType"/>
</histogram>

<histogram name="Autofill.PromptStatus" enum="AutofillPromptStatus"
    expires_after="2026-03-30">
  <owner>vincb@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Gives the status of the autofill prompts. Recorded when processing the
    submitted form data and only if there is enough data to display at least one
    prompt.
  </summary>
</histogram>

<histogram name="Autofill.QueriedCreditCardFormIsSecure" enum="BooleanSecure"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    For credit card forms that are queried for Autofill, a ratio of how many are
    within secure contexts (which includes mixed passive content).
  </summary>
</histogram>

<histogram name="Autofill.Query.BackoffDelay" units="ms"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The delay of a network request for a query due to exponential backoff.
  </summary>
</histogram>

<histogram name="Autofill.Query.FailingPayloadSize" units="bytes"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of bytes that were sent in a query that subsequently failed. This
    is to help determine the appropriate threshold at which autofill queries
    should switch from GET to POST, and if there are certain sizes of queries
    which are prone to failure.
  </summary>
</histogram>

<histogram name="Autofill.Query.GetUrlLength" units="bytes"
    expires_after="2026-12-12">
  <owner>doland@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>The length of url of GET request sent to Autofill Server.</summary>
</histogram>

<histogram name="Autofill.Query.HttpResponseOrErrorCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The http response code or net error code returned on a query.
  </summary>
</histogram>

<histogram name="Autofill.Query.Method" enum="AutofillQueryMethod"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>The HTTP method used to query the autofill server.</summary>
</histogram>

<histogram name="Autofill.Query.RequestDuration" units="ms"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>The duration of a network request for a query.</summary>
</histogram>

<histogram name="Autofill.Query.RequestsInLastMinute" units="requests"
    expires_after="2026-07-07">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of query requests sent to the Autofill server in a sliding
    60-second window. This is recorded with every request that is not served
    from cache.
  </summary>
</histogram>

<histogram name="Autofill.Query.WasInCache" enum="BooleanCacheHit"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Was the autofill query response retrieved from the HTTP cache.
  </summary>
</histogram>

<histogram name="Autofill.Rationalization.OnlyFillWhenFocused.Quality"
    enum="AutofillRationalizationQualityMetric" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the &quot;only_fill_when_focused&quot;-rationalization had a
    Good, Ok or Bad impact. Good means that the rationalization prevented the
    user from editing a field that would have been autofilled if the
    rationalization didn't happen. Ok means that the rationalization had no
    impact of whether the user edited the field or not. Bad means that the
    rationalization made the user edit a field (by either typing or triggering
    autofill a second time) that wouldn't have been edited if the
    rationalization didn't happen.
  </summary>
</histogram>

<histogram name="Autofill.Refill.ModifiedFieldsCount.{RefillTriggerReason}"
    units="fields" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of fields that were modified by a single refill
    operation. This metric is emitted at each triggered refill operation.
  </summary>
  <token key="RefillTriggerReason">
    <variant name="ExpirationDateFormatted"/>
    <variant name="FormChanged"/>
    <variant name="SelectOptionsChanged"/>
  </token>
</histogram>

<histogram name="Autofill.RefillTriggerReason" enum="RefillTriggerReason"
    expires_after="2026-12-12">
  <owner>jsobiech@google.com</owner>
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the reason for triggering a refill operation after a filling
    operation. This metric is recording each time a refill is triggered.
  </summary>
</histogram>

<histogram name="Autofill.RendererFillSkipReason" enum="RendererFillSkipReason"
    expires_after="2026-12-12">
  <owner>jihadghanna@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Logs the reason for skipping filling a field in the renderer. Emitted every
    time a field is passed to ShouldSkipFillField in form_autofill_util.cc.
  </summary>
</histogram>

<histogram
    name="Autofill.RendererLabeledAmountExtractionLatency.{RendererAmountExtractionLatencyResult}"
    units="ms" expires_after="2026-06-01">
  <owner>yiwenqian@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Recorded after attempting to extract a labeled amount from a web page within
    the renderer process. This metric tracks the duration from the start of the
    `ExtractLabeledTextNodeValue` method to the end of the amount extraction
    operation inside the renderer process. It specifically measures the latency
    of the amount extraction process performed by the renderer, differentiating
    if the amount was successfully extracted or not.

    The histogram `Autofill.RendererLabeledAmountExtractionLatency.Failure`
    records the latency when amount extraction fails and
    `Autofill.RendererLabeledAmountExtractionLatency.Success` records the
    latency when amount extraction succeeded. This metric aims to provide
    insight into the latency of the renderer-side amount extraction.
  </summary>
  <token key="RendererAmountExtractionLatencyResult">
    <variant name="Failure"
        summary="Labeled amount extraction latency when amount extraction
                 failed on renderer-side"/>
    <variant name="Success"
        summary="Labeled amount extraction latency when amount extraction
                 succeeded on renderer-side"/>
  </token>
</histogram>

<histogram name="Autofill.ResetAutofillPrefToChrome" enum="Boolean"
    expires_after="2026-04-05">
  <owner>friedrichh@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Clank only. Logs whether the user decided to use 3P password managers but a
    precondition prevented their use so Chrome fell back to using the built-in
    password manager. Emitted only once per cold start of Chrome when the first
    tab is created.
  </summary>
</histogram>

<histogram name="Autofill.RiskBasedAuth.{CardType}.Attempt"
    enum="BooleanAttempted" expires_after="2026-06-01">
  <owner>junhuihe@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when a risk-based authentication starts, and does not emit any
    value otherwise. Currently, ServerCard and VirtualCard support risk-based
    authentication.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.RiskBasedAuth.{CardType}.Latency" units="ms"
    expires_after="2026-06-01">
  <owner>junhuihe@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the roundtrip latency of the UnmaskCardRequest during risk-based
    authentication. It is logged when the UnmaskCardRequest is completed.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.RiskBasedAuth.{CardType}.Result"
    enum="AutofillRiskBasedAuthEvent" expires_after="2026-06-01">
  <owner>junhuihe@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the result of a risk-based unmasking process when the unmasking is
    finished (whether it succeeded or the failure reason). Broken down by the
    type of card to be unmasked.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.RiskDataLoading.Latency" units="ms"
    expires_after="2026-06-01">
  <owner>junhuihe@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the latency of risk data loading. It is logged when the loading is
    completed or timed out.
  </summary>
</histogram>

<histogram name="Autofill.SaveAndFill.CreateCard.Latency{RequestResult}"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>averina@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the latency of the CreateCard request of the Save-and-Fill flow when
    {RequestResult}. Logged when the response of the request is received.
  </summary>
  <token key="RequestResult" variants="Autofill.RequestResult"/>
</histogram>

<histogram name="Autofill.SaveAndFill.DialogResult"
    enum="SaveAndFillDialogResult" expires_after="2026-06-01">
  <owner>averina@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the user's action in the Save and Fill dialog. Logged when the user
    accepts (with or without providing a CVC) or cancels the dialog.
  </summary>
</histogram>

<histogram name="Autofill.SaveAndFill.DialogShown.{SaveType}" enum="Boolean"
    expires_after="2026-06-01">
  <owner>averina@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records when the Save and Fill dialog is shown, broken down by whether it is
    a local or upload save.
  </summary>
  <token key="SaveType">
    <variant name="Local" summary="Local save"/>
    <variant name="Upload" summary="Server save"/>
  </token>
</histogram>

<histogram name="Autofill.SaveAndFill.Funnel.{SaveType}.{Result}"
    enum="SaveAndFillFormEvent" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>averina@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records form events to calculate the Save and Fill conversion rate. Logged
    when the form is filled and when form is submitted. It has two breakdowns to
    indicate that the save is a {SaveType} and {Result}.
  </summary>
  <token key="SaveType">
    <variant name="Local" summary="local save"/>
    <variant name="Upload" summary="server save"/>
  </token>
  <token key="Result">
    <variant name="Failure" summary="save failed"/>
    <variant name="Success" summary="save succeeded"/>
  </token>
</histogram>

<histogram
    name="Autofill.SaveAndFill.GetDetailsForCreateCard.Latency{RequestResult}"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>averina@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the latency of the GetDetailsForCreateCard request of the
    Save-and-Fill flow when {RequestResult}. Logged when the response of the
    request is received.
  </summary>
  <token key="RequestResult" variants="Autofill.RequestResult"/>
</histogram>

<histogram name="Autofill.SaveAndFill.SuggestionNotShownReason"
    enum="SaveAndFillSuggestionNotShownReason" expires_after="2026-06-01">
  <owner>averina@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logged when the Save and Fill suggestion is not shown to the user,
    indicating the reason for it not being shown. Logged once per page load when
    the conditions for showing the suggestion are checked and not met.
  </summary>
</histogram>

<histogram name="Autofill.SaveCardCardholderNamePrefilled" enum="Boolean"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    If the cardholder name fix flow is shown when credit card upload is offered,
    records if the cardholder name textfield was prefilled with the name from
    the user's Google Account.
  </summary>
</histogram>

<histogram name="Autofill.SaveCardCardholderNameWasEdited" enum="Boolean"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    If the cardholder name fix flow is shown during credit card upload and the
    user accepts upload, logs whether the final cardholder name was changed from
    its prefilled value or not.
  </summary>
</histogram>

<histogram name="Autofill.SaveCardRequestExpirationDateReason"
    enum="AutofillSaveCardRequestExpirationDateReason"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason expiration date was explicitly requested from the user
    during credit card save.
  </summary>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptOffer.Android.Server.{ServerSaveSituation}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt on android is shown or not shown
    for a card to be saved as a server card, which {ServerSaveSituation}. Is
    emitted whenever card save is offered or decision to not offer is made.
  </summary>
  <token key="ServerSaveSituation" variants="AutofillServerSaveCardSituation"/>
</histogram>

<histogram name="Autofill.SaveCreditCardPromptOffer.Android.{SaveDestination}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt on android is shown or not shown
    for a card to be saved as a {SaveDestination} card. Is emitted whenever card
    save is offered or decision to not offer is made.
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptOffer.Android.{SaveDestination}.{SaveSituation}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt on android is shown or not shown
    for a card to be saved as a {SaveDestination} card, when {SaveSituation}. Is
    emitted whenever card save is offered or decision to not offer is made.
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
  <token key="SaveSituation" variants="AutofillSaveCardSituation"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptOffer.Desktop.Server.{ServerSaveSituation}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt on desktop is shown or not shown
    for a card to be saved as a server card, which {ServerSaveSituation}. Is
    emitted whenever card save is offered or decision to not offer is made. Not
    logged for prompt re-shows (e.g., prompt reshown from the omnibox icon on
    desktop).
  </summary>
  <token key="ServerSaveSituation" variants="AutofillServerSaveCardSituation"/>
</histogram>

<histogram name="Autofill.SaveCreditCardPromptOffer.Desktop.{SaveDestination}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt on desktop is shown or not shown
    for a card to be saved as a {SaveDestination} card. Is emitted whenever card
    save is offered or decision to not offer is made. Not logged for prompt
    re-shows (e.g., prompt reshown from the omnibox icon on desktop).
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptOffer.Desktop.{SaveDestination}.{SaveSituation}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt on desktop is shown or not shown
    for a card to be saved as a {SaveDestination} card, when {SaveSituation}. Is
    emitted whenever card save is offered or decision to not offer is made. Not
    logged for prompt re-shows (e.g., prompt reshown from the omnibox icon on
    desktop).
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
  <token key="SaveSituation" variants="AutofillSaveCardSituation"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptOffer.IOS.{SaveDestination}.{OverlayType}.NumStrikes.{Strikes}.{FixFlow}{SaveCardWithCvcSituation}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>yiwenqian@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt of the type {OverlayType} on iOS is
    shown or not shown for a card to be saved as a {SaveDestination} card, with
    {Strikes} and which required {FixFlow}, and this card is
    {SaveCardWithCvcSituation}. Is emitted whenever card save is offered or
    decision to not offer is made.
  </summary>
  <token key="OverlayType" variants="AutofillSaveCardPromptOverlayTypeForIos"/>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
  <token key="Strikes">
    <variant name="0" summary="0 strikes"/>
    <variant name="1" summary="1 strike"/>
    <variant name="2" summary="2 strikes"/>
  </token>
  <token key="FixFlow">
    <variant name="NoFixFlow" summary="no fix flow"/>
    <variant name="RequestingCardHolderName" summary="only card holder name"/>
    <variant name="RequestingCardHolderNameAndExpiryDate"
        summary="card holder name and expiry date"/>
    <variant name="RequestingExpiryDate" summary="only expiry date"/>
  </token>
  <token key="SaveCardWithCvcSituation"
      variants="AutofillSaveCardWithCvcSituation"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptOffer.IOS.{SaveDestination}.{OverlayType}{SaveCardWithCvcSituation}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>yiwenqian@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt of the type {OverlayType} on iOS is
    shown or not shown for a card to be saved as a {SaveDestination} card, and
    this card is {SaveCardWithCvcSituation}. Is emitted whenever card save is
    offered or decision to not offer is made.
  </summary>
  <token key="OverlayType" variants="AutofillSaveCardPromptOverlayTypeForIos"/>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
  <token key="SaveCardWithCvcSituation"
      variants="AutofillSaveCardWithCvcSituation"/>
</histogram>

<histogram name="Autofill.SaveCreditCardPromptOffer.{SaveDestination}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the save credit card prompt is shown or not shown for a card to
    be saved as a {SaveDestination} card. Is emitted whenever card save is
    offered or decision to not offer is made. Not logged for prompt re-shows
    (e.g., prompt reshown from the omnibox icon on desktop).
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptOffer.{SaveDestination}.{ShowType}{SaveType}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which the Autofill save credit card prompt is
    shown or not to save a credit card {SaveDestination}, {SaveType}. Logged
    when the flow is triggered and the decision of whether or not to offer
    credit card save is made. It was a {ShowType}.
  </summary>
  <token key="SaveDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
  <token key="ShowType" variants="FirstShowOrReshow"/>
  <token key="SaveType" variants="AutofillCreditCardSaveType"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptResult.Desktop.Server.{ServerSaveSituation}"
    enum="AutofillSaveCardPromptResultDesktopEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs how the user interacts with the save credit card prompt for a card to
    be saved as a server card, which {ServerSaveSituation}. Is emitted as soon
    as user accepts or when the prompt closes. Not logged for prompt re-shows
    (e.g., prompt reshown from the omnibox icon).
  </summary>
  <token key="ServerSaveSituation" variants="AutofillServerSaveCardSituation"/>
</histogram>

<histogram name="Autofill.SaveCreditCardPromptResult.Desktop.{SaveDestination}"
    enum="AutofillSaveCardPromptResultDesktopEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs how the user interacts with the save credit card prompt for a card to
    be saved as a {SaveDestination} card. Is emitted as soon as user accepts or
    when the prompt closes. Not logged for prompt re-shows (e.g., prompt reshown
    from the omnibox icon on desktop).
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptResult.Desktop.{SaveDestination}.{SaveSituation}"
    enum="AutofillSaveCardPromptResultDesktopEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs how the user interacts with the save credit card prompt for a card to
    be saved as a {SaveDestination} card, when {SaveSituation}. Is emitted as
    soon as user accepts or when the prompt closes. Not logged for prompt
    re-shows (e.g., prompt reshown from the omnibox icon on desktop).
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
  <token key="SaveSituation" variants="AutofillSaveCardSituation"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptResult.Desktop.{SaveDestination}.{UserGroup}"
    enum="AutofillSaveCardPromptResultDesktopEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs how the user interacts with the save credit card prompt for a card to
    be saved as a {SaveDestination} card, with {UserGroup}. Is emitted as soon
    as user accepts or when the prompt closes. Not logged for prompt re-shows
    (e.g., prompt reshown from the omnibox icon on desktop).
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
  <token key="UserGroup">
    <variant name="UserHasNoCards"
        summary="data aggregated across users who don't have credit cards
                 saved"/>
    <variant name="UserHasSavedCards"
        summary="data aggregated across users who have credit cards saved
                 already."/>
  </token>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptResult.IOS.{SaveDestination}.{OverlayType}.NumStrikes.{Strikes}.{FixFlow}{SaveType}"
    enum="SaveCreditCardPromptResultIOS" expires_after="2026-04-26">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which the credit card prompt on iOS of the type
    {OverlayType} is shown and user's subsequent action (accepted, denied or
    ignored) taken for that prompt for a card to be saved as a {SaveDestination}
    card with {Strikes} and which required {FixFlow}. The prompt is shown when
    {SaveType}. Is emitted every time the prompt is shown or not shown and for
    any action taken when shown.
  </summary>
  <token key="OverlayType">
    <variant name="Banner" summary="InfoBar Banner"/>
    <variant name="BottomSheet" summary="BottomSheet"/>
    <variant name="Modal" summary="InfoBar Modal"/>
  </token>
  <token key="SaveDestination">
    <variant name="Local" summary="local"/>
    <variant name="Server" summary="server"/>
  </token>
  <token key="Strikes">
    <variant name="0" summary="0 strikes"/>
    <variant name="1" summary="1 strike"/>
    <variant name="2" summary="2 strikes"/>
  </token>
  <token key="FixFlow">
    <variant name="NoFixFlow" summary="no fix flow"/>
    <variant name="RequestingCardHolderName" summary="only card holder name"/>
    <variant name="RequestingCardHolderNameAndExpiryDate"
        summary="card holder name and expiry date"/>
    <variant name="RequestingExpiryDate" summary="only expiry date"/>
  </token>
  <token key="SaveType" variants="AutofillCreditCardSaveType"/>
</histogram>

<histogram name="Autofill.SaveCreditCardPromptResult.{SaveDestination}"
    enum="AutofillSaveCardPromptResultEnum" expires_after="2026-06-01">
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs whether the user accepts or closes/denies the save credit card prompt
    for a card to be saved as a {SaveDestination} card. Not logged for prompt
    re-shows (e.g., prompt reshown from the omnibox icon on desktop).
  </summary>
  <token key="SaveDestination" variants="AutofillSaveCardDestination"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptResult.{SaveDestination}.{ShowType}{SaveType}"
    enum="AutofillSavePaymentMethodPromptResultEnum" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which (and how) users accept or deny the
    Autofill save credit card prompt to save credit card {SaveDestination}.
    Logged when the prompt closes.
  </summary>
  <token key="SaveDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
  <token key="ShowType" variants="FirstShowOrReshow"/>
  <token key="SaveType" variants="AutofillCreditCardSaveType"/>
</histogram>

<histogram
    name="Autofill.SaveCreditCardPromptResult.{SaveDestination}.{UserGroup}"
    enum="AutofillSavePaymentMethodPromptResultEnum" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which users accept or deny the Autofill save
    credit card prompt to save credit card {SaveDestination}. Only first shows
    are recorded. Logged when the prompt closes.
  </summary>
  <token key="SaveDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
  <token key="UserGroup">
    <variant name="Aggregate" summary="Aggregated data of all users."/>
    <variant name="UserHasNoCards"
        summary="Metrics are recorded for users who don't have any credit
                 cards saved."/>
    <variant name="UserHasSavedCards"
        summary="Metrics are recorded for users who have credit cards saved
                 already."/>
  </token>
</histogram>

<histogram
    name="Autofill.SaveCvcPromptOffer.IOS.{AutofillSaveCreditCardPromptDestination}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>yiwenqian@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which the Autofill save CVC prompt is shown or
    not to save CVC {AutofillSaveCreditCardPromptDestination} on iOS. Logged
    when the flow is triggered and the prompt should be shown.
  </summary>
  <token key="AutofillSaveCreditCardPromptDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
</histogram>

<histogram
    name="Autofill.SaveCvcPromptOffer.{AutofillSaveCreditCardPromptDestination}.{ShowType}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which the Autofill save CVC prompt is shown or
    not to save CVC {AutofillSaveCreditCardPromptDestination}. Logged when the
    flow is triggered and the prompt should be shown. It was a {ShowType}.
  </summary>
  <token key="AutofillSaveCreditCardPromptDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
  <token key="ShowType" variants="FirstShowOrReshow"/>
</histogram>

<histogram
    name="Autofill.SaveCvcPromptResult.IOS.{AutofillSaveCreditCardPromptDestination}"
    enum="AutofillSavePaymentMethodPromptResultEnum" expires_after="2026-06-01">
  <owner>yiwenqian@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which users accept or deny the Autofill save CVC
    prompt on iOS to save CVC {AutofillSaveCreditCardPromptDestination}. Logged
    when the prompt closes.
  </summary>
  <token key="AutofillSaveCreditCardPromptDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
</histogram>

<histogram
    name="Autofill.SaveCvcPromptResult.{AutofillSaveCreditCardPromptDestination}.{ShowType}"
    enum="AutofillSavePaymentMethodPromptResultEnum" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The relative frequency with which users accept or deny the Autofill save CVC
    prompt to save CVC {AutofillSaveCreditCardPromptDestination}. Logged when
    the prompt closes. It was a {ShowType}.
  </summary>
  <token key="AutofillSaveCreditCardPromptDestination"
      variants="AutofillSaveCreditCardPromptDestination"/>
  <token key="ShowType" variants="FirstShowOrReshow"/>
</histogram>

<histogram name="Autofill.SaveIbanPromptOffer.{IbanTypeToBeSaved}.{ShowType}"
    enum="AutofillSavePaymentMethodPromptOfferEnum" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records every time the save IBAN bubble or omnibox icon (due to maxstrike
    reached) is offered to the user, broken down by destination and show type.
    On Android, the ShowType is only logged as &quot;FirstShow&quot; since there
    is no option to retrigger the prompt or reshow it once dismissed.
  </summary>
  <token key="IbanTypeToBeSaved" variants="IbanTypeToBeSaved"/>
  <token key="ShowType" variants="FirstShowOrReshow"/>
</histogram>

<histogram
    name="Autofill.SaveIbanPromptResult.{IbanTypeToBeSaved}.SavedWithNickname"
    enum="Boolean" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records when the user accepts the bubble to save an IBAN, with or without
    nickname.
  </summary>
  <token key="IbanTypeToBeSaved" variants="IbanTypeToBeSaved"/>
</histogram>

<histogram name="Autofill.SaveIbanPromptResult2.{IbanTypeToBeSaved}.{ShowType}"
    enum="AutofillSavePaymentMethodPromptResultEnum" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records when the user makes a decision on the save IBAN bubble, broken down
    by destinations. On Android, the ShowType is only logged as
    &quot;FirstShow&quot; since there is no option to retrigger the prompt or
    reshow it once dismissed.
  </summary>
  <token key="IbanTypeToBeSaved" variants="IbanTypeToBeSaved"/>
  <token key="ShowType" variants="FirstShowOrReshow"/>
</histogram>

<histogram name="Autofill.ScanCreditCard.Completed" enum="BooleanCompleted"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>Whether a credit card scan was completed or cancelled.</summary>
</histogram>

<histogram name="Autofill.ScanCreditCard.Duration{CreditCardScanSuccess}"
    units="ms" expires_after="2026-10-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    How long a credit card took to scan. {CreditCardScanSuccess}
  </summary>
  <token key="CreditCardScanSuccess">
    <variant name=""/>
    <variant name="_Cancelled" summary="Credit card scan was cancelled."/>
    <variant name="_Completed" summary="Credit card scan completed."/>
  </token>
</histogram>

<histogram name="Autofill.ScanCreditCardPrompt"
    enum="AutofillScanCreditCardPrompt" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>koerber@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>Usage of the &quot;Scan card&quot; control item.</summary>
</histogram>

<histogram name="Autofill.ServerCardLinkClicked" enum="AutofillSyncState"
    expires_after="2026-12-12">
  <owner>osaul@google.com</owner>
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logged when the user clicks on the server credit card link in the settings
    page.
  </summary>
</histogram>

<histogram name="Autofill.ServerCardUnmask.{CardType}.Attempt"
    enum="BooleanAttempted" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when a server card unmasking process starts and does not emit any
    value otherwise.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.ServerCardUnmask.{CardType}.FormSubmission"
    enum="BooleanSubmitted" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when a form is submitted with information fetched in a server
    card unmasking process, and does not emit any value otherwise.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.ServerCardUnmask.{CardType}.Result.{FlowType}"
    enum="AutofillServerCardUnmaskResult" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the result of a server card unmasking process when the unmasking is
    finished (whether it succeeded or otherwise reason of the failure). It
    includes the type of the card to be unmasked and the flow type (what
    authentication used) in the unmasking.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="FlowType" variants="Autofill.ServerCardUnmaskFlowType"/>
</histogram>

<histogram name="Autofill.ServerIbanLinkClicked" enum="AutofillSyncState"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the sync state when the user clicks on a server IBAN's [Edit in Google
    Pay] link.
  </summary>
</histogram>

<histogram name="Autofill.ServerQueryResponse" enum="AutofillQueryResult"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>The usefulness of Autofill server information.</summary>
</histogram>

<histogram name="Autofill.ServerResponseHasDataForForm"
    enum="BooleanHadPredictions" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Tracks whether Autofill server had at least some prediction data for a given
    form at query response time.
  </summary>
</histogram>

<histogram name="Autofill.Settings.AutofillOptionsReferrerAndroid"
    enum="AutofillOptionsReferrer" expires_after="2026-04-26">
  <owner>friedrichh@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records which entry point opened the Autofill Options screen. Recorded on
    Android.
  </summary>
</histogram>

<histogram name="Autofill.Settings.AutofillOptionsRestartAccepted"
    enum="Boolean" expires_after="2026-12-12">
  <owner>friedrichh@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records true whenever the user confirms changing the third party autofill
    experience with a restart. Records false whenever the user dismisses the
    restart prompt. Since a restart is always required, users may be opting in
    or out of 3P suggestions while they are faced with this restart prompt.
    Recorded when the user flips the toggle in the autofill options settings.
    Recorded only on Android.
  </summary>
</histogram>

<histogram name="Autofill.Settings.EditAddress"
    enum="BooleanAutofillEditAddress" expires_after="2026-05-03">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    This metric measures how many users clicked on the edit option from the
    settings page and what their next action was. The metric is logged when the
    user closes the edit address profile dialog, either after saving an updated
    profile or after canceling.
  </summary>
</histogram>

<histogram name="Autofill.Settings.EditedAlternativeNameContainsASeparator"
    enum="BooleanYesNo" expires_after="2026-04-26">
  <owner>jsobiech@google.com</owner>
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether the alternative name field saved from an address editor form
    has a separator present. Recorded when the user saves or updates an existing
    address in the autofill options settings. Only applicable on Desktop.
  </summary>
</histogram>

<histogram name="Autofill.Settings.ToggleUseThirdPartyFilling" enum="Boolean"
    expires_after="2026-04-26">
  <owner>friedrichh@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records true whenever the user opts into the third party autofill
    experience. Records false whenever they switch back to the default,
    Chrome-provided autofill experience. Recorded when the user flips the toggle
    in the autofill options settings.
  </summary>
</histogram>

<histogram name="Autofill.SettingsPage.BnplToggled" enum="Boolean"
    expires_after="2026-06-01">
  <owner>wilsonlow@google.com</owner>
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks user enablement of the buy-now-pay-later feature by flipping the
    pay-over-time toggle in the payment methods settings page. Records true when
    the user switches on buy-now-pay-later. Records false when the user switches
    off buy-now-pay-later. Recorded at the time of the user clicking the toggle
    in the settings page.
  </summary>
</histogram>

<histogram name="Autofill.SettingsPage.ButtonClicked.{CardType}.{Button}"
    enum="BooleanAttempted" expires_after="2026-06-01">
  <owner>siashah@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true whenever {Button} is clicked in the mobile {CardType} edit page.
    Never emits false.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="Button">
    <variant name="EditCard" summary="the edit button"/>
    <variant name="Enroll" summary="the enroll button"/>
    <variant name="Unenroll" summary="the unenroll button"/>
  </token>
</histogram>

<histogram name="Autofill.SettingsPage.LocalIbanActions"
    enum="AutofillPaymentMethodsActionEnum" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>averina@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records user interactions with local IBANs on the Chrome payment methods
    settings page.
  </summary>
</histogram>

<histogram name="Autofill.SharedStorageServerCardDataSetResult"
    enum="AutofillSharedStorageServerCardDataSetResult"
    expires_after="2025-04-20">
  <owner>npnavarro@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the shared storage Set operation result that is returned from the
    SharedStorageManager, each time the cached autofill server credit card
    information is updated and inserted into the shared storage database,
    implemented in ContentAutofillSharedStorageHandler. SharedStorageManager
    provides the API to update the Shared Storage database, which enables
    privacy-preserving cross-site data storage.
  </summary>
</histogram>

<histogram name="Autofill.SkippingFormFillDueToChangedFieldCount"
    enum="Boolean" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether an autofill operation was skipped because the number of
    fields to be filled is different than that number of fields registered in
    the form cache.
  </summary>
</histogram>

<histogram name="Autofill.Snackbar.{SnackbarType}.ActionClicked"
    enum="BooleanShown" expires_after="2026-06-01">
  <owner>siashah@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>darwinyang@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Emits true when the action button on the autofill snackbar is clicked and
    does not emit any value otherwise.
  </summary>
  <token key="SnackbarType" variants="Autofill.Snackbar.Type"/>
</histogram>

<histogram name="Autofill.Snackbar.{SnackbarType}.Shown" enum="BooleanShown"
    expires_after="2026-06-01">
  <owner>siashah@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>darwinyang@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Emits true when the autofill snackbar is displayed and does not emit any
    value otherwise.
  </summary>
  <token key="SnackbarType" variants="Autofill.Snackbar.Type"/>
</histogram>

<histogram name="Autofill.StoredCreditCardCount.Server.WithCardArtImage"
    units="units" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of server cards with a valid card art image, measured at Chrome
    profile launch.
  </summary>
</histogram>

<histogram name="Autofill.StoredCreditCardCount.Server.WithVirtualCardMetadata"
    units="units" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of server cards with virtual card metadata, measured at Chrome
    profile launch.
  </summary>
</histogram>

<histogram name="Autofill.StoredCreditCardCount{AutofillCreditCardType}"
    units="cards" expires_after="2026-12-12">
  <owner>osaul@google.com</owner>
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of credit cards a user has stored, measured at Chrome profile
    launch time. {AutofillCreditCardType}
  </summary>
  <token key="AutofillCreditCardType" variants="AutofillCreditCardType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Autofill.StoredCreditCardDisusedCount{AutofillCreditCardType}"
    units="cards" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of disused credit cards a user has stored, measured at Chrome
    profile launch time. This is only reported for users who have at least one
    stored credit card. {AutofillCreditCardType}
  </summary>
  <token key="AutofillCreditCardType" variants="AutofillCreditCardType">
    <variant name=""/>
  </token>
</histogram>

<histogram name="Autofill.StoredIbanCount" units="ibans"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of local and server IBANs a user has stored, measured at Chrome
    profile launch time. It's logged once per profile load.
  </summary>
</histogram>

<histogram name="Autofill.StoredIbanCount.{IbanRecordType}" units="ibans"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of local or server IBANs a user has stored, measured at Chrome
    profile launch time. It's logged once per profile load.
  </summary>
  <token key="IbanRecordType" variants="IbanRecordType"/>
</histogram>

<histogram name="Autofill.StoredIbanCount.{IbanRecordType}.WithNickname"
    units="ibans" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of local or server IBANs with nickname a user has stored,
    measured at Chrome profile launch time. It's logged one per profile load.
  </summary>
  <token key="IbanRecordType" variants="IbanRecordType"/>
</histogram>

<histogram name="Autofill.StoredIbanDisusedCount.{IbanRecordType}"
    units="ibans" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of disused IBANs a user has stored, measured at Chrome profile
    launch time. This is only reported for users who have at least one stored
    IBAN.
  </summary>
  <token key="IbanRecordType" variants="IbanRecordType"/>
</histogram>

<histogram name="Autofill.StoredProfileCount.{Suffix}" units="Profiles"
    expires_after="2026-12-12">
  <owner>piotrkotynia@google.com</owner>
  <owner>sygiet@google.com</owner>
  <owner>battre@chromium.org</owner>
  <owner>jsobiech@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill addresses a user has stored of the given category or
    in total, measured at launch time.

    {Suffix}
  </summary>
  <token key="Suffix" variants="StoredProfileCategories">
    <variant name="Total"/>
    <variant name="TotalPostalAddressProfiles"
        summary="The number of Autofill profiles that are considered to be
                 postal addresses, measured at launch time. A profile is
                 counted as a postal address if at least two of the following
                 are set: city, state, street address, or zip code."/>
    <variant name="WithAlternativeName"
        summary="The number of Autofill addresses with an alternative name
                 set, measured at launch time."/>
  </token>
</histogram>

<histogram name="Autofill.StoredProfileCountAtAutofillableFormSubmission"
    units="units" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of Autofill addresses a user has stored, measured when an
    autofillable form is submitted.
  </summary>
</histogram>

<histogram name="Autofill.StoredProfileDisusedCount.{Category}"
    units="Profiles" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of stored Autofill address profiles of the given category, which
    have not been used in a sufficiently long time for autofill to consider them
    disused. Measured once per Chrome user profile launch. This metric is only
    recorded if the user has at least one profile of that category.
  </summary>
  <token key="Category" variants="StoredProfileCategories"/>
</histogram>

<histogram name="Autofill.StoredProfileUsedCount.{Category}" units="Profiles"
    expires_after="2026-07-13">
  <owner>fleimgruber@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of stored Autofill address profiles of the given category, which
    are not in the disused state. Measured once per Chrome user profile launch.
    This metric is only recorded if the user has at least one profile of that
    category.
  </summary>
  <token key="Category" variants="StoredProfileCategories"/>
</histogram>

<histogram name="Autofill.StoredProfileUsedPercentage.{Category}"
    units="Profiles" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The percentage of stored Autofill address profiles of the given category,
    which are not in the disused state. Measured once per Chrome user profile
    launch. This metric is only recorded if the user has at least one profile of
    that category.
  </summary>
  <token key="Category" variants="StoredProfileCategories"/>
</histogram>

<histogram
    name="Autofill.StrikeDatabase.CreditCardSaveNotOfferedDueToMaxStrikes"
    enum="AutofillSaveType" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records when credit card save is not offered (either at all on mobile or by
    simply not showing the bubble on desktop) due to the candidate card having
    too many strikes.
  </summary>
</histogram>

<histogram name="Autofill.StrikeDatabase.IbanSaveNotOfferedDueToMaxStrikes"
    enum="AutofillSaveType" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records when IBAN save prompt is not offered due to the candidate IBAN
    having too many strikes. It is recorded when offering IBAN save to user and
    detects the max strikes has been reached.
  </summary>
</histogram>

<histogram
    name="Autofill.StrikeDatabase.NthStrikeAdded.{AutofillStrikeDatabaseProjectType}"
    units="strikes" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of &quot;strikes&quot; the
    {AutofillStrikeDatabaseProjectType} feature had when a strike was added for
    it.
  </summary>
  <token key="AutofillStrikeDatabaseProjectType"
      variants="AutofillStrikeDatabaseProjectType"/>
</histogram>

<histogram
    name="Autofill.StrikeDatabase.NumOfStrikesPresentWhenSaveAndFillAccepted"
    units="strikes" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>averina@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of &quot;strikes&quot; when a user accepted the Save and
    Fill dialog.
  </summary>
</histogram>

<histogram name="Autofill.StrikeDatabase.SaveAndFillStrikeDatabaseBlockReason"
    enum="AutofillStrikeDatabaseBlockReason" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>averina@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason why Save and Fill offer is blocked by the strike
    database. Logged when Chrome checks for prerequisites for the Save and Fill
    flow.
  </summary>
</histogram>

<histogram name="Autofill.StrikeDatabase.StrikeDatabaseInitFailed"
    units="attempts" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    When a StrikeDatabase fails to initialize, records the number of consecutive
    failed initialization attempts.
  </summary>
</histogram>

<histogram
    name="Autofill.StrikeDatabase.StrikesPresentWhenIbanSaved.{IbanTypeToBeSaved}"
    units="strikes" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of &quot;strikes&quot; a given IBAN had when a user
    decided to save it. It is recorded right after the user clicks the Accept
    button.
  </summary>
  <token key="IbanTypeToBeSaved" variants="IbanTypeToBeSaved"/>
</histogram>

<histogram name="Autofill.StrikeDatabase.StrikesPresentWhenLocalCardSaved"
    units="strikes" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of &quot;strikes&quot; a given card had when a user opted
    to save the card to Chrome.
  </summary>
</histogram>

<histogram name="Autofill.StrikeDatabase.StrikesPresentWhenServerCardSaved"
    units="strikes" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of &quot;strikes&quot; a given card had when a user
    successfully uploaded the card to Google Payments.
  </summary>
</histogram>

<histogram
    name="Autofill.StrikeDatabase.StrikesPresentWhenStrikeExpired.{AutofillStrikeDatabaseProjectType}"
    units="strikes" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of &quot;strikes&quot; present in a StrikeDatabase entry
    when a strike expired for the {AutofillStrikeDatabaseProjectType} feature.
  </summary>
  <token key="AutofillStrikeDatabaseProjectType"
      variants="AutofillStrikeDatabaseProjectType"/>
</histogram>

<histogram name="Autofill.StrikeDatabase.StrikesPresentWhenVirtualCardEnrolled"
    units="strikes" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of &quot;strikes&quot; a given card had when a user
    successfully enrolled in a virtual card.
  </summary>
</histogram>

<histogram
    name="Autofill.StrikeDatabase.VirtualCardEnrollmentNotOfferedDueToMaxStrikes"
    enum="AutofillVirtualCardEnrollmentSource" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records and emits true when virtual card enrollment is not offered due to
    the candidate's strike count reaching maximum strikes.
  </summary>
</histogram>

<histogram
    name="Autofill.StrikeDatabase.VirtualCardEnrollmentNotOfferedDueToRequiredDelay"
    enum="AutofillVirtualCardEnrollmentSource" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records and emits true when virtual card enrollment is not offered due to
    the required delay not yet passing since candidate's last strike.
  </summary>
</histogram>

<histogram name="Autofill.SubmissionDetection.SubmittedFormType"
    enum="AutofillSubmittedFormTypeBySource" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Metric to measure how many times querying the submitted form returned a
    null, extracted or cached form, for every submission source separately. This
    metric is emitted each time the submitted form is requested.
  </summary>
</histogram>

<histogram name="Autofill.SubmissionDetectionSource.{SubmissionComponent}"
    enum="AutofillSubmissionSource2" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Metric to measure the source of each submission. Emitted once per inferred
    submission by {SubmissionComponent}.
  </summary>
  <token key="SubmissionComponent">
    <variant name="AutofillAgent"/>
    <variant name="FormTracker"/>
    <variant name="PasswordAutofillAgent"/>
  </token>
</histogram>

<histogram name="Autofill.SubmittedAlternativeNameFieldValueCharacterSet"
    enum="AutofillAlternativeNameFieldValueCharacterSet"
    expires_after="2026-03-29">
  <owner>aayazhan@google.com</owner>
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the character set of the alternative name field value that was
    submitted. The character set includes Hiragana, Katakana and other values.
    Recorded after the form submission.
  </summary>
</histogram>

<histogram name="Autofill.SubmittedCardState" enum="AutofillSubmittedCardState"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Metric to measure credit card state when form is submitted, specifically if
    it had a valid card number and/or expiration date.
  </summary>
</histogram>

<histogram name="Autofill.SubmittedServerCardExpirationStatus"
    enum="AutofillSubmittedServerCardExpirationStatus"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Metric to measure if a submitted card's expiration date matches the same
    server card's expiration date. Cards are considered to be the same if they
    have the same network and last four digits.
  </summary>
</histogram>

<histogram name="Autofill.SubmittedValuePatterns" enum="AutofillValuePatterns"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>osaul@google.com</owner>
  <owner>koerber@google.com</owner>
  <summary>
    Metric to measure if a submitted form contains any recognizable value
    patterns (e.g., Unified Payment Interface Virtual Payment address (UPI
    VPA)). Reported for every submitted non-empty visible field observed by
    Autofill.
  </summary>
</histogram>

<histogram
    name="Autofill.Suggestion.AcceptanceFieldValueLength.{SuggestionType}"
    units="units" expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records how long was the field's value before accepting an Autofill
    {SuggestionType} suggestion. Emitted every time a suggestion is accepted.
    Used to asses the quality of suggestion prefix matching.
  </summary>
  <token key="SuggestionType">
    <variant name="Address"/>
    <variant name="CreditCard"/>
  </token>
</histogram>

<histogram name="Autofill.Suggestion.StrikeSuppression.Address" enum="Boolean"
    expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether address suggestions were suppressed because of a field
    reaching the strike limit due to the user consistently ignoring suggestions
    on that field. Emitted only on desktop (where strike suppression exists)
    every time regular (non-manual fallback) address suggestions are triggered.
  </summary>
</histogram>

<histogram name="Autofill.SuggestionAccepted.Method"
    enum="AutofillSuggestionAcceptedMethod" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the method by which a user accepts an Autofill suggestion. This is
    logged every time a suggestion is accepted.
  </summary>
</histogram>

<histogram name="Autofill.SuggestionAccepted.OffTheRecord" units="units"
    expires_after="2026-05-03">
  <owner>arabm@google.com</owner>
  <owner>chrome-privacy-core@google.com</owner>
  <summary>
    Records acceptance of autofill suggestions in regular and off-the-record
    modes.
  </summary>
</histogram>

<histogram name="Autofill.SuggestionAcceptedIndex{SuggestionType}"
    units="position" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The index of the accepted Autofill suggestion in the popup. {SuggestionType}
  </summary>
  <token key="SuggestionType">
    <variant name=""/>
    <variant name=".Autocomplete"/>
    <variant name=".CreditCard"/>
    <variant name=".Profile"/>
  </token>
</histogram>

<histogram name="Autofill.Suggestions.AcceptedType" enum="SuggestionType"
    expires_after="2026-12-12">
  <owner>jihadghanna@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the type of an accepted Autofill suggestion. The metric is recorded
    every time a user accepts an autofill suggestion (no submission needed).
  </summary>
</histogram>

<histogram name="Autofill.SuggestionsCount{SuggestionType}" units="units"
    expires_after="2026-12-12">
  <owner>jihadghanna@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of suggestions shown in the Autofill popup. Recorded whenever
    suggestions are shown. {SuggestionType}
  </summary>
  <token key="SuggestionType">
    <variant name=".Address"/>
    <variant name=".CreditCard"/>
  </token>
</histogram>

<histogram name="Autofill.SuggestionShown.OffTheRecord" units="units"
    expires_after="2026-05-10">
  <owner>arabm@google.com</owner>
  <owner>chrome-privacy-core@google.com</owner>
  <summary>
    Records showing of autofill suggestions in regular and off-the-record modes.
  </summary>
</histogram>

<histogram name="Autofill.TestAddressesEvent"
    enum="AutofillInDevtoolsTestAddressesEvents" expires_after="2026-10-26">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Recorded when a test address suggestion is shown or selected. These
    suggestions are displayed when devtools is open, therefore only in desktop.
    A top level test address suggestion will be shown when the user clicks on an
    address classified field while devtools is open. This suggestion has child
    suggestions representing well-formatted addressses from different countries,
    choosing one of them will fill the form and emit an selected event.
  </summary>
</histogram>

<histogram name="Autofill.TestAddressSelected"
    enum="AutofillInDevtoolsAvailableTestAddressesCountries"
    expires_after="2026-11-09">
  <owner>brunobraga@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Recorded when a test address suggestion is selected. Test address
    suggestions are displayed when devtools is open, therefore only in desktop.
    A top level test address suggestion will be shown when the user clicks on an
    address classified field while devtools is open. This suggestion has child
    suggestions representing well-formatted addressses from different countries,
    choosing one of them will fill the form and emit this metric, representing
    which country was chosen.
  </summary>
</histogram>

<histogram name="Autofill.ThirdPartyMode.AutofillManager.CreationContext"
    enum="AutofillManagerCreationContext" expires_after="2026-12-12">
  <owner>friedrichh@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the creation context used to retrieve the AutofillManager service
    and should always be an activity context. For historical reasons or in rare
    bugs, the context may not be correct. It is recorded every time a new
    AutofillManagerWrapper is being created. It's recorded only on Android (both
    for WebView and Chrome).
  </summary>
</histogram>

<histogram name="Autofill.ThirdPartyModeDisabled.Provider"
    enum="AutofillProviderPackageName" expires_after="2026-12-12">
  <owner>friedrichh@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records the Autofill provider on the device for clients with active 3P
    providers that don't use 3P mode and that could be using it because the
    AutofillManager use isn't disabled on the device. It is recorded on every
    tab creation. It's not possible to determine the name of the provider when
    the Android API version is lower than 28, so the metric is only logged for
    API versions equal to or higher than 28. It's recorded only on Android.
  </summary>
</histogram>

<histogram name="Autofill.Timing.ParseFormUntilInteraction2" units="ms"
    expires_after="2026-03-01">
  <owner>schwering@google.com</owner>
  <owner>brunobraga@google.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Number of milliseconds passed between a form is parsed and the user has
    interacted with a field in it. In the case of reparses the first parsing
    time is used.
  </summary>
</histogram>

<histogram name="Autofill.Timing.SuggestionGeneration" units="ms"
    expires_after="2026-03-01">
  <owner>jihadghanna@google.com</owner>
  <owner>kuchyn@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The time in milliseconds, elapsed between the start of a suggestion query
    (OnAskForValuesToFillImpl) and the point where suggestions are ready to be
    shown (OnGenerateSuggestionsComplete). This measures the total latency of
    the suggestion generation logic.
  </summary>
</histogram>

<histogram name="Autofill.Timing.{AutofillTimedFunction}" units="ms"
    expires_after="2026-12-12">
  <owner>schwering@google.com</owner>
  <owner>kenjitoyama@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Number of milliseconds passed between the start and end of
    {AutofillTimedFunction}.
  </summary>
  <token key="AutofillTimedFunction">
    <variant name="DetermineHeuristicTypes"/>
    <variant name="ParseFormAsync"/>
    <variant name="ParseFormsAsync"/>
    <variant name="ParseFormsAsync.RunHeuristics"/>
    <variant name="ParseFormsAsync.UpdateCache"/>
  </token>
</histogram>

<histogram name="Autofill.TimingInterval.{Callee}.{Caller}.{Event}"
    units="microseconds" expires_after="2026-02-22">
  <owner>schwering@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of microseconds passed the last preceding {Event} event
    and (the end of) {Callee}, which has been called by {Caller}. The metric is
    recorded on all platforms except for iOS and is only recorded for clients
    with high-resolution clocks.
  </summary>
  <token key="Callee" variants="Autofill.TimingPrecise.Callee"/>
  <token key="Caller" variants="Autofill.TimingPrecise.Caller"/>
  <token key="Event">
    <variant name="AutofillAgentReset"/>
    <variant name="DOMContentLoaded"/>
  </token>
</histogram>

<histogram name="Autofill.TimingPrecise.{Callee}" units="microseconds"
    expires_after="2026-04-19">
  <owner>schwering@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of microseconds passed between the start and end of
    {Callee}. Where a more detailed breakdown exists, this metric is effectively
    the aggregation of Autofill.TimingPrecise.{Callee}.*. The metric is recorded
    on all platforms except for iOS and is only recorded for clients with
    high-resolution clocks.
  </summary>
  <token key="Callee">
    <variant name="ExtractFormData"/>
    <variant name="InferLabelForElement"
        summary="Time for all InferLabelForElement calls for the fields of a
                 form."/>
    <variant name="UpdateFormCache"/>
  </token>
</histogram>

<histogram name="Autofill.TimingPrecise.{Callee}.{Caller}" units="microseconds"
    expires_after="2026-04-26">
  <owner>schwering@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of microseconds passed between the start and end of
    {Callee} called by {Caller}. The metric is recorded on all platforms except
    for iOS and is only recorded for clients with high-resolution clocks.
  </summary>
  <token key="Callee" variants="Autofill.TimingPrecise.Callee"/>
  <token key="Caller" variants="Autofill.TimingPrecise.Caller"/>
</histogram>

<histogram
    name="Autofill.TouchToFill.Bnpl.HomeScreen.SuggestionInteraction.{BnplSuggestionVisibility}"
    enum="TouchToFillBnplSuggestionInteraction" expires_after="2026-06-01">
  <owner>ferny@google.com</owner>
  <owner>viplavkadam@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records user interaction with the BNPL suggestion, based on its initial
    visibility in the Touch to Fill bottom sheet. The {BnplSuggestionVisibility}
    variants specify the suggestion's initial visibility when the Touch To Fill
    bottom sheet opens. The metric is recorded when the BNPL suggestion was
    shown and remained selectable after amount extraction completed, and when it
    is selected. Logged only when touch exploration is disabled.
  </summary>
  <token key="BnplSuggestionVisibility">
    <variant name="StartedFullyVisible"/>
    <variant name="StartedNotVisible"/>
    <variant name="StartedPartiallyVisible"/>
  </token>
</histogram>

<histogram
    name="Autofill.TouchToFill.Bnpl.SelectIssuerScreen.NumberOfIssuersShown"
    units="issuers" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>viplavkadam@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the number of all BNPL issuers shown in the BNPL issuer selection
    bottom sheet. Logs when the user is on the issuer selection bottom sheet.
  </summary>
</histogram>

<histogram
    name="Autofill.TouchToFill.CreditCard.AutofillUsedAfterTouchToFillDismissal"
    enum="Boolean" expires_after="2026-05-19">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Records whether a user has still used autofill after dismissing the payments
    bottom sheet. There is a fallback to still allow the user to autofill the
    form after dismissing the bottom sheet, that is to use the keyboard
    accessory suggestion. This metric is recorded when submitting the form: true
    - if there is at least one autofilled field in the submitted form and the
    payments bottom sheet was shown and dismissed by user, false - otherwise.
    The metrics is recorded only if the payments bottom sheet was displayed for
    the form submitted.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.CreditCard.FillingCorrectness"
    enum="BooleanAutofillFillingCorrectness" expires_after="2026-05-19">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    For the Payments bottom sheet (Touch To Fill for credit cards), tracks
    whether or not the user has edited at least one of the autofilled fields
    before submitting the form. The metric is recorded on form submission.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.CreditCard.NumberOfCardsShown"
    units="cards" expires_after="2026-05-19">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    The number of credit cards shown in the Touch To Fill bottom sheet. Recorded
    when showing the bottom sheet.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.CreditCard.Outcome2"
    enum="TouchToFill.CreditCard.Outcome" expires_after="2026-05-19">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Records the outcome with which the bottom sheet was closed: credit card
    selected, virtual card selected, go to payment settings, scan new credit
    card or dismissed with no action. The metric is recorded right after user
    has done the action: the credit card selection or some other option (which
    always leads to the bottom sheet being closed) or swiped the sheet to close
    it. See the TouchToFillCreditCardMediator.java for details. Note that
    &quot;Go to payment settings&quot; click is also considered as the outcome,
    although it doesn't close the Touch To Fill. So in this case there will be a
    double count for one bottom sheet showing.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.CreditCard.PerfectFilling" enum="Boolean"
    expires_after="2026-05-19">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    For the Payments bottom sheet (Touch To Fill for credit cards), logs at
    submission time if the filling experience was perfect or not. In a perfect
    filling experience, all non-empty fields have been autofilled without
    subsequent corrections. The metric is logged on form submission.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.CreditCard.SelectedIndex" units="index"
    expires_after="2026-05-19">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    The index of the selected credit card in the Touch To Fill bottom sheet.
    Recorded when user selects a credit card from the list.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.CreditCard.TriggerOutcome"
    enum="TouchToFill.PaymentMethod.TriggerOutcome" expires_after="2026-05-19">
  <owner>smcgruer@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <summary>
    Records the outcome of the attempt to trigger Touch To Fill for credit
    cards. It is recorded only when the touch to fill feature is enabled and the
    form is parsed as a credit card form by autofill.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.Iban.NumberOfIbansShown" units="ibans"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of IBANs shown in the Touch To Fill bottom sheet. Recorded when
    showing the bottom sheet.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.Iban.Outcome"
    enum="TouchToFill.Iban.Outcome" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the user action on the Touch To Fill for IBANs. It is recorded when
    the Touch To Fill bottom sheet is closed. Only recorded on Android.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.Iban.SelectedIndex" units="index"
    expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The index of the selected IBAN in the Touch To Fill bottom sheet. Recorded
    when user selects an IBAN from the list.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.Iban.TriggerOutcome"
    enum="TouchToFill.PaymentMethod.TriggerOutcome" expires_after="2026-06-01">
  <owner>qihuizhao@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the outcome of the attempt to trigger Touch To Fill for IBANs. It is
    recorded only when the form is parsed as an IBAN by autofill on Chrome
    Android and the user clicks on the form field.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.LoyaltyCard.Affiliated.SelectedIndex"
    units="index" expires_after="2026-06-01">
  <owner>tchudakov@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The index of the selected loyalty card on the affiliated loyalty cards
    screen in the Touch To Fill bottom sheet. Recorded when user selects a
    loyalty card from the list.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.LoyaltyCard.All.SelectedIndex"
    units="index" expires_after="2026-06-01">
  <owner>tchudakov@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The index of the selected loyalty card on the all loyalty cards screen in
    the Touch To Fill bottom sheet. Recorded when user selects a loyalty card
    from the list.
  </summary>
</histogram>

<histogram
    name="Autofill.TouchToFill.LoyaltyCard.NumberOfAffiliatedLoyaltyCardsShown"
    units="loyalty cards" expires_after="2026-06-01">
  <owner>tchudakov@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of affiliatd loyalty cards shown in the Touch To Fill bottom
    sheet. Recorded when showing the bottom sheet.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.LoyaltyCard.NumberOfLoyaltyCardsShown"
    units="loyalty cards" expires_after="2026-06-01">
  <owner>tchudakov@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of all loyalty cards of a user shown in the Touch To Fill bottom
    sheet. All loyalty cards are shown on the second screen in the bottom sheet
    and are available under the &quot;All your loyalty cards&quot; menu.
    Recorded when showing the bottom sheet.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.LoyaltyCard.Outcome"
    enum="TouchToFill.LoyaltyCard.Outcome" expires_after="2026-06-01">
  <owner>tchudakov@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the user action on the Touch To Fill for loyalty cards. It is
    recorded when the Touch To Fill bottom sheet is closed.
  </summary>
</histogram>

<histogram name="Autofill.TouchToFill.LoyaltyCard.TriggerOutcome"
    enum="TouchToFill.PaymentMethod.TriggerOutcome" expires_after="2026-06-01">
  <owner>tchudakov@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the outcome of the attempt to trigger Touch To Fill for loyalty
    cards. It is recorded only when the form is parsed as a loyalty card by
    Autofill on Chrome Android and the user clicks on the form field.
  </summary>
</histogram>

<histogram name="Autofill.TransliteratorInitStatus" enum="BooleanSuccess"
    expires_after="2026-05-03">
  <owner>sygiet@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the status of the transliterator initialization. It will be equal to
    true if there were no errors and false otherwise. Recorded during
    normalizations.
  </summary>
</histogram>

<histogram name="Autofill.UndoAfterFill.{FormType}" enum="Boolean"
    expires_after="2026-12-12">
  <owner>jihadghanna@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether a user used Undo Autofill in his filling journey or not.
    Emitted once per form submission, only if the user autofilled some
    suggestion prior to submission.
  </summary>
  <token key="FormType" variants="AutofillFormType.Fillable"/>
</histogram>

<histogram
    name="Autofill.UnmaskPrompt.Duration{AutofillUnmaskPromptCloseReasonEvents}"
    units="ms" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <summary>
    Duration of the interaction with the UnmaskPrompt since it was shown until
    it was closed. This prompt is triggered when a user selects a masked card in
    an autofill dropdown. {AutofillUnmaskPromptCloseReasonEvents}
  </summary>
  <token key="AutofillUnmaskPromptCloseReasonEvents">
    <variant name=""/>
    <variant name=".AbandonUnmasking" summary="Abandon unmasking"/>
    <variant name=".Failure" summary="Failure"/>
    <variant name=".NoAttempts" summary="No attempts"/>
    <variant name=".Success" summary="Success"/>
  </token>
</histogram>

<histogram name="Autofill.UnmaskPrompt.Events" enum="AutofillUnmaskPromptEvent"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Events tracking the usage of the unmasking prompt. This prompt is triggered
    when a user selects a masked card in a autofill dropdown.
  </summary>
</histogram>

<histogram name="Autofill.UnmaskPrompt.GetRealPanDuration" units="ms"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Duration of the GetRealPan API call. This API call is triggered by the
    unmasking prompt when the user types information to verify their ownership
    of the card being fetched.
  </summary>
</histogram>

<histogram name="Autofill.UnmaskPrompt.GetRealPanDuration.{CardType}.{Result}"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Duration of the GetRealPan API call. This API call is triggered by the
    unmasking prompt when the user types information to verify their ownership
    of the card being fetched. Broken down by the type of the card being fetched
    and the result.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="Result" variants="Autofill.PaymentsRpcResult"/>
</histogram>

<histogram name="Autofill.UnmaskPrompt.GetRealPanResult"
    enum="AutofillGetRealPanResult" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the result of the GetRealPan API call. This API call is triggered by
    the unmasking prompt when the user types information to verify their
    ownership of the card being fetched.
  </summary>
</histogram>

<histogram name="Autofill.UnmaskPrompt.GetRealPanResult.{CardType}"
    enum="AutofillGetRealPanResult" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the result of the GetRealPan API call. This API call is triggered by
    the unmasking prompt when the user types information to verify their
    ownership of the card being fetched. Broken down by type of the card being
    fetched.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.UnmaskPrompt.TimeBeforeAbandonUnmasking" units="ms"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Time the user waited before abandoning an unmasking operation. In such a
    scenario, the user is cancelling a pending unmasking operation (possibly
    because it is taking too long). The time measured here corresponds to the
    time between the user clicking the &quot;Verify&quot; button and then
    clicking &quot;Cancel&quot;.
  </summary>
</histogram>

<histogram name="Autofill.UnmaskPrompt.UnmaskingDuration" units="ms"
    expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Duration between the user clicking the Verify button within the unmasking
    prompt until we get a response back from the server. This prompt is
    triggered when a user selects a masked card in an autofill dropdown.
  </summary>
</histogram>

<histogram name="Autofill.UnmaskPrompt.UnmaskingDuration.{CardType}.{Result}"
    units="ms" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Duration between the user clicking the Verify button within the unmasking
    prompt until we get a response back from the server. This prompt is
    triggered when a user selects a masked card in an autofill dropdown. Broken
    down by the type of the card being fetched and the result.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
  <token key="Result" variants="Autofill.PaymentsRpcResult"/>
</histogram>

<histogram name="Autofill.UnmaskPrompt.{CardType}.Events"
    enum="AutofillUnmaskPromptEvent" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>osaul@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Events tracking the usage of the unmasking prompt, recorded for {CardType}.
    This prompt is triggered when a user selects a masked card in a autofill
    dropdown.
  </summary>
  <token key="CardType" variants="Autofill.PaymentsRpcCardType"/>
</histogram>

<histogram name="Autofill.Upload.BackoffDelay" units="ms" expires_after="never">
<!-- expires-never: https://crbug.com/915888 -->

  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The delay of a network request for an upload due to exponential backoff.
  </summary>
</histogram>

<histogram name="Autofill.Upload.FailingPayloadSize" units="bytes"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of bytes that were sent in an upload that subsequently failed.
    This is to help determine if there are certain upload sizes which are prone
    to failure.
  </summary>
</histogram>

<histogram name="Autofill.Upload.HttpResponseOrErrorCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="never">
<!-- expires-never: https://crbug.com/915888 -->

  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The http response code or net error code returned on an upload.
  </summary>
</histogram>

<histogram name="Autofill.Upload.RequestDuration" units="ms"
    expires_after="never">
<!-- expires-never: https://crbug.com/915888 -->

  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>The duration of a network request for an upload.</summary>
</histogram>

<histogram name="Autofill.Upload.RequestsInLastMinute" units="requests"
    expires_after="2026-07-07">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    The number of upload requests sent to the Autofill server in a sliding
    60-second window. This is recorded with every request that is not served
    from cache.
  </summary>
</histogram>

<histogram name="Autofill.UploadAcceptedCardOrigin"
    enum="UploadPaymentMethodOrigin" expires_after="never">
<!-- expires-never: https://crbug.com/975713 -->

  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Measures if a card for which upload was accepted is already stored as a
    local card on the device or if it has not yet been seen.
  </summary>
</histogram>

<histogram name="Autofill.UploadEvent{AutofillUploadEvents}" enum="BooleanSent"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Whether or not an upload was sent after having been triggered by a form
    submission or proxy-form-submission. {AutofillUploadEvents}
  </summary>
  <token key="AutofillUploadEvents">
    <variant name=""/>
    <variant name=".DomMutationAfterAutofill"
        summary="DOM Mutation After Autofill"/>
    <variant name=".FormSubmission" summary="Form Submission"/>
    <variant name=".FrameDetached" summary="Frame Detached"/>
    <variant name=".None" summary="None"/>
    <variant name=".ProbablyFormSubmitted" summary="Probable Form Submission"/>
    <variant name=".SameDocumentNavigation" summary="Same Document Navigation"/>
    <variant name=".Unknown" summary="Unknown"/>
    <variant name=".XhrSucceeded" summary="XHR Succeeded"/>
  </token>
</histogram>

<histogram name="Autofill.UploadIban.{UploadIbanAction}"
    enum="UploadPaymentMethodOrigin" expires_after="2026-06-01">
  <owner>osaul@google.com</owner>
  <owner>qihuizhao@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records every time the IBAN upload save is offered to the user, as well as
    when there are actions made on the offer. The metric is broken down by IBAN
    origins (new IBAN or an existing local IBAN).
  </summary>
  <token key="UploadIbanAction">
    <variant name="Accepted" summary="The user has accepted the offer"/>
    <variant name="Declined" summary="The user has declined the offer"/>
    <variant name="Ignored" summary="The user has ignored the offer"/>
    <variant name="Offered" summary="It is an IBAN upload save offer"/>
  </token>
</histogram>

<histogram name="Autofill.UploadOfferedCardOrigin"
    enum="UploadPaymentMethodOrigin" expires_after="never">
<!-- expires-never: https://crbug.com/975713 -->

  <owner>osaul@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Measures if a card for which upload was offered is already stored as a local
    on the device or if it has not yet been seen.
  </summary>
</histogram>

<histogram
    name="Autofill.UserAcceptedSuggestionAtIndex.{FillingProduct}.{Context}"
    units="position" expires_after="2026-04-26">
  <owner>noemies@google.com</owner>
  <owner>sugoi@google.com</owner>
  <owner>bling-transactions@google.com</owner>
  <summary>
    The index of the accepted Autofill suggestion, split by context. Logged when
    the user taps on a suggestion. iOS only. {FillingProduct} {Context}
  </summary>
  <token key="FillingProduct" variants="Autofill.FillingProduct"/>
  <token key="Context">
    <variant name="BottomSheet"/>
    <variant name="KeyboardAccessory"/>
    <variant name="ManualFallback"/>
    <variant name="ManualFallback.AllPasswords"/>
  </token>
</histogram>

<histogram name="Autofill.ValuableMetadata.OrphanEntriesRemovedCount"
    units="entries" expires_after="2026-11-30">
  <owner>vizcay@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the number of orphan valuable metadata entries that were removed
    during cleanup. Recorded on startup.
  </summary>
</histogram>

<histogram name="Autofill.Vcn3ds.FlowEvents" enum="Vcn3dsFlowEvents"
    expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks when a user starts and completes a VCN 3DS flow, as well as events
    throughout the flow. The metrics for flow started log when we initiate a VCN
    3DS auth flow and are about to either show the consent dialog or the pop-up
    directly. The metrics for flow completion are logged when the full flow is
    considered completed, and are broken down by completion result. Other events
    are logged at the moment they occur. This histogram is an aggregated version
    of the Autofill.Vcn3ds.FlowEvents.{ConsentAlreadyGiven} histogram.
  </summary>
</histogram>

<histogram name="Autofill.Vcn3ds.FlowEvents.{ConsentAlreadyGiven}"
    enum="Vcn3dsFlowEvents" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks when a user starts and completes a VCN 3DS flow, as well as events
    throughout the flow. The metrics for flow started log when we initiate a VCN
    3DS auth flow and are about to either show the consent dialog or the pop-up
    directly. The metrics for flow completion are logged when the full flow is
    considered completed, and are broken down by completion result. Other events
    are logged at the moment they occur. The histogram is broken down into
    sub-histograms by whether user consent was already given prior to the flow
    starting. If consent was already given, the consent dialog is not shown and
    the pop-up is immediately triggered, otherwise the consent dialog is shown
    and must be accepted for the pop-up to be triggered.
  </summary>
  <token key="ConsentAlreadyGiven" variants="Vcn3ds.ConsentAlreadyGiven"/>
</histogram>

<histogram name="Autofill.Vcn3ds.Latency.{Result}" units="ms"
    expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the latency of the VCN 3DS authentication, from the time the pop-up was
    shown to the time the pop-up was closed. Logged when the pop-up closes due
    to the user completing the authentication successfully or unsuccessfully.
    Not logged when the user manually closes the pop-up.
  </summary>
  <token key="Result">
    <variant name="Failure"/>
    <variant name="Success"/>
  </token>
</histogram>

<histogram name="Autofill.Vcn3ds.PaymentsWindowUserConsentDialogResult"
    enum="PaymentsWindowUserConsentDialogResult" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the result of the payments window user consent dialog, broken down by
    closed reason. Logged when the dialog is closing.
  </summary>
</histogram>

<histogram name="Autofill.Vcn3ds.PaymentsWindowUserConsentDialogShown"
    enum="BooleanShown" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Tracks the number of shows for the payments window user consent dialog.
    Logged every time a dialog is shown.
  </summary>
</histogram>

<histogram name="Autofill.VirtualCard.Enroll.Attempt.{Source}"
    enum="BooleanAttempted" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true whenever a virtual card Enroll request is sent. It is broken down
    by the source of the request (i.e., Upstream, Downstream, settings page).
  </summary>
  <token key="Source" variants="Autofill.VirtualCard.RequestSource"/>
</histogram>

<histogram name="Autofill.VirtualCard.Enroll.Result.{Source}"
    enum="BooleanSuccess" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emitted whenever a virtual card Enroll response is received. It is broken
    down by the source of the request (i.e., Upstream, Downstream, settings
    page) and logged based on whether the request suceeded.
  </summary>
  <token key="Source" variants="Autofill.VirtualCard.RequestSource"/>
</histogram>

<histogram name="Autofill.VirtualCard.GetDetailsForEnrollment.Attempt.{Source}"
    enum="BooleanAttempted" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true whenever a virtual card GetDetailsForEnrollment request is sent.
    It is broken down by the source of the request (i.e., Upstream, Downstream,
    settings page).
  </summary>
  <token key="Source" variants="Autofill.VirtualCard.RequestSource"/>
</histogram>

<histogram
    name="Autofill.VirtualCard.GetDetailsForEnrollment.Latency.{Source}.{Result}"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the latency for the GetDetailsForEnrollment roundtrip call. The
    timer starts when a GetDetailsForEnrollment request is sent. It is recorded
    (the timer stops) when a GetDetailsForEnrollment response is received.
  </summary>
  <token key="Source" variants="Autofill.VirtualCard.RequestSource"/>
  <token key="Result" variants="Autofill.PaymentsRpcResult"/>
</histogram>

<histogram name="Autofill.VirtualCard.GetDetailsForEnrollment.Result.{Source}"
    enum="BooleanSuccess" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits whenever a virtual card GetDetailsForEnrollment response is received.
    It is broken down by the source of the request (i.e., Upstream, Downstream,
    settings page) and logged based on whether the request suceeded.
  </summary>
  <token key="Source" variants="Autofill.VirtualCard.RequestSource"/>
</histogram>

<histogram name="Autofill.VirtualCard.MetadataSynced" enum="BooleanExists"
    expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    The number of times that virtual card metadata is propagated via Chrome
    Sync. It is logged based on whether the metadata is for an existing card or
    a new card.
  </summary>
</histogram>

<histogram name="Autofill.VirtualCard.StandaloneCvc.FormEvents"
    enum="VirtualCardStandaloneCvcSuggestionFormEvent"
    expires_after="2026-06-01">
  <owner>yishuil@google.com</owner>
  <owner>hvs@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    These metrics log the autofill form events for virtual card standalone CVC
    fields, such as when suggestion(s) is/are shown, selected, or filled for a
    virtual card standalone CVC field, or the form is about to be submitted or
    submitted after a virtual card standalone CVC field is autofilled.
  </summary>
</histogram>

<histogram name="Autofill.VirtualCard.Unenroll.Attempt.{Source}"
    enum="BooleanAttempted" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true whenever a virtual card Unenroll request is sent. It is broken
    down by the source of the request (i.e., Upstream, Downstream, settings
    page).
  </summary>
  <token key="Source" variants="Autofill.VirtualCard.RequestSource"/>
</histogram>

<histogram name="Autofill.VirtualCard.Unenroll.Result.{Source}"
    enum="BooleanSuccess" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emitted whenever a virtual card Unenroll response is received. It is broken
    down by the source of the request (i.e., Upstream, Downstream, settings
    page) and logged based on whether the request suceeded.
  </summary>
  <token key="Source" variants="Autofill.VirtualCard.RequestSource"/>
</histogram>

<histogram name="Autofill.VirtualCard.{Dialog}" enum="BooleanAccepted"
    expires_after="2026-06-01">
  <owner>siashah@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Emits true when a user accepts {Dialog} in the mobile virtual card edit
    page. Emits false if the user declines.
  </summary>
  <token key="Dialog" variants="Autofill.SettingsPage.VirtualCardDialogType"/>
</histogram>

<histogram name="Autofill.VirtualCard.{Dialog}.LinkClicked"
    enum="AutofillVirtualCardDialogLinkClicked" expires_after="2026-06-01">
  <owner>siashah@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records which link is clicked whenever a user clicks on links in {Dialog} in
    the mobile virtual card edit page. The links are the education text link,
    Google legal message link, and issuer legal message link.
  </summary>
  <token key="Dialog" variants="Autofill.SettingsPage.VirtualCardDialogType"/>
</histogram>

<histogram
    name="Autofill.VirtualCardEnroll.CardArtImageAvailable.{EnrollmentSource}"
    enum="BooleanAvailable" expires_after="2026-06-01">
  <owner>hvs@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    This metric emits true if the card art image is available for use in the
    virtual card enroll bubble for the {EnrollmentSource} and false if it is not
    available. Recorded when bubble is shown.
  </summary>
  <token key="EnrollmentSource"
      variants="Autofill.VirtualCardEnrollmentSource"/>
</histogram>

<histogram
    name="Autofill.VirtualCardEnroll.LinkClicked.{EnrollmentSource}.{LinkType}"
    enum="BooleanClicked" expires_after="2026-06-01">
  <owner>hvs@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    This metric emits true when a user clicks on virtual card enrollment link
    from flows that start from the {EnrollmentSource}.
  </summary>
  <token key="EnrollmentSource"
      variants="Autofill.VirtualCardEnrollmentSource"/>
  <token key="LinkType" variants="Autofill.VirtualCardEnrollmentLinkType"/>
</histogram>

<histogram
    name="Autofill.VirtualCardEnrollBubble.ConfirmationResult.{IsCardEnrolled}"
    enum="AutofillVirtualCardEnrollBubbleResult" expires_after="2026-03-22">
  <owner>darwinyang@google.com</owner>
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason for closing the virtual card confirmation bubble.
    IsCardEnrolled ({IsCardEnrolled}) indicates whether the bubble shown was for
    a successful VCN enrollment or not. Recorded when the confirmation bubble is
    closed.
  </summary>
  <token key="IsCardEnrolled">
    <variant name="CardEnrolled"
        summary="Credit card was successfully enrolled."/>
    <variant name="CardNotEnrolled"
        summary="Credit card failed to be enrolled."/>
  </token>
</histogram>

<histogram
    name="Autofill.VirtualCardEnrollBubble.ConfirmationShown.{IsCardEnrolled}"
    enum="AutofillVirtualCardEnrollBubbleResult" expires_after="2026-05-10">
  <owner>darwinyang@google.com</owner>
  <owner>kavitasoni@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records if the virtual card confirmation bubble is shown after credit card
    enrollment is completed. IsCardEnrolled ({IsCardEnrolled}) indicates whether
    the confirmation bubble is for a successful VCN enrollment or not. Recorded
    after the confirmation bubble is shown or after the decision to not show the
    confirmation bubble.
  </summary>
  <token key="IsCardEnrolled">
    <variant name="CardEnrolled"
        summary="Credit card was successfully enrolled."/>
    <variant name="CardNotEnrolled"
        summary="Credit card failed to be enrolled."/>
  </token>
</histogram>

<histogram name="Autofill.VirtualCardEnrollBubble.LatencySinceDownstream"
    units="ms" expires_after="2026-06-01">
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the latency between card extraction of the server retrieved masked
    server card and the timestamp for when the Virtual Card Enroll Bubble is
    shown. This metric is logged right before the Virtual Card Enroll Bubble is
    shown, but if web contents are unavailable it will be logged before waiting
    for web contents to become available.
  </summary>
</histogram>

<histogram name="Autofill.VirtualCardEnrollBubble.LatencySinceUpstream"
    units="ms" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>hvs@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logs the latency between Save Card Bubble accepted and the timestamp for
    when the Virtual Card Enroll Bubble is shown. This metric is logged right
    before the Virtual Card Enroll Bubble is shown, but if web contents are
    unavailable it will be logged before waiting for web contents to become
    available.
  </summary>
</histogram>

<histogram name="Autofill.VirtualCardEnrollBubble.LoadingResult"
    enum="AutofillVirtualCardEnrollBubbleResult" expires_after="2026-06-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason for closing the virtual card loading bubble. Recorded
    when the loading bubble is closed.
  </summary>
</histogram>

<histogram name="Autofill.VirtualCardEnrollBubble.LoadingShown"
    enum="AutofillVirtualCardEnrollBubbleResult" expires_after="2026-06-01">
  <owner>darwinyang@google.com</owner>
  <owner>chrome-payments-eng@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records if the virtual card loading bubble is shown during credit card
    enrollment. Recorded after the loading bubble is shown or after the decision
    to not show the loading bubble.
  </summary>
</histogram>

<histogram name="Autofill.VirtualCardEnrollBubble.MaxStrikesLimitReached"
    enum="AutofillVirtualCardEnrollmentSource" expires_after="2026-06-01">
  <owner>vinnypersky@google.com</owner>
  <owner>hvs@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    This metric is recorded every time the virtual card enrollment bubble would
    have been offered but is not offered due to the maximum number of strikes
    being reached. It logs the source for the flow where the bubble would have
    been shown, if the strike limit did not block it (for example, upstream i.e.
    the save card flow).
  </summary>
</histogram>

<histogram
    name="Autofill.VirtualCardEnrollBubble.Result.{EnrollmentSource}.{ShowType}{PreviousStrikes}"
    enum="AutofillVirtualCardEnrollBubbleResult" expires_after="2026-06-01">
  <owner>hvs@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason for closing the virtual card enroll bubble for flows that
    start from the {EnrollmentSource}. ShowType ({ShowType}) indicates whether
    the bubble is a first time show or a reshow triggered by the user. A
    subcategory indicating ({PreviousStrikes}) is also logged. Recorded when the
    bubble is closed.
  </summary>
  <token key="EnrollmentSource"
      variants="Autofill.VirtualCardEnrollmentSource"/>
  <token key="ShowType" variants="FirstShowOrReshow"/>
  <token key="PreviousStrikes" variants="Autofill.FeaturePreviousStrikes"/>
</histogram>

<histogram name="Autofill.VirtualCardEnrollBubble.Shown.{EnrollmentSource}"
    enum="BooleanPreviouslyShown" expires_after="2026-06-01">
  <owner>hvs@google.com</owner>
  <owner>siyua@chromium.org</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Records the reason for starting the virtual card enroll bubble for flows
    that start from {EnrollmentSource}. Recorded when the bubble is shown.
    Records false the first time the bubble is shown, true for subsequent bubble
    shows.
  </summary>
  <token key="EnrollmentSource"
      variants="Autofill.VirtualCardEnrollmentSource"/>
</histogram>

<histogram
    name="Autofill.VirtualCardEnrollmentStrikeDatabase.{EnrollmentSource}"
    enum="AutofillVirtualCardEnrollmentStrikeDatabaseEvent"
    expires_after="2026-04-19">
  <owner>hvs@google.com</owner>
  <owner>payments-autofill-team@google.com</owner>
  <summary>
    Logged when a strike is registered in the virtual card enrollment strike
    database because a user rejects the bubble, or when strikes are cleared
    because the user accepted enrollment.
  </summary>
  <token key="EnrollmentSource"
      variants="Autofill.VirtualCardEnrollmentSource"/>
</histogram>

<histogram name="Autofill.WebOTP.OneTimeCode.FillDuration.FromInteraction"
    units="ms" expires_after="2026-05-24">
  <owner>yigu@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <owner>web-identity-eng@google.com</owner>
  <summary>
    Time elapsed between the user's first interaction with a form and the form's
    submission, for form with autocomplete=&quot;one-time-code&quot;. An
    interaction requires changing a form control's value manually or via
    autofill. The interaction can happen on a different form than the one which
    is submitted. This is recorded once per form submission.
  </summary>
</histogram>

<histogram name="Autofill.WebOTP.OneTimeCode.FillDuration.FromLoad" units="ms"
    expires_after="2026-04-12">
  <owner>yigu@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <owner>web-identity-eng@google.com</owner>
  <summary>
    Time elapsed between form load and form submission, for forms with
    autocomplete=&quot;one-time-code&quot;. This is recorded once per form
    submission.
  </summary>
</histogram>

<histogram name="Autofill.WebOTP.OneTimeCode.FromAutocomplete" enum="Boolean"
    expires_after="2026-04-26">
  <owner>yigu@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <owner>web-identity-eng@google.com</owner>
  <summary>
    Records whether a frame has ever used autocomplete=&quot;one-time-code&quot;
    during its lifecycle. i.e. it's only recorded once per frame. In addition,
    we only record it if the frame has parsed forms.
  </summary>
</histogram>

<histogram name="Autofill.WebOTP.PhoneNumberCollection.ParseResult"
    enum="Boolean" expires_after="2026-02-22">
  <owner>yigu@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <owner>web-identity-eng@google.com</owner>
  <summary>
    Records whether a frame collects phone number based on the field
    classification. It records once per frame only if it has parsed forms.

    Note that the field types may not be calculated if there are less than 3
    fields in the form unless an autocomplete attribute is provided. e.g. if the
    form has only a single field regarding phone number without specifiying
    autocomplete=&quot;phone&quot;, a sample with &quot;false&quot; will be
    reported.
  </summary>
</histogram>

<histogram name="Autofill.WebOTP.PhonePlusWebOTPPlusOTC"
    enum="PhoneCollectionState" expires_after="2026-04-26">
  <owner>yigu@chromium.org</owner>
  <owner>web-identity-eng@google.com</owner>
  <summary>
    Records whether a document collected phone number, and/or used WebOTP,
    and/or used OneTimeCode (OTC) during its lifecycle. i.e. it's recorded in
    the browser process when a document is destroyed.
  </summary>
</histogram>

<histogram name="Autofill.WebView.AutofillSession" enum="AutofillSessionStates"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>Records the state of an autofill session.</summary>
</histogram>

<histogram name="Autofill.WebView.AutofillSessionWithBottomSheet"
    enum="AutofillSessionStates" expires_after="2026-01-27">
  <owner>jkeitel@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the state of an autofill session in the presence of a bottom sheet.
    Emitted at the end of a session (i.e. on submit, on start of a new session,
    or on destruction of the WebContents).
  </summary>
</histogram>

<histogram name="Autofill.WebView.Enabled" enum="BooleanEnabled"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Whether the autofill service is enabled in Android platform.
  </summary>
</histogram>

<histogram
    name="Autofill.WebView.Funnel.FillAfterInteraction{AutofillFormType}"
    enum="BooleanAutofillFillAfterInteraction" expires_after="2026-03-08">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users filled the form, given that they have already
    interacted with the form.

    This metric is recorded on Android WebView, only for forms that users
    interacted with. It is recorded only once per form, meaning that it does not
    matter if the user fills the form multiple times. If a form changes
    dynamically, then Autofill treats the different versions of the form as
    different forms. {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram
    name="Autofill.WebView.Funnel.InteractionAfterParsedAsType{AutofillFormType}"
    enum="BooleanAutofillParsedAsType" expires_after="2026-04-26">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users interacted with a form of a certain type.

    Focusing a field is sufficient to consider a form as being interacted with.
    The user does not need to type anything. Note that some forms may get
    focused on page load.

    This metric is recorded once per form observed by Autofill on Android
    WebView, but only for forms that Autofill classifies to be of the type
    indicated by the histogram name. If a form changes dynamically, Autofill
    interprets the forms before and after the change as two different forms and
    records two values. If a form did not have features that classify it as a
    form of a certain type (e.g. an address form or payment form), then nothing
    is recorded. {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram name="Autofill.WebView.Funnel.ParsedAsType{AutofillFormType}"
    enum="BooleanAutofillParsedAsType" expires_after="2026-12-12">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether a form was parsed/interpreted to be of the type indicated in
    the histogram name.

    This metric is recorded once for each form observed by Autofill on Android
    WebView. If a form changes dynamically, then Autofill treats the different
    versions of the form as different forms. {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram name="Autofill.WebView.Funnel.SubmissionAfterFill{AutofillFormType}"
    enum="BooleanAutofillSubmissionAfterFill" expires_after="2026-04-26">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts whether users submitted a form that was filled via autofill.

    This metric is recorded once for each form observed by Autofill on Android
    WebView but only for forms that the user filled via Autofill.
    {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram
    name="Autofill.WebView.KeyMetrics.FillingAssistance{AutofillFormType}"
    enum="BooleanAutofillFillingAssistance" expires_after="2026-05-03">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for submitted forms whether the user filled any fields via Autofill.

    If the user reverts the filling, the form is still counted as filled.

    This metric is different from Autofill.WebView.KeyMetrics.FillingAcceptance
    in the sense that the latter is only recorded if the user has actually seen
    a prompt to fill data. {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram
    name="Autofill.WebView.KeyMetrics.FillingCorrectness{AutofillFormType}"
    enum="BooleanAutofillFillingCorrectness" expires_after="2026-05-03">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for submitted and autofilled forms on Android WebView whether users
    edited at least one filled value before submitting the form.
    {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram
    name="Autofill.WebView.KeyMetrics.FormSubmission.Autofilled{AutofillFormType}"
    enum="BooleanAutofillSubmission" expires_after="2026-05-03">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for filled (by Autofill) forms whether users submitted those forms.

    This is only recorded for forms that the user filled via Autofill on Android
    WebView. It does not matter if the user reverted the filling afterwards.

    This is recorded once Autofill stops tracking the form (e.g. due to a
    navigation or due to removal from the DOM). {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram
    name="Autofill.WebView.KeyMetrics.FormSubmission.NotAutofilled{AutofillFormType}"
    enum="BooleanAutofillSubmission" expires_after="2026-05-03">
  <owner>pkotwicz@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Counts for not filled (by Autofill) forms whether users submitted those
    forms.

    This is only recorded for Android WebView. It is only recorded for forms for
    which the user typed anything but did not fill anything. It does not matter
    if the user reverted what they typed.

    This is recorded once Autofill stops tracking the form (e.g. due to a
    navigation or due to removal from the DOM). {AutofillFormType}
  </summary>
  <token key="AutofillFormType" variants="AutofillFormType"/>
</histogram>

<histogram name="Autofill.WebView.PrefillRequestState"
    enum="AndroidAutofillPrefillRequestState" expires_after="2026-12-12">
  <owner>jkeitel@google.com</owner>
  <owner>jihadghanna@google.com</owner>
  <owner>elabadysayed@chromium.org</owner>
  <summary>
    Records the state of a prefill request (was a request sent, was it answered,
    was a bottom sheet shown) for a form that was deemed cacheable. Emitted
    whenever OnAskForValuesToFill is triggered on a cacheable form.
  </summary>
</histogram>

<histogram name="Autofill.WebView.Provider.PackageName"
    enum="AutofillProviderPackageName" expires_after="2026-04-26">
  <owner>alexmitra@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records the Autofill provider on the device if it matches a fixed list of
    package names or unknown otherwise. This is recorded once for a given
    AwContents. It is recorded on AutofillProvider initialization. Only recorded
    in Android P and beyond.
  </summary>
</histogram>

<histogram name="Autofill.WebView.ServerPrediction.AwGSuggestionAvailability"
    enum="AutofillAwGSuggestionAvailability" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether Autofill with Google has suggestions and if the user selects
    any suggestion. It is recorded when the form is submitted. Only recorded in
    Android P and beyond.
  </summary>
</histogram>

<histogram name="Autofill.WebView.ServerPredicton.HasValidServerPrediction"
    enum="BooleanYesNo" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether the server prediction of any field isn't NO_SERVER_DATA.
    This histogram is recorded when the server prediction is available for the
    current form.
  </summary>
</histogram>

<histogram name="Autofill.WebView.ServerPredicton.PredictionAvailability"
    enum="AutofillServerPredictionAvailability" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>
    Records whether and when the server prediction response of current autofill
    session is available even if query failed or there is no server data. This
    histogram is recorded when the prediction becomes available or the new
    session starts.
  </summary>
</histogram>

<histogram name="Autofill.WebView.SubmissionSource"
    enum="AutofillSubmissionSource" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>Records the source of form submission.</summary>
</histogram>

<histogram name="Autofill.WebView.SuggestionTime" units="ms"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>src/android_webview/OWNERS</owner>
  <summary>The time taken to display suggestion.</summary>
</histogram>

<histogram name="Autofill.YourSavedInfoSettingsPage.CategoryLinkClick"
    enum="YourSavedInfoDataCategory" expires_after="2026-10-28">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records clicks on data categories in the 'Your saved info' settings page.
    Emitted on every click on such a data category. Recorded on Desktop only.
  </summary>
</histogram>

<histogram name="Autofill.YourSavedInfoSettingsPage.DataChipClick"
    enum="YourSavedInfoDataChip" expires_after="2026-10-28">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records clicks on data chips in the 'Your saved info' settings page. Emitted
    on every click on such a data chip. Recorded on Desktop only.
  </summary>
</histogram>

<histogram name="Autofill.YourSavedInfoSettingsPage.RelatedServiceLinkClick"
    enum="YourSavedInfoRelatedService" expires_after="2026-10-28">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records clicks on Related Services links in the 'Your saved info' settings
    page. Emitted on every click on such a Related Service link. Recorded on
    Desktop only.
  </summary>
</histogram>

<histogram name="Autofill.YourSavedInfoSettingsPage.VisitReferrer"
    enum="AutofillSettingsReferrer" expires_after="2026-10-28">
  <owner>ireneuszszulc@google.com</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the entry point (referrer) every time the user visits the 'Your
    saved info' settings page from a tracked entry point. This metric is emitted
    on navigation to the page, with the enum values distinguishing the entry
    points (different ways of reaching the page). Only applicable on Desktop.
  </summary>
</histogram>

<histogram name="WebDatabase.AutofillAccountStorage"
    enum="WebDatabaseAutofillAccountStorageResult" expires_after="2026-05-24">
  <owner>mastiz@chromium.org</owner>
  <owner>droger@chromium.org</owner>
  <summary>
    Recorded upon construction of WebDataService, usually during profile
    startup, it logs whether the web database used for autofill account data is
    stored in-memory only or on-disk. Rather than logging two possible values,
    it also conveys the reason why a specific choice was made. Recorded on
    desktop only, as on mobile the storage is always on disk.
  </summary>
</histogram>

<histogram name="WebDatabase.AutofillWebDataBackendImpl.OperationResult"
    enum="AutofillWebDataBackendImplOperationResult" expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records the success or failure of various database operations in
    autofill::AutofillWebDataBackendImpl.
  </summary>
</histogram>

<histogram name="WebDatabase.DatabaseErrors" enum="SqliteLoggedResultCode"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>Records the errors reported by SQLite.</summary>
</histogram>

<histogram name="WebDatabase.FailedMigrationToVersion" units="version"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    If a migration to a new WebDatabase schema fails, this histogram records the
    target version to which the migration failed.
  </summary>
</histogram>

<histogram name="WebDatabase.InitResult" enum="WebDatabaseInitResult"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Records whether WebDatabase::Init succeeds or otherwise a failure reason.
  </summary>
</histogram>

<histogram name="WebDatabase.SucceededMigrationToVersion" units="version"
    expires_after="2026-12-12">
  <owner>battre@chromium.org</owner>
  <owner>fleimgruber@google.com</owner>
  <summary>
    If a migration to a new WebDatabase schema succeeds, this histogram records
    the target version to which the migration failed.
  </summary>
</histogram>

</histograms>

</histogram-configuration>