| 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 |