Index: components/precache/core/precache_fetcher_unittest.cc |
diff --git a/components/precache/core/precache_fetcher_unittest.cc b/components/precache/core/precache_fetcher_unittest.cc |
index 930cd4df128fb1b01920ae7477e9ca7d08db2df1..a5ed3531059f89bfa2bfe4012b648e95b4ef28ed 100644 |
--- a/components/precache/core/precache_fetcher_unittest.cc |
+++ b/components/precache/core/precache_fetcher_unittest.cc |
@@ -239,7 +239,7 @@ TEST_F(PrecacheFetcherFetcherTest, Config) { |
PrecacheFetcher::Fetcher precache_fetcher( |
request_context_.get(), url, url.host(), callback_, |
- false /* is_resource_request */, SIZE_MAX); |
+ false /* is_resource_request */, SIZE_MAX, false /* revalidation_only */); |
base::RunLoop().RunUntilIdle(); |
@@ -256,12 +256,11 @@ TEST_F(PrecacheFetcherFetcherTest, ResourceNotInCache) { |
.WillOnce(factory_.RespondWith("", &fetcher2)); |
EXPECT_CALL(*this, |
Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, |
- NotNull()))) |
- .Times(1); |
+ NotNull()))); |
PrecacheFetcher::Fetcher precache_fetcher( |
request_context_.get(), url, url.host(), callback_, |
- true /* is_resource_request */, SIZE_MAX); |
+ true /* is_resource_request */, SIZE_MAX, false /* revalidation_only */); |
base::RunLoop().RunUntilIdle(); |
@@ -286,7 +285,7 @@ TEST_F(PrecacheFetcherFetcherTest, ResourceHasValidators) { |
PrecacheFetcher::Fetcher precache_fetcher( |
request_context_.get(), url, url.host(), callback_, |
- true /* is_resource_request */, SIZE_MAX); |
+ true /* is_resource_request */, SIZE_MAX, false /* revalidation_only */); |
base::RunLoop().RunUntilIdle(); |
@@ -301,7 +300,75 @@ TEST_F(PrecacheFetcherFetcherTest, ResourceHasValidators) { |
TEST_F(PrecacheFetcherFetcherTest, ResourceHasNoValidators) { |
GURL url(kGoodResourceURL); |
- net::FakeURLFetcher* fetcher; |
+ net::FakeURLFetcher* fetcher = nullptr; |
+ EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) |
+ .WillOnce(factory_.RespondWith("", &fetcher)); |
+ EXPECT_CALL(*this, |
+ Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, |
+ nullptr))); // It never reached the network. |
+ |
+ PrecacheFetcher::Fetcher precache_fetcher( |
+ request_context_.get(), url, url.host(), callback_, |
+ true /* is_resource_request */, SIZE_MAX, false /* revalidation_only */); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ EXPECT_EQ( |
+ net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking, |
+ fetcher->GetLoadFlags()); |
+} |
+ |
+TEST_F(PrecacheFetcherFetcherTest, RevalidationOnlyResourceNotInCache) { |
+ GURL url(kGoodResourceURL); |
+ |
+ net::FakeURLFetcher* fetcher = nullptr; |
+ EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) |
+ .WillOnce(factory_.RespondWith("", CacheMiss, &fetcher)); |
+ EXPECT_CALL(*this, |
+ Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, |
+ nullptr))); // It never reached the network. |
+ |
+ PrecacheFetcher::Fetcher precache_fetcher( |
+ request_context_.get(), url, url.host(), callback_, |
+ true /* is_resource_request */, SIZE_MAX, true /* revalidation_only */); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ ASSERT_NE(nullptr, fetcher); |
+ EXPECT_EQ( |
+ net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking, |
+ fetcher->GetLoadFlags()); |
+} |
+ |
+TEST_F(PrecacheFetcherFetcherTest, RevalidationOnlyResourceHasValidators) { |
+ GURL url(kGoodResourceURL); |
+ |
+ net::FakeURLFetcher *fetcher1 = nullptr, *fetcher2 = nullptr; |
+ EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) |
+ .WillOnce(factory_.RespondWith("", HasETag, &fetcher1)) |
+ .WillOnce(factory_.RespondWith("", &fetcher2)); |
+ EXPECT_CALL(*this, |
+ Callback(Property(&PrecacheFetcher::Fetcher::network_url_fetcher, |
+ NotNull()))); |
+ |
+ PrecacheFetcher::Fetcher precache_fetcher( |
+ request_context_.get(), url, url.host(), callback_, |
+ true /* is_resource_request */, SIZE_MAX, true /* revalidation_only */); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ ASSERT_NE(nullptr, fetcher1); |
+ EXPECT_EQ( |
+ net::LOAD_ONLY_FROM_CACHE | net::LOAD_SKIP_CACHE_VALIDATION | kNoTracking, |
+ fetcher1->GetLoadFlags()); |
+ ASSERT_NE(nullptr, fetcher2); |
+ EXPECT_EQ(net::LOAD_VALIDATE_CACHE | kNoTracking, fetcher2->GetLoadFlags()); |
+} |
+ |
+TEST_F(PrecacheFetcherFetcherTest, RevalidationOnlyResourceHasNoValidators) { |
+ GURL url(kGoodResourceURL); |
+ |
+ net::FakeURLFetcher* fetcher = nullptr; |
EXPECT_CALL(factory_, DoCreateURLFetcher(_, url, net::URLFetcher::GET, _)) |
.WillOnce(factory_.RespondWith("", &fetcher)); |
EXPECT_CALL(*this, |
@@ -310,7 +377,7 @@ TEST_F(PrecacheFetcherFetcherTest, ResourceHasNoValidators) { |
PrecacheFetcher::Fetcher precache_fetcher( |
request_context_.get(), url, url.host(), callback_, |
- true /* is_resource_request */, SIZE_MAX); |
+ true /* is_resource_request */, SIZE_MAX, true /* revalidation_only */); |
base::RunLoop().RunUntilIdle(); |
@@ -339,7 +406,8 @@ TEST_F(PrecacheFetcherFetcherTest, ResourceTooBig) { |
PrecacheFetcher::Fetcher precache_fetcher( |
request_context_.get(), url, url.host(), callback_, |
- true /* is_resource_request */, 99 /* max_bytes */); |
+ true /* is_resource_request */, 99 /* max_bytes */, |
+ false /* revalidation_only */); |
base::RunLoop().RunUntilIdle(); |
} |