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

<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file is used to generate a comprehensive list of Content histograms
along with a detailed description for each histogram.

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

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

<histogram-configuration>

<histograms>

<variants name="ContentAllProviderTypes">
  <variant name="default"/>
  <variant name="extension"/>
  <variant name="installed_webapp_provider"/>
  <variant name="notification_android"/>
  <variant name="one_time"/>
  <variant name="policy"/>
  <variant name="preference"/>
  <variant name="supervised_user"/>
  <variant name="tests"/>
  <variant name="tests_other"/>
  <variant name="webui_allowlist"/>
</variants>

<variants name="FeedNetworkRequestType">
  <variant name=".FeedQuery" summary="FeedQuery"/>
  <variant name=".FollowWebFeed" summary="FollowWebFeed"/>
  <variant name=".ListFollowedWebFeeds" summary="ListFollowedWebFeeds"/>
  <variant name=".ListRecommendedWebFeeds" summary="ListRecommendedWebFeeds"/>
  <variant name=".NextPage" summary="NextPage"/>
  <variant name=".QueryBackgroundFeed" summary="QueryBackgroundFeed"/>
  <variant name=".QueryInteractiveFeed" summary="QueryInteractiveFeed"/>
  <variant name=".QueryNextPage" summary="QueryNextPage"/>
  <variant name=".QueryWebFeed" summary="QueryWebFeed"/>
  <variant name=".SingleWebFeedListContents"
      summary="SingleWebFeedListContents"/>
  <variant name=".SupervisedFeed" summary="SupervisedFeed"/>
  <variant name=".UnfollowWebFeed" summary="UnfollowWebFeed"/>
  <variant name=".UploadActions" summary="UploadActions"/>
  <variant name=".WebFeedListContents" summary="WebFeedListContents"/>
</variants>

<histogram name="Content.Classification" enum="ContentClassification"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the webpage is a long-form article or not. This is logged when the
    user navigates away from the current page (via loading a different webpage
    or native page). It is only logged if the distillability of the page had
    been determined.
  </summary>
</histogram>

<histogram name="Content.Classification.OpenGraph"
    enum="ContentClassificationOpenGraph" expires_after="2024-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    What the Open Graph Protocol classification of the page is. This is logged
    when the user navigates to the current page. It is only logged if there is
    an 'og:type' property in the HTML of the page.
  </summary>
</histogram>

<histogram name="ContentCapture.CaptureContentDelayTime" units="ms"
    expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>src/third_party/blink/renderer/core/content_capture/OWNERS</owner>
  <summary>
    The time between a change in content and when the new capture is sent to the
    browser process.

    A specific content change is hard to track. This is roughly calculated as
    the interval from the first content change after a prior capturing content
    to the first content being sent after the next capture of content.
  </summary>
</histogram>

<histogram name="ContentCapture.CaptureContentTime2" units="microseconds"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>src/third_party/blink/renderer/core/content_capture/OWNERS</owner>
  <summary>
    The time taken to capture the on-screen content and group them by document.

    Note that this metrics is only recorded on clients on which a
    high-resolution clock is available.
  </summary>
</histogram>

<histogram name="ContentCapture.SendContentTime" units="microseconds"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>src/third_party/blink/renderer/core/content_capture/OWNERS</owner>
  <summary>
    The time taken to send the content to the browser process in batch.

    Note that this metrics is only recorded on clients on which a
    high-resolution clock is available.
  </summary>
</histogram>

<histogram name="ContentCapture.SentContentCount2" units="count"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>src/third_party/blink/renderer/core/content_capture/OWNERS</owner>
  <summary>The total number of content captures sent for a document.</summary>
</histogram>

<histogram name="ContentCapture.TaskDelayTimeInMs" units="ms"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>src/third_party/blink/renderer/core/content_capture/OWNERS</owner>
  <summary>
    The time taken for the task to start after it's scheduled.

    Note: The time of task that was scheduled for the retry wasn't measured
    because it is always 500ms.
  </summary>
</histogram>

<histogram name="ContentCapture.TaskRunsPerCapture" units="runs"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>src/third_party/blink/renderer/core/content_capture/OWNERS</owner>
  <summary>
    The number of the times the task runs for a content capture session.

    A content capture session begins with capturing on-screen content and ends
    in sending all changes.
  </summary>
</histogram>

<histogram name="ContentNotifications.ClientStatus.Enabled.ByProvider"
    enum="Boolean" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The status of the push notifications client toggle for Content.
  </summary>
</histogram>

<histogram name="ContentNotifications.ClientStatus.Sports.ByProvider"
    enum="Boolean" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The status of the push notifications client toggle for Sports.
  </summary>
</histogram>

<histogram name="ContentNotifications.DismissAction" enum="Boolean"
    expires_after="2024-12-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The user has dismissed a content notification.</summary>
</histogram>

<histogram name="ContentNotifications.EligibilityType"
    enum="ContentNotificationEligibilityType" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The Type of elegibility for a given user for the Content Notifications
    feature. Includes details about what UI entrypoint type the user is elegible
    for as well as whether they are in the control group for that entrypoint.
  </summary>
</histogram>

<histogram name="ContentNotifications.Notification.Action"
    enum="ContentNotificationActionType" expires_after="2024-12-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reports what actions has the user taken on a notification. This metric
    matches NAUs sent.
  </summary>
</histogram>

<histogram name="ContentNotifications.NotificationActionUpload.Success"
    enum="Boolean" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    After a notification action upload, whether the request succeeded or failed.
  </summary>
</histogram>

<histogram name="ContentNotifications.OpenURLAction.HasURL" enum="Boolean"
    expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    After a notification interaction, if the URL has successfully been parsed or
    if it has failed.
  </summary>
</histogram>

<histogram name="ContentNotifications.Promo.Prompt.Action"
    enum="ContentNotificationPromptAction" expires_after="2024-12-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The action taken by the user in response to the Set Up List Content
    Notification OS notification permission prompt.
  </summary>
</histogram>

<histogram
    name="ContentNotifications.Promo.ProvisionalNotifications.Entrypoint"
    enum="ContentNotificationPromoProvisionalEntrypoint"
    expires_after="2024-12-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Provisional notifications were turned on from the Notifications Promo.
  </summary>
</histogram>

<histogram name="ContentNotifications.Promo.SetUpList.Action"
    enum="ContentNotificationSetUpListPromoAction" expires_after="2024-12-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The action taken by the user in response to the Set Up List Content
    Notification promo.
  </summary>
</histogram>

<histogram name="ContentNotifications.Promo.SetUpList.Event"
    enum="ContentNotificationSetUpListPromoEvent" expires_after="2024-12-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Log the Set Up List Content Notification promo events.</summary>
</histogram>

<histogram name="ContentNotifications.Promo.Snackbar.Event"
    enum="ContentNotificationSnackbarEvent" expires_after="2024-12-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Log the Set Up List Content Notification confirmation snackbar events.
  </summary>
</histogram>

<histogram name="ContentNotifications.Promo.TopOfFeed.Action"
    enum="ContentNotificationTopOfFeedPromoAction" expires_after="2024-12-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The action taken by the user in response to the Top of Feed Content
    Notifications promo.
  </summary>
</histogram>

<histogram name="ContentNotifications.Promo.TopOfFeed.Event"
    enum="ContentNotificationTopOfFeedPromoAction" expires_after="2024-12-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    An event from the the Top of Feed Content Notifications promo.
  </summary>
</histogram>

<histogram name="ContentNotifications.Registration.BrowserStateUnavailable"
    enum="Boolean" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This logs if a SNo registration has not succeeded due to a BrowserState
    being unavailable at the time due to a Browser not being initialized.
  </summary>
</histogram>

<histogram name="ContentNotifications.Settings.Action"
    enum="ContentNotificationSettingsAction" expires_after="2024-12-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The action taken by the user in the content notification settings view.
  </summary>
</histogram>

<histogram
    name="ContentSettings.ActiveExpiry.{ProviderType}.ContentSettingsType"
    enum="PermissionType" expires_after="2025-07-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Logs the number of active expiries per provider type at content setting
    granularity. Events are recorded at expiry time.
  </summary>
  <token key="ProviderType" variants="ContentAllProviderTypes"/>
</histogram>

<histogram name="ContentSettings.AllowStorageAccessSync" units="ms"
    expires_after="2024-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures how long a sync call to ContentSettingsManager::AllowStorageAccess
    takes. Logged each time a sync call is made that is not cached.
  </summary>
</histogram>

<histogram name="ContentSettings.Bubble.StorageAccess.Action"
    enum="ContentSettingBubbleAction" expires_after="2024-07-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Logs actions within the StorageAccess bubble.</summary>
</histogram>

<histogram name="ContentSettings.ExtensionEmbeddedSettingSet"
    enum="ContentType" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Count of how often a specific content setting is set for an embedded URL by
    an extension. Only counts settings when the secondary pattern is different
    to the primary pattern. Exactly one of this or
    ContentSettings.ExtensionNonEmbeddedSettingSet will be emitted per call to
    contentSettings.set(), if the arguments to the call are valid.
  </summary>
</histogram>

<histogram name="ContentSettings.ExtensionNonEmbeddedSettingSet"
    enum="ContentType" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Count of how often a specific content setting is set when only a single
    pattern is specified. Exactly one of this or
    ContentSettings.ExtensionEmbeddedSettingSet will be emitted per call to
    contentSettings.set(), if the arguments to the call are valid.
  </summary>
</histogram>

<histogram name="ContentSettings.GetContentSetting.Network.Duration"
    units="microseconds" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures how long a call to network::CookieSettings::GetContentSetting
    takes. Logged each time a call is made. Note that histogram samples for
    clients without high-resolution clocks are dropped.
  </summary>
</histogram>

<histogram name="ContentSettings.GetCookieSettingInternal.Duration"
    units="microseconds" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures how long a call to CookieSettingBase::GetCookieSettingInternal
    takes. Logged each time a call is made. Note that histogram samples for
    clients without high-resolution clocks are dropped.
  </summary>
</histogram>

<histogram name="ContentSettings.IsAllowedByTpcdMetadataGrant.Duration"
    units="microseconds" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures how long a call to content_settings::IsAllowedByTpcdMetadataGrant
    takes when CookieSettingsBase::ShouldConsider3pcdMetadataGrantsSettings
    returns true. Logged each time a call is made. Note that histogram samples
    for clients without high-resolution clocks are dropped.
  </summary>
</histogram>

<histogram name="ContentSettings.NumberOfExceptions" units="units"
    expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The number of user defined hostname patterns for content settings at browser
    start. Warning: this histogram was expired from 2022-08-28 to 2022-09-21;
    data may be missing.
  </summary>
</histogram>

<histogram name="ContentSettings.PermissionRequested" enum="PermissionType"
    expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    Number of times a given permission was requested by a website and the user
    has the permission set to prompt (i.e. not blocked or allowed).

    Note this is probably not the metric you want - it does not correspond to
    the total number of times websites request a permission. Also, because
    specific permissions have code that can automatically block or grant
    permissions based on things like incognito, installed extensions etc., this
    does also not correspond to the number of times users are prompted to allow
    permissions.

    For a better metric to track how often users are prompted, either use
    ContentSettings.PermissionsActions*, or Permissions.Prompt.*.

    See https://crbug.com/638076 for more details.

    Warning: this histogram was expired from 2022-06-19 to 2022-09-21; data may
    be missing.
  </summary>
</histogram>

<histogram name="ContentSettings.Popups" enum="ContentSettingPopupAction"
    expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/blocked_content/OWNERS</owner>
  <summary>
    Tracks whether the popup content blocked puzzle piece was shown in the
    Omnibox, and how the user interacted with it.
  </summary>
</histogram>

<histogram name="ContentSettings.Popups.BlockerActions"
    enum="PopupBlockerAction" expires_after="2023-03-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/blocked_content/OWNERS</owner>
  <summary>
    Counts of various events related to the popup blocker. Including blocked
    popups and overridden (clicked through) popups. This is similar to the
    ContentSettings.Popups but is at the per-popup layer rather than at the UI
    layer.
  </summary>
</histogram>

<histogram name="ContentSettings.Popups.StrongBlockerActions"
    enum="StrongPopupBlockerAction" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <summary>
    Counts of various events related to the strong popup blocker (aka abusive
    experience enforcement), that is triggered via safe browsing.
  </summary>
</histogram>

<histogram name="ContentSettings.RegularProfile.DefaultAutoVerifySetting"
    enum="ContentSetting" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default Auto-verify setting at profile open. This histogram is only
    recorded for regular profiles.
  </summary>
</histogram>

<histogram name="ContentSettings.RegularProfile.DefaultBackgroundSyncSetting"
    enum="ContentSetting" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default permission setting for Background Sync at profile open. This
    histogram is only recorded for regular profiles.
  </summary>
</histogram>

<histogram name="ContentSettings.RegularProfile.DefaultStorageAccessSetting"
    enum="ContentSetting" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default storage access setting at profile open.

    This histogram is only recorded for regular profiles.
  </summary>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultAutoDarkWebContentSetting"
    enum="ContentSetting" expires_after="2023-02-19">
  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default auto dark web content setting at profile open. Recorded for
    Android only.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultAutoplaySetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default autoplay setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram name="ContentSettings.{RegularProfileFiltered}DefaultCookiesSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default cookies setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.

    This histogram was allowed to expire between 2023-02-26 and 2024-01-23.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultIdleDetectionSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default permission setting for idle detection at profile open.

    This histogram is only recorded {RegularProfileFiltered}.

    This histogram was allowed to expire between 2022-10-23 and 2023-08-03.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram name="ContentSettings.{RegularProfileFiltered}DefaultImagesSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default image setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.

    This histogram was allowed to expire between 2022-10-23 and 2023-08-03.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultJavaScriptSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default JavaScript setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultLocationSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default location setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultMediaStreamCameraSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default camera setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultMediaStreamMicSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default microphone setting at profile open. Warning: this histogram was
    expired from 2022-06-19 to 2022-09-21; data may be missing.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultMIDISysExSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default MIDI permission setting on sysex (system exclusive) messages at
    profile open. The default microphone setting at profile open. Warning: this
    histogram was expired from 2022-08-21 to 2022-09-21; data may be missing.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultNotificationsSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default notification setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram name="ContentSettings.{RegularProfileFiltered}DefaultPopupsSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default popups setting at profile open. Warning: this histogram was
    expired from 2022-08-21 to 2022-09-21; data may be missing.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultRequestDesktopSiteSetting"
    enum="ContentSetting" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The request desktop site content setting at profile open. Recorded for
    Android and iOS only.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram name="ContentSettings.{RegularProfileFiltered}DefaultSoundSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default sound setting at profile open.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultSubresourceFilterSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default subresource filter setting at profile open. Warning: this
    histogram was expired from 2022-06-19 to 2022-09-21; data may be missing.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultUsbGuardSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default permission setting for WebUSB at profile open.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}DefaultWebBluetoothGuardSetting"
    enum="ContentSetting" expires_after="never">
<!-- expires-never: tracked as an important permission metric. -->

  <owner>[email protected]</owner>
  <owner>src/components/permissions/PERMISSIONS_OWNERS</owner>
  <summary>
    The default permission setting for Web Bluetooth at profile open. Warning:
    this histogram was expired from 2022-08-21 to 2022-09-21; data may be
    missing.

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
</histogram>

<histogram
    name="ContentSettings.{RegularProfileFiltered}Exceptions.{ContentSettingsType}"
    units="units" expires_after="never">
<!-- expires-never: tracked as an important privacy metric. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of user defined content setting exceptions at browser start.
    Suffixed with the name of content setting types.

    Histogram content setting type: {ContentSettingsType}

    This histogram is only recorded {RegularProfileFiltered}.
  </summary>
  <token key="RegularProfileFiltered">
    <variant name="RegularProfile."
        summary="from version M-109. It is recorded only for regular profiles"/>
  </token>
  <token key="ContentSettingsType">
    <variant name="app-banner" summary="App banner exceptions"/>
    <variant name="auto-dark-web-content"
        summary="Auto-dark web contents exceptions"/>
    <variant name="auto-picture-in-picture"
        summary="Automatic picture-in-picture exceptions"/>
    <variant name="auto-select-certificate"
        summary="Auto-select cert exceptions"/>
    <variant name="automatic-downloads"
        summary="Automatic downloads exceptions"/>
    <variant name="autoplay" summary="Autoplay exception"/>
    <variant name="background-sync" summary="Background sync exceptions"/>
    <variant name="bluetooth-chooser-data" summary="Bluetooth chooser data"/>
    <variant name="bluetooth-guard" summary="Bluetooth guard exceptions"/>
    <variant name="client-hints" summary="Client hints"/>
    <variant name="cookies" summary="Cookies exceptions"/>
    <variant name="display-capture" summary="Display Capture Exceptions"/>
    <variant name="durable-storage" summary="Durable Storage Exceptions"/>
    <variant name="fullscreen" summary="Fullscreen exceptions"/>
    <variant name="geolocation" summary="Geolocation exceptions"/>
    <variant name="hid-chooser-data" summary="HID chooser data"/>
    <variant name="images" summary="Images exceptions"/>
    <variant name="important-site-info" summary="Important site info"/>
    <variant name="installed-web-app-metadata"
        summary="Installed web app metadata"/>
    <variant name="javascript" summary="JavaScript exceptions"/>
    <variant name="keygen" summary="Keygen exceptions"/>
    <variant name="media-engagement" summary="Media engagement exceptions"/>
    <variant name="media-stream-camera" summary="Camera exceptions"/>
    <variant name="media-stream-mic" summary="Microphone exceptions"/>
    <variant name="midi-sysex" summary="Midi exceptions"/>
    <variant name="mixed-script" summary="Mixed script exceptions"/>
    <variant name="mouselock" summary="Mouse lock exceptions"/>
    <variant name="notifications" summary="Notification exceptions"/>
    <variant name="password-protection" summary="Password protection"/>
    <variant name="permission-autoblocking-data"
        summary="Permission autoblocking data"/>
    <variant name="permission-autorevocation-data"
        summary="Permission autorevocation data"/>
    <variant name="plugins" summary="Plugins exceptions"/>
    <variant name="popups" summary="Popups exceptions"/>
    <variant name="ppapi-broker" summary="Ppapi broker exceptions"/>
    <variant name="protected-media-identifier"
        summary="Protected media exceptions"/>
    <variant name="protocol-handler" summary="Protocol handler exceptions"/>
    <variant name="push-messaging" summary="Push messaging exceptions"/>
    <variant name="request-desktop-site"
        summary="Request desktop site exceptions"/>
    <variant name="safe-browsing-url-check-data"
        summary="Safe browsing url check data"/>
    <variant name="serial-chooser-data" summary="Serial chooser data"/>
    <variant name="site-engagement" summary="Site engagement exceptions"/>
    <variant name="sound" summary="Sound exceptions"/>
    <variant name="ssl-cert-decisions" summary="SSL cert decisions exceptions"/>
    <variant name="storage-access" summary="Storage Access exceptions"/>
    <variant name="subresource-filter" summary="Subresource filter exceptions"/>
    <variant name="subresource-filter-data" summary="Subresource filter data"/>
    <variant name="tracking-protection"
        summary="Tracking Protection exceptions"/>
    <variant name="usb-chooser-data" summary="USB chooser data exceptions"/>
    <variant name="web-app-installation"
        summary="Web app installation exceptions"/>
    <variant name="webid-active-session" summary="FedCM Active Session"/>
    <variant name="webid-request" summary="FedCM Request"/>
    <variant name="webid-share" summary="FedCM Share"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.ActivityLoggingEnabled" enum="Boolean"
    expires_after="2024-10-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the feed was fetched with activity logging enabled. This is logged
    on every feed fetch.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.BrokenNTPHierarchy"
    enum="NTPBrokenViewHierarchyRelationship" expires_after="M120">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When the NTP view hierarchy is fixed upon NTP creation, this hisotgram logs
    which part was broken. Temporary log used to gather info for
    crbug.com/1262536.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.CanBeShown" enum="BooleanAllowed"
    expires_after="2024-06-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether showing the Feed is permitted. The Feed can be shown if (A) profile
    policies allow this, (B) the FeedAblationEnabled feature is disabled, and
    (C) the user has not turned it off in Settings.

    Note that this does not denote (A) whether the Feed is visible at the time
    the metric is emitted or (B) whether the Feed was ever visible during the
    browser process lifetime.

    iOS only. Emitted when building a MetricsLog for the current session.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentAgeOnLoad.BlockingRefresh"
    units="ms" expires_after="2024-01-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The time since locally stored content was fetched from the server.
    Reported when the feed surface is shown, and content is refreshed from the
    network. This typically only happens when content is stale, so this is a
    measurement of how stale content is before it's replaced by a blocking
    refresh. Feed v2 only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentAgeOnLoad.NotRefreshed"
    units="ms" expires_after="2024-01-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The time since locally stored content was fetched from the server.
    Reported when the feed surface is shown, and the local persisted feed
    content is loaded instead of a direct network refresh. This provides a
    measure of how stale feed content is when the feed loads without a blocking
    network request. Feed v2 only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentDuplication2.Position{Index}"
    enum="Boolean" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports whether the feed content at the specific position is
    duplicate to previous contents. The feed contents that are not viewed before
    are not counted towards the duplication even if they show up again. It is
    reported when the feed content is received from the server.
  </summary>
  <token key="Index">
    <variant name="1" summary="1"/>
    <variant name="2" summary="2"/>
    <variant name="3" summary="3"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentDuplication2.{Range}" units="%"
    expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the percentage of the duplicate contents received for a
    range of cards. The feed contents that are not viewed before are not counted
    towards the duplication even if they show up again. It is reported when the
    feed contents are received from the server.
  </summary>
  <token key="Range">
    <variant name="All" summary="All cards"/>
    <variant name="First10" summary="First 10 cards"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentLifetime.InvalidAge" units="ms"
    expires_after="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The invalid age lifetime of content fetched from the server.
    Reported when new content is served to the feed from the server. This
    provides a measure of how stale feed content is from the client side.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentLifetime.InvalidAgeIsPresent"
    enum="Boolean" expires_after="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: If the content lifetime of a feed response has a non zero invalid
    age when fetched from the server. Reported when new content is served to the
    feed from the server. This provides a measure of how stale feed content is
    from the client side.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentLifetime.StaleAge" units="ms"
    expires_after="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The stale age lifetime of content fetched from the server. Reported
    when new content is served to the feed from the server. This provides a
    measure of how stale feed content is from the client side.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ContentLifetime.StaleAgeIsPresent"
    enum="Boolean" expires_after="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: If the content lifetime of a feed response has a non zero stale age
    when fetched from the server. Reported when new content is served to the
    feed from the server. This provides a measure of how stale feed content is
    from the client side.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.Controls.Actions"
    enum="FeedControlsActions" expires_after="never">
<!-- expires-never: tracked as an important feed metric. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/feed/OWNERS</owner>
  <summary>Actions related to the feed controls.</summary>
</histogram>

<histogram name="ContentSuggestions.Feed.DisplayStatusOnOpen"
    enum="ContentSuggestionsDisplayStatus" expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The display status of the content suggestions when users open NTPs.
    Whether content suggestions are disabled by policy (e.g. enterprise or
    supervised users), enabled but collapsed, or enabled and expanded when a new
    NTP is created.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.DocumentViewSendCount100"
    units="documents" expires_after="2023-10-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Number of docids sent when loading the Feed from the network. Reported when
    the Feed is loaded from the network, when docview sending is allowed. This
    histogram has a maximum count of 100.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.DocumentViewSendCount1000"
    units="documents" expires_after="2023-10-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Number of docids sent when loading the Feed from the network. Reported when
    the Feed is loaded from the network, when docview sending is allowed. This
    histogram has a maximum count of 1000, see
    ContentSuggestions.Feed.DocumentViewSendCount100 for a more accurate
    representation of lower counts.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.DroppedDocumentViewCount"
    units="documents" expires_after="2023-10-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    If too many document IDs are stored within a short time period, they are
    dropped rather than recorded in
    ContentSuggestions.Feed.DocumentViewSendCount. This histogram is recorded
    when document IDs must be dropped in this way, and reports the number of IDs
    dropped.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.FeedSignInUI" enum="FeedSignInUI"
    expires_after="2024-02-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a signed out user triggered a sign-in related UI from feed
    personalization control. iOS only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.FeedSyncPromo" enum="FeedSyncPromo"
    expires_after="2023-10-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a user interacts with a Sync Promo inside the Feed, e.g.:
    accepting the bottom sync promo, or closing the top Sync promos. iOS only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ImageFetchStatus"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2024-01-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Status of image fetches for the feed. Recorded for each image
    fetch. Fetches happen when loading the feed or scrolling the feed. Fetched
    images are cached, so subsequent loads may not fetch again. Feed v2 only.
  </summary>
</histogram>

<histogram base="true" name="ContentSuggestions.Feed.LoadStepLatency"
    units="ms" expires_after="2024-07-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Latencies for individual steps taken to load the feed. This is reported at
    most once per Chrome execution, and only reported for a Feed load operation
    that ends with the Feed showing up on the UI. All steps added together tally
    to the total time taken.

    Feed v2 only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.LoadStreamStatus.LoadMore"
    enum="FeedLoadStreamStatus" expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Status of loading additional Feed content onto the bottom of the stream.
    Feed v2 only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ManualRefreshInterval" units="ms"
    expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The interval between current pull-to-refresh time and last time when the
    feed is refreshed (background refresh or pull-to-refresh), up to 1 day. This
    is reported when the pull-to-refresh occurs.
  </summary>
</histogram>

<histogram
    name="ContentSuggestions.Feed.Network.CompressedResponseSizeKB{NetworkRequestType}"
    units="KB" expires_after="2024-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The wire size (potentially compressed) of a {NetworkRequestType}
    network response received by the Feed's networking host. Recorded when a
    successful response is received.
  </summary>
  <token key="NetworkRequestType" variants="FeedNetworkRequestType">
    <variant name="" summary="Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.Network.Duration{NetworkEvent}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The amount of time a {NetworkEvent} network event took.</summary>
  <token key="NetworkEvent" variants="FeedNetworkRequestType">
    <variant name="" summary="Feed component"/>
    <variant name=".ActionUploadFailure" summary="ActionUploadFailure"/>
    <variant name=".ActionUploadSuccess" summary="ActionUploadSuccess"/>
    <variant name=".ArticlesFetchFailure" summary="ArticlesFetchFailure"/>
    <variant name=".ArticlesFetchSuccess" summary="ArticlesFetchSuccess"/>
    <variant name=".MoreArticlesFetchFailure"
        summary="MoreArticlesFetchFailure"/>
    <variant name=".MoreArticlesFetchSuccess"
        summary="MoreArticlesFetchSuccess"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.Network.FeedQueryRequestSize"
    units="bytes" expires_after="2023-10-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: the approximate size in bytes of the FeedQuery GET request.
    Recorded when a FeedQuery is sent.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.Network.RequestSizeKB.Compressed"
    units="KB" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: the size in kb of gzip-compressed requests sent by the Feed's
    networking host. Recorded when a request is sent.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.Network.RequestStatusCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2024-01-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The integer status code of network requests made by the feed
    library's networking host. This code includes both protocol(1xx-5xx) and
    non-protocol(-xxx) errors. Recorded when a request completes.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.Network.ResponseSizeKB" units="KB"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: the uncompressed size in KB of responses received by the Feed's
    networking host. Recorded when a successful response is received.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.Network.ResponseStatus{Type}"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The HTTP response status for a network request made by the Feed component.
  </summary>
  <token key="Type" variants="FeedNetworkRequestType"/>
</histogram>

<histogram name="ContentSuggestions.Feed.Network.TokenFetchStatus"
    enum="GoogleServiceAuthError" expires_after="2024-01-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: failure reason when attempting to fetch an OAuth token for the
    feed. Recorded when a token fetch completes.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.NoticeCardFulfilled" enum="Boolean"
    expires_after="2023-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports whether the notice card for feed action reporting has been
    fulfilled. Recorded when reading the response content of the feed query that
    is successful (includes both load stream and load more queries).
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.NoticeCardFulfilled2" enum="Boolean"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports whether the notice card for feed action reporting has been
    fulfilled. Recorded when reading the response content of the load stream
    query that is successful.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.RefreshTrigger"
    enum="FeedRefreshTrigger" expires_after="2025-05-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks triggers that ask the Discover engine to refresh the feed. However, a
    network call may or may not occur based on configuration thresholds.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ResourceFetchStatus"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Status of resource fetches for the feed. Recorded for each resource
    fetch. Fetches happen when the specific resource is needed to enhance the
    feed content while the feed is being displayed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.SendFeedback"
    enum="FeedSendFeedbackType" expires_after="2024-01-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Number of each type of feedback sent about the feed.</summary>
</histogram>

<histogram name="ContentSuggestions.Feed.SignInFromFeedAction.SignInSuccessful"
    enum="Boolean" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: If the user triggers a sign in action from somewhere in the Feed we
    track the status of the sign in as a boolean (successful=true, unsuccessful=
    false). This provides a measure of how many users are signing in via the
    Feed and features like Back of Card sign in promo vs other sign in avenues.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.TimeSpentInFeed" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    How long a user used the Feed in one day (local time midnight to midnight).
    Reported at most once per day. Usage reported is typically from the previous
    day, but could be from several days ago if the user is not active. Time is
    calculated starting with the first Feed interaction, until the Feed surface
    is closed, or the user is idle (no scrolling or other actions) for 30
    seconds.
  </summary>
</histogram>

<histogram
    name="ContentSuggestions.Feed.UnsignedUserPersonalization.CountValuesDuringStoreInitialization"
    units="count" expires_after="2023-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records count of entries in the pref store after the store is initialized
    (which happens during the feed service intiialization). The metric is
    recorded after the store is cleaned up and conpacted (as part of store
    initialization).
  </summary>
</histogram>

<histogram
    name="ContentSuggestions.Feed.UnsignedUserPersonalization.LinkClicked"
    units="count" expires_after="2023-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded everytime when the user clicks a feed link article and an entry is
    recorded to the user actions collector. The entry may not be recorded in
    certain cases (not a complete list): the URL of the clicked link was not
    valid, the MIDs was missing etc.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UploadActionsBatchStatus"
    enum="FeedUploadActionsBatchStatus" expires_after="2024-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Result of attempting to upload a batch of one or more actions.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UploadActionsStatus"
    enum="FeedUploadActionsStatus" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Result of an UploadActionsTask run in which zero or more batches of user
    actions are uploaded. See ContentSuggestions.Feed.UploadActionsBatchStatus
    for the status of a particular batch upload.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UploadVisibilityLog" enum="Boolean"
    expires_after="2023-07-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports whether the visibility log was uploaded successfully.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UploadVisibilityLog.{LogType}"
    enum="Boolean" expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports whether the {LogType} log was uploaded successfully.
  </summary>
  <token key="LogType">
    <variant name="Click" summary="click"/>
    <variant name="View" summary="view"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.UserActions" enum="FeedUserActionType"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts of Feed user actions. e.g. (Open a Card, Hide the Feed, etc.).
    Recorded when the user takes an explicit action related to the Feed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UserActions.Commands"
    enum="FeedUserCommandType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded whenever an Elements commands has taken place which wasn't handled
    explicitly by ContentSuggestions.Feed.UserActions. e.g. A new command to
    added server side to &quot;Report Content&quot;.(iOS only).
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UserJourney.GetMore.FailureDuration"
    units="ms" expires_after="2023-09-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between the UI requesting additional stream content and failure by
    either a 15 second timeout or a surface closure.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UserJourney.GetMore.SuccessDuration"
    units="ms" expires_after="2024-02-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between the UI requesting additional stream content and the content
    being provided within 15 seconds. Providing content entails showing either a
    cached or newly fetched Feed card.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.UserJourney.{Surface}.Failure"
    enum="Boolean" expires_after="2024-01-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reported when a user taps on a {Surface} card and the page is not loaded
    successfully within 20 seconds.
  </summary>
  <token key="Surface">
    <variant name="OpenCard" summary="For-You Feed"/>
    <variant name="OpenCard.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.UserJourney.{Surface}.SuccessDuration"
    units="ms" expires_after="2024-01-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time between a user tapping on a {Surface} card and the page finishes
    loading successfully. Only reported when loading takes less than 20 seconds.
  </summary>
  <token key="Surface">
    <variant name="OpenCard" summary="For-You Feed"/>
    <variant name="OpenCard.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram
    name="ContentSuggestions.Feed.UserJourney.{Surface}.{Status}Duration"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time between a {Surface} opening and either providing user content, or
    failing to provide content. Providing content entails showing either a
    cached or newly fetched Feed card within 15 seconds. Success is reported
    upon view of the card. Failure is reported when either the surface is closed
    or a timeout of 15 seconds expires.
  </summary>
  <token key="Surface">
    <variant name="OpenFeed" summary="For-You Feed"/>
    <variant name="OpenFeed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="OpenFeed.WebFeed" summary="Web Feed"/>
  </token>
  <token key="Status">
    <variant name="Failure" summary="Failure"/>
    <variant name="Success" summary="Success"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.UserSettingsOnStart"
    enum="FeedUserSettingsOnStart" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The state of some account settings that affect Feed users. Reported once at
    startup (to a single bucket), for all users. Note that this histogram uses
    data cached from the last time the Feed was fetched. Android only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ViewedCardCountAtManualRefresh"
    units="count" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the number of cards viewed at the time of pull-to-refresh. This is
    reported when the pull-to-refresh occurs. This is computed as the number of
    cards that are viewed (2/3rds of card is in the viewport) since last time
    when the feed is refreshed (background refresh or pull-to-refresh).
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.ViewedCardPercentageAtManualRefresh"
    units="%" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the percentage of cards viewed at the time of pull-to-refresh. This
    is reported when the pull-to-refresh occurs. This is computed as the
    percentage of cards that are viewed (2/3rds of card is in the viewport)
    since last time when the feed is refreshed (background refresh or
    pull-to-refresh).
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.VisibilityLoggingEnabled"
    enum="Boolean" expires_after="2023-07-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports whether visibility logging is enabled when logging is
    attempted.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.VisitDuration" units="ms"
    expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Time spent reading the page linked by an opened suggestion card.
    This is a lower-bound time. Does not include time after Chrome is closed and
    re-opened. Does not include time after the visited tab no longer has focus,
    or after the tab is navigated. For the 'open in new tab' action, time starts
    when the user switches to the new tab. If the user returns by tapping the
    suggestion again, it will be recorded as another entry in this histogram.

    Feed v2 only.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.FollowByIdResult"
    enum="WebFeedSubscriptionRequestStatus" expires_after="2024-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The result of following a WebFeed when the Web Feed ID is known.
    Reported when the follow is attempted, once per request. Triggered by a
    user's request to follow a Web Feed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.FollowCount.{Event}"
    units="follows" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The number of web feeds the user is following. Reported {Event}.
  </summary>
  <token key="Event">
    <variant name="AfterFollow" summary="after a successful follow action"/>
    <variant name="AfterUnfollow" summary="after a successful unfollow action"/>
    <variant name="ContentShown"
        summary="after the Following feed is shown, and some content is
                 displayed"/>
    <variant name="NoContentShown"
        summary="after the Following Feed is shown, and no content is
                 available for display"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.FollowUriResult"
    enum="WebFeedSubscriptionRequestStatus" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The result of following a WebFeed when the Web Feed ID is NOT
    known. Reported when the follow is attempted, once per request. Triggered by
    a user's request to follow a Web Feed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.GetRssLinksRendererTime"
    units="microseconds" expires_after="2023-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The time spent by the renderer main thread to collect and send back
    to the browser process a list of RSS/Atom links embedded in a web page. This
    is recorded every time the renderer fulfills a request for these links,
    currently only requested by the web feeds system. This histogram is only
    logged in platforms with high-resolution clocks.
  </summary>
</histogram>

<histogram
    name="ContentSuggestions.Feed.WebFeed.LoadedCardCount.{ContentOrder}"
    units="index" expires_after="2023-07-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the total number of {ContentOrder} cards in the Following
    feed when data is successfully loaded to be presented to the user. Reported
    after an initial load. Only one of 'Grouped' or 'ReverseChron' is reported
    for each stream load.
  </summary>
  <token key="ContentOrder">
    <variant name="Grouped" summary="Grouped"/>
    <variant name="ReverseChron" summary="ReverseChron"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.NewFollow.ChangeReason"
    enum="WebFeedChangeReason" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Change reason for the follow.

    Reported upon successfully following a web feed. Reported as 'true' if the
    web feed was recommended, even if the user did not see or interact with
    recommendation UI.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.NewFollow.IsRecommended"
    enum="Boolean" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the followed web feed was recommended by the server.

    Reported upon successfully following a web feed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.PageInformationRequested"
    enum="WebFeedPageInformationRequestReason" expires_after="2023-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the web feeds system is requesting information from
    the renderer process about a loaded web page.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.PostFollowDialog.Show"
    enum="WebFeedPostFollowDialogPresentation" expires_after="2024-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports which presentation of the post-follow dialog is shown.
    Reported when the post-follow dialog is displayed, after the user follows a
    Web Feed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.QueryResult"
    enum="WebFeedQueryRequestStatus" expires_after="2024-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the result of a user's request to query a Web Feed.
    Reported after the query attempt has completed, once per request.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.RefreshContentOrder"
    enum="FeedContentOrder" expires_after="2023-07-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The content order requested when refreshing content on the Following feed.
    Reported before sending a refresh request to the server. Not reported for
    NextPage requests.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.RefreshRecommendedFeeds"
    enum="WebFeedRefreshStatus" expires_after="2023-07-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the status of attempting to refresh the list of recommended
    Web Feeds from the server. The refresh occurrs periodically when the
    information is stale.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.RefreshSubscribedFeeds.{Kind}"
    enum="WebFeedRefreshStatus" expires_after="2023-07-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the status of attempting to refresh the list of subscribed
    Web Feeds from the server. {Kind}
  </summary>
  <token key="Kind">
    <variant name="Force"
        summary="Refresh is forced to fetch the most up to date list."/>
    <variant name="Stale"
        summary="Refresh is triggered because stored subscriptions are stale."/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.SortType" enum="FeedSortType"
    expires_after="2025-06-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The sort type that was selected from the feed's sort menu.</summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.SortTypeWhenEngaged"
    enum="FeedSortType" expires_after="2025-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The currently selected sort type when the user has engaged with the
    Following feed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.WebFeed.UnfollowResult"
    enum="WebFeedSubscriptionRequestStatus" expires_after="2025-05-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The result of attempting to unfollow a WebFeed. Reported when the
    unfollow is attempted, once per request. Triggered by a user's request to
    unfollow a Web Feed.
  </summary>
</histogram>

<histogram name="ContentSuggestions.Feed.{PlayType}Video.InitializationError"
    enum="FeedVideoInitializationError" expires_after="2023-07-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: records errors occurred during the video player initialization. The
    embedded video player needs to be initialized before it can be used to play
    a video in {PlayType} mode. In autoplay muted mode, the initialization may
    kick off even before the video view is scrolled to become visible. In normal
    unmuted mode, this happens when the user taps the video to launch the video
    in fullscreen playing mode.
  </summary>
  <token key="PlayType">
    <variant name="AutoplayMuted"/>
    <variant name="NormalUnmuted"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.{PlayType}Video.PlayError"
    enum="FeedVideoPlayError" expires_after="2023-01-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: records errors occurred during the video playing, in {PlayType}
    mode. Upon the successful initialization of the embedded player, the video
    starts to play and any error occurs since then is reported here.
  </summary>
  <token key="PlayType">
    <variant name="AutoplayMuted"/>
    <variant name="NormalUnmuted"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.Feed.{PlayType}Video.PlayEvent"
    enum="FeedVideoPlayEvent" expires_after="2023-01-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: records events triggered during the video playing, in {PlayType}
    mode.
  </summary>
  <token key="PlayType">
    <variant name="AutoplayMuted"/>
    <variant name="NormalUnmuted"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.SingleWebFeed.EntryPoint"
    enum="SingleWebFeedEntryPoint" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: reports the entry point used to launch the single web feed view.
  </summary>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.Activity"
    enum="FeedActivityBucket" expires_after="2025-05-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks user activity buckets with {FeedType}. Each bucket composed of the
    user's activity level. Logs the for the first time 1 day after the metric is
    active (only on first time use), then logs an activity bucket after at least
    24hrs from the last log have elapsed. When the &quot;Engaged&quot; metric is
    triggered we log one more day of activity during the past 28 days.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="the For-You feed"/>
    <variant name="Feed.AllFeeds" summary="All Feeds combined"/>
    <variant name="Feed.WebFeed" summary="the Following/Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.Activity.ByProvider"
    enum="FeedActivityBucket" expires_after="2024-11-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks user activity buckets for the filter. Reported every time a metric is
    reported through the MetricsProvider to allow filtering. The histogram used
    for analysis is ContentSuggestions.{FeedType}.Activity, whilst this one will
    only be used for the filter. Any changes to
    ContentSuggestions.{FeedType}.Activity will also change how this metric is
    reported.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="the For-You feed"/>
    <variant name="Feed.AllFeeds" summary="All Feeds combined"/>
    <variant name="Feed.WebFeed" summary="the Following/Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.CardIndexOnSwitch" units="index"
    expires_after="2023-04-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    iOS: Before switching to a new feed type, logs the index of the last visible
    card.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.EngagementType"
    enum="FeedEngagementType" expires_after="never">
<!-- expires-never: key feature metric.  We will need the Engagement
       type as long as we have a feed, and it will be removed with the
       feed code if the feed is ever removed. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks user behavior with {FeedType}. Each bucket is one of two types of
    metric. Per-visit metrics sample once per &quot;visit&quot;, which is a
    cluster of user activities separated by less than 5 minutes of inactivity.
    Per-visit metrics record a sample at the moment that the visit's criteria
    are first met. Per-interaction metrics are not clustered and report samples
    immediately. In the UI, Bucket Proportion and Total Count are not meaningful
    as these metrics are not independent. All buckets of this metric can be
    moved by changes in the Discover service as well as by client changes.
    go/discover-oncall describes how to get in touch with Discover oncall
    engineers.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="the For-You Feed"/>
    <variant name="Feed.AllFeeds" summary="all Feeds combined"/>
    <variant name="Feed.SingleWebFeed" summary="the single web feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="the Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.FollowCount.Engaged2"
    units="follows" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The number of web feeds the user is following. Reported at most
    once per feed visit, when the user engages (FeedEngagementType.Engaged,
    non-Simple) with {FeedType}.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="the For-You feed"/>
    <variant name="Feed.AllFeeds"
        summary="either the For-You or Following/Web feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="the Following/Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.InfoCard.{Action}"
    enum="FeedInfoCardType" expires_after="2025-05-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Reports when {Action} has occurred for an info card. The type of the info
    card was reported. Available in iOS as of M126.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
  <token key="Action">
    <variant name="Clicked" summary="clicked"/>
    <variant name="Dismissed" summary="dismissed explicitly"/>
    <variant name="Reset" summary="state reset"/>
    <variant name="Started" summary="started to track view"/>
    <variant name="Viewed" summary="viewed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.LoadedCardCount" units="index"
    expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the total number of cards when the {FeedType} data is
    successfully loaded to be presented to the user. Reported after an initial
    load. Not reported after a NextPage request. When loading data from local
    storage, previously fetched NextPage cards are counted though.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram
    name="ContentSuggestions.{FeedType}.LoadMoreTrigger.OffsetFromEndOfStream"
    units="cards" expires_after="2024-01-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of cards not yet scrolled into visibility at the moment the Feed
    decides to load more content.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="Supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.LoadMoreTrigger.TotalCards"
    units="cards" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total number of cards in the feed stream at the moment the Feed decides
    to load more content.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="Supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram
    name="ContentSuggestions.{FeedType}.LoadStreamStatus.BackgroundRefresh"
    enum="FeedLoadStreamStatus" expires_after="2024-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Status of loading new {FeedType} data in the background. Reported
    any time Chrome attempts to fetch fresh Feed content in the background. This
    is either due to a background fetch schedule, or when fetching the Web-Feed
    while the For-You feed is active.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.LoadStreamStatus.Initial"
    enum="FeedLoadStreamStatus" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Status of loading the initial {FeedType} stream, which happens when
    the {FeedType} surface is shown. Feed v2 only.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram
    name="ContentSuggestions.{FeedType}.LoadStreamStatus.InitialFromStore"
    enum="FeedLoadStreamStatus" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The status of loading the Feed from the local store. Reported when
    loading the Feed for display. Recorded at the same time as
    ContentSuggestions.{FeedType}.LoadStreamStatus.Initial to differentiate
    between store errors and network fetch results.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.LoadStreamStatus.ManualRefresh"
    enum="FeedLoadStreamStatus" expires_after="2024-01-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: status of pulling-to-refresh the {FeedType} stream per the user
    request. Reported when the refresh completes.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.Opened" units="index"
    expires_after="never">
<!-- expires-never: key feature metric.  We will need the Opened
     metric as long as we have a feed, and it will be removed with the
     feed code if the feed is ever removed. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The position of the {FeedType} card on it's surface, that is
    clicked through to the host website of the content. We track the position
    the card had in the list when it was first seen by the user. This tracked
    position can be different from the position observed by the user, e.g. when
    the user dismissed some suggestions from the list or requested more that got
    inserted in the middle of the feed.
  </summary>
  <token key="FeedType">
    <variant name="Feed.SingleWebFeed" summary="the single Single Web feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="the Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.ReachedEndOfFeed" units="index"
    expires_after="2024-05-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the number of cards in the {FeedType}. Reported when the
    last card of the {FeedType} is shown. Note that this is reported even if the
    Feed is attempting to load additional content (LoadMore), as long as the
    last card is 2/3rds shown before additional content loads. In this case,
    this histogram can be reported multiple times without leaving the Feed
    surface.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.SharedStateSizeKB" units="KB"
    expires_after="2024-05-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the total size in KB of the shared state for the
    {FeedType}. Reported once when loading {FeedType} content for display, and
    once each time additional pages of content are added.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.Shown" units="index"
    expires_after="never">
<!-- expires-never: key feature metric.  We will need the Shown
       metric as long as we have a feed, and it will be removed with
       the feed code if the feed is ever removed. -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: The position of a {FeedType} card that was shown on it's surface. A
    card is considered shown when at least 2/3 of its height is visible on the
    screen. For each card, at most one impression is recorded per instance. We
    track the position the card had in the list when it was first seen by the
    user. This tracked position can be different from the position observed by
    the user, e.g. when the user dismissed some suggestions from the list or
    requested more that got inserted in the middle of the feed.
  </summary>
  <token key="FeedType">
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="Supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

<histogram name="ContentSuggestions.{FeedType}.StreamContentSizeKB" units="KB"
    expires_after="2024-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Android: Reports the total size in KB of all of the {FeedType} content (not
    including shared state, or dynamically fetched media). Reported once when
    loading {FeedType} content for display, and once each time additional pages
    of content are added.
  </summary>
  <token key="FeedType">
    <variant name="Feed" summary="For-You Feed"/>
    <variant name="Feed.SingleWebFeed" summary="Single Web Feed"/>
    <variant name="Feed.SupervisedFeed" summary="the supervised Feed"/>
    <variant name="Feed.WebFeed" summary="Web Feed"/>
  </token>
</histogram>

</histograms>

</histogram-configuration>