| Index: chrome/android/java/src/org/chromium/chrome/browser/metrics/WebappUma.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/WebappUma.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/WebappUma.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4e0c663ef6063e0598fafd5eaf204e12176e9efd
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/WebappUma.java
|
| @@ -0,0 +1,154 @@
|
| +// 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.
|
| +
|
| +package org.chromium.chrome.browser.metrics;
|
| +
|
| +import android.os.SystemClock;
|
| +
|
| +import org.chromium.base.metrics.RecordHistogram;
|
| +
|
| +import java.util.concurrent.TimeUnit;
|
| +
|
| +/**
|
| + * Centralizes UMA data collection for web apps.
|
| + */
|
| +public class WebappUma {
|
| + // SplashscreenColorStatus defined in tools/metrics/histograms/histograms.xml.
|
| + public static final int SPLASHSCREEN_COLOR_STATUS_DEFAULT = 0;
|
| + public static final int SPLASHSCREEN_COLOR_STATUS_CUSTOM = 1;
|
| + public static final int SPLASHSCREEN_COLOR_STATUS_MAX = 2;
|
| +
|
| + // SplashscreenHidesReason defined in tools/metrics/histograms/histograms.xml.
|
| + public static final int SPLASHSCREEN_HIDES_REASON_PAINT = 0;
|
| + public static final int SPLASHSCREEN_HIDES_REASON_LOAD_FINISHED = 1;
|
| + public static final int SPLASHSCREEN_HIDES_REASON_LOAD_FAILED = 2;
|
| + public static final int SPLASHSCREEN_HIDES_REASON_CRASH = 3;
|
| + public static final int SPLASHSCREEN_HIDES_REASON_MAX = 4;
|
| +
|
| + // SplashscreenBackgroundColorType defined in tools/metrics/histograms/histograms.xml.
|
| + public static final int SPLASHSCREEN_ICON_TYPE_NONE = 0;
|
| + public static final int SPLASHSCREEN_ICON_TYPE_FALLBACK = 1;
|
| + public static final int SPLASHSCREEN_ICON_TYPE_CUSTOM = 2;
|
| + public static final int SPLASHSCREEN_ICON_TYPE_MAX = 3;
|
| +
|
| + // Histogram names are defined in tools/metrics/histograms/histograms.xml.
|
| + public static final String HISTOGRAM_SPLASHSCREEN_BACKGROUNDCOLOR =
|
| + "Webapp.Splashscreen.BackgroundColor";
|
| + public static final String HISTOGRAM_SPLASHSCREEN_DURATION =
|
| + "Webapp.Splashscreen.Duration";
|
| + public static final String HISTOGRAM_SPLASHSCREEN_HIDES =
|
| + "Webapp.Splashscreen.Hides";
|
| + public static final String HISTOGRAM_SPLASHSCREEN_ICON_TYPE =
|
| + "Webapp.Splashscreen.Icon.Type";
|
| + public static final String HISTOGRAM_SPLASHSCREEN_ICON_SIZE =
|
| + "Webapp.Splashscreen.Icon.Size";
|
| + public static final String HISTOGRAM_SPLASHSCREEN_THEMECOLOR =
|
| + "Webapp.Splashscreen.ThemeColor";
|
| +
|
| + private int mSplashScreenBackgroundColor = SPLASHSCREEN_COLOR_STATUS_MAX;
|
| + private int mSplashScreenIconType = SPLASHSCREEN_ICON_TYPE_MAX;
|
| + private int mSplashScreenIconSize = -1;
|
| + private int mSplashScreenThemeColor = SPLASHSCREEN_COLOR_STATUS_MAX;
|
| + private long mSplashScreenVisibleTime = 0;
|
| +
|
| + private boolean mCommitted = false;
|
| +
|
| + /**
|
| + * Signal that the splash screen is now visible. This is being used to
|
| + * record for how long the splash screen is left visible.
|
| + */
|
| + public void splashscreenVisible() {
|
| + assert mSplashScreenVisibleTime == 0;
|
| + mSplashScreenVisibleTime = SystemClock.elapsedRealtime();
|
| + }
|
| +
|
| + /**
|
| + * Records the type of background color on the splash screen.
|
| + * @param type flag representing the type of color.
|
| + */
|
| + public void recordSplashscreenBackgroundColor(int type) {
|
| + assert !mCommitted;
|
| + assert type >= 0 && type < SPLASHSCREEN_COLOR_STATUS_MAX;
|
| + mSplashScreenBackgroundColor = type;
|
| + }
|
| +
|
| + /**
|
| + * Signal that the splash screen is now hidden. It is used to record for how
|
| + * long the splash screen was left visible. It is also used to know what
|
| + * event triggered the splash screen to be hidden.
|
| + * @param type flag representing the reason why the splash screen was hidden.
|
| + */
|
| + public void splashscreenHidden(int reason) {
|
| + assert reason >= 0 && reason < SPLASHSCREEN_HIDES_REASON_MAX;
|
| + RecordHistogram.recordEnumeratedHistogram(HISTOGRAM_SPLASHSCREEN_HIDES,
|
| + reason, SPLASHSCREEN_HIDES_REASON_MAX);
|
| +
|
| + assert mSplashScreenVisibleTime != 0;
|
| + RecordHistogram.recordMediumTimesHistogram(HISTOGRAM_SPLASHSCREEN_DURATION,
|
| + SystemClock.elapsedRealtime() - mSplashScreenVisibleTime, TimeUnit.MILLISECONDS);
|
| + }
|
| +
|
| + /**
|
| + * Records the type of icon on the splash screen.
|
| + * @param type flag representing the type of icon.
|
| + */
|
| + public void recordSplashscreenIconType(int type) {
|
| + assert !mCommitted;
|
| + assert type >= 0 && type < SPLASHSCREEN_ICON_TYPE_MAX;
|
| + mSplashScreenIconType = type;
|
| + }
|
| +
|
| + public void recordSplashscreenIconSize(int size) {
|
| + assert !mCommitted;
|
| + assert size >= 0;
|
| + mSplashScreenIconSize = size;
|
| + }
|
| +
|
| + /**
|
| + * Records the type of theme color on the splash screen.
|
| + * @param type flag representing the type of color.
|
| + */
|
| + public void recordSplashscreenThemeColor(int type) {
|
| + assert !mCommitted;
|
| + assert type >= 0 && type < SPLASHSCREEN_COLOR_STATUS_MAX;
|
| + mSplashScreenThemeColor = type;
|
| + }
|
| +
|
| + /**
|
| + * Records all metrics that could not be recorded because the native library
|
| + * was not loaded yet.
|
| + */
|
| + public void commitMetrics() {
|
| + if (mCommitted) return;
|
| +
|
| + mCommitted = true;
|
| +
|
| + assert mSplashScreenBackgroundColor != SPLASHSCREEN_COLOR_STATUS_MAX;
|
| + RecordHistogram.recordEnumeratedHistogram(HISTOGRAM_SPLASHSCREEN_BACKGROUNDCOLOR,
|
| + mSplashScreenBackgroundColor,
|
| + SPLASHSCREEN_COLOR_STATUS_MAX);
|
| + mSplashScreenBackgroundColor = SPLASHSCREEN_COLOR_STATUS_MAX;
|
| +
|
| + assert mSplashScreenIconType != SPLASHSCREEN_ICON_TYPE_MAX;
|
| + RecordHistogram.recordEnumeratedHistogram(HISTOGRAM_SPLASHSCREEN_ICON_TYPE,
|
| + mSplashScreenIconType,
|
| + SPLASHSCREEN_ICON_TYPE_MAX);
|
| +
|
| + if (mSplashScreenIconType == SPLASHSCREEN_ICON_TYPE_NONE) {
|
| + assert mSplashScreenIconSize == -1;
|
| + } else {
|
| + assert mSplashScreenIconSize >= 0;
|
| + RecordHistogram.recordCount1000Histogram(HISTOGRAM_SPLASHSCREEN_ICON_SIZE,
|
| + mSplashScreenIconSize);
|
| + }
|
| + mSplashScreenIconType = SPLASHSCREEN_ICON_TYPE_MAX;
|
| + mSplashScreenIconSize = -1;
|
| +
|
| + assert mSplashScreenThemeColor != SPLASHSCREEN_COLOR_STATUS_MAX;
|
| + RecordHistogram.recordEnumeratedHistogram(HISTOGRAM_SPLASHSCREEN_THEMECOLOR,
|
| + mSplashScreenThemeColor,
|
| + SPLASHSCREEN_COLOR_STATUS_MAX);
|
| + mSplashScreenThemeColor = SPLASHSCREEN_COLOR_STATUS_MAX;
|
| + }
|
| +}
|
|
|