chromium/tools/metrics/histograms/metadata/profile/histograms.xml

<!--
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 Profile 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>

<histogram name="Profile.AddNewUser" enum="ProfileAddNewUser"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <summary>The frequency of ways that new user profiles are added.</summary>
</histogram>

<histogram name="Profile.AddSignInFlowOutcome"
    enum="ProfileSignedInFlowOutcome" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the outcome of signed-in profile creation whenever it's started (by
    user choosing to sign-in in the first screen of the profile creation flow).
  </summary>
</histogram>

<histogram name="Profile.AllAccounts.Names" enum="ProfileAllAccountsNames"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Classification of what gaia names appear or appeared in this profile since
    the last time gaia cookies got deleted. Thus, this also includes signed-out
    accounts. In order to protect privacy, only reports whether multiple
    distinct gaia names appeared in this profile and if so, whether sync is
    enabled for one of them. Furthermore, this metric uses a low-entropy hash to
    detect distinct names. In case of a rare hash collision (less than 0.1% of
    cases), multiple names get recorded as a single name. Recorded on every
    activation of a Chrome window (for the respective profile).
  </summary>
</histogram>

<histogram name="Profile.AppCount" units="units" expires_after="2024-07-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The number of installed apps when a profile is opened.</summary>
</histogram>

<histogram name="Profile.Avatar" enum="ProfileAvatar"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The frequency of selection of each avatar.</summary>
</histogram>

<histogram name="Profile.BookmarksSize" units="MB" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Size of the bookmarks database.</summary>
</histogram>

<histogram name="Profile.BrowserActive.PerProfile" enum="Profile"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded every time a browser window becomes active. Each profile on a
    client is assigned a unique bucket, i.e. whenever a browser window of
    profile x becomes active, an entry is recorded in bucket x.

    Example: A user has 2 profiles and opens 1 browser window for each of them.
    When the user switches back and forth between the windows, multiple entries
    will be recorded in bucket 1 and 2, corresponding to the profiles.

    Note: The guest profile has bucket 0. Regular profiles start at bucket 1.
    Incognito browser windows count towards the original profile.
  </summary>
</histogram>

<histogram name="Profile.DeleteProfileAction" enum="ProfileDeleteAction"
    expires_after="never">
<!-- expires-never: Used to log the profile deletions actions and their source.
      Profile deletion removes the entire local profile, which means that it
      deletes user data and this operation cannot be undone. Therefore it is
      important to not see unexplainable spikes in the profile deletion
      operations. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram tracks which UI screen was used to initiate and confirm the
    deletion of a profile. This does not track when the profile is actually
    deleted, which is an asynchronous process that happens later. Not all
    buckets in the histogram correspond to profile deletion so the sum is not
    the count of deleted profiles.
  </summary>
</histogram>

<histogram name="Profile.DeleteProfileContext" enum="ProfileDeleteContext"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram tracks the context of profile deletion whenever a profile is
    scheduled for deletion (from user action in the UI). Only recorded if the
    profile has a valid entry in ProfileAttributesStorage.
  </summary>
</histogram>

<histogram name="Profile.Destroyer.OffTheRecord" enum="ProfileDestructionType"
    expires_after="2025-02-18">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Track if the off-the-record profile was immidiately destroyed when asked to
    be destroyed, or was scheduled for a delayed destruction, and possibly was
    not destroyed properly after the delay and was crashed.
  </summary>
</histogram>

<histogram name="Profile.DiceUI.GaiaAccountsStale" enum="BooleanStale"
    expires_after="M80">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram tracks whether the accounts cached in the GAIA cookie service
    manager are stale when presenting the user menu when DICE is enabled.
  </summary>
</histogram>

<histogram name="Profile.DidDestroyProfileBeforeShutdown" enum="Boolean"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether any profile reached a refcount of 0 at any point, prior to exiting
    Chrome. Recorded during teardown.

    Warning: this histogram was expired from 2023-10-11 to 2024-06-18; data may
    be missing.
  </summary>
</histogram>

<histogram name="Profile.Guest.ForcedByPolicy" enum="BooleanForced"
    expires_after="2024-10-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records if a Guest session is started by user's request or is forced by a
    policy. This is recorded when a Guest profile is created.
  </summary>
</histogram>

<histogram name="Profile.Guest.OTR.Lifetime" units="minutes"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram records the lifetime duration of an off-the-record Guest
    profile. It is recorded once the profile for the Guest session is closed.
  </summary>
</histogram>

<histogram name="Profile.Guest.TypeCreated" enum="GuestProfileCreatedType"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of Guest profile created, either a parent guest or the
    first child (off-the-record) guest profile for the active parent guest
    profile. It is recorded during the guest profile creation.
  </summary>
</histogram>

<histogram name="Profile.Incognito.Lifetime" units="minutes"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram records the lifetime duration of incognito profiles. It is
    recorded once an off the record profile for an incognito session is closed.
    From M91, this metric is not recorded for ChromeOS non user-triggered
    Incognito profiles.
  </summary>
</histogram>

<histogram name="Profile.Incognito.MainFrameNavigationsPerSession"
    units="navigations" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram records the number of mainframe navigations that have been
    done during one Incognito session. It is recorded once an off the record
    profile for an incognito session is closed. From M91, this metric is not
    recorded for ChromeOS non user-triggered Incognito profiles.
  </summary>
</histogram>

<histogram name="Profile.Incognito.MovedToBackgroundAfterDuration"
    units="minutes" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram records the duration of an Incognito session on Android, when
    it goes to background or is closed by the user. The session duration is
    considered from when the Incognito profile is created.
  </summary>
</histogram>

<histogram name="Profile.Incognito.ResumedAfterReportedDuration"
    units="minutes" expires_after="never">
<!-- expires-never: One of the top level productmetrics we want to track closely,
    which which in conjunction with MovedToBackgroundAfterDuration helps measure
    session duration. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When Chrome comes back to foreground on Android and it already has an
    Incognito session, this histogram records the last duration time reported by
    'Profile.Incognito.MovedToBackgroundAfterDuration' metric. The subtraction
    of these two histograms can give a histogram of Incognito session duration.
  </summary>
</histogram>

<histogram name="Profile.KeepAliveLeakAtShutdown" enum="ProfileKeepAliveOrigin"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded during BrowserProcess teardown. Indicates that a Profile still has
    ScopedProfileKeepAlive objects referencing it, of the given origin. This is
    a sign of a bug, or incorrect usage of the ScopedProfileKeepAlive API.

    Only regular Profiles are considered for this metric (no Incognito, Guest,
    or System Profiles).

    Warning: this histogram was expired from 2024-04-28 to 2024-06-18; data may
    be missing.
  </summary>
</histogram>

<histogram name="Profile.KeyedService.Count.SystemProfile{ProfileType}"
    units="services" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of KeyedServices active for the System {ProfileType}
    Profile. This record is captured when the System {ProfileType} Profile is
    destroyed. It is currently done only when Chrome exits. In the future, there
    are plans to destroy System profiles as soon as the profile picker window is
    closed.
  </summary>
  <token key="ProfileType">
    <variant name="Original-M-107"/>
    <variant name="OTR-M-107" summary="off the record"/>
  </token>
</histogram>

<histogram name="Profile.LacrosFre.WelcomeHasGivenName" enum="Boolean"
    expires_after="2024-12-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks how often we have to render Lacros FRE whose welcome pages don't have
    a given name to display. We expect that it's very rare, if we have a
    non-trivial number of these without a given name, we will have to redesign
    the experience to nicely accomodate for it.
  </summary>
</histogram>

<histogram name="Profile.LiveProfileCount" units="profiles"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Number of Profiles that are currently loaded in memory, with a non-zero
    refcount. Recorded 30 minutes after startup, and every 30 minutes
    afterwards. Only regular Profiles are considered for this metric (no
    Incognito, Guest, or System Profiles).

    See also Profile.ZombieProfileCount, the number of Profiles with a refcount
    of 0.

    Warning: this histogram was expired 2023-10-11 to 2024-06-18; data may be
    missing.
  </summary>
</histogram>

<histogram name="Profile.Menu.ClickedActionableItem{ProfileType}"
    enum="ProfileMenuActionableItem" expires_after="2024-11-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when an actionable item (e.g. button, link) in the profile menu is
    clicked. {ProfileType}.
  </summary>
  <token key="ProfileType">
    <variant name="" summary="Output for all profile types"/>
    <variant name="_Supervised"
        summary="Output only for profiles which are subject to parental
                 controls"/>
  </token>
</histogram>

<histogram name="Profile.NetUserCount" enum="ProfileNetUserCount"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <summary>
    Counts of users added and deleted. Percentages are not meaningful. Please
    look at the ratio of the counts/percentages.
  </summary>
</histogram>

<histogram name="Profile.NukeFromDisk.Result" enum="NukeProfileResult"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a profile directory gets deleted from disk, e.g. because it
    was an ephemeral profile, or the user requested its destruction. Indicates
    whether the operation succeeded or failed.

    If the operation fails, it may be retried (up to 3 times). Each try is
    tracked as a separate enum value.

    Warning: this histogram was expired 2024-04-28 to 2024-06-18; data may be
    missing.
  </summary>
</histogram>

<histogram name="Profile.NumberOfAccountsPerProfile" units="units"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of Google-managed accounts linked to a profile. This may
    be counted multiple times per profile. Please review with the &quot;Show
    user counts&quot; option enabled on the dashboard.
  </summary>
</histogram>

<histogram name="Profile.NumberOfActiveProfiles" units="profiles"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of profiles on a user's machine every 24 hours while
    Chrome is running. This is intended to count only profiles that have been
    used in the last 28 days. As such, it differs Profile.NumberOfProfiles.

    However, as of Feb 2024 intention is not reality. Chrome on Android assumes
    the (sole) profile is active, even if it is not. Before M129, Chrome on iOS
    assumed the (sole) profile is inactive, even if it is active. On desktop
    platforms (all milestones) and on iOS M129+, the activity detection is
    believed to work reliably.

    Also of note: ChromeOS has a notion of &quot;users&quot;. A ChromeOS device
    may have multiple users. Users are an entirely different concept than
    profiles. ChromeOS may allow a user to have and use multiple profiles
    someday. As of Feb 2024, it does not.
  </summary>
</histogram>

<histogram name="Profile.NumberOfManagedProfiles" units="profiles"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of locally managed profiles on a user's machine every 24
    hours while Chrome is running, among cases with at least one profile.

    This counts only profiles that have been used in the last 28 days.

    Might have incomplete data between 2021-03-12 and 2021-05-26.
  </summary>
</histogram>

<histogram name="Profile.NumberOfProfiles" units="profiles"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of profiles on a user's machine every 24 hours while
    Chrome is running.

    This counts the total number of profiles on the user's device, regardless of
    whether they've been used recently.
  </summary>
</histogram>

<histogram name="Profile.NumberOfProfilesAtProfileInit" units="profiles"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the count of profiles every time a new profile is initialized,
    including the newly initialized profile. Only recorded for on-disk profiles
    (Incognito and Guest are excluded, for example).

    The total histogram count can be used to estimate how many profiles were
    initialized in total.
  </summary>
</histogram>

<histogram name="Profile.NumberOfProfilesAtProfileSwitch" units="profiles"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the count of profiles for each profile switch (incl. switching
    between concurrently open profiles by activating their browser windows). The
    count excludes the Guest profile so records in bucket 1 denote switches
    between the single profile and the Guest profile.
  </summary>
</histogram>

<histogram name="Profile.NumberOfSignedInProfiles" units="profiles"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of signed-in (syncing) profiles on a user's machine every
    24 hours while Chrome is running.

    This counts only profiles that have been used in the last 28 days.
  </summary>
</histogram>

<histogram name="Profile.NumberOfUnusedProfiles" units="profiles"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of profiles unused within the past 28 days on a user's
    machine. This is recorded every 24 hours while Chrome is running.
  </summary>
</histogram>

<histogram name="Profile.PercentageOfManagedProfiles" units="units"
    expires_after="2024-11-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the percentage (0-100) of profiles that are locally managed, recorded
    when Chrome starts up.
  </summary>
</histogram>

<histogram name="Profile.ProfilesOrderChanged" enum="BooleanHit"
    expires_after="2024-12-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of times the user reorders profiles by drag and drop in
    the profile picker. Recorded every time the profile ordering changes.
  </summary>
</histogram>

<histogram name="Profile.SessionDuration.PerProfile" enum="Profile"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Browsing session duration in minutes, recorded per profile. Each profile on
    a client is assigned a unique bucket.

    Recorded when the user switches profiles, after some time of
    inactivity(usually 5 minutes) or at browser shutdown.

    Example: A user has 2 profiles. They open a browser window of profile 1 and
    interact with the browser for 8 minutes. Then they open a browser window of
    profile 2 and interact with the browser for 3 minutes. Then they do nothing
    (=stay inactive) for while. The recorded values will be: (bucket 1: 8),
    (bucket 2: 3).

    Note: The guest profile has bucket 0. Regular profiles start at bucket 1.
    Incognito profiles count towards the original profile.
  </summary>
</histogram>

<histogram base="true" name="Profile.State.LastUsed" units="days"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of days since a profile was last used. Recorded on startup of
    Chrome and whenever Chrome is used after at least 30 minutes of inactivity.
  </summary>
</histogram>

<histogram base="true" name="Profile.State.SyncEnabled" enum="BooleanEnabled"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The sync status of the profile. Recorded on startup of Chrome and whenever
    Chrome is used after at least 30 minutes of inactivity.
  </summary>
</histogram>

<histogram base="true" name="Profile.State.UnconsentedPrimaryAccountType"
    enum="ProfileUnconsentedPrimaryAccountType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The type of profile's unconsented primary account. Recorded on startup of
    Chrome and whenever Chrome is used after at least 30 minutes of inactivity.
  </summary>
</histogram>

<histogram name="Profile.TotalSize" units="MB" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Total size of the profile data (excluding sub-folders).</summary>
</histogram>

<histogram name="Profile.TotalSizeRecursive" units="MB"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Total size of the profile data (including sub-folders).

    Recorded with some delay after a profile is loaded, excluding off-the-record
    profiles.
  </summary>
</histogram>

<histogram name="Profile.TriggeredReset" enum="BooleanReset"
    expires_after="2020-05-03">
  <owner>[email protected]</owner>
  <summary>
    Indicates whether a profile had a reset trigger that caused it to launch a
    reset flow. The presence of this trigger is recorded during profile
    creation.
  </summary>
</histogram>

<histogram name="Profile.UserAction.PerProfile" enum="Profile"
    expires_after="never">
<!-- expires-never: Used by the Chrome Profile Metrics dashboard to track user
      actions per profile, for users with multiple active profiles. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Helper histogram to track user actions per profile. Recorded when there is
    an active profile browser instance and a UMA UserAction is recorded, i.e. if
    there's an active profile, a recording of a UMA UserAction will result in a
    recording of a sample in this histogram.

    Each profile on a client is assigned a unique bucket, i.e. whenever a user
    action happens in a browser of profile x, an entry is recorded in bucket x.

    This histogram is used in the profile dashboard, see go/profile-metrics and
    go/profile-metrics-dashboard.

    Example: A user has 2 profiles and opens a browser window for each of them.
    When the user adds a new tab in each of the browsers, an entry is recorded
    in bucket 1 and 2, corresponding to the profiles. (Adding a new tab is a
    recorded user metrics action.)

    Note: The guest profile has bucket 0. Regular profiles start at bucket 1.
    Incognito profiles count towards the original profile.
  </summary>
</histogram>

<histogram name="Profile.ZombieProfileCount" units="profiles"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Number of Profiles that are in a &quot;zombie&quot; state. Recorded 30
    minutes after startup, and every 30 minutes afterwards. Only regular
    Profiles are considered for this metric (no Incognito, Guest, or System
    Profiles). A &quot;zombie&quot; profile is one of 2 things, depending on the
    DestroyProfileOnBrowserClose (DPoBC) variation:

    If DPoBC is false: the Profile has a refcount of 0, but is still loaded in
    memory.

    If DPoBC is false: the Profile object was destroyed, and isn't loaded in
    memory anymore.

    When a Profile is destroyed but gets loaded from disk again, it stops being
    a zombie.

    See also Profile.LiveProfileCount, the number of profiles with a non-zero
    refcount.
  </summary>
</histogram>

<histogram name="Profile.{Database}Size" units="MB" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Size of the {Database} database.

    These metrics were expired between July 2022 and June 2023 and may be
    missing data.
  </summary>
  <token key="Database">
    <variant name="Cookies"/>
    <variant name="Extension"/>
    <variant name="Favicons"/>
    <variant name="History"/>
    <variant name="TopSites"/>
    <variant name="TotalHistory"/>
    <variant name="VisitedLinks"/>
    <variant name="WebData"/>
  </token>
</histogram>

<histogram name="ProfileChooser.HasProfilesShown" enum="BooleanShown"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether any profile was shown in the list when the profile chooser was
    opened.
  </summary>
</histogram>

<histogram name="ProfilePicker.AskOnStartup" enum="BooleanEnabled"
    expires_after="2024-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the state of the &quot;Ask on startup&quot; user preference that
    controls whether the profile picker should be shown on startup. Recorded on
    startup of Chrome.
  </summary>
</histogram>

<histogram name="ProfilePicker.AskOnStartupChanged" enum="BooleanEnabled"
    expires_after="2023-04-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the state of the &quot;Ask on startup&quot; checkbox upon user
    action to check/uncheck &quot;Ask on startup&quot; in the profile picker
    main screen.
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstProfileTime.FirstWebContentsFinishReason"
    enum="StartupProfilingFinishReason" expires_after="2024-10-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    [Desktop] The reason for which profile picker startup profiling was deemed
    complete. Logged once per session when the user opens a profile from the
    profile picker shown on startup.

    Used to understand user behavior shifts when
    ProfilePicker.FirstProfileTime.FirstWebContentsNonEmptyPaint regresses
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstProfileTime.FirstWebContentsNonEmptyPaint"
    units="ms" expires_after="2024-10-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measure the elapsed time from when the user selects a profile on the startup
    profile picker to the first non empty paint of the first web contents. This
    is recorded when the user selects an existing profile from that profile
    picker shown on startup.

    Together with ProfilePicker.StartupTime.FirstPaint.FromApplicationStart,
    this metric is intended to capture the startup latency for a common case
    where Startup.FirstWebContents.NonEmptyPaint3 is not recorded due to the
    profile picker interrupting browser startup.
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstRun.DefaultBrowser"
    enum="FirstRunDefaultBrowserChoice" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the user's choice for the prompt asking if they want to set Chrome
    to be their default browser, in the first run experience.
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstRun.EntryPoint" enum="FirstRunEntryPoint"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the entry point that triggered the first run experience. This is
    recorded right before the first run is shown. If the FRE is skipped, this is
    never recorded. If the FRE is exited early and needs to be shown again
    (relevant only on Lacros where we support showing the FRE more than once),
    or if the user re-triggers the FRE while it is already shown, there would be
    more than one record for that install.
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstRun.ExitStatus" enum="FirstRunExitStatus"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the status when the first run experience is exited. Note that some
    experiments can override the behaviour at the end of the first run, based on
    the the status. This histogram is recorded before the override happens.
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstRun.FinishReason"
    enum="FirstRunFinishReason" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the first run experience was marked finished. This
    aims at tracking how often policies or some pre-existing state suppresses
    the first run experience. It is tracked by the first run service itself,
    when the flow completes (or is suppressed).
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstRun.OrganizationAvailableTiming" units="ms"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time between the first run of Chrome on Desktop is loaded and
    the organization name is available to be shown in the enterprise disclaimer.
    This is only logged if the device is managed and the policy store is loaded
    in the specified time delay.
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstRun.PolicyStoreState"
    enum="FirstRunCloudPolicyStoreState" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the loading state of the clould policy store when it is loaded or
    after a specified time delay. This is recorded for the first run experience
    on desktop for managed devices. This is needed to track if the managed
    organization name has been properly displayed in the first run experience
    managed disclaimer.
  </summary>
</histogram>

<histogram name="ProfilePicker.FirstRun.ServiceCreated" enum="BooleanCreated"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records first run service creations in this current profile. true is
    recorded if the service was successfully created, and false is recorded if
    it was suppressed because the feature is disabled. If this is not the first
    run or the profile is not able to display the first run experience, nothing
    will be recorded.
  </summary>
</histogram>

<histogram name="ProfilePicker.ReauthResult" enum="ProfilePickerReauthResult"
    expires_after="2024-05-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user is reauth-ing to unlock a Profile using the profile
    picker flows. Records successful and failed flows.
  </summary>
</histogram>

<histogram name="ProfilePicker.Shown" enum="ProfilePickerEntryPoint"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the profile picker has been shown to the user.
    Recorded every time the profile picker window is shown or reactivated.
  </summary>
</histogram>

<histogram name="ProfilePicker.StartupMode.{StartupStep}"
    enum="ProfilePickerStartupProfileMode" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The startup mode, used to decide whether the profile picker is shown at
    startup. Recorded during Chrome startup, at {StartupStep}.
  </summary>
  <token key="StartupStep">
    <variant name="CreateInitialProfile" summary="initial profile creation"/>
    <variant name="FallbackProfileUsed" summary="profile fallback"/>
    <variant name="GetStartupProfile" summary="the GetStartupProfile call"/>
    <variant name="NotificationCallback" summary="notification processing"/>
  </token>
</histogram>

<histogram name="ProfilePicker.StartupReason.{StartupStep}"
    enum="ProfilePickerStartupProfileReason" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The reason for the startup mode, used to decide whether the profile picker
    is shown at startup. Recorded during Chrome startup, at {StartupStep}.
  </summary>
  <token key="StartupStep">
    <variant name="GetStartupProfile" summary="the GetStartupProfile call"/>
    <variant name="NotificationCallback" summary="notification processing"/>
  </token>
</histogram>

<histogram name="ProfilePicker.StartupTime.BeforeCreation" units="ms"
    expires_after="2024-10-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time between Chrome startup and the call to
    ProfilePickerView::Display(). Only recorded when the profile picker is shown
    at startup.
  </summary>
</histogram>

<histogram name="ProfilePicker.StartupTime.FirstPaint" units="ms"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time between web view creation and the first paint. Only
    recorded when the profile picker is shown at startup.
  </summary>
</histogram>

<histogram name="ProfilePicker.StartupTime.FirstPaint.FromApplicationStart"
    units="ms" expires_after="2024-10-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time from the application start to the first non-empty paint of
    proflie picker's web contents. Only recorded when the profile picker is
    shown at startup.

    See Startup.FirstWebContents.NonEmptyPaint3 for a definition of application
    start.
  </summary>
</histogram>

<histogram name="ProfilePicker.StartupTime.MainViewInitialized" units="ms"
    expires_after="2024-10-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time between web view creation and main view being initialized
    in javascript. Only recorded when the profile picker is shown at startup.
  </summary>
</histogram>

<histogram name="ProfilePicker.StartupTime.WebViewCreated" units="ms"
    expires_after="2024-10-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time between ProfilePickerView::Display() is called and the web
    view creation. Only recorded when the profile picker is shown at startup.
  </summary>
</histogram>

<histogram name="ProfilePicker.UiVisited" enum="ProfilePickerPages"
    expires_after="2024-09-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Represents user navigation in the profile picker. Recorded every time a
    different UI is visible in the profile picker.
  </summary>
</histogram>

<histogram name="ProfilePicker.UserAction" enum="ProfilePickerAction"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the action performed by the user in the profile picker.
  </summary>
</histogram>

</histograms>

</histogram-configuration>