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 |