Index: chrome/browser/download/download_manager.cc |
=================================================================== |
--- chrome/browser/download/download_manager.cc (revision 30688) |
+++ chrome/browser/download/download_manager.cc (working copy) |
@@ -18,6 +18,7 @@ |
#include "base/timer.h" |
#include "chrome/browser/browser_list.h" |
#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/chrome_thread.h" |
#include "chrome/browser/download/download_file.h" |
#include "chrome/browser/download/download_util.h" |
#include "chrome/browser/extensions/crx_installer.h" |
@@ -347,9 +348,7 @@ |
DownloadManager::DownloadManager() |
: shutdown_needed_(false), |
profile_(NULL), |
- file_manager_(NULL), |
- ui_loop_(MessageLoop::current()), |
- file_loop_(NULL) { |
+ file_manager_(NULL) { |
} |
DownloadManager::~DownloadManager() { |
@@ -494,12 +493,6 @@ |
return false; |
} |
- file_loop_ = g_browser_process->file_thread()->message_loop(); |
- if (!file_loop_) { |
- NOTREACHED(); |
- return false; |
- } |
- |
// Get our user preference state. |
PrefService* prefs = profile_->GetPrefs(); |
DCHECK(prefs); |
@@ -513,8 +506,9 @@ |
// get rid of |CreateDirectoryPtr|. |
bool (*CreateDirectoryPtr)(const FilePath&) = &file_util::CreateDirectory; |
// Ensure that the download directory specified in the preferences exists. |
- file_loop_->PostTask(FROM_HERE, NewRunnableFunction( |
- CreateDirectoryPtr, download_path())); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableFunction(CreateDirectoryPtr, download_path())); |
// We use this to determine possibly dangerous downloads. |
download_util::InitializeExeTypes(&exe_types_); |
@@ -551,7 +545,7 @@ |
// point. OnCreateDatabaseEntryComplete() handles that finalization of the the |
// download creation as a callback from the history thread. |
void DownloadManager::StartDownload(DownloadCreateInfo* info) { |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
DCHECK(info); |
// Freeze the user's preference for showing a Save As dialog. We're going to |
@@ -590,10 +584,10 @@ |
// We need to move over to the download thread because we don't want to stat |
// the suggested path on the UI thread. |
- file_loop_->PostTask(FROM_HERE, |
- NewRunnableMethod(this, |
- &DownloadManager::CheckIfSuggestedPathExists, |
- info)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ this, &DownloadManager::CheckIfSuggestedPathExists, info)); |
} |
void DownloadManager::CheckIfSuggestedPathExists(DownloadCreateInfo* info) { |
@@ -647,14 +641,15 @@ |
} |
// Now we return to the UI thread. |
- ui_loop_->PostTask(FROM_HERE, |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
NewRunnableMethod(this, |
&DownloadManager::OnPathExistenceAvailable, |
info)); |
} |
void DownloadManager::OnPathExistenceAvailable(DownloadCreateInfo* info) { |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
DCHECK(info); |
if (info->save_as) { |
@@ -713,12 +708,11 @@ |
// Called before DownloadFinished in order to avoid a race condition where we |
// attempt to open a completed download before it has been renamed. |
- file_loop_->PostTask(FROM_HERE, |
- NewRunnableMethod(file_manager_, |
- &DownloadFileManager::OnFinalDownloadName, |
- download->id(), |
- target_path, |
- this)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ file_manager_, &DownloadFileManager::OnFinalDownloadName, |
+ download->id(), target_path, this)); |
// If the download already completed by the time we reached this point, then |
// notify observers that it did. |
@@ -836,7 +830,8 @@ |
if (download->safety_state() == DownloadItem::DANGEROUS_BUT_VALIDATED) { |
// We first need to rename the downloaded file from its temporary name to |
// its final name before we can continue. |
- file_loop_->PostTask(FROM_HERE, |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
NewRunnableMethod( |
this, &DownloadManager::ProceedWithFinishedDangerousDownload, |
download->db_handle(), |
@@ -896,7 +891,8 @@ |
NOTREACHED(); |
} |
- ui_loop_->PostTask(FROM_HERE, |
+ ChromeThread::PostTask( |
+ ChromeThread::UI, FROM_HERE, |
NewRunnableMethod(this, &DownloadManager::DangerousDownloadRenamed, |
download_handle, success, new_path, uniquifier)); |
} |
@@ -964,10 +960,10 @@ |
// Tell the file manager to cancel the download. |
file_manager_->RemoveDownload(download_id, this); // On the UI thread |
- file_loop_->PostTask(FROM_HERE, |
- NewRunnableMethod(file_manager_, |
- &DownloadFileManager::CancelDownload, |
- download_id)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ file_manager_, &DownloadFileManager::CancelDownload, download_id)); |
} |
void DownloadManager::PauseDownload(int32 download_id, bool pause) { |
@@ -1212,15 +1208,16 @@ |
// user interface. |
void DownloadManager::ShowDownloadInShell(const DownloadItem* download) { |
DCHECK(file_manager_); |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
#if defined(OS_MACOSX) |
// Mac needs to run this operation on the UI thread. |
platform_util::ShowItemInFolder(download->full_path()); |
#else |
- file_loop_->PostTask(FROM_HERE, |
- NewRunnableMethod(file_manager_, |
- &DownloadFileManager::OnShowDownloadInShell, |
- FilePath(download->full_path()))); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ file_manager_, &DownloadFileManager::OnShowDownloadInShell, |
+ FilePath(download->full_path()))); |
#endif |
} |
@@ -1260,15 +1257,16 @@ |
void DownloadManager::OpenDownloadInShell(const DownloadItem* download, |
gfx::NativeView parent_window) { |
DCHECK(file_manager_); |
- DCHECK(MessageLoop::current() == ui_loop_); |
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
#if defined(OS_MACOSX) |
// Mac OS X requires opening downloads on the UI thread. |
platform_util::OpenItem(download->full_path()); |
#else |
- file_loop_->PostTask(FROM_HERE, |
- NewRunnableMethod(file_manager_, |
- &DownloadFileManager::OnOpenDownloadInShell, |
- download->full_path(), download->url(), parent_window)); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ file_manager_, &DownloadFileManager::OnOpenDownloadInShell, |
+ download->full_path(), download->url(), parent_window)); |
#endif |
} |
@@ -1407,8 +1405,9 @@ |
} |
void DownloadManager::DeleteDownload(const FilePath& path) { |
- file_loop_->PostTask(FROM_HERE, NewRunnableFunction( |
- &DownloadFileManager::DeleteFile, FilePath(path))); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableFunction(&DownloadFileManager::DeleteFile, FilePath(path))); |
} |
@@ -1422,11 +1421,12 @@ |
if (download->state() != DownloadItem::COMPLETE) |
return; |
- file_loop_->PostTask(FROM_HERE, |
- NewRunnableMethod(this, |
- &DownloadManager::ProceedWithFinishedDangerousDownload, |
- download->db_handle(), download->full_path(), |
- download->original_name())); |
+ ChromeThread::PostTask( |
+ ChromeThread::FILE, FROM_HERE, |
+ NewRunnableMethod( |
+ this, &DownloadManager::ProceedWithFinishedDangerousDownload, |
+ download->db_handle(), download->full_path(), |
+ download->original_name())); |
} |
void DownloadManager::GenerateSafeFilename(const std::string& mime_type, |