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..8471b193c87a7133e837baf0f1f9ef0fb385ae9c 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,11 +143,10 @@ 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) { |
+ bytes_read = request->Read(buffer.get(), kResourceBufferSizeBytes); |
+ if (bytes_read >= 0) { |
status = ShouldContinueReadingRequest(request, bytes_read); |
- } else if (!request->status().is_success()) { |
+ } else if (bytes_read != net::ERR_IO_PENDING) { |
pasko
2016/10/04 11:18:42
So if we get net::ERR_IO_PENDING, this will turn i
maksims (do not use this acc)
2016/10/04 11:51:35
Basically, previous implementation has this error
pasko
2016/10/04 12:14:16
I noticed you fixed it. Thank you!
Feel free to r
|
FinishRequest(request); |
return; |
} |
@@ -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; |
} |