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

Side by Side Diff: content/browser/appcache/appcache_url_request_job.cc

Issue 1410643007: URLRequestJob: change ReadRawData contract (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move NotifyReadCompleted Created 5 years, 1 month 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/appcache/appcache_url_request_job.h" 5 #include "content/browser/appcache/appcache_url_request_job.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 range_response_info_.reset( 328 range_response_info_.reset(
329 new net::HttpResponseInfo(*info_->http_response_info())); 329 new net::HttpResponseInfo(*info_->http_response_info()));
330 net::HttpResponseHeaders* headers = range_response_info_->headers.get(); 330 net::HttpResponseHeaders* headers = range_response_info_->headers.get();
331 headers->UpdateWithNewRange( 331 headers->UpdateWithNewRange(
332 range_requested_, resource_size, true /* replace status line */); 332 range_requested_, resource_size, true /* replace status line */);
333 } 333 }
334 334
335 void AppCacheURLRequestJob::OnReadComplete(int result) { 335 void AppCacheURLRequestJob::OnReadComplete(int result) {
336 DCHECK(is_delivering_appcache_response()); 336 DCHECK(is_delivering_appcache_response());
337 if (result == 0) { 337 if (result == 0) {
338 NotifyDone(net::URLRequestStatus());
339 AppCacheHistograms::CountResponseRetrieval( 338 AppCacheHistograms::CountResponseRetrieval(
340 true, is_main_resource_, manifest_url_.GetOrigin()); 339 true, is_main_resource_, manifest_url_.GetOrigin());
341 } else if (result < 0) { 340 } else if (result < 0) {
342 if (storage_->service()->storage() == storage_) { 341 if (storage_->service()->storage() == storage_) {
343 storage_->service()->CheckAppCacheResponse(manifest_url_, cache_id_, 342 storage_->service()->CheckAppCacheResponse(manifest_url_, cache_id_,
344 entry_.response_id()); 343 entry_.response_id());
345 } 344 }
346 NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, result));
347 AppCacheHistograms::CountResponseRetrieval( 345 AppCacheHistograms::CountResponseRetrieval(
348 false, is_main_resource_, manifest_url_.GetOrigin()); 346 false, is_main_resource_, manifest_url_.GetOrigin());
349 } else {
350 SetStatus(net::URLRequestStatus()); // Clear the IO_PENDING status
351 } 347 }
352 NotifyReadComplete(result); 348 ReadRawDataComplete(result);
353 } 349 }
354 350
355 // net::URLRequestJob overrides ------------------------------------------------ 351 // net::URLRequestJob overrides ------------------------------------------------
356 352
357 void AppCacheURLRequestJob::Start() { 353 void AppCacheURLRequestJob::Start() {
358 DCHECK(!has_been_started()); 354 DCHECK(!has_been_started());
359 has_been_started_ = true; 355 has_been_started_ = true;
360 start_time_tick_ = base::TimeTicks::Now(); 356 start_time_tick_ = base::TimeTicks::Now();
361 MaybeBeginDelivery(); 357 MaybeBeginDelivery();
362 } 358 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 return; 407 return;
412 *info = *http_info(); 408 *info = *http_info();
413 } 409 }
414 410
415 int AppCacheURLRequestJob::GetResponseCode() const { 411 int AppCacheURLRequestJob::GetResponseCode() const {
416 if (!http_info()) 412 if (!http_info())
417 return -1; 413 return -1;
418 return http_info()->headers->response_code(); 414 return http_info()->headers->response_code();
419 } 415 }
420 416
421 bool AppCacheURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size, 417 int AppCacheURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) {
422 int *bytes_read) {
423 DCHECK(is_delivering_appcache_response()); 418 DCHECK(is_delivering_appcache_response());
424 DCHECK_NE(buf_size, 0); 419 DCHECK_NE(buf_size, 0);
425 DCHECK(bytes_read);
426 DCHECK(!reader_->IsReadPending()); 420 DCHECK(!reader_->IsReadPending());
427 reader_->ReadData( 421 reader_->ReadData(buf, buf_size,
428 buf, buf_size, base::Bind(&AppCacheURLRequestJob::OnReadComplete, 422 base::Bind(&AppCacheURLRequestJob::OnReadComplete,
429 base::Unretained(this))); 423 base::Unretained(this)));
430 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); 424 return net::ERR_IO_PENDING;
431 return false;
432 } 425 }
433 426
434 void AppCacheURLRequestJob::SetExtraRequestHeaders( 427 void AppCacheURLRequestJob::SetExtraRequestHeaders(
435 const net::HttpRequestHeaders& headers) { 428 const net::HttpRequestHeaders& headers) {
436 std::string value; 429 std::string value;
437 std::vector<net::HttpByteRange> ranges; 430 std::vector<net::HttpByteRange> ranges;
438 if (!headers.GetHeader(net::HttpRequestHeaders::kRange, &value) || 431 if (!headers.GetHeader(net::HttpRequestHeaders::kRange, &value) ||
439 !net::HttpUtil::ParseRangeHeader(value, &ranges)) { 432 !net::HttpUtil::ParseRangeHeader(value, &ranges)) {
440 return; 433 return;
441 } 434 }
442 435
443 // If multiple ranges are requested, we play dumb and 436 // If multiple ranges are requested, we play dumb and
444 // return the entire response with 200 OK. 437 // return the entire response with 200 OK.
445 if (ranges.size() == 1U) 438 if (ranges.size() == 1U)
446 range_requested_ = ranges[0]; 439 range_requested_ = ranges[0];
447 } 440 }
448 441
449 } // namespace content 442 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698