| 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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 | 366 |
| 361 // With PopularSites enabled, blacklist is exercised. | 367 // With PopularSites enabled, blacklist is exercised. |
| 362 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(_)) | 368 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(_)) |
| 363 .WillRepeatedly(Return(false)); | 369 .WillRepeatedly(Return(false)); |
| 364 // Mock icon cacher never replies, and we also don't verify whether the | 370 // Mock icon cacher never replies, and we also don't verify whether the |
| 365 // code uses it correctly. | 371 // code uses it correctly. |
| 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>(); | |
| 371 home_page_client_ = home_page_client.get(); | |
| 372 | |
| 373 most_visited_sites_ = base::MakeUnique<MostVisitedSites>( | 376 most_visited_sites_ = base::MakeUnique<MostVisitedSites>( |
| 374 &pref_service_, mock_top_sites_, &mock_suggestions_service_, | 377 &pref_service_, mock_top_sites_, &mock_suggestions_service_, |
| 375 popular_sites_factory_.New(), std::move(icon_cacher), | 378 popular_sites_factory_.New(), std::move(icon_cacher), |
| 376 /*supervisor=*/nullptr, std::move(home_page_client)); | 379 /*supervisor=*/nullptr); |
| 377 } | 380 } |
| 378 | 381 |
| 379 bool IsPopularSitesEnabledViaVariations() const { return GetParam(); } | 382 bool IsPopularSitesEnabledViaVariations() const { return GetParam(); } |
| 380 | 383 |
| 381 bool VerifyAndClearExpectations() { | 384 bool VerifyAndClearExpectations() { |
| 382 base::RunLoop().RunUntilIdle(); | 385 base::RunLoop().RunUntilIdle(); |
| 383 const bool success = | 386 const bool success = |
| 384 Mock::VerifyAndClearExpectations(mock_top_sites_.get()) && | 387 Mock::VerifyAndClearExpectations(mock_top_sites_.get()) && |
| 385 Mock::VerifyAndClearExpectations(&mock_suggestions_service_) && | 388 Mock::VerifyAndClearExpectations(&mock_suggestions_service_) && |
| 386 Mock::VerifyAndClearExpectations(&mock_observer_); | 389 Mock::VerifyAndClearExpectations(&mock_observer_); |
| 387 // For convenience, restore the expectations for IsBlacklisted(). | 390 // For convenience, restore the expectations for IsBlacklisted(). |
| 388 if (IsPopularSitesEnabledViaVariations()) { | 391 if (IsPopularSitesEnabledViaVariations()) { |
| 389 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(_)) | 392 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(_)) |
| 390 .WillRepeatedly(Return(false)); | 393 .WillRepeatedly(Return(false)); |
| 391 } | 394 } |
| 392 return success; | 395 return success; |
| 393 } | 396 } |
| 394 | 397 |
| 398 FakeHomePageClient* RegisterNewHomePageClient() { |
| 399 auto home_page_client = base::MakeUnique<FakeHomePageClient>(); |
| 400 FakeHomePageClient* raw_client_ptr = home_page_client.get(); |
| 401 most_visited_sites_->SetHomePageClient(std::move(home_page_client)); |
| 402 return raw_client_ptr; |
| 403 } |
| 404 |
| 395 void DisableRemoteSuggestions() { | 405 void DisableRemoteSuggestions() { |
| 396 EXPECT_CALL(mock_suggestions_service_, AddCallback(_)) | 406 EXPECT_CALL(mock_suggestions_service_, AddCallback(_)) |
| 397 .Times(AnyNumber()) | 407 .Times(AnyNumber()) |
| 398 .WillRepeatedly(Invoke(&suggestions_service_callbacks_, | 408 .WillRepeatedly(Invoke(&suggestions_service_callbacks_, |
| 399 &SuggestionsService::ResponseCallbackList::Add)); | 409 &SuggestionsService::ResponseCallbackList::Add)); |
| 400 EXPECT_CALL(mock_suggestions_service_, GetSuggestionsDataFromCache()) | 410 EXPECT_CALL(mock_suggestions_service_, GetSuggestionsDataFromCache()) |
| 401 .Times(AnyNumber()) | 411 .Times(AnyNumber()) |
| 402 .WillRepeatedly(Return(SuggestionsProfile())); // Empty cache. | 412 .WillRepeatedly(Return(SuggestionsProfile())); // Empty cache. |
| 403 EXPECT_CALL(mock_suggestions_service_, FetchSuggestionsData()) | 413 EXPECT_CALL(mock_suggestions_service_, FetchSuggestionsData()) |
| 404 .Times(AnyNumber()) | 414 .Times(AnyNumber()) |
| 405 .WillRepeatedly(Return(true)); | 415 .WillRepeatedly(Return(true)); |
| 406 } | 416 } |
| 407 | 417 |
| 408 base::CallbackList<SuggestionsService::ResponseCallback::RunType> | 418 base::CallbackList<SuggestionsService::ResponseCallback::RunType> |
| 409 suggestions_service_callbacks_; | 419 suggestions_service_callbacks_; |
| 410 TopSitesCallbackList top_sites_callbacks_; | 420 TopSitesCallbackList top_sites_callbacks_; |
| 411 | 421 |
| 412 base::MessageLoop message_loop_; | 422 base::MessageLoop message_loop_; |
| 413 sync_preferences::TestingPrefServiceSyncable pref_service_; | 423 sync_preferences::TestingPrefServiceSyncable pref_service_; |
| 414 PopularSitesFactoryForTest popular_sites_factory_; | 424 PopularSitesFactoryForTest popular_sites_factory_; |
| 415 scoped_refptr<StrictMock<MockTopSites>> mock_top_sites_; | 425 scoped_refptr<StrictMock<MockTopSites>> mock_top_sites_; |
| 416 StrictMock<MockSuggestionsService> mock_suggestions_service_; | 426 StrictMock<MockSuggestionsService> mock_suggestions_service_; |
| 417 StrictMock<MockMostVisitedSitesObserver> mock_observer_; | 427 StrictMock<MockMostVisitedSitesObserver> mock_observer_; |
| 418 FakeHomePageClient* home_page_client_; | |
| 419 std::unique_ptr<MostVisitedSites> most_visited_sites_; | 428 std::unique_ptr<MostVisitedSites> most_visited_sites_; |
| 420 base::test::ScopedFeatureList feature_list_; | 429 base::test::ScopedFeatureList feature_list_; |
| 421 MockIconCacher* icon_cacher_; | 430 MockIconCacher* icon_cacher_; |
| 422 }; | 431 }; |
| 423 | 432 |
| 424 TEST_P(MostVisitedSitesTest, ShouldStartNoCallInConstructor) { | 433 TEST_P(MostVisitedSitesTest, ShouldStartNoCallInConstructor) { |
| 425 // No call to mocks expected by the mere fact of instantiating | 434 // No call to mocks expected by the mere fact of instantiating |
| 426 // MostVisitedSites. | 435 // MostVisitedSites. |
| 427 base::RunLoop().RunUntilIdle(); | 436 base::RunLoop().RunUntilIdle(); |
| 428 } | 437 } |
| 429 | 438 |
| 430 TEST_P(MostVisitedSitesTest, ShouldIncludeTileForHomePage) { | 439 TEST_P(MostVisitedSitesTest, ShouldIncludeTileForHomePage) { |
| 431 base::test::ScopedFeatureList features; | 440 base::test::ScopedFeatureList features; |
| 432 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 441 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 433 home_page_client_->SetHomePageEnabled(true); | 442 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 443 home_page_client->SetHomePageEnabled(true); |
| 434 DisableRemoteSuggestions(); | 444 DisableRemoteSuggestions(); |
| 435 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 445 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 436 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); | 446 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
| 437 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 447 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 438 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 448 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 439 .Times(AnyNumber()) | 449 .Times(AnyNumber()) |
| 440 .WillRepeatedly(Return(false)); | 450 .WillRepeatedly(Return(false)); |
| 441 EXPECT_CALL(mock_observer_, OnMostVisitedURLsAvailable(FirstTileIs( | 451 EXPECT_CALL(mock_observer_, OnMostVisitedURLsAvailable(FirstTileIs( |
| 442 "", kHomePageUrl, TileSource::HOMEPAGE))); | 452 "", kHomePageUrl, TileSource::HOMEPAGE))); |
| 443 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 453 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 444 /*num_sites=*/3); | 454 /*num_sites=*/3); |
| 445 base::RunLoop().RunUntilIdle(); | 455 base::RunLoop().RunUntilIdle(); |
| 446 } | 456 } |
| 447 | 457 |
| 458 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageWithoutClient) { |
| 459 base::test::ScopedFeatureList features; |
| 460 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 461 DisableRemoteSuggestions(); |
| 462 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 463 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
| 464 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 465 EXPECT_CALL(mock_observer_, |
| 466 OnMostVisitedURLsAvailable(Not(Contains( |
| 467 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); |
| 468 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 469 /*num_sites=*/3); |
| 470 base::RunLoop().RunUntilIdle(); |
| 471 } |
| 472 |
| 448 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfFeatureDisabled) { | 473 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfFeatureDisabled) { |
| 449 base::test::ScopedFeatureList features; | 474 base::test::ScopedFeatureList features; |
| 450 features.InitAndDisableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 475 features.InitAndDisableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 451 home_page_client_->SetHomePageEnabled(true); | 476 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 477 home_page_client->SetHomePageEnabled(true); |
| 452 DisableRemoteSuggestions(); | 478 DisableRemoteSuggestions(); |
| 453 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 479 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 454 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); | 480 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
| 455 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 481 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 456 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 482 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 457 .Times(AnyNumber()) | 483 .Times(AnyNumber()) |
| 458 .WillRepeatedly(Return(false)); | 484 .WillRepeatedly(Return(false)); |
| 459 EXPECT_CALL(mock_observer_, | 485 EXPECT_CALL(mock_observer_, |
| 460 OnMostVisitedURLsAvailable(Not(Contains( | 486 OnMostVisitedURLsAvailable(Not(Contains( |
| 461 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); | 487 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); |
| 462 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 488 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 463 /*num_sites=*/3); | 489 /*num_sites=*/3); |
| 464 base::RunLoop().RunUntilIdle(); | 490 base::RunLoop().RunUntilIdle(); |
| 465 } | 491 } |
| 466 | 492 |
| 467 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfNoTileRequested) { | 493 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfNoTileRequested) { |
| 468 base::test::ScopedFeatureList features; | 494 base::test::ScopedFeatureList features; |
| 469 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 495 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 470 home_page_client_->SetHomePageEnabled(true); | 496 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 497 home_page_client->SetHomePageEnabled(true); |
| 471 DisableRemoteSuggestions(); | 498 DisableRemoteSuggestions(); |
| 472 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 499 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 473 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); | 500 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
| 474 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 501 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 475 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 502 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 476 .Times(AnyNumber()) | 503 .Times(AnyNumber()) |
| 477 .WillRepeatedly(Return(false)); | 504 .WillRepeatedly(Return(false)); |
| 478 EXPECT_CALL(mock_observer_, OnMostVisitedURLsAvailable(IsEmpty())); | 505 EXPECT_CALL(mock_observer_, OnMostVisitedURLsAvailable(IsEmpty())); |
| 479 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 506 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 480 /*num_sites=*/0); | 507 /*num_sites=*/0); |
| 481 base::RunLoop().RunUntilIdle(); | 508 base::RunLoop().RunUntilIdle(); |
| 482 } | 509 } |
| 483 | 510 |
| 484 TEST_P(MostVisitedSitesTest, ShouldReturnOnlyHomePageIfOneTileRequested) { | 511 TEST_P(MostVisitedSitesTest, ShouldReturnOnlyHomePageIfOneTileRequested) { |
| 485 base::test::ScopedFeatureList features; | 512 base::test::ScopedFeatureList features; |
| 486 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 513 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 487 home_page_client_->SetHomePageEnabled(true); | 514 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 515 home_page_client->SetHomePageEnabled(true); |
| 488 DisableRemoteSuggestions(); | 516 DisableRemoteSuggestions(); |
| 489 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 517 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 490 .WillRepeatedly(InvokeCallbackArgument<0>( | 518 .WillRepeatedly(InvokeCallbackArgument<0>( |
| 491 (MostVisitedURLList{MakeMostVisitedURL("Site 1", "http://site1/")}))); | 519 (MostVisitedURLList{MakeMostVisitedURL("Site 1", "http://site1/")}))); |
| 492 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 520 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 493 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 521 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 494 .Times(AnyNumber()) | 522 .Times(AnyNumber()) |
| 495 .WillRepeatedly(Return(false)); | 523 .WillRepeatedly(Return(false)); |
| 496 EXPECT_CALL(mock_observer_, | 524 EXPECT_CALL(mock_observer_, |
| 497 OnMostVisitedURLsAvailable(ElementsAre( | 525 OnMostVisitedURLsAvailable(ElementsAre( |
| 498 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE)))); | 526 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE)))); |
| 499 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 527 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 500 /*num_sites=*/1); | 528 /*num_sites=*/1); |
| 501 base::RunLoop().RunUntilIdle(); | 529 base::RunLoop().RunUntilIdle(); |
| 502 } | 530 } |
| 503 | 531 |
| 504 TEST_P(MostVisitedSitesTest, ShouldDeduplicateHomePageWithTopSites) { | 532 TEST_P(MostVisitedSitesTest, ShouldDeduplicateHomePageWithTopSites) { |
| 505 base::test::ScopedFeatureList features; | 533 base::test::ScopedFeatureList features; |
| 506 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 534 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 507 home_page_client_->SetHomePageEnabled(true); | 535 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 536 home_page_client->SetHomePageEnabled(true); |
| 508 DisableRemoteSuggestions(); | 537 DisableRemoteSuggestions(); |
| 509 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 538 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 510 .WillRepeatedly(InvokeCallbackArgument<0>( | 539 .WillRepeatedly(InvokeCallbackArgument<0>( |
| 511 (MostVisitedURLList{MakeMostVisitedURL("Site 1", "http://site1/"), | 540 (MostVisitedURLList{MakeMostVisitedURL("Site 1", "http://site1/"), |
| 512 MakeMostVisitedURL("", kHomePageUrl)}))); | 541 MakeMostVisitedURL("", kHomePageUrl)}))); |
| 513 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 542 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 514 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 543 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 515 .Times(AnyNumber()) | 544 .Times(AnyNumber()) |
| 516 .WillRepeatedly(Return(false)); | 545 .WillRepeatedly(Return(false)); |
| 517 EXPECT_CALL(mock_observer_, | 546 EXPECT_CALL(mock_observer_, |
| 518 OnMostVisitedURLsAvailable( | 547 OnMostVisitedURLsAvailable( |
| 519 AllOf(FirstTileIs("", kHomePageUrl, TileSource::HOMEPAGE), | 548 AllOf(FirstTileIs("", kHomePageUrl, TileSource::HOMEPAGE), |
| 520 Not(Contains(MatchesTile("", kHomePageUrl, | 549 Not(Contains(MatchesTile("", kHomePageUrl, |
| 521 TileSource::TOP_SITES)))))); | 550 TileSource::TOP_SITES)))))); |
| 522 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 551 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 523 /*num_sites=*/3); | 552 /*num_sites=*/3); |
| 524 base::RunLoop().RunUntilIdle(); | 553 base::RunLoop().RunUntilIdle(); |
| 525 } | 554 } |
| 526 | 555 |
| 527 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfItIsNewTabPage) { | 556 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfItIsNewTabPage) { |
| 528 base::test::ScopedFeatureList features; | 557 base::test::ScopedFeatureList features; |
| 529 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 558 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 530 home_page_client_->SetHomePageEnabled(true); | 559 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 531 home_page_client_->SetNtpIsHomePage(true); | 560 home_page_client->SetHomePageEnabled(true); |
| 561 home_page_client->SetNtpIsHomePage(true); |
| 532 DisableRemoteSuggestions(); | 562 DisableRemoteSuggestions(); |
| 533 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 563 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 534 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); | 564 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
| 535 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 565 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 536 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 566 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 537 .Times(AnyNumber()) | 567 .Times(AnyNumber()) |
| 538 .WillRepeatedly(Return(false)); | 568 .WillRepeatedly(Return(false)); |
| 539 EXPECT_CALL(mock_observer_, | 569 EXPECT_CALL(mock_observer_, |
| 540 OnMostVisitedURLsAvailable(Not(Contains( | 570 OnMostVisitedURLsAvailable(Not(Contains( |
| 541 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); | 571 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); |
| 542 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 572 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 543 /*num_sites=*/3); | 573 /*num_sites=*/3); |
| 544 base::RunLoop().RunUntilIdle(); | 574 base::RunLoop().RunUntilIdle(); |
| 545 } | 575 } |
| 546 | 576 |
| 547 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfThereIsNone) { | 577 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfThereIsNone) { |
| 548 base::test::ScopedFeatureList features; | 578 base::test::ScopedFeatureList features; |
| 549 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 579 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 550 home_page_client_->SetHomePageEnabled(false); | 580 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 581 home_page_client->SetHomePageEnabled(false); |
| 551 DisableRemoteSuggestions(); | 582 DisableRemoteSuggestions(); |
| 552 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 583 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 553 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); | 584 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
| 554 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 585 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 555 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 586 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 556 .Times(AnyNumber()) | 587 .Times(AnyNumber()) |
| 557 .WillRepeatedly(Return(false)); | 588 .WillRepeatedly(Return(false)); |
| 558 EXPECT_CALL(mock_observer_, | 589 EXPECT_CALL(mock_observer_, |
| 559 OnMostVisitedURLsAvailable(Not(Contains( | 590 OnMostVisitedURLsAvailable(Not(Contains( |
| 560 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); | 591 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); |
| 561 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 592 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 562 /*num_sites=*/3); | 593 /*num_sites=*/3); |
| 563 base::RunLoop().RunUntilIdle(); | 594 base::RunLoop().RunUntilIdle(); |
| 564 } | 595 } |
| 565 | 596 |
| 597 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfEmptyUrl) { |
| 598 const std::string kEmptyHomePageUrl; |
| 599 base::test::ScopedFeatureList features; |
| 600 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 601 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 602 home_page_client->SetHomePageEnabled(true); |
| 603 home_page_client->SetHomePageUrl(GURL(kEmptyHomePageUrl)); |
| 604 DisableRemoteSuggestions(); |
| 605 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 606 .WillRepeatedly(InvokeCallbackArgument<0>(MostVisitedURLList{})); |
| 607 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 608 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(kEmptyHomePageUrl))) |
| 609 .Times(AnyNumber()) |
| 610 .WillRepeatedly(Return(false)); |
| 611 EXPECT_CALL(mock_observer_, |
| 612 OnMostVisitedURLsAvailable(Not( |
| 613 FirstTileIs("", kEmptyHomePageUrl, TileSource::HOMEPAGE)))); |
| 614 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 615 /*num_sites=*/3); |
| 616 base::RunLoop().RunUntilIdle(); |
| 617 } |
| 618 |
| 566 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfBlacklisted) { | 619 TEST_P(MostVisitedSitesTest, ShouldNotIncludeHomePageIfBlacklisted) { |
| 567 base::test::ScopedFeatureList features; | 620 base::test::ScopedFeatureList features; |
| 568 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 621 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 569 home_page_client_->SetHomePageEnabled(true); | 622 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 623 home_page_client->SetHomePageEnabled(true); |
| 570 DisableRemoteSuggestions(); | 624 DisableRemoteSuggestions(); |
| 571 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 625 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 572 .WillRepeatedly(InvokeCallbackArgument<0>( | 626 .WillRepeatedly(InvokeCallbackArgument<0>( |
| 573 (MostVisitedURLList{MakeMostVisitedURL("", kHomePageUrl)}))); | 627 (MostVisitedURLList{MakeMostVisitedURL("", kHomePageUrl)}))); |
| 574 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 628 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 575 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 629 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 576 .Times(AnyNumber()) | 630 .Times(AnyNumber()) |
| 577 .WillRepeatedly(Return(false)); | 631 .WillRepeatedly(Return(false)); |
| 578 | 632 |
| 579 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 633 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 580 .Times(AtLeast(1)) | 634 .Times(AtLeast(1)) |
| 581 .WillRepeatedly(Return(true)); | 635 .WillRepeatedly(Return(true)); |
| 582 EXPECT_CALL(mock_observer_, | 636 EXPECT_CALL(mock_observer_, |
| 583 OnMostVisitedURLsAvailable(Not(Contains( | 637 OnMostVisitedURLsAvailable(Not(Contains( |
| 584 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); | 638 MatchesTile("", kHomePageUrl, TileSource::HOMEPAGE))))); |
| 585 | 639 |
| 586 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, | 640 most_visited_sites_->SetMostVisitedURLsObserver(&mock_observer_, |
| 587 /*num_sites=*/3); | 641 /*num_sites=*/3); |
| 588 base::RunLoop().RunUntilIdle(); | 642 base::RunLoop().RunUntilIdle(); |
| 589 } | 643 } |
| 590 | 644 |
| 591 TEST_P(MostVisitedSitesTest, ShouldPinHomePageAgainIfBlacklistingUndone) { | 645 TEST_P(MostVisitedSitesTest, ShouldPinHomePageAgainIfBlacklistingUndone) { |
| 592 base::test::ScopedFeatureList features; | 646 base::test::ScopedFeatureList features; |
| 593 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); | 647 features.InitAndEnableFeature(ntp_tiles::kPinHomePageAsTileFeature); |
| 594 home_page_client_->SetHomePageEnabled(true); | 648 FakeHomePageClient* home_page_client = RegisterNewHomePageClient(); |
| 649 home_page_client->SetHomePageEnabled(true); |
| 595 | 650 |
| 596 DisableRemoteSuggestions(); | 651 DisableRemoteSuggestions(); |
| 597 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) | 652 EXPECT_CALL(*mock_top_sites_, GetMostVisitedURLs(_, false)) |
| 598 .WillOnce(InvokeCallbackArgument<0>( | 653 .WillOnce(InvokeCallbackArgument<0>( |
| 599 (MostVisitedURLList{MakeMostVisitedURL("", kHomePageUrl)}))); | 654 (MostVisitedURLList{MakeMostVisitedURL("", kHomePageUrl)}))); |
| 600 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); | 655 EXPECT_CALL(*mock_top_sites_, SyncWithHistory()); |
| 601 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) | 656 EXPECT_CALL(*mock_top_sites_, IsBlacklisted(Eq(GURL(kHomePageUrl)))) |
| 602 .Times(AtLeast(1)) | 657 .Times(AtLeast(1)) |
| 603 .WillRepeatedly(Return(true)); | 658 .WillRepeatedly(Return(true)); |
| 604 EXPECT_CALL(mock_observer_, | 659 EXPECT_CALL(mock_observer_, |
| (...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1169 TileSource::TOP_SITES), | 1224 TileSource::TOP_SITES), |
| 1170 MatchesTile("Site 4", "https://www.site4.com/", | 1225 MatchesTile("Site 4", "https://www.site4.com/", |
| 1171 TileSource::TOP_SITES), | 1226 TileSource::TOP_SITES), |
| 1172 MatchesTile("Site 1", "https://www.site1.com/", TileSource::POPULAR), | 1227 MatchesTile("Site 1", "https://www.site1.com/", TileSource::POPULAR), |
| 1173 MatchesTile("Site 2", "https://www.site2.com/", | 1228 MatchesTile("Site 2", "https://www.site2.com/", |
| 1174 TileSource::POPULAR))); | 1229 TileSource::POPULAR))); |
| 1175 } | 1230 } |
| 1176 | 1231 |
| 1177 } // namespace | 1232 } // namespace |
| 1178 } // namespace ntp_tiles | 1233 } // namespace ntp_tiles |
| OLD | NEW |