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..fd8cfa38e4b39d4657396a37a722a2ed001ad5ae 100644 |
| --- a/chrome/browser/predictors/resource_prefetcher.cc |
| +++ b/chrome/browser/predictors/resource_prefetcher.cc |
| @@ -169,21 +169,29 @@ 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 04:31:04
This is an interesting point. The issue is that on
Shishir
2013/01/04 19:52:32
Done.
|
| + FinishRequest(request, Request::PREFETCH_STATUS_FAILED); |
| + return; |
| } |
| + |
| + if (status) |
| + status = ShouldContinueReadingRequest(request, bytes_read); |
| } |
| } |
| +bool ResourcePrefetcher::ShouldContinueReadingRequest(net::URLRequest* request, |
| + int bytes_read) { |
| + if (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 false; |
| + } |
| + |
| + return true; |
| +} |
| + |
| void ResourcePrefetcher::OnReceivedRedirect(net::URLRequest* request, |
| const GURL& new_url, |
| bool* defer_redirect) { |
| @@ -213,6 +221,7 @@ void ResourcePrefetcher::OnResponseStarted(net::URLRequest* request) { |
| return; |
| } |
| + // TODO(shishir): Do not read cached entries, or ones that are not cacheable. |
| ReadFullResponse(request); |
| } |
| @@ -223,7 +232,8 @@ void ResourcePrefetcher::OnReadCompleted(net::URLRequest* request, |
| return; |
| } |
| - ReadFullResponse(request); |
| + if (ShouldContinueReadingRequest(request, bytes_read)) |
| + ReadFullResponse(request); |
| } |
| } // namespace predictors |