| 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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 end_time_(end_time), | 142 end_time_(end_time), |
| 143 delegate_(delegate), | 143 delegate_(delegate), |
| 144 is_paused_(false), | 144 is_paused_(false), |
| 145 auto_resume_count_(0), | 145 auto_resume_count_(0), |
| 146 open_when_complete_(false), | 146 open_when_complete_(false), |
| 147 file_externally_removed_(false), | 147 file_externally_removed_(false), |
| 148 auto_opened_(false), | 148 auto_opened_(false), |
| 149 is_temporary_(false), | 149 is_temporary_(false), |
| 150 all_data_saved_(false), | 150 all_data_saved_(false), |
| 151 opened_(opened), | 151 opened_(opened), |
| 152 open_enabled_(true), | |
| 153 delegate_delayed_complete_(false), | 152 delegate_delayed_complete_(false), |
| 154 bound_net_log_(bound_net_log), | 153 bound_net_log_(bound_net_log), |
| 155 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 154 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 156 delegate_->Attach(); | 155 delegate_->Attach(); |
| 157 if (state_ == IN_PROGRESS_INTERNAL) | 156 if (state_ == IN_PROGRESS_INTERNAL) |
| 158 state_ = CANCELLED_INTERNAL; | 157 state_ = CANCELLED_INTERNAL; |
| 159 if (state_ == COMPLETE_INTERNAL) | 158 if (state_ == COMPLETE_INTERNAL) |
| 160 all_data_saved_ = true; | 159 all_data_saved_ = true; |
| 161 Init(false /* not actively downloading */, SRC_HISTORY_IMPORT); | 160 Init(false /* not actively downloading */, SRC_HISTORY_IMPORT); |
| 162 } | 161 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 191 start_time_(info.start_time), | 190 start_time_(info.start_time), |
| 192 delegate_(delegate), | 191 delegate_(delegate), |
| 193 is_paused_(false), | 192 is_paused_(false), |
| 194 auto_resume_count_(0), | 193 auto_resume_count_(0), |
| 195 open_when_complete_(false), | 194 open_when_complete_(false), |
| 196 file_externally_removed_(false), | 195 file_externally_removed_(false), |
| 197 auto_opened_(false), | 196 auto_opened_(false), |
| 198 is_temporary_(!info.save_info->file_path.empty()), | 197 is_temporary_(!info.save_info->file_path.empty()), |
| 199 all_data_saved_(false), | 198 all_data_saved_(false), |
| 200 opened_(false), | 199 opened_(false), |
| 201 open_enabled_(true), | |
| 202 delegate_delayed_complete_(false), | 200 delegate_delayed_complete_(false), |
| 203 bound_net_log_(bound_net_log), | 201 bound_net_log_(bound_net_log), |
| 204 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 202 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 205 delegate_->Attach(); | 203 delegate_->Attach(); |
| 206 Init(true /* actively downloading */, SRC_ACTIVE_DOWNLOAD); | 204 Init(true /* actively downloading */, SRC_ACTIVE_DOWNLOAD); |
| 207 | 205 |
| 208 // Link the event sources. | 206 // Link the event sources. |
| 209 bound_net_log_.AddEvent( | 207 bound_net_log_.AddEvent( |
| 210 net::NetLog::TYPE_DOWNLOAD_URL_REQUEST, | 208 net::NetLog::TYPE_DOWNLOAD_URL_REQUEST, |
| 211 info.request_bound_net_log.source().ToEventParametersCallback()); | 209 info.request_bound_net_log.source().ToEventParametersCallback()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 start_time_(base::Time::Now()), | 242 start_time_(base::Time::Now()), |
| 245 delegate_(delegate), | 243 delegate_(delegate), |
| 246 is_paused_(false), | 244 is_paused_(false), |
| 247 auto_resume_count_(0), | 245 auto_resume_count_(0), |
| 248 open_when_complete_(false), | 246 open_when_complete_(false), |
| 249 file_externally_removed_(false), | 247 file_externally_removed_(false), |
| 250 auto_opened_(false), | 248 auto_opened_(false), |
| 251 is_temporary_(false), | 249 is_temporary_(false), |
| 252 all_data_saved_(false), | 250 all_data_saved_(false), |
| 253 opened_(false), | 251 opened_(false), |
| 254 open_enabled_(true), | |
| 255 delegate_delayed_complete_(false), | 252 delegate_delayed_complete_(false), |
| 256 bound_net_log_(bound_net_log), | 253 bound_net_log_(bound_net_log), |
| 257 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 254 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| 258 delegate_->Attach(); | 255 delegate_->Attach(); |
| 259 Init(true /* actively downloading */, SRC_SAVE_PAGE_AS); | 256 Init(true /* actively downloading */, SRC_SAVE_PAGE_AS); |
| 260 } | 257 } |
| 261 | 258 |
| 262 DownloadItemImpl::~DownloadItemImpl() { | 259 DownloadItemImpl::~DownloadItemImpl() { |
| 263 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 260 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 264 | 261 |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 return; | 427 return; |
| 431 | 428 |
| 432 // Ideally, we want to detect errors in opening and report them, but we | 429 // Ideally, we want to detect errors in opening and report them, but we |
| 433 // don't generally have the proper interface for that to the external | 430 // don't generally have the proper interface for that to the external |
| 434 // program that opens the file. So instead we spawn a check to update | 431 // program that opens the file. So instead we spawn a check to update |
| 435 // the UI if the file has been deleted in parallel with the open. | 432 // the UI if the file has been deleted in parallel with the open. |
| 436 delegate_->CheckForFileRemoval(this); | 433 delegate_->CheckForFileRemoval(this); |
| 437 RecordOpen(GetEndTime(), !GetOpened()); | 434 RecordOpen(GetEndTime(), !GetOpened()); |
| 438 opened_ = true; | 435 opened_ = true; |
| 439 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadOpened(this)); | 436 FOR_EACH_OBSERVER(Observer, observers_, OnDownloadOpened(this)); |
| 440 delegate_->DownloadOpened(this); | 437 delegate_->OpenDownload(this); |
| 441 | |
| 442 // For testing: If download opening is disabled on this item, | |
| 443 // make the rest of the routine a no-op. | |
| 444 if (!open_enabled_) | |
| 445 return; | |
| 446 | |
| 447 GetContentClient()->browser()->OpenItem(GetFullPath()); | |
| 448 } | 438 } |
| 449 | 439 |
| 450 void DownloadItemImpl::ShowDownloadInShell() { | 440 void DownloadItemImpl::ShowDownloadInShell() { |
| 451 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 441 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 452 | 442 |
| 453 GetContentClient()->browser()->ShowItemInFolder(GetFullPath()); | 443 delegate_->ShowDownloadInShell(this); |
| 454 } | 444 } |
| 455 | 445 |
| 456 int32 DownloadItemImpl::GetId() const { | 446 int32 DownloadItemImpl::GetId() const { |
| 457 return download_id_.local(); | 447 return download_id_.local(); |
| 458 } | 448 } |
| 459 | 449 |
| 460 DownloadId DownloadItemImpl::GetGlobalId() const { | 450 DownloadId DownloadItemImpl::GetGlobalId() const { |
| 461 return download_id_; | 451 return download_id_; |
| 462 } | 452 } |
| 463 | 453 |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 GetTargetFilePath().value().c_str()); | 780 GetTargetFilePath().value().c_str()); |
| 791 } else { | 781 } else { |
| 792 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); | 782 description += base::StringPrintf(" url = \"%s\"", url_list.c_str()); |
| 793 } | 783 } |
| 794 | 784 |
| 795 description += " }"; | 785 description += " }"; |
| 796 | 786 |
| 797 return description; | 787 return description; |
| 798 } | 788 } |
| 799 | 789 |
| 800 void DownloadItemImpl::MockDownloadOpenForTesting() { | |
| 801 open_enabled_ = false; | |
| 802 } | |
| 803 | |
| 804 DownloadItemImpl::ResumeMode DownloadItemImpl::GetResumeMode() const { | 790 DownloadItemImpl::ResumeMode DownloadItemImpl::GetResumeMode() const { |
| 805 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 791 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 806 if (!IsInterrupted()) | 792 if (!IsInterrupted()) |
| 807 return RESUME_MODE_INVALID; | 793 return RESUME_MODE_INVALID; |
| 808 | 794 |
| 809 // We can't continue without a handle on the intermediate file. | 795 // We can't continue without a handle on the intermediate file. |
| 810 const bool force_restart = current_path_.empty(); | 796 const bool force_restart = current_path_.empty(); |
| 811 | 797 |
| 812 // We won't auto-restart if we've used up our attempts or the | 798 // We won't auto-restart if we've used up our attempts or the |
| 813 // download has been paused by user action. | 799 // download has been paused by user action. |
| (...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1640 case RESUME_MODE_USER_CONTINUE: | 1626 case RESUME_MODE_USER_CONTINUE: |
| 1641 return "USER_CONTINUE"; | 1627 return "USER_CONTINUE"; |
| 1642 case RESUME_MODE_USER_RESTART: | 1628 case RESUME_MODE_USER_RESTART: |
| 1643 return "USER_RESTART"; | 1629 return "USER_RESTART"; |
| 1644 } | 1630 } |
| 1645 NOTREACHED() << "Unknown resume mode " << mode; | 1631 NOTREACHED() << "Unknown resume mode " << mode; |
| 1646 return "unknown"; | 1632 return "unknown"; |
| 1647 } | 1633 } |
| 1648 | 1634 |
| 1649 } // namespace content | 1635 } // namespace content |
| OLD | NEW |