blob: 2e74ab619e8d483a7326a849a7d447fd8745adaf [file] [log] [blame]
// 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 {
// Events to track behavior of the background task used by notification
// scheduling system. Used in histograms, don't reuse or delete values. Needs to
// match NotificationSchedulerBackgroundTaskEvent in enums.xml.
enum class BackgroundTaskEvent {
// Background task starts.
kStart = 0,
// Background task finishes and stopped gracefully.
kFinish = 1,
// The background task is stopped by the OS without finishing the its job.
kStopByOS = 2,
kMaxValue = kStopByOS
};
// 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 {
// The notification is shown with IHNR buttons.
kShown = 0,
// Clicks on the helpful button.
kHelpfulClick = 1,
// Clicks on the unhelpful button.
kUnhelpfulClick = 2,
kMaxValue = kUnhelpfulClick
};
// Used to log events in impression tracker. Don't reuse or delete values. Needs
// to match NotificationSchedulerImpressionEvent in enums.xml.
enum class ImpressionEvent {
// A new suppression is created to stop certain type of notification to show.
kNewSuppression = 0,
// The suppression is released due to new user action.
kSuppressionRelease = 1,
// The suppression is expired.
kSuppressionExpired = 2,
kMaxValue = kSuppressionExpired
};
// 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 {
// The client requests to schedule the notification.
kScheduleRequest = 0,
// The notification is successfully scheduled.
kScheduled = 1,
// The notification is dropped due to invalid input parameters.
kInvalidInput = 2,
// The notification is shown to the user.
kShown = 3,
// The notification is canceled by the client before showing the notification.
kClientCancel = 4,
kMaxValue = kClientCancel
};
// Enum to distinguish different databases used in notification scheduling
// system.
enum class DatabaseType {
kImpressionDb = 0,
kNotificationDb = 1,
kIconDb = 2,
};
// Logs the user action when the user interacts with notification sent from the
// scheduling system.
void LogUserAction(const UserActionData& user_action_data);
// Logs events to track the behavior of the background task used by notification
// scheduling system.
void LogBackgroundTaskEvent(BackgroundTaskEvent event);
// Logs the number of notification shown in the current background task.
void LogBackgroundTaskNotificationShown(int shown_count);
// Logs database initialization result and the number of records in the
// database.
void LogDbInit(DatabaseType type, bool success, int entry_count);
// Logs the database operation result.
void LogDbOperation(DatabaseType type, bool success);
// Logs the number of impression data in the impression database.
void LogImpressionCount(int impression_count, SchedulerClientType type);
// Logs user impression events for notification scheduling system.
void LogImpressionEvent(ImpressionEvent event);
// 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);
// Logs png icon converter encode result.
void LogPngIconConverterEncodeResult(bool success);
// Logs png icon converter decode result.
void LogPngIconConverterDecodeResult(bool success);
} // namespace stats
} // namespace notifications
#endif // CHROME_BROWSER_NOTIFICATIONS_SCHEDULER_INTERNAL_STATS_H_