Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java |
| index 5325fcefa20308327e82408ba5754bbf75f378d6..2503f96c85e0df2d6c66ababa0e4a86e4a82cf92 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java |
| @@ -104,6 +104,13 @@ public class NewTabPage |
| private static final int CTA_IMAGE_CLICKED = 1; |
| private static final int ANIMATED_LOGO_CLICKED = 2; |
| + // Identifiers for the various tile sources. |
| + private static final String HISTOGRAM_CLIENT_NAME = "client"; |
| + private static final String HISTOGRAM_SERVER_NAME = "server"; |
| + private static final String HISTOGRAM_SERVER_PREFIX = "server"; |
| + private static final String HISTOGRAM_POPULAR_NAME = "popular"; |
| + private static final String HISTOGRAM_WHITELIST_NAME = "whitelist"; |
| + |
| private static MostVisitedSites sMostVisitedSitesForTests; |
| private final Tab mTab; |
| @@ -527,11 +534,7 @@ public class NewTabPage |
| // If not visible when loading completes, wait until onShown is received. |
| if (!mTab.isHidden()) recordNTPShown(); |
| - int tileTypes[] = new int[items.length]; |
| - for (int i = 0; i < items.length; i++) { |
| - tileTypes[i] = items[i].getTileType(); |
| - } |
| - mMostVisitedSites.recordTileTypeMetrics(tileTypes); |
| + recordTileTypeMetrics(items); |
| if (isNtpOfflinePagesEnabled()) { |
| final int maxNumTiles = 12; |
| @@ -547,6 +550,48 @@ public class NewTabPage |
| }; |
| /** |
| + * Records metrics about which types of tiles are displayed. |
| + * @param items An array of MostVisitedItem objects to record. |
| + */ |
| + public static void recordTileTypeMetrics(MostVisitedItem[] items) { |
|
Marc Treib
2016/06/29 08:19:31
Hmmmm. I know I said differently on the bug, but I
Bernhard Bauer
2016/06/29 10:17:43
I somewhat prefer doing the tallying up here in Ja
Marc Treib
2016/06/29 10:23:11
Hm, we would have one count per "source+providerIn
dewittj
2016/06/30 17:48:53
I passed the types, sources, and indices back to C
Marc Treib
2016/07/01 10:01:03
SGTM
|
| + // Filled with zeros by default. |
| + int[] countsPerType = new int[MostVisitedTileType.NUM_TILE_TYPES]; |
| + |
| + for (int i = 0; i < items.length; ++i) { |
| + MostVisitedItem item = items[i]; |
| + int tileType = item.getTileType(); |
| + ++countsPerType[tileType]; |
|
Bernhard Bauer
2016/06/29 10:17:43
Small nit: I'm not sure to what extent the microop
dewittj
2016/06/30 17:48:53
Done.
|
| + String histogram = "NewTabPage.TileType." |
| + + getSourceHistogramName(item.getSource(), item.getProviderIndex()); |
| + RecordHistogram.recordLinearCountHistogram(histogram, tileType, 0, |
| + MostVisitedTileType.NUM_TILE_TYPES, MostVisitedTileType.NUM_TILE_TYPES + 1); |
| + } |
| + |
| + RecordHistogram.recordSparseSlowlyHistogram( |
| + "NewTabPage.IconsReal", countsPerType[MostVisitedTileType.ICON_REAL]); |
| + RecordHistogram.recordSparseSlowlyHistogram( |
| + "NewTabPage.IconsColor", countsPerType[MostVisitedTileType.ICON_COLOR]); |
| + RecordHistogram.recordSparseSlowlyHistogram( |
| + "NewTabPage.IconsGray", countsPerType[MostVisitedTileType.ICON_DEFAULT]); |
| + } |
| + |
| + private static String getSourceHistogramName(int source, int providerIndex) { |
| + switch (source) { |
| + case MostVisitedSource.TOP_SITES: |
| + return HISTOGRAM_CLIENT_NAME; |
| + case MostVisitedSource.POPULAR: |
| + return HISTOGRAM_POPULAR_NAME; |
| + case MostVisitedSource.WHITELIST: |
| + return HISTOGRAM_WHITELIST_NAME; |
| + case MostVisitedSource.SUGGESTIONS_SERVICE: |
| + return providerIndex >= 0 ? HISTOGRAM_SERVER_PREFIX + providerIndex |
| + : HISTOGRAM_SERVER_NAME; |
| + } |
| + assert false; // An unknown source was used. |
|
Bernhard Bauer
2016/06/29 10:17:43
Nit: additional space before comments. Also, you c
dewittj
2016/06/30 17:48:53
Done.
|
| + return ""; |
| + } |
| + |
| + /** |
| * Constructs a NewTabPage. |
| * @param activity The activity used for context to create the new tab page's View. |
| * @param tab The Tab that is showing this new tab page. |