Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: components/ntp_tiles/most_visited_sites_unittest.cc

Issue 2897293002: Adding CrHome-specific implementation for home page tile. (Closed)
Patch Set: Refactor tests and initialization Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/ntp_tiles/most_visited_sites.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « components/ntp_tiles/most_visited_sites.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698