| Index: components/ntp_tiles/popular_sites_impl_unittest.cc
|
| diff --git a/components/ntp_tiles/popular_sites_impl_unittest.cc b/components/ntp_tiles/popular_sites_impl_unittest.cc
|
| index 86fbfde2fd26ec406224532cb39d0dd28a0c74e0..51c3e2714dc83762f807fc73e74b79305200d233 100644
|
| --- a/components/ntp_tiles/popular_sites_impl_unittest.cc
|
| +++ b/components/ntp_tiles/popular_sites_impl_unittest.cc
|
| @@ -117,15 +117,12 @@ class PopularSitesTest : public ::testing::Test {
|
| scoped_refptr<net::TestURLRequestContextGetter> url_request_context(
|
| new net::TestURLRequestContextGetter(
|
| base::ThreadTaskRunnerHandle::Get()));
|
| - PopularSitesImpl popular_sites(worker_pool_owner_.pool().get(), &prefs_,
|
| - /*template_url_service=*/nullptr,
|
| - /*variations_service=*/nullptr,
|
| - url_request_context.get(), cache_dir_,
|
| - base::Bind(JsonUnsafeParser::Parse));
|
| + std::unique_ptr<PopularSites> popular_sites =
|
| + CreatePopularSites(url_request_context.get());
|
|
|
| base::RunLoop loop;
|
| base::Optional<bool> save_success;
|
| - if (popular_sites.MaybeStartFetch(
|
| + if (popular_sites->MaybeStartFetch(
|
| force_download, base::Bind(
|
| [](base::Optional<bool>* save_success,
|
| base::RunLoop* loop, bool success) {
|
| @@ -135,10 +132,19 @@ class PopularSitesTest : public ::testing::Test {
|
| &save_success, &loop))) {
|
| loop.Run();
|
| }
|
| - *sites = popular_sites.sites();
|
| + *sites = popular_sites->sites();
|
| return save_success;
|
| }
|
|
|
| + std::unique_ptr<PopularSites> CreatePopularSites(
|
| + net::URLRequestContextGetter* context) {
|
| + return base::MakeUnique<PopularSitesImpl>(
|
| + worker_pool_owner_.pool().get(), &prefs_,
|
| + /*template_url_service=*/nullptr,
|
| + /*variations_service=*/nullptr, context, cache_dir_,
|
| + base::Bind(JsonUnsafeParser::Parse));
|
| + }
|
| +
|
| const TestPopularSite kWikipedia;
|
| const TestPopularSite kYouTube;
|
| const TestPopularSite kChromium;
|
| @@ -194,7 +200,7 @@ TEST_F(PopularSitesTest, Fallback) {
|
| URLEq("https://www.chromium.org/favicon.ico"));
|
| }
|
|
|
| -TEST_F(PopularSitesTest, Failure) {
|
| +TEST_F(PopularSitesTest, PopulatesWithDefaultResoucesOnFailure) {
|
| SetCountryAndVersion("ZZ", "9");
|
| RespondWith404(
|
| "https://www.gstatic.com/chrome/ntp/suggested_sites_ZZ_9.json");
|
| @@ -204,7 +210,43 @@ TEST_F(PopularSitesTest, Failure) {
|
| PopularSites::SitesVector sites;
|
| EXPECT_THAT(FetchPopularSites(/*force_download=*/false, &sites),
|
| Eq(base::Optional<bool>(false)));
|
| - ASSERT_THAT(sites, IsEmpty());
|
| + EXPECT_THAT(sites.size(), Eq(8ul));
|
| +}
|
| +
|
| +TEST_F(PopularSitesTest, ProvidesDefaultSitesUntilCallbackReturns) {
|
| + SetCountryAndVersion("ZZ", "9");
|
| + RespondWithJSON(
|
| + "https://www.gstatic.com/chrome/ntp/suggested_sites_ZZ_9.json",
|
| + {kWikipedia});
|
| + scoped_refptr<net::TestURLRequestContextGetter> url_request_context(
|
| + new net::TestURLRequestContextGetter(
|
| + base::ThreadTaskRunnerHandle::Get()));
|
| + std::unique_ptr<PopularSites> popular_sites =
|
| + CreatePopularSites(url_request_context.get());
|
| +
|
| + base::RunLoop loop;
|
| + base::Optional<bool> save_success;
|
| +
|
| + bool callback_was_scheduled = popular_sites->MaybeStartFetch(
|
| + /*force_download=*/true, base::Bind(
|
| + [](base::Optional<bool>* save_success,
|
| + base::RunLoop* loop, bool success) {
|
| + save_success->emplace(success);
|
| + loop->Quit();
|
| + },
|
| + &save_success, &loop));
|
| +
|
| + // Assert that callback was scheduled so we can wait for its completion.
|
| + ASSERT_TRUE(callback_was_scheduled);
|
| + // There should be 8 default sites as nothing was fetched yet.
|
| + EXPECT_THAT(popular_sites->sites().size(), Eq(8ul));
|
| +
|
| + loop.Run(); // Wait for the fetch to finish and the callback to return.
|
| +
|
| + ASSERT_TRUE(save_success.has_value());
|
| + EXPECT_TRUE(save_success.value());
|
| + // The 1 fetched site should replace the default sites.
|
| + EXPECT_THAT(popular_sites->sites().size(), Eq(1ul));
|
| }
|
|
|
| TEST_F(PopularSitesTest, ClearsCacheFileFromOldVersions) {
|
|
|