OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |