summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-08 23:35:47 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-08 23:35:47 +0000
commit0d7e79fa8ce1bef5ca6d413c908c267c35f5867a (patch)
tree5509297bccd2e1b4c8abd0680090547c4b707f18 /chrome/browser/download
parentf94151690a90af7029a1ab6ddb0f7679af3a9c7d (diff)
downloadchromium_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.cc10
-rw-r--r--chrome/browser/download/download_manager.cc25
-rw-r--r--chrome/browser/download/save_file_manager.cc19
-rw-r--r--chrome/browser/download/save_package.cc3
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.