123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- // Copyright 2017 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/ntp_snippets/content_suggestions_metrics.h"
- #include "base/test/metrics/histogram_tester.h"
- #include "base/time/time.h"
- #include "components/ntp_snippets/category.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace ntp_snippets {
- namespace metrics {
- namespace {
- using testing::ElementsAre;
- using testing::IsEmpty;
- TEST(ContentSuggestionsMetricsTest, ShouldLogOnSuggestionsShown) {
- base::HistogramTester histogram_tester;
- OnSuggestionShown(/*global_position=*/1,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*position_in_category=*/3, base::Time::Now(),
- /*score=*/0.01f, base::Time::Now() - base::Hours(2));
- // Test corner cases for score.
- OnSuggestionShown(/*global_position=*/1,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*position_in_category=*/3, base::Time::Now(),
- /*score=*/0.0f, base::Time::Now() - base::Hours(2));
- OnSuggestionShown(/*global_position=*/1,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*position_in_category=*/3, base::Time::Now(),
- /*score=*/1.0f, base::Time::Now() - base::Hours(2));
- OnSuggestionShown(/*global_position=*/1,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*position_in_category=*/3, base::Time::Now(),
- /*score=*/8.0f, base::Time::Now() - base::Hours(2));
- EXPECT_THAT(
- histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.ShownScoreNormalized.Articles"),
- ElementsAre(base::Bucket(/*min=*/0, /*count=*/1),
- base::Bucket(/*min=*/1, /*count=*/1),
- base::Bucket(/*min=*/10, /*count=*/1),
- base::Bucket(/*min=*/11, /*count=*/1)));
- }
- TEST(ContentSuggestionsMetricsTest,
- ShouldNotLogNotShownCategoriesWhenPageShown) {
- base::HistogramTester histogram_tester;
- OnPageShown(std::vector<Category>(
- {Category::FromKnownCategory(KnownCategories::ARTICLES)}),
- /*suggestions_per_category=*/{0},
- /*is_category_visible=*/{false});
- EXPECT_THAT(
- histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible.Articles"),
- IsEmpty());
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible"),
- ElementsAre(base::Bucket(/*min=*/0, /*count=*/1)));
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.SectionCountOnNtpOpened"),
- ElementsAre(base::Bucket(/*min=*/0, /*count=*/1)));
- }
- TEST(ContentSuggestionsMetricsTest,
- ShouldLogEmptyShownCategoriesWhenPageShown) {
- base::HistogramTester histogram_tester;
- OnPageShown(std::vector<Category>(
- {Category::FromKnownCategory(KnownCategories::ARTICLES)}),
- /*suggestions_per_category=*/{0},
- /*is_category_visible=*/{true});
- EXPECT_THAT(
- histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible.Articles"),
- ElementsAre(base::Bucket(/*min=*/0, /*count=*/1)));
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible"),
- ElementsAre(base::Bucket(/*min=*/0, /*count=*/1)));
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.SectionCountOnNtpOpened"),
- ElementsAre(base::Bucket(/*min=*/1, /*count=*/1)));
- }
- TEST(ContentSuggestionsMetricsTest,
- ShouldLogNonEmptyShownCategoryWhenPageShown) {
- base::HistogramTester histogram_tester;
- OnPageShown(std::vector<Category>(
- {Category::FromKnownCategory(KnownCategories::ARTICLES)}),
- /*suggestions_per_category=*/{10},
- /*is_category_visible=*/{true});
- EXPECT_THAT(
- histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible.Articles"),
- ElementsAre(base::Bucket(/*min=*/10, /*count=*/1)));
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible"),
- ElementsAre(base::Bucket(/*min=*/10, /*count=*/1)));
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.SectionCountOnNtpOpened"),
- ElementsAre(base::Bucket(/*min=*/1, /*count=*/1)));
- }
- TEST(ContentSuggestionsMetricsTest,
- ShouldLogMultipleNonEmptyShownCategoriesWhenPageShown) {
- base::HistogramTester histogram_tester;
- OnPageShown(std::vector<Category>(
- {Category::FromKnownCategory(KnownCategories::ARTICLES),
- Category::FromKnownCategory(KnownCategories::READING_LIST)}),
- /*suggestions_per_category=*/{10, 5},
- /*is_category_visible=*/{true, true});
- EXPECT_THAT(
- histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible.Articles"),
- ElementsAre(base::Bucket(/*min=*/10, /*count=*/1)));
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible"),
- ElementsAre(base::Bucket(/*min=*/15, /*count=*/1)));
- EXPECT_THAT(histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.SectionCountOnNtpOpened"),
- ElementsAre(base::Bucket(/*min=*/2, /*count=*/1)));
- }
- TEST(ContentSuggestionsMetricsTest, ShouldLogPrefetchedSuggestionsWhenOpened) {
- base::HistogramTester histogram_tester;
- OnSuggestionOpened(/*global_position=*/11,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*category_index=*/2,
- /*position_in_category=*/1, base::Time::Now(),
- /*score=*/1.0f, WindowOpenDisposition::NEW_BACKGROUND_TAB,
- /*is_prefetched=*/false, /*is_offline=*/false);
- OnSuggestionOpened(/*global_position=*/13,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*category_index=*/2,
- /*position_in_category=*/3, base::Time::Now(),
- /*score=*/1.0f, WindowOpenDisposition::NEW_BACKGROUND_TAB,
- /*is_prefetched=*/true, /*is_offline=*/false);
- OnSuggestionOpened(/*global_position=*/15,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*category_index=*/2,
- /*position_in_category=*/5, base::Time::Now(),
- /*score=*/1.0f, WindowOpenDisposition::NEW_BACKGROUND_TAB,
- /*is_prefetched=*/false, /*is_offline=*/true);
- OnSuggestionOpened(/*global_position=*/23,
- Category::FromKnownCategory(KnownCategories::ARTICLES),
- /*category_index=*/2,
- /*position_in_category=*/13, base::Time::Now(),
- /*score=*/1.0f, WindowOpenDisposition::NEW_BACKGROUND_TAB,
- /*is_prefetched=*/true, /*is_offline=*/true);
- // Only the last call should be reported, because only there the user is
- // offline and the suggestion was prefetched at the same time.
- EXPECT_THAT(
- histogram_tester.GetAllSamples(
- "NewTabPage.ContentSuggestions.Opened.Articles.Prefetched.Offline"),
- ElementsAre(base::Bucket(/*min=*/13, /*count=*/1)));
- }
- } // namespace
- } // namespace metrics
- } // namespace ntp_snippets
|