Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Side by Side Diff: chrome/browser/predictors/resource_prefetcher.cc

Issue 2188253002: predictors: Don't cancel the request when IO is pending. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/predictors/resource_prefetcher.h" 5 #include "chrome/browser/predictors/resource_prefetcher.h"
6 6
7 #include <iterator> 7 #include <iterator>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 void ResourcePrefetcher::ReadFullResponse(net::URLRequest* request) { 170 void ResourcePrefetcher::ReadFullResponse(net::URLRequest* request) {
171 bool status = true; 171 bool status = true;
172 while (status) { 172 while (status) {
173 int bytes_read = 0; 173 int bytes_read = 0;
174 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer( 174 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(
175 kResourceBufferSizeBytes)); 175 kResourceBufferSizeBytes));
176 status = request->Read(buffer.get(), kResourceBufferSizeBytes, &bytes_read); 176 status = request->Read(buffer.get(), kResourceBufferSizeBytes, &bytes_read);
177 177
178 if (status) { 178 if (status) {
179 status = ShouldContinueReadingRequest(request, bytes_read); 179 status = ShouldContinueReadingRequest(request, bytes_read);
180 } else if (request->status().error()) { 180 } else if (!request->status().is_success()) {
pasko 2016/07/29 09:35:29 I could be missing something .. but will this not
pasko 2016/07/29 09:40:42 oh, my reading was wrong, the status is actually f
181 FinishRequest(request, Request::PREFETCH_STATUS_FAILED); 181 FinishRequest(request, Request::PREFETCH_STATUS_FAILED);
182 return; 182 return;
183 } 183 }
184 } 184 }
185 } 185 }
186 186
187 bool ResourcePrefetcher::ShouldContinueReadingRequest(net::URLRequest* request, 187 bool ResourcePrefetcher::ShouldContinueReadingRequest(net::URLRequest* request,
188 int bytes_read) { 188 int bytes_read) {
189 if (bytes_read == 0) { // When bytes_read == 0, no more data. 189 if (bytes_read == 0) { // When bytes_read == 0, no more data.
190 if (request->was_cached()) 190 if (request->was_cached())
(...skipping 24 matching lines...) Expand all
215 FinishRequest(request, Request::PREFETCH_STATUS_CERT_REQUIRED); 215 FinishRequest(request, Request::PREFETCH_STATUS_CERT_REQUIRED);
216 } 216 }
217 217
218 void ResourcePrefetcher::OnSSLCertificateError(net::URLRequest* request, 218 void ResourcePrefetcher::OnSSLCertificateError(net::URLRequest* request,
219 const net::SSLInfo& ssl_info, 219 const net::SSLInfo& ssl_info,
220 bool fatal) { 220 bool fatal) {
221 FinishRequest(request, Request::PREFETCH_STATUS_CERT_ERROR); 221 FinishRequest(request, Request::PREFETCH_STATUS_CERT_ERROR);
222 } 222 }
223 223
224 void ResourcePrefetcher::OnResponseStarted(net::URLRequest* request) { 224 void ResourcePrefetcher::OnResponseStarted(net::URLRequest* request) {
225 if (request->status().error()) { 225 if (!request->status().is_success()) {
226 FinishRequest(request, Request::PREFETCH_STATUS_FAILED); 226 FinishRequest(request, Request::PREFETCH_STATUS_FAILED);
227 return; 227 return;
228 } 228 }
229 229
230 // TODO(shishir): Do not read cached entries, or ones that are not cacheable. 230 // TODO(shishir): Do not read cached entries, or ones that are not cacheable.
231 ReadFullResponse(request); 231 ReadFullResponse(request);
232 } 232 }
233 233
234 void ResourcePrefetcher::OnReadCompleted(net::URLRequest* request, 234 void ResourcePrefetcher::OnReadCompleted(net::URLRequest* request,
235 int bytes_read) { 235 int bytes_read) {
236 if (request->status().error()) { 236 if (!request->status().is_success()) {
237 FinishRequest(request, Request::PREFETCH_STATUS_FAILED); 237 FinishRequest(request, Request::PREFETCH_STATUS_FAILED);
238 return; 238 return;
239 } 239 }
240 240
241 if (ShouldContinueReadingRequest(request, bytes_read)) 241 if (ShouldContinueReadingRequest(request, bytes_read))
242 ReadFullResponse(request); 242 ReadFullResponse(request);
243 } 243 }
244 244
245 } // namespace predictors 245 } // namespace predictors
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698