Index: components/precache/core/precache_fetcher.cc |
diff --git a/components/precache/core/precache_fetcher.cc b/components/precache/core/precache_fetcher.cc |
index 1a372c8dd152cf6d6d3b0c00a6f017e468c928a0..fd008c1aa41c3dbd3817960b24d7733fff0d5830 100644 |
--- a/components/precache/core/precache_fetcher.cc |
+++ b/components/precache/core/precache_fetcher.cc |
@@ -241,13 +241,15 @@ PrecacheFetcher::Fetcher::Fetcher( |
const std::string& referrer, |
const base::Callback<void(const Fetcher&)>& callback, |
bool is_resource_request, |
- size_t max_bytes) |
+ size_t max_bytes, |
+ bool revalidation_only) |
: request_context_(request_context), |
url_(url), |
referrer_(referrer), |
callback_(callback), |
is_resource_request_(is_resource_request), |
max_bytes_(max_bytes), |
+ revalidation_only_(revalidation_only), |
response_bytes_(0), |
network_response_bytes_(0), |
was_cached_(false) { |
@@ -330,7 +332,8 @@ void PrecacheFetcher::Fetcher::OnURLFetchComplete( |
const net::URLFetcher* source) { |
CHECK(source); |
if (fetch_stage_ == FetchStage::CACHE && |
- (source->GetStatus().error() == net::ERR_CACHE_MISS || |
+ ((source->GetStatus().error() == net::ERR_CACHE_MISS && |
+ !revalidation_only_) || |
(source->GetResponseHeaders() && |
source->GetResponseHeaders()->HasValidators()))) { |
// If the resource was not found in the cache, request it from the |
@@ -488,7 +491,8 @@ void PrecacheFetcher::Start() { |
pool_.Add(base::MakeUnique<Fetcher>( |
request_context_.get(), config_url, std::string(), |
base::Bind(&PrecacheFetcher::OnConfigFetchComplete, AsWeakPtr()), |
- false /* is_resource_request */, std::numeric_limits<int32_t>::max())); |
+ false /* is_resource_request */, std::numeric_limits<int32_t>::max(), |
+ false /* revalidation_only */)); |
} |
void PrecacheFetcher::StartNextResourceFetch() { |
@@ -503,7 +507,8 @@ void PrecacheFetcher::StartNextResourceFetch() { |
pool_.Add(base::MakeUnique<Fetcher>( |
request_context_.get(), resource.url, resource.referrer, |
base::Bind(&PrecacheFetcher::OnResourceFetchComplete, AsWeakPtr()), |
- true /* is_resource_request */, max_bytes)); |
+ true /* is_resource_request */, max_bytes, |
+ unfinished_work_->config_settings().revalidation_only())); |
resources_fetching_.push_back(std::move(resource)); |
resources_to_fetch_.pop_front(); |
@@ -519,7 +524,8 @@ void PrecacheFetcher::StartNextManifestFetches() { |
request_context_.get(), top_host.manifest_url, top_host.hostname, |
base::Bind(&PrecacheFetcher::OnManifestFetchComplete, AsWeakPtr(), |
top_host.visits), |
- false /* is_resource_request */, std::numeric_limits<int32_t>::max())); |
+ false /* is_resource_request */, std::numeric_limits<int32_t>::max(), |
+ false /* revalidation_only */)); |
top_hosts_fetching_.push_back(std::move(top_host)); |
top_hosts_to_fetch_.pop_front(); |
} |