blob: 4b44098e853eb5de3bd4f0f3765121c06da9460c [file] [log] [blame]
// Copyright 2015 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.
#include "chrome/browser/banners/app_banner_metrics.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "chrome/browser/installable/installable_logging.h"
namespace banners {
const char kDismissEventHistogram[] = "AppBanners.DismissEvent";
const char kDisplayEventHistogram[] = "AppBanners.DisplayEvent";
const char kInstallEventHistogram[] = "AppBanners.InstallEvent";
const char kMinutesHistogram[] =
"AppBanners.MinutesFromFirstVisitToBannerShown";
const char kUserResponseHistogram[] = "AppBanners.UserResponse";
const char kBeforeInstallEventHistogram[] = "AppBanners.BeforeInstallEvent";
const char kInstallableStatusCodeHistogram[] =
"AppBanners.InstallableStatusCode";
const char kInstallDisplayModeHistogram[] = "Webapp.Install.DisplayMode";
void TrackDismissEvent(int event) {
DCHECK_LT(DISMISS_EVENT_MIN, event);
DCHECK_LT(event, DISMISS_EVENT_MAX);
base::UmaHistogramSparse(kDismissEventHistogram, event);
}
void TrackDisplayEvent(int event) {
DCHECK_LT(DISPLAY_EVENT_MIN, event);
DCHECK_LT(event, DISPLAY_EVENT_MAX);
base::UmaHistogramSparse(kDisplayEventHistogram, event);
}
void TrackInstallEvent(int event) {
DCHECK_LT(INSTALL_EVENT_MIN, event);
DCHECK_LT(event, INSTALL_EVENT_MAX);
base::UmaHistogramSparse(kInstallEventHistogram, event);
}
void TrackMinutesFromFirstVisitToBannerShown(int minutes) {
// Histogram ranges from 1 minute to the number of minutes in 21 days.
// This is one more day than the decay length of time for site engagement,
// and seven more days than the expiry of visits for the app banner
// navigation heuristic.
UMA_HISTOGRAM_CUSTOM_COUNTS(kMinutesHistogram, minutes, 1, 30240, 100);
}
void TrackUserResponse(int event) {
DCHECK_LT(USER_RESPONSE_MIN, event);
DCHECK_LT(event, USER_RESPONSE_MAX);
base::UmaHistogramSparse(kUserResponseHistogram, event);
}
void TrackBeforeInstallEvent(int event) {
DCHECK_LT(BEFORE_INSTALL_EVENT_MIN, event);
DCHECK_LT(event, BEFORE_INSTALL_EVENT_MAX);
base::UmaHistogramSparse(kBeforeInstallEventHistogram, event);
}
void TrackInstallableStatusCode(InstallableStatusCode code) {
DCHECK_LE(NO_ERROR_DETECTED, code);
DCHECK_LT(code, MAX_ERROR_CODE);
if (code != IN_INCOGNITO) {
// Do not log that we are in incognito to UMA.
base::UmaHistogramSparse(kInstallableStatusCodeHistogram, code);
}
}
void TrackInstallDisplayMode(blink::WebDisplayMode display) {
DCHECK_LE(blink::WebDisplayMode::kWebDisplayModeUndefined, display);
DCHECK_LE(display, blink::WebDisplayMode::kWebDisplayModeLast);
UMA_HISTOGRAM_ENUMERATION(kInstallDisplayModeHistogram, display,
blink::WebDisplayMode::kWebDisplayModeLast + 1);
}
} // namespace banners