chromium/chrome/browser/notifications/scheduler/internal/stats.h

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

#ifndef CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_INTERNAL_STATS_H_
#define CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_INTERNAL_STATS_H_

#include "chrome/browser/notifications/scheduler/public/notification_scheduler_types.h"

namespace notifications {
struct NotificationData;
namespace stats {

// Used to log events for inline helpful/unhelful button events. Don't reuse or
// delete values. Needs to match NotificationSchedulerActionButtonEvent in
// enums.xml.
enum class ActionButtonEvent {};

// Event to track the life cycle of a scheduled notification. Don't reuse or
// delete values. Needs to match NotificationSchedulerNotificationLifeCycleEvent
// in enums.xml.
enum class NotificationLifeCycleEvent {};

// Enum to distinguish different databases used in notification scheduling
// system.
enum class DatabaseType {};

// Logs the user action when the user interacts with notification sent from the
// scheduling system.
void LogUserAction(const UserActionData& user_action_data);

// Logs the number of notification shown in the current background task.
void LogBackgroundTaskNotificationShown(int shown_count);

// Logs metrics before showing the notification.
void LogNotificationShow(const NotificationData& notification_data,
                         SchedulerClientType client_type);

// Logs scheduled notification life cycle event.
void LogNotificationLifeCycleEvent(NotificationLifeCycleEvent event,
                                   SchedulerClientType client_type);
}  // namespace stats
}  // namespace notifications

#endif  // CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_INTERNAL_STATS_H_