<!--
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 Password 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="CustomPassphraseStatus">
  <variant name=""/>
  <variant name=".WithCustomPassphrase"
      summary="encrypted with custom passphrase"/>
  <variant name=".WithoutCustomPassphrase" summary="regularly encrypted"/>
</variants>

<variants name="PasswordCheckupOperation">
  <variant name="GetBreachedCredentialsCount"
      summary="get breached credentials count"/>
  <variant name="GetIntent" summary="get password checkup UI intent"/>
  <variant name="RunPasswordCheckup" summary="run password checkup"/>
</variants>

<variants name="PasswordManagerSetting">
  <variant name="AutoSignIn" summary="auto sign in preference"/>
  <variant name="OfferToSavePasswords"
      summary="offer to save passwords preference"/>
</variants>

<variants name="PasswordManagerSettingAccessorFunction">
  <variant name="GetSettingValue" summary="retrieve the current value"/>
  <variant name="SetSettingValue" summary="set a new value"/>
</variants>

<variants name="PasswordProtectionTriggerType">
  <variant name="AnyPasswordEntry" summary="password reuse event"/>
  <variant name="PasswordFieldOnFocus" summary="on focus event"/>
</variants>

<variants name="PasswordStoreBackendFunction">
  <variant name="AddLoginAsync" summary="AddLoginAsync()"/>
  <variant name="DisableAutoSignInForOriginsAsync"
      summary="DisableAutoSignInForOriginsAsync()"/>
  <variant name="FillMatchingLoginsAsync" summary="FillMatchingLoginsAsync()"/>
  <variant name="GetAllLoginsAsync" summary="GetAllLoginsAsync()"/>
  <variant name="GetAutofillableLoginsAsync"
      summary="GetAutofillableLoginsAsync()"/>
  <variant name="GetGroupedMatchingLoginsAsync"
      summary="GetGroupedMatchingLoginsAsync()"/>
  <variant name="GetLoginsAsync" summary="GetLoginsAsync()"/>
  <variant name="RemoveLoginAsync" summary="RemoveLoginAsync()"/>
  <variant name="RemoveLoginsByURLAndTimeAsync"
      summary="RemoveLoginsByURLAndTimeAsync()"/>
  <variant name="RemoveLoginsCreatedBetweenAsync"
      summary="RemoveLoginsCreatedBetweenAsync()"/>
  <variant name="UpdateLoginAsync" summary="UpdateLoginAsync()"/>
</variants>

<variants name="PasswordType">
  <variant name="AutoGenerated" summary="automatically generated"/>
  <variant name="Overall" summary="generated or created or shared"/>
  <variant name="ReceivedViaSharing"
      summary="received via sharing from other users"/>
  <variant name="UserCreated" summary="created by the user"/>
</variants>

<variants name="ProfileType">
  <variant name="Account"/>
  <variant name="LocalProfile"/>
</variants>

<variants name="Scheme">
  <variant name=""/>
  <variant name=".Android" summary="The password is for an Android app."/>
  <variant name=".Ftp" summary="The scheme of the origin is FTP."/>
  <variant name=".Http" summary="The scheme of the origin is HTTP."/>
  <variant name=".Https" summary="The scheme of the origin is HTTPS."/>
  <variant name=".Other" summary="The scheme of the origin is something else."/>
</variants>

<variants name="Store">
  <variant name="AccountStore." summary="for account-scoped store"/>
  <variant name="ProfileStore." summary="for profile-scoped store"/>
</variants>

<variants name="UPMMigrationType">
  <variant name="InitialMigrationForSyncUsers"
      summary="migrating passwords from build-in backend to android backend
               for sync users after enrolling into the UPM experiment"/>
  <variant name="MigrationForLocalUsers"
      summary="migrating passwords between android backend and build-in
               backend to ensure consistency for local users"/>
  <variant name="NonSyncableDataMigrationToAndroidBackend"
      summary="migrating non-syncable data to the android backend when
               password sync gets enabled"/>
  <variant name="NonSyncableDataMigrationToBuiltInBackend"
      summary="migrating non-syncable data to the built-in backend when
               password sync gets disabled"/>
  <variant name="ReenrollmentAttemptMigration"
      summary="migrating non-syncable data to the android backend when
               performing reenrollment possibility check"/>
</variants>

<variants name="UserSyncingType">
  <variant name="" summary="all users."/>
  <variant name=".SignedInAccountStoreUser"
      summary="signed-in user, opted in to the account storage, and saving
               passwords to the account storage."/>
  <variant name=".SignedInAccountStoreUserSavingLocally"
      summary="signed-in user and opted in to the account storage, but has
               chosen to save passwords only on the device."/>
  <variant name=".SignedInUser"
      summary="signed-in user, not opted in to the account storage (but will
               save passwords to the account storage by default)."/>
  <variant name=".SignedInUserSavingLocally"
      summary="signed-in user, not opted in to the account storage, and has
               explicitly chosen to save passwords only on the device."/>
  <variant name=".SignedOutAccountStoreUser"
      summary="signed-out user, but an account storage opt-in exists."/>
  <variant name=".SignedOutUser"
      summary="signed-out user (and no account storage opt-in exists)."/>
  <variant name=".SyncUser" summary="syncing user."/>
</variants>

<histogram name="KeyboardAccessory.AccessoryActionImpression"
    enum="AccessoryAction" expires_after="2024-03-10">
  <owner>fhorschig@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Android only. Records whenever users faces an action in the accessory bar or
    one of its sheets.
  </summary>
</histogram>

<histogram name="KeyboardAccessory.AccessoryActionSelected"
    enum="AccessoryAction" expires_after="2024-03-10">
  <owner>fhorschig@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Android only. Records whenever users select an action in the accessory bar
    or one of its sheets.
  </summary>
</histogram>

<histogram name="KeyboardAccessory.AccessorySheetSuggestionsSelected"
    enum="AccessorySuggestionType" expires_after="2024-03-10">
  <owner>fhorschig@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Android only. Records which type of suggestion was selected from an open
    sheet.
  </summary>
</histogram>

<histogram name="KeyboardAccessory.AccessorySheetTriggered"
    enum="AccessorySheetTrigger" expires_after="2024-03-10">
  <owner>fhorschig@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Android only. Records how often the bottom sheet was opened or closed by a
    user and the overall count of closures. Closing buckets may be logged up to
    one time per trigger. There are suffixes for each specific sheet type.
  </summary>
</histogram>

<histogram name="KeyboardAccessory.AccessoryToggleClicked"
    enum="AccessoryToggleType" expires_after="2024-03-10">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Android only. Records how often the user clicks on a certain toggle when
    opening an accessory sheet together with the state the toggle was in before
    clicking.
  </summary>
</histogram>

<histogram name="KeyboardAccessory.AccessoryToggleImpression"
    enum="AccessoryToggleType" expires_after="2024-03-10">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Android only. Records how often the user sees a certain toggle when opening
    an accessory sheet together with the state the toggle was in.
  </summary>
</histogram>

<histogram name="KeyboardAccessory.DisabledSavingAccessoryImpressions"
    enum="BooleanShown" expires_after="2024-01-07">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Android only. Records the number of times that the keyboard accessory was
    shown on a form for which saving is disabled (with a crossed-out key icon).
    Recorded when the user focuses the password field.

    Note: Only the &quot;Shown&quot; bucket should contain samples.
  </summary>
</histogram>

<histogram name="KeyboardAccessory.GenerationDialogChoice.{GenerationType}"
    enum="GenerationDialogChoice" expires_after="M121">
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Android only. Records the interactions with the password generation dialog
    for {GenerationType}. Recorded when the user taps a button in the dialog or
    dismsses it.
  </summary>
  <token key="GenerationType">
    <variant name="Automatic" summary="automatic generation"/>
    <variant name="Manual" summary="manual generation"/>
  </token>
</histogram>

<histogram name="PasswordBubble.BiometricAuthenticationPromo.AcceptClicked"
    enum="BooleanSuccess" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records whether user clicked accept button on the Biometric Authentication
    before filling promo dialog. Recorded when the dialog is closed.
  </summary>
</histogram>

<histogram name="PasswordBubble.CompromisedBubble.CheckClicked"
    enum="BooleanClicked" expires_after="2024-02-11">
  <owner>vasilii@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    Whether the user proceeded to the list of the left compromised passwords
    from the bubble following save/update password.
  </summary>
</histogram>

<histogram name="PasswordBubble.CompromisedBubble.Type"
    enum="PasswordBubbleFollowupType" expires_after="2024-03-03">
  <owner>vasilii@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    The state of the bubble shown after users saves/updates a password. It
    notifies the user about leftover compromised passwords.
  </summary>
</histogram>

<histogram name="PasswordBubble.DisplayDisposition"
    enum="PasswordBubbleDisplayDisposition" expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <summary>
    When the password management bubble opened, what state was it in?
  </summary>
</histogram>

<histogram
    name="PasswordGeneration.EditsInGeneratedPassword.AlteredLengthIncreased"
    enum="GeneratedPasswordAlteredLengthIncreased" expires_after="2024-03-24">
  <owner>kolos@chromium.org</owner>
  <owner>shaikhitdin@google.com</owner>
  <summary>
    Measures difference in length between generated password and submitted
    password. False if length decreased, true if length increased. Uploaded once
    per modified generated password submission.
  </summary>
</histogram>

<histogram name="PasswordGeneration.EditsInGeneratedPassword.AttributesMask"
    enum="EditsInGeneratedPasswordMask" expires_after="2024-03-24">
  <owner>kolos@chromium.org</owner>
  <owner>shaikhitdin@google.com</owner>
  <summary>
    Measures types of user editing of generated passwords. Mask tracks if there
    are several types of changes simultaneously happening on generated password.
    Uploaded once per modified generated password submission.
  </summary>
</histogram>

<histogram name="PasswordGeneration.EditsInGeneratedPassword.{CharacterClass}"
    enum="CharacterClassPresenceChange" expires_after="2024-02-20">
  <owner>kolos@chromium.org</owner>
  <owner>shaikhitdin@google.com</owner>
  <summary>
    Measures difference in {CharacterClass} between generated password and
    submitted password. Uploaded once per modified generated password
    submission.
  </summary>
  <token key="CharacterClass">
    <variant name="Letters"/>
    <variant name="Lowercase"/>
    <variant name="Numerics"/>
    <variant name="Symbols"/>
    <variant name="Uppercase"/>
  </token>
</histogram>

<histogram name="PasswordGeneration.Event" enum="PasswordGenerationEvent"
    expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Measures the frequency of various password generation events.

    Note that this histogram is logged from the renderer process, and
    consequently the numbers should not be directly compared to the other
    PasswordGeneration.* histograms, which are logged from the browser process.
    Histograms logged in different processes are lost at different rates, which
    introduces systematic bias between histograms logged in the renderer process
    vs. those logged in the browser process.
  </summary>
</histogram>

<histogram name="PasswordGeneration.GeneratedPasswordWasEdited"
    enum="BooleanGeneratedPasswordWasEdited" expires_after="2024-03-17">
  <owner>kolos@chromium.org</owner>
  <summary>
    Measures the frequency of user editing of generated passwords. Uploaded once
    per generated password save. Applicable to automatic and manual generations.
  </summary>
</histogram>

<histogram name="PasswordGeneration.PopupShown"
    enum="PasswordGenerationPopupShown" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>Records an entry if (and only if) a popup was shown.</summary>
</histogram>

<histogram name="PasswordGeneration.SubmissionAvailableEvent"
    enum="PasswordSubmissionEvent" expires_after="M125">
  <owner>kazinova@google.com</owner>
  <owner>shaikhitdin@google.com</owner>
  <owner>chrome-password-manager-metrics-alerts@google.com</owner>
  <summary>
    Measures the frequency of submission events for passwords that could have
    been generated, but the user didn't choose to use the feature. This is to
    compare with PasswordGeneration.SubmssionEvent.
  </summary>
</histogram>

<histogram name="PasswordGeneration.SubmissionEvent"
    enum="PasswordSubmissionEvent" expires_after="2024-02-25">
  <owner>kazinova@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    Measures the frequency of submission events for generated passwords. This is
    similar to PasswordManager.ActionsTakenWithPsl but only tracks events which
    are interesting for generated passwords.
  </summary>
</histogram>

<histogram name="PasswordGeneration.UploadStarted" enum="Boolean"
    expires_after="M117">
  <obsolete>
    Obsolete in M116.
  </obsolete>
  <owner>kazinova@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of times that we try to upload a form that we believe should
    trigger password generation. False means that something about the form would
    not allow us to try upload (not an Autofillable field, uploading disabled,
    Autofill servers in backoff, etc.). True does not mean that the upload
    actually completed successfully, just that it was started.
  </summary>
</histogram>

<histogram name="PasswordGeneration.UserDecision"
    enum="PasswordGenerationUserEvent" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records user-triggered events related to a generated password. Only the last
    occurring event is logged. The recording takes place when the password form
    is destroyed.
  </summary>
</histogram>

<histogram name="PasswordHash.CreateTime" units="units" expires_after="M85">
  <owner>mlerman@chromium.org</owner>
  <summary>
    Time required to create the local hash of the user's GAIA password.
  </summary>
</histogram>

<histogram name="PasswordManager.AbleToSavePasswordsOnSuccessfulLogin"
    enum="BooleanSuccess" expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <owner>src/components/password_manager/OWNERS</owner>
  <summary>
    Records attempts to prompt user to save a password when password store is
    not ready for saving passwords due to an initialization error. Recorded once
    per form submission.
  </summary>
</histogram>

<histogram name="PasswordManager.AcceptedSaveUpdateSubmissionIndicatorEvent"
    enum="SubmissionIndicatorEvent" expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The type of event that the Password Manager used for detecting a password
    form submission when saving or updating a password. Recorded each time a
    user accepts a password save/update prompt.
  </summary>
</histogram>

<histogram name="PasswordManager.AccessPasswordInSettings"
    enum="AccessPasswordInSettingsEvent" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Recorded whenever the user accesses the passwords in the settings page.
  </summary>
</histogram>

<histogram
    name="PasswordManager.AccountStorage.MoveToAccountStoreFlowAccepted2"
    enum="PasswordManager.MoveToAccountStoreTrigger" expires_after="2024-02-04">
  <owner>treib@chromium.org</owner>
  <owner>victorvianna@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    When the user accepts to move a password from the profile store to the
    account store, this records what user action caused the moving flow to be
    offered. If the flow is offered but rejected by the user, the histogram is
    not recorded. Recorded only in Win/Mac/Linux/iOS and only once during bulk
    move from settings.
  </summary>
</histogram>

<histogram name="PasswordManager.AccountStorage.MoveToAccountStoreFlowOffered"
    enum="PasswordManager.MoveToAccountStoreTrigger" expires_after="2024-02-25">
  <owner>treib@chromium.org</owner>
  <owner>victorvianna@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    When the user is offered to move a password from the profile store to the
    account store, this records what user action caused the moving flow to be
    offered. Recorded only in Win/Mac/Linux/iOS.
  </summary>
</histogram>

<histogram name="PasswordManager.AccountStorage.NumOptedInAccountsAfterOptIn"
    units="accounts" expires_after="2024-03-24">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    Recorded whenever a user opts in to the account-scoped password storage. The
    recorded value is the total number of opted-in accounts in this profile,
    including the new opt-in.
  </summary>
</histogram>

<histogram name="PasswordManager.AccountStorage.NumOptedInAccountsAfterOptOut"
    units="accounts" expires_after="2023-12-24">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    Recorded whenever a user opts out of the account-scoped password storage.
    The recorded value is the total number of opted-in accounts remaining in
    this profile after the current opt-out.
  </summary>
</histogram>

<histogram
    name="PasswordManager.AccountStorage.UnsyncedPasswordsFoundDuringSignOut"
    units="passwords" expires_after="2024-02-11">
  <owner>treib@chromium.org</owner>
  <owner>victorvianna@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Records how many passwords in the account store were unsynced when the user
    signed out of their Google Account. Recorded only in Win/Mac/Linux when a
    user of the account-scoped password storage signs out.
  </summary>
</histogram>

<histogram
    name="PasswordManager.AccountStorageNoticeDismissalReason{EntryPoint}"
    enum="PasswordsAccountStorageNoticeDismissalReason"
    expires_after="2024-03-28">
  <owner>victorvianna@google.com</owner>
  <owner>src/components/password_manager/OWNERS</owner>
  <summary>
    Records the action that caused the one-time account storage notice to be
    dismissed. Recorded for {EntryPoint} once both the bottom sheet and password
    settings have been closed (the latter only in case the user clicked &quot;go
    to settings&quot;). Mobile-only (in fact only iOS as of 03/2023).
  </summary>
  <token key="EntryPoint">
    <variant name="" summary="all entry points"/>
    <variant name=".Fill" summary="the fill entry point"/>
    <variant name=".Save" summary="the save entry point"/>
    <variant name=".Update" summary="the update entry point"/>
  </token>
</histogram>

<histogram name="PasswordManager.AccountStorageOptInSwitchFlipped"
    enum="Boolean" expires_after="2024-01-28">
  <owner>victorvianna@google.com</owner>
  <owner>src/components/password_manager/OWNERS</owner>
  <summary>
    Records the new state (enabled/disabled) of the account storage opt-in
    switch in password settings. Recorded when the switch is flipped by the
    user, only on iOS.
  </summary>
</histogram>

<histogram
    name="PasswordManager.AccountStorageUserStateDuration{UserSyncingType}"
    units="ms" expires_after="2024-02-12">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    The amount of active browsing time that was spent in different user states
    related to the PasswordManager's account-scoped storage.

    This time is measured from when the user starts interacting with the browser
    until either they stopped interacting with the browser (as determined by
    DesktopSessionDurationTracker) or their user state changes. These end-points
    are when the metric is emitted.

    Because a duration can end either because the user became inactive or
    because their status changed, the distribution of individual durations
    measured are unlikely to be helpful. Instead, please compare total
    durations.

    This metric is only recorded on Win/Mac/Linux/iOS (iOS from M113).

    Note: As part of crbug/1223007, we discovered that histogram
    PasswordManager.AccountStorageUserStateDuration.SignedOutUser was recorded
    for Guest and System profiles which wasn't intentional. This was fixed in
    M93.

    One caveat with this metric is that if the user has multiple profiles open
    at the same time, their session activity will be logged from all the
    profiles, instead of only from the profile that the user is using at that
    moment.

    Recorded for {UserSyncingType}
  </summary>
  <token key="UserSyncingType" variants="UserSyncingType"/>
</histogram>

<histogram name="PasswordManager.AccountStoreBlocklistedEntriesAfterOptIn"
    units="credentials" expires_after="2024-02-20">
  <owner>treib@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Records how many blocklisting entries are downloaded to the account store
    after unlocking account store.
  </summary>
</histogram>

<histogram name="PasswordManager.AccountStoreCredentialsAfterOptIn"
    units="credentials" expires_after="2024-02-20">
  <owner>treib@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Records how many non-blacklisting credentials are downloaded to the account
    store after unlocking account store.
  </summary>
</histogram>

<histogram name="PasswordManager.AccountStoreVsProfileStore4.{DifferenceType}"
    units="accounts" expires_after="2024-02-20">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    The number of accounts {DifferenceType}. Recorded soon after startup at most
    one per day for regular profiles and only if user opted in to the
    account-scoped storage.
  </summary>
  <token key="DifferenceType">
    <variant name="Additional"
        summary="stored in the password manager's account-scoped store that
                 don't exist in the profile-scoped store"/>
    <variant name="Conflicting"
        summary="stored in the password manager with a conflicting password
                 between the account-scoped store and profile-scoped store
                 (i.e. the signon realm and username match, but the password
                 does not)"/>
    <variant name="Identical"
        summary="stored in both the password manager's account-scoped store
                 and profile-scoped store"/>
    <variant name="Missing"
        summary="stored in the password manager's profile-scoped store that
                 don't exist in the account-scoped store"/>
  </token>
</histogram>

<histogram name="PasswordManager.AddCredentialFromSettings.AccountStoreUsed2"
    enum="Boolean" expires_after="M120">
  <owner>mamir@google.com</owner>
  <summary>
    Tracks which store is used when the user adds a new credential from
    Settings. True means account store, false means device store. Recorded only
    for users who opted in for account storage and thus are given a choice. Only
    applicable to Desktop platform.
  </summary>
</histogram>

<histogram name="PasswordManager.AddCredentialFromSettings.UserAction"
    enum="AddCredentialFromSettingsUserInteractions" expires_after="2023-06-04">
  <obsolete>
    Obsolete in M110 because imported passwords were counted as manually added:
    https://crbug.com/1400263. Replaced with
    PasswordManager.AddCredentialFromSettings.UserAction2 histogram.
  </obsolete>
  <owner>vidhanj@google.com</owner>
  <summary>
    Records the user actions performed when a new credential is added from
    Settings. Only applicable to Desktop and iOS platforms.
  </summary>
</histogram>

<histogram name="PasswordManager.AddCredentialFromSettings.UserAction2"
    enum="AddCredentialFromSettingsUserInteractions" expires_after="2024-02-11">
  <owner>vidhanj@google.com</owner>
  <summary>
    Records the user actions performed when a new credential is added from
    Settings. Only applicable to Desktop and iOS platforms.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationBackend.FetchSize" units="facets"
    expires_after="2024-03-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of facets for which affiliation information was requested in a
    network fetch. Recorded for each network fetch. Warning: this histogram was
    expired from M90 to M92; data may be missing.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationBackend.FirstFetchDelay" units="ms"
    expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time elapsed between creation of the AffiliationBackend and the first
    time it needed to issue a network fetch. Warning: this histogram was expired
    from M90 to M92; data may be missing.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationBackend.SubsequentFetchDelay"
    units="ms" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The elapsed time between subsequent network fetches. Recorded whenever the
    AffiliationBackend initiated a network fetch, regardless of success or
    failure. Warning: this histogram was expired from M90 to M92; data may be
    missing.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationDatabase.Error"
    enum="SqliteLoggedResultCode" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Errors reported by SQLite while using the affiliation database database.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationDatabase.StoreResult"
    enum="StoreAffiliationResult" expires_after="2024-03-03">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>The result of AffiliationDatabase::Store call.</summary>
</histogram>

<histogram name="PasswordManager.AffiliationFetcher.FailedToParseResponse"
    enum="Boolean" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Recorded only when serialized response from the Affiliation Service can't be
    parsed.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationFetcher.FetchErrorCode"
    enum="NetErrorCodes" expires_after="M121">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The network error code, as reported by the underlying URLFetcher. Recorded
    only for each network fetch that failed due to network/server errors.
    Warning: this histogram was expired from M90 to M92; data may be missing.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationFetcher.FetchHttpResponseCode"
    enum="HttpResponseCode" expires_after="2024-03-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The HTTP response code, as reported by the underlying URLFetcher. Recorded
    only for each network fetch that failed due to network/server errors.
    Warning: this histogram was expired from M90 to M92; data may be missing.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationFetcher.FetchResult"
    enum="AffiliationFetchResult" expires_after="2024-03-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Whether the network fetch succeeded, failed due to network/server errors, or
    contained malformed data. Recorded for each network fetch.
  </summary>
</histogram>

<histogram name="PasswordManager.AffiliationFetcher.FetchTime.{Status}"
    units="ms" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time elapsed between sending a request to AffiliationService and
    receiving a response. Recorded only when request {Status}.
  </summary>
  <token key="Status">
    <variant name="Failure" summary="failed"/>
    <variant name="Malformed" summary="was malformed"/>
    <variant name="Success" summary="succeeded"/>
  </token>
</histogram>

<histogram name="PasswordManager.AffiliationFetcher.ResponseSize.{Status}"
    units="bytes" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The size of an affiliation service hash lookup response in bytes. Recorded
    only when request {Status}.
  </summary>
  <token key="Status">
    <variant name="Malformed" summary="was malformed"/>
    <variant name="Success" summary="succeeded"/>
  </token>
</histogram>

<histogram name="PasswordManager.AffiliationService.GetChangePasswordUsage"
    enum="GetChangePasswordUrlMetric" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Usage and timing of the Affiliation Service GetChangePasswordUrl call.
  </summary>
</histogram>

<histogram name="PasswordManager.ApplySyncChanges.AddLoginSyncError"
    enum="PasswordAddLoginSyncError" expires_after="2023-11-12">
  <owner>mamir@chromium.org</owner>
  <owner>mastiz@chromium.org</owner>
  <summary>
    Records different results upon adding a remote password to the password
    manager. It is recorded every time after receiving remote password
    incremental updates from the server.
  </summary>
</histogram>

<histogram name="PasswordManager.ApplySyncChanges.UpdateLoginSyncError"
    enum="PasswordUpdateLoginSyncError" expires_after="2023-11-12">
  <owner>mamir@chromium.org</owner>
  <owner>mastiz@chromium.org</owner>
  <summary>
    Records different results upon updating a remote password to the password
    manager. It is recorded every time after receiving remote password
    incremental updates from the server. Warning: this histogram was expired
    from 2021-07-31 to 2022-11-17; data may be missing.
  </summary>
</histogram>

<histogram name="PasswordManager.ApplySyncChangesState"
    enum="PasswordApplyIncrementalSyncChangesState" expires_after="2024-03-05">
  <owner>mamir@chromium.org</owner>
  <owner>mastiz@chromium.org</owner>
  <summary>
    Records different states upon applying remote sync changes to the password
    manager. It recorded every time after receiving remote password incremental
    updates from the server. Warning: this histogram was expired from 2021-07-31
    to 2022-11-17; data may be missing.
  </summary>
</histogram>

<histogram name="PasswordManager.AutomaticChange.AcceptanceWithAutoButton"
    enum="PasswordCheckResolutionAction" expires_after="2023-05-07">
  <obsolete>
    Obsolete in M110 after automated password change deprecation.
  </obsolete>
  <owner>kolos@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Resolution action to fix a compromised credential when there is a
    &quot;Change password automatically&quot; button.
  </summary>
</histogram>

<histogram name="PasswordManager.AutomaticChange.AcceptanceWithoutAutoButton"
    enum="PasswordCheckResolutionAction" expires_after="2024-01-07">
  <owner>kolos@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Resolution action to fix a compromised credential when there is no
    &quot;Change password automatically&quot; button. Starting with M110, no
    credential will have a button to change the password automatically anymore
    so this is recorded for all compromised credentials.
  </summary>
</histogram>

<histogram
    name="PasswordManager.AutomaticChange.AssistantStoppedBubbleCloseReason"
    enum="PasswordManager.AssistantStoppedBubble.CloseReason"
    expires_after="2023-09-26">
  <obsolete>
    Obsolete in M110 after automated password change deprecation.
  </obsolete>
  <owner>brunobraga@google.com</owner>
  <owner>jkeitel@google.com</owner>
  <summary>
    The reason why the &quot;Assistant stopped&quot; bubble was closed. The
    bubble is shown when an automatic password change flow on Desktop is ended
    prematurely.
  </summary>
</histogram>

<histogram name="PasswordManager.AutomaticChange.ForSitesWithScripts"
    enum="PasswordCheckResolutionAction" expires_after="2023-05-27">
  <obsolete>
    Obsolete in M110 after automated password change deprecation.
  </obsolete>
  <owner>kolos@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Resolution action to fix a compromised credential when there is a password
    change script for the credential's domain. The metric is reported also if
    the automated password change feature is disabled.
  </summary>
</histogram>

<histogram name="PasswordManager.AutoSigninFirstRunDialog"
    enum="AutoSigninFirstRun" expires_after="2024-02-25">
  <owner>vasilii@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    The dismissal reason of the auto-signin first run experience.
  </summary>
</histogram>

<histogram name="PasswordManager.BiometricAuthBeforeFillingEnabled2"
    enum="BooleanEnabled" expires_after="2024-02-25">
  <owner>kazinova@google.com</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Indicates whether biometric authentication before filling is enabled.
    Recorded 30 seconds after PasswordStore is created which happens at most
    once per day for regular profiles.
  </summary>
</histogram>

<histogram name="PasswordManager.BiometricAuthPwdFill.AuthResult"
    enum="DeviceAuthFinalResult" expires_after="2023-12-04">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records the result of the attempt to re-auth the user via biometrics when
    filling a password or signing in from the account chooser dialog. From M97,
    CancelledByChrome is recorded when the auth is cancelled and before the auth
    result actually returns.
  </summary>
</histogram>

<histogram name="PasswordManager.BiometricAuthPwdFill.CanAuthenticate"
    enum="BiometricsAvailability" expires_after="2024-03-24">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Recorded whenever a password filling surface or the account chooser dialog
    checks whether it can use biometrics to re-authenticate the user.
  </summary>
</histogram>

<histogram name="PasswordManager.BiometricAvailabilityWin"
    enum="BiometricAuthenticationStatusWin" expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Recorded any time a client of AuthenticatorWin requests to check biometric
    availability. If availability can't be checked, it records that immediately.
    If it can be checked, it records the status when the callback for
    OnAvailabilityReceived is invoked.
  </summary>
</histogram>

<histogram name="PasswordManager.BubbleSuppression.AccountsInStatisticsTable2"
    units="accounts" expires_after="M125">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of accounts stored in password_manager::StatisticsTable. These
    are accounts for which the user ignored the save bubble at least once. The
    count is recorded once per browser start-up for regular profiles. (In case
    of multiple profiles, the counts are for the profile that first has a
    WebContents created.)
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.CanceledTime" units="ms"
    expires_after="2024-02-04">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    The time the password bulk check was running until canceled by the user.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.CheckedCredentials"
    units="credentials" expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Count of credentials analyzed when the password bulk check completed
    successfully. Note that this counts unique username+password pairs, so in
    the case of password reuse, this does not correspond to the number of
    user-visible credentials.
  </summary>
</histogram>

<histogram
    name="PasswordManager.BulkCheck.CompromisedCredentialsCountAfterCheckAndroid"
    units="credentials" expires_after="2024-03-24">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Count of compromised credentials shown in the UI, recorded whenever a bulk
    leak check finished successfully. As opposed to 'BulkCheck.LeaksFound', this
    metric includes duplicates (i.e. same username+password pair saved for
    multiple domains), and it also includes other types of compromised
    credentials (e.g. phished).
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.Error"
    enum="PasswordLeakDetectionError" expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>Error encountered during the password bulk check.</summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.InsecureCredentials.Count"
    units="credentials" expires_after="2024-01-28">
  <owner>eic@google.com</owner>
  <owner>noemies@google.com</owner>
  <summary>
    Count of unique pairs of username-password present in a compromised, weak or
    reused credential warning. Recorded after every successful password check.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.InsecureCredentials.Unmuted.Count"
    units="credentials" expires_after="2024-03-01">
  <owner>eic@google.com</owner>
  <owner>noemies@google.com</owner>
  <summary>
    Count of unique pairs of username-password present in a compromised, weak or
    reused credential warning not muted by the user. Recorded after every
    successful password check.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.LeaksFound" units="credentials"
    expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Count of leaked credentials found when the password bulk check completed
    successfully. Note that this counts unique username+password pairs, so in
    the case of password reuse, this does not correspond to the number of
    user-visible credentials.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.PasswordCheckReferrer"
    enum="PasswordCheckReferrer" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Referrer of a navigation to the Password Check page. Recorded when the user
    visits the Password Check settings page, either via native or Web UI.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.PasswordCheckReferrerAndroid2"
    enum="PasswordCheckReferrerAndroid" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Referrer of a navigation to the Password Check UI Settings view. Recorded
    when the user enters the view. Replaces
    PasswordManager.BulkCheck.PasswordCheckReferrerAndroid histogram. Fixing the
    bug that LEAK_DIALOG entry was reported as PHISHED_WARNING_DIALOG with UPM
    enabled.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.Time" units="ms"
    expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    The time it took for the password bulk check to complete successfully.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.TimePerCredential" units="ms"
    expires_after="2024-03-03">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    The average time per credential when the password bulk check completed
    successfully.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.UserAction"
    enum="PasswordCheckInteraction" expires_after="2024-02-05">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    User actions performed on the Password Check settings page. Replaced on IOS
    by PasswordManager.BulkCheck.UserAction.IOS.* in M114.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.UserAction.IOS.General"
    enum="PasswordCheckInteractionIOSWithoutContext" expires_after="2024-01-28">
  <owner>eic@google.com</owner>
  <owner>noemies@google.com</owner>
  <summary>
    User actions performed on the Password Check UI inside the Password Manager.
    After M114, the Password Check UI on iOS was divided into multiple views to
    display each type of password check warning: compromised passwords, reused
    passwords, and weak passwords. User actions taken in the Password Check UI
    while viewing a specific type of warning are logged in
    PasswordManager.BulkCheck.UserAction.IOS{Context}. The actions logged are
    done from Password Check UI not specific to a type of warning.
  </summary>
</histogram>

<histogram name="PasswordManager.BulkCheck.UserAction.IOS{Context}"
    enum="PasswordCheckInteractionIOS" expires_after="2024-02-25">
  <owner>eic@google.com</owner>
  <owner>noemies@google.com</owner>
  <summary>
    User actions performed on the Password Check UI inside the Password Manager.
    After M114, the Password Check UI on iOS was divided into multiple views to
    display each type of password check warning: compromised passwords, reused
    passwords, and weak passwords. This histogram represents actions taken in
    the Password Check UI while viewing a specific type of warning. See
    PasswordManager.BulkCheck.UserAction.IOS.General for actions not specific to
    a type of warning.
  </summary>
  <token key="Context">
    <variant name="" summary="Aggregated across all breakdowns"/>
    <variant name=".Compromised"/>
    <variant name=".MutedCompromised"/>
    <variant name=".Reused"/>
    <variant name=".Weak"/>
  </token>
</histogram>

<histogram name="PasswordManager.BulkCheck.UserActionAndroid"
    enum="PasswordCheckUIUserActionAndroid" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschigg@chromium.org</owner>
  <summary>User actions performed on the Password Check settings view.</summary>
</histogram>

<histogram name="PasswordManager.CanUseBiometricsMac" enum="BooleanSuccess"
    expires_after="2024-02-04">
  <owner>vsemeniuk@google.com</owner>
  <owner>kazinova@google.com</owner>
  <owner>sygiet@google.com</owner>
  <summary>
    If user have enabled biometric authentication on their device. It is
    recorded whenever DeviceAuthenticatorMac::CanAuthenticate is called.
  </summary>
</histogram>

<histogram name="PasswordManager.CompromisedCredentials3.{Issue}"
    units="credentials" expires_after="M122">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Count of known {Issue}. Recorded at most once per day for regular profiles.
  </summary>
  <token key="Issue">
    <variant name="CountLeaked" summary="leaked credentials in the database"/>
    <variant name="CountPhished" summary="phished credentials in the database"/>
  </token>
</histogram>

<histogram name="PasswordManager.CredentialEditError"
    enum="CredentialEditError" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records the errors displayed by the saved credential entry editor, when the
    user encounters them. Android-only for now.
  </summary>
</histogram>

<histogram name="PasswordManager.CredentialEntryActions.{CredentialEntryType}"
    enum="CredentialEntryAction" expires_after="2024-02-20">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records actions performed by the users in the {CredentialEntryType} view.
    Android-only for now.
  </summary>
  <token key="CredentialEntryType">
    <variant name="BlockedCredential"/>
    <variant name="FederatedCredential"/>
    <variant name="SavedPassword"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.CredentialManager.{ProfileType}.GetIntent.APIError"
    enum="PasswordStoreAndroidBackendAPIError" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records the API error code encountered while attempting to fetch the
    Credential Manager launch intent from Google Play Services for the
    {ProfileType}. This is recorded after the asynchronous call comes back with
    an error.
  </summary>
  <token key="ProfileType" variants="ProfileType"/>
</histogram>

<histogram
    name="PasswordManager.CredentialManager.{ProfileType}.GetIntent.APIError.ConnectionResultCode"
    enum="PasswordStoreAndroidBackendConnectionResultCode" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records the API error code encountered while attempting to fetch the
    Credential Manager launch intent from Google Play Services for the
    {ProfileType}. This is recorded after the asynchronous call comes back with
    an error only if ConnectionResult was set on the returned error.
  </summary>
  <token key="ProfileType" variants="ProfileType"/>
</histogram>

<histogram
    name="PasswordManager.CredentialManager.{ProfileType}.GetIntent.Error"
    enum="CredentialManagerError" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records the error encountered while attempting to fetch the Credential
    Manager launch intent from Google Play Services for the {ProfileType}. This
    is recorded either before making the actual request (if the preconditions
    are not met) or after the asynchronous call comes back with an error.
  </summary>
  <token key="ProfileType" variants="ProfileType"/>
</histogram>

<histogram
    name="PasswordManager.CredentialManager.{ProfileType}.GetIntent.Latency"
    units="ms" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records the time(ms) elapsed between asking Google Play Services for the
    intent used to open the Credential Manager for the {ProfileType} and
    receiving it. It includes synchronous calls made to get the
    CredentialManagerClient. Recorded when the asynchronous call comes back and
    only on success.
  </summary>
  <token key="ProfileType" variants="ProfileType"/>
</histogram>

<histogram
    name="PasswordManager.CredentialManager.{ProfileType}.GetIntent.Success"
    enum="BooleanSuccess" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records whether fetching the Credential Manager launch intent from Google
    Play Services for the {ProfileType} was successful or not. Recorded when the
    asynchronous call comes back.
  </summary>
  <token key="ProfileType" variants="ProfileType"/>
</histogram>

<histogram
    name="PasswordManager.CredentialManager.{ProfileType}.Launch.Success"
    enum="BooleanSuccess" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records whether the provided intent to launch the Credential Manager for the
    {ProfileType} could be used successfully. This is recorded right after
    calling send() on the intent which happens when the async call to get the
    intent from Google Play Services returns. Metric will not be reported when
    the Loading dialog is cancelled by user or timed out.
  </summary>
  <token key="ProfileType" variants="ProfileType"/>
</histogram>

<histogram name="PasswordManager.CredentialsCountFromAccountStoreAfterUnlock"
    units="credentials" expires_after="2024-01-28">
  <owner>fhorschig@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Recorded after unlocking the account store from the password filling flow.
    Records how many credentials from the account store can be used to fill the
    current password form. If a credential is an exact duplicate with a local
    credential, it still counts into this metric.
  </summary>
</histogram>

<histogram name="PasswordManager.CredentialsWithDuplicates3" units="units"
    expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of stored (non-blacklisted) credentials for which
    &quot;duplicates&quot; exist. A duplicate is a credential with the same
    signon realm, username, and password - i.e. indistinguishable from the
    user's point of view. This records the number of *sets* of duplicated
    credentials; the number of credentials in each set of duplicates is not
    recorded. Recorded at most once per day for regular profiles.
  </summary>
</histogram>

<histogram name="PasswordManager.CredentialsWithMismatchedDuplicates3"
    units="units" expires_after="2024-02-15">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of stored (non-blacklisted) credentials for which
    &quot;mismatched duplicates&quot; exist. A mismatched duplicate is a
    credential with the same signon realm and username, but different password.
    This records the number of *sets* of duplicated credentials; the number of
    credentials in each set of duplicates is not recorded. Recorded at most once
    per day for regular profiles.
  </summary>
</histogram>

<histogram name="PasswordManager.CredMan.PasswordFormSubmissionTriggered"
    enum="Boolean" expires_after="2024-02-01">
  <owner>derinel@google.com</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records whether the password form is submitted right after being filled by
    Android Credential Manager UI. The filled username and password are coming
    from Android Credential Manager UI. This histogram is emitted only if
    Android Credential Manager is enabled and displayed. Recorded when the user
    selects a password from the Android Credential Manager UI.
  </summary>
</histogram>

<histogram name="PasswordManager.DefaultPasswordStoreSet"
    enum="PasswordManager.Store" expires_after="2024-02-04">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    The default store for newly-saved passwords (profile-scoped store or
    account-scoped store), recorded whenever it is set explicitly.
  </summary>
</histogram>

<histogram name="PasswordManager.DeleteUndecryptableLoginsReturnValue"
    enum="DeleteCorruptedPasswordsResult" expires_after="2024-02-11">
  <owner>vasilii@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    Records the return value of the DeleteUndecryptableLogins method in the
    LoginDatabase class. Called for sync user and for each profile when merging
    logins from Sync and local database.
  </summary>
</histogram>

<histogram name="PasswordManager.DropdownShown.OffTheRecord" units="units"
    expires_after="2024-02-11">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-privacy-core@google.com</owner>
  <summary>
    Records availability of password manager suggestions in regular and
    off-the-record modes.
  </summary>
</histogram>

<histogram name="PasswordManager.DynamicFormChanges" units="units"
    expires_after="2024-03-24">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Records a bitmask of password form changes after the first time this form is
    seen by Password Manager. Recorded once per a form when the form is removed
    from DOM. Bit 0 - changes in number of fields, bit 1 - changes in fields
    renderer ids, bit 2 - changes in autocomplete attributes, bit 3 - changes in
    form control types, bit 4 - changes in field names.
  </summary>
</histogram>

<histogram name="PasswordManager.EditsInSaveBubble"
    enum="PasswordManagerEditsInSaveBubbleEnum" expires_after="2024-03-10">
  <owner>vasilii@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    Indication whether users change the credentials (username and password) in
    the save bubble of the password manager, considering only cases where the
    user saves a new credential or updates a credential.
  </summary>
</histogram>

<histogram name="PasswordManager.Enabled4" enum="BooleanEnabled"
    expires_after="2023-07-09">
  <obsolete>
    Obsolete in M113 and superseeded by the PasswordManager.EnableState metrics.
  </obsolete>
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Indicates whether the password manager is enabled. Recorded 30 seconds after
    PasswordStore is created at most once per day for regular profiles.
  </summary>
</histogram>

<histogram name="PasswordManager.EnableState" enum="PasswordManagerEnableState"
    expires_after="2024-02-04">
  <owner>markusheintz@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Indicates whether the password manager is enabled or disabled and by why
    e.g. by the user, policy, extension ... . Recorded 30 seconds after
    PasswordStore is created at most once per day for regular profiles.
  </summary>
</histogram>

<histogram name="PasswordManager.ErrorMessageDismissalReason"
    enum="MessageDismissReason" expires_after="2023-12-24">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Records the reason that caused the Password Manager error message on Android
    to be dismissed. It's recorded when the user dismisses the message by
    clicking the Sign in button or when the message is autodismissed because of
    the timeout.
  </summary>
</histogram>

<histogram name="PasswordManager.ErrorMessageDisplayReason"
    enum="PasswordStoreBackendErrorType" expires_after="2023-12-24">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Records the reason that caused the Password Manager error message to be
    displayed. It's recorded as soon as the message is created and the recorded
    reason is the error type. Currently only used on Android.
  </summary>
</histogram>

<histogram name="PasswordManager.FieldNameCollisionInVotes" enum="Boolean"
    expires_after="2024-03-17">
  <owner>kolos@chromium.org</owner>
  <owner>khamutov@google.com</owner>
  <summary>
    Measures whether a password vote had a field name collision, i.e. multiple
    fields that should have an Autofill type uploaded have the same name.
  </summary>
</histogram>

<histogram name="PasswordManager.FilledCredentialWasFromAndroidApp"
    enum="PasswordManagerFilledAndroidCredentials" expires_after="M122">
  <obsolete>
    Replaced in M116 by FilledCredentialWasFromAndroidApp2. The metric was
    overrecording samples on page load.
  </obsolete>
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    When a credential is filled, whether it comes from an Android app.
  </summary>
</histogram>

<histogram name="PasswordManager.FilledCredentialWasFromAndroidApp2"
    enum="PasswordManagerFilledAndroidCredentials" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    When a credential is filled automatically or from the dropdown, whether it
    was saved from an Android app. The histogram isn't collected on Android/iOS.
  </summary>
</histogram>

<histogram name="PasswordManager.FillingAssistance"
    enum="PasswordManagerFillingAssistance" expires_after="2024-03-10">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    This metric records the user experience with regards to passwords filling.
    It is only recorded on password form submissions that are considered to be
    successful.

    The first 4 buckets (0..3) are ranging from the best filling behavior
    (automatic filling on page load without user interaction necessary) to the
    worst (the user had to manually type a password that was already saved).

    The following buckets (4..5) indicate cases when it was impossible to fill
    credentials because unknown credentials were submitted, meaning that the
    submitted password was not saved before.

    The last bucket (6) corresponds to the strange cases, where the submitted
    form has neither user input nor autofilled data in password fields. This
    might indicate third-party password manager use, or might be a
    measurement/submission classification error.
  </summary>
</histogram>

<histogram name="PasswordManager.FillingSource"
    enum="PasswordManagerFillingSource" expires_after="2024-02-25">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    This metric records the source of filled passwords: The profile-scoped
    store, the account-scoped store, both of them, or none of them (if the user
    typed the password manually). It is only recorded on password form
    submissions that are considered to be successful.
  </summary>
</histogram>

<histogram name="PasswordManager.FillingSuccessIOS" enum="BooleanSuccess"
    expires_after="2024-01-28">
  <owner>theocristea@google.com</owner>
  <owner>kazinova@google.com</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    This metric records whether filling was successful or not on IOS. The metric
    is recorded when filling upon suggestion click or on page load.
  </summary>
</histogram>

<histogram name="PasswordManager.FillSuggestionsIncludeAndroidAppCredentials"
    enum="PasswordManagerOfferedAndroidCredentials" expires_after="2024-03-01">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    When offering to fill the username and password, whether at least one of the
    credentials in the dropdown comes from an Android app.
  </summary>
</histogram>

<histogram name="PasswordManager.FirstRendererFillingResult"
    enum="PasswordManagerFirstRendererFillingResult" expires_after="2024-03-24">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Records whether the PasswordAutofillAgent in the renderer manages to fill
    credentials as instructed by the browser or records a failure reason
    otherwise. Only the outcome of the first attempt to fill is recorded.

    This is replicated as PasswordForm.Fill.FirstFillingResultInRenderer in UKM.
  </summary>
</histogram>

<histogram name="PasswordManager.FirstWaitForUsernameReason"
    enum="PasswordManagerFirstWaitForUsernameReason" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    This metric records why the browser instructs the renderer not to fill the
    credentials on page load but to wait for the user to confirm the credential
    to be filled. Only the value of the first decision to fill is recorded.

    This is replicated as PasswordForm.Fill.FirstWaitForUsernameReason in UKM.
  </summary>
</histogram>

<histogram name="PasswordManager.FormDataDeserializationStatus"
    enum="FormDataDeserializationStatus" expires_after="M117">
  <obsolete>
    Obsolete in M116.
  </obsolete>
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The success or failure of deserializing saved FormData. Failure either
    indicates corrupted data or the presence of bugs in the serialization or
    deserialization code.
  </summary>
</histogram>

<histogram name="PasswordManager.FormVisited.PerProfileType"
    enum="BrowserProfileType" expires_after="2024-03-17">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-privacy-core@google.com</owner>
  <summary>
    This histogram records the browser profile type when a password form is
    visited. This is recorded once for each frame.
  </summary>
</histogram>

<histogram name="PasswordManager.GeneratedFormHasNoFormManager"
    enum="BooleanFormManager" expires_after="2024-03-31">
  <owner>kazinova@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    When the generation state of a password was changed, records whether an
    existing form corresponding to the password was found.
  </summary>
</histogram>

<histogram name="PasswordManager.GetLogins.GroupedMatchesStatus"
    enum="PasswordManager.GroupedPasswordFetchResult"
    expires_after="2024-03-24">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Represent all possible states of GetLogins call in regards to grouped
    matches. This metric helps to evaluate grouped matches usefulness. Recorded
    when a call finished and only if it was successful.
  </summary>
</histogram>

<histogram name="PasswordManager.HttpCredentials2"
    enum="PasswordManagerHttpCredentialType" expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Breakdown of HTTP credentials with regard to the existence of a HTTPS
    credential with the same username and whether the corresponding website has
    HSTS enabled. Recorded once for each HTTP credential on regular profile
    open.
  </summary>
</histogram>

<histogram name="PasswordManager.HttpPasswordMigrationCount2"
    units="saved credentials" expires_after="2024-03-31">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Number of HTTP saved passwords that were migrated to HTTPS. Recorded for the
    regular profiles on HTTPS password form load when there are no credentials
    saved.
  </summary>
</histogram>

<histogram name="PasswordManager.HttpPasswordMigrationMode2"
    enum="HttpPasswordMigrationMode" expires_after="2024-03-31">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The mode of migration applied to HTTP passwords migrating to HTTPS. Recorded
    for the regular profiles on HTTPS password form load when there are no
    credentials saved.
  </summary>
</histogram>

<histogram name="PasswordManager.Import.DesktopInteractions"
    enum="PasswordsImportDesktopInteractions" expires_after="2024-02-20">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Records the user actions related to passwords import flow on desktop.
    Reported upon interactions with the password settings page.
  </summary>
</histogram>

<histogram name="PasswordManager.Import.FileDeletionSelected" units="Boolean"
    expires_after="2024-02-25">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Records if the user selected to delete a file after a succesful import with
    no errors. Reported before the import success dialog is closed.
  </summary>
</histogram>

<histogram name="PasswordManager.Import.Only{ErrorType}" units="Boolean"
    expires_after="2024-02-15">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Tracks how many succesful imports contained only {ErrorType} as errors.
    Recorded during the passwords import process triggered from settings, after
    parsing the input file.
  </summary>
  <token key="ErrorType">
    <variant name="Conflicts" summary="conflicts"/>
    <variant name="MissingPasswords" summary="missing passwords"/>
  </token>
</histogram>

<histogram name="PasswordManager.Import.PerFile.ConflictsResolved"
    units="saved credentials" expires_after="2024-02-11">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Records number of passwords that were resolved in Passwords Import -
    Conflict resolution. Basically the number of conflicting passwords that were
    selected to be imported. Recorded during the passwords import process
    triggered from settings, after the user clicks on the Repalce button.
  </summary>
</histogram>

<histogram name="PasswordManager.Import.PerFile.Notes.{Type}" units="units"
    expires_after="2024-02-15">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Tracks the number of {Type} per one imported CSV file with Google Password
    Manager in Settings UI. Recorded during the passwords import process
    triggered from settings, after parsing the input file.
  </summary>
  <token key="Type">
    <variant name="Concatenations"
        summary="imported notes that were concatenated with local notes of
                 the same credential"/>
    <variant name="Duplicates"
        summary="imported notes that are duplicates of local notes of the
                 same credential"/>
    <variant name="Substrings"
        summary="imported notes that are substrings of local notes of the
                 same credential"/>
    <variant name="TotalCount"
        summary="valid notes (note's length is not greater than 1000
                 characters)"/>
  </token>
</histogram>

<histogram name="PasswordManager.Import.PerFile.{ErrorType}" units="units"
    expires_after="2024-02-15">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Tracks the number of rows with {ErrorType} per one imported CSV file with
    Google Password Manager in Settings UI. Recorded during the passwords import
    process triggered from settings, after parsing the input file.
  </summary>
  <token key="ErrorType">
    <variant name="AllLoginFieldsEmtpy"
        summary="empty login fields (URL, username, password)"/>
    <variant name="AnyErrors"
        summary="errors of any type (missing password, too long username,
                 ivalid URL, etc.)"/>
    <variant name="Conflicts"
        summary="conflicts (imported credential, is already stored locally
                 with different password)"/>
    <variant name="Duplicates"
        summary="duplicates (imported credential, is already stored locally)"/>
    <variant name="OnlyPasswordMissing"
        summary="empty password field (URL and username fields are non-empty)"/>
    <variant name="PasswordAndUsernameMissing"
        summary="empty password and username fields (URL is non-empty)"/>
  </token>
</histogram>

<histogram name="PasswordManager.ImportDuration" units="ms"
    expires_after="2024-02-25">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Tracks the time it takes to import credentials in passwords import flow. The
    time that is tracked is the time needed to process the credentials, checking
    for conflicts, generating status and storing them. This metric doesn't
    include the time needed to read the CSV file. Recorded when the import flow
    finished importing all credentials within password settings.
  </summary>
</histogram>

<histogram name="PasswordManager.ImportedPasswordsPerUserInCSV" units="units"
    expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <owner>src/components/password_manager/OWNERS</owner>
  <summary>
    The number of passwords imported in CSV format per user. Recorded when the
    user imports passwords within the password settings.
  </summary>
</histogram>

<histogram name="PasswordManager.ImportEntryStatus"
    enum="PasswordManagerImportEntryStatus" expires_after="2024-03-17">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Tracks the individual status of a single password entry from the provided
    CSV File after it has been processed in the Passwords Import flow in
    settings UI. Recorded when a single entry has been processed and checked for
    errors or missing fields. Recording occurs within password settings.
  </summary>
</histogram>

<histogram name="PasswordManager.ImportFileSize" units="bytes"
    expires_after="2024-02-20">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    The size of the CSV file (to import passwords from) selected by a user in
    bytes. Recorded when the user tries to import passwords from a CSV file. The
    user has chosen the file, but the file hasn't been read yet.
  </summary>
</histogram>

<histogram name="PasswordManager.ImportResultsStatus"
    enum="PasswordManagerImportResultsStatus" expires_after="2023-06-11">
  <obsolete>
    Obsolete in M111, the enum contained a duplicate - values 7 and 8. Also,
    those values were never emmited.
  </obsolete>
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Tracks the final outcome status of importing a CSV File to Chrome Password
    Manager in settings UI. Recorded when the import flow finishes within
    password settings. This can be either successfuly or due to an error. Before
    M111, values 7 and 8 were not emmited.
  </summary>
</histogram>

<histogram name="PasswordManager.ImportResultsStatus2"
    enum="PasswordManagerImportResultsStatus" expires_after="2024-02-04">
  <owner>eliaskh@chromium.org</owner>
  <owner>natiahlyi@google.com</owner>
  <summary>
    Tracks the final outcome status of importing a CSV File to Chrome Password
    Manager in settings UI. Recorded when the import flow finishes within
    password settings. This can be either successfuly or due to an error.
  </summary>
</histogram>

<histogram name="PasswordManager.iOS.InfoBar.PasswordSave" enum="Boolean"
    expires_after="2024-03-10">
  <owner>djean@chromium.org</owner>
  <owner>sczs@google.com</owner>
  <summary>
    This metric counts how many times the Save Password infobar is shown.
  </summary>
</histogram>

<histogram name="PasswordManager.iOS.PasswordManagerVisit" enum="Boolean"
    expires_after="2023-12-21">
  <owner>eic@google.com</owner>
  <owner>tmartino@chromium.com</owner>
  <summary>
    This metric counts how many times the Password Manager Main Page is visited
    on iOS. Recorded when the user opens the Password Manager Main Page after
    successful Local Authentication (if authentication is required). Only the
    true bucket is logged.
  </summary>
</histogram>

<histogram name="PasswordManager.iOS.ReauthenticationUI.Event"
    enum="ReauthenticationEvent" expires_after="2024-07-21">
  <owner>eic@google.com</owner>
  <owner>tmartino@chromium.com</owner>
  <summary>
    Tracks the results and attempts of reauthentication when trying to open the
    Password Manager on iOS.
  </summary>
</histogram>

<histogram name="PasswordManager.IsPasswordProtected2" enum="Boolean"
    expires_after="2024-03-01">
  <owner>skrakowi@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric reports whether a saved password is protected by Phishguard. The
    current minimum password length for protection is 8, so this can help us
    figure out the proportion of passwords that we are currently not protecting
    because its length is shorter than 8 characters. This gets recorded 30
    seconds after PasswordStore is created, which happens once per profile and
    at most once per day.
  </summary>
</histogram>

<histogram name="PasswordManager.IsSyncPasswordHashSaved"
    enum="IsSyncPasswordHashSaved" expires_after="2024-02-04">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric reports whether a sync password hash is saved. Recorded shortly
    after Chrome startup.
  </summary>
</histogram>

<histogram
    name="PasswordManager.IsSyncPasswordHashSavedForAdvancedProtectionUser"
    enum="IsSyncPasswordHashSaved" expires_after="2024-02-04">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric is recorded shortly after Chrome Startup, only for Advanced
    Protection users. This is a subset of
    PasswordManager.IsSyncPasswordHashSaved.
  </summary>
</histogram>

<histogram name="PasswordManager.ItemSelected.OffTheRecord" units="units"
    expires_after="2024-01-21">
  <owner>arabm@chromium.org</owner>
  <owner>chrome-privacy-team@google.com</owner>
  <summary>
    Records selection of password manager suggestions in regular and
    off-the-record modes.
  </summary>
</histogram>

<histogram name="PasswordManager.JavaScriptOnlyValueInSubmittedForm"
    enum="JavaScriptOnlyValueInPasswordForm" expires_after="2024-03-31">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Records whether a successfully submitted password form has only values that
    came from JavaScript.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.AnalyzeSingleLeakResponseResult"
    enum="PasswordAnalyzeLeakResponseResult" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>Result of analyzing a single leak response.</summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.DialogDismissalReason"
    enum="PasswordLeakDetectionDialogDismissalReason"
    expires_after="2023-11-12">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Reason of the dismissal of the leak detection dialog. Recorded when a leaked
    credential is detected and the dialog is shown.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.Error"
    enum="PasswordLeakDetectionError" expires_after="2023-11-12">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Shows the error that happened in password leak detection on sign-in.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.HttpResponseCode"
    enum="HttpResponseCode" expires_after="2024-01-14">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    HTTP response code of a leak lookup request. Only recoded for each network
    fetch that failed due to network/server errors.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.LookupSingleLeakResponseResult"
    enum="PasswordLeakLookupResponseResult" expires_after="2023-11-05">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Whether the network fetch succeeded, failed due to network/server errors, or
    contained malformed data. Recorded for each leak lookup.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.NotifyIsLeakedTime" units="ms"
    expires_after="M121">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time it took from starting a leak check to notifying the user about a
    leak.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.ObtainAccessTokenTime"
    units="ms" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time it took to obtain an access token for an authenticated leak lookup
    request.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.ReceiveSingleLeakResponseTime"
    units="ms" expires_after="M121">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time it took to receive a server response after issuing a request for a
    single leak lookup.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.SingleLeakResponsePrefixes"
    units="prefixes" expires_after="M121">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of matched prefixes in a single leak lookup response. Only
    recorded if the network response was wellformed.
  </summary>
</histogram>

<histogram name="PasswordManager.LeakDetection.SingleLeakResponseSize"
    units="bytes" expires_after="M121">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The size of a single leak lookup response in bytes. Only recorded if there
    was no network or server error.
  </summary>
</histogram>

<histogram name="PasswordManager.LoginDatabase.DeleteFromKeychain"
    enum="ErrSecOSStatus" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records status of keychain item removal. Recorded after SecItemDelete is
    called.
  </summary>
</histogram>

<histogram name="PasswordManager.LoginDatabaseInit2"
    enum="LoginDatabaseInitError" expires_after="2024-02-25">
  <owner>vasilii@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    An error on LoginDatabase initialization. Recorded when error was
    encountered during login database initialization.
  </summary>
</histogram>

<histogram name="PasswordManager.ManagePasswordsReferrer"
    enum="ManagePasswordsReferrer" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Referrer of a navigation to the &quot;Manage Passwords&quot; page. Recorded
    when the user attempts to see their list of passwords, either via native or
    Web UI.
  </summary>
</histogram>

<histogram name="PasswordManager.MatchedFormType"
    enum="PasswordManagerMatchedFormType" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    This metric records the type of the preferred password for filling. It is
    recorded when the browser instructs the renderer to fill the credentials on
    page load.
  </summary>
</histogram>

<histogram name="PasswordManager.MediationOptional"
    enum="CredentialManagerGetResult" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Tracks result of navigator.credentials.get() with
    mediation=&quot;optional&quot;. That is the result of account chooser.
  </summary>
</histogram>

<histogram name="PasswordManager.MediationRequired"
    enum="CredentialManagerGetResult" expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Tracks result of navigator.credentials.get() with
    mediation=&quot;required&quot;. That is the result of forced account
    chooser.
  </summary>
</histogram>

<histogram name="PasswordManager.MediationSilent"
    enum="CredentialManagerGetResult" expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Tracks result of navigator.credentials.get() with
    mediation=&quot;silent&quot;. That is the result of auto sign-in.
  </summary>
</histogram>

<histogram name="PasswordManager.MergeSyncData.AddLoginSyncError"
    enum="PasswordAddLoginSyncError" expires_after="2024-02-11">
  <owner>mamir@chromium.org</owner>
  <owner>mastiz@chromium.org</owner>
  <summary>
    Records different results upon adding a remote password to the password
    manager. It is recorded during the initial sync when merging remote and
    local data.
  </summary>
</histogram>

<histogram name="PasswordManager.MergeSyncData.UpdateLoginSyncError"
    enum="PasswordUpdateLoginSyncError" expires_after="2024-02-11">
  <owner>mamir@chromium.org</owner>
  <owner>mastiz@chromium.org</owner>
  <summary>
    Records different results upon updating a remote password in the password
    manager. It is recorded during the initial sync when merging remote and
    local data. Warning: this histogram was expired from 2021-07-31 to
    2022-11-17; data may be missing.
  </summary>
</histogram>

<histogram
    name="PasswordManager.MigrationToOSCrypt.{Store}DeletedPasswordCount"
    units="count" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records number of passwords which are missing from the keychain during
    migration to OSCrypt on iOS. Recorded when migration succeeds.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram name="PasswordManager.MigrationToOSCrypt.{Store}ErrorLatency"
    units="ms" expires_after="2024-03-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records the latency of a failed migration of PasswordStore to OSCrypt on iOS
    {Store}. Recorded when the migration finishes with an error.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram
    name="PasswordManager.MigrationToOSCrypt.{Store}KeychainRetrievalError"
    enum="ErrSecOSStatus" expires_after="2024-03-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records keychain retrieval error code received during the migration of
    PasswordStore to OSCrypt on iOS {Store}. Recorded when retrieval fails.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram
    name="PasswordManager.MigrationToOSCrypt.{Store}MigratedPasswordCount"
    units="count" expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records number of passwords successfully migrated to encryption with OSCrypt
    on iOS. Recorded when migration succeeds.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram name="PasswordManager.MigrationToOSCrypt.{Store}SuccessLatency"
    units="ms" expires_after="2024-03-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records the latency of a successful migration of PasswordStore to OSCrypt on
    iOS {Store}. Recorded when the migration finishes successfully.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram name="PasswordManager.MigrationToOSCrypt{StoreType}"
    enum="MigrationToOSCryptEnum" expires_after="2024-03-03">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records the migration status of PasswordStore to OSCrypt on iOS for
    {StoreType}. Recorded when migration starts and finishes.
  </summary>
  <token key="StoreType">
    <variant name="" summary="both profile and account store"/>
    <variant name=".AccountStore" summary="the AccountStore"/>
    <variant name=".ProfileStore" summary="the ProfileStore"/>
  </token>
</histogram>

<histogram name="PasswordManager.MoveUIDismissalReason{UserSyncingType}"
    enum="PasswordManagerUIDismissalReason" expires_after="2024-02-12">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    Why was the &quot;move password to account?&quot; bubble closed? Recorded
    whenever the bubble is closed, either because the user clicked one of the
    buttons or it went away automatically (lost focus) for {UserSyncingType}
  </summary>
  <token key="UserSyncingType" variants="UserSyncingType"/>
</histogram>

<histogram
    name="PasswordManager.NewlySavedPasswordHasEmptyUsername.{PasswordType}"
    enum="Boolean" expires_after="2024-02-20">
  <owner>khamutov@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <owner>chrome-autofill-alerts@google.com</owner>
  <summary>
    Whether a newly saved password has an empty username. Recorded right before
    a new credential is commited to the store.
  </summary>
  <token key="PasswordType" variants="PasswordType"/>
</histogram>

<histogram name="PasswordManager.NewlySavedPasswordIsGenerated"
    enum="BooleanNewlySavedPasswordIsGenerated" expires_after="2024-03-10">
  <owner>nepper@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    For a newly saved password, whether the password was generated by Chrome or
    typed manually by the user.
  </summary>
</histogram>

<histogram name="PasswordManager.NonSyncPasswordHashChange"
    enum="GaiaPasswordHashChange" expires_after="2024-02-25">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric reports a type of a password hash change event where the
    associated account is not syncing. Recorded when a non sync password hash is
    saved or cleared.
  </summary>
</histogram>

<histogram name="PasswordManager.OpenedAsShortcut" enum="Boolean"
    expires_after="2024-02-20">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records whether Password Manager was opened as a standalone app or inside a
    browser window. Recorded every time Password Manager is opened.
  </summary>
</histogram>

<histogram name="PasswordManager.ParserDetectedOtpFieldWithRegex"
    enum="Boolean" expires_after="2024-03-10">
  <owner>kolos@chromium.org</owner>
  <owner>shaikhitdin@google.com</owner>
  <summary>
    Reports whether the form parser has detected an OTP field with regex.
    Reported any time when the parser processes a form. Used to compare how
    often the new and old OTP regexes detect any OTP field.
  </summary>
</histogram>

<histogram
    name="PasswordManager.PasswordChangeFlowDurationV2.LeakCheckInSettings{StartEvent}{EndEvent}"
    units="ms" expires_after="2023-11-09">
  <owner>jkeitel@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    Duration of a password change flow that was triggered from a password check
    {StartEvent} {EndEvent}.
  </summary>
  <token key="StartEvent">
    <variant name=".ManualChangePasswordUrlFlow"
        summary="as a manual change password flow with a domain-specific URL"/>
    <variant name=".ManualHomepageFlow"
        summary="as a manual change password flow that starts at the origin
                 of a stored credential (supposed to be the homepage)"/>
    <variant name=".ManualUnknownFlow"
        summary="as a manual change password flow of unknown type"/>
    <variant name=".ManualWellKnownUrlFlow"
        summary="as a manual change password flow that supports
                 /.well-known/change-password"/>
  </token>
  <token key="EndEvent">
    <variant name="" summary="aggregated over all end events"/>
    <variant name=".ManualFlowPasswordChosen"
        summary="and ended with a password from a manual flow"/>
    <variant name=".Timeout" summary="and ended with a timeout"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.PasswordChangeFlowDuration{EntryPoint}{StartEvent}{EndEvent}"
    units="ms" expires_after="M114">
  <obsolete>
    Obsolete in M114 after automated password change deprecation. Look at
    PasswordChangeFlowDurationV2 for manual change password flows.
  </obsolete>
  <owner>jkeitel@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    Duration of a password change flow {EntryPoint} {StartEvent} {EndEvent}.
  </summary>
  <token key="EntryPoint">
    <variant name=".LeakCheckInSettings"
        summary="that was triggered from a leak check"/>
    <variant name=".LeakWarningDialog"
        summary="that was triggered from a leak warning dialog"/>
  </token>
  <token key="StartEvent">
    <variant name=".AutomatedFlow"
        summary="as an automated change password flow"/>
    <variant name=".ManualFlow" summary="as a manual change password flow"/>
    <variant name=".ManualResetLinkFlow"
        summary="as a manual password reset link flow"/>
  </token>
  <token key="EndEvent">
    <variant name="" summary="aggregated over all end events"/>
    <variant name=".AutomatedFlowPasswordChosen"
        summary="and ended with a password from an automated flow"/>
    <variant name=".AutomatedFlowResetLinkRequested"
        summary="and ended with the request of a password reset link"/>
    <variant name=".ManualFlowPasswordChosen"
        summary="and ended with a password from a manual flow"/>
    <variant name=".Timeout" summary="and ended with a timeout"/>
  </token>
</histogram>

<histogram name="PasswordManager.PasswordCheckup.Launch.Success"
    enum="BooleanSuccess" expires_after="2024-02-11">
  <owner>ioanap@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records whether the provided intent to launch the Password Checkup could be
    used successfully. This is recorded right after calling send() on the intent
    which happens when the async call to get the intent from Google Play
    Services returns. Metric will not be reported when the Loading dialog is
    cancelled by user or timed out.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordCheckup.{Operation}.APIError"
    enum="PasswordStoreAndroidBackendAPIError" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records the error code returned by the GMS Password Checkup 1P API while
    attempting to {Operation}. This is recorded after the asynchronous call
    comes back with an error. This is only recorded for GMS API errors on
    Android.
  </summary>
  <token key="Operation" variants="PasswordCheckupOperation"/>
</histogram>

<histogram name="PasswordManager.PasswordCheckup.{Operation}.Error"
    enum="CredentialManagerError" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records the backend error code encountered while attempting to {Operation}.
    If the code is equal to 2 (API_ERROR), GMS 1P API error code is additionally
    reported. This is recorded either before making the actual request (if the
    preconditions are not met) or after the asynchronous call comes back with an
    error. This is currently only recorded on Android.
  </summary>
  <token key="Operation" variants="PasswordCheckupOperation"/>
</histogram>

<histogram name="PasswordManager.PasswordCheckup.{Operation}.ErrorLatency"
    units="ms" expires_after="M123">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records the time(ms) elapsed between asking Google Play Services to
    {Operation} and receiving the error response. This is recorded either before
    making the actual request (if the preconditions are not met) or after the
    asynchronous call comes back with an error. This is currently only recorded
    on Android.
  </summary>
  <token key="Operation" variants="PasswordCheckupOperation"/>
</histogram>

<histogram name="PasswordManager.PasswordCheckup.{Operation}.Latency"
    units="ms" expires_after="2024-02-20">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records the time(ms) elapsed between asking Google Play Services to
    {Operation} and receiving the response. It includes synchronous calls made
    to get the PasswordCheckupClient. Recorded when the asynchronous call comes
    back and only on success. This is currently only recorded on Android.
  </summary>
  <token key="Operation" variants="PasswordCheckupOperation"/>
</histogram>

<histogram name="PasswordManager.PasswordCheckup.{Operation}.Success"
    enum="BooleanSuccess" expires_after="2024-02-20">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records whether attempt to {Operation} using the Google Play Services was
    successful or not. Recorded when the asynchronous call comes back.
  </summary>
  <token key="Operation" variants="PasswordCheckupOperation"/>
</histogram>

<histogram name="PasswordManager.PasswordDropdownItemSelected"
    enum="PasswordDropdownSelectedOption" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Logs the type of the suggestion in the password dropdown when selected.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordDropdownShown"
    enum="PasswordDropdownState" expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>Logs the state of the password dropdown when it's shown.</summary>
</histogram>

<histogram name="PasswordManager.PasswordEditUpdatedValues"
    enum="PasswordEditUpdatedValues" expires_after="2023-07-09">
  <obsolete>
    For some time now, SavedPasswordsPresenter::EditSavedCredentials is used not
    only by &quot;password edit dialog&quot;, so the metrics is not accurate.
  </obsolete>
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    This metric shows what exactly users change in the password edit dialog:
    nothing, username, password or both.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordManagementBubble.UserAction"
    enum="PasswordManagementBubbleInteractions" expires_after="2024-03-24">
  <owner>mamir@chromium.org</owner>
  <owner>rgod@google.com</owner>
  <summary>
    This metrics shows how user interacted with the password management native
    bubble triggered from the key icon in the omnibox. Recorded during the
    interaction with the bubble.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordMigrationWarning.EmptySheetTrigger2"
    enum="PasswordMigrationWarningTriggers" expires_after="2024-01-29">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    This histogram logs the UI surface that led to showing an empty local
    passwords migration warning sheet. Recorded when the sheet is closing, but
    only if it was blank. Android only. This replaces
    PasswordManager.PasswordMigrationWarning.EmptySheetTrigger which had a bug
    causing it to also report triggers of non-empty sheets.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordMigrationWarning.Export.Event"
    enum="PasswordExportEvent" expires_after="2024-04-19">
  <owner>ioanap@chromium.org</owner>
  <owner>atsvirchkova@google.com</owner>
  <summary>
    Measures the frequency of various password export events. Recorded when the
    user chooses the option to export passwords in the password migration
    warning. Logged only on Android.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordMigrationWarning.Export.Result2"
    enum="HistogramExportResult" expires_after="2024-02-19">
  <owner>ioanap@chromium.org</owner>
  <owner>atsvirchkova@google.com</owner>
  <summary>
    Records whether the export flow finished successfully or the type of error
    for passwords export started from local passwords migration warning.
    Recorded when the export flow finishes. Logged only on Android. This is an
    updated version of PasswordManager.PasswordMigrationWarning.Export.Result,
    which logs more possible export flow results in adition to the old values.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordMigrationWarning.SheetStateAtClosing"
    enum="PasswordMigrationWarningSheetStateAtClosing"
    expires_after="2024-01-29">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    This histogram logs the state of the local passwords migration warning
    bottom sheet. Recorded when the sheet is closing. Android only.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordMigrationWarning.Trigger"
    enum="PasswordMigrationWarningTriggers" expires_after="2024-01-29">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    This histogram logs the UI surface that led to showing the local passwords
    migration warning. Recorded when the warning sheet is shown. Android only.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordMigrationWarning.UserAction"
    enum="PasswordMigrationWarningUserActions" expires_after="2024-01-29">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    This histograms logs the action that the user performed in the local
    password migration warning sheet. For the export and sync options, this is
    recorded when the user taps &quot;Next&quot; after selecting the
    corresponding radio button. All other actions are recorded when tapping on
    the corresponding buttons/dismissing the sheet. Multiple buckets can be
    recorded for the same sheet. Android only.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordNoteActionInSettings"
    enum="PasswordNoteAction" expires_after="M111">
  <obsolete>
    Obsolete in M111 as the logic is moved to settings.
  </obsolete>
  <owner>derinel@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    This metric shows how user created / edited / cleared the note field in the
    passwords settings page. Recorded after closing the add/edit password dialog
    in settings.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordNoteActionInSettings2"
    enum="PasswordNoteAction" expires_after="2024-02-11">
  <owner>derinel@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    This metric shows how user created / edited / cleared the note field in the
    passwords settings page. Recorded after closing the add/edit password dialog
    in settings.
  </summary>
</histogram>

<histogram
    name="PasswordManager.PasswordNotesMigrationToOSCrypt.{Store}DeletedNotesCount"
    units="count" expires_after="M120">
  <owner>rgod@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records number of notes which are missing from the keychain during migration
    to OSCrypt on iOS. Recorded when migration succeeds.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram
    name="PasswordManager.PasswordNotesMigrationToOSCrypt.{Store}KeychainRetrievalError"
    enum="ErrSecOSStatus" expires_after="M120">
  <owner>rgod@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records keychain retrieval error code received during the migration of
    password notes to OSCrypt on iOS {Store}. Recorded when retrieval fails.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram
    name="PasswordManager.PasswordNotesMigrationToOSCrypt.{Store}MigratedNotesCount"
    units="count" expires_after="M120">
  <owner>rgod@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records number of notes successfully migrated to encryption with OSCrypt on
    iOS. Recorded when migration succeeds.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram name="PasswordManager.PasswordNotesMigrationToOSCrypt{StoreType}"
    enum="PasswordNotesMigrationToOSCryptEnum" expires_after="2024-03-17">
  <owner>rgod@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records the migration status of password notes to OSCrypt on iOS for
    {StoreType}. Recorded when migration starts and finishes.
  </summary>
  <token key="StoreType">
    <variant name="" summary="both profile and account store"/>
    <variant name=".AccountStore" summary="the AccountStore"/>
    <variant name=".ProfileStore" summary="the ProfileStore"/>
  </token>
</histogram>

<histogram name="PasswordManager.PasswordReuse.NumberOfMatches"
    units="credentials" expires_after="2024-02-25">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric shows how many saved credentials (num unique registry-controlled
    domains) have password that's equal to the reused password.

    Before M63 this logged a &quot;0&quot; for sync-reuse.

    A &quot;password reuse&quot; is when the user typed a string that is equal
    to a saved password on another domain or is equal to the sync password on a
    non google-login domain.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordReuse.PasswordFieldDetected"
    enum="PasswordReusePasswordFieldDetected" expires_after="2024-02-25">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric reports whether a password field had been detected on a page
    when a password reuse happened.

    A &quot;password reuse&quot; is when the user typed a string that is equal
    to a saved password on another domain or is equal to the sync password on a
    non google-login domain.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordReuse.TotalPasswords"
    units="credentials" expires_after="2024-03-17">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric shows how many credentials are stored in Password Manager when a
    password reuse happened. This counts unique registry-controlled domains with
    passwords saved.

    A &quot;password reuse&quot; is when the user typed a string that is equal
    to a saved password on another domain or is equal to the sync password on a
    non google-login domain.

    During M61/M62 this metric logged a &quot;1&quot; for every sync-reuse. It
    was fixed in M63 such that it logs actual Password Manager credential count.
  </summary>
</histogram>

<histogram
    name="PasswordManager.PasswordSettings.{Function}.{Setting}.APIError1"
    enum="PasswordStoreAndroidBackendAPIError" expires_after="2024-02-20">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    The error codes returned by the GMS Core Password preferences 1P API while
    attempting to {Function} for {Setting}. Recorded when the asynchronous job
    has returned. This is currently only recorded on Android.

    Replacing PasswordManager.PasswordSettings.{Function}.{Setting}.APIError
    which incorrectly recorded *only* the enum values and crashed for all
    unknown values.
  </summary>
  <token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
  <token key="Setting" variants="PasswordManagerSetting"/>
</histogram>

<histogram
    name="PasswordManager.PasswordSettings.{Function}.{Setting}.ErrorCode"
    enum="PasswordStoreAndroidBackendError" expires_after="M123">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Records the error encountered in PasswordSettingsUpdater while attempting to
    {Function} for {Setting}. This is recorded either before making the actual
    request (if the preconditions are not met) or after the asynchronous call
    comes back with an error. This is currently only recorded on Android.
  </summary>
  <token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
  <token key="Setting" variants="PasswordManagerSetting"/>
</histogram>

<histogram
    name="PasswordManager.PasswordSettings.{Function}.{Setting}.ErrorLatency"
    units="ms" expires_after="2024-02-20">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Real-time duration of the asynchronous attempt to {Function} for {Setting}.
    Recorded when the asynchronous job failed. This is currently only recorded
    on Android.
  </summary>
  <token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
  <token key="Setting" variants="PasswordManagerSetting"/>
</histogram>

<histogram name="PasswordManager.PasswordSettings.{Function}.{Setting}.Latency"
    units="ms" expires_after="2024-02-20">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Real-time duration of the asynchronous attempt to {Function} for {Setting}.
    Only recorded when the asynchronous job has returned successfully. This is
    currently only recorded on Android.
  </summary>
  <token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
  <token key="Setting" variants="PasswordManagerSetting"/>
</histogram>

<histogram name="PasswordManager.PasswordSettings.{Function}.{Setting}.Success"
    enum="BooleanSuccess" expires_after="2024-02-20">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Records whether PasswordSettingsUpdater attempt to {Function} for {Setting}
    succeed. Recorded when the asynchronous job has returned. This is currently
    only recorded on Android.
  </summary>
  <token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
  <token key="Setting" variants="PasswordManagerSetting"/>
</histogram>

<histogram name="PasswordManager.PasswordsGrouping.Time" units="ms"
    expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time it takes to group passwords using the information provided by the
    affiliation service. Recorded after password grouping is finished.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordSharingDesktop.UserAction"
    enum="PasswordManager.PasswordSharingDesktopActions"
    expires_after="2024-03-01">
  <owner>natiahlyi@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <owner>rgod@google.com</owner>
  <summary>
    Records user interactions with the elements of password sharing flow in the
    desktop settings.
  </summary>
</histogram>

<histogram
    name="PasswordManager.PasswordSharingRecipients.FetchAccessTokenResult"
    enum="GoogleServiceAuthError" expires_after="2024-09-15">
  <owner>rushans@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Records the result of access token fetch for the password sharing recipients
    request. Recorded when a token fetch completes (including retries).
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordSharingRecipients.ResponseOrErrorCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2024-09-15">
  <owner>rushans@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Records the response (both HTTP code and net error code) for password
    sharing recipients URL fetches, recorded when the request completes or fails
    (does not include transient errors if request is retried).
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordStore.OnLoginsChanged" enum="Boolean"
    expires_after="2023-12-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Recorded whenever PasswordStore notifies consumers about changes to logins.
    Changes can be made locally (in settings, in bubbles etc.) or remotely (via
    sync). Records only true.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordStore.OnLoginsRetained"
    enum="LoginsChangedTrigger" expires_after="2023-12-10">
  <owner>vsemeniuk@google.com</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Android only. |OnLoginsRetained| replaces |OnLoginsChanged| and this metric
    records potential calls of |OnLoginsRetained| to measure differences in
    volume after switching. The metrics is recorded whenever the PasswordStore
    (potentially) requests all logins to notify consumers because data may have
    changed. Changes can occur within Chrome (e.g. after saving/updating a
    password) or externally.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordStore.TimesAttemptedToReenrollInUPM"
    units="Times" expires_after="2024-03-31">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Recorded on Android when the password store backend is created. This happens
    on startup and once per profile, only for users in the UPM experiment. Users
    can be unenrolled from UPM after encountering errors in communication with
    the backend and reenrolled back if the backend communication is considered
    reliable again. Records the number of times the user has attempted to
    automatically reenroll in Google Mobile Services.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordStore.TimesReenrolledInUPM"
    units="Times" expires_after="2024-02-11">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Recorded on Android when the password store backend is created. This happens
    on startup and once per profile, only for users in the UPM experiment. Users
    can be unenrolled from UPM after encountering errors in communication with
    the backend and reenrolled back if the backend communication is considered
    reliable again. Records the number of times the user was reenrolled.
  </summary>
</histogram>

<histogram
    name="PasswordManager.PasswordStore.WasEnrolledInUPMWhenBackendWasCreated"
    enum="Boolean" expires_after="2024-02-11">
  <owner>kazinova@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Recorded on Android when the password store backend is created. This happens
    on startup and once per profile. It logs whether the user is enrolled in
    UPM. In this context, all profiles are enrolled unless they have encountered
    an unrecoverable error upon querying GMS Core. Once that happens, a profile
    pref is flipped and the client is considered unenrolled from that point on.
  </summary>
</histogram>

<histogram
    name="PasswordManager.PasswordStoreAndroidBackend.Retry{Operation}.APIError"
    enum="PasswordStoreAndroidBackendAPIError" expires_after="M123">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Records the last error code returned by the GMS ChromeSync 1P API when
    scheduling a retry for the {Operation} operation. This is recorded after the
    asynchronous call comes back with an error and it is checked that operation
    could be retried. This is only recorded for GMS API errors on Android.
  </summary>
  <token key="Operation">
    <variant name=""/>
    <variant name=".AddLoginAsync" summary="AddLogin"/>
    <variant name=".DisableAutoSignInForOriginsAsync"
        summary="DisableAutoSignInForOrigins"/>
    <variant name=".FillMatchingLoginsAsync" summary="FillMatchingLogins"/>
    <variant name=".GetAllLoginsAsync" summary="GetAllLogins"/>
    <variant name=".GetAllLoginsForAccountAsync"
        summary="GetAllLoginsForAccount"/>
    <variant name=".GetAutofillableLoginsAsync"
        summary="GetAutofillableLogins"/>
    <variant name=".RemoveLoginAsync" summary="RemoveLogin"/>
    <variant name=".RemoveLoginForAccount" summary="RemoveLoginForAccount"/>
    <variant name=".RemoveLoginsByURLAndTimeAsync"
        summary="RemoveLoginsByURLAndTime"/>
    <variant name=".RemoveLoginsCreatedBetweenAsync"
        summary="RemoveLoginsCreatedBetween"/>
    <variant name=".UpdateLoginAsync" summary="UpdateLogin"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.PasswordStoreAndroidBackend.Retry{Operation}.Attempt"
    units="Times" expires_after="M120">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Records the retry attempt number when the GMS ChromeSync 1P API returned an
    error and a retry for the {Operation} operation is about to be scheduled.
    This is recorded after the asynchronous call comes back with an error and it
    is checked that operation could be retried. This is only recorded for GMS
    API errors on Android.
  </summary>
  <token key="Operation">
    <variant name=""/>
    <variant name=".AddLoginAsync" summary="AddLoginAsync"/>
    <variant name=".DisableAutoSignInForOriginsAsync"
        summary="DisableAutoSignInForOriginsAsync"/>
    <variant name=".FillMatchingLoginsAsync" summary="FillMatchingLoginsAsync"/>
    <variant name=".GetAllLoginsAsync" summary="GetAllLoginsAsync"/>
    <variant name=".GetAllLoginsForAccountAsync"
        summary="GetAllLoginsForAccountAsync"/>
    <variant name=".GetAutofillableLoginsAsync"
        summary="GetAutofillableLoginsAsync"/>
    <variant name=".RemoveLoginAsync" summary="RemoveLoginAsync"/>
    <variant name=".RemoveLoginForAccount" summary="RemoveLoginForAccount"/>
    <variant name=".RemoveLoginsByURLAndTimeAsync"
        summary="RemoveLoginsByURLAndTimeAsync"/>
    <variant name=".RemoveLoginsCreatedBetweenAsync"
        summary="RemoveLoginsCreatedBetweenAsync"/>
    <variant name=".UpdateLoginAsync" summary="UpdateLoginAsync"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.PasswordStoreAndroidBackend{Function}.APIError"
    enum="PasswordStoreAndroidBackendAPIError" expires_after="2024-02-20">
  <owner>maxan@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    The error codes returned by the GMS Core ChromeSync 1P API{Function}.
    Recorded when the asynchronous job has returned.
  </summary>
  <token key="Function">
    <variant name=""/>
    <variant name=".AddLoginAsync" summary="for AddLoginAsync"/>
    <variant name=".GetAllLoginsAsync" summary="for GetAllLoginsAsync"/>
    <variant name=".GetAutofillableLoginsAsync"
        summary="for GetAutofillableLoginsAsync"/>
    <variant name=".GetLoginsAsync" summary="for GetLoginsAsync"/>
    <variant name=".RemoveLoginAsync" summary="for RemoveLoginAsync"/>
    <variant name=".UpdateLoginAsync" summary="for UpdateLoginAsync"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.PasswordStoreAndroidBackend{Function}.ConnectionResultCode"
    enum="PasswordStoreAndroidBackendConnectionResultCode"
    expires_after="2024-02-20">
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The connection result status code returned by the GMS Core ChromeSync 1P
    API{Function}. Recorded when the asynchronous job has returned with error
    and only if ConnectionResult was set on the returned error.
  </summary>
  <token key="Function">
    <variant name=""/>
    <variant name=".AddLoginAsync" summary="for AddLoginAsync"/>
    <variant name=".GetAllLoginsAsync" summary="for GetAllLoginsAsync"/>
    <variant name=".GetAutofillableLoginsAsync"
        summary="for GetAutofillableLoginsAsync"/>
    <variant name=".GetLoginsAsync" summary="for GetLoginsAsync"/>
    <variant name=".RemoveLoginAsync" summary="for RemoveLoginAsync"/>
    <variant name=".UpdateLoginAsync" summary="for UpdateLoginAsync"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.PasswordStoreAndroidBackend{Function}.ErrorCode"
    enum="PasswordStoreAndroidBackendError" expires_after="2024-02-20">
  <owner>maxan@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    This metric reports the error observed when {Function} the PasswordStore
    Android backend. Recorded when the asynchronous job has returned.
  </summary>
  <token key="Function">
    <variant name=""
        summary="retrieving/adding/updating or removing logins from"/>
    <variant name=".AddLoginAsync" summary="adding a login to"/>
    <variant name=".GetAllLoginsAsync" summary="retrieving all logins from"/>
    <variant name=".GetAutofillableLoginsAsync"
        summary="retrieving autofillable logins from"/>
    <variant name=".GetLoginsAsync"
        summary="retrieving logins filtered by signon realm from"/>
    <variant name=".RemoveLoginAsync" summary="removing a login from"/>
    <variant name=".UpdateLoginAsync" summary="updating a login in"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.PasswordStoreBuiltInBackend.RemoveLoginsCreatedBetween.KeychainLatency"
    units="ms" expires_after="M121">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Real-time duration of passwords bulk deletion from the Keychain inside
    RemoveLoginsCreatedBetween() method on iOS. Recorded as soon as it
    completes.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordStoreProxyBackend.{Function}.Fallback"
    enum="Boolean" expires_after="2024-02-20">
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records true if the fallback to the build-in backend occurred during
    {Function} execution due to error returned by the GMS Core backend. True is
    recorded when the Android backend function returned with error and fallback
    is about to be called. False is never recorded.
  </summary>
  <token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>

<histogram name="PasswordManager.PasswordStore{Backend}.{Function}"
    enum="PasswordStoreAndroidBackendRequestStatus" expires_after="2024-02-20">
  <owner>maxan@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records each {Function} call by the PasswordStore {Backend}. Recorded twice:
    1) when the store issues the request, and 2) as the asynchronous job has
    finished or times out. The first bucket may exceed others if Chrome closes
    before the request finishes.
  </summary>
  <token key="Backend">
    <variant name="AndroidBackend" summary="Android backend"/>
    <variant name="Backend" summary="backend"/>
    <variant name="BuiltInBackend" summary="built-in backend"/>
  </token>
  <token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>

<histogram name="PasswordManager.PasswordStore{Backend}.{Function}.Latency"
    units="ms" expires_after="2024-02-20">
  <owner>maxan@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Real-time duration of the asynchronous call to {Function} in {Backend}.
    Recorded when the asynchronous job has returned.
  </summary>
  <token key="Backend">
    <variant name="AndroidBackend" summary="Android backend"/>
    <variant name="Backend" summary="backend"/>
    <variant name="BuiltInBackend" summary="built-in backend"/>
  </token>
  <token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>

<histogram name="PasswordManager.PasswordStore{Backend}.{Function}.Success"
    enum="BooleanSuccess" expires_after="2024-02-20">
  <owner>maxan@chromium.org</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records whether {Function} succeeded in {Backend}. Recorded when the
    asynchronous job has returned. False is emitted if an error occurs;
    otherwise true is emitted.
  </summary>
  <token key="Backend">
    <variant name="AndroidBackend" summary="Android backend"/>
    <variant name="Backend" summary="backend"/>
    <variant name="BuiltInBackend" summary="built-in backend"/>
  </token>
  <token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>

<histogram name="PasswordManager.PasswordSyncState3" enum="PasswordSyncState"
    expires_after="2024-03-03">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Whether the passwords are syncing and, if not, then what's causing sync
    failures. Recorded after the first sync attempt either succeeds or fails for
    the regular profiles.
  </summary>
</histogram>

<histogram name="PasswordManager.PasswordViewPage.UserActions"
    enum="PasswordViewPageInteractions" expires_after="2024-02-11">
  <owner>derinel@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Records the user actions performed on password viewing page in desktop
    settings. Reported upon interactions with the password settings page.
  </summary>
</histogram>

<histogram name="PasswordManager.PrefilledUsernameFillOutcome"
    enum="PrefilledUsernameFillOutcome" expires_after="2024-02-04">
  <owner>khamutov@google.com</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    Records successful fills of prefilled username values known as placeholders
    and unsuccessful fills that were blocked because the prefilled value was not
    identified as a placeholder. Recorded once per PasswordAutofillAgent
    instance, when attempting to fill a password form that contains a username
    value which was prepopulated by the website.

    Warning: this histogram was expired from M86 to M115; data may be missing.
  </summary>
</histogram>

<histogram
    name="PasswordManager.ProcessIncomingPasswordSharingInvitationResult"
    enum="PasswordManager.ProcessIncomingPasswordSharingInvitationResult"
    expires_after="2024-05-04">
  <owner>mamir@chromium.org</owner>
  <owner>rushans@google.com</owner>
  <component>UI&gt;Browser&gt;Passwords</component>
  <summary>
    Records the result of processing incoming password sharing invitation.
    Invitation are either auto-approved and stored in the password store or
    ignored for different reasons. This is recorded upon processing an incoming
    password sharing invitation.
  </summary>
</histogram>

<histogram name="PasswordManager.ProfileStore.TotalAccountsBeforeInitialSync"
    units="accounts" expires_after="M123">
  <owner>vasilii@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Records the number of locally saved passwords just before the password Sync
    was successfully turned on.
  </summary>
</histogram>

<histogram name="PasswordManager.PromoCard.ActionButtonClicked"
    enum="PasswordManagerPromoCard" expires_after="2024-02-04">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records the type of a promo card for which user clicked action button in the
    Password Manager UI. Recorded when a promo card action button is clicked.
  </summary>
</histogram>

<histogram name="PasswordManager.PromoCard.Dismissed"
    enum="PasswordManagerPromoCard" expires_after="2024-02-04">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records the type of a promo card dismissed in the Password Manager UI.
    Recorded when a promo card is dismissed.
  </summary>
</histogram>

<histogram name="PasswordManager.PromoCard.Shown"
    enum="PasswordManagerPromoCard" expires_after="2024-02-04">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records the type of a promo card shown in the Password Manager UI. Recorded
    when a promo card is shown.
  </summary>
</histogram>

<histogram name="PasswordManager.ProvisionalSaveFailure"
    enum="ProvisionalSaveFailure" expires_after="M115">
  <obsolete>
    Replaced in M115 by PasswordManager.ProvisionalSaveFailure2.
  </obsolete>
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    NOTE: M85 and older versions record incorrect buckets. For accurate
    analysis, consider filtering by milestone or looking at at metric
    PasswordManager.ProvisionalSaveFailure2 instead.

    Breakdown of cases where a password is submitted, but we don't even try and
    save it. Recorded for every password form submit.
  </summary>
</histogram>

<histogram name="PasswordManager.ProvisionalSaveFailure2"
    enum="ProvisionalSaveFailure" expires_after="2024-03-03">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Breakdown of cases where a password is submitted, but we don't even try and
    save it. Recorded for every password form submit.
  </summary>
</histogram>

<histogram name="PasswordManager.ReauthToAccessPasswordInSettings"
    enum="PasswordManager.ReauthResult" expires_after="M121">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Recorded whenever the user interacts with reauthentication in order to
    access the passwords in settings, or when such reauthentication is skipped
    for a well-defined reason.
  </summary>
</histogram>

<histogram name="PasswordManager.RequirementsSpecFetcher.HttpResponseCode"
    enum="HttpResponseCode" expires_after="2024-03-24">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    HTTP response code of fetching a password requirements file.
  </summary>
</histogram>

<histogram name="PasswordManager.RequirementsSpecFetcher.NetErrorCode"
    enum="NetErrorCodes" expires_after="2024-02-20">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Network error code of fetching a password requirements file.
  </summary>
</histogram>

<histogram name="PasswordManager.RequirementsSpecFetcher.NetworkDuration"
    units="ms" expires_after="2024-04-15">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Time until the lookup for a password requirements file completed (or was
    aborted).
  </summary>
</histogram>

<histogram name="PasswordManager.RequirementsSpecFetcher.Result"
    enum="PasswordRequirementsFetcherResult" expires_after="2024-02-15">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    Result of fetching requirements for password during password generation.
  </summary>
</histogram>

<histogram name="PasswordManager.ReuseCheck.CheckedPasswords" units="passwords"
    expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of passwords analyzed during the password reuse check. Note: this
    is a number of unique password values. Recorded after reuse check is
    finished.
  </summary>
</histogram>

<histogram name="PasswordManager.ReuseCheck.ReusedPasswords" units="passwords"
    expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of reused passwords found when the password reuse check
    completed. Note: this is a number of unique password values. Recorded after
    reuse check is finished.
  </summary>
</histogram>

<histogram name="PasswordManager.ReuseCheck.Time" units="ms"
    expires_after="2024-03-17">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time it took to complete the password reuse check. Recorded after reuse
    check is finished.
  </summary>
</histogram>

<histogram name="PasswordManager.ReusedPasswordType" enum="ReusedPasswordType"
    expires_after="2024-02-20">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the type of password (e.g saved password, sync password, enterprise
    password etc) reused by the user. This is logged when a password reuse
    happens.
  </summary>
</histogram>

<histogram
    name="PasswordManager.SavedGaiaPasswordHashCount2{SyncConsentStatus}"
    units="count" expires_after="2024-03-03">
  <owner>vsemeniuk@google.com</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the number of Gaia password hashes that have been saved for password
    reuse detection {SyncConsentStatus}. This is logged during the
    initialization of the PasswordReuseManagerImpl class.
  </summary>
  <token key="SyncConsentStatus">
    <variant name="" summary=""/>
    <variant name=".SignedInNonSync"
        summary="when the primary account for the profile does not have Sync
                 consent"/>
    <variant name=".Sync"
        summary="when the primary account for the profile has Sync consent"/>
  </token>
</histogram>

<histogram name="PasswordManager.SaveUIDismissalReason{UserSyncingType}"
    enum="PasswordManagerUIDismissalReason" expires_after="2024-02-12">
  <owner>vasilii@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Why was the save password UI (bubble or infobar) closed? Recorded for
    {UserSyncingType}. Note that on Automotive, closing the save password UI
    might not result in the password being saved in some cases (e.g. when the
    activity is destroyed or the device lock can't be set).
  </summary>
  <token key="UserSyncingType" variants="UserSyncingType"/>
</histogram>

<histogram
    name="PasswordManager.SaveUIOnClearedPasswordChangeFormDismissalReason"
    enum="PasswordManagerUIDismissalReason" expires_after="2023-10-22">
  <owner>kazinova@google.com</owner>
  <owner>khamutov@google.com</owner>
  <summary>
    Why was the save password UI closed on a cleared change password form?
    Recorded when the save bubble/infobar is dismissed.
  </summary>
</histogram>

<histogram name="PasswordManager.SaveUpdateUIDismissalReasonAndroid{Dialog}"
    enum="SaveUpdatePasswordMessageDismissReason" expires_after="2023-07-15">
  <owner>atsvirchkova@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    When Chrome detects an unknown password being entered into a web page, it
    shows the message asking if user wants to save or update (if there is
    already some other password saved for the site) the password. This histogram
    records what user decides to do with the message. Possible outcomes are: to
    accept Chrome's offer to save/update the password, to dismiss the message,
    to save/update the password in the edit dialog (which can be navigated from
    the message), to cancel in the dialog, tell to never save password for the
    site. Records the user action when the message is dismissed as well as when
    the dialog opened from the message is dismissed. Note that on Automotive,
    clicking save/update might not result in the password being saved in some
    cases (e.g. when the activity is destroyed or the device lock can't be set).
  </summary>
  <token key="Dialog">
    <variant name="" summary="Aggregated across all breakdowns"/>
    <variant name=".Save" summary="Only Save password dialog values"/>
    <variant name=".Update"
        summary="Only Update password dialog values (for only 1 password
                 saved previously per site)"/>
    <variant name=".UpdateWithUsernameConfirmation"
        summary="Only Update password dialog values when user must confirm
                 the username (multiple passwords saved per site)"/>
  </token>
</histogram>

<histogram name="PasswordManager.SavingOnUsernameFirstFlow"
    enum="SavingOnUsernameFirstFlow" expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records user actions when Chrome offers to save a username on a page which
    is considered to be a username first flow. Recorded on a successful
    submission.
  </summary>
</histogram>

<histogram name="PasswordManager.Settings.Export.Event"
    enum="PasswordExportEvent" expires_after="2023-11-19">
  <owner>ioanap@chromium.org</owner>
  <owner>atsvirchkova@google.com</owner>
  <summary>
    Measures the frequency of various password export events in settings menu.
    Recorded when the user interacts with the password export menu item or
    dialog. Curently logged only on Android.
  </summary>
</histogram>

<histogram name="PasswordManager.Settings.Export.Result2"
    enum="HistogramExportResult" expires_after="2024-02-19">
  <owner>ioanap@chromium.org</owner>
  <owner>atsvirchkova@google.com</owner>
  <summary>
    Records whether the export flow finished successfully or the type of error
    for passwords export started from password settings. Recorded when the
    export flow finishes. Logged only on Android. This is an updated version of
    PasswordManager.Settings.Export.Result, which logs more possible export flow
    results in adition to the old values.
  </summary>
</histogram>

<histogram name="PasswordManager.Settings.ToggleAutoSignIn"
    enum="BooleanEnabled" expires_after="2024-02-04">
  <owner>ioanap@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    Records user action to enable or disable automatic sign-in in password
    settings. Recorded when user interacts with the toggle. This metric is only
    logged on Android.
  </summary>
</histogram>

<histogram name="PasswordManager.Settings.ToggleOfferToSavePasswords"
    enum="BooleanEnabled" expires_after="2024-02-04">
  <owner>ioanap@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    Records user action to enable or disable password saving in password
    settings. Recorded when user interacts with the toggle. This metric is only
    logged on Android.
  </summary>
</histogram>

<histogram name="PasswordManager.SharedPasswordsNotificationBubble.UserAction"
    enum="PasswordManager.SharedPasswordsNotificationInteractions"
    expires_after="2024-03-01">
  <owner>mamir@chromium.org</owner>
  <owner>rgod@google.com</owner>
  <summary>
    Records different user interactions with the shared password notification
    bubble. The bubble is displayed upon visiting a sign-in form for which one
    or more saved passwords are shared by other users. The metric is recorded
    upon displaying the notification and upon user interaction with one of the
    buttons in the notification.
  </summary>
</histogram>

<histogram name="PasswordManager.ShortcutMetric"
    enum="PasswordManagerShortcutMetric" expires_after="2024-02-20">
  <owner>vasilii@chromium.org</owner>
  <owner>vsemeniuk@google.com</owner>
  <summary>
    Records the user actions related to password manager shortcut. Recorded
    before showing install prompt, after successful installation, or when user
    switched profile inside a shortcut.
  </summary>
</histogram>

<histogram
    name="PasswordManager.SingleUsername.ForgotPasswordServerPredictionUsed"
    enum="Boolean" expires_after="M122">
  <owner>kazinova@google.com</owner>
  <owner>shaikhitdin@google.com</owner>
  <summary>
    Recorded when a single username form is detected using server predictions.
    Records whether the prediction is SINGLE_USERNAME_FORGOT_PASSWORD.
  </summary>
</histogram>

<histogram name="PasswordManager.SingleUsername.PasswordFormHadUsernameField"
    enum="PasswordFormHadUsernameField" expires_after="2024-01-28">
  <owner>kolos@chromium.org</owner>
  <owner>shaikhitdin@google.com</owner>
  <summary>
    Single username vote is sent after user is signed in (i.e. entered password
    in password form). This means that there are actually 2 forms in username
    first flow, that is single username and password form.

    Form is considered for single username vote in 2 cases:

    (1) There is a password field and no username fields in the password form.

    (2) There is a password field and username value from password form matches
    username value in the single username form.

    This metric tracks which of the two cases the vote is coming from. Recorded
    once per vote submission.
  </summary>
</histogram>

<histogram name="PasswordManager.SingleUsername.VoteDataAvailability"
    enum="SingleUsernameVoteDataAvailability" expires_after="M122">
  <owner>kazinova@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <owner>shaikhitdin@google.com</owner>
  <summary>
    This metric records whether username first and forgot password form voting
    data is available, and whether it contains information about the same form.
    Recorded during single username votes uploading.
  </summary>
</histogram>

<histogram name="PasswordManager.StoreDecryptionResult"
    enum="PasswordDecryptionResult" expires_after="2024-03-30">
  <owner>mamir@chromium.org</owner>
  <owner>kazinova@google.com</owner>
  <summary>
    Describes the result of decrypting a password value from the LoginDatabase.
  </summary>
</histogram>

<histogram name="PasswordManager.StoresUsedForFillingInLast28Days"
    enum="PasswordManagerFillingSource" expires_after="2024-03-24">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    Which of the password manager's stores (the profile-scoped one and/or the
    account-scoped one) were used within the last 28 days for filling passwords.
    Recorded whenever a password form is successfully submitted. This should
    typically only be used with &quot;Count unique clients&quot;.
  </summary>
</histogram>

<histogram name="PasswordManager.StoresUsedForFillingInLast7Days"
    enum="PasswordManagerFillingSource" expires_after="2024-03-24">
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    Which of the password manager's stores (the profile-scoped one and/or the
    account-scoped one) were used within the last 7 days for filling passwords.
    Recorded whenever a password form is successfully submitted. This should
    typically only be used with &quot;Count unique clients&quot;.
  </summary>
</histogram>

<histogram name="PasswordManager.SubmittedFormFrame2"
    enum="SubmittedPasswordFormFrame" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records a frame type (eg. main frame, iframe with the same url as the main
    frame, etc) of a submitted password form. Logged only once per submitted
    form.
  </summary>
</histogram>

<histogram name="PasswordManager.SubmittedFormType2" enum="PasswordFormType2"
    expires_after="M125">
  <owner>kazinova@google.com</owner>
  <owner>shaikhitdin@google.com</owner>
  <owner>chrome-password-manager-metrics-alerts@google.com</owner>
  <summary>
    The presumed type (e.g. signup, login, change password) of all submitted
    password forms. The type is based on local heuristics. Logged on the
    corresponding form manager destruction.
  </summary>
</histogram>

<histogram name="PasswordManager.SuccessfulLoginHappened"
    enum="BooleanSuccessfulLoginHappenedOnHttps" expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    For a successful login, whether the origin is HTTPS or HTTP. A succesful
    login is detected by local heuristics. The heuristics can misclassify
    whether a login succeeded, so this is an approximation.
  </summary>
</histogram>

<histogram name="PasswordManager.SuccessfulSubmissionIndicatorEvent"
    enum="SubmissionIndicatorEvent" expires_after="2024-01-28">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The type of event that the Password Manager used for detecting a password
    form submission. Recorded for each successful password form submission.
  </summary>
</histogram>

<histogram
    name="PasswordManager.SyncControllerDelegateNotifiesCredentialManager.APIErrorCode"
    enum="CredentialManagerAPIError" expires_after="2024-03-24">
  <owner>kazinova@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    The error codes returned by the GMS Core ChromeSync 1P CredentialManager API
    for setting the current autofill account. Recorded when the asynchronous job
    has returned. This is currently only recorded on Android.
  </summary>
</histogram>

<histogram
    name="PasswordManager.SyncControllerDelegateNotifiesCredentialManager.ErrorCode"
    enum="PasswordStoreAndroidBackendError" expires_after="2024-03-24">
  <owner>kazinova@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Error code registered when PasswordSyncControllerDelegateAndroid fails in
    notifying CredentialManager of the currect account. This happens either when
    the request made to the credential manager API returns with a failure or
    before, if the PasswordSyncControllerDelegateAndroid makes a call with
    incomplete data (e.g. no account is found when one is required).
  </summary>
</histogram>

<histogram
    name="PasswordManager.SyncControllerDelegateNotifiesCredentialManager.Success"
    enum="Boolean" expires_after="2024-03-24">
  <owner>kazinova@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Whether PasswordSyncControllerDelegateAndroid succeeded in notifying
    CredentialManager of the currect account. Recorded when the async request to
    notify the credential manager about the account returns.
  </summary>
</histogram>

<histogram name="PasswordManager.SyncingAccountState3"
    enum="PasswordManagerSyncingAccountState" expires_after="2024-02-11">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>chrome-password-manager-metrics-alerts@google.com</owner>
  <summary>
    Information about the user's current sync status crossed with whether their
    synced password is saved. Recorded at most once per day for regular
    profiles.
  </summary>
</histogram>

<histogram name="PasswordManager.SyncMetadataReadError2"
    enum="PasswordSyncMetadataReadError" expires_after="2024-02-04">
  <owner>mamir@chromium.org</owner>
  <owner>mastiz@chromium.org</owner>
  <summary>
    This metric reports the error observed when trying to read the Sync metadata
    from the password store during the start of Password sync. Recorded only if
    password store was created.
  </summary>
</histogram>

<histogram name="PasswordManager.SyncPasswordHashChange"
    enum="GaiaPasswordHashChange" expires_after="2024-02-25">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    This metric reports a type of a sync password hash change event. Recorded
    when a sync password hash is saved or cleared.
  </summary>
</histogram>

<histogram name="PasswordManager.TimeBetweenStoreAndServer" units="ms"
    expires_after="2024-03-01">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    The time between receiving saved credentials from the password store and
    predictions from the Autofill server. Recorded each time when predictions
    for a form are received.
  </summary>
</histogram>

<histogram name="PasswordManager.TouchToFill.CredentialIndex" units="index"
    expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    The index of a selected credential in the Touch To Fill sheet. Only recorded
    when the sheet showed at least two entries.
  </summary>
</histogram>

<histogram name="PasswordManager.TouchToFill.DismissalReason"
    enum="BottomSheet.StateChangeReason" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    The reason why a user dismissed the Touch To Fill sheet. Recorded once for
    each dismissal.
  </summary>
</histogram>

<histogram name="PasswordManager.TouchToFill.Outcome"
    enum="TouchToFill.Outcome" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    The final outcome that closes the Touch To Fill sheet (e.g. credentials
    filling, settings opened, failed reauth, sheet dismissal). Recorded once for
    each closing.
  </summary>
</histogram>

<histogram name="PasswordManager.TouchToFill.SubmissionReadiness"
    enum="TouchToFill.SubmissionReadiness" expires_after="2024-03-17">
  <owner>kolos@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    A given form's state (e.g. there are empty fields in the form, or there are
    only two fields and they both are filled by Chrome) that indicates whether
    the form is ready for submission. Recorded when a Touch To Fill sheet is
    shown for that form.
  </summary>
</histogram>

<histogram name="PasswordManager.TouchToFill.SuccessfulSubmissionWasObserved"
    enum="Boolean" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    Measures whether a credential filling by Touch To Fill leads to a successful
    submission or not (submission failed, or the submission could not be
    associated with filling by Touch To Fill). A submission after filling is
    considered successful iff the filled and submitted usernames coincide, the
    timestamps are within one minute and a user hasn't modified any field after
    filling. Otherwise, it is reported as 'no successful submission observed'.
    The metric is used to compare a login success rate when automated submission
    is enabled and disabled. Due to stale or wrong credentials, the success rate
    will be degraded independently of automated submission. Recorded when the
    password manager has classified a login submission (succeeded or failed) or
    a user has modified a field after Touch-To-Fill.
  </summary>
</histogram>

<histogram name="PasswordManager.TouchToFill.TimeToSuccessfulLogin" units="ms"
    expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    The time in milliseconds between filling by the Touch To Fill and a
    successful submission (To ensure filling and submitting correspond to each
    other, the usernames should coincide and the timestamps should be within one
    minute. A successful login after a failed submission or manual typing is not
    reported). Used to compare the times when automated submission is enabled
    and disabled. Thus, we measure the time saved for a user. Recorded when the
    password manager detects that the login was successful.
  </summary>
</histogram>

<histogram name="PasswordManager.UI.OpenedPasswordDetailsWhileSearching"
    enum="BooleanSuccess" expires_after="2023-12-04">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records whether user navigated to password details page while using search
    field. Recorded only on desktop after user clicked on a password entry.
  </summary>
</histogram>

<histogram name="PasswordManager.UIDismissalReason"
    enum="PasswordManagerUIDismissalReason" expires_after="2024-02-04">
  <owner>vasilii@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Why was the password manager's UI (bubble or infobar) closed? Save and
    update UI are tracked separately.
  </summary>
</histogram>

<histogram name="PasswordManager.UnenrolledFromUPMDueToErrors" enum="Boolean"
    expires_after="2024-03-24">
  <owner>kazinova@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records true when a client's profile is being unenrolled from UPM. This
    happens when a password store request to GMS Core fails with an error that
    is deemed unrecoverable.
  </summary>
</histogram>

<histogram name="PasswordManager.UnifiedPasswordManager.ActiveStatus2"
    enum="UnifiedPasswordManagerActiveStatus" expires_after="M123">
  <owner>kazinova@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Recorded on profile open after the sync service is initialized and once per
    regular profile. It is recorded for clients that have UPM enabled and logs
    whether UPM is actually active for them. Reasons why UPM might be inactive
    are: passwords sync off or client unenrolled due to unresolvable errors.
    Note a client can have both sync off and be unenrolled, in which case it
    will still only appear in the sync off bucket, since this is considered the
    main reason why the client is inactive for UPM.
  </summary>
</histogram>

<histogram name="PasswordManager.UnifiedPasswordManager.WasMigrationDone"
    enum="BooleanSuccess" expires_after="2024-03-24">
  <owner>vsemeniuk@google.com</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records whether passwords were successfully migrated from built in backed to
    android backed and the current migration version stored in pref is
    greater/equal to the version from feature parameters. Recorded on start up.
  </summary>
</histogram>

<histogram
    name="PasswordManager.UnifiedPasswordManager.{UPMMigrationType}.Latency"
    units="ms" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Real-time duration of {UPMMigrationType}. Recorded when all operations are
    completed and migration is finished.
  </summary>
  <token key="UPMMigrationType" variants="UPMMigrationType"/>
</histogram>

<histogram
    name="PasswordManager.UnifiedPasswordManager.{UPMMigrationType}.Success"
    enum="BooleanSuccess" expires_after="M123">
  <owner>vsemeniuk@google.com</owner>
  <owner>fhorschig@chromium.org</owner>
  <summary>
    Records success of {UPMMigrationType}. Recorded when the migration is
    finished.
  </summary>
  <token key="UPMMigrationType" variants="UPMMigrationType"/>
</histogram>

<histogram name="PasswordManager.UpdateUIDismissalReason"
    enum="PasswordManagerUIDismissalReason" expires_after="2024-03-17">
  <owner>vasilii@chromium.org</owner>
  <summary>Why was the update password UI (bubble or infobar) closed?</summary>
</histogram>

<histogram
    name="PasswordManager.UpdateUIOnClearedPasswordChangeFormDismissalReason"
    enum="PasswordManagerUIDismissalReason" expires_after="2024-04-15">
  <owner>kazinova@google.com</owner>
  <owner>khamutov@google.com</owner>
  <summary>
    Why was the update password UI closed on a cleared change password form?
    Recorded when the update bubble/infobar is dismissed.
  </summary>
</histogram>

<histogram name="PasswordManager.UPMUnenrollmentReason"
    enum="PasswordStoreAndroidBackendAPIError" expires_after="2024-03-17">
  <owner>ioanap@chromium.org</owner>
  <owner>izuzic@google.com</owner>
  <summary>
    Records the error code returned by the GMS Password Checkup 1P API which
    caused unenrollment. This is recorded when the user is evicted from UPM.
  </summary>
</histogram>

<histogram name="PasswordManager.UPMUpdateSignInCredentialsSucces"
    enum="Boolean" expires_after="2024-01-30">
  <owner>izuzic@google.com</owner>
  <owner>ioanap@chromium.org</owner>
  <summary>
    Records whether the user was successfully signed in after using the sign in
    button on the Password Manager error message. The outcome can be either
    success or failure. It's recorded when the sign in flow that updates
    credentials finishes. Currently only used on Android.
  </summary>
</histogram>

<histogram name="PasswordManager.UsernameDetectionMethod"
    enum="UsernameDetectionMethod" expires_after="2024-02-04">
  <owner>kazinova@google.com</owner>
  <owner>kolos@chromium.org</owner>
  <summary>
    Measures what method was used for username field detection in the renderer
    code. The metric may be recorded several times for page visit because it is
    recorded at every PasswordForm creation. If a site changes HTML attributes
    of fields or server-side predictions is received, different values can be
    recorded for the same form. If an outcome of HTML classifier or a
    server-side prediction coincides with the outcome of base heuristic, the
    metric points to base heuristic method.
  </summary>
</histogram>

<histogram name="PasswordManager.WeakCheck.CheckedPasswords" units="passwords"
    expires_after="2024-02-20">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of passwords analyzed during the passwords weak check.
  </summary>
</histogram>

<histogram name="PasswordManager.WeakCheck.PasswordScore"
    enum="PasswordWeaknessScore" expires_after="2023-11-12">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The score of the password that was checked by the passwords weak check. The
    score indicates how guessable the password is.
  </summary>
</histogram>

<histogram name="PasswordManager.WeakCheck.SingleCheckTime" units="ms"
    expires_after="2024-03-17">
  <owner>jkeitel@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The time taken to perform a weakness check for a single password. Recorded
    whenever a password weakness score is computed.
  </summary>
</histogram>

<histogram name="PasswordManager.WeakCheck.Time" units="ms"
    expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>The time it took to complete the passwords weak check.</summary>
</histogram>

<histogram name="PasswordManager.WeakCheck.WeakPasswords" units="passwords"
    expires_after="2024-03-17">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of weak passwords found when the passwords weak check completed.
  </summary>
</histogram>

<histogram name="PasswordManager.WellKnownChangePasswordResult"
    enum="WellKnownChangePasswordResult" expires_after="2024-02-25">
  <owner>kolos@chromium.org</owner>
  <owner>jkeitel@google.com</owner>
  <summary>
    The type of change password URL opened after requesting, for example,
    https://example.com/.well-known/change-password. The metric is emitted when
    the appropriate throttle handles such URLs.
  </summary>
</histogram>

<histogram name="PasswordManager.{Location}.AuthenticationResult"
    enum="BooleanSuccess" expires_after="2024-02-20">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    Records the result of the attempt to re-auth the user via biometrics when
    {Location}.
  </summary>
  <token key="Location">
    <variant name="BiometricAuthenticationPromo"
        summary="trying to enable the feature from the promo dialog"/>
    <variant name="PasswordFilling" summary="filling suggestion on webpage"/>
  </token>
</histogram>

<histogram name="PasswordManager.{Location}.AuthenticationTime" units="ms"
    expires_after="2024-02-20">
  <owner>vsemeniuk@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>Records the time it takes user to authenticate {Location}.</summary>
  <token key="Location">
    <variant name="ManagementBubble"
        summary="in management bubble when navigating to details view"/>
    <variant name="PasswordFilling"
        summary="on webpage after selecting a suggestion to fill"/>
    <variant name="Settings"
        summary="in settings when trying to show/copy/edit/export passwords"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.{Store}BlacklistedSitesHiRes3{CustomPassphraseStatus}"
    units="sites" expires_after="2024-02-20">
  <owner>kazinova@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The total number of sites that the user has blocklisted in the password
    manager's {Store}. Recorded by iterating over stored passwords at most once
    per day for regular profiles.
  </summary>
  <token key="Store" variants="Store"/>
  <token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
</histogram>

<histogram name="PasswordManager.{Store}InaccessiblePasswords2"
    units="saved passwords" expires_after="2023-06-26">
  <obsolete>
    Obsolete in M112 due to renaming profile scoped variant from empty to
    ProfileStore. Replaced by
    PasswordManager.ProfileStore.InaccessiblePasswords3 and
    PasswordManager.AccountStore.InaccessiblePasswords3
  </obsolete>
  <owner>derinel@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    The number of saved passwords that could not be decrypted in the password
    manager's {Store}. Recorded once for the regular profile when it's opened.
  </summary>
  <token key="Store">
    <variant name="" summary="profile-scoped store"/>
    <variant name="AccountStore." summary="account-scoped store"/>
  </token>
</histogram>

<histogram name="PasswordManager.{Store}InaccessiblePasswords3"
    units="saved passwords" expires_after="2024-02-20">
  <owner>derinel@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    The number of saved passwords that could not be decrypted in the password
    manager's LoginDatabase for {Store}. Recorded once for the regular profile
    when it's opened.
  </summary>
  <token key="Store">
    <variant name="AccountStore." summary="account-scoped store"/>
    <variant name="ProfileStore." summary="profile-scoped store"/>
  </token>
</histogram>

<histogram name="PasswordManager.{Store}LoginDatabaseEncryptionStatus"
    enum="LoginDatabaseEncryptionStatus" expires_after="2024-02-20">
  <owner>derinel@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    The encryption status of the login database in the password manager's
    {Store} after initialization. Recorded only once per profile when the
    database is initialized.
  </summary>
  <token key="Store">
    <variant name="AccountStore." summary="account-scoped store"/>
    <variant name="ProfileStore." summary="profile-scoped store"/>
  </token>
</histogram>

<histogram
    name="PasswordManager.{Store}PasswordNotes.CountCredentialsWithNonEmptyNotes2"
    units="count" expires_after="2024-04-01">
  <owner>derinel@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Total number of credentials with non-empty notes in the password manager's
    {Store}. Recorded at most once per day for regular profiles.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram name="PasswordManager.{Store}PasswordNotes.CountNotesPerCredential2"
    units="count" expires_after="2023-06-01">
  <obsolete>
    Obsolete since Jan 2022 as emitting credentials with 0 notes is not
    required. Replaced by
    PasswordManager.{Store}PasswordNotes.CountNotesPerCredential3
  </obsolete>
  <owner>derinel@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Total number of notes attached to a password in the password manager's
    {Store}. Recorded once for each credential at most once per day for regular
    profiles.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram name="PasswordManager.{Store}PasswordNotes.CountNotesPerCredential3"
    units="count" expires_after="2024-04-01">
  <owner>derinel@google.com</owner>
  <owner>mamir@chromium.org</owner>
  <summary>
    Total number of notes attached to a password in the password manager's
    {Store}. Recorded once for credentials with 1+ notes at most once per day
    for regular profiles.
  </summary>
  <token key="Store" variants="Store"/>
</histogram>

<histogram
    name="PasswordManager.{Store}TimesPasswordUsed3.{PasswordType}{CustomPassphraseStatus}"
    units="PasswordUses" expires_after="2024-02-20">
  <owner>kazinova@google.com</owner>
  <owner>battre@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <summary>
    The number of times each saved password from the {Store} has been used to
    log in. Split by whether created by the user or generated by Chrome, and
    further by whether the user used sync with custom passphrase or not.
    Recorded by iterating over stored passwords soon after startup, at most once
    per day for regular profiles.
  </summary>
  <token key="Store" variants="Store"/>
  <token key="PasswordType" variants="PasswordType"/>
  <token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
</histogram>

<histogram name="PasswordManager.{Store}TotalAccountsHiRes3.WithScheme{Scheme}"
    units="accounts" expires_after="2024-02-20">
  <owner>battre@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <owner>vasilii@chromium.org</owner>
  <summary>
    The number of accounts stored in the password manager's {Store} (across all
    sites) for origins with the scheme (e.g., HTTP, HTTPS, FTP) as given in the
    histogram suffix. For each scheme, the count is recorded at most once per
    day for regular profiles.
  </summary>
  <token key="Store" variants="Store"/>
  <token key="Scheme" variants="Scheme"/>
</histogram>

<histogram
    name="PasswordManager.{Store}{Metric3}.{PasswordType}{CustomPassphraseStatus}"
    units="units" expires_after="2024-02-20">
  <owner>kazinova@google.com</owner>
  <owner>vasilii@chromium.org</owner>
  <owner>mamir@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <owner>battre@chromium.org</owner>
  <summary>
    The number of accounts stored {Metric3} in the password manager's {Store}. ,
    split by whether created by the user or generated by Chrome, and further by
    whether the user use sync with custom passphrase or not. Recorded during
    browser start-up, at most once per day for regular profiles.
  </summary>
  <token key="Store" variants="Store"/>
  <token key="Metric3">
    <variant name="AccountsPerSiteHiRes3" summary="per site"/>
    <variant name="TotalAccountsHiRes3.ByType" summary="across all sites"/>
  </token>
  <token key="PasswordType" variants="PasswordType"/>
  <token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
</histogram>

<histogram name="PasswordProtection.InterstitialAction"
    enum="PasswordProtectionWarningAction" expires_after="2024-02-11">
  <owner>xinghuilu@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records how a user interacts with the password protection interstitial
    (a.k.a chrome://reset-password page). Logged when the interstitial is shown
    and when the user chooses to change their password. Warning: this histogram
    was expired from 2021-01-30 to 2021-10-25; data may be missing.
  </summary>
</histogram>

<histogram name="PasswordProtection.ModalWarningDialogAction"
    enum="PasswordProtectionWarningAction" expires_after="2024-03-17">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records how a user interacts with the password protection modal warning
    dialog. Logged when the dialog is shown and when the user chooses to change
    their password, ignore warning, or navigate away.
  </summary>
</histogram>

<histogram name="PasswordProtection.ModalWarningDialogLifetime" units="ms"
    expires_after="2024-04-18">
  <owner>xinghuilu@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the interval between when the password protection modal warning
    dialog is constructed and when the dialog is destructed. The dialog can be
    destructed when the user takes action or the web content is destroyed.
  </summary>
</histogram>

<histogram name="PasswordProtection.PageInfoAction"
    enum="PasswordProtectionWarningAction" expires_after="2024-03-10">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records how a user interacts with page info bubble that displays the
    password protection warning. Logged when such page info bubble is shown and
    when the user chooses to change their password, ignore warning, or mark site
    as legitimate via buttons on the page info bubble.
  </summary>
</histogram>

<histogram base="true" name="PasswordProtection.PasswordAlertModeOutcome"
    enum="PasswordProtectionRequestOutcome" expires_after="2024-01-14">
  <owner>xinghuilu@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the outcome of the password alert mode, indicating if password alert
    warning is shown successfully or if it is skipped for some reason. Warning:
    this histogram was expired from 2021-01-30 to 2021-10-25; data may be
    missing.
  </summary>
</histogram>

<histogram name="PasswordProtection.PasswordProtectionResponseOrErrorCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2024-03-17">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Response or error codes for PasswordProtectionRequest. Logged after chrome
    receives response of PasswordProtectionRequest from Safe Browsing service.

    Note: In M98 the error code HTTP_RESPONSE_CODE_FAILURE was changed to log
    the actual HTTP response code.
  </summary>
</histogram>

<histogram name="PasswordProtection.PasswordReuseSyncAccountType"
    enum="PasswordProtectionSyncAccountType" expires_after="2024-02-25">
  <owner>nwokedi@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    When password protection service detects a reuse of Chrome sync password,
    record the type of Chrome sync account on which the reuse happens (e.g.
    @gmail.com, @googlemail.com, or other dasher account).
  </summary>
</histogram>

<histogram name="PasswordProtection.RequestNetworkDuration" units="ms"
    expires_after="2024-03-17">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    The time it takes for PasswordProtectionService request. It is not recorded
    for requests that were canceled.
  </summary>
</histogram>

<histogram base="true" name="PasswordProtection.RequestOutcome"
    enum="PasswordProtectionRequestOutcome" expires_after="2024-03-10">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the outcome of the password protection request, indicating if
    request is sent out successfully or if it is skipped or canceled for some
    reason.
  </summary>
</histogram>

<histogram name="PasswordProtection.RequestReferringAppSource"
    enum="PasswordProtectionReferringAppSource" expires_after="2023-12-04">
  <owner>xinghuilu@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records the referring app source of the password protection request,
    indicating the source of the referring app name in the request. This metric
    is only logged on Android.
  </summary>
</histogram>

<histogram name="PasswordProtection.RequestWithToken.{TriggerType}"
    enum="BooleanSent" expires_after="2024-03-02">
  <owner>xinghuilu@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Records if the password protection request, triggered by a(n) {TriggerType},
    was sent with a GAIA-tied OAuth2 token. This token is sent only for
    signed-in Enhanced Safe Browsing users.
  </summary>
  <token key="TriggerType" variants="PasswordProtectionTriggerType"/>
</histogram>

<histogram name="PasswordProtection.SampleReportSent" enum="Boolean"
    expires_after="2023-09-21">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Logs when an event where users reuse their password or focus on a password
    field is sent as a sample ping when the URL in the allowlist to Safe
    Browsing. Events only happen 1% of the time when URLs match the allowlist.
  </summary>
</histogram>

<histogram name="PasswordProtection.Verdict" enum="PasswordProtectionVerdict"
    expires_after="2024-03-10">
  <owner>vakh@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    Verdict types returned by Safe Browsing server for a password protection
    request. Request can be triggered when user focuses on a password field or
    enters a protected password (syncing, signed-in, or saved).
  </summary>
</histogram>

<histogram name="PasswordProtection.VisualFeatureExtractionDuration" units="ms"
    expires_after="2023-12-10">
  <owner>drubery@chromium.org</owner>
  <owner>chrome-counter-abuse-alerts@google.com</owner>
  <summary>
    The time it takes to extract the visual features of a login page before
    sending a PasswordProtectionRequest. Logged every time visual features are
    extracted (when an SBER user sends an On Focus ping).
  </summary>
</histogram>

</histograms>

</histogram-configuration>
