1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
// 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.
#include "chrome/browser/notifications/scheduler/internal/stats.h"
#include "base/test/metrics/histogram_tester.h"
#include "chrome/browser/notifications/scheduler/public/notification_data.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace notifications {
namespace stats {
namespace {
void TestLogUserAction(const UserActionData& user_action_data,
ActionButtonEvent action_button_event) {
base::HistogramTester histograms;
LogUserAction(user_action_data);
}
void TestNotificationShow(const NotificationData& notification_data,
SchedulerClientType client_type,
bool expect_ihnr_histogram,
bool expect_life_cycle_histogram) {
base::HistogramTester histograms;
LogNotificationShow(notification_data, client_type);
if (expect_life_cycle_histogram) {
histograms.ExpectBucketCount(
"Notifications.Scheduler.NotificationLifeCycleEvent",
NotificationLifeCycleEvent::kShown, 1);
histograms.ExpectBucketCount(
"Notifications.Scheduler.NotificationLifeCycleEvent.__Test__",
NotificationLifeCycleEvent::kShown, 1);
} else {
histograms.ExpectTotalCount(
"Notifications.Scheduler.NotificationLifeCycleEvent", 0);
histograms.ExpectTotalCount(
"Notifications.Scheduler.NotificationLifeCycleEvent.__Test__", 0);
}
}
// Verifies that ihnr buttons clicks are logged.
TEST(NotificationSchedulerStatsTest, LogUserActionIhnrButton) {
UserActionData user_action_data(SchedulerClientType::kTest1,
UserActionType::kButtonClick, "guid");
user_action_data.button_click_info = ButtonClickInfo();
user_action_data.button_click_info->type = ActionButtonType::kHelpful;
TestLogUserAction(user_action_data, ActionButtonEvent::kHelpfulClick);
user_action_data.button_click_info->type = ActionButtonType::kUnhelpful;
TestLogUserAction(user_action_data, ActionButtonEvent::kUnhelpfulClick);
}
// Verifies notification show event is logged when there are ihnr buttons.
TEST(NotificationSchedulerStatsTest, LogNotificationShow) {
NotificationData notification_data;
notification_data.buttons.emplace_back(NotificationData::Button());
// Notification without ihnr buttons.
TestNotificationShow(notification_data, SchedulerClientType::kTest1,
false /*expect_ihnr_histogram*/,
true /*expect_life_cycle_histogram*/);
std::vector<ActionButtonType> types{ActionButtonType::kHelpful,
ActionButtonType::kUnhelpful};
for (auto action_button_type : types) {
notification_data.buttons.front().type = action_button_type;
// Notification with ihnr buttons.
TestNotificationShow(notification_data, SchedulerClientType::kTest1,
true /*expect_ihnr_histogram*/,
true /*expect_life_cycle_histogram*/);
}
}
} // namespace
} // namespace stats
} // namespace notifications
|