Chromium Code Reviews| 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 54f9e9d5ddcd7c45f7fd59457a5509fe7ae2c273..810847eb02e9b18b9658778f192c559d434ae0dd 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 |
| @@ -30,6 +30,7 @@ import org.chromium.chrome.browser.ntp.cards.NewTabPageViewHolder; |
| import java.net.URI; |
| import java.net.URISyntaxException; |
| +import java.util.concurrent.TimeUnit; |
| /** |
| * A class that represents the view for a single card snippet. |
| @@ -38,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}; |
| private final NewTabPageManager mNewTabPageManager; |
| private final TextView mHeadlineTextView; |
| @@ -46,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; |
| @@ -95,6 +99,18 @@ 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 |
| + long age = System.currentTimeMillis() - mPublishTimestampMilliseconds; |
|
Ted C
2016/05/19 16:52:50
FWIW, currentTimeMillis states to not use it for t
jkrcal
2016/05/20 12:23:19
Heh, I am not used yet to look at android document
|
| + recordAge("NewTabPage.Snippets.CardClickedAge", age); |
| + recordScore("NewTabPage.Snippets.CardClickedScore", mScore); |
| + for (int position : HISTOGRAM_FOR_POSITIONS) { |
| + if (mPosition <= position) { |
| + String suffix = "_" + position; |
|
Marc Treib
2016/05/19 16:07:10
I think it should be "." rather than "_"?
jkrcal
2016/05/19 16:40:52
histograms.xml:41 supports my version. The documen
Alexei Svitkine (slow)
2016/05/19 16:42:43
This is correct, but you can also use "." if you p
jkrcal
2016/05/20 12:23:19
Thanks for the explanation!
(I am fine with "_")
|
| + recordAge("NewTabPage.Snippets.CardClickedAge" + suffix, age); |
| + recordScore("NewTabPage.Snippets.CardClickedScore" + suffix, mScore); |
|
Ted C
2016/05/19 16:52:50
do you want to record it for all buckets or just t
jkrcal
2016/05/20 12:23:19
Well, you are probably right that your suggested w
|
| + } |
| + } |
| } |
| @Override |
| @@ -109,6 +125,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(); |
| @@ -146,6 +164,18 @@ public class SnippetArticleViewHolder extends NewTabPageViewHolder implements Vi |
| } |
| } |
| + private static void recordAge(String histogramName, long age) { |
| + long maxAge = TimeUnit.HOURS.toMillis(72); |
| + age = Math.min(age, maxAge); |
| + RecordHistogram.recordCustomTimesHistogram( |
| + histogramName, age, 1, maxAge, TimeUnit.MILLISECONDS, 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(); |