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

Side by Side Diff: net/http/partial_data.cc

Issue 187583002: Cleanup: have common HttpResponseHeaders routine to update with range (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
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 "net/http/partial_data.h" 5 #include "net/http/partial_data.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 } 375 }
376 376
377 // We are making multiple requests to complete the range requested by the user. 377 // We are making multiple requests to complete the range requested by the user.
378 // Just assume that everything is fine and say that we are returning what was 378 // Just assume that everything is fine and say that we are returning what was
379 // requested. 379 // requested.
380 void PartialData::FixResponseHeaders(HttpResponseHeaders* headers, 380 void PartialData::FixResponseHeaders(HttpResponseHeaders* headers,
381 bool success) { 381 bool success) {
382 if (truncated_) 382 if (truncated_)
383 return; 383 return;
384 384
385 if (byte_range_.IsValid() && success) {
386 HttpUtil::UpdateResponseHeadersWithRange(
387 byte_range_, resource_size_, !sparse_entry_, headers);
388 return;
389 }
390
385 headers->RemoveHeader(kLengthHeader); 391 headers->RemoveHeader(kLengthHeader);
386 headers->RemoveHeader(kRangeHeader); 392 headers->RemoveHeader(kRangeHeader);
387 393
388 int64 range_len, start, end; 394 // success==false cases.
rvargas (doing something else) 2014/03/05 19:47:33 nit: remove comment
kinuko 2014/03/06 04:11:29 Done.
389 if (byte_range_.IsValid()) { 395 if (byte_range_.IsValid()) {
390 if (success) { 396 headers->ReplaceStatusLine("HTTP/1.1 416 Requested Range Not Satisfiable");
391 if (!sparse_entry_) 397 headers->AddHeader(base::StringPrintf("%s: bytes 0-0/%" PRId64,
392 headers->ReplaceStatusLine("HTTP/1.1 206 Partial Content"); 398 kRangeHeader, resource_size_));
393 399 headers->AddHeader(base::StringPrintf("%s: 0", kLengthHeader));
394 DCHECK(byte_range_.HasFirstBytePosition());
395 DCHECK(byte_range_.HasLastBytePosition());
396 start = byte_range_.first_byte_position();
397 end = byte_range_.last_byte_position();
398 range_len = end - start + 1;
399 } else {
400 headers->ReplaceStatusLine(
401 "HTTP/1.1 416 Requested Range Not Satisfiable");
402 start = 0;
403 end = 0;
404 range_len = 0;
405 }
406
407 headers->AddHeader(
408 base::StringPrintf("%s: bytes %" PRId64 "-%" PRId64 "/%" PRId64,
409 kRangeHeader, start, end, resource_size_));
410 } else { 400 } else {
411 // TODO(rvargas): Is it safe to change the protocol version? 401 // TODO(rvargas): Is it safe to change the protocol version?
412 headers->ReplaceStatusLine("HTTP/1.1 200 OK"); 402 headers->ReplaceStatusLine("HTTP/1.1 200 OK");
413 DCHECK_NE(resource_size_, 0); 403 DCHECK_NE(resource_size_, 0);
414 range_len = resource_size_; 404 headers->AddHeader(base::StringPrintf("%s: %" PRId64, kLengthHeader,
405 resource_size_));
415 } 406 }
416
417 headers->AddHeader(base::StringPrintf("%s: %" PRId64, kLengthHeader,
418 range_len));
419 } 407 }
420 408
421 void PartialData::FixContentLength(HttpResponseHeaders* headers) { 409 void PartialData::FixContentLength(HttpResponseHeaders* headers) {
422 headers->RemoveHeader(kLengthHeader); 410 headers->RemoveHeader(kLengthHeader);
423 headers->AddHeader(base::StringPrintf("%s: %" PRId64, kLengthHeader, 411 headers->AddHeader(base::StringPrintf("%s: %" PRId64, kLengthHeader,
424 resource_size_)); 412 resource_size_));
425 } 413 }
426 414
427 int PartialData::CacheRead( 415 int PartialData::CacheRead(
428 disk_cache::Entry* entry, IOBuffer* data, int data_len, 416 disk_cache::Entry* entry, IOBuffer* data, int data_len,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 cached_min_len_ = result; 481 cached_min_len_ = result;
494 if (result >= 0) 482 if (result >= 0)
495 result = 1; // Return success, go ahead and validate the entry. 483 result = 1; // Return success, go ahead and validate the entry.
496 484
497 CompletionCallback cb = callback_; 485 CompletionCallback cb = callback_;
498 callback_.Reset(); 486 callback_.Reset();
499 cb.Run(result); 487 cb.Run(result);
500 } 488 }
501 489
502 } // namespace net 490 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698