diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-08 00:41:30 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-08 00:41:30 +0000 |
commit | 1e2917814446b821d4c326282d819ddd318ff175 (patch) | |
tree | 636cb3f1f97addf90ca31f90e9b5385fd9e3cba6 /chrome/browser/download/download_manager.cc | |
parent | f9e3c52fb5feba4c279dbbbec049aff0b45b3955 (diff) | |
download | chromium_src-1e2917814446b821d4c326282d819ddd318ff175.zip chromium_src-1e2917814446b821d4c326282d819ddd318ff175.tar.gz chromium_src-1e2917814446b821d4c326282d819ddd318ff175.tar.bz2 |
Fix instances of passing raw pointers to RefCounted objects in tasks.
Some of these manually handled it correctly by using AddRef()/Release() pairs. I switched them to make_scoped_refptr() to be more consistent. This also makes them cleanup properly on MessageLoop shutdown if we start deleting tasks.
BUG=28083
TEST=builds
Review URL: http://codereview.chromium.org/3581008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61899 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download/download_manager.cc')
-rw-r--r-- | chrome/browser/download/download_manager.cc | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc index 4e0f4ea..bb9aeea 100644 --- a/chrome/browser/download/download_manager.cc +++ b/chrome/browser/download/download_manager.cc @@ -76,7 +76,7 @@ void DownloadManager::Shutdown() { ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE, NewRunnableMethod(file_manager_, &DownloadFileManager::OnDownloadManagerShutdown, - this)); + make_scoped_refptr(this))); } // 'in_progress_' may contain DownloadItems that have not finished the start @@ -446,8 +446,12 @@ void DownloadManager::CreateDownloadItem(DownloadCreateInfo* info, ChromeThread::PostTask( ChromeThread::FILE, FROM_HERE, NewRunnableMethod( - file_manager_, &DownloadFileManager::OnFinalDownloadName, - download->id(), target_path, !info->is_dangerous, this)); + file_manager_, + &DownloadFileManager::OnFinalDownloadName, + download->id(), + target_path, + !info->is_dangerous, + make_scoped_refptr(this))); } else { // The download hasn't finished and it is a safe download. We need to // rename it to its intermediate '.crdownload' path. @@ -455,8 +459,11 @@ void DownloadManager::CreateDownloadItem(DownloadCreateInfo* info, ChromeThread::PostTask( ChromeThread::FILE, FROM_HERE, NewRunnableMethod( - file_manager_, &DownloadFileManager::OnIntermediateDownloadName, - download->id(), download_path, this)); + file_manager_, + &DownloadFileManager::OnIntermediateDownloadName, + download->id(), + download_path, + make_scoped_refptr(this))); download->set_need_final_rename(true); } @@ -541,8 +548,12 @@ void DownloadManager::OnAllDataSaved(int32 download_id, int64 size) { ChromeThread::PostTask( ChromeThread::FILE, FROM_HERE, NewRunnableMethod( - file_manager_, &DownloadFileManager::OnFinalDownloadName, - download->id(), download->full_path(), false, this)); + file_manager_, + &DownloadFileManager::OnFinalDownloadName, + download->id(), + download->full_path(), + false, + make_scoped_refptr(this))); return; } |