Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3395)

Unified Diff: chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc

Issue 2696223004: Desktop NTP: Add a UMA metric NewTabPage.TilesReceivedTime (Closed)
Patch Set: histograms.xml Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc
diff --git a/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc b/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc
index 46a3a1bce66dd3c08e24cc4c916b9a441c0c9c72..e0876e0eeafc61536d7052e5f8494231b2bd06cc 100644
--- a/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc
+++ b/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc
@@ -19,6 +19,7 @@ using base::Bucket;
using ntp_tiles::NTPTileSource;
using testing::ElementsAre;
using testing::IsEmpty;
+using testing::SizeIs;
namespace {
@@ -211,3 +212,100 @@ TEST(NTPUserDataLoggerTest, TestLogMostVisitedNavigation) {
histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"),
ElementsAre(Bucket(1, 1), Bucket(2, 1), Bucket(3, 2)));
}
+
+TEST(NTPUserDataLoggerTest, TestLoadTime) {
+ base::StatisticsRecorder::Initialize();
+
+ base::HistogramTester histogram_tester;
+
+ TestNTPUserDataLogger logger;
+ logger.ntp_url_ = GURL("chrome://newtab/");
+
+ base::TimeDelta delta_tiles_received = base::TimeDelta::FromMilliseconds(10);
+ base::TimeDelta delta_tiles_loaded = base::TimeDelta::FromMilliseconds(100);
+
+ // Send the ALL_TILES_RECEIVED event.
+ logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received);
+
+ // The actual histograms are emitted only after the ALL_TILES_LOADED event, so
+ // at this point everything should still be empty.
sfiera 2017/02/16 14:35:33 Is this something we actually care about testing?
Marc Treib 2017/02/16 15:13:09 Good point. Removed.
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"),
+ IsEmpty());
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime"), IsEmpty());
+
+ // Log a TOP_SITES impression (for the .MostVisited vs .MostLikely split in
+ // the LoadTime histogram).
+ logger.LogMostVisitedImpression(0, NTPTileSource::TOP_SITES);
+
+ // Send the ALL_TILES_LOADED event, this should trigger emitting histograms.
+ logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded);
+
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"),
+ SizeIs(1));
+ EXPECT_THAT(histogram_tester.GetAllSamples(
+ "NewTabPage.TilesReceivedTime.MostVisited"),
+ SizeIs(1));
+ EXPECT_THAT(
+ histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime.MostLikely"),
+ IsEmpty());
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime"), SizeIs(1));
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostVisited"),
+ SizeIs(1));
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostLikely"),
+ IsEmpty());
+
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime",
+ delta_tiles_received, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "NewTabPage.TilesReceivedTime.MostVisited", delta_tiles_received, 1);
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime",
+ delta_tiles_loaded, 1);
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime.MostVisited",
+ delta_tiles_loaded, 1);
+
+ // We should not log again for the same NTP.
+ logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received);
+ logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded);
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime",
+ delta_tiles_received, 1);
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime",
+ delta_tiles_loaded, 1);
+
+ // After navigating away from the NTP and back, we record again.
+ logger.NavigatedFromURLToURL(GURL("chrome://newtab/"),
+ GURL("http://chromium.org"));
+ logger.NavigatedFromURLToURL(GURL("http://chromium.org"),
+ GURL("chrome://newtab/"));
+
+ // This time, log a SUGGESTIONS_SERVICE impression, so the load time will end
+ // up in .MostLikely.
+ logger.LogMostVisitedImpression(0, NTPTileSource::SUGGESTIONS_SERVICE);
+
+ base::TimeDelta delta_tiles_received2 = base::TimeDelta::FromMilliseconds(50);
+ base::TimeDelta delta_tiles_loaded2 = base::TimeDelta::FromMilliseconds(500);
+ logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received2);
+ logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded2);
+
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"),
+ SizeIs(2));
+ EXPECT_THAT(histogram_tester.GetAllSamples(
+ "NewTabPage.TilesReceivedTime.MostVisited"),
+ SizeIs(1));
+ EXPECT_THAT(
+ histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime.MostLikely"),
+ SizeIs(1));
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime"), SizeIs(2));
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostVisited"),
+ SizeIs(1));
+ EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostLikely"),
+ SizeIs(1));
+
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime",
+ delta_tiles_received2, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "NewTabPage.TilesReceivedTime.MostLikely", delta_tiles_received2, 1);
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime",
+ delta_tiles_loaded2, 1);
+ histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime.MostLikely",
+ delta_tiles_loaded2, 1);
+}

Powered by Google App Engine
This is Rietveld 408576698