Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/ntp_tiles/most_visited_sites.h" | 5 #include "components/ntp_tiles/most_visited_sites.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <ostream> | 10 #include <ostream> |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 206 }; | 206 }; |
| 207 | 207 |
| 208 class MockMostVisitedSitesObserver : public MostVisitedSites::Observer { | 208 class MockMostVisitedSitesObserver : public MostVisitedSites::Observer { |
| 209 public: | 209 public: |
| 210 MOCK_METHOD1(OnMostVisitedURLsAvailable, void(const NTPTilesVector& tiles)); | 210 MOCK_METHOD1(OnMostVisitedURLsAvailable, void(const NTPTilesVector& tiles)); |
| 211 MOCK_METHOD1(OnIconMadeAvailable, void(const GURL& site_url)); | 211 MOCK_METHOD1(OnIconMadeAvailable, void(const GURL& site_url)); |
| 212 }; | 212 }; |
| 213 | 213 |
| 214 class FakeHomePageClient : public MostVisitedSites::HomePageClient { | 214 class FakeHomePageClient : public MostVisitedSites::HomePageClient { |
| 215 public: | 215 public: |
| 216 FakeHomePageClient() : home_page_enabled_(false), ntp_is_homepage_(false) {} | 216 FakeHomePageClient() |
| 217 : home_page_enabled_(false), | |
| 218 ntp_is_homepage_(false), | |
| 219 home_page_url_(kHomePageUrl) {} | |
| 217 ~FakeHomePageClient() override {} | 220 ~FakeHomePageClient() override {} |
| 218 | 221 |
| 219 bool IsHomePageEnabled() const override { return home_page_enabled_; } | 222 bool IsHomePageEnabled() const override { return home_page_enabled_; } |
| 220 | 223 |
| 221 bool IsNewTabPageUsedAsHomePage() const override { return ntp_is_homepage_; } | 224 bool IsNewTabPageUsedAsHomePage() const override { return ntp_is_homepage_; } |
| 222 | 225 |
| 223 GURL GetHomepageUrl() const override { return GURL(kHomePageUrl); } | 226 GURL GetHomepageUrl() const override { return home_page_url_; } |
| 224 | 227 |
| 225 void SetHomePageEnabled(bool home_page_enabled) { | 228 void SetHomePageEnabled(bool home_page_enabled) { |
| 226 home_page_enabled_ = home_page_enabled; | 229 home_page_enabled_ = home_page_enabled; |
| 227 } | 230 } |
| 228 | 231 |
| 229 void SetNtpIsHomePage(bool ntp_is_homepage) { | 232 void SetNtpIsHomePage(bool ntp_is_homepage) { |
| 230 ntp_is_homepage_ = ntp_is_homepage; | 233 ntp_is_homepage_ = ntp_is_homepage; |
| 231 } | 234 } |
| 232 | 235 |
| 236 void SetHomePageUrl(GURL home_page_url) { home_page_url_ = home_page_url; } | |
| 237 | |
| 233 private: | 238 private: |
| 234 bool home_page_enabled_; | 239 bool home_page_enabled_; |
| 235 bool ntp_is_homepage_; | 240 bool ntp_is_homepage_; |
| 241 GURL home_page_url_; | |
| 236 }; | 242 }; |
| 237 | 243 |
| 238 class MockIconCacher : public IconCacher { | 244 class MockIconCacher : public IconCacher { |
| 239 public: | 245 public: |
| 240 MOCK_METHOD3(StartFetchPopularSites, | 246 MOCK_METHOD3(StartFetchPopularSites, |
| 241 void(PopularSites::Site site, | 247 void(PopularSites::Site site, |
| 242 const base::Closure& icon_available, | 248 const base::Closure& icon_available, |
| 243 const base::Closure& preliminary_icon_available)); | 249 const base::Closure& preliminary_icon_available)); |
| 244 MOCK_METHOD2(StartFetchMostLikely, | 250 MOCK_METHOD2(StartFetchMostLikely, |
| 245 void(const GURL& page_url, const base::Closure& icon_available)); | 251 void(const GURL& page_url, const base::Closure& icon_available)); |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 366 EXPECT_CALL(*icon_cacher, StartFetchPopularSites(_, _, _)) | 372 EXPECT_CALL(*icon_cacher, StartFetchPopularSites(_, _, _)) |
| 367 .Times(AtLeast(0)); | 373 .Times(AtLeast(0)); |
| 368 } | 374 } |
| 369 | 375 |
| 370 auto home_page_client = base::MakeUnique<FakeHomePageClient>(); | 376 auto home_page_client = base::MakeUnique<FakeHomePageClient>(); |
| 371 home_page_client_ = home_page_client.get(); | 377 home_page_client_ = home_page_client.get(); |
| 372 | 378 |
| 373 most_visited_sites_ = base::MakeUnique<MostVisitedSites>( | 379 most_visited_sites_ = base::MakeUnique<MostVisitedSites>( |
| 374 &pref_service_, mock_top_sites_, &mock_suggestions_service_, | 380 &pref_service_, mock_top_sites_, &mock_suggestions_service_, |
| 375 popular_sites_factory_.New(), std::move(icon_cacher), | 381 popular_sites_factory_.New(), std::move(icon_cacher), |
| 376 /*supervisor=*/nullptr, std::move(home_page_client)); | 382 /*supervisor=*/nullptr); |
| 383 | |
| 384 most_visited_sites_->SetHomePageClient(std::move(home_page_client)); | |
|
mastiz
2017/06/01 08:18:44
Can you please add at lest one test where there is
fhorschig
2017/06/01 10:12:56
Added test with feature but without client.
mastiz
2017/06/01 10:59:24
I like it much better now, thanks!
| |
| 377 } | 385 } |
| 378 | 386 |
| 379 bool IsPopularSitesEnabledViaVariations() const { return GetParam(); } | 387 bool IsPopularSitesEnabledViaVariations() const { return GetParam(); } |
| 380 | 388 |
| 381 bool VerifyAndClearExpectations() { | 389 bool VerifyAndClearExpectations() { |
| 382 base::RunLoop().RunUntilIdle(); | 390 base::RunLoop().RunUntilIdle(); |
| 383 const bool success = | 391 const bool success = |
| 384 Mock::VerifyAndClearExpectations(mock_top_sites_.get()) && | 392 Mock::VerifyAndClearExpectations(mock_top_sites_.get()) && |
| 385 Mock::VerifyAndClearExpectations(&mock_suggestions_service_) && | 393 Mock::VerifyAndClearExpectations(&mock_suggestions_service_) && |
| 386 Mock::VerifyAndClearExpectations(&mock_observer_); | 394 Mock::VerifyAndClearExpectations(&mock_observer_); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 556 .Times(AnyNumber()) | 564 .Times(AnyNumber()) |
| 557 .WillRepeatedly(Return(false)); | 565 .WillRepeatedly(Return(false)); |
| 558 EXPECT_CALL(mock_observer_, | 566 EXPECT_CALL(mock_observer_, |
| 559 OnMostVisitedURLsAvailable(Not(Contains( | 567 OnMostVisitedURLsAvailable(Not(Contains( |
| 560 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); | 568 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); |
| 561 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 569 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 562 /*num_sites=*/3); | 570 /*num_sites=*/3); |
| 563 base::RunLoop().RunUntilIdle(); | 571 base::RunLoop().RunUntilIdle(); |
| 564 } | 572 } |
| 565 | 573 |
| 574 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfEmptyUrl) { | |
| 575 const std::string kEmptyHomePageUrl; | |
| 576 base::test::ScopedFeatureList features; | |
| 577 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | |
| 578 home_page_client_->SetHomePageEnabled(true); | |
| 579 home_page_client_->SetHomePageUrl(GURL(kEmptyHomePageUrl)); | |
| 580 DisableRemoteSuggestions(); | |
| 581 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | |
| 582 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); | |
| 583 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | |
| 584 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(kEmptyHomePageUrl))) | |
| 585 .Times(AnyNumber()) | |
| 586 .WillRepeatedly(Return(false)); | |
| 587 EXPECT_CALL(mock_observer_, | |
| 588 OnMostVisitedURLsAvailable(Not( | |
| 589 FirstTileIs("", kEmptyHomePageUrl, TileSource::HOMEPAGE)))); | |
| 590 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | |
| 591 /*num_sites=*/3); | |
| 592 base::RunLoop().RunUntilIdle(); | |
| 593 } | |
| 594 | |
| 566 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfBlacklisted) { | 595 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfBlacklisted) { |
| 567 base::test::ScopedFeatureList features; | 596 base::test::ScopedFeatureList features; |
| 568 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 597 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 569 home_page_client_->SetHomePageEnabled(true); | 598 home_page_client_->SetHomePageEnabled(true); |
| 570 DisableRemoteSuggestions(); | 599 DisableRemoteSuggestions(); |
| 571 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 600 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 572 .WillRepeatedly(InvokeCallbackArgument<0>( | 601 .WillRepeatedly(InvokeCallbackArgument<0>( |
| 573 (MostVisitedURLList{MakeMostVisitedURL("", kHomePageUrl)}))); | 602 (MostVisitedURLList{MakeMostVisitedURL("", kHomePageUrl)}))); |
| 574 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 603 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 575 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 604 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| (...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1169 TileSource::TOP_SITES), | 1198 TileSource::TOP_SITES), |
| 1170 MatchesTile("Site 4", "https://www.site4.com/", | 1199 MatchesTile("Site 4", "https://www.site4.com/", |
| 1171 TileSource::TOP_SITES), | 1200 TileSource::TOP_SITES), |
| 1172 MatchesTile("Site 1", "https://www.site1.com/", TileSource::POPULAR), | 1201 MatchesTile("Site 1", "https://www.site1.com/", TileSource::POPULAR), |
| 1173 MatchesTile("Site 2", "https://www.site2.com/", | 1202 MatchesTile("Site 2", "https://www.site2.com/", |
| 1174 TileSource::POPULAR))); | 1203 TileSource::POPULAR))); |
| 1175 } | 1204 } |
| 1176 | 1205 |
| 1177 } // namespace | 1206 } // namespace |
| 1178 } // namespace ntp_tiles | 1207 } // namespace ntp_tiles |
| OLD | NEW |