| OLD | NEW |
| 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 // File method ordering: Methods in this file are in the same order as | 5 // File method ordering: Methods in this file are in the same order as |
| 6 // in download_item_impl.h, with the following exception: The public | 6 // in download_item_impl.h, with the following exception: The public |
| 7 // interface Start is placed in chronological order with the other | 7 // interface Start is placed in chronological order with the other |
| 8 // (private) routines that together define a DownloadItem's state | 8 // (private) routines that together define a DownloadItem's state |
| 9 // transitions as the download progresses. See "Download progression | 9 // transitions as the download progresses. See "Download progression |
| 10 // cascade" later in this file. | 10 // cascade" later in this file. |
| (...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 | 467 |
| 468 bool DownloadItemImpl::IsInterrupted() const { | 468 bool DownloadItemImpl::IsInterrupted() const { |
| 469 return InternalToExternalState(state_) == INTERRUPTED; | 469 return InternalToExternalState(state_) == INTERRUPTED; |
| 470 } | 470 } |
| 471 | 471 |
| 472 bool DownloadItemImpl::IsComplete() const { | 472 bool DownloadItemImpl::IsComplete() const { |
| 473 return InternalToExternalState(state_) == COMPLETE; | 473 return InternalToExternalState(state_) == COMPLETE; |
| 474 } | 474 } |
| 475 | 475 |
| 476 const GURL& DownloadItemImpl::GetURL() const { | 476 const GURL& DownloadItemImpl::GetURL() const { |
| 477 return url_chain_.empty() ? | 477 return url_chain_.empty() ? GURL::EmptyGURL() : url_chain_.back(); |
| 478 GURL::EmptyGURL() : url_chain_.back(); | |
| 479 } | 478 } |
| 480 | 479 |
| 481 const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const { | 480 const std::vector<GURL>& DownloadItemImpl::GetUrlChain() const { |
| 482 return url_chain_; | 481 return url_chain_; |
| 483 } | 482 } |
| 484 | 483 |
| 485 const GURL& DownloadItemImpl::GetOriginalUrl() const { | 484 const GURL& DownloadItemImpl::GetOriginalUrl() const { |
| 486 return url_chain_.front(); | 485 // Be careful about taking the front() of possibly-empty vectors! |
| 486 // http://crbug.com/190096 |
| 487 return url_chain_.empty() ? GURL::EmptyGURL() : url_chain_.front(); |
| 487 } | 488 } |
| 488 | 489 |
| 489 const GURL& DownloadItemImpl::GetReferrerUrl() const { | 490 const GURL& DownloadItemImpl::GetReferrerUrl() const { |
| 490 return referrer_url_; | 491 return referrer_url_; |
| 491 } | 492 } |
| 492 | 493 |
| 493 std::string DownloadItemImpl::GetSuggestedFilename() const { | 494 std::string DownloadItemImpl::GetSuggestedFilename() const { |
| 494 return suggested_filename_; | 495 return suggested_filename_; |
| 495 } | 496 } |
| 496 | 497 |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 714 base::StringPrintf("{ id = %d" | 715 base::StringPrintf("{ id = %d" |
| 715 " state = %s", | 716 " state = %s", |
| 716 download_id_.local(), | 717 download_id_.local(), |
| 717 DebugDownloadStateString(state_)); | 718 DebugDownloadStateString(state_)); |
| 718 | 719 |
| 719 // Construct a string of the URL chain. | 720 // Construct a string of the URL chain. |
| 720 std::string url_list("<none>"); | 721 std::string url_list("<none>"); |
| 721 if (!url_chain_.empty()) { | 722 if (!url_chain_.empty()) { |
| 722 std::vector<GURL>::const_iterator iter = url_chain_.begin(); | 723 std::vector<GURL>::const_iterator iter = url_chain_.begin(); |
| 723 std::vector<GURL>::const_iterator last = url_chain_.end(); | 724 std::vector<GURL>::const_iterator last = url_chain_.end(); |
| 724 url_list = (*iter).spec(); | 725 url_list = (*iter).is_valid() ? (*iter).spec() : "<invalid>"; |
| 725 ++iter; | 726 ++iter; |
| 726 for ( ; verbose && (iter != last); ++iter) { | 727 for ( ; verbose && (iter != last); ++iter) { |
| 727 url_list += " ->\n\t"; | 728 url_list += " ->\n\t"; |
| 728 const GURL& next_url = *iter; | 729 const GURL& next_url = *iter; |
| 729 url_list += next_url.spec(); | 730 url_list += next_url.is_valid() ? next_url.spec() : "<invalid>"; |
| 730 } | 731 } |
| 731 } | 732 } |
| 732 | 733 |
| 733 if (verbose) { | 734 if (verbose) { |
| 734 description += base::StringPrintf( | 735 description += base::StringPrintf( |
| 735 " total = %" PRId64 | 736 " total = %" PRId64 |
| 736 " received = %" PRId64 | 737 " received = %" PRId64 |
| 737 " reason = %s" | 738 " reason = %s" |
| 738 " paused = %c" | 739 " paused = %c" |
| 739 " resume_mode = %s" | 740 " resume_mode = %s" |
| (...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1608 case RESUME_MODE_USER_CONTINUE: | 1609 case RESUME_MODE_USER_CONTINUE: |
| 1609 return "USER_CONTINUE"; | 1610 return "USER_CONTINUE"; |
| 1610 case RESUME_MODE_USER_RESTART: | 1611 case RESUME_MODE_USER_RESTART: |
| 1611 return "USER_RESTART"; | 1612 return "USER_RESTART"; |
| 1612 } | 1613 } |
| 1613 NOTREACHED() << "Unknown resume mode " << mode; | 1614 NOTREACHED() << "Unknown resume mode " << mode; |
| 1614 return "unknown"; | 1615 return "unknown"; |
| 1615 } | 1616 } |
| 1616 | 1617 |
| 1617 } // namespace content | 1618 } // namespace content |
| OLD | NEW |