<!--
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 History histograms
along with a detailed description for each histogram.

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

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

<histogram-configuration>

<histograms>

<variants name="ClusteringRequestSource">
  <variant name="" summary="all requests"/>
  <variant name=".AllKeywordCacheRefresh"
      summary="only requests for the all-keyword-cache which occurs about
               once every 2 hours but can vary if e.g. the user isn't
               interacting with the omnibox"/>
  <variant name=".NewTabPage"
      summary="only requests for the Journeys module on load of the New Tab
               Page"/>
  <variant name=".ShortKeywordCacheRefresh"
      summary="only requests for the short-keyword cache which occurs up to
               once every 10 seconds but can vary if e.g. the user isn't
               interacting with the omnibox"/>
  <variant name=".WebUI"
      summary="only requests for the Journeys this WebUI within History or
               Side Panel, either query-less or query states, both on load
               and on scroll"/>
</variants>

<histogram name="History.AttemptedToFixProfileError" units="units"
    expires_after="2023-10-08">
  <owner>sky@chromium.org</owner>
  <owner>sdefresne@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Logged whenever history database initialization fails. The frequency of
    logging will tell you the total failure rate. True indicate that we think
    the database is non-recoverable and it will be deleted. It should be
    re-created the next time Chrome is started. False indicates we think the
    error is temporary (like out of disk space or file locked). Chrome will run
    with no history database and nothing will be done to try to fix the error.
    See History.InitializationFailureStep for which particular step of history
    initialization failed.
  </summary>
</histogram>

<histogram name="History.Backend.TransactionBeginError"
    enum="SqliteLoggedResultCode" expires_after="2023-10-01">
  <owner>tommycli@chromium.org</owner>
  <owner>asully@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The exact database error encountered when beginning a transaction, if it
    failed.
  </summary>
</histogram>

<histogram name="History.Backend.TransactionBeginSuccess" enum="BooleanSuccess"
    expires_after="2023-10-01">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded after attempting to begin a singleton transaction within
    HistoryBackend. Records whether it was successfully begun or not.
  </summary>
</histogram>

<histogram name="History.Backend.TransactionCommitError"
    enum="SqliteLoggedResultCode" expires_after="2023-10-01">
  <owner>tommycli@chromium.org</owner>
  <owner>asully@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The exact database error encountered when committing a transaction, if it
    failed.
  </summary>
</histogram>

<histogram name="History.Backend.TransactionCommitSuccess"
    enum="BooleanSuccess" expires_after="2023-10-01">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded after attempting to commit a singleton transaction within
    HistoryBackend. Records whether it was successfully committed or not.
  </summary>
</histogram>

<histogram name="History.BrowsingDataLifetime.Duration.BrowserShutdownDeletion"
    units="ms" expires_after="2023-10-01">
  <owner>ydago@chromium.org</owner>
  <owner>dullweber@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The time that passed while performing a browsing data deletion using the
    ClearBrowsingDataOnExitList policy. The deletion will be for all time.
  </summary>
</histogram>

<histogram
    name="History.BrowsingDataLifetime.Duration.Scheduled{DeletionType}Deletion"
    units="ms" expires_after="2023-10-01">
  <owner>ydago@chromium.org</owner>
  <owner>dullweber@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The time that passed while performing a scheduled data deletion using the
    BrowsingDataSettings policy. The deletion will be for a specific hourly time
    range, the data types being deleted are {DeletionType}.
  </summary>
  <token key="DeletionType">
    <variant name="Filterable" summary="filterable"/>
    <variant name="Unfilterable" summary="unfilterable"/>
  </token>
</histogram>

<histogram name="History.BrowsingDataLifetime.State.BrowserShutdownDeletion"
    enum="BooleanStartedCompleted" expires_after="2023-10-01">
  <owner>ydago@chromium.org</owner>
  <owner>dullweber@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>The states in which a deletion on shutdown went through.</summary>
</histogram>

<histogram
    name="History.BrowsingDataLifetime.State.Scheduled{DeletionType}Deletion"
    enum="BooleanStartedCompleted" expires_after="2023-10-01">
  <owner>ydago@chromium.org</owner>
  <owner>dullweber@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The states in which a scheduled deletion of {DeletionType} browsing data
    went through.
  </summary>
  <token key="DeletionType">
    <variant name="Filterable" summary="filterable"/>
    <variant name="Unfilterable" summary="unfilterable"/>
  </token>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.ChromeTask.{Task}"
    units="ms" expires_after="2023-07-01">
  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Records the duration of a ChromeBrowsingDataRemoverDelegate task for {Task}
    deletion.
  </summary>
  <token key="Task">
    <variant name="AccountCompromisedCredentials"
        summary="AccountCompromisedCredentials"/>
    <variant name="AccountPasswords" summary="AccountPasswords"/>
    <variant name="AccountPasswordsSynced" summary="AccountPasswordsSynced"/>
    <variant name="AutofillData" summary="AutofillData"/>
    <variant name="AutofillOrigins" summary="AutofillOrigins"/>
    <variant name="CdmLicenses" summary="CdmLicenses"/>
    <variant name="CompromisedCredentials" summary="CompromisedCredentials"/>
    <variant name="Cookies" summary="Cookies"/>
    <variant name="DisableAutoSignin" summary="DisableAutoSignin"/>
    <variant name="DomainReliability" summary="DomainReliability"/>
    <variant name="ExploreSites" summary="ExploreSites"/>
    <variant name="FaviconCacheExpiration" summary="FaviconCacheExpiration"/>
    <variant name="FieldInfo" summary="FieldInfo"/>
    <variant name="FlashDeauthorization" summary="FlashDeauthorization"/>
    <variant name="History" summary="History"/>
    <variant name="HostCache" summary="HostCache"/>
    <variant name="HostNameResolution" summary="HostNameResolution"/>
    <variant name="HttpAuthCache" summary="HttpAuthCache"/>
    <variant name="KeywordsModel" summary="KeywordsModel"/>
    <variant name="LegacyStrikes" summary="LegacyStrikes"/>
    <variant name="MediaFeeds" summary="MediaFeeds"/>
    <variant name="NaclCache" summary="NaclCache"/>
    <variant name="NetworkErrorLogging" summary="NetworkErrorLogging"/>
    <variant name="NetworkPredictor" summary="NetworkPredictor"/>
    <variant name="OfflinePages" summary="OfflinePages"/>
    <variant name="Passwords" summary="Passwords"/>
    <variant name="PasswordsStatistics" summary="PasswordsStatistics"/>
    <variant name="PluginData" summary="PluginData"/>
    <variant name="PnaclCache" summary="PnaclCache"/>
    <variant name="ReportingCache" summary="ReportingCache"/>
    <variant name="SecurePaymentConfirmationCredentials"
        summary="SecurePaymentConfirmationCredentials"/>
    <variant name="Strikes" summary="Strikes"/>
    <variant name="Synchronous" summary="Synchronous"/>
    <variant name="TpmAttestationKeys" summary="TpmAttestationKeys"/>
    <variant name="UserDataSnapshot" summary="UserDataSnapshot"/>
    <variant name="VideoDecodeHistory" summary="VideoDecodeHistory"/>
    <variant name="WebAppHistory" summary="WebAppHistory"/>
    <variant name="WebAuthnCredentials" summary="WebAuthnCredentials"/>
    <variant name="WebrtcEventLogs" summary="WebrtcEventLogs"/>
    <variant name="WebrtcLogs" summary="WebrtcLogs"/>
  </token>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.FilteredDeletion"
    units="ms" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The time that passed while performing a browsing data deletion with an
    origin filter. The deletion might be for all time or specific time range.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.FullDeletion" units="ms"
    expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The time that passed while performing a full browsing data deletion.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.OriginDeletion" units="ms"
    expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The time that passed while performing a browsing data deletion for a set of
    origins.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.SlowTasks180s"
    enum="BrowsingDataRemoverTasks" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Record tasks from BrowsingDataRemoverImpl that took more than 180s to
    finish.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.SlowTasks180sChrome"
    enum="ChromeBrowsingDataRemoverTasks" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Record tasks from ChromeBrowsingDataRemoverDelegate that took more than 180s
    to finish.
  </summary>
</histogram>

<histogram
    name="History.ClearBrowsingData.Duration.SlowTasks180sStoragePartition"
    enum="StoragePartitionRemoverTasks" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Record tasks from StoragePartition that took more than 180s to finish.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.Task.{Task}" units="ms"
    expires_after="2023-07-01">
  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Records the duration of a BrowsingDataRemoverImpl task for {Task} deletion.
  </summary>
  <token key="Task">
    <variant name="AuthCache" summary="AuthCache"/>
    <variant name="ChannelIds" summary="ChannelIds"/>
    <variant name="CodeCaches" summary="CodeCaches"/>
    <variant name="Conversions" summary="Conversions"/>
    <variant name="DeferredCookies" summary="DeferredCookies"/>
    <variant name="EmbedderData" summary="EmbedderData"/>
    <variant name="HttpAndMediaCaches" summary="HttpAndMediaCaches"/>
    <variant name="HttpCache" summary="HttpCache"/>
    <variant name="NetworkErrorLogging" summary="NetworkErrorLogging"/>
    <variant name="NetworkHistory" summary="NetworkHistory"/>
    <variant name="ReportingCache" summary="ReportingCache"/>
    <variant name="SharedStorage" summary="SharedStorage"/>
    <variant name="StoragePartition" summary="StoragePartition"/>
    <variant name="Synchronous" summary="Synchronous"/>
    <variant name="TrustTokens" summary="TrustTokens"/>
  </token>
</histogram>

<histogram name="History.ClearBrowsingData.Duration.TimeRangeDeletion"
    units="ms" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The time that passed while performing a browsing data deletion for a
    restricted amount of time (e.g. &quot;Last hour&quot;) without an origin
    filter.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.FailedTasksChrome"
    enum="ChromeBrowsingDataRemoverTasks" expires_after="2022-09-25">
  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Records tasks from ChromeBrowsingDataRemoverDelegate that did not complete
    successfully, i.e. where some data that was supposed to be deleted was left
    behind.
  </summary>
</histogram>

<histogram
    name="History.ClearBrowsingData.HistoryNoticeShownInFooterWhenUpdated"
    enum="BooleanShown" expires_after="M81">
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Whether a notice about other forms of browsing history was shown in the
    footer of the Clear Browsing Data dialog. This is recorded every time the
    dialog is opened.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.ImportantDeselectedNum"
    units="units" expires_after="M95">
  <owner>dmurph@chromium.org</owner>
  <owner>chrome-owp-storage@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when the user presses the 'clear' button when presented with the
    list of important sites they might want to exclude from clearing browsing
    data. We record the number of sites the user deselected, or protected, from
    clearing. The default has all sites selected.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.ImportantDeselectedPercent"
    units="%/5" expires_after="M95">
  <owner>dmurph@chromium.org</owner>
  <owner>chrome-owp-storage@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when the user presses the 'clear' button when presented with the
    list of important sites they might want to exclude from clearing browsing
    data. We record the percent of sites the user deselected, or protected, from
    clearing. The default has all sites selected, which is 0%. Note: To reduce
    the number of empty buckets, the percent is divided by 5.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.ImportantDialogShown"
    enum="BooleanShown" expires_after="M95">
  <owner>dmurph@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when the user presses the 'clear' button in the clear browsing
    dialog. We record 'true' if the important sites dialog is shown.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.NumImportant" units="units"
    expires_after="M95">
  <owner>dmurph@chromium.org</owner>
  <owner>chrome-owp-storage@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when we successfully fetched important sites in the clear browsing
    data screen. This is the number of sites that we think are important to the
    user.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.NumInstalled" units="units"
    expires_after="M95">
  <owner>jarrydg@chromium.org</owner>
  <owner>chrome-owp-storage@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when we successfully fetched installed apps in the clear browsing
    data screen. This is the number of apps that we think are important to the
    user and allow the users to exclude from clearing browsing data.
  </summary>
</histogram>

<histogram
    name="History.ClearBrowsingData.PasswordsDeletion.AdditionalDatatypesCount"
    units="units" expires_after="M85">
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when the user deletes their passwords in the ClearBrowsingData
    dialog. Counts how many other data types were selected for deletion.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.ShownHistoryNoticeAfterClearing"
    enum="BooleanShown" expires_after="M81">
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Whether a dialog with a notice about other forms of browsing history was
    shown after the user deleted data from the Clear Browsing Data dialog.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.TaskQueueAtShutdown" units="units"
    expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The number of tasks that are in the task queue when the BrowsingDataRemover
    is destroyed.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.UserDeletedCookieOrCache"
    enum="CookieOrCacheDeletion" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when the user deletes their browsing data. Shows whether cookies
    and/or cache were among the selected data types.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.UserDeletedCookieOrCacheFromDialog"
    enum="CookieOrCacheDeletion" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when the user deletes their browsing data manually from the
    ClearBrowsingData dialog. Shows whether cookies and/or cache were among the
    selected data types.
  </summary>
</histogram>

<histogram name="History.ClearBrowsingData.UserDeletedFromTab"
    enum="ClearBrowsingDataTab" expires_after="2023-09-03">
  <owner>dullweber@chromium.org</owner>
  <owner>msramek@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Recorded when the user deletes their browsing data. Shows which tab was used
    to perform the deletion.
  </summary>
</histogram>

<histogram name="History.Clusters.Actions.DidMakeQuery" enum="BooleanQueried"
    expires_after="2023-08-27">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logged when the user closes the chrome://history/journeys page (e.g. closed
    tab, navigated in the same tab, or closed browser). Logs whether the user
    made a query on their history from the journeys page.
  </summary>
</histogram>

<histogram name="History.Clusters.Actions.FinalState"
    enum="HistoryClustersFinalState" expires_after="2022-05-27">
  <obsolete>
    Removed as of 05/2022 in favor of
    History.Clusters.Actions.FinalState.Outcome
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logged when the user closes the chrome://history/journeys page (e.g. closed
    tab, navigated in the same tab, or closed browser). Logs the final state
    that ended the use of the journeys page (e.g., a link click away from the
    page).

    Navigating back/forward aren't distinguished. E.g., if doing so leads to the
    traditional history UI, a same doc navigation will be recorded; if doing so
    leads to a different site, a link click will be recorded.

    Before m100, tab refresh and same doc navigations were also not
    distinguished and would record tab close.
  </summary>
</histogram>

<histogram name="History.Clusters.Actions.FinalState.Number{Event}"
    units="count" expires_after="2023-10-01">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logged when the user closes the chrome://history/journeys page (e.g. closed
    tab, navigated in the same tab, or closed browser). Logs the number of
    {Event} over the period of a single visit to the Journeys UI.
  </summary>
  <token key="Event">
    <variant name="ClustersDeleted" summary="cluster deletions"/>
    <variant name="IndividualVisitsDeleted"
        summary="single/individual visits deleted"/>
    <variant name="LinksOpened" summary="links opened"/>
    <variant name="RelatedSearchesClicked"
        summary="related search links opened"/>
    <variant name="TogglesToBasicHistory"
        summary="Toggles to from basic history UI"/>
    <variant name="VisibilityToggles" summary="Journeys UI toggles on/off"/>
  </token>
</histogram>

<histogram name="History.Clusters.Actions.FinalState.WasSuccessful"
    enum="BooleanSuccess" expires_after="2023-10-08">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logged when the user closes the chrome://history/journeys page (e.g., closed
    tab, navigated in the same tab, or closed browser). Logs whether the users
    interaction with the UI was deemed successful or not. Success is defined as
    a link was clicked, a cluster was opened, or a deletion event occurred.
  </summary>
</histogram>

<histogram name="History.Clusters.Actions.InitialState"
    enum="HistoryClustersInitialState" expires_after="2023-10-08">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logged when the user closes the chrome://history/journeys page (e.g. closed
    tab, navigated in the same tab, or closed browser). Logs the state that
    started the use of the journeys page (e.g., a direct navigation to journeys
    page).
  </summary>
</histogram>

<histogram name="History.Clusters.Actions.LinksOpened" units="links opened"
    expires_after="2023-10-01">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logged when the user closed the chrome://history/journeys page (e.g. closed
    tab, navigated in the same tab, or closed browser). Logs the # of links
    opened from the journeys page.
  </summary>
</histogram>

<histogram name="History.Clusters.Actions.NumQueries"
    units="number queries made" expires_after="2023-10-08">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logged when the user closes the chrome://history/journeys page (e.g. closed
    tab, navigated in the same tab, or closed browser). Logs the number of
    queries the user made while on the journeys page, only logged if at least
    one query was made.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.BatchEntityLookupLatency" units="ms"
    expires_after="2022-07-17">
  <obsolete>
    Deprecated for History.Clusters.Backend.BatchEntityLookupLatency2 in
    02/20222.
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the latency of querying entities for all the visits being clustered by
    the on-device backend. Logged when clusters have been calculated based on
    any request to cluster visits, which could be triggered from several things,
    including loading the journeys UI, putting a query in the journeys page,
    etc..
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.BatchEntityLookupLatency2" units="ms"
    expires_after="2023-10-08">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the latency of querying entities for all the visits being clustered by
    the on-device backend. Logged when clusters have been calculated based on
    any request to cluster visits, which could be triggered from several things,
    including loading the journeys UI, putting a query in the journeys page,
    etc..
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.BatchEntityLookupSize" units="count"
    expires_after="2023-10-08">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of entities to be queried for their metadata when preparing
    to start clustering. The number of entities is the size of the entire batch
    which is over all visits provided to the backend for clustering. Logged when
    clusters are requested based on any request to cluster visits, which could
    be triggered from several things, including loading the journeys UI, putting
    a query in the journeys page, etc..
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ClusterContainsSearch"
    enum="BooleanContained" expires_after="2022-12-01">
  <obsolete>
    Obsolete in 12/22
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs whether each cluster contains a search after it has been finalized.
    Logged for each cluster that is generated when clusters are created for the
    purposes of keyword generation to show in the Omnibox, roughly once at the
    start of each session and every two hours after that.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ClusterFinalizers.ThreadTime"
    units="ms" expires_after="2023-06-04">
  <obsolete>
    Obsolete as of 12/2022.
  </obsolete>
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to run all cluster finalizers during a clustering pass,
    which is performed on a background worker. This does not include any thread
    hop or queuing delay. Logged when clusters have been calculated based on any
    request to cluster visits, which could be triggered from several things,
    including loading the journeys UI, putting a query in the journeys page,
    etc...
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ClusterProcessors.ThreadTime"
    units="ms" expires_after="2023-06-04">
  <obsolete>
    Obsolete as of 12/2022.
  </obsolete>
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to run all cluster processors during a clustering pass,
    which is performed on a background worker. This does not include any thread
    hop or queuing delay. Logged when clusters have been calculated based on any
    request to cluster visits, which could be triggered from several things,
    including loading the journeys UI, putting a query in the journeys page,
    etc. This is a segment within
    `History.Clusters.Backend.ComputeClusters.ThreadTime`.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ClusterSize.{ClusterStatistic}"
    units="number visits" expires_after="2022-12-01">
  <obsolete>
    Obsolete in 12/22
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the {ClusterStatistic} of all clusters determined by the on-device
    backend. Logged when clusters have been calculated based on any request to
    cluster visits, which could be triggered from several things, including
    loading the
  </summary>
  <token key="ClusterStatistic">
    <variant name="Max" summary="maximum cluster size"/>
    <variant name="Min" summary="minimum cluster size"/>
  </token>
</histogram>

<histogram name="History.Clusters.Backend.ComputeClusters.ThreadTime"
    units="ms" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to cluster visits once the visits have been finalized
    with all the necessary information for clustering, which is performed on a
    background worker. This does not include any thread hop or queuing delay.
    Logged when clusters have been calculated based on any request to cluster
    visits, which could be triggered from several things, including loading the
    journeys UI, putting a query in the journeys page, etc.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ComputeClustersForUI.ThreadTime"
    units="ms" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to determine how clusters should be displayed once the
    initial context clusters have been formed, which is performed on a
    background worker. This does not include any thread hop or queuing delay.
    Logged when clusters have been calculated based on any request to cluster
    visits, which could be triggered from several things, including loading the
    journeys UI, putting a query in the journeys page, etc. This is a segment
    within `History.Clusters.Backend.ComputeClusters.ThreadTime`.
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.ComputeClusterTriggerability.ThreadTime"
    units="ms" expires_after="2022-12-29">
  <obsolete>
    Obsolete as of 12/2022.
  </obsolete>
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to run the steps during a clustering pass that are
    required for determinining the triggerability for a cluster, which is
    performed on a background worker. This does not include any thread hop or
    queuing delay. Logged once per resulting cluster when clusters have been
    calculated based on any clustering request, which could be triggered from
    several things, including loading the journeys UI, putting a query in the
    journeys page, etc. This is a segment within
    `History.Clusters.Backend.ComputeClusters.ThreadTime`.
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.ComputeClusterTriggerability2.ThreadTime"
    units="ms" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to run the steps during a clustering pass that are
    required for determinining the triggerability for a cluster, which is
    performed on a background worker. This does not include any thread hop or
    queuing delay. Logged when clusters have been calculated based on any
    request to cluster visits, which could be triggered from several things,
    including loading the journeys UI, putting a query in the journeys page,
    etc. This is a segment within
    `History.Clusters.Backend.ComputeClusters.ThreadTime`.
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.ContentClustering.NumClustersAfterMerge"
    units="counts" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the number of clusters after merging similar clusters based on
    content. Logged when clusters have been calculated based on any request to
    cluster visits, which could be triggered from several things, including
    loading the journeys UI, putting a query in the journeys page, etc...
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.ContentClustering.NumClustersBeforeMerge"
    units="counts" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the number of clusters before merging similar clusters based on
    content. Logged when clusters have been calculated based on any request to
    cluster visits, which could be triggered from several things, including
    loading the journeys UI, putting a query in the journeys page, etc...
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.ContentClustering.PairwiseMergeNumIterations"
    units="counts" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the number of iterations it took for a batch of clusters to converge
    during a pairwise merge of similar clusters based on content, up to a
    Finch-configured maximum. Logged when clusters have been calculated based on
    any request to cluster visits, which could be triggered from several things,
    including loading the journeys UI, putting a query in the journeys page,
    etc...
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ContextClusterer.ThreadTime"
    units="ms" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to run the initial context clustering pass, which is
    performed on a background worker. This does not include any thread hop or
    queuing delay. Logged when clusters have been calculated based on any
    request to cluster visits, which could be triggered from several things,
    including loading the journeys UI, putting a query in the journeys page,
    etc. This is a segment within
    `History.Clusters.Backend.ComputeClusters.ThreadTime`.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.EntityIdGathering.ThreadTime"
    units="ms" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to gather all entity IDs that require fetching
    additional metadata for, which is performed on the UI thread. This does not
    include any thread hop or queuing delay. Logged when clusters have been
    calculated based on any request to cluster visits, which could be triggered
    from several things, including loading the journeys UI, putting a query in
    the journeys page, etc...
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.FilterClusterProcessor.ClusterFilterReason{Source}"
    enum="ClusterFilterReason" expires_after="2023-08-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the reason why a cluster was filtered out of the return set for each
    cluster provided to the clustering backend when invoked by {Source}. Note
    that a single cluster can log multiple values in this metric if it is
    ineligible for multiple reasons.
  </summary>
  <token key="Source" variants="ClusteringRequestSource"/>
</histogram>

<histogram
    name="History.Clusters.Backend.FilterClusterProcessor.NumClusters.{Segment}{Source}"
    units="counts" expires_after="2023-08-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of clusters {Segment} each time {Source} invokes the
    clustering backend with a functional filtering configuration. Note that the
    max count is limited to the size of the initial batch sent to the clustering
    backend.
  </summary>
  <token key="Segment">
    <variant name="PostFilter" summary="after applying the filtering criteria"/>
    <variant name="PreFilter" summary="before applying the filtering criteria"/>
  </token>
  <token key="Source" variants="ClusteringRequestSource"/>
</histogram>

<histogram
    name="History.Clusters.Backend.GetMostRecentClusters.{Segment}{Source}"
    units="ms" expires_after="2023-10-01">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Near startup and every 1 hour afterwards, unclustered visits are clustered,
    and the clusters are persisted in the history DB.

    As needed, both fresh and persisted clusters are fetched. Clusters are
    fetched for: a) displaying on the Journeys WebUI and b) generating keyword
    caches to match with omnibox inputs and show journey chips or suggestions in
    the omnibox.

    This histogram records the latency breakdown for fetching both fresh and
    persisted clusters. See the similar
    'History.Clusters.Backend.UpdateClusters.*' histograms for the latency
    breakdown for updating clusters.

    Recorded for every batch of fetched clusters; can be recorded more than once
    per Journey WebUI load or keyword cache generations

    This slice records the time between the main thread requesting and receiving
    {Segment}. Records {Source}.
  </summary>
  <token key="Segment">
    <variant name="ComputeClustersLatency" summary="clusters from the model"/>
    <variant name="GetAnnotatedVisitsToClusterLatency"
        summary="annotated visits to cluster (which can include clustered,
                 unclustered, incomplete, and complete visits)"/>
    <variant name="GetMostRecentPersistedClustersLatency"
        summary="persisted clusters from the history DB"/>
  </token>
  <token key="Source" variants="ClusteringRequestSource"/>
</histogram>

<histogram
    name="History.Clusters.Backend.GetMostRecentClustersForUI.{Segment}{Source}"
    units="ms" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    On navigation, context clusters are created, grown, and persisted.

    On startup and every 1 hour afterwards, these context clusters have their
    triggability calculated. Context clusters older than 2 hours are not updated
    are not re-updated after the initial triggability is calculated. However, if
    there are unclustered visits (due to visits from before the user had context
    clustering enabled or synced visits without a cluster ID), they will also be
    context clustered with their triggerability calculated as well.

    When a user visits the Journeys WebUI, persisted clusters (both those with
    and without triggerability calculated) are fetched. Clusters are then
    augmented with appropriate metadata needed for displaying on the Journeys
    WebUI (e.g. ranking, deduping, labeling).

    When the keyword cache used to match omnibox inputs and show journey chips
    or suggestions in the omnibox needs updating, context clusters (both those
    with and without triggerability calculated) are fetched.

    This histogram records the latency breakdown for each step of getting
    clusters for the webUI. It does not cover getting clusters for the keyword
    cache.

    Recorded for every batch of fetched clusters; can be recorded more than once
    per Journey WebUI load.

    This slice records the time between the main thread requesting and receiving
    {Segment}. Records {Source}.
  </summary>
  <token key="Segment">
    <variant name="ComputeClustersForUILatency"
        summary="UI-augmented clusters from the model"/>
    <variant name="GetMostRecentPersistedClustersLatency"
        summary="persisted raw context clusters from the history DB"/>
  </token>
  <token key="Source" variants="ClusteringRequestSource"/>
</histogram>

<histogram name="History.Clusters.Backend.KeywordCache.AllKeywordPhraseCount"
    units="count" expires_after="2022-04-06">
  <obsolete>
    Deprecated 04/2022 because we no longer break keywords apart before storing
    in the cache.
  </obsolete>
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of keyword phrases stored in the primary cache.

    Each cluster can have multiple keyword phrases; each phrase consists of 1 or
    more words.

    Logged each time the primary cache is refreshed, i.e. on omnibox key stroke
    limited to at most once every 2 hours, though clearing history items will
    reset the cache timer.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.KeywordCache.AllKeywordsCount"
    units="count" expires_after="2023-10-08">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of keywords stored in the primary cache. Each keyword may
    actually be multiple words.

    Logged each time the primary cache is refreshed, i.e. on omnibox key stroke
    limited to at most once every 2 hours, though clearing history items will
    reset the cache timer.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.KeywordCache.ShortKeywordPhraseCount"
    units="count" expires_after="2022-04-06">
  <obsolete>
    Deprecated 04/2022 because we no longer break keywords apart before storing
    in the cache.
  </obsolete>
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of keywords stored in the short cache.

    Each cluster can have multiple keyword phrases; each phrase consists of 1 or
    more words.

    Logged each time the short cache is refreshed, i.e. on omnibox key stroke if
    the primary cache is not stale and limited to at most once every 10 seconds.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.KeywordCache.ShortKeywordsCount"
    units="count" expires_after="2023-10-08">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of keyword stored in the short cache. Each keyword may
    actually be multiple words.

    Each cluster can have multiple keyword phrases; each phrase consists of 1 or
    more words.

    Logged each time the short cache is refreshed, i.e. on omnibox key stroke if
    the primary cache is not stale and limited to at most once every 10 seconds.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.NumBatchesProcessedForVisits"
    units="number of batches" expires_after="2022-05-11">
  <obsolete>
    Obsolete as of 05/2022.
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of batches used to process visits. Logged once per request
    for clusters to be calculated based on any request to cluster visits, which
    could be triggered from several things, including loading the journeys UI,
    putting a query in the journeys page, etc..
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.NumClustersReturned"
    units="number clusters returned" expires_after="2023-10-08">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the total number of clusters returned for requested visits. Logged when
    clusters have been calculated based on any request to cluster visits, which
    could be triggered from several things, including loading the journeys UI,
    putting a query in the journeys page, etc..
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.NumKeywordsPerCluster"
    units="number keywords" expires_after="2022-12-01">
  <obsolete>
    Obsolete in 12/22
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of keywords associated with each cluster after it has been
    finalized. Logged for each cluster that is generated when clusters are
    created for the purposes of keyword generation to show in the Omnibox,
    roughly once at the start of each session and every two hours after that.
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.NumKeywordsPerCluster.{KeywordStatistic}"
    units="number keywords" expires_after="2022-12-01">
  <obsolete>
    Obsolete in 12/22
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the {KeywordStatistic} over all clusters determined by the on-device
    backend. Logged when clusters have been calculated based on any request to
    cluster visits, which could be triggered from several things, including
    loading the journeys UI, putting a query in the journeys page, etc..
  </summary>
  <token key="KeywordStatistic">
    <variant name="Max" summary="maximum keywords"/>
    <variant name="Min" summary="minimum keywords"/>
  </token>
</histogram>

<histogram name="History.Clusters.Backend.NumVisitsPerCluster"
    units="number visits" expires_after="2022-12-01">
  <obsolete>
    Obsolete in 12/22
  </obsolete>
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of visits contained in each cluster after it has been
    finalized. Logged for each cluster that is generated when clusters are
    created for the purposes of keyword generation to show in the Omnibox,
    roughly once at the start of each session and every two hours after that.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.NumVisitsToCluster"
    units="number visits" expires_after="2023-10-08">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the total number of visits requested to be clustered by the backend.
    Logged when any request to cluster visits is made, which could be triggered
    from several things, including loading the journeys UI, putting a query in
    the journeys page, etc..
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ProcessBatchOfVisits.BatchSize"
    units="number visits" expires_after="2022-05-11">
  <obsolete>
    Obsolete as of 05/2022.
  </obsolete>
  <owner>tbansal@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the number of visits that were processed on the UI thread in a batch.
    Can be logged multiple times when a request to cluster visits is made, which
    could be triggered from several things, including loading the journeys UI,
    putting a query in the journeys page, etc... depending on how many visits
    were sent to the backend to cluster.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.ProcessBatchOfVisits.ThreadTime"
    units="ms" expires_after="2023-10-08">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs the time taken to process a batch of visits (joining existing History
    visit metadata with any additional Search, engagement, content metadata) and
    is performed on the UI thread. This does not include any thread hop or
    queuing delay. Can be logged multiple times when a request to cluster visits
    is made, which could be triggered from several things, including loading the
    journeys UI, putting a query in the journeys page, etc... depending on how
    many visits were sent to the backend to cluster.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.QueryAnnotatedVisits.ThreadTime"
    units="ms" expires_after="2023-10-22">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    This histogram records the time taken (excluding queuing delay) to retrieve
    visits from the History database, which occurs on the History DB thread.
    Logged once per request to cluster visits is made, which could be triggered
    from several things, including loading the journeys UI, putting a query in
    the journeys page, etc.
  </summary>
</histogram>

<histogram name="History.Clusters.Backend.UpdateClusters.Counts.{Segment}"
    units="count" expires_after="2023-10-01">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Near startup and every 1 hour afterwards, unclustered visits are clustered,
    and the clusters are persisted in the history DB.

    As needed, both fresh and persisted clusters are fetched. Clusters are
    fetched for: a) displaying on the Journeys WebUI and b) generating keyword
    caches to match with omnibox inputs and show journey chips or suggestions in
    the omnibox.

    Each update consists of multiple batches of 1-3 days. The number of batches
    depends on how long ago the last update occurred, which could have been 0-90
    days ago.

    Recorded for every batch of visits clustered; can be recorded more than once
    every hour.

    {Segment}
  </summary>
  <token key="Segment">
    <variant name="NumClustersReplaced"
        summary="This slice records the number of clusters included in the
                 visits and therefore replaced from the DB. Not recorded if
                 there were 0 visits. Recorded even if there were 0 model
                 clusters or 0 replaced clusters."/>
    <variant name="NumClustersReturned"
        summary="This slice records the number of clusters returned from the
                 cluster model. Not recorded if there were 0 visits. Recorded
                 een if there were 0 clusters."/>
    <variant name="NumVisitsToCluster"
        summary="This slice records the number of visits returned and sent to
                 the cluster model. Recorded even if there were 0 visits."/>
  </token>
</histogram>

<histogram name="History.Clusters.Backend.UpdateClusters.{Segment}" units="ms"
    expires_after="2023-10-01">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Near startup and every 1 hour afterwards, unclustered visits are clustered,
    and the clusters are persisted in the history DB.

    As needed, both fresh and persisted clusters are fetched. Clusters are
    fetched for: a) displaying on the Journeys WebUI and b) generating keyword
    caches to match with omnibox inputs and show journey chips or suggestions in
    the omnibox.

    This histogram records the latency breakdown for updating clusters. See the
    similar 'History.Clusters.Backend.GetMostRecentClusters.*' histograms for
    the latency breakdown for fetching clusters.

    Recorded for every batch of visits clustered; can be recorded more than once
    every hour.

    This slice records the time between the main thread requesting and
    {Segment}.
  </summary>
  <token key="Segment">
    <variant name="ComputeClustersLatency"
        summary="receiving clusters from the model"/>
    <variant name="GetAnnotatedVisitsToClusterLatency"
        summary="receiving annotated visits to cluster (which can include
                 clustered, unclustered, incomplete, and complete visits)"/>
    <variant name="PersistClustersLatency"
        summary="receiving acknowledgement for completion of persisting the
                 clusters to the history DB"/>
    <variant name="Total"
        summary="the main thread being notified that the work was completed"/>
  </token>
</histogram>

<histogram
    name="History.Clusters.Backend.UpdateClusterTriggerability.DidUpdateClusterTriggerability{Segment}"
    enum="Boolean" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    On navigation, context clusters are created, grown, and persisted.

    On startup and every 1 hour afterwards, these context clusters have their
    triggability calculated. Context clusters older than 2 hours are not updated
    are not re-updated after the initial triggability is calculated. However, if
    there are unclustered visits (due to visits from before the user had context
    clustering enabled or synced visits without a cluster ID), they will also be
    context clustered with their triggerability calculated as well.

    When a user visits the Journeys WebUI, persisted clusters (both those with
    and without triggerability calculated) are fetched. Clusters are then
    augmented with appropriate metadata needed for displaying on the Journeys
    WebUI (e.g. ranking, deduping, labeling).

    When the keyword cache used to match omnibox inputs and show journey chips
    or suggestions in the omnibox needs updating, context clusters (both those
    with and without triggerability calculated) are fetched.

    This histogram records whether there was at least one cluster's
    triggerability was updated {Segment}.

    Recorded for every batch of clusters to be updated; can be recorded more
    than once every hour (Finch-configurable).
  </summary>
  <token key="Segment">
    <variant name="" summary="during a run of the task"/>
    <variant name=".AfterFilteredClustersEmpty"
        summary="after a call to fetch persisted clusters returned only
                 clusters that have all had their triggerability calculated
                 already"/>
  </token>
</histogram>

<histogram
    name="History.Clusters.Backend.UpdateClusterTriggerability.HadUnclusteredVisitsToCluster"
    enum="Boolean" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    On navigation, context clusters are created, grown, and persisted.

    On startup and every 1 hour afterwards, these context clusters have their
    triggability calculated. Context clusters older than 2 hours are not updated
    are not re-updated after the initial triggability is calculated. However, if
    there are unclustered visits (due to visits from before the user had context
    clustering enabled or synced visits without a cluster ID), they will also be
    context clustered with their triggerability calculated as well.

    When a user visits the Journeys WebUI, persisted clusters (both those with
    and without triggerability calculated) are fetched. Clusters are then
    augmented with appropriate metadata needed for displaying on the Journeys
    WebUI (e.g. ranking, deduping, labeling).

    When the keyword cache used to match omnibox inputs and show journey chips
    or suggestions in the omnibox needs updating, context clusters (both those
    with and without triggerability calculated) are fetched.

    This histogram records whether there were unclustered visits left to cluster
    in the first run of this task. When this trends to all false, this
    additional step can get deleted.

    Recorded for every batch of clusters to be updated; can be recorded more
    than once every hour.
  </summary>
</histogram>

<histogram
    name="History.Clusters.Backend.UpdateClusterTriggerability.{Segment}"
    units="ms" expires_after="2023-10-01">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    On navigation, context clusters are created, grown, and persisted.

    On startup and every 1 hour afterwards, these context clusters have their
    triggability calculated. Context clusters older than 2 hours are not updated
    are not re-updated after the initial triggability is calculated. However, if
    there are unclustered visits (due to visits from before the user had context
    clustering enabled or synced visits without a cluster ID), they will also be
    context clustered with their triggerability calculated as well.

    When a user visits the Journeys WebUI, persisted clusters (both those with
    and without triggerability calculated) are fetched. Clusters are then
    augmented with appropriate metadata needed for displaying on the Journeys
    WebUI (e.g. ranking, deduping, labeling).

    When the keyword cache used to match omnibox inputs and show journey chips
    or suggestions in the omnibox needs updating, context clusters (both those
    with and without triggerability calculated) are fetched.

    This histogram records the latency breakdown for updating cluster
    triggerability.

    Recorded for every batch of clusters to be updated; can be recorded more
    than once every hour.

    This slice records the time between the main thread requesting and
    {Segment}.
  </summary>
  <token key="Segment">
    <variant name="ComputeClusterTriggerabilityLatency"
        summary="receiving cluster triggerability metadata from the model"/>
    <variant name="ComputeContextClustersLatency"
        summary="receiving context clusters from unclustered visits from the
                 model"/>
    <variant name="GetAnnotatedVisitsToClusterLatency"
        summary="receiving persisted unclustered visits to compute context
                 clusters for for"/>
    <variant name="GetMostRecentPersistedClustersLatency"
        summary="receiving persisted clusters to compute cluster
                 triggerability metadata for"/>
    <variant name="PersistClusterTriggerabilityLatency"
        summary="receiving acknowledgement for completion of persisting the
                 cluster triggerability metadata to the history DB"/>
    <variant name="PersistContextClustersLatency"
        summary="receiving acknowledgement for completion of persisting the
                 context clusters formed from unclustered visits to the
                 history DB"/>
    <variant name="Total"
        summary="the main thread being notified that the work was completed"/>
  </token>
</histogram>

<histogram
    name="History.Clusters.Backend.WasClusterFiltered.{ClusterFilterReason}"
    enum="BooleanFiltered" expires_after="2023-10-01">
  <owner>mcrouse@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Logs whether a cluster was filtered for having {ClusterFilterReason}. Logged
    when finalizing each individual cluster which occurs at the end of every
    clustering backend request.
  </summary>
  <token key="ClusterFilterReason">
    <variant name="Category" summary="all non-complex categories"/>
    <variant name="NoisyCluster" summary="all noisy visits"/>
    <variant name="SingleVisit" summary="only a single visit"/>
    <variant name="VisibilityScore" summary="low visibility score"/>
  </token>
</histogram>

<histogram
    name="History.Clusters.ContextClusterer.ClusterCleanedUpBeforePersistence"
    enum="Boolean" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    When the user visits a page, `ContextClustererHistoryServiceObserver`
    considers whether to add the visit to a new cluster or an existing cluster.
    If it decides to create a new cluster, this is logged. Therefore, logged at
    most once per page visit.
  </summary>
</histogram>

<histogram name="History.Clusters.ContextClusterer.DbLatency.{Segment}"
    units="ms" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    When the user visits a page, `ContextClustererHistoryServiceObserver`
    considers whether to add the visit to a new cluster or an existing cluster.

    This histogram records the processing breakdown for persisting visits to
    group them into context clusters. Recorded each time {Segment}. The
    histograms here summed up with the histograms as part of
    `History.Clusters.ContextClusterer.VisitProcessingLatency` record the total
    latency for context clustering.
  </summary>
  <token key="Segment">
    <variant name="AddVisitsToCluster"
        summary="new visits are added to an existing cluster"/>
    <variant name="ReserveNextClusterId"
        summary="a cluster is determined and requires a new cluster ID"/>
    <variant name="UpdateClusterVisit"
        summary="additional visit metadata has been calculated for an
                 existing visit already part of a cluster and needs to be
                 updated"/>
  </token>
</histogram>

<histogram name="History.Clusters.ContextClusterer.NumClusters.AtCleanUp"
    units="num clusters" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Number of clusters that are in-progress. Recorded once an hour
    (Finch-configurable) prior to the clean-up pass.
  </summary>
</histogram>

<histogram name="History.Clusters.ContextClusterer.NumClusters.CleanedUp"
    units="num clusters" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Number of clusters that were cleaned up in the clean-up pass. Recorded once
    an hour (Finch-configurable) during the clean-up pass.
  </summary>
</histogram>

<histogram name="History.Clusters.ContextClusterer.NumClusters.PostCleanUp"
    units="num clusters" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Number of clusters that are in-progress. Recorded once an hour
    (Finch-configurable) after the clean-up pass.
  </summary>
</histogram>

<histogram
    name="History.Clusters.ContextClusterer.NumUnpersistedVisitsBeforeClusterPersisted"
    units="num unpersisted visits" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    When we decide a new visit belongs to a new cluster, we asyncly reserve a
    new cluster ID and add the visit to the cluster. When subsequent visits
    belong to the same cluster, we asyncly add those visits to the cluster. When
    the latter occurs before the former completes, i.e. when there are multiple
    visits done that belong in the same cluster before the cluster ID was
    reserved, we queue those subsequent visits and only add them when the
    cluster ID is reserved.

    This histogram records the number of visits that were waiting to be
    persisted while waiting for the persisted ID of the containg cluster to be
    received. Recorded at most once per cluster that is generated via the
    navigation graph.
  </summary>
</histogram>

<histogram
    name="History.Clusters.ContextClusterer.VisitProcessingLatency.{Segment}"
    units="ms" expires_after="2023-10-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    When the user visits a page, `ContextClustererHistoryServiceObserver`
    considers whether to add the visit to a new cluster or an existing cluster.

    This histogram records the processing breakdown for processing visits to
    group them into context clusters. Recorded each time {Segment}. The
    histograms here summed up with the histograms as part of
    `History.Clusters.ContextClusterer.DbLatency` record the total latency for
    context clustering.
  </summary>
  <token key="Segment">
    <variant name="CleanUpTimer"
        summary="a clean-up pass has invoked, roughly once every ten minutes
                 (Finch-configurable)"/>
    <variant name="UrlsDeleted" summary="a set of URLs has beeen deleted"/>
    <variant name="UrlVisited" summary="a URL is visited"/>
  </token>
</histogram>

<histogram name="History.Clusters.JourneysEligibleAndEnabledAtSessionStart"
    units="BooleanEnabled" expires_after="2023-10-22">
  <owner>sophiechang@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records whether a user that is Journeys eligible has Journeys enabled. This
    is recorded once at the start of the session.
  </summary>
</histogram>

<histogram name="History.Clusters.KeywordCache.Latency" units="ms"
    expires_after="2023-10-01">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the total amount of time spent populating the keyword cache,
    measured via the wall clock. Most of this time is not on the main thread.

    The total time spent populating the keywords cache will be:
    History.Clusters.KeywordCache.Latency = (number of batches) * (
    History.Clusters.Backend.GetMostRecentClusters.GetAnnotatedVisitsToClusterLatency.AllKeywordCacheRefresh
    +
    History.Clusters.Backend.GetMostRecentClusters.ComputeClustersLatency.AllKeywordCacheRefresh
    +
    History.Clusters.Backend.GetMostRecentClusters.GetMostRecentPersistedClustersLatency.AllKeywordCacheRefresh
    +
    History.Clusters.Backend.GetMostRecentClusters.GetAnnotatedVisitsToClusterLatency.ShortKeywordCacheRefresh
    +
    History.Clusters.Backend.GetMostRecentClusters.ComputeClustersLatency.ShortKeywordCacheRefresh
    +
    History.Clusters.Backend.GetMostRecentClusters.GetMostRecentPersistedClustersLatency.ShortKeywordCacheRefresh
    + History.Clusters.KeywordCache.ThreadTime)
  </summary>
</histogram>

<histogram name="History.Clusters.KeywordCache.LoadCachesFromPrefs.Latency"
    units="ms" expires_after="2024-04-01">
  <owner>pnoland@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the amount of time spent reading all caches from the pref service
    and deserializing them. Recorded when these caches are read from prefs,
    which is once at startup. This is not recorded if the pref service is null.
  </summary>
</histogram>

<histogram name="History.Clusters.KeywordCache.ThreadTime" units="ms"
    expires_after="2023-10-22">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    This measures the amount of main thread time spent populating the keyword
    cache AFTER we get it from the backend.

    See History.Clusters.KeywordCache.Latency for the full wall clock time.
  </summary>
</histogram>

<histogram name="History.Clusters.KeywordCache.WriteCache.{CacheType}.Latency"
    units="ms" expires_after="2024-04-01">
  <owner>pnoland@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the amount of time spent serializing and writing a keyword cache to
    the pref service. Recorded every time a cache is written to prefs, which is
    every time one is updated. This is not recorded if the pref service is null.
  </summary>
  <token key="CacheType">
    <variant name="All"
        summary="Records time spent writing the 'all keywords' cache."/>
    <variant name="Short"
        summary="Records time spent writing the short keyword cache."/>
  </token>
</histogram>

<histogram name="History.Clusters.ProcessClustersDuration" units="ms"
    expires_after="2023-10-22">
  <owner>olivierli@chromium.org</owner>
  <owner>tommycli@chromium.org</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    This histogram records the total time taken to convert and process visits in
    all history cluster available. This is recorded once after the conversion,
    deduplication and sorting of the clusters. This is recorded using the
    highest precision clock possible. Like most time measurements this will not
    have the same behavior regarding system sleep on all platforms. See
    bit.ly/chrome-clocks-and-sleep for more details. Since the measurement is
    taken after the operation is over it will be missing if the operation never
    completes. This can happen if the user or the system shuts down chrome
    because of the unresponsiveness. A decidedly imperfect strategy to evaluate
    how often this happens is to compare total counts with another histogram
    that is recorded before the operation starts
    (&quot;History.Clusters.Backend.GetClusterLatency&quot;). Such analysis has
    to be conducted with care. Consult with Metrics team if curious.
  </summary>
</histogram>

<histogram name="History.Clusters.ServiceLatency" units="ms"
    expires_after="2023-10-08">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the time taken between the History Clusters UI requests a batch of
    clusters, and when we get the post-processed clusters back.

    This request occurs when the page is first loaded, when the page is
    refreshed, when the user changes the History search terms, and when the user
    scrolls to the bottom of the page and requests the next batch of clusters
    from the service.

    This metric doesn't distinguish between any of these cases. This metric is
    recorded on all requests, whether or not it returns clusters.

    This does not take into account the time spent in JavaScript, or updating
    the DOM. It's recorded in QueryClustersState, which is meant to be shared
    between multiple UIs.

    Roughly, History.Clusters.ServiceLatency =
    History.Clusters.Backend.GetMostRecentClusters.GetAnnotatedVisitsToClusterLatency.WebUI
    +
    History.Clusters.Backend.GetMostRecentClusters.ComputeClustersLatency.WebUI
    +
    History.Clusters.Backend.GetMostRecentClusters.GetMostRecentPersistedClustersLatency.WebUI
    + History.Clusters.ProcessClustersDuration
  </summary>
</histogram>

<histogram name="History.Clusters.Survey.CanShowAnySurvey" enum="Boolean"
    expires_after="2023-05-07">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded each time a History Clusters HaTS survey was requested. Records if
    the HaTS service can show ANY survey BEFORE we make the actual request.

    Used for debugging missing HaTs survey impressions.
  </summary>
</histogram>

<histogram name="History.Clusters.Survey.CanShowSurvey" enum="Boolean"
    expires_after="2023-05-07">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded each time a History Clusters HaTS survey was requested. Records if
    the HaTS service can show this survey BEFORE we make the actual request.

    Used for debugging missing HaTs survey impressions.
  </summary>
</histogram>

<histogram name="History.Clusters.Survey.Requested"
    enum="HistoryClustersSurvey" expires_after="2023-05-07">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded each time a History Clusters HaTS survey was requested. Records
    which entrypoint survey was requested.
  </summary>
</histogram>

<histogram name="History.Clusters.Survey.Success" enum="Boolean"
    expires_after="2023-05-07">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded each time a History Clusters HaTS survey was requested. Records if
    the survey request succeeded. Note that a true count doesn't mean that the
    survey was actually shown. It only measures if the HaTS service accepted the
    request. The survey may still not be shown by HaTS for a different reason,
    such as another survey being shown too recently.
  </summary>
</histogram>

<histogram name="History.Clusters.UIActions.Cluster.{ClusterAction}"
    units="index" expires_after="2023-10-01">
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded every time the user {ClusterAction} in chrome://history/journeys.
    The value represents the 0-indexed index of the cluster.
  </summary>
  <token key="ClusterAction">
    <variant name="Deleted" summary="deletes a history cluster"/>
    <variant name="OpenedInTabGroup"
        summary="opens the visit urls in a history cluster in a new tab group"/>
    <variant name="RelatedSearchClicked"
        summary="clicks a related search suggestion"/>
    <variant name="RelatedVisitsVisibilityToggled"
        summary="toggles visibility of the default-hidden related visits.
                 Deprecated 1/25/23."/>
    <variant name="VisitClicked" summary="clicks a visit"/>
  </token>
</histogram>

<histogram
    name="History.Clusters.UIActions.RelatedSearch.{RelatedSearchAction}"
    units="index" expires_after="2023-10-01">
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded every time the user {RelatedSearchAction} a related search
    suggestion in a history cluster in chrome://history/journeys. The value
    represents the 0-indexed index of the related search suggestion in the
    respective cluster.
  </summary>
  <token key="RelatedSearchAction">
    <variant name="Clicked" summary="clicks"/>
  </token>
</histogram>

<histogram name="History.Clusters.UIActions.ToggledVisibility"
    enum="BooleanVisible" expires_after="2023-10-01">
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded every time the user toggles the visibility of the history clusters
    Web UI shown at chrome://history/journeys from the history Web UI sidebar.
    The value represents the visibility of the history clusters Web UI.
  </summary>
</histogram>

<histogram name="History.Clusters.UIActions.{VisitType}Visit.{VisitAction}"
    units="index" expires_after="2023-10-01">
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Recorded every time the user {VisitAction} a {VisitType} in a history
    cluster in chrome://history/journeys. The value represents the 0-indexed
    index of the visit in the respective cluster.
  </summary>
  <token key="VisitAction">
    <variant name="Clicked" summary="clicks"/>
    <variant name="Deleted" summary="deletes"/>
    <variant name="Hidden" summary="hides"/>
  </token>
  <token key="VisitType">
    <variant name="" summary="visit"/>
    <variant name="nonSRP"
        summary="visit to a url other than the default search results page"/>
    <variant name="SRP" summary="visit to the default search results page"/>
  </token>
</histogram>

<histogram name="History.Clusters.UpdateClusters.TimeBetweenTasks" units="ms"
    expires_after="2023-10-01">
  <owner>manukh@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    The time elapsed between subsequent cluster update tasks
    (HistoryClustersServiceTaskUpdateClusters). Depending on finch params, this
    occurs either:

    1) Never (e.g. if updating and persisting clusters is disabled).

    2) OR N time after startup in addition to every M time; where N is typically
    5-60 minutes, and M is typically 1-12 hours.

    3) OR on keyword refresh request bounded to at most every M time, where M is
    typically 1-12 hours. Keyword refresh requests occur when the omnibox input
    looks like a search query and journeys in the omnibox is enabled.
  </summary>
</histogram>

<histogram name="History.Clusters.WebUISessionDuration" units="ms"
    expires_after="2023-08-20">
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;Journeys</component>
  <summary>
    Records the amount of time the Journeys WebUI is open.

    This timer is started when the Journeys WebUI is loaded. The Journeys WebUI
    is loaded when either the user directly goes to the Journeys WebUI, or when
    the user switches to the Journeys tab from a different tab.

    The timer is stopped and the elapsed time recorded when either the whole
    WebUI is closed, or if the user disables the Journeys preference, or if the
    user switches tabs off the Journeys tab onto a different one.

    Elapsed times longer than one hour are recorded as one hour.
  </summary>
</histogram>

<histogram name="History.DatabaseAdvancedMetricsTime" units="ms"
    expires_after="2023-07-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time spent on advanced History DB metrics calculation (weekly and monthly
    URL, host, and category counts). Advanced metrics are logged on
    initialization of the History DB on 0.3% of starts.
  </summary>
</histogram>

<histogram name="History.DatabaseBasicMetricsTime" units="ms"
    expires_after="2023-07-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time spent on basic History DB metrics calculation (file size and table
    counts). Basic metrics are logged on initialization of the History DB on 1%
    of starts.
  </summary>
</histogram>

<histogram name="History.DatabaseFileMB" units="MB" expires_after="2023-07-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>tommycli@chromium.org</owner>
  <owner>chrome-journeys@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Size of History DB file. Duplicate of Profile.HistorySize and
    Sqlite.SizeKB.History. Logged on initialization of the History DB on 1% of
    starts.
  </summary>
</histogram>

<histogram name="History.DatabaseForeignVisitMetricsTime" units="ms"
    expires_after="2023-07-01">
  <owner>sophiechang@chromium.org</owner>
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time spent on foreign-visit-related History DB metrics calculation. These
    metrics are logged on initialization of the History DB on 1% of starts. Note
    that the actual metrics (History.ForeignVisits*) are only recorded if any
    such visits were actually found, so the total counts will not match this
    histogram's.
  </summary>
</histogram>

<histogram name="History.DatabaseMonthlyHostCountTime" units="ms"
    expires_after="2020-03-01">
  <owner>dimich@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time spent on computing the monthly count of hosts visited. Reported every
    time computation is performed, which in turn is done approximately weekly.
  </summary>
</histogram>

<histogram name="History.DatabaseSqliteError" enum="SqliteLoggedResultCode"
    expires_after="2023-09-03">
  <owner>sophiechang@chromium.org</owner>
  <owner>asully@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The exact database error encountered when initializing the database, if
    failed.
  </summary>
</histogram>

<histogram name="History.DomainCount1Day_V2" units="domains"
    expires_after="2023-09-03">
  <owner>mpearson@chromium.org</owner>
  <owner>mjzhang@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Number of unique domains visited by the user within a calendar day in user's
    local timezone. For each regular profile (not incognito, guest, system,
    etc.), reported at profile open (which usually happens at startup) for each
    unreported day (up to 7 days) prior to the current date, and also reported
    once every 24 hours thereafter for the latest unreported day, while the
    profile remains open. If no domains are visited in a given day, a count of 0
    will be reported for that day.

    Warning about delayed data: Chrome may upload logs on a given day without
    uploading this histogram. This can happen because Chrome uploads logs
    initially upon startup. This histogram is emitted shortly _after_ startup.
    In the case of short sessions, it's possible the log with this histogram did
    not have time to be uploaded. Generally the log will be cached and uploaded
    the next time the user starts Chrome. We should still get one count per
    calendar day; it simply may not be on the day the metric was computed.
    (Exception: on Android before M-91, sometimes these emitted histograms were
    lost due to lack of robust &quot;background logging&quot;.)

    Note: for users syncing between multiple devices, this count may include
    some URLs/domains that weren't visited on this device. In other words, some
    domains may be counted for multiple client_ids even though they were only
    visited once, on one device. For Chrome M113 or later, you probably want to
    look at DomainCount1Day_V3 instead.
  </summary>
</histogram>

<histogram name="History.DomainCount1Day_V3" units="domains"
    expires_after="2023-09-17">
  <owner>mpearson@chromium.org</owner>
  <owner>mjzhang@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Number of unique domains visited by the user within a calendar day in user's
    local timezone. For each regular profile (not incognito, guest, system,
    etc.), reported at profile open (which usually happens at startup) for each
    unreported day (up to 7 days) prior to the current date, and also reported
    once every 24 hours thereafter for the latest unreported day, while the
    profile remains open. If no domains are visited in a given day, a count of 0
    will be reported for that day.

    Warning about delayed data: Chrome may upload logs on a given day without
    uploading this histogram. This can happen because Chrome uploads logs
    initially upon startup. This histogram is emitted shortly _after_ startup.
    In the case of short sessions, it's possible the log with this histogram did
    not have time to be uploaded. Generally the log will be cached and uploaded
    the next time the user starts Chrome. We should still get one count per
    calendar day; it simply may not be on the day the metric was computed.
    (Exception: on Android before M-91, sometimes these emitted histograms were
    lost due to lack of robust &quot;background logging&quot;.)
  </summary>
</histogram>

<histogram name="History.DomainCount28Day_V2" units="domains"
    expires_after="2023-09-03">
  <owner>mpearson@chromium.org</owner>
  <owner>mjzhang@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of unique domains visited by the user within a 28 calendar day period
    in user's local timezone. For each regular profile (not incognito, guest,
    system, etc.), reported at profile open (which usually happens at startup)
    for each unreported 28-day period (up to 7 periods) ending on the current
    day, current day - 1, current day - 2, etc. Also reported once every 24
    hours thereafter for the latest unreported period, while the profile remains
    open. If no domains are visited during a 28-day period, a count of 0 will be
    reported for that period.

    Warning about delayed data: Chrome may upload logs on a given day without
    uploading this histogram. This can happen because Chrome uploads logs
    initially upon startup. This histogram is emitted shortly _after_ startup.
    In the case of short sessions, it's possible the log with this histogram did
    not have time to be uploaded. Generally the log will be cached and uploaded
    the next time the user starts Chrome. We should still get one count per
    calendar day; it simply may not be on the day the metric was computed.
    (Exception: on Android before M-91, sometimes these emitted histograms were
    lost due to lack of robust &quot;background logging&quot;.)

    Note: for users syncing between multiple devices, this count may include
    some URLs/domains that weren't visited on this device. In other words, some
    domains may be counted for multiple client_ids even though they were only
    visited once, on one device. For Chrome M113 or later, you probably want to
    look at DomainCount28Day_V3 instead.
  </summary>
</histogram>

<histogram name="History.DomainCount28Day_V3" units="domains"
    expires_after="2023-09-24">
  <owner>mpearson@chromium.org</owner>
  <owner>mjzhang@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of unique domains visited by the user within a 28 calendar day period
    in user's local timezone. For each regular profile (not incognito, guest,
    system, etc.), reported at profile open (which usually happens at startup)
    for each unreported 28-day period (up to 7 periods) ending on the current
    day, current day - 1, current day - 2, etc. Also reported once every 24
    hours thereafter for the latest unreported period, while the profile remains
    open. If no domains are visited during a 28-day period, a count of 0 will be
    reported for that period.

    Warning about delayed data: Chrome may upload logs on a given day without
    uploading this histogram. This can happen because Chrome uploads logs
    initially upon startup. This histogram is emitted shortly _after_ startup.
    In the case of short sessions, it's possible the log with this histogram did
    not have time to be uploaded. Generally the log will be cached and uploaded
    the next time the user starts Chrome. We should still get one count per
    calendar day; it simply may not be on the day the metric was computed.
    (Exception: on Android before M-91, sometimes these emitted histograms were
    lost due to lack of robust &quot;background logging&quot;.)
  </summary>
</histogram>

<histogram name="History.DomainCount7Day_V2" units="domains"
    expires_after="2023-09-03">
  <owner>mpearson@chromium.org</owner>
  <owner>mjzhang@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of unique domains visited by the user within a 7 calendar day period
    in user's local timezone. For each regular profile (not incognito, guest,
    system, etc.), reported at profile open (which usually happens at startup)
    for each unreported 7-day period (up to 7 periods) ending on the current
    day, current day - 1, current day - 2, etc. Also reported once every 24
    hours thereafter for the latest unreported period, while the profile remains
    open. If no domains are visited during a 7-day period, a count 0 will be
    reported for that period.

    Warning about delayed data: Chrome may upload logs on a given day without
    uploading this histogram. This can happen because Chrome uploads logs
    initially upon startup. This histogram is emitted shortly _after_ startup.
    In the case of short sessions, it's possible the log with this histogram did
    not have time to be uploaded. Generally the log will be cached and uploaded
    the next time the user starts Chrome. We should still get one count per
    calendar day; it simply may not be on the day the metric was computed.
    (Exception: on Android before M-91, sometimes these emitted histograms were
    lost due to lack of robust &quot;background logging&quot;.)

    Note: for users syncing between multiple devices, this count may include
    some URLs/domains that weren't visited on this device. In other words, some
    domains may be counted for multiple client_ids even though they were only
    visited once, on one device. For Chrome M113 or later, you probably want to
    look at DomainCount7Day_V3 instead.
  </summary>
</histogram>

<histogram name="History.DomainCount7Day_V3" units="domains"
    expires_after="2023-10-15">
  <owner>mpearson@chromium.org</owner>
  <owner>mjzhang@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of unique domains visited by the user within a 7 calendar day period
    in user's local timezone. For each regular profile (not incognito, guest,
    system, etc.), reported at profile open (which usually happens at startup)
    for each unreported 7-day period (up to 7 periods) ending on the current
    day, current day - 1, current day - 2, etc. Also reported once every 24
    hours thereafter for the latest unreported period, while the profile remains
    open. If no domains are visited during a 7-day period, a count 0 will be
    reported for that period.

    Warning about delayed data: Chrome may upload logs on a given day without
    uploading this histogram. This can happen because Chrome uploads logs
    initially upon startup. This histogram is emitted shortly _after_ startup.
    In the case of short sessions, it's possible the log with this histogram did
    not have time to be uploaded. Generally the log will be cached and uploaded
    the next time the user starts Chrome. We should still get one count per
    calendar day; it simply may not be on the day the metric was computed.
    (Exception: on Android before M-91, sometimes these emitted histograms were
    lost due to lack of robust &quot;background logging&quot;.)
  </summary>
</histogram>

<histogram name="History.DomainCountQueryTime_V2" units="ms"
    expires_after="2023-09-03">
  <owner>mpearson@chromium.org</owner>
  <owner>mjzhang@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time spent on a scheduled computation task of domain visit counts. Each such
    task computes a number of (at least 1 and up to 7) sets of domain counts,
    where each set includes 3 results, for a 1-day, 7-day and 28-day period
    respectively. Note that for each computation task, only one query time is
    reported which covers the entire duration of the task. A task is scheduled
    once per regular profile (not Incognito, Guest, System, etc. profiles) at
    startup and every 24 hours per profile thereafter while the profile remains
    open.
  </summary>
</histogram>

<histogram name="History.FaviconDatabaseSizeMB" units="MB" expires_after="M130">
  <owner>rogerm@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Size of the Favicons database in MB. This is calculated as the number of
    pages consumed by the database multiplied by the page size. Logged on
    initialization of the Favicon DB on 1% of starts.
  </summary>
</histogram>

<histogram name="History.FirstSetTopSitesDeltaSize" units="units"
    expires_after="M77">
  <owner>yiyaoliu@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The count of differences between cached top sites and up-to-date top sites
    when function TopSitesImpl::SetTopSites is firstly called at startup.
  </summary>
</histogram>

<histogram name="History.FirstUpdateTime" units="ms" expires_after="2020-02-02">
  <owner>yiyaoliu@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The amount of time for function
    history::TopSitesBackend::UpdateTopSitesOnDBThread to execute when this
    function is called during startup. Excludes the case where local
    TopSitesDatabase db_ is unavailable, i.e. where the update doesn't really
    happen.
  </summary>
</histogram>

<histogram name="History.ForeignVisitsLegacy" units="visits"
    expires_after="2023-07-01">
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The number of foreign visits (i.e. visits coming from another device) in the
    DB table which came from &quot;legacy&quot; clients, i.e. those still using
    the Sessions sync integration. Recorded on initialization of the History DB
    on 1% of starts, only if any foreign visits exist (i.e. basically for users
    with History Sync on).
  </summary>
</histogram>

<histogram name="History.ForeignVisitsNotRemapped" units="visits"
    expires_after="2023-07-01">
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The number of foreign visits (i.e. visits coming from another device) in the
    DB table which have an originator_from|opener_visit but are missing a
    corresponding local from|opener_visit. Recorded on initialization of the
    History DB on 1% of starts, only if any foreign visits exist (i.e. basically
    for users with History Sync on).
  </summary>
</histogram>

<histogram name="History.ForeignVisitsRemappableFrom" units="visits"
    expires_after="2023-07-01">
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The number of foreign visits (i.e. visits coming from another device) in the
    DB table which have an originator_from_visit but are missing a corresponding
    local from_visit, and a matching visit actually exists in the DB. Recorded
    on initialization of the History DB on 1% of starts, only if any foreign
    visits exist (i.e. basically for users with History Sync on).
  </summary>
</histogram>

<histogram name="History.ForeignVisitsRemappableOpener" units="visits"
    expires_after="2023-07-01">
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The number of foreign visits (i.e. visits coming from another device) in the
    DB table which have an originator_opener_visit but are missing a
    corresponding local opener_visit, and a matching visit actually exists in
    the DB. Recorded on initialization of the History DB on 1% of starts, only
    if any foreign visits exist (i.e. basically for users with History Sync on).
  </summary>
</histogram>

<histogram name="History.ForeignVisitsTotal" units="visits"
    expires_after="2023-07-01">
  <owner>tommycli@chromium.org</owner>
  <owner>treib@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The number of foreign visits (i.e. visits coming from another device) in the
    DB table. Recorded on initialization of the History DB on 1% of starts, only
    if any foreign visits exist (i.e. basically for users with History Sync on).
  </summary>
</histogram>

<histogram name="History.GetFavIconFromDB" units="ms" expires_after="M79">
  <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>Time to check the thumbnail database for a URL's favicon.</summary>
</histogram>

<histogram name="History.HistoryPageView" enum="HistoryPageView"
    expires_after="2023-10-08">
  <owner>calamity@chromium.org</owner>
  <owner>src/chrome/browser/resources/history/OWNERS</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The page of the History page shown to the user. Logged each time the user
    loads the History page or switches pages.

    This histogram expired on 2021-03-01, was renewed on 2021-09-01, and may
    have incomplete data within that range.
  </summary>
</histogram>

<histogram name="History.InitializationFailureStep" enum="HistoryInitStep"
    expires_after="2023-10-08">
  <owner>sky@chromium.org</owner>
  <owner>sdefresne@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The phase of history initialization that failed. This histogram is only
    logged on database initialization failure.
    History.AttemptedToFixProfileError will tell how often initialization fails
    overall.
  </summary>
</histogram>

<histogram name="History.InMemoryDBItemCount" units="typed URLs"
    expires_after="2023-08-27">
  <owner>sky@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The number of typed URLs in the history database that are read into the
    &quot;in memory&quot; history database. This in memory copy of the typed
    URLs is used for synchronous inline autocomplete on the UI thread, while the
    larger slower service is run off of disk on a background thread. Recorded on
    profile open.
  </summary>
</histogram>

<histogram name="History.InMemoryURLHistoryItems" units="items"
    expires_after="2023-10-15">
  <owner>mpearson@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of history items in the in-memory url index. Recorded on profile open
    when restoring from a cache file and again shortly after profile open when
    rebuilding the in-memory url index from history.
  </summary>
</histogram>

<histogram name="History.InMemoryURLIndexingTime" units="ms"
    expires_after="2023-10-15">
  <owner>mpearson@chromium.org</owner>
  <owner>ssid@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time to rebuild in-memory url index from main history database. Recorded
    once shortly after profile open.
  </summary>
</histogram>

<histogram name="History.InMemoryURLIndexingTime.RoundTripTime" units="ms"
    expires_after="2023-08-20">
  <owner>tommycli@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Records the total time between when the in-memory url index is requested to
    be built from the main thread, and when the request is successfully finished
    and reported back to the main thread. Failed cases are not recorded.

    From startup traces, we found that History initialization blocks the DB task
    to create the in-memory url index, and also dominates the total time taken.
    That's why this metric measures the round-trip time from request to finish
    from the perspective of the main thread.
  </summary>
</histogram>

<histogram name="History.InMemoryURLIndexRestoreCacheTime" units="ms"
    expires_after="2023-08-13">
  <owner>tommycli@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time to restore the in-memory url index from disk cache. Recorded on profile
    open.
  </summary>
</histogram>

<histogram name="History.InMemoryURLIndexSaveCacheTime" units="ms"
    expires_after="2023-06-11">
  <owner>tommycli@chromium.org</owner>
  <owner>mpearson@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Time to write in-memory url index to disk cache. Recorded once shortly after
    profile open (after rebuilding the in-memory url index from history) and
    again upon (clean) shutdown.
  </summary>
</histogram>

<histogram name="History.MigrateFailureFromVersion" units="units"
    expires_after="2023-10-01">
  <owner>sky@chromium.org</owner>
  <owner>sdefresne@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    History database version from which history migration failed. If there are
    higher than normal migration failures, this histogram will indicate which
    migration step failed.

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

<histogram name="History.MonthlyHostCount" units="hosts"
    expires_after="2023-08-27">
  <owner>mpearson@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Unique hostnames in History database urls table with last-visit times in the
    last 30 days. Metrics are logged on initialization of the History DB on 0.3%
    of starts. See also ExploreSites.MonthlyHostCount metric which is similar
    but is reported on an elapsed time basis to help avoid bias toward more
    active users.
  </summary>
</histogram>

<histogram name="History.MonthlyURLCount" units="urls"
    expires_after="2023-10-15">
  <owner>mpearson@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Unique URLs in History database urls table with last-visit times in the last
    30 days. Metrics are logged on initialization of the History DB on 0.3% of
    starts.
  </summary>
</histogram>

<histogram name="History.QueryMostRepeatedQueriesCount" units="counts"
    expires_after="2023-10-10">
  <obsolete>
    Expired in M110.
  </obsolete>
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    The number of search terms extracted from the HistoryDatabase db_ in
    HistoryBackend::QueryMostRepeatedQueriesForKeyword() to produce the most
    repeated search terms. Excludes the case where local HistoryDatabase db_ is
    unavailable, i.e. where the query doesn't really happen. Emitted on NTP load
    and on omnibox popup shown on Android where the repeatable queries are
    requested to be shown in the Most Visited tiles.
  </summary>
</histogram>

<histogram name="History.QueryMostRepeatedQueriesTime" units="ms"
    expires_after="2023-10-10">
  <obsolete>
    Expired in M110 in favor of History.QueryMostRepeatedQueriesTimeV2.
  </obsolete>
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    The amount of time for HistoryBackend::QueryMostRepeatedQueriesForKeyword()
    to extract the search terms from the HistoryDatabase db_ and sort them by
    frecency scores to produce the most repeated search terms. Excludes the case
    where local HistoryDatabase db_ is unavailable, i.e. where the query doesn't
    really happen. Emitted on NTP load and on omnibox popup shown on Android
    where the repeatable queries are requested to be shown in the Most Visited
    tiles.
  </summary>
</histogram>

<histogram name="History.QueryMostRepeatedQueriesTimeV2" units="ms"
    expires_after="2023-12-20">
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-desktop-search@google.com</owner>
  <summary>
    The amount of time for HistoryBackend::QueryMostRepeatedQueriesForKeyword()
    to extract up to the requested number of search terms from the
    HistoryDatabase db_ and sort them by frecency scores to produce the most
    repeated search terms. Excludes the case where local HistoryDatabase db_ is
    unavailable, i.e. where the query doesn't really happen. Emitted on NTP load
    and on omnibox popup shown on Android where the repeatable queries are
    requested to be shown in the Most Visited tiles.
  </summary>
</histogram>

<histogram name="History.QueryMostVisitedURLsTime" units="ms"
    expires_after="M81">
  <owner>chengx@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The amount of time for function HistoryBackend::QueryMostVisitedURLs to
    execute. Excludes the case where local HistoryDatabase db_ is unavailable,
    i.e. where the query doesn't really happen.
  </summary>
</histogram>

<histogram name="History.ResultsRenderedTime" units="ms" expires_after="M90">
  <owner>calamity@chromium.org</owner>
  <owner>dbeam@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Records the time taken to load the history Web UI and render (at least) a
    screen full of items. This is roughly equivalent to 'time to first
    meaningful paint' for the history page.
  </summary>
</histogram>

<histogram name="History.TopSites.QueryFromHistoryTime" units="ms"
    expires_after="2023-10-10">
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    The amount of time it takes to asynchronously query the most visited URLs
    and the most repeated queries, if applicable, from the history service.
    Excludes the case where local HistoryDatabase db_ is unavailable, i.e. where
    the query doesn't really happen. Emitted on NTP load and on omnibox popup
    shown on Android where the Most Visited tiles are shown.
  </summary>
</histogram>

<histogram name="History.TopSites.SearchTermsExtractedCount" units="counts"
    expires_after="2023-02-19">
  <obsolete>
    Deprecated in M108 in favor of History.QueryMostRepeatedQueriesCount
  </obsolete>
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    The number of search terms extracted from the in-memory URLDatabase to
    produce the most repeated search suggestions. Emitted on NTP load and on
    omnibox popup shown on Android NTP when repeatable queries are requested to
    be shown in the Most Visited tiles.
  </summary>
</histogram>

<histogram name="History.TopSites.SearchTermsExtractionTime" units="ms"
    expires_after="2022-10-16">
  <obsolete>
    Deprecated in M108 in favor of History.QueryMostRepeatedQueriesTime
  </obsolete>
  <owner>mahmadi@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    The length of time it takes to extract the most repeated search terms from
    the in-memory URLDatabase and sort by frecency scores. Emitted on NTP load
    and on omnibox popup shown on Android NTP when repeatable queries are
    requested to be shown in the Most Visited tiles.
  </summary>
</histogram>

<histogram name="History.TopSitesRecoveredPercentage" units="%"
    expires_after="M85">
  <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Size of the recovered TopSites database relative to the original corrupt
    database. Recovery is VACUUM-like, so the resulting database should always
    be smaller. Substantial 100% results would indicate empty databases being
    recovered, substantial low% results would indicate very little data being
    recovered.
  </summary>
</histogram>

<histogram name="History.TopSitesRecoveredRowsThumbnails" units="units"
    expires_after="M85">
  <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Rows recovered from [thumbnails] table in TopSites recovery.
  </summary>
</histogram>

<histogram name="History.TopSitesRecovery" enum="HistoryTopSitesRecoveryEnum"
    expires_after="2018-08-30">
  <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    The TopSites recovery code is written conservatively, with successful
    recovery committed and any failure leading to rollback. This tracks the
    outcomes to determine which cases are high-frequency enough to warrant
    adding additional code to handle them (versus simply deleting the data).
  </summary>
</histogram>

<histogram name="History.URLTableCount" units="URLs" expires_after="2023-09-10">
  <owner>mpearson@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of rows in urls table in History DB. Metrics are logged on
    initialization of the History DB on 1% of starts.
  </summary>
</histogram>

<histogram name="History.VisitedLinks.HashTableLengthOnReaderInit"
    units="entries" expires_after="2024-04-03">
  <owner>kyraseevers@chromium.org</owner>
  <owner>brgoldstein@google.com</owner>
  <summary>
    When VisitedLinkReader's in-memory hashtable is initialized, this metric
    records the value for table_length_ (the maximum number of entries that can
    be held in that hashtable).
  </summary>
</histogram>

<histogram name="History.VisitedLinks.HashTableSizeOnTableCreate" units="MB"
    expires_after="2024-04-03">
  <owner>kyraseevers@chromium.org</owner>
  <owner>brgoldstein@google.com</owner>
  <summary>
    When a new in-memory hashtable is created in VisitedLinkWriter, this metric
    records the size of the memory allocated for that new hashtable in MB.
  </summary>
</histogram>

<histogram name="History.VisitedLinks.HashTableUsageOnLinkAdded"
    units="fingerprints" expires_after="2024-04-03">
  <owner>kyraseevers@chromium.org</owner>
  <owner>brgoldstein@google.com</owner>
  <summary>
    When a new URL fingerprint is added to the VisitedLink hashtable, this
    metric logs value for used_items_ (the number of entries in the hashtable
    containing an actual fingerprint value rather than a placeholder).
  </summary>
</histogram>

<histogram name="History.VisitedLinks.TryToAddFingerprint"
    enum="AddFingerprint" expires_after="2024-04-20">
  <owner>kyraseevers@chromium.org</owner>
  <owner>brgoldstein@google.com</owner>
  <summary>
    When VisitedLinkWriter is asked to add a URL, it calculates that URL's
    fingerprint and tries to add that fingerprint to the hashtable. This metric
    records the result of that function: AddFingerprint(). If the fingerprint is
    already in the table, we record kAlreadyVisited. If we haven't seen this
    fingerprint before and it can be successfully stored in the hashtable, we
    record kNewVisit. Any other outcomes due to table sizing errors are recorded
    as kTableError.
  </summary>
</histogram>

<histogram name="History.VisitedLinks.VisitLoggedFromMainFrame" units="boolean"
    expires_after="2024-04-11">
  <owner>kyraseevers@chromium.org</owner>
  <owner>brgoldstein@google.com</owner>
  <summary>
    For each visit being logged in the VisitedLinks hashtable by the
    HistoryService, record whether its ui::PageTransition type came from the
    main frame.
  </summary>
</histogram>

<histogram name="History.VisitedLinks.VisitLoggedFromTransition"
    enum="PageTransitionForVisitedLinks" expires_after="2024-04-11">
  <owner>kyraseevers@chromium.org</owner>
  <owner>brgoldstein@google.com</owner>
  <summary>
    For each visit being logged in the VisitedLinks hashtable by the
    HistoryService, record its PageTransitionForVisitedLinks type. This enum
    represents our ui::PageTransition types of interest (link vs. typed vs.
    subframe) and a catch-all other bucket.
  </summary>
</histogram>

<histogram name="History.VisitTableCount" units="visits"
    expires_after="2023-10-22">
  <owner>mpearson@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of rows in visits table in History DB. Metrics are logged on
    initialization of the History DB on 1% of starts.
  </summary>
</histogram>

<histogram name="History.WeeklyHostCount" units="hosts"
    expires_after="2023-09-03">
  <owner>mpearson@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Unique hostnames in History database urls table with last-visit times in the
    last 7 days. Metrics are logged on initialization of the History DB on 0.3%
    of starts.
  </summary>
</histogram>

<histogram name="History.WeeklyURLCount" units="URLs"
    expires_after="2023-10-08">
  <owner>mpearson@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Unique URLs in History database urls table with last-visit times in the last
    7 days. Metrics are logged on initialization of the History DB on 0.3% of
    starts.
  </summary>
</histogram>

<histogram name="HistoryPage.ClickPosition" units="units"
    expires_after="2020-02-23">
  <owner>rpop@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of entries that the clicked entry is older than in History page. Last
    bucket is any entry of that value or higher.
  </summary>
</histogram>

<histogram name="HistoryPage.ClickPositionSubset" units="units"
    expires_after="M81">
  <owner>rpop@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Subset of the Click Position histogram. Contains only the first smaller
    subset of entries on the page. Number of entries that the clicked entry is
    older than in History page. Last bucket is entries of that value or higher.
  </summary>
</histogram>

<histogram name="HistoryPage.OtherDevicesMenu" enum="OtherSessionsActions"
    expires_after="never">
<!-- expires-never: part of top-line metric (internal: go/chrome-browser-nsm) -->

  <owner>rpop@google.com</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Histogram for usage of the section in the history page that allows the user
    to access tabs from other devices.

    OtherSessionsActions.OPENED_LINK_VIA_CONTEXT_MENU was added for M-76.

    This histogram is of special interest to the chrome-analysis-team@. Do not
    change its semantics or retire it without talking to them first.
  </summary>
</histogram>

<histogram name="HistoryPage.RemoveEntryPosition" units="units"
    expires_after="M81">
  <owner>rpop@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Number of entries that the deleted entry is older than in History page. Last
    bucket is any entry of that value or higher. Confirmed removal is not
    guaranteed, just an initiation of 'Remove selected items'.
  </summary>
</histogram>

<histogram name="HistoryPage.RemoveEntryPositionSubset" units="units"
    expires_after="M81">
  <owner>rpop@google.com</owner>
  <component>UI&gt;Browser&gt;History</component>
  <summary>
    Subset of Remove Entry Position histogram. Contains only the first smaller
    subset of entries on the page. Number of entries that the deleted entry is
    older than in History page. Last bucket is any entry of that value or
    higher. Confirmed removal is not guaranteed, just an initiation of 'Remove
    selected items'.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
