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

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

Issue 102433009: Most visited iframe now postMessage to signal the iframing page that the link has been displayed (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed support for multiple thumbnail URLs, refactored UMA logging. Created 6 years, 11 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 d38b1bfc0ab2d94ebdf8135cfc3b7d191208d0c7..4a68e2ecaace47711db02ea7d6a667ae0d5d5a9b 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
@@ -5,26 +5,89 @@
#include "chrome/browser/ui/webui/ntp/ntp_user_data_logger.h"
#include "base/basictypes.h"
-#include "testing/gmock/include/gmock/gmock.h"
+#include "base/metrics/histogram.h"
+#include "base/metrics/statistics_recorder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
-class MockNTPUserDataLogger : public NTPUserDataLogger {
- public:
- MockNTPUserDataLogger() : NTPUserDataLogger(NULL) {}
- virtual ~MockNTPUserDataLogger() {}
+ base::HistogramBase::Count getTotalCount(const std::string& histogramName) {
Mathieu 2014/01/09 18:37:18 no indent
Alexei Svitkine (slow) 2014/01/09 18:54:41 Capitalize function name. histogramName -> histogr
beaudoin 2014/01/15 23:39:56 Done.
beaudoin 2014/01/15 23:39:56 Done.
+ base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram(
+ histogramName);
Alexei Svitkine (slow) 2014/01/09 18:54:41 This should be indented 4 more than previous line.
beaudoin 2014/01/15 23:39:56 Done.
+ return histogram->SnapshotSamples()->TotalCount();
+ }
- MOCK_CONST_METHOD2(GetPercentError, size_t(size_t errors, size_t events));
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MockNTPUserDataLogger);
-};
+ base::HistogramBase::Count getBinCount(const std::string& histogramName,
+ base::HistogramBase::Sample value) {
+ base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram(
+ histogramName);
+ return histogram->SnapshotSamples()->GetCount(value);
+ }
} // namespace
-TEST(NTPUserDataLoggerTest, ThumbnailErrorRateDoesNotDivideByZero) {
- MockNTPUserDataLogger logger;
- EXPECT_CALL(logger, GetPercentError(testing::_, testing::_)).Times(0);
- logger.EmitThumbnailErrorRate();
+TEST(NTPUserDataLoggerTest, TestLogging) {
+ base::StatisticsRecorder::Initialize();
+ NTPUserDataLogger logger(NULL);
+
+ // Ensure it works when the statistics are all empty. Only the mouseover
+ // should be logged in this case. The other histograms are not created yet so
+ // we can't query them.
+ logger.EmitNtpStatistics();
+
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfMouseOvers"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 0));
+
+ // Ensure it works with some non-zero statistics. All statistics should now
+ // be logged.
+ for (int i=0; i<20; ++i)
+ logger.LogEvent(NTP_MOUSEOVER);
+ for (int i=0; i<8; ++i)
+ logger.LogEvent(NTP_TILE);
+ for (int i=0; i<4; ++i)
+ logger.LogEvent(NTP_THUMBNAIL_ATTEMPT);
+ for (int i=0; i<2; ++i)
+ logger.LogEvent(NTP_THUMBNAIL_ERROR);
+ logger.LogEvent(NTP_GRAY_TILE_FALLBACK);
+ logger.LogEvent(NTP_EXTERNAL_FALLBACK);
+ for (int i=0; i<2; ++i)
+ logger.LogEvent(NTP_EXTERNAL_TILE);
+ for (int i=0; i<2; ++i)
+ logger.LogEvent(NTP_GRAY_TILE);
+ logger.LogEvent(NTP_SERVER_SIDE_SUGGESTION);
+ logger.EmitNtpStatistics();
+
+ EXPECT_EQ(2, getTotalCount("NewTabPage.NumberOfMouseOvers"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 0));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 20));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfTiles"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfTiles", 8));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailAttempts"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfThumbnailAttempts", 4));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailErrors"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfThumbnailErrors", 2));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTileFallbacks"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfGrayTileFallbacks", 1));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalFallbacks"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfExternalFallbacks", 1));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalTiles"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfExternalTiles", 2));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTiles"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfGrayTiles", 2));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.SuggestionsType"));
+ EXPECT_EQ(1, getBinCount("NewTabPage.SuggestionsType", 1));
+
+ // Statistics should be reset to 0, so we should not log anything else.
+ logger.EmitNtpStatistics();
+ EXPECT_EQ(3, getTotalCount("NewTabPage.NumberOfMouseOvers"));
+ EXPECT_EQ(2, getBinCount("NewTabPage.NumberOfMouseOvers", 0));
+ EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 20));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfTiles"));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailAttempts"));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailErrors"));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTileFallbacks"));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalFallbacks"));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalTiles"));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTiles"));
+ EXPECT_EQ(1, getTotalCount("NewTabPage.SuggestionsType"));
}

Powered by Google App Engine
This is Rietveld 408576698