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

Side by Side Diff: chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc

Issue 178253008: Redoing Issue 36073011: Allowing file:/// in Instant Extended's Most Visited links. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unused consts. Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/ntp/ntp_user_data_logger.h" 5 #include "chrome/browser/ui/webui/ntp/ntp_user_data_logger.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/metrics/statistics_recorder.h" 9 #include "base/metrics/statistics_recorder.h"
10 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/common/ntp_logging_events.h" 11 #include "chrome/common/ntp_logging_events.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 namespace { 14 namespace {
14 15
15 class TestNTPUserDataLogger : public NTPUserDataLogger { 16 class TestNTPUserDataLogger : public NTPUserDataLogger {
16 public: 17 public:
17 TestNTPUserDataLogger() : NTPUserDataLogger(NULL) {} 18 TestNTPUserDataLogger() : NTPUserDataLogger(NULL) {}
18 virtual ~TestNTPUserDataLogger() {} 19 virtual ~TestNTPUserDataLogger() {}
19 }; 20 };
20 21
21 base::HistogramBase::Count GetTotalCount(const std::string& histogram_name) { 22 base::HistogramBase::Count GetTotalCount(const std::string& histogram_name) {
22 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( 23 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram(
23 histogram_name); 24 histogram_name);
24 return histogram->SnapshotSamples()->TotalCount(); 25 // Return 0 if history is uninitialized.
26 return histogram ? histogram->SnapshotSamples()->TotalCount() : 0;
25 } 27 }
26 28
27 base::HistogramBase::Count GetBinCount(const std::string& histogram_name, 29 base::HistogramBase::Count GetBinCount(const std::string& histogram_name,
28 base::HistogramBase::Sample value) { 30 base::HistogramBase::Sample value) {
29 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( 31 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram(
30 histogram_name); 32 histogram_name);
31 return histogram->SnapshotSamples()->GetCount(value); 33 // Return 0 if history is uninitialized.
34 return histogram ? histogram->SnapshotSamples()->GetCount(value) : 0;
32 } 35 }
33 36
34 } // namespace 37 } // namespace
35 38
36 TEST(NTPUserDataLoggerTest, TestLogging) { 39 TEST(NTPUserDataLoggerTest, TestLogging) {
37 base::StatisticsRecorder::Initialize(); 40 base::StatisticsRecorder::Initialize();
41
42 // Ensure empty statistics.
43 EXPECT_EQ(0, GetTotalCount("NewTabPage.NumberOfMouseOvers"));
44 EXPECT_EQ(0, GetBinCount("NewTabPage.NumberOfMouseOvers", 0));
45
46 // Enusure non-zero statistics.
38 TestNTPUserDataLogger logger; 47 TestNTPUserDataLogger logger;
39 48
40 // Ensure it works when the statistics are all empty. Only the mouseover
41 // should be logged in this case. The other histograms are not created yet so
42 // we can't query them.
43 logger.EmitNtpStatistics();
44
45 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfMouseOvers"));
46 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 0));
47
48 // Ensure it works with some non-zero statistics. All statistics should now
49 // be logged.
50 for (int i = 0; i < 20; ++i) 49 for (int i = 0; i < 20; ++i)
51 logger.LogEvent(NTP_MOUSEOVER); 50 logger.LogEvent(NTP_MOUSEOVER);
52 for (int i = 0; i < 8; ++i) 51 for (int i = 0; i < 8; ++i)
53 logger.LogEvent(NTP_TILE); 52 logger.LogEvent(NTP_TILE);
54 for (int i = 0; i < 4; ++i) 53 for (int i = 0; i < 4; ++i)
55 logger.LogEvent(NTP_THUMBNAIL_TILE); 54 logger.LogEvent(NTP_THUMBNAIL_TILE);
56 for (int i = 0; i < 2; ++i) 55 for (int i = 0; i < 2; ++i)
57 logger.LogEvent(NTP_THUMBNAIL_ERROR); 56 logger.LogEvent(NTP_THUMBNAIL_ERROR);
58 logger.LogEvent(NTP_GRAY_TILE_FALLBACK); 57 logger.LogEvent(NTP_GRAY_TILE_FALLBACK);
59 logger.LogEvent(NTP_EXTERNAL_TILE_FALLBACK); 58 logger.LogEvent(NTP_EXTERNAL_TILE_FALLBACK);
60 for (int i = 0; i < 2; ++i) 59 for (int i = 0; i < 2; ++i)
61 logger.LogEvent(NTP_EXTERNAL_TILE); 60 logger.LogEvent(NTP_EXTERNAL_TILE);
62 for (int i = 0; i < 2; ++i) 61 for (int i = 0; i < 2; ++i)
63 logger.LogEvent(NTP_GRAY_TILE); 62 logger.LogEvent(NTP_GRAY_TILE);
64 logger.LogEvent(NTP_SERVER_SIDE_SUGGESTION); 63 logger.LogEvent(NTP_SERVER_SIDE_SUGGESTION);
64
65 logger.EmitNtpStatistics(); 65 logger.EmitNtpStatistics();
66 66
67 EXPECT_EQ(2, GetTotalCount("NewTabPage.NumberOfMouseOvers")); 67 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfMouseOvers"));
68 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); 68 EXPECT_EQ(0, GetBinCount("NewTabPage.NumberOfMouseOvers", 0));
69 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 20)); 69 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 20));
70 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles")); 70 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles"));
71 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfTiles", 8)); 71 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfTiles", 8));
72 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailTiles")); 72 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailTiles"));
73 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfThumbnailTiles", 4)); 73 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfThumbnailTiles", 4));
74 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailErrors")); 74 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailErrors"));
75 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfThumbnailErrors", 2)); 75 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfThumbnailErrors", 2));
76 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTileFallbacks")); 76 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTileFallbacks"));
77 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfGrayTileFallbacks", 1)); 77 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfGrayTileFallbacks", 1));
78 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTileFallbacks")); 78 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTileFallbacks"));
79 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfExternalTileFallbacks", 1)); 79 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfExternalTileFallbacks", 1));
80 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTiles")); 80 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTiles"));
81 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfExternalTiles", 2)); 81 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfExternalTiles", 2));
82 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTiles")); 82 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTiles"));
83 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfGrayTiles", 2)); 83 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfGrayTiles", 2));
84 EXPECT_EQ(1, GetTotalCount("NewTabPage.SuggestionsType")); 84 EXPECT_EQ(1, GetTotalCount("NewTabPage.SuggestionsType"));
85 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsType", 1)); 85 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsType", 1));
86 86
87 // Statistics should be reset to 0, so we should not log anything else. 87 // Statistics should be reset to 0, so we should not log anything else.
88 logger.EmitNtpStatistics(); 88 logger.EmitNtpStatistics();
89 EXPECT_EQ(3, GetTotalCount("NewTabPage.NumberOfMouseOvers")); 89 EXPECT_EQ(2, GetTotalCount("NewTabPage.NumberOfMouseOvers"));
90 EXPECT_EQ(2, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); 90 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 0));
91 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 20)); 91 EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 20));
92 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles")); 92 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles"));
93 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailTiles")); 93 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailTiles"));
94 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailErrors")); 94 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailErrors"));
95 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTileFallbacks")); 95 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTileFallbacks"));
96 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTileFallbacks")); 96 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTileFallbacks"));
97 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTiles")); 97 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTiles"));
98 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTiles")); 98 EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTiles"));
99 EXPECT_EQ(1, GetTotalCount("NewTabPage.SuggestionsType")); 99 EXPECT_EQ(1, GetTotalCount("NewTabPage.SuggestionsType"));
100 } 100 }
101
102 TEST(NTPUserDataLoggerTest, TestLogMostVisitedImpression) {
103 base::StatisticsRecorder::Initialize();
104
105 EXPECT_EQ(0, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1));
106 EXPECT_EQ(0, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5));
107
108 TestNTPUserDataLogger logger;
109
110 logger.LogMostVisitedImpression(1, base::ASCIIToUTF16("foobar"));
111 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1));
112 EXPECT_EQ(0, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5));
113
114 logger.LogMostVisitedImpression(5, base::ASCIIToUTF16("foobar"));
115 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1));
116 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5));
117
118 // Try without provider. Only total increases.
119 logger.LogMostVisitedImpression(5, base::ASCIIToUTF16(""));
120 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1));
121 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5));
122
123 logger.LogMostVisitedImpression(1, base::ASCIIToUTF16("foobar"));
124 EXPECT_EQ(2, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 1));
125 EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsImpression.foobar", 5));
126 }
127
128 TEST(NTPUserDataLoggerTest, TestLogMostVisitedNavigation) {
129 base::StatisticsRecorder::Initialize();
130
131 EXPECT_EQ(0, GetTotalCount("NewTabPage.MostVisited"));
132 EXPECT_EQ(0, GetBinCount("NewTabPage.MostVisited.foobar", 1));
133 EXPECT_EQ(0, GetBinCount("NewTabPage.MostVisited.foobar", 5));
134
135 TestNTPUserDataLogger logger;
136
137 logger.LogMostVisitedNavigation(1, base::ASCIIToUTF16("foobar"));
138 EXPECT_EQ(1, GetTotalCount("NewTabPage.MostVisited"));
139 EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 1));
140 EXPECT_EQ(0, GetBinCount("NewTabPage.MostVisited.foobar", 5));
141
142 logger.LogMostVisitedNavigation(5, base::ASCIIToUTF16("foobar"));
143 EXPECT_EQ(2, GetTotalCount("NewTabPage.MostVisited"));
144 EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 1));
145 EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 5));
146
147 // Try without provider. Only total increases.
148 logger.LogMostVisitedNavigation(5, base::ASCIIToUTF16(""));
149 EXPECT_EQ(3, GetTotalCount("NewTabPage.MostVisited"));
150 EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 1));
151 EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 5));
152
153 logger.LogMostVisitedNavigation(1, base::ASCIIToUTF16("foobar"));
154 EXPECT_EQ(4, GetTotalCount("NewTabPage.MostVisited"));
155 EXPECT_EQ(2, GetBinCount("NewTabPage.MostVisited.foobar", 1));
156 EXPECT_EQ(1, GetBinCount("NewTabPage.MostVisited.foobar", 5));
157 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698