| OLD | NEW |
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "components/ntp_tiles/metrics.h" |
| 6 |
| 7 #include <stddef.h> |
| 8 |
| 9 #include <string> |
| 10 #include <vector> |
| 11 |
| 12 #include "base/macros.h" |
| 13 #include "base/test/histogram_tester.h" |
| 14 #include "components/rappor/test_rappor_service.h" |
| 15 #include "testing/gmock/include/gmock/gmock.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" |
| 17 |
| 18 namespace ntp_tiles { |
| 19 namespace metrics { |
| 20 namespace { |
| 21 |
| 22 using testing::ElementsAre; |
| 23 using testing::IsEmpty; |
| 24 |
| 25 TEST(RecordPageImpressionTest, ShouldRecordUmaForIcons) { |
| 26 base::HistogramTester histogram_tester; |
| 27 RecordPageImpression( |
| 28 {{NTPTileSource::TOP_SITES, ICON_REAL, GURL()}, |
| 29 {NTPTileSource::TOP_SITES, ICON_REAL, GURL()}, |
| 30 {NTPTileSource::TOP_SITES, ICON_REAL, GURL()}, |
| 31 {NTPTileSource::TOP_SITES, ICON_COLOR, GURL()}, |
| 32 {NTPTileSource::TOP_SITES, ICON_COLOR, GURL()}, |
| 33 {NTPTileSource::SUGGESTIONS_SERVICE, ICON_REAL, GURL()}, |
| 34 {NTPTileSource::SUGGESTIONS_SERVICE, ICON_DEFAULT, GURL()}, |
| 35 {NTPTileSource::POPULAR, ICON_COLOR, GURL()}}, |
| 36 /*rappor_service=*/nullptr); |
| 37 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.NumberOfTiles"), |
| 38 ElementsAre(base::Bucket(/*min=*/8, /*count=*/1))); |
| 39 EXPECT_THAT( |
| 40 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"), |
| 41 ElementsAre(base::Bucket(/*min=*/0, /*count=*/1), |
| 42 base::Bucket(/*min=*/1, /*count=*/1), |
| 43 base::Bucket(/*min=*/2, /*count=*/1), |
| 44 base::Bucket(/*min=*/3, /*count=*/1), |
| 45 base::Bucket(/*min=*/4, /*count=*/1), |
| 46 base::Bucket(/*min=*/5, /*count=*/1), |
| 47 base::Bucket(/*min=*/6, /*count=*/1), |
| 48 base::Bucket(/*min=*/7, /*count=*/1))); |
| 49 EXPECT_THAT( |
| 50 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"), |
| 51 ElementsAre(base::Bucket(/*min=*/5, /*count=*/1), |
| 52 base::Bucket(/*min=*/6, /*count=*/1))); |
| 53 EXPECT_THAT( |
| 54 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"), |
| 55 ElementsAre(base::Bucket(/*min=*/0, /*count=*/1), |
| 56 base::Bucket(/*min=*/1, /*count=*/1), |
| 57 base::Bucket(/*min=*/2, /*count=*/1), |
| 58 base::Bucket(/*min=*/3, /*count=*/1), |
| 59 base::Bucket(/*min=*/4, /*count=*/1))); |
| 60 EXPECT_THAT(histogram_tester.GetAllSamples( |
| 61 "NewTabPage.SuggestionsImpression.popular"), |
| 62 ElementsAre(base::Bucket(/*min=*/7, /*count=*/1))); |
| 63 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType"), |
| 64 ElementsAre(base::Bucket(/*min=*/ICON_REAL, /*count=*/4), |
| 65 base::Bucket(/*min=*/ICON_COLOR, /*count=*/3), |
| 66 base::Bucket(/*min=*/ICON_DEFAULT, /*count=*/1))); |
| 67 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.server"), |
| 68 ElementsAre(base::Bucket(/*min=*/ICON_REAL, /*count=*/1), |
| 69 base::Bucket(/*min=*/ICON_DEFAULT, /*count=*/1))); |
| 70 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.client"), |
| 71 ElementsAre(base::Bucket(/*min=*/ICON_REAL, /*count=*/3), |
| 72 base::Bucket(/*min=*/ICON_COLOR, /*count=*/2))); |
| 73 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.popular"), |
| 74 ElementsAre(base::Bucket(/*min=*/ICON_COLOR, /*count=*/1))); |
| 75 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.IconsReal"), |
| 76 ElementsAre(base::Bucket(/*min=*/4, /*count=*/1))); |
| 77 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.IconsColor"), |
| 78 ElementsAre(base::Bucket(/*min=*/3, /*count=*/1))); |
| 79 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.IconsGray"), |
| 80 ElementsAre(base::Bucket(/*min=*/1, /*count=*/1))); |
| 81 } |
| 82 |
| 83 TEST(RecordPageImpressionTest, ShouldRecordUmaForThumbnails) { |
| 84 base::HistogramTester histogram_tester; |
| 85 RecordPageImpression({{NTPTileSource::TOP_SITES, THUMBNAIL, GURL()}, |
| 86 {NTPTileSource::SUGGESTIONS_SERVICE, THUMBNAIL, GURL()}, |
| 87 {NTPTileSource::POPULAR, THUMBNAIL, GURL()}}, |
| 88 /*rappor_service=*/nullptr); |
| 89 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.NumberOfTiles"), |
| 90 ElementsAre(base::Bucket(/*min=*/3, /*count=*/1))); |
| 91 EXPECT_THAT( |
| 92 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression"), |
| 93 ElementsAre(base::Bucket(/*min=*/0, /*count=*/1), |
| 94 base::Bucket(/*min=*/1, /*count=*/1), |
| 95 base::Bucket(/*min=*/2, /*count=*/1))); |
| 96 EXPECT_THAT( |
| 97 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.server"), |
| 98 ElementsAre(base::Bucket(/*min=*/1, /*count=*/1))); |
| 99 EXPECT_THAT( |
| 100 histogram_tester.GetAllSamples("NewTabPage.SuggestionsImpression.client"), |
| 101 ElementsAre(base::Bucket(/*min=*/0, /*count=*/1))); |
| 102 EXPECT_THAT(histogram_tester.GetAllSamples( |
| 103 "NewTabPage.SuggestionsImpression.popular"), |
| 104 ElementsAre(base::Bucket(/*min=*/2, /*count=*/1))); |
| 105 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType"), IsEmpty()); |
| 106 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.server"), |
| 107 IsEmpty()); |
| 108 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.client"), |
| 109 IsEmpty()); |
| 110 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.TileType.popular"), |
| 111 IsEmpty()); |
| 112 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.IconsReal"), |
| 113 IsEmpty()); |
| 114 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.IconsColor"), |
| 115 IsEmpty()); |
| 116 EXPECT_THAT(histogram_tester.GetAllSamples("NewTabPage.IconsGray"), |
| 117 IsEmpty()); |
| 118 } |
| 119 |
| 120 TEST(RecordPageImpressionTest, ShouldRecordRappor) { |
| 121 rappor::TestRapporServiceImpl rappor_service; |
| 122 |
| 123 RecordPageImpression( |
| 124 {{NTPTileSource::TOP_SITES, ICON_REAL, GURL("http://www.site1.com/")}, |
| 125 {NTPTileSource::TOP_SITES, ICON_COLOR, GURL("http://www.site2.com/")}, |
| 126 {NTPTileSource::TOP_SITES, ICON_DEFAULT, GURL("http://www.site3.com/")}, |
| 127 {NTPTileSource::TOP_SITES, THUMBNAIL, GURL("http://www.site4.com/")}}, |
| 128 &rappor_service); |
| 129 |
| 130 // Thumbnail shouldn't get reported. |
| 131 EXPECT_EQ(3, rappor_service.GetReportsCount()); |
| 132 |
| 133 { |
| 134 std::string sample; |
| 135 rappor::RapporType type; |
| 136 EXPECT_TRUE(rappor_service.GetRecordedSampleForMetric( |
| 137 "NTP.SuggestionsImpressions.IconsReal", &sample, &type)); |
| 138 EXPECT_EQ("site1.com", sample); |
| 139 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 140 } |
| 141 |
| 142 { |
| 143 std::string sample; |
| 144 rappor::RapporType type; |
| 145 EXPECT_TRUE(rappor_service.GetRecordedSampleForMetric( |
| 146 "NTP.SuggestionsImpressions.IconsColor", &sample, &type)); |
| 147 EXPECT_EQ("site2.com", sample); |
| 148 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 149 } |
| 150 |
| 151 { |
| 152 std::string sample; |
| 153 rappor::RapporType type; |
| 154 EXPECT_TRUE(rappor_service.GetRecordedSampleForMetric( |
| 155 "NTP.SuggestionsImpressions.IconsGray", &sample, &type)); |
| 156 EXPECT_EQ("site3.com", sample); |
| 157 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 158 } |
| 159 } |
| 160 |
| 161 } // namespace |
| 162 } // namespace metrics |
| 163 } // namespace ntp_tiles |
| OLD | NEW |