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; |
+ } |
+} |