| 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();
|
|
|