blob: 89863320183b371053b26bb49d67247655171846 [file] [log] [blame]
<!--
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="PasswordType">
<variant name="AutoGenerated" summary="automatically generated"/>
<variant name="Overall" summary="generated or created"/>
<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="2023-11-05">
<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="2023-11-05">
<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.AccessoryBarShown"
enum="AccessoryBarContents" expires_after="2023-09-03">
<owner>fhorschig@chromium.org</owner>
<owner>ioanap@chromium.org</owner>
<summary>
Android only. Records how often users encounter the keyboard accessory bar.
Its buckets show the contents when it came up. Every bucket may be logged up
to one time per impression.
</summary>
</histogram>
<histogram name="KeyboardAccessory.AccessorySheetSuggestionCount" units="count"
expires_after="2023-06-18">
<owner>fhorschig@chromium.org</owner>
<owner>ioanap@chromium.org</owner>
<summary>
Android only. Records how many suggestions a user faced when opening a
sheet. The base histogram counts impressions across all sheets.
</summary>
</histogram>
<histogram name="KeyboardAccessory.AccessorySheetSuggestionsSelected"
enum="AccessorySuggestionType" expires_after="2023-10-22">
<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="2023-09-03">
<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="2023-06-18">
<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="2023-06-18">
<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="2023-06-18">
<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="M118">
<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="2023-09-03">
<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="2023-10-09">
<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="2023-10-23">
<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="2023-09-10">
<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="2023-11-20">
<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="2023-11-20">
<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="2023-11-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="2023-09-03">
<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="2023-09-10">
<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="2023-09-10">
<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="M117">
<owner>kazinova@google.com</owner>
<owner>kolos@chromium.org</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="2023-10-22">
<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">
<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="2023-08-27">
<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="2023-09-10">
<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="2023-09-30">
<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="2023-09-10">
<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.AccountChooserDialogMultipleAccounts"
enum="AccountChooserDismissalReason" expires_after="2023-10-08">
<owner>vasilii@chromium.org</owner>
<owner>kazinova@google.com</owner>
<summary>
The dismissal reason of the account chooser with multiple accounts. Recorded
when the account chooser is dismissed.
</summary>
</histogram>
<histogram name="PasswordManager.AccountChooserDialogOneAccount"
enum="AccountChooserDismissalReason" expires_after="2023-10-15">
<owner>vasilii@chromium.org</owner>
<owner>kazinova@google.com</owner>
<summary>
The dismissal reason of the account chooser with one account. Recorded when
the account chooser is dismissed.
</summary>
</histogram>
<histogram name="PasswordManager.AccountStorage.ClearedOnStartup"
enum="PasswordAccountStoreClearedOnStartup" expires_after="2023-04-16">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<owner>mamir@chromium.org</owner>
<owner>treib@chromium.org</owner>
<summary>
Records whether the account-scoped password storage had to be cleared during
profile initialization.
</summary>
</histogram>
<histogram name="PasswordManager.AccountStorage.ClearedOnStartup2"
enum="PasswordAccountStoreClearedOnStartup" expires_after="2023-09-10">
<owner>mamir@chromium.org</owner>
<owner>treib@chromium.org</owner>
<summary>
Records whether the account-scoped password storage had to be cleared during
regular profile initialization.
</summary>
</histogram>
<histogram
name="PasswordManager.AccountStorage.MoveToAccountStoreFlowAccepted2"
enum="PasswordManager.MoveToAccountStoreTrigger" expires_after="2023-08-20">
<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="2023-10-22">
<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="2023-10-22">
<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-10-22">
<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="2023-10-08">
<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="2023-10-06">
<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="2023-08-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="2023-08-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="2023-08-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.AccountStoreVsProfileStore3.{DifferenceType}"
units="accounts" expires_after="2023-05-01">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<owner>mamir@chromium.org</owner>
<owner>treib@chromium.org</owner>
<summary>
The number of accounts {DifferenceType}. Recorded once per Chrome profile,
soon after startup, only for users who are opted in to the account-scoped
storage. Recorded at most once per day.
</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.AccountStoreVsProfileStore4.{DifferenceType}"
units="accounts" expires_after="2023-12-01">
<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.AccountStoreUsed"
enum="Boolean" expires_after="2023-09-10">
<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="2023-10-08">
<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="2023-11-05">
<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="2023-07-19">
<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="2023-07-05">
<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="2023-08-27">
<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="2023-08-27">
<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="M120">
<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="2023-10-08">
<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="2023-09-03">
<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="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 network fetch.
</summary>
</histogram>
<histogram name="PasswordManager.AffiliationFetcher.FetchTime.{Status}"
units="ms" expires_after="M120">
<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="M120">
<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="M120">
<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-09-05">
<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-09-05">
<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="2023-09-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="2023-11-05">
<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="2023-10-22">
<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.BiometricAuthBeforeFillingEnabled"
enum="BooleanEnabled" expires_after="M112">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per
profile, and at most once per day.
</summary>
</histogram>
<histogram name="PasswordManager.BiometricAuthBeforeFillingEnabled2"
enum="BooleanEnabled" expires_after="2023-10-22">
<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="M118">
<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="M118">
<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="2023-09-10">
<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.AccountsInStatisticsTable"
units="accounts" expires_after="2023-04-23">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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. (In case of multiple profiles,
the counts are for the profile that first has a WebContents created.)
</summary>
</histogram>
<histogram name="PasswordManager.BubbleSuppression.AccountsInStatisticsTable2"
units="accounts" expires_after="2023-10-31">
<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="2023-09-10">
<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="2023-09-10">
<owner>vasilii@chromium.org</owner>
<owner>vsemeniuk@google.com</owner>
<summary>
Count of credentials analyzed when the password bulk check completed
successfully (see '.CheckedCredentialsOnErrorOrCanceled' for non-success
cases). 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.CheckedCredentialsOnErrorOrCanceled"
units="credentials" expires_after="2023-07-05">
<owner>vasilii@chromium.org</owner>
<owner>vsemeniuk@google.com</owner>
<summary>
Count of credentials that were supposed to be analyzed if the password bulk
check encountered an error or was canceled (see '.CheckedCredentials' for
the success case). 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="2023-09-10">
<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="2023-09-10">
<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="2023-11-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. Recorded after every successful password check.
</summary>
</histogram>
<histogram name="PasswordManager.BulkCheck.InsecureCredentials.Unmuted.Count"
units="credentials" expires_after="2023-11-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="2023-09-10">
<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="2023-09-03">
<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="M118">
<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="2023-09-10">
<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="2023-09-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="2023-09-10">
<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="2023-10-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="2023-10-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. 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="2023-09-10">
<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="2023-10-01">
<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.CertificateErrorsWhileSeeingForms"
enum="PasswordCertificateError" expires_after="2023-08-20">
<owner>battre@chromium.org</owner>
<owner>kazinova@google.com</owner>
<owner>chrome-password-manager-metrics-alerts@google.com</owner>
<summary>
When the password manager sees new forms on the page, it records in this
histogram whether there were any SSL certificate errors. The presence of SSL
errors likely means that the password manger will stop working, so the
reporting is done at the last point when password manager is still
guaranteed to be active. Some particular errors are distinguished, with the
rest being reported in a catch-all bucket.
</summary>
</histogram>
<histogram name="PasswordManager.CompromisedCredentials3.{Issue}"
units="credentials" expires_after="M118">
<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="CountLeakedAfterBulkCheck"
summary="leaked credentials in the database if password bulk check
was executed at least once"/>
<variant name="CountPhished" summary="phished credentials in the database"/>
</token>
</histogram>
<histogram name="PasswordManager.CredentialEditError"
enum="CredentialEditError" expires_after="M118">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="2023-09-10">
<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.CredentialsWithDuplicates2" units="units"
expires_after="2023-03-19">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per Chrome profile at most once per day.
</summary>
</histogram>
<histogram name="PasswordManager.CredentialsWithDuplicates3" units="units"
expires_after="2023-09-30">
<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.CredentialsWithMismatchedDuplicates2"
units="units" expires_after="2023-04-09">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per
Chrome profile at most once per day.
</summary>
</histogram>
<histogram name="PasswordManager.CredentialsWithMismatchedDuplicates3"
units="units" expires_after="2023-10-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.DefaultPasswordStoreSet"
enum="PasswordManager.Store" expires_after="2023-09-24">
<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="2023-10-08">
<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="2023-10-08">
<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="2023-09-30">
<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="2023-11-05">
<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.Enabled3" enum="BooleanEnabled"
expires_after="2023-03-05">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</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 which happens once per profile, and at most once
per day.
</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="2023-09-24">
<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-09-17">
<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-09-17">
<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="2023-09-03">
<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="M117">
<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.FillingAssistance"
enum="PasswordManagerFillingAssistance" expires_after="2023-11-05">
<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="2023-10-22">
<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="2023-09-17">
<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="2023-09-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="2023-09-17">
<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="2023-09-10">
<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">
<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.FormSubmission.PerProfileType"
enum="BrowserProfileType" expires_after="2023-02-02">
<owner>roagarwal@chromium.org</owner>
<owner>chrome-incognito@google.com</owner>
<summary>
This histogram records the browser profile type when a password form is
submitted.
</summary>
</histogram>
<histogram name="PasswordManager.FormVisited.PerProfileType"
enum="BrowserProfileType" expires_after="2023-08-27">
<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="2023-10-08">
<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.HttpCredentials"
enum="PasswordManagerHttpCredentialType" expires_after="2023-03-26">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 profile open.
</summary>
</histogram>
<histogram name="PasswordManager.HttpCredentials2"
enum="PasswordManagerHttpCredentialType" expires_after="2023-09-30">
<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.HttpPasswordMigrationCount"
units="saved credentials" expires_after="2023-03-19">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<owner>kazinova@google.com</owner>
<owner>vasilii@chromium.org</owner>
<summary>
Number of HTTP saved passwords that were migrated to HTTPS. Recorded on
HTTPS password form load when there are no credentials saved.
</summary>
</histogram>
<histogram name="PasswordManager.HttpPasswordMigrationCount2"
units="saved credentials" expires_after="2023-09-30">
<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.HttpPasswordMigrationMode"
enum="HttpPasswordMigrationMode" expires_after="2023-03-26">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<owner>kazinova@google.com</owner>
<owner>vasilii@chromium.org</owner>
<summary>
The mode of migration applied to HTTP passwords migrating to HTTPS. Recorded
on HTTPS password form load when there are no credentials saved.
</summary>
</histogram>
<histogram name="PasswordManager.HttpPasswordMigrationMode2"
enum="HttpPasswordMigrationMode" expires_after="2023-09-30">
<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="2023-10-15">
<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="2023-10-15">
<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="2023-09-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="2023-09-30">
<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="2023-09-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="2023-09-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="2023-10-22">
<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="2023-09-10">
<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="2023-08-27">
<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="2023-10-15">
<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="2023-10-01">
<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="2023-09-24">
<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.PasswordDetails.CopyDetailsFailed"
enum="Boolean" expires_after="2023-09-24">
<owner>eic@google.com</owner>
<owner>tmartino@chromium.com</owner>
<summary>
This metric counts how many times we fail to copy a field in the Passwords
Details to the pastboard. Only the true bucket is logged. See
crbug.com/1359331.
</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="2023-10-01">
<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="2023-10-01">
<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="2023-09-19">
<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="2023-09-30">
<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="2023-09-10">
<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-09-03">
<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-09-03">
<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="2023-09-03">
<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.IsPasswordReused" enum="Boolean"
expires_after="2023-10-22">
<owner>vasilii@chromium.org</owner>
<owner>vsemeniuk@google.com</owner>
<summary>
When a password is determined as leaked, records if it's saved for other
sites.
</summary>
</histogram>
<histogram name="PasswordManager.LeakDetection.IsPasswordSaved" enum="Boolean"
expires_after="2023-08-27">
<owner>vasilii@chromium.org</owner>
<owner>vsemeniuk@google.com</owner>
<summary>
When a password is determined as leaked, records if it's saved in Chrome.
</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="2023-09-10">
<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="2023-07-09">
<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="2023-09-10">
<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="2023-09-10">
<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="2023-09-10">
<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.LoginDatabaseInit"
enum="LoginDatabaseInitError" expires_after="2023-02-26">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<owner>vasilii@chromium.org</owner>
<owner>mamir@chromium.org</owner>
<summary>An error on LoginDatabase initialization.</summary>
</histogram>
<histogram name="PasswordManager.LoginDatabaseInit2"
enum="LoginDatabaseInitError" expires_after="2023-10-22">
<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="2023-09-03">
<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="2023-09-10">
<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="2023-09-01">
<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="2023-09-30">
<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="2023-10-01">
<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="2023-09-24">
<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="2023-09-24">
<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.MigratedSettingsUPMAndroid"
enum="BooleanEnabled" expires_after="2023-09-17">
<owner>ioanap@chromium.org</owner>
<owner>kazinova@google.com</owner>
<summary>
Records true when a settings migration occurs as part of the UPM transition.
It is recorded when the settings service (profile-scoped) is instantiated in
a Chrome client with UPM enabled if a migration hasn't already occured. Note
that if UPM is disabled, the next time it is enabled a new migration will
happen and be recorded.
</summary>
</histogram>
<histogram name="PasswordManager.MoveUIDismissalReason{UserSyncingType}"
enum="PasswordManagerUIDismissalReason" expires_after="2023-08-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="2023-10-23">
<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="2023-11-05">
<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="2023-10-22">
<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="2023-10-15">
<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="2023-07-01">
<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="2023-10-08">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="2023-09-10">
<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="2023-10-01">
<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.PasswordExport.Event"
enum="PasswordExportEvent" expires_after="2023-08-27">
<owner>ioanap@chromium.org</owner>
<owner>kazinova@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.PasswordManagementBubble.UserAction"
enum="PasswordManagementBubbleInteractions" expires_after="2023-09-01">
<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.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="2023-10-08">
<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.PasswordReuse.NumberOfMatches"
units="credentials" expires_after="2023-10-22">
<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="2023-10-22">
<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="2023-08-27">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="M120">
<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="2023-09-01">
<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.PasswordStore.OnLoginsChanged" enum="Boolean"
expires_after="2023-10-08">
<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-10-08">
<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="2023-09-30">
<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="2023-10-08">
<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="2023-10-08">
<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.ClearAllLocalPasswords.LoginsToRemove"
units="count" expires_after="M120">
<owner>vsemeniuk@google.com</owner>
<owner>fhorschig@chromium.org</owner>
<summary>
Total number of logins to be removed by ClearAllLocalPasswords.
</summary>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.ClearAllLocalPasswords.SuccessRate"
units="%" expires_after="M120">
<owner>vsemeniuk@google.com</owner>
<owner>fhorschig@chromium.org</owner>
<summary>
Ratio between successfully removed logins and total number of logins in the
GMS's local storage. Removal is considered successful when change list is
non-empty. Recorded when all the logins have been processed. If total number
of logins is 0, nothing is recorded.
</summary>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.Retry{Operation}.APIError"
enum="PasswordStoreAndroidBackendAPIError" expires_after="M120">
<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=".ClearAllLocalPasswords" summary="ClearAllLocalPasswords"/>
<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=".ClearAllLocalPasswords" summary="ClearAllLocalPasswords"/>
<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="M120">
<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="M120">
<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="M120">
<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.PasswordStoreInitResult" enum="BooleanSuccess"
expires_after="M110">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<owner>vasilii@chromium.org</owner>
<owner>src/components/password_manager/OWNERS</owner>
<summary>
Success rate of initialization of password store. Recorded for every user
once on the Chrome profile startup.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordStoreInitResult2"
enum="BooleanSuccess" expires_after="M120">
<owner>vasilii@chromium.org</owner>
<owner>src/components/password_manager/OWNERS</owner>
<summary>
Success rate of initialization of password store. Recorded for every user
once on the Chrome profile startup. Only recorded for &quot;regular&quot;
profiles, i.e. those in which Password Manager might actually work. This
excludes incognito profiles, guest profiles, system profiles (used for the
profile picker), lockscreen profiles, etc.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordStoreProxyBackend.{Function}.Fallback"
enum="Boolean" expires_after="M120">
<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">
<variant name="AddLoginAsync" summary="AddLoginAsync()"/>
<variant name="FillMatchingLoginsAsync"
summary="FillMatchingLoginsAsync()"/>
<variant name="GetAllLoginsAsync" summary="GetAllLoginsAsync()"/>
<variant name="GetAutofillableLoginsAsync"
summary="GetAutofillableLoginsAsync()"/>
<variant name="RemoveLoginAsync" summary="RemoveLoginAsync()"/>
<variant name="RemoveLoginsByURLAndTimeAsync"
summary="RemoveLoginsByURLAndTimeAsync()"/>
<variant name="RemoveLoginsCreatedBetweenAsync"
summary="RemoveLoginsCreatedBetweenAsync()"/>
<variant name="UpdateLoginAsync" summary="UpdateLoginAsync()"/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordStoreProxyBackend.{Function}.{Metric}.{Measurement}"
units="count" expires_after="M120">
<owner>maxan@chromium.org</owner>
<owner>ioanap@chromium.org</owner>
<owner>vasilii@chromium.org</owner>
<owner>fhorschig@chromium.org</owner>
<summary>
Records the number of logins {Metric}{Measurement} Recorded when the
asynchronous job for {Function} has returned.
</summary>
<token key="Function">
<variant name="FillMatchingLoginsAsync"
summary="FillMatchingLoginsAsync()"/>
<variant name="GetAllLoginsAsync" summary="GetAllLoginsAsync()"/>
<variant name="GetAutofillableLoginsAsync"
summary="GetAutofillableLoginsAsync()"/>
</token>
<token key="Metric">
<variant name="Diff"
summary="in either the main or the shadow backend but not in both of
them"/>
<variant name="InconsistentPasswords"
summary="that occur in both the main and the shadow backend but
differ in their stored passwords"/>
<variant name="MainMinusShadow"
summary="in the main backend that are not in the shadow backend"/>
<variant name="ShadowMinusMain"
summary="in the shadow backend that are not the main backend"/>
</token>
<token key="Measurement">
<variant name="Abs" summary="."/>
<variant name="Rel"
summary=", divided by the total number of logins, as a percentage
rounded up to the next integer. If the denominator is zero,
no value is emitted."/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordStoreProxyBackend.{ModifyingFunction}.{Metric}.{Measurement}"
units="count" expires_after="M120">
<owner>maxan@chromium.org</owner>
<owner>ioanap@chromium.org</owner>
<owner>vasilii@chromium.org</owner>
<owner>fhorschig@chromium.org</owner>
<summary>
Records the number of password store changes {Metric}{Measurement} Recorded
when the asynchronous job for {ModifyingFunction} has returned. Recorded
only for non-syncing users and only after initial migration is finished.
</summary>
<token key="ModifyingFunction">
<variant name="AddLoginAsync" summary="AddLoginAsync()"/>
<variant name="RemoveLoginAsync" summary="RemoveLoginAsync()"/>
<variant name="RemoveLoginsByURLAndTimeAsync"
summary="RemoveLoginsByURLAndTimeAsync()"/>
<variant name="RemoveLoginsCreatedBetweenAsync"
summary="RemoveLoginsCreatedBetweenAsync()"/>
<variant name="UpdateLoginAsync" summary="UpdateLoginAsync()"/>
</token>
<token key="Metric">
<variant name="Diff"
summary="in either the main or the shadow backend but not in both of
them"/>
<variant name="InconsistentPasswords"
summary="that occur in both the main and the shadow backend but
differ in their stored passwords"/>
<variant name="MainMinusShadow"
summary="in the main backend that are not in the shadow backend"/>
<variant name="ShadowMinusMain"
summary="in the shadow backend that are not the main backend"/>
</token>
<token key="Measurement">
<variant name="Abs" summary="."/>
<variant name="Rel"
summary=", divided by the total number of password store changes, as
a percentage rounded up to the next integer. If the
denominator is zero, no value is emitted."/>
</token>
</histogram>
<histogram name="PasswordManager.PasswordStore{Backend}{Function}"
enum="PasswordStoreAndroidBackendRequestStatus" expires_after="M120">
<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">
<variant name=".AddLoginAsync" summary="AddLoginAsync()"/>
<variant name=".ClearAllLocalPasswords" summary="ClearAllLocalPasswords()"/>
<variant name=".DisableAutoSignInForOriginsAsync"
summary="DisableAutoSignInForOriginsAsync()"/>
<variant name=".FillMatchingLoginsAsync"
summary="FillMatchingLoginsAsync()"/>
<variant name=".GetAllLoginsAsync" summary="GetAllLoginsAsync()"/>
<variant name=".GetAutofillableLoginsAsync"
summary="GetAutofillableLoginsAsync()"/>
<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()"/>
</token>
</histogram>
<histogram name="PasswordManager.PasswordStore{Backend}{Function}.Latency"
units="ms" expires_after="M120">
<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} the PasswordStore
{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">
<variant name=".AddLoginAsync" summary="add a login to"/>
<variant name=".ClearAllLocalPasswords"
summary="clear all local passwords from"/>
<variant name=".DisableAutoSignInForOriginsAsync"
summary="disable autosignin for matching logins in"/>
<variant name=".FillMatchingLoginsAsync"
summary="fill matching logins from"/>
<variant name=".GetAllLoginsAsync" summary="retrieve all logins from"/>
<variant name=".GetAutofillableLoginsAsync"
summary="retrieve autofillable logins from"/>
<variant name=".GetLoginsAsync"
summary="retrieve logins filtered by signon realm from"/>
<variant name=".RemoveLoginAsync" summary="remove a login from"/>
<variant name=".RemoveLoginsByURLAndTimeAsync"
summary="remove logins filtered by URL and creation time from"/>
<variant name=".RemoveLoginsCreatedBetweenAsync"
summary="remove logins filtered by creation time from"/>
<variant name=".UpdateLoginAsync" summary="update a login in"/>
</token>
</histogram>
<histogram name="PasswordManager.PasswordStore{Backend}{Function}.Success"
enum="BooleanSuccess" expires_after="M120">
<owner>maxan@chromium.org</owner>
<owner>ioanap@chromium.org</owner>
<owner>vasilii@chromium.org</owner>
<owner>fhorschig@chromium.org</owner>
<summary>
Records whether {Function} the PasswordStore {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">
<variant name=".AddLoginAsync"
summary="AddLoginAsync() succeeded to add a login to"/>
<variant name=".ClearAllLocalPasswords"
summary="ClearAllLocalPasswords() successfully obtained a list of all
logins from"/>
<variant name=".DisableAutoSignInForOriginsAsync"
summary="DisableAutoSignInForOriginsAsync() succeeded in disabling
autosignin for matching logins in"/>
<variant name=".FillMatchingLoginsAsync"
summary="succeeded in filling matching logins from"/>
<variant name=".GetAllLoginsAsync"
summary="GetAllLoginsAsync() succeeded in retrieving all logins from"/>
<variant name=".GetAutofillableLoginsAsync"
summary="GetAutofillableLoginsAsync() succeeded in retrieving
autofillable logins from"/>
<variant name=".GetLoginsAsync"
summary="succeeded in retrieving logins filtered by signon realm from"/>
<variant name=".RemoveLoginAsync"
summary="RemoveLoginAsync() succeeded in removing a login from"/>
<variant name=".RemoveLoginsByURLAndTimeAsync"
summary="RemoveLoginsByURLAndTimeAsync() succeeded in removing logins
filtered by URL and creation time from"/>
<variant name=".RemoveLoginsCreatedBetweenAsync"
summary="RemoveLoginsCreatedBetweenAsync() succeeded in removing
logins filtered by creation time from"/>
<variant name=".UpdateLoginAsync"
summary="UpdateLoginAsync() succeeded in updating a login in"/>
</token>
</histogram>
<histogram name="PasswordManager.PasswordSyncState2" enum="PasswordSyncState"
expires_after="2023-04-30">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordSyncState3" enum="PasswordSyncState"
expires_after="2023-10-31">
<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="2023-10-08">
<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="M86">
<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.
</summary>
</histogram>
<histogram name="PasswordManager.ProfileStore.TotalAccountsBeforeInitialSync"
units="accounts" expires_after="M120">
<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="2023-09-30">
<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="2023-09-30">
<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="2023-09-30">
<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="2023-10-31">
<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="M117">
<owner>kazinova@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="2023-06-04">
<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="2023-10-15">
<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="2023-10-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="2023-08-12">
<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="2023-09-01">
<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="2023-09-01">
<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="2023-09-01">
<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="2023-10-15">
<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="2023-08-01">
<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.SavedGaiaPasswordHashCount{SyncConsentStatus}"
units="count" expires_after="2023-03-26">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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.SaveUIDismissalReasonAfterUnblacklisting"
enum="PasswordManagerUIDismissalReason" expires_after="M115">
<owner>ioanap@chromium.org</owner>
<owner>fhorschig@chromium.org</owner>
<owner>vasilii@chromium.org</owner>
<summary>
Why was the save password UI (bubble or infobar) closed? This is currently
recorded only for Android and only after the user has unblacklisted an
origin for saving from the accessory sheet.
</summary>
</histogram>
<histogram name="PasswordManager.SaveUIDismissalReason{UserSyncingType}"
enum="PasswordManagerUIDismissalReason" expires_after="2023-08-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}
</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.
</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="2023-09-24">
<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.ToggleAutoSignIn"
enum="BooleanEnabled" expires_after="M118">
<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="M118">
<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.ShortcutMetric"
enum="PasswordManagerShortcutMetric" expires_after="2023-10-15">
<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.PasswordFormHadUsernameField"
enum="PasswordFormHadUsernameField" expires_after="2023-11-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.StoreDecryptionResult"
enum="PasswordDecryptionResult" expires_after="2023-09-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="2023-08-20">
<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="2023-08-20">
<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="2023-09-10">
<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.SubmittedFormType" enum="PasswordFormType"
expires_after="M117">
<owner>kazinova@google.com</owner>
<owner>kolos@chromium.org</owner>
<summary>
The type (e.g. signup, login, change password) of all submitted password
forms. This is logged on form submission, but doesn't require that the
password manager saves.
</summary>
</histogram>
<histogram name="PasswordManager.SuccessfulLoginHappened"
enum="BooleanSuccessfulLoginHappenedOnHttps" expires_after="2023-09-10">
<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="2023-10-08">
<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="M120">
<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="M120">
<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="2023-09-17">
<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.SyncingAccountState2"
enum="PasswordManagerSyncingAccountState" expires_after="2023-04-30">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per Chrome profile at most once per
day.
</summary>
</histogram>
<histogram name="PasswordManager.SyncingAccountState3"
enum="PasswordManagerSyncingAccountState" expires_after="2023-10-31">
<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.SyncMetadataReadError"
enum="PasswordSyncMetadataReadError" expires_after="2023-04-23">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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.
</summary>
</histogram>
<histogram name="PasswordManager.SyncMetadataReadError2"
enum="PasswordSyncMetadataReadError" expires_after="2023-09-24">
<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="2023-10-22">
<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="2023-09-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="2023-09-03">
<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="2023-09-03">
<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.NumCredentialsShown"
units="credentials" expires_after="M92">
<owner>ioanap@chromium.org</owner>
<owner>fhorschig@chromium.org</owner>
<summary>The number of credentials shown in the Touch To Fill sheet.</summary>
</histogram>
<histogram name="PasswordManager.TouchToFill.Outcome"
enum="TouchToFill.Outcome" expires_after="2023-09-03">
<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="2023-09-03">
<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="2023-09-10">
<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="2023-09-10">
<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.TouchToFill.UserAction"
enum="TouchToFill.UserAction" expires_after="M92">
<owner>ioanap@chromium.org</owner>
<owner>fhorschig@chromium.org</owner>
<summary>
The action a user took when interacting with the Touch To Fill sheet.
</summary>
</histogram>
<histogram name="PasswordManager.UIDismissalReason"
enum="PasswordManagerUIDismissalReason" expires_after="2023-11-30">
<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="2023-09-17">
<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.ActiveStatus"
enum="UnifiedPasswordManagerActiveStatus" expires_after="2023-03-19">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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
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.ActiveStatus2"
enum="UnifiedPasswordManagerActiveStatus" expires_after="M120">
<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="2023-09-17">
<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="M120">
<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="M120">
<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="2023-09-10">
<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="2023-10-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="2023-09-10">
<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="2023-08-20">
<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="2023-09-30">
<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="2023-09-01">
<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-08-27">
<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-01-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="2023-09-01">
<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="2023-09-01">
<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="2023-10-20">
<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="M120">
<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="M120">
<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}BlacklistedSitesHiRes2{CustomPassphraseStatus}"
units="sites" expires_after="2023-05-01">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per
Chrome profile and at most once per day.
</summary>
<token key="Store" variants="Store"/>
<token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
</histogram>
<histogram
name="PasswordManager.{Store}BlacklistedSitesHiRes3{CustomPassphraseStatus}"
units="sites" expires_after="2023-11-01">
<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}InaccessiblePasswords"
units="saved passwords" expires_after="2023-06-26">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</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 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}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="2023-06-26">
<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="2023-06-30">
<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.CountCredentialsWithNonEmptyNotes"
units="count" expires_after="2023-01-01">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per Chrome profile and at most once per day.
</summary>
<token key="Store" variants="Store"/>
</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.CountNotesPerCredential"
units="count" expires_after="2023-01-01">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</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 in a Chrome profile and at most
once per day.
</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}TimesPasswordUsed2.{PasswordType}{CustomPassphraseStatus}"
units="PasswordUses" expires_after="2023-06-01">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per Chrome profile, soon
after startup, and at most once per day.
</summary>
<token key="Store" variants="Store"/>
<token key="PasswordType" variants="PasswordType"/>
<token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
</histogram>
<histogram
name="PasswordManager.{Store}TimesPasswordUsed3.{PasswordType}{CustomPassphraseStatus}"
units="PasswordUses" expires_after="2023-11-01">
<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}TotalAccountsHiRes2.WithScheme{Scheme}"
units="accounts" expires_after="2023-11-30">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 once per Chrome
profile and at most once per day.
</summary>
<token key="Store" variants="Store"/>
<token key="Scheme" variants="Scheme"/>
</histogram>
<histogram name="PasswordManager.{Store}TotalAccountsHiRes3.WithScheme{Scheme}"
units="accounts" expires_after="2023-11-30">
<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}{Metric2}.{PasswordType}{CustomPassphraseStatus}"
units="units" expires_after="2023-05-01">
<obsolete>
Obsolete in M110 after PasswordStore is no longer created for non-regular,
guest, system and incognito profiles.
</obsolete>
<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 {Metric2} 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, once per Chrome profile and at most once per day.
</summary>
<token key="Store" variants="Store"/>
<token key="Metric2">
<variant name="AccountsPerSiteHiRes2" summary="per site"/>
<variant name="TotalAccountsHiRes2.ByType" summary="across all sites"/>
</token>
<token key="PasswordType" variants="PasswordType"/>
<token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
</histogram>
<histogram
name="PasswordManager.{Store}{Metric3}.{PasswordType}{CustomPassphraseStatus}"
units="units" expires_after="2023-11-01">
<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="2023-10-01">
<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="2023-08-27">
<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="2023-10-22">
<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="2023-08-27">
<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="2023-09-10">
<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="2023-10-22">
<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="2023-08-27">
<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="2023-11-05">
<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-10-01">
<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="2023-11-05">
<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-10-08">
<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>