Chromium Code Reviews| Index: content/browser/download/download_item_impl.cc |
| diff --git a/content/browser/download/download_item_impl.cc b/content/browser/download/download_item_impl.cc |
| index 0a76e98db11d58d0c47ac5b96ad8f7b8342da56c..6610c0f9703bbad5e95639fc8e11dcc7a82f2657 100644 |
| --- a/content/browser/download/download_item_impl.cc |
| +++ b/content/browser/download/download_item_impl.cc |
| @@ -20,7 +20,6 @@ |
| #include "content/browser/download/download_file.h" |
| #include "content/browser/download/download_file_manager.h" |
| #include "content/browser/download/download_id.h" |
| -#include "content/browser/download/download_manager.h" |
| #include "content/browser/download/download_persistent_store_info.h" |
| #include "content/browser/download/download_request_handle.h" |
| #include "content/browser/download/download_stats.h" |
| @@ -28,7 +27,6 @@ |
| #include "content/browser/tab_contents/tab_contents.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/content_browser_client.h" |
| -#include "content/public/browser/download_manager_delegate.h" |
| #include "net/base/net_util.h" |
| using content::BrowserThread; |
| @@ -124,9 +122,10 @@ class NullDownloadRequestHandle : public DownloadRequestHandleInterface { |
| // more negative. |
| // Constructor for reading from the history service. |
| -DownloadItemImpl::DownloadItemImpl(DownloadManager* download_manager, |
| +DownloadItemImpl::DownloadItemImpl(Delegate* delegate, |
| + DownloadId download_id, |
| const DownloadPersistentStoreInfo& info) |
| - : download_id_(download_manager->GetNextId()), |
| + : download_id_(download_id), |
| full_path_(info.path), |
| url_chain_(1, info.url), |
| referrer_url_(info.referrer_url), |
| @@ -137,7 +136,7 @@ DownloadItemImpl::DownloadItemImpl(DownloadManager* download_manager, |
| start_time_(info.start_time), |
| end_time_(info.end_time), |
| db_handle_(info.db_handle), |
| - download_manager_(download_manager), |
| + delegate_(delegate), |
| is_paused_(false), |
| open_when_complete_(false), |
| file_externally_removed_(false), |
| @@ -158,7 +157,7 @@ DownloadItemImpl::DownloadItemImpl(DownloadManager* download_manager, |
| // Constructing for a regular download: |
| DownloadItemImpl::DownloadItemImpl( |
| - DownloadManager* download_manager, |
| + Delegate* delegate, |
| const DownloadCreateInfo& info, |
| DownloadRequestHandleInterface* request_handle, |
| bool is_otr) |
| @@ -183,7 +182,7 @@ DownloadItemImpl::DownloadItemImpl( |
| state_(IN_PROGRESS), |
| start_time_(info.start_time), |
| db_handle_(DownloadItem::kUninitializedHandle), |
| - download_manager_(download_manager), |
| + delegate_(delegate), |
| is_paused_(false), |
| open_when_complete_(false), |
| file_externally_removed_(false), |
| @@ -199,7 +198,7 @@ DownloadItemImpl::DownloadItemImpl( |
| } |
| // Constructing for the "Save Page As..." feature: |
| -DownloadItemImpl::DownloadItemImpl(DownloadManager* download_manager, |
| +DownloadItemImpl::DownloadItemImpl(Delegate* delegate, |
| const FilePath& path, |
| const GURL& url, |
| bool is_otr, |
| @@ -216,7 +215,7 @@ DownloadItemImpl::DownloadItemImpl(DownloadManager* download_manager, |
| state_(IN_PROGRESS), |
| start_time_(base::Time::Now()), |
| db_handle_(DownloadItem::kUninitializedHandle), |
| - download_manager_(download_manager), |
| + delegate_(delegate), |
| is_paused_(false), |
| open_when_complete_(false), |
| file_externally_removed_(false), |
| @@ -236,7 +235,7 @@ DownloadItemImpl::~DownloadItemImpl() { |
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| TransitionTo(REMOVING); |
| - download_manager_->AssertQueueStateConsistent(this); |
| + delegate_->AssertStateConsistent(this); |
| } |
| void DownloadItemImpl::AddObserver(Observer* observer) { |
| @@ -269,7 +268,7 @@ bool DownloadItemImpl::CanOpenDownload() { |
| } |
| bool DownloadItemImpl::ShouldOpenFileBasedOnExtension() { |
| - return download_manager_->delegate()->ShouldOpenFileBasedOnExtension( |
| + return delegate_->ShouldOpenFileBasedOnExtension( |
| GetUserVerifiedFilePath()); |
|
cbentzel
2011/11/29 21:30:44
Nit: this could probably fit on previous line.
Randy Smith (Not in Mondays)
2011/11/30 22:44:05
Done.
|
| } |
| @@ -289,11 +288,11 @@ void DownloadItemImpl::OpenDownload() { |
| // don't generally have the proper interface for that to the external |
| // program that opens the file. So instead we spawn a check to update |
| // the UI if the file has been deleted in parallel with the open. |
| - download_manager_->CheckForFileRemoval(this); |
| + delegate_->CheckForFileRemoval(this); |
| download_stats::RecordOpen(GetEndTime(), !GetOpened()); |
| opened_ = true; |
| FOR_EACH_OBSERVER(Observer, observers_, OnDownloadOpened(this)); |
| - download_manager_->MarkDownloadOpened(this); |
| + delegate_->DownloadOpened(this); |
| // For testing: If download opening is disabled on this item, |
| // make the rest of the routine a no-op. |
| @@ -321,7 +320,7 @@ void DownloadItemImpl::DangerousDownloadValidated() { |
| safety_state_ = DANGEROUS_BUT_VALIDATED; |
| UpdateObservers(); |
| - download_manager_->MaybeCompleteDownload(this); |
| + delegate_->MaybeCompleteDownload(this); |
| } |
| void DownloadItemImpl::UpdateSize(int64 bytes_so_far) { |
| @@ -371,7 +370,7 @@ void DownloadItemImpl::Cancel(bool user_cancel) { |
| TransitionTo(CANCELLED); |
| if (user_cancel) |
| - download_manager_->DownloadCancelledInternal(this); |
| + delegate_->DownloadCancelled(this); |
| } |
| void DownloadItemImpl::MarkAsComplete() { |
| @@ -413,7 +412,7 @@ void DownloadItemImpl::Completed() { |
| DCHECK(all_data_saved_); |
| end_time_ = base::Time::Now(); |
| TransitionTo(COMPLETE); |
| - download_manager_->DownloadCompleted(GetId()); |
| + delegate_->DownloadCompleted(this); |
| download_stats::RecordDownloadCompleted(start_tick_, received_bytes_); |
| if (auto_opened_) { |
| @@ -499,12 +498,12 @@ void DownloadItemImpl::Remove() { |
| // TODO(rdsmith): Change to DCHECK after http://crbug.com/85408 resolved. |
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - download_manager_->AssertQueueStateConsistent(this); |
| + delegate_->AssertStateConsistent(this); |
|
cbentzel
2011/11/29 21:30:44
It seems strange to have the DownloadItem ask the
Randy Smith (Not in Mondays)
2011/11/30 22:44:05
I tried, but it turned out that we're still gettin
|
| Cancel(true); |
| - download_manager_->AssertQueueStateConsistent(this); |
| + delegate_->AssertStateConsistent(this); |
| TransitionTo(REMOVING); |
| - download_manager_->RemoveDownload(db_handle_); |
| + delegate_->DownloadRemoved(this); |
| // We have now been deleted. |
| } |
| @@ -580,16 +579,17 @@ void DownloadItemImpl::OnDownloadCompleting(DownloadFileManager* file_manager) { |
| if (NeedsRename()) { |
| BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| base::Bind(&DownloadFileManager::RenameCompletingDownloadFile, |
| - file_manager, GetGlobalId(), |
| + file_manager, download_id_, |
| GetTargetFilePath(), GetSafetyState() == SAFE)); |
| return; |
| } |
| Completed(); |
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| - base::Bind(&DownloadFileManager::CompleteDownload, |
| - file_manager, GetGlobalId())); |
| + BrowserThread::PostTask( |
| + BrowserThread::FILE, FROM_HERE, |
| + base::Bind(&DownloadFileManager::CompleteDownload, |
| + file_manager, download_id_)); |
| } |
| void DownloadItemImpl::OnDownloadRenamedToFinalName(const FilePath& full_path) { |
| @@ -604,7 +604,7 @@ void DownloadItemImpl::OnDownloadRenamedToFinalName(const FilePath& full_path) { |
| Rename(full_path); |
| - if (download_manager_->delegate()->ShouldOpenDownload(this)) { |
| + if (delegate_->ShouldOpenDownload(this)) { |
| Completed(); |
| } else { |
| delegate_delayed_complete_ = true; |
| @@ -627,11 +627,8 @@ bool DownloadItemImpl::MatchesQuery(const string16& query) const { |
| // L"/\x4f60\x597d\x4f60\x597d", |
| // "/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD" |
| std::string languages; |
| - TabContents* tab = GetTabContents(); |
| - if (tab) { |
| - languages = content::GetContentClient()->browser()->GetAcceptLangs( |
| - tab->browser_context()); |
| - } |
| + languages = content::GetContentClient()->browser()->GetAcceptLangs( |
| + delegate_->BrowserContext()); |
|
cbentzel
2011/11/29 21:30:44
Should DownloadItem::BrowserContext be used here i
Randy Smith (Not in Mondays)
2011/11/30 22:44:05
In an ideal world, DownloadItem wouldn't have a Br
|
| string16 url_formatted(net::FormatUrl(GetURL(), languages)); |
| if (base::i18n::StringSearchIgnoringCaseAndAccents(query, url_formatted)) |
| return true; |
| @@ -703,6 +700,10 @@ TabContents* DownloadItemImpl::GetTabContents() const { |
| return NULL; |
| } |
| +content::BrowserContext* DownloadItemImpl::BrowserContext() const { |
| + return delegate_->BrowserContext(); |
| +} |
| + |
| FilePath DownloadItemImpl::GetTargetFilePath() const { |
| return full_path_.DirName().Append(state_info_.target_name); |
| } |
| @@ -725,9 +726,10 @@ void DownloadItemImpl::OffThreadCancel(DownloadFileManager* file_manager) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| request_handle_->CancelRequest(); |
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| - base::Bind(&DownloadFileManager::CancelDownload, |
| - file_manager, GetGlobalId())); |
| + BrowserThread::PostTask( |
| + BrowserThread::FILE, FROM_HERE, |
| + base::Bind(&DownloadFileManager::CancelDownload, |
| + file_manager, download_id_)); |
| } |
| void DownloadItemImpl::Init(bool active) { |
| @@ -859,9 +861,6 @@ base::Time DownloadItemImpl::GetStartTime() const { return start_time_; } |
| base::Time DownloadItemImpl::GetEndTime() const { return end_time_; } |
| void DownloadItemImpl::SetDbHandle(int64 handle) { db_handle_ = handle; } |
| int64 DownloadItemImpl::GetDbHandle() const { return db_handle_; } |
| -DownloadManager* DownloadItemImpl::GetDownloadManager() { |
| - return download_manager_; |
| -} |
| bool DownloadItemImpl::IsPaused() const { return is_paused_; } |
| bool DownloadItemImpl::GetOpenWhenComplete() const { |
| return open_when_complete_; |