diff options
Diffstat (limited to 'chromium/components/ntp_tiles/most_visited_sites_unittest.cc')
-rw-r--r-- | chromium/components/ntp_tiles/most_visited_sites_unittest.cc | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/chromium/components/ntp_tiles/most_visited_sites_unittest.cc b/chromium/components/ntp_tiles/most_visited_sites_unittest.cc index 12ff2fb71e3..fe08f7a1442 100644 --- a/chromium/components/ntp_tiles/most_visited_sites_unittest.cc +++ b/chromium/components/ntp_tiles/most_visited_sites_unittest.cc @@ -29,6 +29,7 @@ #include "components/history/core/browser/top_sites_observer.h" #include "components/ntp_tiles/constants.h" #include "components/ntp_tiles/custom_links_manager.h" +#include "components/ntp_tiles/features.h" #include "components/ntp_tiles/icon_cacher.h" #include "components/ntp_tiles/json_unsafe_parser.h" #include "components/ntp_tiles/popular_sites_impl.h" @@ -91,6 +92,11 @@ std::string PrintTile(const std::string& title, testing::PrintToString(static_cast<int>(source)); } +MATCHER_P3(NotMatchesTile, title, url, source, PrintTile(title, url, source)) { + return arg.title != base::ASCIIToUTF16(title) && arg.url != GURL(url) && + arg.source != source; +} + MATCHER_P3(MatchesTile, title, url, source, PrintTile(title, url, source)) { return arg.title == base::ASCIIToUTF16(title) && arg.url == GURL(url) && arg.source == source; @@ -2111,4 +2117,95 @@ TEST(MostVisitedSitesMergeTest, ShouldMergeTilesFavoringPersonalOverPopular) { TileSource::POPULAR))); } +#if !defined(OS_ANDROID) && !defined(OS_IOS) + +TEST_P(MostVisitedSitesTest, ShouldIncludeTileForSearchPage) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + /*enabled=*/{ntp_tiles::kDefaultSearchShortcut}, /*disabled=*/{}); + DisableRemoteSuggestions(); + EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_)) + .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); + EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); + EXPECT_CALL(*mock_top_sites_, + IsBlacklisted(Eq(GURL("https://www.google.com")))) + .Times(AnyNumber()) + .WillRepeatedly(Return(false)); + EXPECT_CALL(mock_observer_, OnURLsAvailable(FirstPersonalizedTileIs( + "Google", "https://www.google.com/", + TileSource::SEARCH_PAGE))); + most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, + /*num_sites=*/3); + base::RunLoop().RunUntilIdle(); +} + +TEST_P(MostVisitedSitesTest, ShouldHaveSearchPageFirstInListWhenFull) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + /*enabled=*/{ntp_tiles::kDefaultSearchShortcut}, /*disabled=*/{}); + DisableRemoteSuggestions(); + EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_)) + .WillRepeatedly(InvokeCallbackArgument<0>((MostVisitedURLList{ + MakeMostVisitedURL("Site 1", "http://site1/"), + MakeMostVisitedURL("Site 2", "http://site2/"), + MakeMostVisitedURL("Site 3", "http://site3/"), + MakeMostVisitedURL("Site 4", "http://site4/"), + MakeMostVisitedURL("Site 5", "http://site5/"), + }))); + EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); + EXPECT_CALL(*mock_top_sites_, + IsBlacklisted(Eq(GURL("https://www.gooogle.com/")))) + .Times(AnyNumber()) + .WillRepeatedly(Return(false)); + std::map<SectionType, NTPTilesVector> sections; + EXPECT_CALL(mock_observer_, OnURLsAvailable(_)) + .WillOnce(SaveArg<0>(§ions)); + most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, + /*num_sites=*/4); + base::RunLoop().RunUntilIdle(); + ASSERT_THAT(sections, Contains(Key(SectionType::PERSONALIZED))); + NTPTilesVector tiles = sections.at(SectionType::PERSONALIZED); + ASSERT_THAT(tiles.size(), Ge(4ul)); + // Assert that the search page is appended as the first tile. + EXPECT_THAT(tiles[0], MatchesTile("Google", "https://www.google.com", + TileSource::SEARCH_PAGE)); +} + +TEST_P(MostVisitedSitesTest, DedupesSearchPage) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + /*enabled=*/{ntp_tiles::kDefaultSearchShortcut}, /*disabled=*/{}); + DisableRemoteSuggestions(); + EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_)) + .WillRepeatedly(InvokeCallbackArgument<0>((MostVisitedURLList{ + MakeMostVisitedURL("Site 1", "http://site1/"), + MakeMostVisitedURL("Google", "https://www.google.com"), + MakeMostVisitedURL("Site 3", "http://site3/"), + MakeMostVisitedURL("Site 4", "http://site4/"), + }))); + EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); + EXPECT_CALL(*mock_top_sites_, + IsBlacklisted(Eq(GURL("https://www.gooogle.com/")))) + .Times(AnyNumber()) + .WillRepeatedly(Return(false)); + std::map<SectionType, NTPTilesVector> sections; + EXPECT_CALL(mock_observer_, OnURLsAvailable(_)) + .WillOnce(SaveArg<0>(§ions)); + most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, + /*num_sites=*/4); + base::RunLoop().RunUntilIdle(); + ASSERT_THAT(sections, Contains(Key(SectionType::PERSONALIZED))); + NTPTilesVector tiles = sections.at(SectionType::PERSONALIZED); + ASSERT_THAT(tiles.size(), Ge(4ul)); + // Assert that the search page is appended as the first tile. + EXPECT_THAT(tiles[0], MatchesTile("Google", "https://www.google.com/", + TileSource::SEARCH_PAGE)); + for (auto i = 1u; i < tiles.size(); ++i) { + EXPECT_THAT(tiles[i], NotMatchesTile("Google", "https://www.google.com/", + TileSource::SEARCH_PAGE)); + } +} + +#endif + } // namespace ntp_tiles |