Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java |
index 91ab35055fe4ddaef43b1da06da32de0a69b0c48..317008d7c4e2c2a61e315358ada3dfdfc93e8095 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java |
@@ -39,6 +39,7 @@ public class SnippetArticleViewHolder extends NewTabPageViewHolder implements Vi |
private static final String TAG = "NtpSnippets"; |
private static final String PUBLISHER_FORMAT_STRING = "%s - %s"; |
private static final int FADE_IN_ANIMATION_TIME_MS = 300; |
+ private static final int[] HISTOGRAM_FOR_POSITIONS = {0, 2, 4, 9}; |
private final NewTabPageManager mNewTabPageManager; |
private final TextView mHeadlineTextView; |
@@ -47,6 +48,8 @@ public class SnippetArticleViewHolder extends NewTabPageViewHolder implements Vi |
private final ImageView mThumbnailView; |
private FetchImageCallback mImageCallback; |
+ private long mPublishTimestampMilliseconds; |
+ private float mScore; |
public String mUrl; |
public int mPosition; |
@@ -96,6 +99,22 @@ public class SnippetArticleViewHolder extends NewTabPageViewHolder implements Vi |
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; |
+ } |
} |
@Override |
@@ -110,6 +129,8 @@ public class SnippetArticleViewHolder extends NewTabPageViewHolder implements Vi |
mArticleSnippetTextView.setText(item.mPreviewText); |
mUrl = item.mUrl; |
mPosition = item.mPosition; |
+ mPublishTimestampMilliseconds = item.mTimestamp; |
+ mScore = item.mScore; |
// If there's still a pending thumbnail fetch, cancel it. |
cancelImageFetch(); |
@@ -147,6 +168,20 @@ public class SnippetArticleViewHolder extends NewTabPageViewHolder implements Vi |
} |
} |
+ 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, 0, 72 * 60, 50); |
+ } |
+ } |
+ |
+ private static void recordScore(String histogramName, float score) { |
+ int recordedScore = Math.min((int) Math.ceil(score), 1000); |
+ RecordHistogram.recordCount1000Histogram(histogramName, recordedScore); |
+ } |
+ |
private void cancelImageFetch() { |
if (mImageCallback != null) { |
mImageCallback.cancel(); |