Index: content/browser/service_worker/service_worker_read_from_cache_job.cc |
diff --git a/content/browser/service_worker/service_worker_read_from_cache_job.cc b/content/browser/service_worker/service_worker_read_from_cache_job.cc |
index 0681661763d491e299c9b8af12a9ab8189d8eee3..094bd73d35b3c596278a9cd7268aa98fcd294b38 100644 |
--- a/content/browser/service_worker/service_worker_read_from_cache_job.cc |
+++ b/content/browser/service_worker/service_worker_read_from_cache_job.cc |
@@ -151,7 +151,7 @@ void ServiceWorkerReadFromCacheJob::OnReadInfoComplete(int result) { |
DCHECK_LT(result, 0); |
ServiceWorkerMetrics::CountReadResponseResult( |
ServiceWorkerMetrics::READ_HEADERS_ERROR); |
- NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, result)); |
+ Done(net::URLRequestStatus(net::URLRequestStatus::FAILED, result)); |
return; |
} |
DCHECK_GE(result, 0); |
@@ -192,14 +192,22 @@ void ServiceWorkerReadFromCacheJob::SetupRangeResponse(int resource_size) { |
range_requested_, resource_size, true /* replace status line */); |
} |
+void ServiceWorkerReadFromCacheJob::Done(const net::URLRequestStatus& status) { |
+ if (!status.is_success()) { |
+ version_->SetStartWorkerStatusCode(SERVICE_WORKER_ERROR_DISK_CACHE); |
+ // TODO(falken): Retry and evict the SW if it fails again. |
+ } |
+ NotifyDone(status); |
+} |
+ |
void ServiceWorkerReadFromCacheJob::OnReadComplete(int result) { |
ServiceWorkerMetrics::ReadResponseResult check_result; |
if (result == 0) { |
check_result = ServiceWorkerMetrics::READ_OK; |
- NotifyDone(net::URLRequestStatus()); |
+ Done(net::URLRequestStatus()); |
} else if (result < 0) { |
check_result = ServiceWorkerMetrics::READ_DATA_ERROR; |
- NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, result)); |
+ Done(net::URLRequestStatus(net::URLRequestStatus::FAILED, result)); |
} else { |
check_result = ServiceWorkerMetrics::READ_OK; |
SetStatus(net::URLRequestStatus()); // Clear the IO_PENDING status |