diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-08 23:35:47 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-08 23:35:47 +0000 |
commit | 0d7e79fa8ce1bef5ca6d413c908c267c35f5867a (patch) | |
tree | 5509297bccd2e1b4c8abd0680090547c4b707f18 /chrome/browser/download | |
parent | f94151690a90af7029a1ab6ddb0f7679af3a9c7d (diff) | |
download | chromium_src-0d7e79fa8ce1bef5ca6d413c908c267c35f5867a.zip chromium_src-0d7e79fa8ce1bef5ca6d413c908c267c35f5867a.tar.gz chromium_src-0d7e79fa8ce1bef5ca6d413c908c267c35f5867a.tar.bz2 |
Revert 61899 for breaking cookes on file:// URLs.
BUG=58553
=================================================
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
TBR=willchan@chromium.org
Review URL: http://codereview.chromium.org/3654001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62043 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download')
-rw-r--r-- | chrome/browser/download/download_file_manager.cc | 10 | ||||
-rw-r--r-- | chrome/browser/download/download_manager.cc | 25 | ||||
-rw-r--r-- | chrome/browser/download/save_file_manager.cc | 19 | ||||
-rw-r--r-- | chrome/browser/download/save_package.cc | 3 |
4 files changed, 21 insertions, 36 deletions
diff --git a/chrome/browser/download/download_file_manager.cc b/chrome/browser/download/download_file_manager.cc index 10fe2fe..fc94314 100644 --- a/chrome/browser/download/download_file_manager.cc +++ b/chrome/browser/download/download_file_manager.cc @@ -174,13 +174,9 @@ void DownloadFileManager::StartDownload(DownloadCreateInfo* info) { return; } - ChromeThread::PostTask( - ChromeThread::FILE, - FROM_HERE, - NewRunnableMethod(this, - &DownloadFileManager::CreateDownloadFile, - info, - make_scoped_refptr(manager))); + ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE, + NewRunnableMethod(this, &DownloadFileManager::CreateDownloadFile, + info, manager)); } // We don't forward an update to the UI thread here, since we want to throttle diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc index af3049e..b90feaf 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, - make_scoped_refptr(this))); + this)); } // 'in_progress_' may contain DownloadItems that have not finished the start @@ -437,12 +437,8 @@ void DownloadManager::CreateDownloadItem(DownloadCreateInfo* info, ChromeThread::PostTask( ChromeThread::FILE, FROM_HERE, NewRunnableMethod( - file_manager_, - &DownloadFileManager::OnFinalDownloadName, - download->id(), - target_path, - !info->is_dangerous, - make_scoped_refptr(this))); + file_manager_, &DownloadFileManager::OnFinalDownloadName, + download->id(), target_path, !info->is_dangerous, this)); } else { // The download hasn't finished and it is a safe download. We need to // rename it to its intermediate '.crdownload' path. @@ -450,11 +446,8 @@ void DownloadManager::CreateDownloadItem(DownloadCreateInfo* info, ChromeThread::PostTask( ChromeThread::FILE, FROM_HERE, NewRunnableMethod( - file_manager_, - &DownloadFileManager::OnIntermediateDownloadName, - download->id(), - download_path, - make_scoped_refptr(this))); + file_manager_, &DownloadFileManager::OnIntermediateDownloadName, + download->id(), download_path, this)); download->set_need_final_rename(true); } @@ -539,12 +532,8 @@ 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, - make_scoped_refptr(this))); + file_manager_, &DownloadFileManager::OnFinalDownloadName, + download->id(), download->full_path(), false, this)); return; } diff --git a/chrome/browser/download/save_file_manager.cc b/chrome/browser/download/save_file_manager.cc index b1c59a9..00e9251 100644 --- a/chrome/browser/download/save_file_manager.cc +++ b/chrome/browser/download/save_file_manager.cc @@ -131,16 +131,14 @@ void SaveFileManager::SaveURL(const GURL& url, DCHECK(url.is_valid()); ChromeThread::PostTask( - ChromeThread::IO, - FROM_HERE, - NewRunnableMethod( - this, - &SaveFileManager::OnSaveURL, - url, - referrer, - render_process_host_id, - render_view_id, - make_scoped_refptr(request_context_getter))); + ChromeThread::IO, FROM_HERE, + NewRunnableMethod(this, + &SaveFileManager::OnSaveURL, + url, + referrer, + render_process_host_id, + render_view_id, + request_context_getter)); } else { // We manually start the save job. SaveFileCreateInfo* info = new SaveFileCreateInfo(file_full_path, @@ -252,6 +250,7 @@ void SaveFileManager::UpdateSaveProgress(int save_id, this, &SaveFileManager::OnUpdateSaveProgress, save_file->save_id(), save_file->bytes_so_far(), write_success)); } + data->Release(); } // The IO thread will call this when saving is completed or it got error when diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc index 071e95b..4ce3e36 100644 --- a/chrome/browser/download/save_package.cc +++ b/chrome/browser/download/save_package.cc @@ -1025,7 +1025,8 @@ void SavePackage::OnReceivedSerializedHtmlData(const GURL& frame_url, if (!data.empty()) { // Prepare buffer for saving HTML data. - scoped_refptr<net::IOBuffer> new_data = new net::IOBuffer(data.size()); + net::IOBuffer* new_data = new net::IOBuffer(data.size()); + new_data->AddRef(); // We'll pass the buffer to SaveFileManager. memcpy(new_data->data(), data.data(), data.size()); // Call write file functionality in file thread. |