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

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

Issue 2013423002: Clean up recording of clicks for New tab page snippets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@snippets-impressions
Patch Set: Fixing a rebase error Created 4 years, 7 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
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
index 9e8816656de283cdf913310e6bc11a4557cbc1e0..a2d81a1bdf3a5c9a277af5770f53d1abe4b73ab6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
@@ -6,6 +6,8 @@ package org.chromium.chrome.browser.ntp.snippets;
import android.graphics.Bitmap;
import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.base.metrics.RecordUserAction;
+import org.chromium.chrome.browser.ntp.NewTabPageUma;
import org.chromium.chrome.browser.ntp.cards.NewTabPageListItem;
/**
@@ -19,7 +21,7 @@ public class SnippetArticle implements NewTabPageListItem {
public final String mUrl;
public final String mAmpUrl;
public final String mThumbnailUrl;
- public final long mTimestamp;
+ public final long mPublishTimestampMilliseconds;
public final float mScore;
public final int mPosition;
@@ -29,6 +31,9 @@ public class SnippetArticle implements NewTabPageListItem {
/** Stores whether impression of this article has been tracked already. */
private boolean mImpressionTracked;
+ /** Specifies ranges of positions for which we store position-specific sub-histograms. */
+ private static final int[] HISTOGRAM_FOR_POSITIONS = {0, 2, 4, 9};
+
/**
* Creates a SnippetArticle object that will hold the data
* @param title the title of the article
@@ -50,7 +55,7 @@ public class SnippetArticle implements NewTabPageListItem {
mUrl = url;
mAmpUrl = ampUrl;
mThumbnailUrl = thumbnailUrl;
- mTimestamp = timestamp;
+ mPublishTimestampMilliseconds = timestamp;
mScore = score;
mPosition = position;
}
@@ -84,6 +89,30 @@ public class SnippetArticle implements NewTabPageListItem {
mThumbnailBitmap = bitmap;
}
+ /** Tracks click on this NTP snippet in UMA. */
+ public void trackClick() {
+ RecordUserAction.record("MobileNTP.Snippets.Click");
+ RecordHistogram.recordSparseSlowlyHistogram("NewTabPage.Snippets.CardClicked", mPosition);
+ NewTabPageUma.recordSnippetAction(NewTabPageUma.SNIPPETS_ACTION_CLICKED);
+ NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_SNIPPET);
+
+ // Track how the (approx.) position relates to age / score of the snippet that is clicked.
+ int ageInMinutes =
+ (int) ((System.currentTimeMillis() - mPublishTimestampMilliseconds) / 60000L);
+ recordAge("NewTabPage.Snippets.CardClickedAge", ageInMinutes);
+ recordScore("NewTabPage.Snippets.CardClickedScore", mScore);
+ int startPosition = 0;
+ for (int endPosition : HISTOGRAM_FOR_POSITIONS) {
+ if (mPosition >= startPosition && mPosition <= endPosition) {
+ String suffix = "_" + startPosition + "_" + endPosition;
+ recordAge("NewTabPage.Snippets.CardClickedAge" + suffix, ageInMinutes);
+ recordScore("NewTabPage.Snippets.CardClickedScore" + suffix, mScore);
+ break;
+ }
+ startPosition = endPosition + 1;
+ }
+ }
+
/** Tracks impression of this NTP snippet. */
public void trackImpression() {
// Track UMA only upon the first impression per life-time of this object.
@@ -97,4 +126,18 @@ public class SnippetArticle implements NewTabPageListItem {
public boolean impressionTracked() {
return mImpressionTracked;
}
+
+ private static void recordAge(String histogramName, int ageInMinutes) {
+ // Negative values (when the time of the device is set inappropriately) provide no value.
+ if (ageInMinutes >= 0) {
+ // If the max value below (72 hours) were to be changed, the histogram should be renamed
+ // since it will change the shape of buckets.
+ RecordHistogram.recordCustomCountHistogram(histogramName, ageInMinutes, 1, 72 * 60, 50);
+ }
+ }
+
+ private static void recordScore(String histogramName, float score) {
+ int recordedScore = Math.min((int) Math.ceil(score), 1000);
+ RecordHistogram.recordCount1000Histogram(histogramName, recordedScore);
+ }
}
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698