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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageUma.java

Issue 2554003003: Log NTP launch time until user can do a search. (Closed)
Patch Set: Address review comments from asvitkine. Created 4 years 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/ntp/NewTabPageUma.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageUma.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageUma.java
index fd272c5f3a12d5fba8e3e7731f3d2a74177727f2..96ef6e505db1863f2c436518a2b6b04ad70fb3cb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageUma.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageUma.java
@@ -9,6 +9,8 @@ import android.support.annotation.IntDef;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
+import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
import org.chromium.chrome.browser.rappor.RapporServiceBridge;
@@ -20,6 +22,7 @@ import org.chromium.ui.base.PageTransition;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.concurrent.TimeUnit;
/**
* Records UMA stats for which actions the user takes on the NTP in the
@@ -89,6 +92,16 @@ public final class NewTabPageUma {
/** The number of possible results for the NewTabPageLayout calculations. */
public static final int NUM_NTP_LAYOUT_RESULTS = 5;
+ // The NTP was loaded in a cold startup.
+ private static final int LOAD_TYPE_COLD_START = 0;
+ // The NTP was loaded in a warm startup.
+ private static final int LOAD_TYPE_WARM_START = 1;
+ // The NTP was loaded at some other time after activity creation and the user interacted with
+ // the activity in the meantime.
+ private static final int LOAD_TYPE_OTHER = 2;
+ // The number of load types.
+ private static final int LOAD_TYPE_COUNT = 3;
+
/**
* Records an action taken by the user on the NTP.
* @param action One of the ACTION_* values defined in this class.
@@ -183,6 +196,46 @@ public final class NewTabPageUma {
}
/**
+ * Records the type of load for the ntp, such as cold or warm start.
+ */
+ public static void recordLoadType(ChromeActivity activity) {
+ if (activity.getLastUserInteractionTime() > 0) {
+ RecordHistogram.recordEnumeratedHistogram(
+ "NewTabPage.LoadType", LOAD_TYPE_OTHER, LOAD_TYPE_COUNT);
+ return;
+ }
+
+ if (activity.hadWarmStart()) {
+ RecordHistogram.recordEnumeratedHistogram(
+ "NewTabPage.LoadType", LOAD_TYPE_WARM_START, LOAD_TYPE_COUNT);
+ return;
+ }
+
+ RecordHistogram.recordEnumeratedHistogram(
+ "NewTabPage.LoadType", LOAD_TYPE_COLD_START, LOAD_TYPE_COUNT);
+ }
+
+ /**
+ * Records how much time elapsed from start until the search box became available to the user.
+ */
+ public static void recordSearchAvailableLoadTime(ChromeActivity activity) {
+ // Log the time it took for the search box to be displayed at startup, based on the
+ // timestamp on the intent for the activity. If the user has interacted with the
+ // activity already, it's not a startup, and the timestamp on the activity would not be
+ // relevant either.
+ if (activity.getLastUserInteractionTime() != 0) return;
+ long timeFromIntent = SystemClock.elapsedRealtime()
+ - IntentHandler.getTimestampFromIntent(activity.getIntent());
+ if (activity.hadWarmStart()) {
+ RecordHistogram.recordTimesHistogram("NewTabPage.SearchAvailableLoadTime.WarmStart",
+ timeFromIntent, TimeUnit.MILLISECONDS);
+ } else {
+ RecordHistogram.recordTimesHistogram("NewTabPage.SearchAvailableLoadTime.ColdStart",
+ timeFromIntent, TimeUnit.MILLISECONDS);
+ }
+ }
+
+ /**
* Records stats related to content suggestion visits, such as the time spent on the website, or
* if the user comes back to the NTP. Use through
* {@link NewTabPageUma#monitorContentSuggestionVisit(Tab, int)}.

Powered by Google App Engine
This is Rietveld 408576698