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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics.java

Issue 1736203002: [Contextual Search] Add metrics for Resolve and View timing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Switched to using a separate timer. Created 4 years, 10 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/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics.java
index 7eb80bc2f6c00033246c14935597f2bf0fb9650e..dd4a14b4f55b7a7f0e6ceedc32ae2d42aee94254 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics.java
@@ -26,8 +26,16 @@ public class ContextualSearchPanelMetrics {
private boolean mWasActivatedByTap;
private boolean mIsSearchPanelFullyPreloaded;
private boolean mWasIconSpriteAnimated;
- private long mSearchStartTimeNs;
- private long mSearchViewStartTimeNs;
+ // Time when the panel peeks into view (not reset by a chained search).
+ // Used to log total time the panel is showing (not closed).
+ private long mFirstPeekTimeNs;
+ // Time when the panel contents come into view (when the panel is opened).
+ // Used to log preload effectiveness info -- additional time needed to fully render the
+ // content in the overlay.
+ private long mContentFirstViewTimeNs;
+ // Time when a search request was started. Reset by chained searches.
+ // Used to log the time it takes for a Search Result to become available.
+ private long mSearchRequestStartTimeNs;
/**
* Log information when the panel's state has changed.
@@ -57,7 +65,7 @@ public class ContextualSearchPanelMetrics {
if (isEndingSearch) {
if (!mDidSearchInvolvePromo) {
// Measure duration only when the promo is not involved.
- long durationMs = (System.nanoTime() - mSearchStartTimeNs) / 1000000;
+ long durationMs = (System.nanoTime() - mFirstPeekTimeNs) / 1000000;
ContextualSearchUma.logDuration(mWasSearchContentViewSeen, isChained, durationMs);
}
if (mIsPromoActive) {
@@ -71,8 +79,8 @@ public class ContextualSearchPanelMetrics {
mWasSearchContentViewSeen, mWasActivatedByTap);
}
if (isStartingSearch) {
- mSearchStartTimeNs = System.nanoTime();
- mSearchViewStartTimeNs = 0;
+ mFirstPeekTimeNs = System.nanoTime();
+ mContentFirstViewTimeNs = 0;
mIsSearchPanelFullyPreloaded = false;
mWasActivatedByTap = reason == StateChangeReason.TEXT_SELECT_TAP;
}
@@ -165,10 +173,18 @@ public class ContextualSearchPanelMetrics {
}
/**
- * Gets whether the promo is active.
+ * Called to record the time when a search request started, for resolve and prefetch timing.
*/
- private boolean getIsPromoActive() {
- return mIsPromoActive;
+ public void onSearchRequestStarted() {
+ mSearchRequestStartTimeNs = System.nanoTime();
+ }
+
+ /**
+ * Called when a Search Term has been resolved.
+ */
+ public void onSearchTermResolved() {
+ long durationMs = (System.nanoTime() - mSearchRequestStartTimeNs) / 1000000;
+ ContextualSearchUma.logSearchTermResolutionDuration(durationMs);
}
/**
@@ -178,8 +194,8 @@ public class ContextualSearchPanelMetrics {
public void onSearchResultsLoaded(boolean wasPrefetch) {
if (mHasExpanded || mHasMaximized) {
// Already opened, log how long it took.
- assert mSearchViewStartTimeNs != 0;
- long durationMs = (System.nanoTime() - mSearchViewStartTimeNs) / 1000000;
+ assert mContentFirstViewTimeNs != 0;
+ long durationMs = (System.nanoTime() - mContentFirstViewTimeNs) / 1000000;
logSearchPanelLoadDuration(wasPrefetch, durationMs);
}
@@ -188,6 +204,15 @@ public class ContextualSearchPanelMetrics {
}
/**
+ * Called after the panel has navigated to prefetched Search Results.
+ * This is the point where the search result starts to render in the panel.
+ */
+ public void onPanelNavigatedToPrefetchedSearch(boolean didResolve) {
+ long durationMs = (System.nanoTime() - mSearchRequestStartTimeNs) / 1000000;
+ ContextualSearchUma.logPrefetchedSearchNavigatedDuration(durationMs, didResolve);
+ }
+
+ /**
* Records timing information when the search panel has been viewed for the first time.
*/
private void onSearchPanelFirstView() {
@@ -196,7 +221,7 @@ public class ContextualSearchPanelMetrics {
logSearchPanelLoadDuration(true, 0);
} else {
// Start a loading timer.
- mSearchViewStartTimeNs = System.nanoTime();
+ mContentFirstViewTimeNs = System.nanoTime();
}
}

Powered by Google App Engine
This is Rietveld 408576698