123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- // Copyright (c) 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef ASH_SYSTEM_MESSAGE_CENTER_METRICS_UTILS_H_
- #define ASH_SYSTEM_MESSAGE_CENTER_METRICS_UTILS_H_
- #include "ash/ash_export.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/message_center/public/cpp/notification.h"
- #include "ui/message_center/views/message_popup_view.h"
- namespace ash {
- namespace metrics_utils {
- // Keep in sync with enum in tools/metrics/histograms/enums.xml.
- enum NotificationTypeDetailed : int {
- CHROME_APP_PRIORITY_MINUS_TWO = 0,
- CHROME_APP_PRIORITY_MINUS_TWO_REQUIRE_INTERACTION = 1,
- CHROME_APP_PRIORITY_MINUS_ONE = 2,
- CHROME_APP_PRIORITY_MINUS_ONE_REQUIRE_INTERACTION = 3,
- CHROME_APP_PRIORITY_ZERO = 4,
- CHROME_APP_PRIORITY_ZERO_REQUIRE_INTERACTION = 5,
- CHROME_APP_PRIORITY_ONE = 6,
- CHROME_APP_PRIORITY_ONE_REQUIRE_INTERACTION = 7,
- CHROME_APP_PRIORITY_TWO = 8,
- CHROME_APP_PRIORITY_TWO_REQUIRE_INTERACTION = 9,
- ARC_PRIORITY_MINUS_TWO = 10,
- ARC_PRIORITY_MINUS_TWO_PINNED = 11,
- ARC_PRIORITY_MINUS_ONE = 12,
- ARC_PRIORITY_MINUS_ONE_PINNED = 13,
- ARC_PRIORITY_ZERO = 14,
- ARC_PRIORITY_ZERO_PINNED = 15,
- ARC_PRIORITY_ONE = 16,
- ARC_PRIORITY_ONE_PINNED = 17,
- ARC_PRIORITY_TWO = 18,
- ARC_PRIORITY_TWO_PINNED = 19,
- WEB = 20,
- WEB_REQUIRE_INTERACTION = 21,
- CROS_PRIORITY_MINUS_TWO = 22,
- CROS_PRIORITY_MINUS_TWO_PINNED = 23,
- CROS_PRIORITY_MINUS_ONE = 24,
- CROS_PRIORITY_MINUS_ONE_PINNED = 25,
- CROS_PRIORITY_ZERO = 26,
- CROS_PRIORITY_ZERO_PINNED = 27,
- CROS_PRIORITY_ONE = 28,
- CROS_PRIORITY_ONE_PINNED = 29,
- CROS_PRIORITY_TWO = 30,
- CROS_PRIORITY_TWO_PINNED = 31,
- CROS_SYSTEM_PRIORITY = 32,
- CROS_SYSTEM_PRIORITY_PINNED = 33,
- CROS_SYSTEM_PRIORITY_WARNING = 34,
- CROS_SYSTEM_PRIORITY_WARNING_PINNED = 35,
- CROS_SYSTEM_PRIORITY_CRITICAL_WARNING = 36,
- CROS_SYSTEM_PRIORITY_CRITICAL_WARNING_PINNED = 37,
- OTHER = 38,
- PHONEHUB_PRIORITY_MINUS_TWO = 39,
- PHONEHUB_PRIORITY_MINUS_ONE = 40,
- PHONEHUB_PRIORITY_ZERO = 41,
- PHONEHUB_PRIORITY_ONE = 42,
- PHONEHUB_PRIORITY_TWO = 43,
- kMaxValue = PHONEHUB_PRIORITY_TWO,
- };
- // These are the types of notification view that we are interested in recording
- // metrics. A notification view might contain an image, a set of action buttons,
- // and some of those buttons might enable inline reply. This enum covers all the
- // possible variations for a notification view with image, action buttons and
- // inline reply, and whether it is part of a group notification or not.
- // Note to keep in sync with enum in tools/metrics/histograms/enums.xml.
- enum class NotificationViewType {
- SIMPLE = 0, // no image, action buttons and inline reply.
- GROUPED_SIMPLE = 1,
- HAS_IMAGE = 2, // has image, no action buttons and inline reply.
- GROUPED_HAS_IMAGE = 3,
- HAS_ACTION = 4, // has action buttons, no image and inline reply.
- GROUPED_HAS_ACTION = 5,
- HAS_INLINE_REPLY = 6, // has inline reply, no image.
- GROUPED_HAS_INLINE_REPLY = 7,
- HAS_IMAGE_AND_ACTION = 8, // has image and action button, no inline reply.
- GROUPED_HAS_IMAGE_AND_ACTION = 9,
- HAS_IMAGE_AND_INLINE_REPLY = 10, // has image and inline reply.
- GROUPED_HAS_IMAGE_AND_INLINE_REPLY = 11,
- kMaxValue = GROUPED_HAS_IMAGE_AND_INLINE_REPLY,
- };
- // The actions that was performed after an expand button is clicked. These are
- // used in histograms, do not remove/renumber entries. If you're adding to this
- // enum with the intention that it will be logged, update the
- // ExpandButtonClickAction token variant in enums.xml.
- enum class ExpandButtonClickAction {
- EXPAND_INDIVIDUAL = 0,
- COLLAPSE_INDIVIDUAL = 1,
- EXPAND_GROUP = 2,
- COLLAPSE_GROUP = 3,
- kMaxValue = COLLAPSE_GROUP,
- };
- // The types of group notification. These are used in histograms, do not
- // remove/renumber entries. If you're adding to this enum with the intention
- // that it will be logged, update the ExpandButtonClickAction token variant in
- // enums.xml.
- enum class GroupNotificationType {
- GROUP_PARENT = 0,
- GROUP_CHILD = 1,
- kMaxValue = GROUP_CHILD,
- };
- // Returns the detailed notification type enum for a notification.
- NotificationTypeDetailed GetNotificationType(
- const message_center::Notification& notification);
- // Returns the detailed notification type enum for a notification id.
- absl::optional<NotificationTypeDetailed> GetNotificationType(
- const std::string& notification_id);
- // Logs a Hover event on a notification.
- void LogHover(const std::string& notification_id, bool is_popup);
- // Logs a ClickedBody event.
- void LogClickedBody(const std::string& notification_id, bool is_popup);
- // Logs a ClickedActionButton event.
- void LogClickedActionButton(const std::string& notification_id, bool is_popup);
- // Logs an InlineReplySent event.
- ASH_EXPORT void LogInlineReplySent(const std::string& notification_id,
- bool is_popup);
- // Logs a ExpireToTray event for a pop-up notification.
- void LogPopupExpiredToTray(const std::string& notification_id);
- // Logs a ClosedByUser event.
- void LogClosedByUser(const std::string& notification_id,
- bool is_swipe,
- bool is_popup);
- // Logs a SettingsShown event.
- void LogSettingsShown(const std::string& notification_id,
- bool is_slide_controls,
- bool is_popup);
- // Logs a Snoozed event.
- void LogSnoozed(const std::string& notification_id,
- bool is_slide_controls,
- bool is_popup);
- // Logs a popup Shown event.
- void LogPopupShown(const std::string& notification_id);
- // Logs a popup Closed event.
- void LogPopupClosed(message_center::MessagePopupView* popup);
- // Logs a tray ClosedByClearAll event.
- void LogClosedByClearAll(const std::string& notification_id);
- // Logs a notification added event.
- void LogNotificationAdded(const std::string& notification_id);
- // Logs a system notification added event.
- void LogSystemNotificationAdded(const std::string& notification_id);
- // Logs the count of notifications displayed during the first minute after a
- // user logs in.
- void LogNotificationsShownInFirstMinute(int notifications_count);
- // Logs the number of notifications contained in a group.
- void LogCountOfNotificationsInOneGroup(int notification_count);
- // Logs the action that was performed after an expand button is clicked,
- void LogExpandButtonClickAction(ExpandButtonClickAction action);
- // Logs the type of group notification added to the system.
- void LogGroupNotificationAddedType(GroupNotificationType type);
- } // namespace metrics_utils
- } // namespace ash
- #endif // ASH_SYSTEM_MESSAGE_CENTER_METRICS_UTILS_H_
|