diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-03 19:56:15 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-03 19:56:15 +0000 |
commit | e2abdeb2f6ad46c39153ccfbf233f552f0f9691a (patch) | |
tree | b7b93080ded54a92affe3309382bf1063e6e68b9 | |
parent | a4b89e21d9af3b20b61f46322bbd0c48b7f08b24 (diff) | |
download | chromium_src-e2abdeb2f6ad46c39153ccfbf233f552f0f9691a.zip chromium_src-e2abdeb2f6ad46c39153ccfbf233f552f0f9691a.tar.gz chromium_src-e2abdeb2f6ad46c39153ccfbf233f552f0f9691a.tar.bz2 |
Remove risky DISABLE_RUNNABLE_METHOD_REFCOUNT macro from DownloadManager.
Just use a NewRunnableMethod task posted to the IO thread. The RDH
is guaranteed to live longer than the IO thread.
BUG=48913
TEST=none
Review URL: http://codereview.chromium.org/3331009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58529 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/download/download_manager.cc | 17 | ||||
-rw-r--r-- | chrome/browser/download/download_manager.h | 7 |
2 files changed, 18 insertions, 6 deletions
diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc index 2283b32..657f4d1 100644 --- a/chrome/browser/download/download_manager.cc +++ b/chrome/browser/download/download_manager.cc @@ -671,9 +671,6 @@ void DownloadManager::DownloadCancelledInternal(int download_id, file_manager_, &DownloadFileManager::CancelDownload, download_id)); } -// DownloadManager is owned by RDH, no need for reference counting. -DISABLE_RUNNABLE_METHOD_REFCOUNT(ResourceDispatcherHost); - void DownloadManager::PauseDownload(int32 download_id, bool pause) { DownloadMap::iterator it = in_progress_.find(download_id); if (it == in_progress_.end()) @@ -683,11 +680,11 @@ void DownloadManager::PauseDownload(int32 download_id, bool pause) { if (pause == download->is_paused()) return; - // Inform the ResourceDispatcherHost of the new pause state. ChromeThread::PostTask( ChromeThread::IO, FROM_HERE, - NewRunnableMethod(g_browser_process->resource_dispatcher_host(), - &ResourceDispatcherHost::PauseRequest, + NewRunnableMethod(this, + &DownloadManager::PauseDownloadRequest, + g_browser_process->resource_dispatcher_host(), download->render_process_id(), download->request_id(), pause)); @@ -729,6 +726,14 @@ void DownloadManager::RenameDownload(DownloadItem* download, download_history_->UpdateDownloadPath(download, new_path); } +void DownloadManager::PauseDownloadRequest(ResourceDispatcherHost* rdh, + int render_process_id, + int request_id, + bool pause) { + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); + rdh->PauseRequest(render_process_id, request_id, pause); +} + void DownloadManager::RemoveDownload(int64 download_handle) { DownloadMap::iterator it = downloads_.find(download_handle); if (it == downloads_.end()) diff --git a/chrome/browser/download/download_manager.h b/chrome/browser/download/download_manager.h index 60701e0..bd0f83e 100644 --- a/chrome/browser/download/download_manager.h +++ b/chrome/browser/download/download_manager.h @@ -278,6 +278,13 @@ class DownloadManager // the change to the history system. void RenameDownload(DownloadItem* download, const FilePath& new_path); + // Makes the ResourceDispatcherHost pause/un-pause a download request. + // Called on the IO thread. + void PauseDownloadRequest(ResourceDispatcherHost* rdh, + int render_process_id, + int request_id, + bool pause); + // Inform observers that the model has changed. void NotifyModelChanged(); |