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

Side by Side 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: review 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 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::NTPTileSource; 19 using ntp_tiles::NTPTileSource;
20 using testing::ElementsAre; 20 using testing::ElementsAre;
21 using testing::IsEmpty; 21 using testing::IsEmpty;
22 using testing::SizeIs;
22 23
23 namespace { 24 namespace {
24 25
25 using Sample = base::HistogramBase::Sample; 26 using Sample = base::HistogramBase::Sample;
26 using Samples = std::vector<Sample>; 27 using Samples = std::vector<Sample>;
27 28
28 class TestNTPUserDataLogger : public NTPUserDataLogger { 29 class TestNTPUserDataLogger : public NTPUserDataLogger {
29 public: 30 public:
30 TestNTPUserDataLogger() : NTPUserDataLogger(nullptr) {} 31 TestNTPUserDataLogger() : NTPUserDataLogger(nullptr) {}
31 ~TestNTPUserDataLogger() override {} 32 ~TestNTPUserDataLogger() override {}
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 EXPECT_THAT( 205 EXPECT_THAT(
205 histogram_tester.GetAllSamples("NewTabPage.MostVisited"), 206 histogram_tester.GetAllSamples("NewTabPage.MostVisited"),
206 ElementsAre(Bucket(0, 2), Bucket(1, 2), Bucket(2, 2), Bucket(3, 2))); 207 ElementsAre(Bucket(0, 2), Bucket(1, 2), Bucket(2, 2), Bucket(3, 2)));
207 EXPECT_THAT( 208 EXPECT_THAT(
208 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"), 209 histogram_tester.GetAllSamples("NewTabPage.MostVisited.server"),
209 ElementsAre(Bucket(0, 2), Bucket(1, 1), Bucket(2, 1))); 210 ElementsAre(Bucket(0, 2), Bucket(1, 1), Bucket(2, 1)));
210 EXPECT_THAT( 211 EXPECT_THAT(
211 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"), 212 histogram_tester.GetAllSamples("NewTabPage.MostVisited.client"),
212 ElementsAre(Bucket(1, 1), Bucket(2, 1), Bucket(3, 2))); 213 ElementsAre(Bucket(1, 1), Bucket(2, 1), Bucket(3, 2)));
213 } 214 }
215
216 TEST(NTPUserDataLoggerTest, TestLoadTime) {
217 base::StatisticsRecorder::Initialize();
218
219 base::HistogramTester histogram_tester;
220
221 TestNTPUserDataLogger logger;
222 logger.ntp_url_ = GURL("chrome://newtab/");
223
224 base::TimeDelta delta_tiles_received = base::TimeDelta::FromMilliseconds(10);
225 base::TimeDelta delta_tiles_loaded = base::TimeDelta::FromMilliseconds(100);
226
227 // Send the ALL_TILES_RECEIVED event.
228 logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received);
229
230 // Log a TOP_SITES impression (for the .MostVisited vs .MostLikely split in
231 // the time histograms).
232 logger.LogMostVisitedImpression(0, NTPTileSource::TOP_SITES);
233
234 // Send the ALL_TILES_LOADED event, this should trigger emitting histograms.
235 logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded);
236
237 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"),
238 SizeIs(1));
239 EXPECT_THAT(histogram_tester.GetAllSamples(
240 "NewTabPage.TilesReceivedTime.MostVisited"),
241 SizeIs(1));
242 EXPECT_THAT(
243 histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime.MostLikely"),
244 IsEmpty());
245 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime"), SizeIs(1));
246 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostVisited"),
247 SizeIs(1));
248 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostLikely"),
249 IsEmpty());
250
251 histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime",
252 delta_tiles_received, 1);
253 histogram_tester.ExpectTimeBucketCount(
254 "NewTabPage.TilesReceivedTime.MostVisited", delta_tiles_received, 1);
255 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime",
256 delta_tiles_loaded, 1);
257 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime.MostVisited",
258 delta_tiles_loaded, 1);
259
260 // We should not log again for the same NTP.
261 logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received);
262 logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded);
263 histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime",
264 delta_tiles_received, 1);
265 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime",
266 delta_tiles_loaded, 1);
267
268 // After navigating away from the NTP and back, we record again.
269 logger.NavigatedFromURLToURL(GURL("chrome://newtab/"),
270 GURL("http://chromium.org"));
271 logger.NavigatedFromURLToURL(GURL("http://chromium.org"),
272 GURL("chrome://newtab/"));
273
274 // This time, log a SUGGESTIONS_SERVICE impression, so the times will end up
275 // in .MostLikely.
276 logger.LogMostVisitedImpression(0, NTPTileSource::SUGGESTIONS_SERVICE);
277
278 base::TimeDelta delta_tiles_received2 = base::TimeDelta::FromMilliseconds(50);
279 base::TimeDelta delta_tiles_loaded2 = base::TimeDelta::FromMilliseconds(500);
280 logger.LogEvent(NTP_ALL_TILES_RECEIVED, delta_tiles_received2);
281 logger.LogEvent(NTP_ALL_TILES_LOADED, delta_tiles_loaded2);
282
283 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime"),
284 SizeIs(2));
285 EXPECT_THAT(histogram_tester.GetAllSamples(
286 "NewTabPage.TilesReceivedTime.MostVisited"),
287 SizeIs(1));
288 EXPECT_THAT(
289 histogram_tester.GetAllSamples("NewTabPage.TilesReceivedTime.MostLikely"),
290 SizeIs(1));
291 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime"), SizeIs(2));
292 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostVisited"),
293 SizeIs(1));
294 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.LoadTime.MostLikely"),
295 SizeIs(1));
296
297 histogram_tester.ExpectTimeBucketCount("NewTabPage.TilesReceivedTime",
298 delta_tiles_received2, 1);
299 histogram_tester.ExpectTimeBucketCount(
300 "NewTabPage.TilesReceivedTime.MostLikely", delta_tiles_received2, 1);
301 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime",
302 delta_tiles_loaded2, 1);
303 histogram_tester.ExpectTimeBucketCount("NewTabPage.LoadTime.MostLikely",
304 delta_tiles_loaded2, 1);
305 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/ntp/ntp_user_data_logger.cc ('k') | chrome/common/search/ntp_logging_events.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698