<!--
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 Notifications 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="MacOSNotificationStyle">
  <variant name="Alert" summary="Alert: Stays on screen"/>
  <variant name="Banner" summary="Banner: Auto dismisses"/>
</variants>

<variants name="NotificationAction">
  <variant name="ClickedBody.BadClick"
      summary="User performed a 'bad click' on the body of a notification,
               which is a click that did not do anything."/>
  <variant name="ClickedBody.GoodClick"
      summary="User performed a 'good click' on the body of a notification,
               which is a click that did do some actions."/>
  <variant name="CountOfNotificationShownInFirstMinutePerUser"
      summary="Count of notifications displayed in the first minute since
               login for a user"/>
  <variant name="NotificationAdded"
      summary="A notification was created and it was shown"/>
  <variant name="Popup.ClickedActionButton"
      summary="User clicks on an action button of a popup notification"/>
  <variant name="Popup.ClickedBody"
      summary="User clicks the body of a popup notification"/>
  <variant name="Popup.ClosedByUser.Click"
      summary="User closes a popup notification by clicking on the close
               button"/>
  <variant name="Popup.ClosedByUser.Swipe"
      summary="User closes a popup notification by swiping it away"/>
  <variant name="Popup.ExpireToTray"
      summary="A popup notification times out and is hidden (but still
               visible in the message center)"/>
  <variant name="Popup.Hover"
      summary="User hover on the body of a popup notification"/>
  <variant name="Popup.InlineReplySent"
      summary="User sends an inline reply in a popup notification"/>
  <variant name="Popup.SettingsShown.HoverControls"
      summary="User opens the settings of a popup notification by clicking on
               the hover button"/>
  <variant name="Popup.Shown" summary="A popup notification is shown"/>
  <variant name="Popup.Snoozed.HoverControls"
      summary="User clicks on the snooze button of a popup notification"/>
  <variant name="Tray.ClickedActionButton"
      summary="User clicks on the action button of a notification in the tray"/>
  <variant name="Tray.ClickedBody"
      summary="User clicks on the body of a notification in the tray"/>
  <variant name="Tray.ClosedByClearAll"
      summary="A tray notification is closed after the user clicks on the
               Clear All button (note that this is logged for each
               notification dismissed)"/>
  <variant name="Tray.ClosedByUser.Click"
      summary="User closes a tray notification by clicking on the close
               button"/>
  <variant name="Tray.ClosedByUser.Swipe"
      summary="User closes a tray notification by swiping it away"/>
  <variant name="Tray.Hover"
      summary="User hover on the body of a notification in the tray"/>
  <variant name="Tray.InlineReplySent"
      summary="User sends an inline reply for a tray notification"/>
  <variant name="Tray.SettingsShown.HoverControls"
      summary="User opens the settings by clicking on the hover button of a
               tray notification"/>
  <variant name="Tray.SettingsShown.SlideControls"
      summary="User opens the settings by clicking on the slide settings
               button of a tray notification"/>
  <variant name="Tray.Snoozed.HoverControls"
      summary="User snoozes a notification by clicking on the hover button of
               a tray notification"/>
  <variant name="Tray.Snoozed.SlideControls"
      summary="User snoozes a notification by clicking on the snooze button
               of a tray notification"/>
</variants>

<histogram name="Notifications.Actions" enum="NotificationActionType"
    expires_after="2023-10-08">
  <owner>dewittj@chromium.org</owner>
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The actions taken on notifications, recorded every time they happen. This
    histogram will record every single event that happens separately.
  </summary>
</histogram>

<histogram name="Notifications.Android.Build" enum="BooleanSuccess"
    expires_after="2023-08-27">
  <owner>peter@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <summary>
    Records whether we could successfully build a notification using Android's
    Notification Builder. If unsuccessful, we will silently drop the
    notification display request.
  </summary>
</histogram>

<histogram name="Notifications.Android.JobStartDelay" units="ms"
    expires_after="M96">
  <owner>peter@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <summary>
    Records the delay between scheduling a job with the JobScheduler (with a
    desired latency of 0ms, in response to a notification click) and receiving
    the onStartJob callback. Only measured on Android N and above.
  </summary>
</histogram>

<histogram name="Notifications.Android.SitesChannel" enum="BooleanUsage"
    expires_after="2023-08-27">
  <owner>peter@chromium.org</owner>
  <summary>
    Recorded when the Sites channel (which we hope to deprecate) is used as a
    fallback, when a site-specific notification channel is expected to exist but
    does not. Note, we only log when the sites channel is *used*, not when it is
    not used.
  </summary>
</histogram>

<histogram name="Notifications.AppNotificationStatus"
    enum="NotificationAppStatus" expires_after="never">
<!-- expires-never: Indicates whether Chrome has notification permission. -->

  <owner>peter@chromium.org</owner>
  <summary>
    Records whether notifications are enabled for Chrome, as the Android app,
    for each Web Notification that is being shown to the user.
  </summary>
</histogram>

<histogram name="Notifications.AuthorDataSize" units="bytes"
    expires_after="2018-08-30">
  <owner>peter@chromium.org</owner>
  <summary>
    The size, in bytes, of the author-provided data associated with a Web
    Notification. Recorded when a persistent Web Notification is being shown by
    the developer.
  </summary>
</histogram>

<histogram name="Notifications.Blocker.ScreenCapture.ClosedCount"
    units="notifications" expires_after="2023-09-10">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The number of muted notifications that got closed programmatically (e.g. by
    the developer via JS) during a screen capture session before they were shown
    to the user. Logged once after each screen capture session ends.

    This metric may be logged at possibly inappropriate times, such as when
    system profiles are being used. We expect that the number of &quot;0&quot;
    samples is likely an overestimate because of this. This issue is tracked in
    crbug.com/1385455.
  </summary>
</histogram>

<histogram name="Notifications.Blocker.ScreenCapture.MutedCount"
    units="notifications" expires_after="2023-09-10">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The number of notifications that got muted during a screen capture session
    instead of being shown to the user. This number might be higher than the
    actual number of queued notifications at the end of a session as some
    notifications might have been closed programmatically before that. Logged
    once after each screen capture session ends.

    This metric was expired between August 2022 and January 2023, and may be
    missing data until M111.

    This metric may be logged at possibly inappropriate times, such as when
    system profiles are being used. We expect that the number of &quot;0&quot;
    samples is likely an overestimate because of this. This issue is tracked in
    crbug.com/1385455.
  </summary>
</histogram>

<histogram name="Notifications.Blocker.ScreenCapture.ReplacedCount"
    units="notifications" expires_after="2023-09-10">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The number of muted notifications that got replaced during a screen capture
    session. The user will only see the final state of the notification without
    the previous versions. Logged once after each screen capture session ends.

    This metric may be logged at possibly inappropriate times, such as when
    system profiles are being used. We expect that the number of &quot;0&quot;
    samples is likely an overestimate because of this. This issue is tracked in
    crbug.com/1385455.
  </summary>
</histogram>

<histogram name="Notifications.Blocker.ScreenCapture.RevealDuration" units="ms"
    expires_after="2023-07-09">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the time from the start of a screen capture session until the user
    decided to reveal notification content again. Only logged if and when the
    user takes that action.

    This metric was expired between June 2022 and January 2023, and may be
    missing data until M111.

    This metric may be logged at possibly inappropriate times, such as when
    system profiles are being used. We expect that the number of &quot;0&quot;
    samples is likely an overestimate because of this. This issue is tracked in
    crbug.com/1385455.
  </summary>
</histogram>

<histogram name="Notifications.Blocker.ScreenCapture.SessionDuration"
    units="ms" expires_after="2023-09-10">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the length of a screen capture session. Notifications will be muted
    initially but the user may reveal them during a session. This metric will be
    logged after the screen capture session ends.

    This metric was expired between December 2022 and January 2023, and may be
    missing data until M111.

    This metric may be logged at possibly inappropriate times, such as when
    system profiles are being used. We expect that the number of &quot;0&quot;
    samples is likely an overestimate because of this. This issue is tracked in
    crbug.com/1385455.
  </summary>
</histogram>

<histogram name="Notifications.Blocker.ScreenCapture.SnoozedCount"
    units="notifications" expires_after="2023-07-09">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The number of snoozed notifications that got prevented from showing up on
    screen during a screen capture session. This means that the user clicked on
    the &quot;Snooze&quot; action of a muted notification and continued to
    receive notifications but we queued them without notifying the user at all.
    Logged once after each screen capture session ends.

    This metric was expired between August 2022 and January 2023, and may be
    missing data until M111.

    This metric may be logged at possibly inappropriate times, such as when
    system profiles are being used. We expect that the number of &quot;0&quot;
    samples is likely an overestimate because of this. This issue is tracked in
    crbug.com/1385455.
  </summary>
</histogram>

<histogram name="Notifications.Chime.Android.Events" enum="ChimeEvent"
    expires_after="never">
  <owner>dtrainor@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
<!-- expires-never: Monitors Chime notification stability. -->

  <summary>
    Various events when Chrome interacts with Chime notification platform.
    Recorded when Chrome registers to Chime service, receives notifications, and
    the user interacts with the notification.
  </summary>
</histogram>

<histogram name="Notifications.Chime.Android.Registration"
    enum="BooleanSuccess" expires_after="never">
  <owner>dtrainor@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
<!-- expires-never: Monitors Chime notification stability. -->

  <summary>
    Records the result of Chime notification platform registration. Each device
    may have multiple accounts registered. The registration happens right after
    opening Chrome.
  </summary>
</histogram>

<histogram name="Notifications.Cros.Actions.{NotificationAction}"
    enum="NotificationTypeDetailed" expires_after="2024-03-10">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the notification type when a notification interaction occurs:
    {NotificationAction}. ChromeOS only.
  </summary>
  <token key="NotificationAction" variants="NotificationAction"/>
</histogram>

<histogram
    name="Notifications.Cros.Actions.{NotificationAction}.GroupedByCatalog"
    enum="NotificationCatalogName" expires_after="2024-03-10">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the notification catalog name when a notification interaction
    occurs: {NotificationAction}. ChromeOS only.
  </summary>
  <token key="NotificationAction" variants="NotificationAction"/>
</histogram>

<histogram name="Notifications.Database.DeleteAllForOriginsResult"
    enum="NotificationDatabaseStatus" expires_after="M98">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of deleting all notification data for given
    origins. This happens when notification permissions are revoked for a site.
  </summary>
</histogram>

<histogram name="Notifications.Database.DeleteBeforeWriteResult"
    enum="NotificationDatabaseStatus" expires_after="2022-05-01">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of deleting notification data from the Web
    Notification database that share their tag (replacement identifier) with a
    notification that's about to be shown.
  </summary>
</histogram>

<histogram name="Notifications.Database.DeleteResult"
    enum="NotificationDatabaseStatus" expires_after="2022-04-24">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of deleting notification data from the Web
    Notification database.
  </summary>
</histogram>

<histogram name="Notifications.Database.DestroyResult"
    enum="NotificationDatabaseStatus" expires_after="2022-04-24">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of destroying the Web Notification database
    altogether.
  </summary>
</histogram>

<histogram name="Notifications.Database.ExpiredNotificationCount"
    units="notifications" expires_after="2023-10-22">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the number of expired notifications that were stored in the database
    and therefore got removed and closed on the system. Logged once at startup
    and every time we synchronize notifications after that (e.g. to schedule the
    next notification trigger event).
  </summary>
</histogram>

<histogram name="Notifications.Database.OldestNotificationTimeInMinutes"
    units="minutes" expires_after="2022-04-17">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the age of the oldest notification for an origin. Logged after
    handling a push event for that origin.
  </summary>
</histogram>

<histogram name="Notifications.Database.OpenAfterCorruptionResult"
    enum="NotificationDatabaseStatus" expires_after="2022-01-02">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of opening the Web Notification database
    after it has been destroyed in response to data corruption.
  </summary>
</histogram>

<histogram name="Notifications.Database.OpenResult"
    enum="NotificationDatabaseStatus" expires_after="never">
<!-- expires-never: core storage metric; consumed in separate dashboard (go/chrome-storage-dashboard) -->

  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of opening the Web Notification database.

    This metric may be logged at possibly inappropriate times, such as when
    system profiles are being used, for which the notification database is
    usually not required. This issue is tracked in crbug.com/1385455.
  </summary>
</histogram>

<histogram name="Notifications.Database.ReadForServiceWorkerResult"
    enum="NotificationDatabaseStatus" expires_after="2022-04-17">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of reading data of all notifications
    associated with a Service Worker from the Web Notification database.
  </summary>
</histogram>

<histogram name="Notifications.Database.ReadResult"
    enum="NotificationDatabaseStatus" expires_after="2023-06-18">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of reading data of a single notification
    from the Web Notification database.
  </summary>
</histogram>

<histogram name="Notifications.Database.WriteResult"
    enum="NotificationDatabaseStatus" expires_after="2023-04-16">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result status codes of writing data for a notification to the
    Web Notification database.
  </summary>
</histogram>

<histogram name="Notifications.LoadProfileResult" enum="BooleanSuccess"
    expires_after="2022-04-17">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the result of loading the profile when forwarding a notification
    event. Logged on each notification action (click, close, settings, disable)
    on platforms that use system notifications (not on Chrome OS or when we're
    using Chrome's notifications).
  </summary>
</histogram>

<histogram name="Notifications.macOS.ActionReceived.{Style}"
    enum="BooleanValid" expires_after="M96">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Whether the received notification action data is valid or not. If it is, we
    will continue to pass along the event. Logged on every action received by
    the system (click or close) on any {Style} style notification.
  </summary>
  <token key="Style" variants="MacOSNotificationStyle"/>
</histogram>

<histogram name="Notifications.macOS.Delivered.{Style}" enum="BooleanSuccess"
    expires_after="M96">
  <obsolete>
    Obsoleted April 2023. Histogram was removed after expiration.
  </obsolete>
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Whether delivering a notification to the system was successful or not.
    Logged every time we pass a notification with {Style} style to the system.
  </summary>
  <token key="Style" variants="MacOSNotificationStyle"/>
</histogram>

<histogram name="Notifications.macOS.LaunchedViaNotificationAction"
    enum="NotificationActionSource" expires_after="M97">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Logged when macOS launched either a browser or helper app as a result of a
    user clicking on a notification. This only happens if the process that
    displayed that notification unexpectedly died. Logged once after the process
    got started.
  </summary>
</histogram>

<histogram name="Notifications.macOS.ServiceProcessKilled" units="ms"
    expires_after="2022-08-07">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The runtime of the macOS notification service process to display alerts
    before it got killed unexpectedly. Logged when the service process dies.
  </summary>
</histogram>

<histogram name="Notifications.macOS.ServiceProcessRuntime" units="ms"
    expires_after="2022-08-14">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The runtime of the macOS notification service process to display alerts.
    Logged when we close the connection to the service process either on purpose
    or after it got killed unexpectedly.
  </summary>
</histogram>

<histogram name="Notifications.NonPersistentNotificationThirdPartyCount"
    enum="Boolean" expires_after="2023-09-01">
  <owner>awillia@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the number of non-persistent notifications that are displayed from a
    third-party context. Logged from
    BlinkNotificationServiceImpl::DisplayNonPersistentNotification after the
    notification passes the permissions check.
  </summary>
</histogram>

<histogram name="Notifications.NotificationHelper.ComServerModuleStatus"
    enum="NotificationHelperComServerModuleStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <summary>
    The execute status of a ComServerModule class instance. Logged whenever a
    notification_helper process is launched by Windows. Note: Not logged after
    M87 until end of August 2022.
  </summary>
</histogram>

<histogram
    name="Notifications.NotificationHelper.NotificationActivatorPrimaryStatus"
    enum="NotificationHelperNotificationActivatorPrimaryStatus"
    expires_after="2023-09-01">
  <owner>chengx@chromium.org</owner>
  <owner>finnur@chromium.org</owner>
  <summary>
    The primary execute status of NotificationActivator::Activate. Logged
    whenever a notification_helper process is launched by Windows. Note: Not
    logged after M85 until end of August 2022.
  </summary>
</histogram>

<histogram
    name="Notifications.NotificationHelper.NotificationActivatorSecondaryStatus"
    enum="NotificationHelperNotificationActivatorSecondaryStatus"
    expires_after="2023-09-01">
  <owner>chengx@chromium.org</owner>
  <owner>finnur@chromium.org</owner>
  <summary>
    The secondary execute status of NotificationActivator::Activate. Logged
    whenever a notification_helper process is launched by Windows. Note: Not
    logged after M85 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.NotificationHelper.ServerRuntime" units="ms"
    expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <summary>
    The runtime of the notification_helper server process. This process is
    created when a notification is activated from the Windows Action Center.
    Once created, this process does some COM class registration work, so that
    Windows can call certain APIs to handle the notification activation. Upon
    finishing the API calls, Windows signals this process to exit. Note: Not
    logged after M87 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.NotifierType" enum="NotifierType"
    expires_after="2023-09-03">
  <owner>tbarzic@chromium.org</owner>
  <owner>tengs@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    The number of times a notification was added for the various types of
    sources.
  </summary>
</histogram>

<histogram name="Notifications.Permissions.RevokeDeleteCount" units="units"
    expires_after="2022-08-28">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The number of notifications that got deleted from the NotificationDatabase
    after the notification permissions got revoked.
  </summary>
</histogram>

<histogram
    name="Notifications.Permissions.UNNotification.{Style}.PermissionRequest"
    enum="UNNotificationPermissionRequestResult" expires_after="M110">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The permission request result for sending out UNNotifications through the
    MacNotificationServiceUN. This is recorded when instantiating the service
    which happens at Chrome startup and each time we start the service after
    shutting it down when there were no more notifications on screen.
  </summary>
  <token key="Style" variants="MacOSNotificationStyle"/>
</histogram>

<histogram
    name="Notifications.Permissions.UNNotification.{Style}.PermissionStatus"
    enum="UNNotificationPermissionStatus" expires_after="M110">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The permission status for sending out UNNotifications through the
    MacNotificationServiceUN. This is recorded when instantiating the service
    which happens at Chrome startup and each time we start the service after
    shutting it down when there were no more notifications on screen.
  </summary>
  <token key="Style" variants="MacOSNotificationStyle"/>
</histogram>

<histogram name="Notifications.Permissions.UNNotification.{Style}.Style"
    enum="UNNotificationStyle" expires_after="M110">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The style of notifications being used for sending out UNNotifications
    through the MacNotificationServiceUN. This is recorded when instantiating
    the service which happens at Chrome startup and each time we start the
    service after shutting it down when there were no more notifications on
    screen.
  </summary>
  <token key="Style" variants="MacOSNotificationStyle"/>
</histogram>

<histogram name="Notifications.PerNotificationActions"
    enum="NotificationActionType" expires_after="2023-10-22">
  <owner>dewittj@chromium.org</owner>
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The actions taken on notifications, recorded once per notification, when it
    is closed. This differs from the Notifications.Actions histogram in that
    multiple events of the same type on a single notification will only record a
    single UMA event.
  </summary>
</histogram>

<histogram name="Notifications.PersistentNotificationActionCount"
    units="buttons" expires_after="2023-10-08">
  <owner>peter@chromium.org</owner>
  <summary>
    The number of action buttons the developer provided for a persistent Web
    Notification. Logged whenever showNotification is called.
  </summary>
</histogram>

<histogram name="Notifications.PersistentNotificationDisplayResult"
    enum="PersistentNotificationDisplayResult" expires_after="2023-04-16">
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The result of the promise returned by showNotification. Logged whenever
    showNotification is called.
  </summary>
</histogram>

<histogram name="Notifications.PersistentNotificationThirdPartyCount"
    enum="Boolean" expires_after="2023-09-01">
  <owner>awillia@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the number of persistent notifications that are displayed from a
    third-party context. Logged from
    BlinkNotificationServiceImpl::DisplayPersistentNotification after the
    notification passes the permissions check.
  </summary>
</histogram>

<histogram name="Notifications.PersistentWebNotificationClickEventResult"
    enum="ServiceWorkerStatusCode" expires_after="2022-05-01">
  <owner>peter@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <summary>
    Recorded delivery status for persistent notification clicks to a Service
    Worker when handling a click on a persistent WebNotification has finished.
  </summary>
</histogram>

<histogram name="Notifications.PersistentWebNotificationClickResult"
    enum="PlatformNotificationStatus" expires_after="2023-04-23">
  <owner>peter@chromium.org</owner>
  <owner>deepak.m1@samsung.com</owner>
  <summary>
    Recorded delivery status for persistent notification clicks to a Service
    Worker when handling a click on a persistent WebNotification has finished.
  </summary>
</histogram>

<histogram name="Notifications.PersistentWebNotificationCloseEventResult"
    enum="ServiceWorkerStatusCode" expires_after="M98">
  <owner>peter@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <summary>
    Records delivery status for persistent notification close events sent to a
    Service Worker when the event has been handled.
  </summary>
</histogram>

<histogram name="Notifications.PersistentWebNotificationCloseResult"
    enum="PlatformNotificationStatus" expires_after="2022-09-11">
  <owner>peter@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <summary>
    Records delivery status for persistent notification close events sent to a
    Service Worker when the event has been handled.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.BackgroundTask.Event"
    enum="NotificationSchedulerBackgroundTaskEvent" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the various events when running the background task in notification
    scheduling system.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.BackgroundTask.NotificationShown"
    units="notifications" expires_after="2023-06-04">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the number of notifications shown in each background task run.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.BackgroundTask.Start" units="hours"
    expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the hour (0-23) when the notification scheduler background task
    starts.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.IconDb.InitResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the initialization result of icon database for the notification
    scheduling system.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.IconDb.OperationResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the database operation result (except initialization) of icon
    database for the notification scheduling system.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.IconDb.RecordCount" units="records"
    expires_after="2022-09-11">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the number of records of icon database for the notification
    scheduling system when the icon database is initialized.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.IhnrActionButtonEvent"
    enum="NotificationSchedulerActionButtonEvent" expires_after="2022-12-31">
<!-- Name completed by histogram_suffixes name="NotificationSchedulerClientType" -->

  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records events for inline helpful/unhelpful action buttons on the
    notification when the buttons are shown or clicked.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.Impression.Count" units="records"
    expires_after="2022-12-31">
<!-- Name completed by histogram_suffixes name="NotificationSchedulerClientType" -->

  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the number of impression records in impression db right after the
    impression database is initialized.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.Impression.Event"
    enum="NotificationSchedulerImpressionEvent" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records various events in impression history tracker in notification
    scheduling system when the user interacts with the notification.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.ImpressionDb.InitResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the initialization result of impression database for the
    notification scheduling system.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.ImpressionDb.OperationResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the database operation result (except initialization) of impression
    database for the notification scheduling system.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.ImpressionDb.RecordCount"
    units="records" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the number of records of impression database for the notification
    scheduling system when the impression database is initialized.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.NotificationDb.InitResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the initialization result of notification database for the
    notification scheduling system.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.NotificationDb.OperationResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the database operation result (except initialization) of
    notification database for the notification scheduling system.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.NotificationDb.RecordCount"
    units="records" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the number of records of notification database for the notification
    scheduling system when the notification database is initialized.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.NotificationLifeCycleEvent"
    enum="NotificationSchedulerNotificationLifeCycleEvent"
    expires_after="2023-03-05">
<!-- Name completed by histogram_suffixes name="NotificationSchedulerClientType" -->

  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records life cycle events for a scheduled notification, when notification is
    scheduled, shown or encountering any error.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.PngIconConverter.DecodeResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the result of png icon converter decoding process in icon store for
    the notification scheduling system. It will be logged typically when
    scheduling system trying to display the notification to the client - the
    icon store will load entries, and decode icons to PNG format for delivery.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.PngIconConverter.EncodeResult"
    enum="BooleanSuccess" expires_after="2022-12-31">
  <owner>shaktisahu@chromium.org</owner>
  <owner>nyquist@chromium.org</owner>
  <summary>
    Records the result of png icon converter encoding process in icon store for
    the notification scheduling system. It will be logged typically when the
    client scheduled notification with icons - the icon store will then encode
    icons to string and store them in protodb.
  </summary>
</histogram>

<histogram name="Notifications.Scheduler.UserAction"
    enum="NotificationSchedulerUserActionType" expires_after="2022-12-31">
<!-- Name completed by histogram_suffixes name="NotificationSchedulerClientType" -->

  <owner>dtrainor@chromium.org</owner>
  <summary>
    Records the type of user action when the user interacts with notification
    sent from notification scheduler system.
  </summary>
</histogram>

<histogram name="Notifications.UsingSystemNotificationCenter"
    enum="BooleanSystemNotifications" expires_after="never">
<!-- expires-never: core to the notification user experience. -->

  <owner>peter@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <owner>thomasanderson@chromium.org</owner>
  <summary>
    Indicates if Chrome is using system notifications or the Chrome notification
    center. Logged on each start up.
  </summary>
</histogram>

<histogram name="Notifications.WebPlatformV2.{Action}.TimeToActivity"
    units="ms" expires_after="M112">
  <owner>peconn@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the delay between the user clicking on the {Action} of a web
    platform notification, and an Activity being launched. Only records if the
    duration is less than 10 seconds.
  </summary>
  <token key="Action">
    <variant name="ActionButton" summary="action button"/>
    <variant name="Body" summary="body"/>
  </token>
</histogram>

<histogram name="Notifications.WebPlatformV2.{Action}.TimeToClose" units="ms"
    expires_after="M112">
  <owner>peconn@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Records the delay between the user clicking on the {Action} of a web
    platform notification, and the notification being closed. Only records if
    the duration is less than 10 seconds.
  </summary>
  <token key="Action">
    <variant name="ActionButton" summary="action button"/>
    <variant name="Body" summary="body"/>
  </token>
</histogram>

<histogram name="Notifications.Windows.ActivationStatus"
    enum="WindowsNotificationActivationStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <owner>chengx@chromium.org</owner>
  <summary>
    The status of Activation requests in NotificationPlatformBridgeWin (Windows
    only). Logged whenever an activation from a notification occurs. Note: Not
    logged from January 2021 to end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.CloseStatus"
    enum="WindowsNotificationCloseStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of Close requests in NotificationPlatformBridgeWin (Windows
    only). Logged whenever a notification is closed. Note: Not logged after M98
    until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.CreateToastManagerErrorCode"
    enum="Hresult" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The HRESULT returned by the Windows Action Center, when trying to create a
    toast manager fails. This provides a more detailed error in the cases the
    histogram Notifications.Windows.DisplayStatus reported
    CREATE_TOAST_NOTIFIER_WITH_ID_FAILED. Note: Not logged after M89 until end
    of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.DisplayFailure" enum="Hresult"
    expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The HRESULT returned by the Windows Action Center, when showing a
    notification fails.
  </summary>
</histogram>

<histogram name="Notifications.Windows.DisplayStatus"
    enum="WindowsNotificationDisplayStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of Display requests in NotificationPlatformBridgeWin (Windows
    only). Logged whenever a notification is displayed. For a more detailed
    error about CREATE_TOAST_NOTIFIER_WITH_ID_FAILED and SHOWING_TOAST_FAILED,
    see Notification.Windows histograms CreateToastManagerErrorCode and
    ShowFailedErrorCode (respectively). Note: Not logged between January 2022
    until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.GetDisplayedLaunchIdStatus"
    enum="WindowsNotificationGetDisplayedLaunchIdStatus"
    expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of decoding launch ids while processing a GetDisplayed requests
    in NotificationPlatformBridgeWin (Windows only). Logged whenever a request
    to retrieve all displayed notifications comes in. Note: Not logged after M98
    until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.GetDisplayedStatus"
    enum="WindowsNotificationGetDisplayedStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of GetDisplayedStatus requests in NotificationPlatformBridgeWin
    (Windows only). Logged whenever a request to retrieve all displayed
    notifications comes in. Note: Not logged after M98 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.GetNotificationLaunchIdStatus"
    enum="WindowsNotificationGetNotificationLaunchIdStatus"
    expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of GetNotificationLaunchId requests in
    NotificationPlatformBridgeWin (Windows only). Logged whenever a request to
    decode the GetNotificationLaunchId comes in. Note: Not logged between
    January 2022 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.GetSettingPolicy"
    enum="WindowsNotificationGetSettingPolicy" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The policy value provided by get_Setting in NotificationPlatformBridgeWin
    (Windows only). Logged whenever a request to show a notification comes in.
    Note: Not logged after M98 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.GetSettingPolicyStartup"
    enum="WindowsNotificationGetSettingPolicy" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The policy value provided by get_Setting in NotificationPlatformBridgeWin
    (Windows only). Logged only once at startup on a task runner.
  </summary>
</histogram>

<histogram name="Notifications.Windows.GetSettingStatus"
    enum="WindowsNotificationGetSettingStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The return value of get_Setting calls in NotificationPlatformBridgeWin
    (Windows only). Logged whenever a request to show a notification comes in.
  </summary>
</histogram>

<histogram name="Notifications.Windows.GetSettingStatusStartup"
    enum="WindowsNotificationGetSettingStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>knollr@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The return value of get_Setting calls in NotificationPlatformBridgeWin
    (Windows only). Logged only once at startup on a task runner.
  </summary>
</histogram>

<histogram name="Notifications.Windows.HandleEventStatus"
    enum="WindowsNotificationHandleEventStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of HandleEvent requests in NotificationPlatformBridgeWin (Windows
    only). Logged whenever a notification event is being handled. Note: Not
    logged between January 2022 and end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.HistoryStatus"
    enum="WindowsNotificationHistoryStatus" expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of History requests in NotificationPlatformBridgeWin (Windows
    only). Logged whenever history is requested for notifications. Note: Not
    logged after M98 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.LaunchIdDecodeStatus"
    enum="WindowsNotificationLaunchIdDecodeStatus" expires_after="2023-09-01">
  <owner>chengx@chromium.org</owner>
  <owner>finnur@chromium.org</owner>
  <summary>
    Used to indicate the status of decoding an input launch id string (Windows
    only). Logged whenever a notification event is being handled. Note: Not
    logged after M87 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.OnFailedStatus"
    enum="WindowsNotificationOnFailedStatus" expires_after="2023-09-01">
  <owner>chengx@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of OnFailed requests in NotificationPlatformBridgeWin (Windows
    only). Logged whenever a failed event is handled. Note: Not logged after M98
    until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.SetReadyCallbackStatus2"
    enum="WindowsNotificationSetReadyCallbackStatus2"
    expires_after="2023-09-01">
  <owner>chengx@chromium.org</owner>
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The status of SetReadyCallback requests in NotificationPlatformBridgeWin
    (Windows only). Logged once at startup. Note: Not logged after M98 until end
    of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.ShowFailedErrorCode" enum="Hresult"
    expires_after="2023-09-01">
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    The HRESULT returned by the Windows Action Center, when trying to create a
    toast manager fails. This provides a more detailed error in the cases the
    histogram Notifications.Windows.DisplayStatus reported SHOWING_TOAST_FAILED.
    Note: Not logged after M98 until end of August 2022.
  </summary>
</histogram>

<histogram name="Notifications.Windows.StartMenuShortcutStatus"
    enum="WindowsNotificationStartMenuShortcutStatus"
    expires_after="2023-09-01">
  <owner>chengx@chromium.org</owner>
  <owner>finnur@chromium.org</owner>
  <owner>peter@chromium.org</owner>
  <summary>
    Used to indicate the status of start menu shortcut (Windows only). Logged
    whenever a notification display attempt is made. Note: Not logged after M98
    until end of August 2022.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
