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

Side by Side 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 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 "testing/gmock/include/gmock/gmock.h" 8 #include "base/metrics/histogram.h"
9 #include "base/metrics/statistics_recorder.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 11
11 namespace { 12 namespace {
12 13
13 class MockNTPUserDataLogger : public NTPUserDataLogger { 14 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.
14 public: 15 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram(
15 MockNTPUserDataLogger() : NTPUserDataLogger(NULL) {} 16 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.
16 virtual ~MockNTPUserDataLogger() {} 17 return histogram->SnapshotSamples()->TotalCount();
18 }
17 19
18 MOCK_CONST_METHOD2(GetPercentError, size_t(size_t errors, size_t events)); 20 base::HistogramBase::Count getBinCount(const std::string& histogramName,
19 21 base::HistogramBase::Sample value) {
20 private: 22 base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram(
21 DISALLOW_COPY_AND_ASSIGN(MockNTPUserDataLogger); 23 histogramName);
22 }; 24 return histogram->SnapshotSamples()->GetCount(value);
25 }
23 26
24 } // namespace 27 } // namespace
25 28
26 TEST(NTPUserDataLoggerTest, ThumbnailErrorRateDoesNotDivideByZero) { 29 TEST(NTPUserDataLoggerTest, TestLogging) {
27 MockNTPUserDataLogger logger; 30 base::StatisticsRecorder::Initialize();
28 EXPECT_CALL(logger, GetPercentError(testing::_, testing::_)).Times(0); 31 NTPUserDataLogger logger(NULL);
29 logger.EmitThumbnailErrorRate(); 32
33 // Ensure it works when the statistics are all empty. Only the mouseover
34 // should be logged in this case. The other histograms are not created yet so
35 // we can't query them.
36 logger.EmitNtpStatistics();
37
38 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfMouseOvers"));
39 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 0));
40
41 // Ensure it works with some non-zero statistics. All statistics should now
42 // be logged.
43 for (int i=0; i<20; ++i)
44 logger.LogEvent(NTP_MOUSEOVER);
45 for (int i=0; i<8; ++i)
46 logger.LogEvent(NTP_TILE);
47 for (int i=0; i<4; ++i)
48 logger.LogEvent(NTP_THUMBNAIL_ATTEMPT);
49 for (int i=0; i<2; ++i)
50 logger.LogEvent(NTP_THUMBNAIL_ERROR);
51 logger.LogEvent(NTP_GRAY_TILE_FALLBACK);
52 logger.LogEvent(NTP_EXTERNAL_FALLBACK);
53 for (int i=0; i<2; ++i)
54 logger.LogEvent(NTP_EXTERNAL_TILE);
55 for (int i=0; i<2; ++i)
56 logger.LogEvent(NTP_GRAY_TILE);
57 logger.LogEvent(NTP_SERVER_SIDE_SUGGESTION);
58 logger.EmitNtpStatistics();
59
60 EXPECT_EQ(2, getTotalCount("NewTabPage.NumberOfMouseOvers"));
61 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 0));
62 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 20));
63 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfTiles"));
64 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfTiles", 8));
65 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailAttempts"));
66 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfThumbnailAttempts", 4));
67 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailErrors"));
68 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfThumbnailErrors", 2));
69 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTileFallbacks"));
70 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfGrayTileFallbacks", 1));
71 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalFallbacks"));
72 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfExternalFallbacks", 1));
73 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalTiles"));
74 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfExternalTiles", 2));
75 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTiles"));
76 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfGrayTiles", 2));
77 EXPECT_EQ(1, getTotalCount("NewTabPage.SuggestionsType"));
78 EXPECT_EQ(1, getBinCount("NewTabPage.SuggestionsType", 1));
79
80 // Statistics should be reset to 0, so we should not log anything else.
81 logger.EmitNtpStatistics();
82 EXPECT_EQ(3, getTotalCount("NewTabPage.NumberOfMouseOvers"));
83 EXPECT_EQ(2, getBinCount("NewTabPage.NumberOfMouseOvers", 0));
84 EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfMouseOvers", 20));
85 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfTiles"));
86 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailAttempts"));
87 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailErrors"));
88 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTileFallbacks"));
89 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalFallbacks"));
90 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalTiles"));
91 EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTiles"));
92 EXPECT_EQ(1, getTotalCount("NewTabPage.SuggestionsType"));
30 } 93 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698