<!--
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
[email protected].
-->
<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="MigrationOperation">
<variant name="AddLogin"/>
<variant name="GetAllLogins"/>
<variant name="RemoveLogin"/>
<variant name="UpdateLogin"/>
</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="PasswordStoreAndroidBackendType">
<variant name="Account" summary="account store"/>
<variant name="Local" summary="local store"/>
</variants>
<variants name="PasswordStoreBackendFunction">
<variant name="AddLoginAsync" summary="AddLoginAsync()"/>
<variant name="DisableAutoSignInForOriginsAsync"
summary="DisableAutoSignInForOriginsAsync()"/>
<variant name="FillMatchingLoginsAsync" summary="FillMatchingLoginsAsync()"/>
<variant name="GetAllLoginsAsync" summary="GetAllLoginsAsync()"/>
<variant name="GetAllLoginsWithBrandingInfoAsync"
summary="GetAllLoginsWithBrandingInfoAsync()"/>
<variant name="GetAutofillableLoginsAsync"
summary="GetAutofillableLoginsAsync()"/>
<variant name="GetGroupedMatchingLoginsAsync"
summary="GetGroupedMatchingLoginsAsync()"/>
<variant name="GetLoginsAsync" summary="GetLoginsAsync()"/>
<variant name="RemoveLoginAsync" summary="RemoveLoginAsync()"/>
<variant name="RemoveLoginsByURLAndTimeAsync"
summary="RemoveLoginsByURLAndTimeAsync()"/>
<variant name="RemoveLoginsCreatedBetweenAsync"
summary="RemoveLoginsCreatedBetweenAsync()"/>
<variant name="UpdateLoginAsync" summary="UpdateLoginAsync()"/>
</variants>
<variants name="PasswordStoreBackendType">
<variant name="AccountBackend" summary="account backend"/>
<variant name="BuiltInBackend" summary="built in backend"/>
<variant name="LocalBackend" summary="local backend"/>
</variants>
<variants name="PasswordType">
<variant name="AutoGenerated" summary="automatically generated"/>
<variant name="Overall" summary="generated or created or shared"/>
<variant name="ReceivedViaSharing"
summary="received via sharing from other users"/>
<variant name="UserCreated" summary="created by the user"/>
</variants>
<variants name="ProfileType">
<variant name="Account"/>
<variant name="LocalProfile"/>
</variants>
<variants name="RetriedOperation">
<variant name=""/>
<variant name=".GetAllLoginsAsync" summary="GetAllLoginsAsync"/>
<variant name=".GetAutofillableLoginsAsync"
summary="GetAutofillableLoginsAsync"/>
</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="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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Records whenever users select an action in the accessory bar
or one of its sheets.
</summary>
</histogram>
<histogram name="KeyboardAccessory.AccessorySheetSuggestionsSelected"
enum="AccessorySuggestionType" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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 "Shown" bucket should contain samples.
</summary>
</histogram>
<histogram name="KeyboardAccessory.GenerationDialogChoice.{GenerationType}"
enum="GenerationDialogChoice" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</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="KeyboardAccessory.TouchEventFiltered" enum="BooleanYesNo"
expires_after="2025-04-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android only. Records if the Keyboard Accessory filtered at least one touch
event because the Chrome window was fully or partially obscured. The metric
is logged immediately if the Keyboard Accessory receives a filtered event.
Otherwise, the metric is logged when the Keyboard Accessory if dismissed
only if it received at least 1 touch event.
</summary>
</histogram>
<histogram name="PasswordBubble.AddUsernameBubble.UsernameAdded"
enum="BooleanYesNo" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the user added username and clicked confirmation button on the
AddUsername bubble, after successful submission of the generated password.
</summary>
</histogram>
<histogram name="PasswordBubble.BiometricAuthenticationPromo.AcceptClicked"
enum="BooleanSuccess" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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.Type"
enum="PasswordBubbleFollowupType" expires_after="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</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.DefaultStoreChangedBubble.ContinueButtonInBubbleClicked"
enum="BooleanYesNo" expires_after="M133">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the user clicked "Got it" in the DefaultStoreChanged
bubble
</summary>
</histogram>
<histogram name="PasswordBubble.DisplayDisposition"
enum="PasswordBubbleDisplayDisposition" expires_after="2025-01-26">
<owner>[email protected]</owner>
<summary>
When the password management bubble opened, what state was it in?
</summary>
</histogram>
<histogram
name="PasswordBubble.RelaunchChromeBubble.RestartButtonInBubbleClicked"
enum="BooleanYesNo" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the user restarted Chrome from the RelaunchChrome bubble to fix the
keychain issue.
</summary>
</histogram>
<histogram
name="PasswordGeneration.EditsInGeneratedPassword.AlteredLengthIncreased"
enum="GeneratedPasswordAlteredLengthIncreased" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures types of user editing of generated passwords. Mask tracks if there
are several types of changes simultaneously happening on generated password.
Uploaded once per modified generated password submission.
</summary>
</histogram>
<histogram name="PasswordGeneration.EditsInGeneratedPassword.{CharacterClass}"
enum="CharacterClassPresenceChange" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.iOS.AcceptedGeneratedPasswordSource"
enum="AcceptedGeneratedPasswordSourceType" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the source of the generated password which was accepted by the user.
Recorded when they accept a suggestion from a password generation bottom
sheet, which was either presented proactively or it was triggered by the
keyboard accessory.
</summary>
</histogram>
<histogram name="PasswordGeneration.iOS.ProactiveBottomSheetStateTransition"
enum="ProactivePasswordGenerationBottomSheetTransitionType"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records state transitions of the proactive password generation bottom sheet.
For example getting from an active state to a silenced/inactive state will
be recorded as a "silence" transition. Recorded when the state
changes (e.g. when it is silenced because it reached too many strikes).
</summary>
</histogram>
<histogram name="PasswordGeneration.PopupShown"
enum="PasswordGenerationPopupShown" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Records an entry if (and only if) a popup was shown.</summary>
</histogram>
<histogram name="PasswordGeneration.SubmissionAvailableEvent"
enum="PasswordSubmissionEvent" expires_after="M131">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.UserDecision"
enum="PasswordGenerationUserEvent" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded whenever the user accesses the passwords in the settings page.
</summary>
</histogram>
<histogram
name="PasswordManager.AccountStorage.MoveToAccountStoreFlowAccepted2"
enum="PasswordManager.MoveToAccountStoreTrigger" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.AccountStorageUserStateDuration{UserSyncingType}"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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/Android (iOS from M113,
Android from M128).
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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how many non-blacklisting credentials are downloaded to the account
store after unlocking account store.
</summary>
</histogram>
<histogram name="PasswordManager.AccountStoreVsProfileStore4.{DifferenceType}"
units="accounts" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of accounts {DifferenceType}. Recorded soon after startup at most
one per day for regular profiles and only if user opted in to the
account-scoped storage.
</summary>
<token key="DifferenceType">
<variant name="Additional"
summary="stored in the password manager's account-scoped store that
don't exist in the profile-scoped store"/>
<variant name="Conflicting"
summary="stored in the password manager with a conflicting password
between the account-scoped store and profile-scoped store
(i.e. the signon realm and username match, but the password
does not)"/>
<variant name="Identical"
summary="stored in both the password manager's account-scoped store
and profile-scoped store"/>
<variant name="Missing"
summary="stored in the password manager's profile-scoped store that
don't exist in the account-scoped store"/>
</token>
</histogram>
<histogram name="PasswordManager.AddCredentialFromSettings.AccountStoreUsed2"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</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.UserAction2"
enum="AddCredentialFromSettingsUserInteractions" expires_after="2025-01-05">
<owner>[email protected]</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="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.DatabaseSize" units="KB"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of the AffiliationDatabase database file. Recorded when
AffiliationDatabase is constructed successfully.
</summary>
</histogram>
<histogram name="PasswordManager.AffiliationDatabase.Error"
enum="SqliteLoggedResultCode" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors reported by SQLite while using the affiliation database database.
</summary>
</histogram>
<histogram name="PasswordManager.AffiliationDatabase.StoreResult"
enum="StoreAffiliationResult" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The result of AffiliationDatabase::Store call.</summary>
</histogram>
<histogram name="PasswordManager.AffiliationFetcher.FailedToParseResponse"
enum="Boolean" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Usage and timing of the Affiliation Service GetChangePasswordUrl call.
</summary>
</histogram>
<histogram name="PasswordManager.AndroidAccountStorageNotice.CloseReason"
enum="AndroidAccountStorageNoticeCloseReason" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/components/password_manager/OWNERS</owner>
<summary>
Android only. The "account storage notice" is a one-off UI shown
to users who went from saving passwords locally to saving in their signed-in
account (and thus need to be notified). This histogram is recorded when such
notice is closed, and records the event which caused this.
</summary>
</histogram>
<histogram name="PasswordManager.ApplySyncChanges.AddLoginSyncError"
enum="PasswordAddLoginSyncError" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.AuthenticationAsyncOpFailureReson"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HRESULTs associated with errors happened in the RequestVerificationAsync
API. Recorded after the authentication fails.
</summary>
</histogram>
<histogram name="PasswordManager.AuthenticationStateWin"
enum="AuthenticationStateWin" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The state of the windows hello authentication. Recorded before prompting the
OS dialog, and after result is recieved.
</summary>
</histogram>
<histogram name="PasswordManager.AutomaticChange.AcceptanceWithoutAutoButton"
enum="PasswordCheckResolutionAction" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Resolution action to fix a compromised credential when there is no
"Change password automatically" 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.AutoSignin" enum="BooleanEnabled"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The state of the Auto Sign-in setting in the profile. Recorded 30 seconds
after PasswordStore is created at most once per day for regular profiles.
</summary>
</histogram>
<histogram name="PasswordManager.AutoSigninFirstRunDialog"
enum="AutoSigninFirstRun" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The dismissal reason of the auto-signin first run experience.
</summary>
</histogram>
<histogram name="PasswordManager.BiometricAuthBeforeFillingEnabled2"
enum="BooleanEnabled" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-10-28">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.BiometricAuthPwdFillAndroid.CanAuthenticateWithBiometricOrScreenLock"
enum="Boolean" expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether authentication either with biometrics or the screen lock is
possible. Recorded before credentials filling during the check whether
biometric reauth is required.
</summary>
</histogram>
<histogram name="PasswordManager.BiometricAvailabilityWin"
enum="BiometricAuthenticationStatusWin" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded any time a client of AuthenticatorWin requests to check biometric
availability. If availability can't be checked, it records that immediately.
If it can be checked, it records the status when the callback for
OnAvailabilityReceived is invoked.
</summary>
</histogram>
<histogram name="PasswordManager.BubbleSuppression.AccountsInStatisticsTable2"
units="accounts" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.CheckedCredentials"
units="credentials" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of credentials analyzed when the password bulk check completed
successfully. Note that this counts unique username+password pairs, so in
the case of password reuse, this does not correspond to the number of
user-visible credentials.
</summary>
</histogram>
<histogram
name="PasswordManager.BulkCheck.CompromisedCredentialsCountAfterCheckAndroid"
units="credentials" expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Error encountered during the password bulk check.</summary>
</histogram>
<histogram name="PasswordManager.BulkCheck.InsecureCredentials.Count"
units="credentials" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it took for the password bulk check to complete successfully.
</summary>
</histogram>
<histogram name="PasswordManager.BulkCheck.UserAction"
enum="PasswordCheckInteraction" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>User actions performed on the Password Check settings view.</summary>
</histogram>
<histogram name="PasswordManager.CanUseBiometricsMac" enum="BooleanSuccess"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
If user have enabled biometric authentication on their device. It is
recorded whenever DeviceAuthenticatorMac::CanAuthenticate is called.
</summary>
</histogram>
<histogram name="PasswordManager.CompromisedCredentials3.{Issue}"
units="credentials" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of known {Issue}. Recorded at most once per day for regular profiles.
</summary>
<token key="Issue">
<variant name="CountLeaked" summary="leaked credentials in the database"/>
<variant name="CountPhished" summary="phished credentials in the database"/>
</token>
</histogram>
<histogram name="PasswordManager.CredentialEntryActions.{CredentialEntryType}"
enum="CredentialEntryAction" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded after unlocking the account store from the password filling flow.
Records how many credentials from the account store can be used to fill the
current password form. If a credential is an exact duplicate with a local
credential, it still counts into this metric.
</summary>
</histogram>
<histogram name="PasswordManager.CredentialsWithDuplicates3" units="units"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of stored (non-blacklisted) credentials for which
"duplicates" exist. A duplicate is a credential with the same
signon realm, username, and password - i.e. indistinguishable from the
user's point of view. This records the number of *sets* of duplicated
credentials; the number of credentials in each set of duplicates is not
recorded. Recorded at most once per day for regular profiles.
</summary>
</histogram>
<histogram name="PasswordManager.CredentialsWithMismatchedDuplicates3"
units="units" expires_after="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of stored (non-blacklisted) credentials for which
"mismatched duplicates" exist. A mismatched duplicate is a
credential with the same signon realm and username, but different password.
This records the number of *sets* of duplicated credentials; the number of
credentials in each set of duplicates is not recorded. Recorded at most once
per day for regular profiles.
</summary>
</histogram>
<histogram name="PasswordManager.CredMan.PasswordFormSubmissionTriggered"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the password form is submitted right after being filled by
Android Credential Manager UI. The filled username and password are coming
from Android Credential Manager UI. This histogram is emitted only if
Android Credential Manager is enabled and displayed. Recorded when the user
selects a password from the Android Credential Manager UI.
</summary>
</histogram>
<histogram name="PasswordManager.DefaultPasswordStoreSet"
enum="PasswordManager.Store" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.DynamicFormChanges" units="units"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.EnableState" enum="PasswordManagerEnableState"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.{ErrorMessageType}"
enum="MessageDismissReason" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the reason that caused the {ErrorMessageType} on Android to be
dismissed. It's recorded when the user dismisses the message by clicking the
button or when the message is autodismissed because of the timeout.
</summary>
<token key="ErrorMessageType">
<variant name="AuthErrorResolvable" summary="resolvable auth error"/>
<variant name="AuthErrorUnresolvable" summary="unresolvable auth error"/>
<variant name="GMSCoreOutdatedSavingDisabled"
summary="error that nudges to update GMSCore because password saving
is disabled"/>
<variant name="GMSCoreOutdatedSavingPossible"
summary="error that nudges to update GMSCore because only account
passwords can be saved"/>
<variant name="KeyRetrievalRequired"
summary="error shown because key retrieval is required"/>
</token>
</histogram>
<histogram name="PasswordManager.ErrorMessageDisplayReason"
enum="PasswordStoreBackendErrorType" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.FilledCredentialWasFromAndroidApp2"
enum="PasswordManagerFilledAndroidCredentials" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a credential is filled automatically or from the dropdown, whether it
was saved from an Android app. The histogram isn't collected on Android/iOS.
</summary>
</histogram>
<histogram name="PasswordManager.FillingAssistance"
enum="PasswordManagerFillingAssistance" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</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.FillingAssistanceForSingleUsername"
enum="SingleUsernameFillingAssistance" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the user experience with regards to username filling in the single
username form in username first flows (UFF).
Recorded for every single username field the user has filled (automatically
or manually), when the form is submitted and the corresponding form manager
is destroyed.
</summary>
</histogram>
<histogram name="PasswordManager.FillingAutomationRate" units="%"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage of input text field characters that were autofilled.
This function measures text input as a number of UTF-16 code points.
Recorded when the password form is submitted and the corresponding form
manager is destroyed.
</summary>
</histogram>
<histogram name="PasswordManager.FillingSource"
enum="PasswordManagerFillingSource" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.FormSubmissionsVsSavePrompts"
enum="SaveFlowStep" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the steps in the save password flow that were reached. Each bucket
represents one step. Used to determine at which step the flow ended.
Only recorded for users who can save passwords: the setting has to be
enabled and saving has to not be disabled by UPM.
Android only.
</summary>
</histogram>
<histogram name="PasswordManager.FormVisited.PerProfileType"
enum="BrowserProfileType" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.HttpCredentials2"
enum="PasswordManagerHttpCredentialType" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Breakdown of HTTP credentials with regard to the existence of a HTTPS
credential with the same username and whether the corresponding website has
HSTS enabled. Recorded once for each HTTP credential on regular profile
open.
</summary>
</histogram>
<histogram name="PasswordManager.HttpPasswordMigrationCount2"
units="saved credentials" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of HTTP saved passwords that were migrated to HTTPS. Recorded for the
regular profiles on HTTPS password form load when there are no credentials
saved.
</summary>
</histogram>
<histogram name="PasswordManager.HttpPasswordMigrationMode2"
enum="HttpPasswordMigrationMode" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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" enum="Boolean"
expires_after="2025-02-25">
<owner>[email protected]</owner>
<owner>[email protected]</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.PerFile.ConflictsResolved"
units="saved credentials" expires_after="2025-02-25">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-25">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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, (user resolving conflicts if any) 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="2025-02-10">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.ImportResultsStatus2"
enum="PasswordManagerImportResultsStatus" expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</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.HandleFormSubmitEvent"
enum="HandleSubmittedFormStatus" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the status of handling password form submissions triggered by
password form buttons that aren't an input element of type
"submit". Recorded on form submit button click.
</summary>
</histogram>
<histogram name="PasswordManager.iOS.InfoBar.PasswordSave" enum="Boolean"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric counts how many times the Save Password infobar is shown.
</summary>
</histogram>
<histogram name="PasswordManager.iOS.InfoBar.{Type}Duration.{Moment}"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the duration of the password save/update infobar that is presented
after using new credentials. Recorded when the password infobar banner is
dismissed.
</summary>
<token key="Type">
<variant name="Save" summary="the save infobar"/>
<variant name="Update" summary="the update infobar"/>
</token>
<token key="Moment">
<variant name="All" summary="all moments"/>
<variant name="OnDeletion" summary="when deleting the infobar delegate"/>
<variant name="OnDismiss" summary="when dismissing the infobar"/>
</token>
</histogram>
<histogram name="PasswordManager.iOS.ReauthenticationUI.Event"
enum="ReauthenticationEvent" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the results and attempts of reauthentication when trying to open the
Password Manager on iOS.
</summary>
</histogram>
<histogram name="PasswordManager.iOS.SurfaceVisit"
enum="PasswordManager.SurfaceVisit" expires_after="2025-03-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric counts how many times each Password Manager surface is visited
on iOS. Recorded when the user opens the Password Manager surface after
successful Local Authentication (if authentication is required). Replaced
PasswordManager.iOS.PasswordManagerVisit on M121.
</summary>
</histogram>
<histogram name="PasswordManager.IsPasswordProtected2" enum="Boolean"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric reports whether a sync password hash is saved. Recorded shortly
after Chrome startup.
</summary>
</histogram>
<histogram name="PasswordManager.ItemSelected.OffTheRecord" units="units"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Result of analyzing a single leak response.</summary>
</histogram>
<histogram name="PasswordManager.LeakDetection.DialogDismissalReason"
enum="PasswordLeakDetectionDialogDismissalReason"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HTTP response code of a leak lookup request. Only recoded for each network
fetch that failed due to network/server errors.
</summary>
</histogram>
<histogram name="PasswordManager.LeakDetection.LookupSingleLeakResponseResult"
enum="PasswordLeakLookupResponseResult" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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.LocalUpmActivated" enum="Boolean"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>src/components/password_manager/OWNERS</owner>
<summary>
Records on startup whether the user was activated for local UPM. Records
false for users who have a migration of local passwords scheduled but didn't
get activated yet.
Can be obsoleted once PasswosrdManager.LocalUpmActivationStatus saturates.
</summary>
</histogram>
<histogram name="PasswordManager.LocalUpmActivationError{UserType}"
enum="LocalUpmActivationError" expires_after="2025-02-15">
<owner>[email protected]</owner>
<owner>src/components/password_manager/OWNERS</owner>
<summary>
Recorded for {UserType}. Records the reason why the local UPM activation
algorithm failed, if any. For users that require a migration, the
"None" bucket doesn't mean the migration actually succeeded, only
that it was scheduled. Recorded on every startup, even for users who already
got successfully activated. This histogram should be analyzed with
"count unique clients".
TODO(crbug.com/307678344): Mention what other histogram should be used for
migration failures.
</summary>
<token key="UserType">
<variant name="" summary="all users"/>
<variant name=".NonSyncingNoMigration"
summary="users who are not syncing passwords and have no local
passwords nor custom password manager settings to be
migrated"/>
<variant name=".NonSyncingWithMigration"
summary="users who are not syncing passwords and need a migration for
local passwords or password manager settings"/>
<variant name=".Syncing" summary="users who are syncing passwords"/>
</token>
</histogram>
<histogram name="PasswordManager.LocalUpmActivationStatus"
enum="UseUpmLocalAndSeparateStoresState" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records on startup the exact state stored in the UPM local state pref,
immediately after the pref value is set. The main difference to
PasswordManager.LocalUpmActivated is that this histogram records the
"migration pending" state separately. This can be used to identify
whether thre are any issue that could cause clients to be stuck in migration
pending.
</summary>
</histogram>
<histogram name="PasswordManager.LoginDatabase.DeleteFromKeychain"
enum="ErrSecOSStatus" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records status of keychain item removal. Recorded after SecItemDelete is
called.
</summary>
</histogram>
<histogram
name="PasswordManager.LoginDatabase.ShouldDeleteUndecryptablePasswords"
enum="LoginDatabaseShouldDeleteUndecryptablePasswords"
expires_after="2025-09-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if undecryptable passwords should be deleted from the login database
and the reason when they shouldn't be deleted. Recorded after every read
from the login database after the decision to delete is made.
</summary>
</histogram>
<histogram name="PasswordManager.LoginDatabaseInit2"
enum="LoginDatabaseInitError" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Referrer of a navigation to the "Manage Passwords" page. Recorded
when the user attempts to see their list of passwords, either via native or
Web UI.
</summary>
</histogram>
<histogram
name="PasswordManager.ManualFallback.CrossDomainPasswordFilling.ConfirmationBubbleResult"
enum="CrossDomainPasswordFillingConfirmation" expires_after="2025-08-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Desktop only. Whenever the user is about to fill a password that was created
on a different domain, they are prompted to confirm the action to avoid
accidental exposure of critical information. This metric records the result
of the interaction with the confirmation bubble: password filling can be
confirmed or canceled/ignored resulting in no filling. The metric is being
recorded on bubble closing.
</summary>
</histogram>
<histogram name="PasswordManager.ManualFallback.ShowSuggestions.Latency"
units="ms" expires_after="2025-04-25">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Desktop only. Records the time(ms) elapsed between the user triggering the
password manual fallback from the Chrome context menu and the suggestions
being displayed. The delay between these two events is caused by the async
credential data fetching. This is recorded once per navigation because the
fetched data is reset on navigation.
</summary>
</histogram>
<histogram name="PasswordManager.MatchedFormType"
enum="PasswordManagerMatchedFormType" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records the type of the preferred password that will be used 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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks result of navigator.credentials.get() with
mediation="optional". That is the result of account chooser.
</summary>
</histogram>
<histogram name="PasswordManager.MediationRequired"
enum="CredentialManagerGetResult" expires_after="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks result of navigator.credentials.get() with
mediation="required". That is the result of forced account
chooser.
</summary>
</histogram>
<histogram name="PasswordManager.MediationSilent"
enum="CredentialManagerGetResult" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks result of navigator.credentials.get() with
mediation="silent". That is the result of auto sign-in.
</summary>
</histogram>
<histogram name="PasswordManager.MergeSyncData.AddLoginSyncError"
enum="PasswordAddLoginSyncError" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records different results upon adding a remote password to the password
manager. It is recorded during the initial sync when merging remote and
local data.
</summary>
</histogram>
<histogram name="PasswordManager.MergeSyncData.UpdateLoginSyncError"
enum="PasswordUpdateLoginSyncError" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</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.MoveUIDismissalReason{UserSyncingType}"
enum="PasswordManagerUIDismissalReason" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Why was the "move password to account?" 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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.OnEncryptorReceived.Success"
enum="BooleanSuccess" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether os_crypt_async::Encryptor is returned by
os_crypt_async::OSCryptAsync::GetInstance() call. Recorded after the
callback is invoked.
</summary>
</histogram>
<histogram name="PasswordManager.OpenedAsShortcut" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.OsCryptAsync.GetInstanceTime" units="ms"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it takes to obtain os_crypt_async::Encryptor. Recorded when
os_crypt_async::Encryptor is received.
</summary>
</histogram>
<histogram name="PasswordManager.OutdatedGMSDialogDismissalReason"
enum="OutdatedGMSDialogDismissalReason" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the outdate GMS Core version dialog is dismissed. Records why
the dialog is dismissed. This UI is shown when the user tries to access the
Credential Manager in GMS Core from a Chrome entry point, but the GMS Core
version available on the device is lower than the min version needed for
UPM. Android only.
</summary>
</histogram>
<histogram name="PasswordManager.ParserDetectedOtpFieldWithRegex"
enum="Boolean" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.PasskeyRetrievalWaitDuration" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The elapsed time between the PasswordManager requesting passkeys for
conditional UI and receiving the list of available passkeys to offer in the
password autofill UI.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordCheckup.Launch.Success"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the type of the suggestion in the password dropdown when selected.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordDropdownShown"
enum="PasswordDropdownState" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Logs the state of the password dropdown when it's shown.</summary>
</histogram>
<histogram
name="PasswordManager.PasswordGenerationBottomSheet.InteractionResult"
enum="PasswordManager.PasswordGenerationBottomSheet.InteractionResult"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the interaction result with the password generation bottom sheet.
The metric is recorded regardless of how the bottom sheet was triggered
(automatically, from keyboard accessory or through manual generation). The
metric is logged when the bottom sheet is dismissed.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordManagementBubble.UserAction"
enum="PasswordManagementBubbleInteractions" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metrics shows how user interacted with the password management native
bubble triggered from the key icon in the omnibox. Recorded during the
interaction with the bubble.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordMigrationWarning.EmptySheetTrigger2"
enum="PasswordMigrationWarningTriggers" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram logs the UI surface that led to showing an empty local
passwords migration warning sheet. Recorded when the sheet is closing, but
only if it was blank. Android only. This replaces
PasswordManager.PasswordMigrationWarning.EmptySheetTrigger which had a bug
causing it to also report triggers of non-empty sheets.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordMigrationWarning.Export.Event"
enum="PasswordExportEvent" expires_after="2024-08-25">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the frequency of various password export events. Recorded when the
user chooses the option to export passwords in the password migration
warning. Logged only on Android.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordMigrationWarning.Export.Result2"
enum="HistogramExportResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the export flow finished successfully or the type of error
for passwords export started from local passwords migration warning.
Recorded when the export flow finishes. Logged only on Android. This is an
updated version of PasswordManager.PasswordMigrationWarning.Export.Result,
which logs more possible export flow results in adition to the old values.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordMigrationWarning.SheetStateAtClosing"
enum="PasswordMigrationWarningSheetStateAtClosing"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram logs the state of the local passwords migration warning
bottom sheet. Recorded when the sheet is closing. Android only.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordMigrationWarning.Trigger"
enum="PasswordMigrationWarningTriggers" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram logs the UI surface that led to showing the local passwords
migration warning. Recorded when the warning sheet is shown. Android only.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordMigrationWarning.UserAction"
enum="PasswordMigrationWarningUserActions" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histograms logs the action that the user performed in the local
password migration warning sheet. For the export and sync options, this is
recorded when the user taps "Next" after selecting the
corresponding radio button. All other actions are recorded when tapping on
the corresponding buttons/dismissing the sheet. Multiple buckets can be
recorded for the same sheet. Android only.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordNoteActionInSettings2"
enum="PasswordNoteAction" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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. This metric was mistakenly deleted between M116 and M120 and
data is missing in this period.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordReuse.NumberOfMatches"
units="credentials" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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 "0" for sync-reuse.
A "password reuse" 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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric reports whether a password field had been detected on a page
when a password reuse happened.
A "password reuse" 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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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 "password reuse" 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 "1" for every sync-reuse. It
was fixed in M63 such that it logs actual Password Manager credential count.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordSavingDisabledDueToGMSCoreError"
enum="Boolean" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram records whenever password saving is disabled for a user
because of GMSCore error. Recorded each time password saving availibility is
checked.
</summary>
</histogram>
<histogram
name="PasswordManager.PasswordSettings.{Function}.{Setting}{Type}.APIError1"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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 for {Type}.
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"/>
<token key="Type">
<variant name="" summary="any store type"/>
<variant name=".Account" summary="account store"/>
<variant name=".Local" summary="local store"/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordSettings.{Function}.{Setting}{Type}.ErrorCode"
enum="PasswordStoreAndroidBackendError" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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 for
{Type}.
</summary>
<token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
<token key="Setting" variants="PasswordManagerSetting"/>
<token key="Type">
<variant name="" summary="any store type"/>
<variant name=".Account" summary="account store"/>
<variant name=".Local" summary="local store"/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordSettings.{Function}.{Setting}{Type}.ErrorLatency"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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 for {Type}.
</summary>
<token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
<token key="Setting" variants="PasswordManagerSetting"/>
<token key="Type">
<variant name="" summary="any store type"/>
<variant name=".Account" summary="account store"/>
<variant name=".Local" summary="local store"/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordSettings.{Function}.{Setting}{Type}.Latency"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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 for {Type}.
</summary>
<token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
<token key="Setting" variants="PasswordManagerSetting"/>
<token key="Type">
<variant name="" summary="any store type"/>
<variant name=".Account" summary="account store"/>
<variant name=".Local" summary="local store"/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordSettings.{Function}.{Setting}{Type}.Success"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether PasswordSettingsUpdater attempt to {Function} for {Setting}
succeed. Recorded for {Type} when the asynchronous job has returned. This is
currently only recorded on Android.
</summary>
<token key="Function" variants="PasswordManagerSettingAccessorFunction"/>
<token key="Setting" variants="PasswordManagerSetting"/>
<token key="Type">
<variant name="" summary="any store type"/>
<variant name=".Account" summary="account store"/>
<variant name=".Local" summary="local store"/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordSettingsMigrationFailed.{Setting}.APIError2"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error codes returned by the GMS Core Password preferences 1P API while
attempting to do migration for {Setting}. This is only recorded on Android.
Replaces
"PasswordManager.PasswordSettingsMigrationFailed.{Setting}.APIError"
which was overly recorded in rare cases if fetching a password setting fails
after the migration was just marked as done.
</summary>
<token key="Setting" variants="PasswordManagerSetting"/>
</histogram>
<histogram name="PasswordManager.PasswordSettingsMigrationSucceeded2"
enum="BooleanYesNo" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of succesful password settings migration from Chrome to GMS.
Recorded for the local users on Android when migration finished because of a
success or failure along the way. Replaces
"PasswordManager.PasswordSettingsMigrationSucceeded" which was
overly recorded when the settings migration was being marked as done for
clients with default settings which weren't eligible for settings migration.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordsGrouping.Time" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it takes to group passwords using the information provided by the
affiliation service. Recorded after password grouping is finished.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordSharingDesktop.UserAction"
enum="PasswordManager.PasswordSharingDesktopActions"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records user interactions with the elements of password sharing flow in the
desktop settings.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordSharingIOS.UserAction"
enum="PasswordManager.PasswordSharingIOSUserAction"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records user interactions with the elements of password sharing flow in the
iOS settings.
</summary>
</histogram>
<histogram
name="PasswordManager.PasswordSharingRecipients.FetchAccessTokenResult"
enum="GoogleServiceAuthError" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of access token fetch for the password sharing recipients
request. Recorded when a token fetch completes (including retries).
</summary>
</histogram>
<histogram name="PasswordManager.PasswordSharingRecipients.ResponseOrErrorCode"
enum="CombinedHttpResponseAndNetErrorCode" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the response (both HTTP code and net error code) for password
sharing recipients URL fetches, recorded when the request completes or fails
(does not include transient errors if request is retried).
</summary>
</histogram>
<histogram name="PasswordManager.PasswordStore.InitTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it takes to initialize PasswordStore. Recorded inside
PasswordStore::OnInitCompleted().
</summary>
</histogram>
<histogram name="PasswordManager.PasswordStore.OnLoginsRetained"
enum="LoginsChangedTrigger" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.WasEnrolledInUPMWhenBackendWasCreated"
enum="Boolean" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.PasswordStore.{PasswordStoreBackendType}.AddLoginCalledOnStore"
enum="BooleanCalled" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records calls to AddLoginAsync made from the PasswordStore. Recorded after
the call to AddLoginAsync() on the backend.
</summary>
<token key="PasswordStoreBackendType" variants="PasswordStoreBackendType"/>
</histogram>
<histogram
name="PasswordManager.PasswordStore.{PasswordStoreBackendType}.UpdateLoginCalledOnStore"
enum="BooleanCalled" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records calls to UpdateLoginAsync made from the PasswordStore. Recorded
after the call to UpdateLoginAsync() on the backend.
</summary>
<token key="PasswordStoreBackendType" variants="PasswordStoreBackendType"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.Retry{Operation}.APIError"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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" variants="RetriedOperation"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.Retry{Operation}.Attempt"
units="Times" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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. Note: This histogram expired after M120. Data might
be incomplete before M122, Jan 4 2023.
</summary>
<token key="Operation" variants="RetriedOperation"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.Retry{Operation}.CancelledAtAttempt"
units="Times" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records which attempt was ongoing when the posted retry was cancelled for
{Operation}. Recorded when the sync state changes and the callback which was
supposed to be invoked after the attempt's delay is invalidated. Note that
the original attempt to call the method counts as attempt 1, so the first
retry would be attempt 2, etc.
</summary>
<token key="Operation" variants="RetriedOperation"/>
</histogram>
<histogram name="PasswordManager.PasswordStoreAndroidBackend.{Type}.APIError"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error codes returned by the GMS Core ChromeSync 1P API. Recorded when
the asynchronous job has returned. This histogram is recording an overall
metric for {Type}.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
</histogram>
<histogram name="PasswordManager.PasswordStoreAndroidBackend.{Type}.ErrorCode"
enum="PasswordStoreAndroidBackendError" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is an overall metric that reports the errors observed when
retrieving/adding/updating or removing logins from the PasswordStore Android
backend that uses {Type}. Recorded when the asynchronous job has returned.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
</histogram>
<histogram name="PasswordManager.PasswordStoreAndroidBackend.{Type}.Success"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error codes returned by the GMS Core ChromeSync 1P API. Recorded when
the asynchronous job has returned. This histogram is recording an overall
metric for {Type}.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
</histogram>
<histogram name="PasswordManager.PasswordStoreAndroidBackend.{Type}.{Function}"
enum="PasswordStoreAndroidBackendRequestStatus" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records each {Function} call by the PasswordStoreAndroidBackend for the
{Type}. 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. This histogram is
recording the metric separately for local and account store.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.{Type}.{Function}.APIError"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error codes returned by the GMS Core ChromeSync 1P API{Function}.
Recorded when the asynchronous job has returned. This histogram is recording
the metric separately for local and account store.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.{Type}.{Function}.ConnectionResultCode"
enum="PasswordStoreAndroidBackendConnectionResultCode"
expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</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. This histogram
is recording the metric separately for local and account store.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.{Type}.{Function}.ErrorCode"
enum="PasswordStoreAndroidBackendError" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric reports the error observed when {Function} the PasswordStore
Android backend. Recorded when the asynchronous job has returned. This
metric is recorded for {Type}.
</summary>
<token key="Function">
<variant name="AddLoginAsync" summary="adding a login to"/>
<variant name="GetAllLoginsAsync" summary="retrieving all logins from"/>
<variant name="GetAllLoginsWithBrandingInfoAsync"
summary="for GetAllLoginsWithBrandingInfoAsync"/>
<variant name="GetAutofillableLoginsAsync"
summary="retrieving autofillable logins from"/>
<variant name="GetGroupedMatchingLoginsAsync"
summary="for GetGroupedMatchingLoginsAsync"/>
<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>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.{Type}.{Function}.Latency"
units="ms" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Real-time duration of the asynchronous call to {Function} in
PasswordStoreAndroidBackend. Recorded when the asynchronous job has
returned. This histogram is recording the metric separately for local and
account store.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend.{Type}.{Function}.Success"
enum="BooleanSuccess" expires_after="2025-01-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether {Function} succeeded in AndroidBackend. Recorded when the
asynchronous job has returned. False is emitted if an error occurs;
otherwise true is emitted. This histogram is recording the metric separately
for local and account store.
</summary>
<token key="Type" variants="PasswordStoreAndroidBackendType"/>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram
name="PasswordManager.PasswordStoreAndroidBackend{Function}.APIError"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error codes returned by the GMS Core ChromeSync 1P API{Function}.
Recorded when the asynchronous job has returned. This is an overall
histogram that includes records for both local and account store.
</summary>
<token key="Function">
<variant name=""/>
<variant name=".AddLoginAsync" summary="for AddLoginAsync"/>
<variant name=".GetAllLoginsAsync" summary="for GetAllLoginsAsync"/>
<variant name=".GetAllLoginsWithBrandingInfoAsync"
summary="for GetAllLoginsWithBrandingInfoAsync"/>
<variant name=".GetAutofillableLoginsAsync"
summary="for GetAutofillableLoginsAsync"/>
<variant name=".GetGroupedMatchingLoginsAsync"
summary="for GetGroupedMatchingLoginsAsync"/>
<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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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. This is an
overall histogram that includes records for both local and account store.
</summary>
<token key="Function">
<variant name=""/>
<variant name=".AddLoginAsync" summary="for AddLoginAsync"/>
<variant name=".GetAllLoginsAsync" summary="for GetAllLoginsAsync"/>
<variant name=".GetAllLoginsWithBrandingInfoAsync"
summary="for GetAllLoginsWithBrandingInfoAsync"/>
<variant name=".GetAutofillableLoginsAsync"
summary="for GetAutofillableLoginsAsync"/>
<variant name=".GetGroupedMatchingLoginsAsync"
summary="for GetGroupedMatchingLoginsAsync"/>
<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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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=".GetAllLoginsWithBrandingInfoAsync"
summary="for GetAllLoginsWithBrandingInfoAsync"/>
<variant name=".GetAutofillableLoginsAsync"
summary="retrieving autofillable logins from"/>
<variant name=".GetGroupedMatchingLoginsAsync"
summary="for GetGroupedMatchingLoginsAsync"/>
<variant name=".GetLoginsAsync"
summary="retrieving logins filtered by signon realm from"/>
<variant name=".RemoveLoginAsync" summary="removing a login from"/>
<variant name=".UpdateLoginAsync" summary="updating a login in"/>
</token>
</histogram>
<histogram
name="PasswordManager.PasswordStoreBuiltInBackend.RemoveLoginsCreatedBetween.KeychainLatency"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Real-time duration of passwords bulk deletion from the Keychain inside
RemoveLoginsCreatedBetween() method on iOS. Recorded as soon as it
completes.
</summary>
</histogram>
<histogram
name="PasswordManager.PasswordStoreProxyBackend.PasswordRemovalStatus"
enum="BooleanSuccess" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a call to remove all passwords in BuiltInBackend succeeded.
Recorded when the removal operation is finished.
</summary>
</histogram>
<histogram
name="PasswordManager.PasswordStoreProxyBackend.RemovedPasswordCount"
units="passwords" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of credentials removed by
PasswordStoreProxyBackend::MaybeClearBuiltInBackend() when the deletion
actually took place. Recorded only when RemoveLoginsCreatedBetweenAsync()
operation was successful.
</summary>
</histogram>
<histogram name="PasswordManager.PasswordStore{Backend}.{Function}"
enum="PasswordStoreAndroidBackendRequestStatus" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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. In case of Android backend, this is an overall
histogram that includes records for both local and account store.
</summary>
<token key="Backend">
<variant name="AndroidBackend" summary="Android backend"/>
<variant name="Backend" summary="backend"/>
<variant name="BuiltInBackend" summary="built-in backend"/>
</token>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram name="PasswordManager.PasswordStore{Backend}.{Function}.Latency"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Real-time duration of the asynchronous call to {Function} in {Backend}.
Recorded when the asynchronous job has returned. In case of Android backend,
this is an overall histogram that includes records for both local and
account store.
</summary>
<token key="Backend">
<variant name="AndroidBackend" summary="Android backend"/>
<variant name="Backend" summary="backend"/>
<variant name="BuiltInBackend" summary="built-in backend"/>
</token>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram name="PasswordManager.PasswordStore{Backend}.{Function}.Success"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether {Function} succeeded in {Backend}. Recorded when the
asynchronous job has returned. False is emitted if an error occurs;
otherwise true is emitted. In case of Android backend, this is an overall
histogram that includes records for both local and account store.
</summary>
<token key="Backend">
<variant name="AndroidBackend" summary="Android backend"/>
<variant name="Backend" summary="backend"/>
<variant name="BuiltInBackend" summary="built-in backend"/>
</token>
<token key="Function" variants="PasswordStoreBackendFunction"/>
</histogram>
<histogram name="PasswordManager.PasswordSyncState3" enum="PasswordSyncState"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.PostPasswordsMigrationSheet.Outcome"
enum="PostPasswordMigrationSheetOutcome" expires_after="2025-02-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram logs how the post password migration sheet was closed.
Android only.
</summary>
</histogram>
<histogram name="PasswordManager.PotentialBestMatchFormType"
enum="PasswordManagerMatchedFormType" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records the type of the potential preferred password for
filling. It is recorded when the browser instructs the renderer to fill the
credentials on page load. It may record values that are different than
recorded in PasswordManager.MatchedFormType due to difference in FormFetcher
configuration.
</summary>
</histogram>
<histogram name="PasswordManager.PredictionWaitResult"
enum="PasswordFormPredictionWaitResult" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The outcome of a wait for external predictions for filling a password form.
This is emitted whenever a wait completes, either from all the external
sources having provided a response or from a timeout.
</summary>
</histogram>
<histogram name="PasswordManager.PrefilledUsernameFillOutcome"
enum="PrefilledUsernameFillOutcome" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records successful fills of prefilled username values known as placeholders
and unsuccessful fills that were blocked because the prefilled value was not
identified as a placeholder. Recorded once per PasswordAutofillAgent
instance, when attempting to fill a password form that contains a username
value which was prepopulated by the website.
Warning: this histogram was expired from M86 to M115; data may be missing.
</summary>
</histogram>
<histogram
name="PasswordManager.ProcessIncomingPasswordSharingInvitationResult"
enum="PasswordManager.ProcessIncomingPasswordSharingInvitationResult"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<component>1457410</component>
<summary>
Records the result of processing incoming password sharing invitation.
Invitation are either auto-approved and stored in the password store or
ignored for different reasons. This is recorded upon processing an incoming
password sharing invitation.
</summary>
</histogram>
<histogram name="PasswordManager.ProfileStore.TotalAccountsBeforeInitialSync"
units="accounts" expires_after="M134">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.Shown"
enum="PasswordManagerPromoCard" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.ProvisionalSaveFailure2"
enum="ProvisionalSaveFailure" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="DeviceReauth.ReauthResult" expires_after="M136">
<owner>[email protected]</owner>
<owner>[email protected]</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.RequestVerificationAsyncResult"
enum="AuthenticationResultStatusWin" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records an error immediately after RequestVerificationAsyncResult
encountered one, or UserConsentVerificationResult if the authentication call
was successful.
</summary>
</histogram>
<histogram name="PasswordManager.RequirementsSpecFetcher.HttpResponseCode"
enum="HttpResponseCode" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HTTP response code of fetching a password requirements file.
</summary>
</histogram>
<histogram name="PasswordManager.RequirementsSpecFetcher.NetErrorCode"
enum="NetErrorCodes" expires_after="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Network error code of fetching a password requirements file.
</summary>
</histogram>
<histogram name="PasswordManager.RequirementsSpecFetcher.NetworkDuration"
units="ms" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Result of fetching requirements for password during password generation.
</summary>
</histogram>
<histogram name="PasswordManager.ReuseCheck.CheckedPasswords" units="passwords"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of Gaia password hashes that have been saved for password
reuse detection {SyncConsentStatus}. This is logged during the
initialization of the PasswordReuseManagerImpl class.
</summary>
<token key="SyncConsentStatus">
<variant name="" summary=""/>
<variant name=".SignedInNonSync"
summary="when the primary account for the profile does not have Sync
consent"/>
<variant name=".Sync"
summary="when the primary account for the profile has Sync consent"/>
</token>
</histogram>
<histogram name="PasswordManager.SaveUIDismissalReason.UsersWithNoCredentials"
enum="PasswordManagerUIDismissalReason" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Why was the save password UI (bubble or infobar) closed? Recorded for users
who don't yet have any credentials stored in the password manager. Currently
only logged on desktop.
</summary>
</histogram>
<histogram name="PasswordManager.SaveUIDismissalReason{UserSyncingType}"
enum="PasswordManagerUIDismissalReason" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Why was the save password UI (bubble or infobar) closed? Recorded for
{UserSyncingType}. Note that on Automotive, closing the save password UI
might not result in the password being saved in some cases (e.g. when the
activity is destroyed or the device lock can't be set).
</summary>
<token key="UserSyncingType" variants="UserSyncingType"/>
</histogram>
<histogram name="PasswordManager.SavingOnUsernameFirstFlow"
enum="SavingOnUsernameFirstFlow" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.ServerPredictionsWaitDuration" units="ms"
expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The elapsed time between the PasswordManager requesting server-side
credentials and receiving a response.
</summary>
</histogram>
<histogram name="PasswordManager.Settings.Export.Event"
enum="PasswordExportEvent" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the frequency of various password export events in settings menu.
Recorded when the user interacts with the password export menu item or
dialog. Curently logged only on Android.
</summary>
</histogram>
<histogram name="PasswordManager.Settings.Export.Result2"
enum="HistogramExportResult" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the export flow finished successfully or the type of error
for passwords export started from password settings. Recorded when the
export flow finishes. Logged only on Android. This is an updated version of
PasswordManager.Settings.Export.Result, which logs more possible export flow
results in adition to the old values.
</summary>
</histogram>
<histogram name="PasswordManager.Settings.ToggleAutoSignIn"
enum="BooleanEnabled" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records user action to enable or disable password saving in password
settings. Recorded when user interacts with the toggle. This metric is only
logged on Android.
</summary>
</histogram>
<histogram name="PasswordManager.SharedPasswordsNotificationBubble.UserAction"
enum="PasswordManager.SharedPasswordsNotificationInteractions"
expires_after="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records different user interactions with the shared password notification
bubble. The bubble is displayed upon visiting a sign-in form for which one
or more saved passwords are shared by other users. The metric is recorded
upon displaying the notification and upon user interaction with one of the
buttons in the notification.
</summary>
</histogram>
<histogram name="PasswordManager.ShortcutMetric"
enum="PasswordManagerShortcutMetric" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the user actions related to password manager shortcut. Recorded
before showing install prompt, after successful installation, or when user
switched profile inside a shortcut.
</summary>
</histogram>
<histogram
name="PasswordManager.SingleUsername.ForgotPasswordServerPredictionUsed"
enum="Boolean" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when a single username form is detected using server predictions.
Records whether the prediction is SINGLE_USERNAME_FORGOT_PASSWORD.
</summary>
</histogram>
<histogram name="PasswordManager.SingleUsername.PasswordFormHadUsernameField"
enum="PasswordFormHadUsernameField" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Single username vote is sent after user is signed in (i.e. entered password
in password form). This means that there are actually 2 forms in username
first flow, that is single username and password form.
Form is considered for single username vote in 2 cases:
(1) There is a password field and no username fields in the password form.
(2) There is a password field and username value from password form matches
username value in the single username form.
This metric tracks which of the two cases the vote is coming from. Recorded
once per vote submission.
</summary>
</histogram>
<histogram name="PasswordManager.SingleUsername.VoteDataAvailability"
enum="SingleUsernameVoteDataAvailability" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records whether username first and forgot password form voting
data is available, and whether it contains information about the same form.
Recorded during single username votes uploading.
</summary>
</histogram>
<histogram name="PasswordManager.StoreDecryptionResult"
enum="PasswordDecryptionResult" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Describes the result of decrypting a password value from the LoginDatabase.
</summary>
</histogram>
<histogram name="PasswordManager.StoresUsedForFillingInLast28Days"
enum="PasswordManagerFillingSource" expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</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 "Count unique clients".
</summary>
</histogram>
<histogram name="PasswordManager.StoresUsedForFillingInLast7Days"
enum="PasswordManagerFillingSource" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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 "Count unique clients".
</summary>
</histogram>
<histogram name="PasswordManager.SubmittedFormFrame2"
enum="SubmittedPasswordFormFrame" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records a frame type (eg. main frame, iframe with the same url as the main
frame, etc) of a submitted password form. Logged only once per submitted
form.
</summary>
</histogram>
<histogram name="PasswordManager.SubmittedFormType2" enum="PasswordFormType2"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The presumed type (e.g. signup, login, change password) of all submitted
password forms. The type is based on local heuristics. Logged on the
corresponding form manager destruction.
</summary>
</histogram>
<histogram name="PasswordManager.SuccessfulLoginHappened"
enum="BooleanSuccessfulLoginHappenedOnHttps" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</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.SuggestionPopupTriggerSource"
enum="AutofillSuggestionTriggerSource" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the reason that triggered password suggestions popup, excluding
manual fallback suggestions. Recorded at the time the popup is shown.
</summary>
</histogram>
<histogram
name="PasswordManager.SyncControllerDelegateNotifiesCredentialManager.APIErrorCode"
enum="CredentialManagerAPIError" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether PasswordSyncControllerDelegateAndroid succeeded in notifying
CredentialManager of the currect account. Recorded when the async request to
notify the credential manager about the account returns.
</summary>
</histogram>
<histogram name="PasswordManager.SyncingAccountState3"
enum="PasswordManagerSyncingAccountState" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Information about the user's current sync status crossed with whether their
synced password is saved. Recorded at most once per day for regular
profiles.
</summary>
</histogram>
<histogram name="PasswordManager.SyncMetadataReadError2"
enum="PasswordSyncMetadataReadError" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.TimesReceivedFillDataForForm" units="count"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
How many times the browser sent fill data for the given form to the
renderer. Recorded only for forms, for which the data was sent at least
once. Recorded when the form dissapears (e.g. upon page navigation).
</summary>
</histogram>
<histogram name="PasswordManager.TouchToFill.CredentialIndex" units="index"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason why a user dismissed the Touch To Fill sheet. Recorded once for
each dismissal.
</summary>
</histogram>
<histogram name="PasswordManager.TouchToFill.Outcome"
enum="TouchToFill.Outcome" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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.PasswordGeneration.TriggerOutcome"
enum="TouchToFillPasswordGenerationTriggerOutcome"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the outcome of an attempt to trigger the password generation bottom
sheet. It either records success or the reason why the sheet was not shown.
The metric is recorded when the browser process receives the notification
about password generation being available and only if the generation bottom
sheet feature is on. Important: due to the renderer issuing 2 generation
available calls per field focus event, all buckets apart from
"Shown" are double-counted.
</summary>
</histogram>
<histogram name="PasswordManager.TouchToFill.PasswordGeneration.UserChoice"
enum="GenerationDialogChoice" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the user chose to use the proposed automatically generated
password in the bottom sheet. The metric is recorded only when the password
generation bottom sheet was automatically triggered (not triggered by using
manual password generation or from the keyboard accessory). The metric is
logged when the bottom sheet is dismissed.
</summary>
</histogram>
<histogram name="PasswordManager.TouchToFill.SubmissionReadiness"
enum="TouchToFill.SubmissionReadiness" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time in milliseconds between filling by the Touch To Fill and a
successful submission (To ensure filling and submitting correspond to each
other, the usernames should coincide and the timestamps should be within one
minute. A successful login after a failed submission or manual typing is not
reported). Used to compare the times when automated submission is enabled
and disabled. Thus, we measure the time saved for a user. Recorded when the
password manager detects that the login was successful.
</summary>
</histogram>
<histogram name="PasswordManager.UI.OpenedPasswordDetailsWhileSearching"
enum="BooleanSuccess" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether user navigated to password details page while using search
field. Recorded only on desktop after user clicked on a password entry.
</summary>
</histogram>
<histogram name="PasswordManager.UIDismissalReason"
enum="PasswordManagerUIDismissalReason" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.UnifiedPasswordManager.ActiveStatus2"
enum="UnifiedPasswordManagerActiveStatus" expires_after="2024-12-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.MigrationForLocalUsers.AddLoginCount"
units="passwords" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of credentials successfully added to GMS Core during
MigrationForLocalUsers. Recorded when the migration is finished,
irrespective of the overall migration success.
</summary>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.AndroidBackend.{MigrationOperation}.APIError"
enum="PasswordStoreAndroidBackendAPIError" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the API error received when performing {MigrationOperation} on the
AndroidBacked as part of MigrationForLocalUsers. Reported immediately after
the operation finishes, unless it's a Get operation. For GetAllLogins, the
result is only reported after the replies come back fom both backends. Note
that the BuiltInBackend doesn't return API Errors so no similar histogram is
recorded for it.
</summary>
<token key="MigrationOperation" variants="MigrationOperation"/>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.Latency"
units="ms" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Real-time duration of MigrationForLocalUsers. Recorded when all operations
are completed and migration is finished.
</summary>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.MergeWhereAndroidHasMostRecent"
units="passwords" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of conflicts found while migrating local passwords where the
credential already stored in GMS Core is kept instead of the one in Chrome.
A conflict is defined as both Chrome and GMS Core having credentials with
the same primary key, but different passwords. In that case the credential
that was updated or used last is considered to be the correct one.
Recorded when the entire migration finished successfully in order to avoid
double-counting.
The counterpart of this histogram, recording counts of conflicts where
Chrome had the more recent credential. is
"PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.UpdateLoginCount"
</summary>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.MigratedLoginsTotalCount"
units="passwords" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of credential successfully migrated to GMS Core during
MigrationForLocalUsers. Recorded when the migration is finished. If the
migration fails in the middle after writting only part of credentials to GMS
core, the metric will report only those that were actually written before
the failure.
</summary>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.ProgressState"
enum="LocalPwdMigrationProgressState" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the local passwords migration is scheduled, when it's started
and when it finishes, irrespective of success status.
</summary>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.Success"
enum="BooleanSuccess" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records success of MigrationForLocalUsers. Recorded when the migration is
finished.
</summary>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.UpdateLoginCount"
units="passwords" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of credentials successfully updated in GMS Core during
MigrationForLocalUsers. Recorded when the migration is finished,
irrespective of the overall migration success.
</summary>
</histogram>
<histogram
name="PasswordManager.UnifiedPasswordManager.MigrationForLocalUsers.{BackendType}.{MigrationOperation}.Success"
enum="BooleanSuccess" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether performing {MigrationOperation} on the {BackendType} as part
of MigrationForLocalUsers succeeded or not. Reported immediately after the
operation finishes, unless it's a Get operation. For GetAllLogins, the
result is only reported after the replies come back fom both backends.
</summary>
<token key="BackendType">
<variant name="AndroidBackend"/>
<variant name="BuiltInBackend"/>
</token>
<token key="MigrationOperation" variants="MigrationOperation"/>
</histogram>
<histogram name="PasswordManager.UnifiedPasswordManager.WasMigrationDone"
enum="BooleanSuccess" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.UpdateUIDismissalReason"
enum="PasswordManagerUIDismissalReason" expires_after="2025-01-26">
<owner>[email protected]</owner>
<summary>Why was the update password UI (bubble or infobar) closed?</summary>
</histogram>
<histogram name="PasswordManager.UPMUpdateSignInCredentialsSucces"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-03-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of passwords analyzed during the passwords weak check.
</summary>
</histogram>
<histogram name="PasswordManager.WeakCheck.PasswordScore"
enum="PasswordWeaknessScore" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The time it took to complete the passwords weak check.</summary>
</histogram>
<histogram name="PasswordManager.WeakCheck.WeakPasswords" units="passwords"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of weak passwords found when the passwords weak check completed.
</summary>
</histogram>
<histogram name="PasswordManager.WellKnownChangePasswordResult"
enum="WellKnownChangePasswordResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.{Function}.TimeSinceInit" units="units"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time passed since PasswordStore construction till PasswordStore::{Function}
call. Recorded on PasswordStore::{Function} call. Max value is 30 seconds.
This function helps to evaluate PasswordStore usage on start-up.
</summary>
<token key="Function">
<variant name="GetAllLogins" summary="GetAllLogins()"/>
<variant name="GetAllLoginsWithAffiliationAndBrandingInformation"
summary="GetAllLoginsWithAffiliationAndBrandingInformation()"/>
<variant name="GetAutofillableLogins" summary="GetAutofillableLogins()"/>
</token>
</histogram>
<histogram name="PasswordManager.{Location}.AuthenticationResult"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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}.AuthenticationTime2" units="ms"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time it takes user to authenticate {Location}. Uses wider range
of buckets
</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.{Scope}LoginData.RemovalStatus"
enum="BooleanSuccess" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether deleting the {Scope} login data file succeeded. Recorded
when the removal operation is finished. Android only.
</summary>
<token key="Scope">
<variant name="Account" summary="account-scoped"/>
<variant name="Profile" summary="profile-scoped"/>
</token>
</histogram>
<histogram name="PasswordManager.{Store}.RemoveLoginDBError"
enum="SqliteLoggedResultCode" expires_after="2025-05-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors reported by SQLite when removing logins from the login database.
</summary>
</histogram>
<histogram
name="PasswordManager.{Store}BlacklistedSitesHiRes3{CustomPassphraseStatus}"
units="sites" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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}InaccessiblePasswords3"
units="saved passwords" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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}PasswordLoss" units="count"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of accounts that was stored in the password manager's {Store} and
then was deleted by the time of next startup. Recorded during browser
start-up, at most once per day for regular profiles.
</summary>
<token key="Store" variants="Store"/>
</histogram>
<histogram name="PasswordManager.{Store}PasswordLossPotentialReason.WIP"
enum="PasswordManagerPasswordLossPotentialReason"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is recorded if the password manager observed a possible loss
of passwords (change from >1 stored password in previous profile startup
to 0 passwords in this profile startup).
Records the reasons for credentials to be removed from the {Store} during
the last day or longer, if Chrome wasn't started up for longer than a day.
See `enum class PasswordManagerCredentialRemovalReason`.
If the value of the bitmask is 0, then there was no known reason for
credential removal.
This histogram is recorded on all platforms during browser start-up, at most
once per day for regular profiles.
</summary>
<token key="Store" variants="Store"/>
</histogram>
<histogram
name="PasswordManager.{Store}PasswordNotes.CountCredentialsWithNonEmptyNotes2"
units="count" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.CountNotesPerCredential3"
units="count" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total number of notes attached to a password in the password manager's
{Store}. Recorded once for credentials with 1+ notes at most once per day
for regular profiles.
</summary>
<token key="Store" variants="Store"/>
</histogram>
<histogram
name="PasswordManager.{Store}TimesPasswordUsed3.{PasswordType}{CustomPassphraseStatus}"
units="PasswordUses" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times each saved password from the {Store} has been used to
log in. Split by whether created by the user or generated by Chrome, and
further by whether the user used sync with custom passphrase or not.
Recorded by iterating over stored passwords soon after startup, at most once
per day for regular profiles.
</summary>
<token key="Store" variants="Store"/>
<token key="PasswordType" variants="PasswordType"/>
<token key="CustomPassphraseStatus" variants="CustomPassphraseStatus"/>
</histogram>
<histogram name="PasswordManager.{Store}TotalAccountsHiRes3.WithScheme{Scheme}"
units="accounts" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of accounts stored in the password manager's {Store} (across all
sites) for origins with the scheme (e.g., HTTP, HTTPS, FTP) as given in the
histogram suffix. For each scheme, the count is recorded at most once per
day for regular profiles.
</summary>
<token key="Store" variants="Store"/>
<token key="Scheme" variants="Scheme"/>
</histogram>
<histogram
name="PasswordManager.{Store}{Metric3}.{PasswordType}{CustomPassphraseStatus}"
units="units" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.AttemptsToSavePasswordHashFromProfilePicker"
enum="BooleanSuccess" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Track attempts to save password hashes from the profile picker sign-in flow.
</summary>
</histogram>
<histogram name="PasswordProtection.CSDCacheContainsDebuggingMetadata"
enum="BooleanPresent" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the CSD Features cache had debugging metadata present for a
given URL when using the cache from PhishGuard side.
</summary>
</histogram>
<histogram name="PasswordProtection.CSDCacheContainsImages"
enum="BooleanPresent" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the CSD Features cache had images present for a given URL
when using the cache from PhishGuard side. This histogram is used to
evaluate the effectiveness of the cache.
</summary>
</histogram>
<histogram name="PasswordProtection.CSDCacheDebuggingMetadataSizeAtHit"
units="bytes" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the CSD Features debugging metadata cache size at the time when
using the cache from PhishGuard side. This histogram is used to evaluate the
memory usage of the cache.
</summary>
</histogram>
<histogram name="PasswordProtection.CSDCacheSizeAtHit" units="bytes"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the CSD Features verdict cache size at the time when using the cache
from PhishGuard side. This histogram is used to evaluate the memory usage of
the cache.
</summary>
</histogram>
<histogram name="PasswordProtection.GmailReportSent" enum="Boolean"
expires_after="2024-12-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether an enterprise report is sent for a Gmail password. This
should not happen due to a fix in M129 and this metric should provide
assurance of that claim.
</summary>
</histogram>
<histogram name="PasswordProtection.InterstitialAction"
enum="PasswordProtectionWarningAction" expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how a user interacts with the password protection interstitial
(a.k.a chrome://reset-password page). Logged when the interstitial is shown
and when the user chooses to change their password. Warning: this histogram
was expired from 2021-01-30 to 2021-10-25; data may be missing.
</summary>
</histogram>
<histogram name="PasswordProtection.ModalWarningDialogAction"
enum="PasswordProtectionWarningAction" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-04-19">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-05-12">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the outcome of the password alert mode, indicating if password alert
warning is shown successfully or if it is skipped for some reason. Warning:
this histogram was expired from 2021-01-30 to 2021-10-25; data may be
missing.
</summary>
</histogram>
<histogram name="PasswordProtection.PasswordProtectionResponseOrErrorCode"
enum="CombinedHttpResponseAndNetErrorCode" expires_after="2024-10-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Response or error codes for PasswordProtectionRequest. Logged after chrome
receives response of PasswordProtectionRequest from Safe Browsing service.
Note: In M98 the error code HTTP_RESPONSE_CODE_FAILURE was changed to log
the actual HTTP response code.
</summary>
</histogram>
<histogram name="PasswordProtection.PasswordReuseSyncAccountType"
enum="PasswordProtectionSyncAccountType" expires_after="2024-02-25">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When password protection service detects a reuse of Chrome sync password,
record the type of Chrome sync account on which the reuse happens (e.g.
@gmail.com, @googlemail.com, or other dasher account).
</summary>
</histogram>
<histogram name="PasswordProtection.RequestNetworkDuration" units="ms"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.SuccessfulPhishingDetectionWithinTimeout"
enum="BooleanSuccess" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs when a renderer process' phishing detection finishes or not within a
timeout when fetching client side detection images for password protection
pings.
</summary>
</histogram>
<histogram name="PasswordProtection.Verdict" enum="PasswordProtectionVerdict"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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>
<histogram name="PasswordProtection.VisualFeaturesClearReason"
enum="CanExtractVisualFeaturesResult" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Log the reason why PhishGuard pings does not contain visual features images.
</summary>
</histogram>
</histograms>
</histogram-configuration>