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 d8f7a29f1e422ed1007dc88ff5a4f21ab9e5aa57..49a9dc04421ab8cde90255f83a07545a60e84b4a 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 |
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.ntp.snippets; |
import android.graphics.Bitmap; |
+import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.chrome.browser.ntp.cards.NewTabPageListItem; |
/** |
@@ -24,6 +25,9 @@ public class SnippetArticle implements NewTabPageListItem { |
/** Bitmap of the thumbnail, fetched lazily, when the RecyclerView wants to show the snippet. */ |
private Bitmap mThumbnailBitmap; |
+ /** Stores whether impression of this article has been tracked already. */ |
+ private boolean mImpressionTracked; |
+ |
/** |
* Creates a SnippetArticle object that will hold the data |
* @param title the title of the article |
@@ -76,4 +80,20 @@ public class SnippetArticle implements NewTabPageListItem { |
public void setThumbnailBitmap(Bitmap bitmap) { |
mThumbnailBitmap = bitmap; |
} |
+ |
+ /** Tracks impression of this NTP snippet. */ |
+ public void trackImpression() { |
+ // Track UMA only upon the first impression per life-time of this object. |
+ if (mImpressionTracked) return; |
+ |
+ RecordHistogram.recordSparseSlowlyHistogram("NewTabPage.Snippets.CardShown", mPosition); |
+ mImpressionTracked = true; |
+ } |
+ |
+ /** |
+ * Returns whether impression of this SnippetArticle has already been tracked. |
+ */ |
+ public boolean impressionTracked() { |
+ return mImpressionTracked; |
+ } |
} |