Index: net/url_request/sdch_dictionary_fetcher.cc |
diff --git a/net/url_request/sdch_dictionary_fetcher.cc b/net/url_request/sdch_dictionary_fetcher.cc |
index 8d90f5f0ea2c433697b65cb4b860c757ff0ef5eb..70cf01b9b0a1b7ed6bc5f851cec0762dddafa3dc 100644 |
--- a/net/url_request/sdch_dictionary_fetcher.cc |
+++ b/net/url_request/sdch_dictionary_fetcher.cc |
@@ -32,8 +32,10 @@ const int kBufferSize = 4096; |
// Map the bytes_read result from a read attempt and a URLRequest's |
// status into a single net return value. |
int GetReadResult(int bytes_read, const URLRequest* request) { |
- int rv = request->status().error(); |
- if (request->status().is_success() && bytes_read < 0) { |
+ DCHECK_NE(ERR_IO_PENDING, bytes_read); |
+ |
+ int rv = bytes_read; |
+ if (rv < 0) { |
rv = ERR_FAILED; |
request->net_log().AddEventWithNetErrorCode( |
NetLog::TYPE_SDCH_DICTIONARY_FETCH_IMPLIED_ERROR, rv); |
@@ -155,28 +157,29 @@ void SdchDictionaryFetcher::OnReceivedRedirect( |
DoLoop(OK); |
} |
-void SdchDictionaryFetcher::OnResponseStarted(URLRequest* request) { |
+void SdchDictionaryFetcher::OnResponseStarted(URLRequest* request, |
+ int net_error) { |
DCHECK(CalledOnValidThread()); |
DCHECK_EQ(request, current_request_.get()); |
DCHECK_EQ(next_state_, STATE_SEND_REQUEST_PENDING); |
DCHECK(!in_loop_); |
+ DCHECK_NE(ERR_IO_PENDING, net_error); |
// Confirm that the response isn't a stale read from the cache (as |
// may happen in the reload case). If the response was not retrieved over |
// HTTP, it is presumed to be fresh. |
HttpResponseHeaders* response_headers = request->response_headers(); |
- int result = request->status().error(); |
- if (result == OK && response_headers) { |
+ if (net_error == OK && response_headers) { |
ValidationType validation_type = response_headers->RequiresValidation( |
request->response_info().request_time, |
request->response_info().response_time, base::Time::Now()); |
// TODO(rdsmith): Maybe handle VALIDATION_ASYNCHRONOUS by queueing |
// a non-reload request for the dictionary. |
if (validation_type != VALIDATION_NONE) |
- result = ERR_FAILED; |
+ net_error = ERR_FAILED; |
} |
- DoLoop(result); |
+ DoLoop(net_error); |
} |
void SdchDictionaryFetcher::OnReadCompleted(URLRequest* request, |
@@ -185,6 +188,7 @@ void SdchDictionaryFetcher::OnReadCompleted(URLRequest* request, |
DCHECK_EQ(request, current_request_.get()); |
DCHECK_EQ(next_state_, STATE_READ_BODY_COMPLETE); |
DCHECK(!in_loop_); |
+ DCHECK_NE(ERR_IO_PENDING, bytes_read); |
DoLoop(GetReadResult(bytes_read, current_request_.get())); |
} |
@@ -329,9 +333,8 @@ int SdchDictionaryFetcher::DoReadBody(int rv) { |
} |
next_state_ = STATE_READ_BODY_COMPLETE; |
- int bytes_read = 0; |
- current_request_->Read(buffer_.get(), kBufferSize, &bytes_read); |
- if (current_request_->status().is_io_pending()) |
+ int bytes_read = current_request_->Read(buffer_.get(), kBufferSize); |
+ if (bytes_read == ERR_IO_PENDING) |
return ERR_IO_PENDING; |
return GetReadResult(bytes_read, current_request_.get()); |
@@ -347,7 +350,7 @@ int SdchDictionaryFetcher::DoReadBodyComplete(int rv) { |
return OK; |
} |
- DCHECK(current_request_->status().is_success()); |
+ DCHECK_GE(rv, 0); |
// Data; append to the dictionary and look for more data. |
if (rv > 0) { |