| Index: chrome/browser/predictors/resource_prefetcher.cc
|
| diff --git a/chrome/browser/predictors/resource_prefetcher.cc b/chrome/browser/predictors/resource_prefetcher.cc
|
| index 422e67183b7ace968d1485b308a170f613d71b39..a428c4fe0dc6d9e1dc120d77a52600d57ba294f9 100644
|
| --- a/chrome/browser/predictors/resource_prefetcher.cc
|
| +++ b/chrome/browser/predictors/resource_prefetcher.cc
|
| @@ -22,6 +22,7 @@ static const size_t kResourceBufferSizeBytes = 50000;
|
| } // namespace
|
|
|
| namespace predictors {
|
| +
|
| ResourcePrefetcher::ResourcePrefetcher(
|
| Delegate* delegate,
|
| const ResourcePrefetchPredictorConfig& config,
|
| @@ -142,14 +143,13 @@ void ResourcePrefetcher::ReadFullResponse(net::URLRequest* request) {
|
| int bytes_read = 0;
|
| scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(
|
| kResourceBufferSizeBytes));
|
| - status = request->Read(buffer.get(), kResourceBufferSizeBytes, &bytes_read);
|
| -
|
| - if (status) {
|
| - status = ShouldContinueReadingRequest(request, bytes_read);
|
| - } else if (!request->status().is_success()) {
|
| + bytes_read = request->Read(buffer.get(), kResourceBufferSizeBytes);
|
| + if (bytes_read < 0) {
|
| FinishRequest(request);
|
| return;
|
| }
|
| +
|
| + status = ShouldContinueReadingRequest(request, bytes_read);
|
| }
|
| }
|
|
|
| @@ -190,17 +190,24 @@ void ResourcePrefetcher::OnSSLCertificateError(net::URLRequest* request,
|
| FinishRequest(request);
|
| }
|
|
|
| -void ResourcePrefetcher::OnResponseStarted(net::URLRequest* request) {
|
| - // TODO(shishir): Do not read cached entries, or ones that are not cacheable.
|
| - if (request->status().is_success())
|
| - ReadFullResponse(request);
|
| - else
|
| +void ResourcePrefetcher::OnResponseStarted(net::URLRequest* request,
|
| + int net_error) {
|
| + DCHECK_NE(net::ERR_IO_PENDING, net_error);
|
| +
|
| + if (net_error != net::OK) {
|
| FinishRequest(request);
|
| + return;
|
| + }
|
| +
|
| + // TODO(shishir): Do not read cached entries, or ones that are not cacheable.
|
| + ReadFullResponse(request);
|
| }
|
|
|
| void ResourcePrefetcher::OnReadCompleted(net::URLRequest* request,
|
| int bytes_read) {
|
| - if (!request->status().is_success()) {
|
| + DCHECK_NE(net::ERR_IO_PENDING, bytes_read);
|
| +
|
| + if (bytes_read < 0) {
|
| FinishRequest(request);
|
| return;
|
| }
|
|
|