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 fa217eb1ed141fd766ebca4ad8eb44339ce08971..74283de27b9e675e35f70c0c1c9898b73af921dc 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 |
@@ -7,6 +7,7 @@ |
#include "base/basictypes.h" |
#include "base/metrics/histogram.h" |
#include "base/metrics/statistics_recorder.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "chrome/common/ntp_logging_events.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -21,32 +22,30 @@ class TestNTPUserDataLogger : public NTPUserDataLogger { |
base::HistogramBase::Count GetTotalCount(const std::string& histogram_name) { |
base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( |
histogram_name); |
- return histogram->SnapshotSamples()->TotalCount(); |
+ // Return 0 if history is uninitialized. |
+ return histogram ? histogram->SnapshotSamples()->TotalCount() : 0; |
} |
base::HistogramBase::Count GetBinCount(const std::string& histogram_name, |
base::HistogramBase::Sample value) { |
base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( |
histogram_name); |
- return histogram->SnapshotSamples()->GetCount(value); |
+ // Return 0 if history is uninitialized. |
+ return histogram ? histogram->SnapshotSamples()->GetCount(value) : 0; |
} |
} // namespace |
TEST(NTPUserDataLoggerTest, TestLogging) { |
base::StatisticsRecorder::Initialize(); |
- TestNTPUserDataLogger logger; |
- // 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(); |
+ // Ensure empty statistics. |
+ EXPECT_EQ(0, GetTotalCount("NewTabPage.NumberOfMouseOvers")); |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); |
- EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfMouseOvers")); |
- EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); |
+ // Enusure non-zero statistics. |
+ TestNTPUserDataLogger logger; |
- // 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) |
@@ -62,10 +61,11 @@ TEST(NTPUserDataLoggerTest, TestLogging) { |
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, GetTotalCount("NewTabPage.NumberOfMouseOvers")); |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); |
EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 20)); |
EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles")); |
EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfTiles", 8)); |
@@ -86,8 +86,8 @@ TEST(NTPUserDataLoggerTest, TestLogging) { |
// 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(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, GetTotalCount("NewTabPage.NumberOfThumbnailTiles")); |
@@ -98,3 +98,60 @@ TEST(NTPUserDataLoggerTest, TestLogging) { |
EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTiles")); |
EXPECT_EQ(1, GetTotalCount("NewTabPage.SuggestionsType")); |
} |
+ |
+TEST(NTPUserDataLoggerTest, TestLogMostVisitedImpression) { |
+ base::StatisticsRecorder::Initialize(); |
+ |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1)); |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5)); |
+ |
+ TestNTPUserDataLogger logger; |
+ |
+ logger.LogMostVisitedImpression(1, base::ASCIIToUTF16("foobar")); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1)); |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5)); |
+ |
+ logger.LogMostVisitedImpression(5, base::ASCIIToUTF16("foobar")); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1)); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5)); |
+ |
+ // Try without provider. Only total increases. |
+ logger.LogMostVisitedImpression(5, base::ASCIIToUTF16("")); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1)); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5)); |
+ |
+ logger.LogMostVisitedImpression(1, base::ASCIIToUTF16("foobar")); |
+ EXPECT_EQ(2, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1)); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5)); |
+} |
+ |
+TEST(NTPUserDataLoggerTest, TestLogMostVisitedNavigation) { |
+ base::StatisticsRecorder::Initialize(); |
+ |
+ EXPECT_EQ(0, GetTotalCount("NewTabPage.MostVisited")); |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.MostVisited.foobar", 1)); |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.MostVisited.foobar", 5)); |
+ |
+ TestNTPUserDataLogger logger; |
+ |
+ logger.LogMostVisitedNavigation(1, base::ASCIIToUTF16("foobar")); |
+ EXPECT_EQ(1, GetTotalCount("NewTabPage.MostVisited")); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 1)); |
+ EXPECT_EQ(0, GetBinCount("NewTabPage.MostVisited.foobar", 5)); |
+ |
+ logger.LogMostVisitedNavigation(5, base::ASCIIToUTF16("foobar")); |
+ EXPECT_EQ(2, GetTotalCount("NewTabPage.MostVisited")); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 1)); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 5)); |
+ |
+ // Try without provider. Only total increases. |
+ logger.LogMostVisitedNavigation(5, base::ASCIIToUTF16("")); |
+ EXPECT_EQ(3, GetTotalCount("NewTabPage.MostVisited")); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 1)); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 5)); |
+ |
+ logger.LogMostVisitedNavigation(1, base::ASCIIToUTF16("foobar")); |
+ EXPECT_EQ(4, GetTotalCount("NewTabPage.MostVisited")); |
+ EXPECT_EQ(2, GetBinCount("NewTabPage.MostVisited.foobar", 1)); |
+ EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 5)); |
+} |