| // 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 |