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 |