Chromium Code Reviews| Index: chrome/browser/predictors/resource_prefetcher.cc |
| diff --git a/chrome/browser/predictors/resource_prefetcher.cc b/chrome/browser/predictors/resource_prefetcher.cc |
| index 44b1057c4165839429cda432b446087e27efc25b..1419ffc9561a29026a34d59765d7aaa2a24b11a1 100644 |
| --- a/chrome/browser/predictors/resource_prefetcher.cc |
| +++ b/chrome/browser/predictors/resource_prefetcher.cc |
| @@ -169,17 +169,17 @@ void ResourcePrefetcher::ReadFullResponse(net::URLRequest* request) { |
| kResourceBufferSizeBytes)); |
| status = request->Read(buffer, kResourceBufferSizeBytes, &bytes_read); |
| - if (status) { |
| - if (request->status().error()) { |
| - FinishRequest(request, Request::PREFETCH_STATUS_FAILED); |
| - return; |
| - } else if (bytes_read == 0) { |
| - if (request->was_cached()) |
| - FinishRequest(request, Request::PREFETCH_STATUS_FROM_CACHE); |
| - else |
| - FinishRequest(request, Request::PREFETCH_STATUS_FROM_NETWORK); |
| - return; |
| - } |
| + if (request->status().error()) { |
|
rvargas (doing something else)
2013/01/04 02:02:40
The contract is not to inspect status() regardless
Shishir
2013/01/04 02:21:14
From the comment on the Read function:
// If a rea
|
| + FinishRequest(request, Request::PREFETCH_STATUS_FAILED); |
| + return; |
| + } |
| + |
| + if (status && bytes_read == 0) { // When bytes_read == 0, no more data. |
| + if (request->was_cached()) |
| + FinishRequest(request, Request::PREFETCH_STATUS_FROM_CACHE); |
| + else |
| + FinishRequest(request, Request::PREFETCH_STATUS_FROM_NETWORK); |
| + return; |
| } |
| } |
| } |
| @@ -223,6 +223,15 @@ void ResourcePrefetcher::OnReadCompleted(net::URLRequest* request, |
| return; |
| } |
| + // If the bytes_read is == 0, there is no more data to read. |
| + if (bytes_read == 0) { |
| + if (request->was_cached()) |
| + FinishRequest(request, Request::PREFETCH_STATUS_FROM_CACHE); |
| + else |
| + FinishRequest(request, Request::PREFETCH_STATUS_FROM_NETWORK); |
| + return; |
| + } |
| + |
| ReadFullResponse(request); |
| } |