Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(266)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/metrics/WebappUma.java

Issue 1391993004: WebApp splashscreen: add UMA to record how a splashscreen is constructed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: don't assert Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698