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

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

Issue 2796643002: NTP: Record TileType metrics also on desktop (Closed)
Patch Set: review Created 3 years, 8 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
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 <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/metrics/statistics_recorder.h" 12 #include "base/metrics/statistics_recorder.h"
13 #include "base/test/histogram_tester.h" 13 #include "base/test/histogram_tester.h"
14 #include "chrome/common/search/ntp_logging_events.h" 14 #include "chrome/common/search/ntp_logging_events.h"
15 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 using base::Bucket; 18 using base::Bucket;
19 using ntp_tiles::TileSource; 19 using ntp_tiles::TileSource;
20 using ntp_tiles::TileVisualType;
20 using testing::ElementsAre; 21 using testing::ElementsAre;
21 using testing::IsEmpty; 22 using testing::IsEmpty;
22 using testing::SizeIs; 23 using testing::SizeIs;
23 24
24 namespace { 25 namespace {
25 26
26 using Sample = base::HistogramBase::Sample; 27 using Sample = base::HistogramBase::Sample;
27 using Samples = std::vector<Sample>; 28 using Samples = std::vector<Sample>;
28 29
29 class TestNTPUserDataLogger : public NTPUserDataLogger { 30 class TestNTPUserDataLogger : public NTPUserDataLogger {
30 public: 31 public:
31 TestNTPUserDataLogger() : NTPUserDataLogger(nullptr) {} 32 TestNTPUserDataLogger() : NTPUserDataLogger(nullptr) {}
32 ~TestNTPUserDataLogger() override {} 33 ~TestNTPUserDataLogger() override {}
33 }; 34 };
34 35
35 } // namespace 36 } // namespace
36 37
37 TEST(NTPUserDataLoggerTest, TestNumberOfTiles) { 38 TEST(NTPUserDataLoggerTest, TestNumberOfTiles) {
38 base::StatisticsRecorder::Initialize(); 39 base::StatisticsRecorder::Initialize();
39 40
40 base::HistogramTester histogram_tester; 41 base::HistogramTester histogram_tester;
41 42
42 // Ensure non-zero statistics. 43 // Ensure non-zero statistics.
43 TestNTPUserDataLogger logger; 44 TestNTPUserDataLogger logger;
44 logger.ntp_url_ = GURL("chrome://newtab/"); 45 logger.ntp_url_ = GURL("chrome://newtab/");
45 46
46 base::TimeDelta delta = base::TimeDelta::FromMilliseconds(0); 47 base::TimeDelta delta = base::TimeDelta::FromMilliseconds(0);
47 48
48 for (int i = 0; i < 8; ++i) 49 for (int i = 0; i < 8; ++i) {
49 logger.LogMostVisitedImpression(i, TileSource::SUGGESTIONS_SERVICE); 50 logger.LogMostVisitedImpression(i, TileSource::SUGGESTIONS_SERVICE,
51 TileVisualType::THUMBNAIL);
52 }
50 logger.LogEvent(NTP_ALL_TILES_LOADED, delta); 53 logger.LogEvent(NTP_ALL_TILES_LOADED, delta);
51 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.NumberOfTiles"), 54 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.NumberOfTiles"),
52 ElementsAre(Bucket(8, 1))); 55 ElementsAre(Bucket(8, 1)));
53 56
54 // We should not log again for the same NTP. 57 // We should not log again for the same NTP.
55 logger.LogEvent(NTP_ALL_TILES_LOADED, delta); 58 logger.LogEvent(NTP_ALL_TILES_LOADED, delta);
56 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.NumberOfTiles"), 59 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.NumberOfTiles"),
57 ElementsAre(Bucket(8, 1))); 60 ElementsAre(Bucket(8, 1)));
58 61
59 // Navigating away and back resets stats. 62 // Navigating away and back resets stats.
(...skipping 10 matching lines...) Expand all
70 base::StatisticsRecorder::Initialize(); 73 base::StatisticsRecorder::Initialize();
71 74
72 base::HistogramTester histogram_tester; 75 base::HistogramTester histogram_tester;
73 76
74 TestNTPUserDataLogger logger; 77 TestNTPUserDataLogger logger;
75 logger.ntp_url_ = GURL("chrome://newtab/"); 78 logger.ntp_url_ = GURL("chrome://newtab/");
76 79
77 base::TimeDelta delta = base::TimeDelta::FromMilliseconds(0); 80 base::TimeDelta delta = base::TimeDelta::FromMilliseconds(0);
78 81
79 // Impressions increment the associated bins. 82 // Impressions increment the associated bins.
80 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE); 83 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE,
81 logger.LogMostVisitedImpression(1, TileSource::SUGGESTIONS_SERVICE); 84 TileVisualType::THUMBNAIL);
82 logger.LogMostVisitedImpression(2, TileSource::SUGGESTIONS_SERVICE); 85 logger.LogMostVisitedImpression(1, TileSource::SUGGESTIONS_SERVICE,
83 logger.LogMostVisitedImpression(3, TileSource::SUGGESTIONS_SERVICE); 86 TileVisualType::THUMBNAIL_FAILED);
84 logger.LogMostVisitedImpression(4, TileSource::TOP_SITES); 87 logger.LogMostVisitedImpression(2, TileSource::SUGGESTIONS_SERVICE,
85 logger.LogMostVisitedImpression(5, TileSource::TOP_SITES); 88 TileVisualType::THUMBNAIL);
86 logger.LogMostVisitedImpression(6, TileSource::TOP_SITES); 89 logger.LogMostVisitedImpression(3, TileSource::SUGGESTIONS_SERVICE,
87 logger.LogMostVisitedImpression(7, TileSource::TOP_SITES); 90 TileVisualType::THUMBNAIL);
91 logger.LogMostVisitedImpression(4, TileSource::TOP_SITES,
92 TileVisualType::THUMBNAIL);
93 logger.LogMostVisitedImpression(5, TileSource::TOP_SITES,
94 TileVisualType::THUMBNAIL);
95 logger.LogMostVisitedImpression(6, TileSource::TOP_SITES,
96 TileVisualType::THUMBNAIL);
97 logger.LogMostVisitedImpression(7, TileSource::TOP_SITES,
98 TileVisualType::THUMBNAIL);
88 99
89 // Repeated impressions for the same bins are ignored. 100 // Repeated impressions for the same bins are ignored.
90 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE); 101 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE,
91 logger.LogMostVisitedImpression(1, TileSource::TOP_SITES); 102 TileVisualType::THUMBNAIL_FAILED);
92 logger.LogMostVisitedImpression(2, TileSource::SUGGESTIONS_SERVICE); 103 logger.LogMostVisitedImpression(1, TileSource::TOP_SITES,
93 logger.LogMostVisitedImpression(3, TileSource::TOP_SITES); 104 TileVisualType::THUMBNAIL_FAILED);
105 logger.LogMostVisitedImpression(2, TileSource::SUGGESTIONS_SERVICE,
106 TileVisualType::THUMBNAIL);
107 logger.LogMostVisitedImpression(3, TileSource::TOP_SITES,
108 TileVisualType::THUMBNAIL);
94 109
95 // Impressions are silently ignored for tiles >= 8. 110 // Impressions are silently ignored for tiles >= 8.
96 logger.LogMostVisitedImpression(8, TileSource::SUGGESTIONS_SERVICE); 111 logger.LogMostVisitedImpression(8, TileSource::SUGGESTIONS_SERVICE,
97 logger.LogMostVisitedImpression(9, TileSource::TOP_SITES); 112 TileVisualType::THUMBNAIL);
113 logger.LogMostVisitedImpression(9, TileSource::TOP_SITES,
114 TileVisualType::THUMBNAIL);
98 115
99 // The actual histograms are emitted only after the ALL_TILES_LOADED event, so 116 // The actual histograms are emitted only after the ALL_TILES_LOADED event, so
100 // at this point everything should still be empty. 117 // at this point everything should still be empty.
101 EXPECT_THAT( 118 EXPECT_THAT(
102 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"), 119 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"),
103 IsEmpty()); 120 IsEmpty());
104 EXPECT_THAT( 121 EXPECT_THAT(
105 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"), 122 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"),
106 IsEmpty()); 123 IsEmpty());
107 EXPECT_THAT( 124 EXPECT_THAT(
108 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"), 125 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"),
109 IsEmpty()); 126 IsEmpty());
127 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType"), IsEmpty());
128 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.client"),
129 IsEmpty());
130 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.server"),
131 IsEmpty());
110 132
111 // Send the ALL_TILES_LOADED event, this should trigger emitting histograms. 133 // Send the ALL_TILES_LOADED event, this should trigger emitting histograms.
112 logger.LogEvent(NTP_ALL_TILES_LOADED, delta); 134 logger.LogEvent(NTP_ALL_TILES_LOADED, delta);
113 135
114 EXPECT_THAT( 136 EXPECT_THAT(
115 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"), 137 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"),
116 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1), Bucket(3, 1), 138 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1), Bucket(3, 1),
117 Bucket(4, 1), Bucket(5, 1), Bucket(6, 1), Bucket(7, 1))); 139 Bucket(4, 1), Bucket(5, 1), Bucket(6, 1), Bucket(7, 1)));
118 EXPECT_THAT( 140 EXPECT_THAT(
119 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"), 141 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"),
120 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1), Bucket(3, 1))); 142 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1), Bucket(3, 1)));
121 EXPECT_THAT( 143 EXPECT_THAT(
122 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"), 144 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"),
123 ElementsAre(Bucket(4, 1), Bucket(5, 1), Bucket(6, 1), Bucket(7, 1))); 145 ElementsAre(Bucket(4, 1), Bucket(5, 1), Bucket(6, 1), Bucket(7, 1)));
146 EXPECT_THAT(
147 histogram_tester.GetAllSamples("NewTabPage.TileType"),
148 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 7),
149 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
150 EXPECT_THAT(
151 histogram_tester.GetAllSamples("NewTabPage.TileType.server"),
152 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 3),
153 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
154 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.client"),
155 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 4)));
124 156
125 // After navigating away from the NTP and back, we record again. 157 // After navigating away from the NTP and back, we record again.
126 logger.NavigatedFromURLToURL(GURL("chrome://newtab/"), 158 logger.NavigatedFromURLToURL(GURL("chrome://newtab/"),
127 GURL("http://chromium.org")); 159 GURL("http://chromium.org"));
128 logger.NavigatedFromURLToURL(GURL("http://chromium.org"), 160 logger.NavigatedFromURLToURL(GURL("http://chromium.org"),
129 GURL("chrome://newtab/")); 161 GURL("chrome://newtab/"));
130 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE); 162 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE,
131 logger.LogMostVisitedImpression(1, TileSource::TOP_SITES); 163 TileVisualType::THUMBNAIL);
132 logger.LogMostVisitedImpression(2, TileSource::SUGGESTIONS_SERVICE); 164 logger.LogMostVisitedImpression(1, TileSource::TOP_SITES,
133 logger.LogMostVisitedImpression(3, TileSource::TOP_SITES); 165 TileVisualType::THUMBNAIL);
166 logger.LogMostVisitedImpression(2, TileSource::SUGGESTIONS_SERVICE,
167 TileVisualType::THUMBNAIL);
168 logger.LogMostVisitedImpression(3, TileSource::TOP_SITES,
169 TileVisualType::THUMBNAIL_FAILED);
134 logger.LogEvent(NTP_ALL_TILES_LOADED, delta); 170 logger.LogEvent(NTP_ALL_TILES_LOADED, delta);
135 171
136 EXPECT_THAT( 172 EXPECT_THAT(
137 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"), 173 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"),
138 ElementsAre(Bucket(0, 2), Bucket(1, 2), Bucket(2, 2), Bucket(3, 2), 174 ElementsAre(Bucket(0, 2), Bucket(1, 2), Bucket(2, 2), Bucket(3, 2),
139 Bucket(4, 1), Bucket(5, 1), Bucket(6, 1), Bucket(7, 1))); 175 Bucket(4, 1), Bucket(5, 1), Bucket(6, 1), Bucket(7, 1)));
140 EXPECT_THAT( 176 EXPECT_THAT(
141 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"), 177 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"),
142 ElementsAre(Bucket(0, 2), Bucket(1, 1), Bucket(2, 2), Bucket(3, 1))); 178 ElementsAre(Bucket(0, 2), Bucket(1, 1), Bucket(2, 2), Bucket(3, 1)));
143 EXPECT_THAT( 179 EXPECT_THAT(
144 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"), 180 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"),
145 ElementsAre(Bucket(1, 1), Bucket(3, 1), Bucket(4, 1), Bucket(5, 1), 181 ElementsAre(Bucket(1, 1), Bucket(3, 1), Bucket(4, 1), Bucket(5, 1),
146 Bucket(6, 1), Bucket(7, 1))); 182 Bucket(6, 1), Bucket(7, 1)));
183 EXPECT_THAT(
184 histogram_tester.GetAllSamples("NewTabPage.TileType"),
185 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 10),
186 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 2)));
187 EXPECT_THAT(
188 histogram_tester.GetAllSamples("NewTabPage.TileType.server"),
189 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 5),
190 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
191 EXPECT_THAT(
192 histogram_tester.GetAllSamples("NewTabPage.TileType.client"),
193 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 5),
194 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
147 } 195 }
148 196
149 TEST(NTPUserDataLoggerTest, TestLogMostVisitedNavigation) { 197 TEST(NTPUserDataLoggerTest, TestLogMostVisitedNavigation) {
150 base::StatisticsRecorder::Initialize(); 198 base::StatisticsRecorder::Initialize();
151 199
152 base::HistogramTester histogram_tester; 200 base::HistogramTester histogram_tester;
153 201
154 TestNTPUserDataLogger logger; 202 TestNTPUserDataLogger logger;
155 203
156 logger.LogMostVisitedNavigation(0, TileSource::SUGGESTIONS_SERVICE); 204 logger.LogMostVisitedNavigation(0, TileSource::SUGGESTIONS_SERVICE,
205 TileVisualType::THUMBNAIL);
157 EXPECT_THAT( 206 EXPECT_THAT(
158 histogram_tester.GetAllSamples("NewTabPage.MostVisited"), 207 histogram_tester.GetAllSamples("NewTabPage.MostVisited"),
159 ElementsAre(Bucket(0, 1))); 208 ElementsAre(Bucket(0, 1)));
160 EXPECT_THAT( 209 EXPECT_THAT(
161 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"), 210 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"),
162 ElementsAre(Bucket(0, 1))); 211 ElementsAre(Bucket(0, 1)));
163 EXPECT_THAT( 212 EXPECT_THAT(
164 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"), 213 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"),
165 IsEmpty()); 214 IsEmpty());
215 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked"),
216 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1)));
217 EXPECT_THAT(
218 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.server"),
219 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1)));
220 EXPECT_THAT(
221 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.client"),
222 IsEmpty());
166 223
167 logger.LogMostVisitedNavigation(1, TileSource::SUGGESTIONS_SERVICE); 224 logger.LogMostVisitedNavigation(1, TileSource::SUGGESTIONS_SERVICE,
225 TileVisualType::THUMBNAIL_FAILED);
168 EXPECT_THAT( 226 EXPECT_THAT(
169 histogram_tester.GetAllSamples("NewTabPage.MostVisited"), 227 histogram_tester.GetAllSamples("NewTabPage.MostVisited"),
170 ElementsAre(Bucket(0, 1), Bucket(1, 1))); 228 ElementsAre(Bucket(0, 1), Bucket(1, 1)));
171 EXPECT_THAT( 229 EXPECT_THAT(
172 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"), 230 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"),
173 ElementsAre(Bucket(0, 1), Bucket(1, 1))); 231 ElementsAre(Bucket(0, 1), Bucket(1, 1)));
174 EXPECT_THAT( 232 EXPECT_THAT(
175 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"), 233 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"),
176 IsEmpty()); 234 IsEmpty());
235 EXPECT_THAT(
236 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked"),
237 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1),
238 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
239 EXPECT_THAT(
240 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.server"),
241 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1),
242 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
243 EXPECT_THAT(
244 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.client"),
245 IsEmpty());
177 246
178 logger.LogMostVisitedNavigation(2, TileSource::TOP_SITES); 247 logger.LogMostVisitedNavigation(2, TileSource::TOP_SITES,
248 TileVisualType::THUMBNAIL);
179 EXPECT_THAT( 249 EXPECT_THAT(
180 histogram_tester.GetAllSamples("NewTabPage.MostVisited"), 250 histogram_tester.GetAllSamples("NewTabPage.MostVisited"),
181 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1))); 251 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1)));
182 EXPECT_THAT( 252 EXPECT_THAT(
183 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"), 253 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"),
184 ElementsAre(Bucket(0, 1), Bucket(1, 1))); 254 ElementsAre(Bucket(0, 1), Bucket(1, 1)));
185 EXPECT_THAT( 255 EXPECT_THAT(
186 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"), 256 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"),
187 ElementsAre(Bucket(2, 1))); 257 ElementsAre(Bucket(2, 1)));
258 EXPECT_THAT(
259 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked"),
260 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 2),
261 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
262 EXPECT_THAT(
263 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.server"),
264 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1),
265 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
266 EXPECT_THAT(
267 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.client"),
268 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1)));
188 269
189 logger.LogMostVisitedNavigation(3, TileSource::TOP_SITES); 270 logger.LogMostVisitedNavigation(3, TileSource::TOP_SITES,
271 TileVisualType::THUMBNAIL_FAILED);
190 EXPECT_THAT( 272 EXPECT_THAT(
191 histogram_tester.GetAllSamples("NewTabPage.MostVisited"), 273 histogram_tester.GetAllSamples("NewTabPage.MostVisited"),
192 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1), Bucket(3, 1))); 274 ElementsAre(Bucket(0, 1), Bucket(1, 1), Bucket(2, 1), Bucket(3, 1)));
193 EXPECT_THAT( 275 EXPECT_THAT(
194 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"), 276 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"),
195 ElementsAre(Bucket(0, 1), Bucket(1, 1))); 277 ElementsAre(Bucket(0, 1), Bucket(1, 1)));
196 EXPECT_THAT( 278 EXPECT_THAT(
197 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"), 279 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"),
198 ElementsAre(Bucket(2, 1), Bucket(3, 1))); 280 ElementsAre(Bucket(2, 1), Bucket(3, 1)));
281 EXPECT_THAT(
282 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked"),
283 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 2),
284 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 2)));
285 EXPECT_THAT(
286 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.server"),
287 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1),
288 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
289 EXPECT_THAT(
290 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.client"),
291 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 1),
292 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
199 293
200 // Navigations always increase. 294 // Navigations always increase.
201 logger.LogMostVisitedNavigation(0, TileSource::SUGGESTIONS_SERVICE); 295 logger.LogMostVisitedNavigation(0, TileSource::SUGGESTIONS_SERVICE,
202 logger.LogMostVisitedNavigation(1, TileSource::TOP_SITES); 296 TileVisualType::THUMBNAIL);
203 logger.LogMostVisitedNavigation(2, TileSource::SUGGESTIONS_SERVICE); 297 logger.LogMostVisitedNavigation(1, TileSource::TOP_SITES,
204 logger.LogMostVisitedNavigation(3, TileSource::TOP_SITES); 298 TileVisualType::THUMBNAIL);
299 logger.LogMostVisitedNavigation(2, TileSource::SUGGESTIONS_SERVICE,
300 TileVisualType::THUMBNAIL);
301 logger.LogMostVisitedNavigation(3, TileSource::TOP_SITES,
302 TileVisualType::THUMBNAIL);
205 EXPECT_THAT( 303 EXPECT_THAT(
206 histogram_tester.GetAllSamples("NewTabPage.MostVisited"), 304 histogram_tester.GetAllSamples("NewTabPage.MostVisited"),
207 ElementsAre(Bucket(0, 2), Bucket(1, 2), Bucket(2, 2), Bucket(3, 2))); 305 ElementsAre(Bucket(0, 2), Bucket(1, 2), Bucket(2, 2), Bucket(3, 2)));
208 EXPECT_THAT( 306 EXPECT_THAT(
209 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"), 307 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"),
210 ElementsAre(Bucket(0, 2), Bucket(1, 1), Bucket(2, 1))); 308 ElementsAre(Bucket(0, 2), Bucket(1, 1), Bucket(2, 1)));
211 EXPECT_THAT( 309 EXPECT_THAT(
212 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"), 310 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"),
213 ElementsAre(Bucket(1, 1), Bucket(2, 1), Bucket(3, 2))); 311 ElementsAre(Bucket(1, 1), Bucket(2, 1), Bucket(3, 2)));
312 EXPECT_THAT(
313 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked"),
314 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 6),
315 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 2)));
316 EXPECT_THAT(
317 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.server"),
318 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 3),
319 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
320 EXPECT_THAT(
321 histogram_tester.GetAllSamples("NewTabPage.TileTypeClicked.client"),
322 ElementsAre(Bucket(ntp_tiles::TileVisualType::THUMBNAIL, 3),
323 Bucket(ntp_tiles::TileVisualType::THUMBNAIL_FAILED, 1)));
214 } 324 }
215 325
216 TEST(NTPUserDataLoggerTest, TestLoadTime) { 326 TEST(NTPUserDataLoggerTest, TestLoadTime) {
217 base::StatisticsRecorder::Initialize(); 327 base::StatisticsRecorder::Initialize();
218 328
219 base::HistogramTester histogram_tester; 329 base::HistogramTester histogram_tester;
220 330
221 TestNTPUserDataLogger logger; 331 TestNTPUserDataLogger logger;
222 logger.ntp_url_ = GURL("chrome://newtab/"); 332 logger.ntp_url_ = GURL("chrome://newtab/");
223 333
224 base::TimeDelta delta_tiles_received = base::TimeDelta::FromMilliseconds(10); 334 base::TimeDelta delta_tiles_received = base::TimeDelta::FromMilliseconds(10);
225 base::TimeDelta delta_tiles_loaded = base::TimeDelta::FromMilliseconds(100); 335 base::TimeDelta delta_tiles_loaded = base::TimeDelta::FromMilliseconds(100);
226 336
227 // Send the ALL_TILES_RECEIVED event. 337 // Send the ALL_TILES_RECEIVED event.
228 logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received); 338 logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received);
229 339
230 // Log a TOP_SITES impression (for the .MostVisited vs .MostLikely split in 340 // Log a TOP_SITES impression (for the .MostVisited vs .MostLikely split in
231 // the time histograms). 341 // the time histograms).
232 logger.LogMostVisitedImpression(0, TileSource::TOP_SITES); 342 logger.LogMostVisitedImpression(0, TileSource::TOP_SITES,
343 TileVisualType::THUMBNAIL);
233 344
234 // Send the ALL_TILES_LOADED event, this should trigger emitting histograms. 345 // Send the ALL_TILES_LOADED event, this should trigger emitting histograms.
235 logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded); 346 logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded);
236 347
237 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"), 348 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"),
238 SizeIs(1)); 349 SizeIs(1));
239 EXPECT_THAT(histogram_tester.GetAllSamples( 350 EXPECT_THAT(histogram_tester.GetAllSamples(
240 "NewTabPage.TilesReceivedTime.MostVisited"), 351 "NewTabPage.TilesReceivedTime.MostVisited"),
241 SizeIs(1)); 352 SizeIs(1));
242 EXPECT_THAT( 353 EXPECT_THAT(
(...skipping 23 matching lines...) Expand all
266 delta_tiles_loaded, 1); 377 delta_tiles_loaded, 1);
267 378
268 // After navigating away from the NTP and back, we record again. 379 // After navigating away from the NTP and back, we record again.
269 logger.NavigatedFromURLToURL(GURL("chrome://newtab/"), 380 logger.NavigatedFromURLToURL(GURL("chrome://newtab/"),
270 GURL("http://chromium.org")); 381 GURL("http://chromium.org"));
271 logger.NavigatedFromURLToURL(GURL("http://chromium.org"), 382 logger.NavigatedFromURLToURL(GURL("http://chromium.org"),
272 GURL("chrome://newtab/")); 383 GURL("chrome://newtab/"));
273 384
274 // This time, log a SUGGESTIONS_SERVICE impression, so the times will end up 385 // This time, log a SUGGESTIONS_SERVICE impression, so the times will end up
275 // in .MostLikely. 386 // in .MostLikely.
276 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE); 387 logger.LogMostVisitedImpression(0, TileSource::SUGGESTIONS_SERVICE,
388 TileVisualType::THUMBNAIL);
277 389
278 base::TimeDelta delta_tiles_received2 = base::TimeDelta::FromMilliseconds(50); 390 base::TimeDelta delta_tiles_received2 = base::TimeDelta::FromMilliseconds(50);
279 base::TimeDelta delta_tiles_loaded2 = base::TimeDelta::FromMilliseconds(500); 391 base::TimeDelta delta_tiles_loaded2 = base::TimeDelta::FromMilliseconds(500);
280 logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received2); 392 logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received2);
281 logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded2); 393 logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded2);
282 394
283 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"), 395 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"),
284 SizeIs(2)); 396 SizeIs(2));
285 EXPECT_THAT(histogram_tester.GetAllSamples( 397 EXPECT_THAT(histogram_tester.GetAllSamples(
286 "NewTabPage.TilesReceivedTime.MostVisited"), 398 "NewTabPage.TilesReceivedTime.MostVisited"),
287 SizeIs(1)); 399 SizeIs(1));
288 EXPECT_THAT( 400 EXPECT_THAT(
289 histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime.MostLikely"), 401 histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime.MostLikely"),
290 SizeIs(1)); 402 SizeIs(1));
291 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime"), SizeIs(2)); 403 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime"), SizeIs(2));
292 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostVisited"), 404 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostVisited"),
293 SizeIs(1)); 405 SizeIs(1));
294 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostLikely"), 406 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostLikely"),
295 SizeIs(1)); 407 SizeIs(1));
296 408
297 histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime", 409 histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime",
298 delta_tiles_received2, 1); 410 delta_tiles_received2, 1);
299 histogram_tester.ExpectTimeBucketCount( 411 histogram_tester.ExpectTimeBucketCount(
300 "NewTabPage.TilesReceivedTime.MostLikely", delta_tiles_received2, 1); 412 "NewTabPage.TilesReceivedTime.MostLikely", delta_tiles_received2, 1);
301 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime", 413 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime",
302 delta_tiles_loaded2, 1); 414 delta_tiles_loaded2, 1);
303 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime.MostLikely", 415 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime.MostLikely",
304 delta_tiles_loaded2, 1); 416 delta_tiles_loaded2, 1);
305 } 417 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698