Index: content/browser/service_worker/service_worker_write_to_cache_job.cc |
diff --git a/content/browser/service_worker/service_worker_write_to_cache_job.cc b/content/browser/service_worker/service_worker_write_to_cache_job.cc |
index 6d3f88f3c8b7aed60d609aca5b2a6e815bc689ac..bf226ad74f87f0b7474e96817e8ca6cf09abbeaf 100644 |
--- a/content/browser/service_worker/service_worker_write_to_cache_job.cc |
+++ b/content/browser/service_worker/service_worker_write_to_cache_job.cc |
@@ -107,8 +107,7 @@ void ServiceWorkerWriteToCacheJob::Kill() { |
has_been_killed_ = true; |
net_request_.reset(); |
if (did_notify_started_) { |
- net::Error error = NotifyFinishedCaching( |
- net::URLRequestStatus::FromError(net::ERR_ABORTED), kKilledError); |
+ net::Error error = NotifyFinishedCaching(net::ERR_ABORTED, kKilledError); |
DCHECK_EQ(net::ERR_ABORTED, error); |
} |
writer_.reset(); |
@@ -158,18 +157,18 @@ void ServiceWorkerWriteToCacheJob::SetExtraRequestHeaders( |
int ServiceWorkerWriteToCacheJob::ReadRawData(net::IOBuffer* buf, |
int buf_size) { |
- int bytes_read = 0; |
- net::URLRequestStatus status = ReadNetData(buf, buf_size, &bytes_read); |
- if (status.is_io_pending()) |
+ int rv = ReadNetData(buf, buf_size); |
+ if (rv == net::ERR_IO_PENDING) |
return net::ERR_IO_PENDING; |
- if (!status.is_success()) { |
- net::Error error = NotifyFinishedCaching(status, kFetchScriptError); |
- DCHECK_EQ(status.error(), error); |
+ if (rv < 0) { |
+ net::Error error = static_cast<net::Error>(rv); |
+ error = NotifyFinishedCaching(error, kFetchScriptError); |
+ DCHECK_EQ(rv, error); |
return error; |
} |
- return HandleNetData(bytes_read); |
+ return HandleNetData(rv); |
} |
const net::HttpResponseInfo* ServiceWorkerWriteToCacheJob::http_info() const { |
@@ -205,18 +204,12 @@ void ServiceWorkerWriteToCacheJob::StartNetRequest() { |
net_request_->Start(); // We'll continue in OnResponseStarted. |
} |
-net::URLRequestStatus ServiceWorkerWriteToCacheJob::ReadNetData( |
- net::IOBuffer* buf, |
- int buf_size, |
- int* bytes_read) { |
+int ServiceWorkerWriteToCacheJob::ReadNetData(net::IOBuffer* buf, |
+ int buf_size) { |
DCHECK_GT(buf_size, 0); |
- DCHECK(bytes_read); |
io_buffer_ = buf; |
io_buffer_bytes_ = 0; |
- if (!net_request_->Read(buf, buf_size, bytes_read)) |
- DCHECK_NE(net::URLRequestStatus::SUCCESS, net_request_->status().status()); |
- |
- return net_request_->status(); |
+ return net_request_->Read(buf, buf_size); |
} |
void ServiceWorkerWriteToCacheJob::OnReceivedRedirect( |
@@ -227,9 +220,7 @@ void ServiceWorkerWriteToCacheJob::OnReceivedRedirect( |
TRACE_EVENT0("ServiceWorker", |
"ServiceWorkerWriteToCacheJob::OnReceivedRedirect"); |
// Script resources can't redirect. |
- NotifyStartErrorHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
- net::ERR_UNSAFE_REDIRECT), |
- kRedirectError); |
+ NotifyStartErrorHelper(net::ERR_UNSAFE_REDIRECT, kRedirectError); |
} |
void ServiceWorkerWriteToCacheJob::OnAuthRequired( |
@@ -239,9 +230,7 @@ void ServiceWorkerWriteToCacheJob::OnAuthRequired( |
TRACE_EVENT0("ServiceWorker", |
"ServiceWorkerWriteToCacheJob::OnAuthRequired"); |
// TODO(michaeln): Pass this thru to our jobs client. |
- NotifyStartErrorHelper( |
- net::URLRequestStatus(net::URLRequestStatus::FAILED, net::ERR_FAILED), |
- kClientAuthenticationError); |
+ NotifyStartErrorHelper(net::ERR_FAILED, kClientAuthenticationError); |
} |
void ServiceWorkerWriteToCacheJob::OnCertificateRequested( |
@@ -252,9 +241,7 @@ void ServiceWorkerWriteToCacheJob::OnCertificateRequested( |
"ServiceWorkerWriteToCacheJob::OnCertificateRequested"); |
// TODO(michaeln): Pass this thru to our jobs client. |
// see NotifyCertificateRequested. |
- NotifyStartErrorHelper( |
- net::URLRequestStatus(net::URLRequestStatus::FAILED, net::ERR_FAILED), |
- kClientAuthenticationError); |
+ NotifyStartErrorHelper(net::ERR_FAILED, kClientAuthenticationError); |
} |
void ServiceWorkerWriteToCacheJob::OnSSLCertificateError( |
@@ -266,24 +253,23 @@ void ServiceWorkerWriteToCacheJob::OnSSLCertificateError( |
"ServiceWorkerWriteToCacheJob::OnSSLCertificateError"); |
// TODO(michaeln): Pass this thru to our jobs client, |
// see NotifySSLCertificateError. |
- NotifyStartErrorHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
- net::ERR_INSECURE_RESPONSE), |
- kSSLError); |
+ NotifyStartErrorHelper(net::ERR_INSECURE_RESPONSE, kSSLError); |
} |
-void ServiceWorkerWriteToCacheJob::OnResponseStarted( |
- net::URLRequest* request) { |
+void ServiceWorkerWriteToCacheJob::OnResponseStarted(net::URLRequest* request, |
+ int net_error) { |
+ DCHECK_NE(net::ERR_IO_PENDING, net_error); |
DCHECK_EQ(net_request_.get(), request); |
- if (!request->status().is_success()) { |
- NotifyStartErrorHelper(request->status(), kFetchScriptError); |
+ |
+ if (net_error != net::OK) { |
+ net::Error error = static_cast<net::Error>(net_error); |
+ NotifyStartErrorHelper(error, kFetchScriptError); |
return; |
} |
if (request->GetResponseCode() / 100 != 2) { |
std::string error_message = |
base::StringPrintf(kBadHTTPResponseError, request->GetResponseCode()); |
- NotifyStartErrorHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
- net::ERR_INVALID_RESPONSE), |
- error_message); |
+ NotifyStartErrorHelper(net::ERR_INVALID_RESPONSE, error_message); |
// TODO(michaeln): Instead of error'ing immediately, send the net |
// response to our consumer, just don't cache it? |
return; |
@@ -294,10 +280,7 @@ void ServiceWorkerWriteToCacheJob::OnResponseStarted( |
const net::HttpNetworkSession::Params* session_params = |
request->context()->GetNetworkSessionParams(); |
if (!session_params || !session_params->ignore_certificate_errors) { |
- NotifyStartErrorHelper( |
- net::URLRequestStatus(net::URLRequestStatus::FAILED, |
- net::ERR_INSECURE_RESPONSE), |
- kSSLError); |
+ NotifyStartErrorHelper(net::ERR_INSECURE_RESPONSE, kSSLError); |
return; |
} |
} |
@@ -312,10 +295,7 @@ void ServiceWorkerWriteToCacheJob::OnResponseStarted( |
mime_type.empty() |
? kNoMIMEError |
: base::StringPrintf(kBadMIMEError, mime_type.c_str()); |
- NotifyStartErrorHelper( |
- net::URLRequestStatus(net::URLRequestStatus::FAILED, |
- net::ERR_INSECURE_RESPONSE), |
- error_message); |
+ NotifyStartErrorHelper(net::ERR_INSECURE_RESPONSE, error_message); |
return; |
} |
@@ -357,7 +337,7 @@ void ServiceWorkerWriteToCacheJob::OnWriteHeadersComplete(net::Error error) { |
void ServiceWorkerWriteToCacheJob::OnWriteDataComplete(net::Error error) { |
DCHECK_NE(net::ERR_IO_PENDING, error); |
if (io_buffer_bytes_ == 0) |
- error = NotifyFinishedCaching(net::URLRequestStatus::FromError(error), ""); |
+ error = NotifyFinishedCaching(error, ""); |
if (error != net::OK) { |
ServiceWorkerMetrics::CountWriteResponseResult( |
ServiceWorkerMetrics::WRITE_DATA_ERROR); |
@@ -371,12 +351,13 @@ void ServiceWorkerWriteToCacheJob::OnWriteDataComplete(net::Error error) { |
void ServiceWorkerWriteToCacheJob::OnReadCompleted(net::URLRequest* request, |
int bytes_read) { |
+ DCHECK_NE(net::ERR_IO_PENDING, bytes_read); |
DCHECK_EQ(net_request_.get(), request); |
int result; |
if (bytes_read < 0) { |
- DCHECK(!request->status().is_success()); |
- result = NotifyFinishedCaching(request->status(), kFetchScriptError); |
+ net::Error error = static_cast<net::Error>(bytes_read); |
+ result = NotifyFinishedCaching(error, kFetchScriptError); |
} else { |
result = HandleNetData(bytes_read); |
} |
@@ -399,9 +380,7 @@ bool ServiceWorkerWriteToCacheJob::CheckPathRestriction( |
if (!ServiceWorkerUtils::IsPathRestrictionSatisfied( |
version_->scope(), url_, |
has_header ? &service_worker_allowed : nullptr, &error_message)) { |
- NotifyStartErrorHelper(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
- net::ERR_INSECURE_RESPONSE), |
- error_message); |
+ NotifyStartErrorHelper(net::ERR_INSECURE_RESPONSE, error_message); |
return false; |
} |
return true; |
@@ -416,57 +395,53 @@ int ServiceWorkerWriteToCacheJob::HandleNetData(int bytes_read) { |
// In case of ERR_IO_PENDING, this logic is done in OnWriteDataComplete. |
if (error != net::ERR_IO_PENDING && bytes_read == 0) { |
- error = NotifyFinishedCaching(net::URLRequestStatus::FromError(error), |
- std::string()); |
+ error = NotifyFinishedCaching(error, std::string()); |
} |
return error == net::OK ? bytes_read : error; |
} |
void ServiceWorkerWriteToCacheJob::NotifyStartErrorHelper( |
- const net::URLRequestStatus& status, |
+ net::Error net_error, |
const std::string& status_message) { |
- DCHECK(!status.is_io_pending()); |
- NotifyFinishedCaching(status, status_message); |
- NotifyStartError(status); |
+ NotifyFinishedCaching(net_error, status_message); |
+ NotifyStartError(net::URLRequestStatus::FromError(net_error)); |
} |
net::Error ServiceWorkerWriteToCacheJob::NotifyFinishedCaching( |
- net::URLRequestStatus status, |
+ net::Error net_error, |
const std::string& status_message) { |
- net::Error result = static_cast<net::Error>(status.error()); |
+ DCHECK_NE(net::ERR_IO_PENDING, net_error); |
+ |
if (did_notify_finished_) |
- return result; |
+ return net_error; |
- if (status.status() != net::URLRequestStatus::SUCCESS) { |
+ int size = -1; |
+ if (net_error != net::OK) { |
// AddMessageToConsole must be called before this job notifies that an error |
// occurred because the worker stops soon after receiving the error |
// response. |
version_->embedded_worker()->AddMessageToConsole( |
CONSOLE_MESSAGE_LEVEL_ERROR, |
status_message.empty() ? kFetchScriptError : status_message); |
- } |
- |
- int size = -1; |
- if (status.is_success()) |
+ } else { |
size = cache_writer_->bytes_written(); |
+ } |
// If all the calls to MaybeWriteHeaders/MaybeWriteData succeeded, but the |
// incumbent entry wasn't actually replaced because the new entry was |
// equivalent, the new version didn't actually install because it already |
// exists. |
- if (status.status() == net::URLRequestStatus::SUCCESS && |
- !cache_writer_->did_replace()) { |
- status = net::URLRequestStatus::FromError(kIdenticalScriptError); |
+ if (net_error == net::OK && !cache_writer_->did_replace()) { |
version_->SetStartWorkerStatusCode(SERVICE_WORKER_ERROR_EXISTS); |
- version_->script_cache_map()->NotifyFinishedCaching(url_, size, status, |
- std::string()); |
+ version_->script_cache_map()->NotifyFinishedCaching( |
+ url_, size, kIdenticalScriptError, std::string()); |
} else { |
- version_->script_cache_map()->NotifyFinishedCaching(url_, size, status, |
+ version_->script_cache_map()->NotifyFinishedCaching(url_, size, net_error, |
status_message); |
} |
did_notify_finished_ = true; |
- return result; |
+ return net_error; |
} |
std::unique_ptr<ServiceWorkerResponseReader> |