Index: components/ntp_tiles/most_visited_sites_unittest.cc |
diff --git a/components/ntp_tiles/most_visited_sites_unittest.cc b/components/ntp_tiles/most_visited_sites_unittest.cc |
index 4bd8bc92ab524bb11b751e84a8e662f3acd5d666..c20ff799ae59ae6e1fcd840e02170272f436105f 100644 |
--- a/components/ntp_tiles/most_visited_sites_unittest.cc |
+++ b/components/ntp_tiles/most_visited_sites_unittest.cc |
@@ -213,14 +213,17 @@ class MockMostVisitedSitesObserver : public MostVisitedSites::Observer { |
class FakeHomePageClient : public MostVisitedSites::HomePageClient { |
public: |
- FakeHomePageClient() : home_page_enabled_(false), ntp_is_homepage_(false) {} |
+ FakeHomePageClient() |
+ : home_page_enabled_(false), |
+ ntp_is_homepage_(false), |
+ home_page_url_(kHomePageUrl) {} |
~FakeHomePageClient() override {} |
bool IsHomePageEnabled() const override { return home_page_enabled_; } |
bool IsNewTabPageUsedAsHomePage() const override { return ntp_is_homepage_; } |
- GURL GetHomepageUrl() const override { return GURL(kHomePageUrl); } |
+ GURL GetHomepageUrl() const override { return home_page_url_; } |
void SetHomePageEnabled(bool home_page_enabled) { |
home_page_enabled_ = home_page_enabled; |
@@ -230,9 +233,12 @@ class FakeHomePageClient : public MostVisitedSites::HomePageClient { |
ntp_is_homepage_ = ntp_is_homepage; |
} |
+ void SetHomePageUrl(GURL home_page_url) { home_page_url_ = home_page_url; } |
+ |
private: |
bool home_page_enabled_; |
bool ntp_is_homepage_; |
+ GURL home_page_url_; |
}; |
class MockIconCacher : public IconCacher { |
@@ -367,13 +373,10 @@ class MostVisitedSitesTest : public ::testing::TestWithParam<bool> { |
.Times(AtLeast(0)); |
} |
- auto home_page_client = base::MakeUnique<FakeHomePageClient>(); |
- home_page_client_ = home_page_client.get(); |
- |
most_visited_sites_ = base::MakeUnique<MostVisitedSites>( |
&pref_service_, mock_top_sites_, &mock_suggestions_service_, |
popular_sites_factory_.New(), std::move(icon_cacher), |
- /*supervisor=*/nullptr, std::move(home_page_client)); |
+ /*supervisor=*/nullptr); |
} |
bool IsPopularSitesEnabledViaVariations() const { return GetParam(); } |
@@ -392,6 +395,13 @@ class MostVisitedSitesTest : public ::testing::TestWithParam<bool> { |
return success; |
} |
+ FakeHomePageClient* RegisterNewHomePageClient() { |
+ auto home_page_client = base::MakeUnique<FakeHomePageClient>(); |
+ FakeHomePageClient* raw_client_ptr = home_page_client.get(); |
+ most_visited_sites_->SetHomePageClient(std::move(home_page_client)); |
+ return raw_client_ptr; |
+ } |
+ |
void DisableRemoteSuggestions() { |
EXPECT_CALL(mock_suggestions_service_, AddCallback(_)) |
.Times(AnyNumber()) |
@@ -415,7 +425,6 @@ class MostVisitedSitesTest : public ::testing::TestWithParam<bool> { |
scoped_refptr<StrictMock<MockTopSites>> mock_top_sites_; |
StrictMock<MockSuggestionsService> mock_suggestions_service_; |
StrictMock<MockMostVisitedSitesObserver> mock_observer_; |
- FakeHomePageClient* home_page_client_; |
std::unique_ptr<MostVisitedSites> most_visited_sites_; |
base::test::ScopedFeatureList feature_list_; |
MockIconCacher* icon_cacher_; |
@@ -430,7 +439,8 @@ TEST_P(MostVisitedSitesTest, ShouldStartNoCallInConstructor) { |
TEST_P(MostVisitedSitesTest, ShouldIncludeTileForHomePage) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
@@ -445,10 +455,26 @@ TEST_P(MostVisitedSitesTest, ShouldIncludeTileForHomePage) { |
base::RunLoop().RunUntilIdle(); |
} |
+TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageWithoutClient) { |
+ base::test::ScopedFeatureList features; |
+ features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
+ DisableRemoteSuggestions(); |
+ EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
+ .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
+ EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
+ EXPECT_CALL(mock_observer_, |
+ OnMostVisitedURLsAvailable(Not(Contains( |
+ MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); |
+ most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
+ /*num_sites=*/3); |
+ base::RunLoop().RunUntilIdle(); |
+} |
+ |
TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfFeatureDisabled) { |
base::test::ScopedFeatureList features; |
features.InitAndDisableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
@@ -467,7 +493,8 @@ TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfFeatureDisabled) { |
TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfNoTileRequested) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
@@ -484,7 +511,8 @@ TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfNoTileRequested) { |
TEST_P(MostVisitedSitesTest, ShouldReturnOnlyHomePageIfOneTileRequested) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>( |
@@ -504,7 +532,8 @@ TEST_P(MostVisitedSitesTest, ShouldReturnOnlyHomePageIfOneTileRequested) { |
TEST_P(MostVisitedSitesTest, ShouldDeduplicateHomePageWithTopSites) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>( |
@@ -527,8 +556,9 @@ TEST_P(MostVisitedSitesTest, ShouldDeduplicateHomePageWithTopSites) { |
TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfItIsNewTabPage) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
- home_page_client_->SetNtpIsHomePage(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
+ home_page_client->SetNtpIsHomePage(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
@@ -547,7 +577,8 @@ TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfItIsNewTabPage) { |
TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfThereIsNone) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(false); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(false); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
@@ -563,10 +594,33 @@ TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfThereIsNone) { |
base::RunLoop().RunUntilIdle(); |
} |
+TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfEmptyUrl) { |
+ const std::string kEmptyHomePageUrl; |
+ base::test::ScopedFeatureList features; |
+ features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
+ home_page_client->SetHomePageUrl(GURL(kEmptyHomePageUrl)); |
+ DisableRemoteSuggestions(); |
+ EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
+ .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
+ EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
+ EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(kEmptyHomePageUrl))) |
+ .Times(AnyNumber()) |
+ .WillRepeatedly(Return(false)); |
+ EXPECT_CALL(mock_observer_, |
+ OnMostVisitedURLsAvailable(Not( |
+ FirstTileIs("", kEmptyHomePageUrl, TileSource::HOMEPAGE)))); |
+ most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
+ /*num_sites=*/3); |
+ base::RunLoop().RunUntilIdle(); |
+} |
+ |
TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfBlacklisted) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
.WillRepeatedly(InvokeCallbackArgument<0>( |
@@ -591,7 +645,8 @@ TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfBlacklisted) { |
TEST_P(MostVisitedSitesTest, ShouldPinHomePageAgainIfBlacklistingUndone) { |
base::test::ScopedFeatureList features; |
features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
- home_page_client_->SetHomePageEnabled(true); |
+ FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
+ home_page_client->SetHomePageEnabled(true); |
DisableRemoteSuggestions(); |
EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |