Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1564)

Unified Diff: content/browser/download/download_manager.cc

Issue 8417009: Replace NewRunnable with Callback in DownloadManager. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/download/download_manager.cc
===================================================================
--- content/browser/download/download_manager.cc (revision 107442)
+++ content/browser/download/download_manager.cc (working copy)
@@ -15,7 +15,6 @@
#include "base/stringprintf.h"
#include "base/synchronization/lock.h"
#include "base/sys_string_conversions.h"
-#include "base/task.h"
#include "build/build_config.h"
#include "content/browser/browser_context.h"
#include "content/browser/browser_thread.h"
@@ -37,23 +36,34 @@
namespace {
-void BeginDownload(
- const GURL& url,
- const GURL& referrer,
- const DownloadSaveInfo& save_info,
- ResourceDispatcherHost* resource_dispatcher_host,
- int render_process_id,
- int render_view_id,
- const content::ResourceContext* context) {
- net::URLRequest* request = new net::URLRequest(url, resource_dispatcher_host);
- request->set_referrer(referrer.spec());
+// Param structs exist because base::Bind can only handle 6 args.
+struct URLParams {
+ URLParams(const GURL& url, const GURL& referrer)
+ : url_(url), referrer_(referrer) {}
+ GURL url_;
+ GURL referrer_;
+};
+
+struct RenderParams {
+ RenderParams(int rpi, int rvi)
+ : render_process_id_(rpi), render_view_id_(rvi) {}
+ int render_process_id_;
+ int render_view_id_;
+};
+
+void BeginDownload(const URLParams& url_params,
+ const DownloadSaveInfo& save_info,
+ ResourceDispatcherHost* resource_dispatcher_host,
+ const RenderParams& render_params,
+ const content::ResourceContext* context) {
+ net::URLRequest* request = new net::URLRequest(url_params.url_,
+ resource_dispatcher_host);
+ request->set_referrer(url_params.referrer_.spec());
resource_dispatcher_host->BeginDownload(
- request,
- save_info,
- true,
+ request, save_info, true,
DownloadResourceHandler::OnStartedCallback(),
- render_process_id,
- render_view_id,
+ render_params.render_process_id_,
+ render_params.render_view_id_,
*context);
}
@@ -94,9 +104,8 @@
if (file_manager_) {
BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
- NewRunnableMethod(file_manager_,
- &DownloadFileManager::OnDownloadManagerShutdown,
- make_scoped_refptr(this)));
+ base::Bind(&DownloadFileManager::OnDownloadManagerShutdown,
+ file_manager_, make_scoped_refptr(this)));
}
AssertContainersConsistent();
@@ -263,10 +272,9 @@
!download_item->file_externally_removed()) {
BrowserThread::PostTask(
BrowserThread::FILE, FROM_HERE,
- NewRunnableMethod(this,
- &DownloadManager::CheckForFileRemovalOnFileThread,
- download_item->db_handle(),
- download_item->GetTargetFilePath()));
+ base::Bind(&DownloadManager::CheckForFileRemovalOnFileThread,
+ this, download_item->db_handle(),
+ download_item->GetTargetFilePath()));
}
}
@@ -276,9 +284,7 @@
if (!file_util::PathExists(path)) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
- NewRunnableMethod(this,
- &DownloadManager::OnFileRemovalDetected,
- db_handle));
+ base::Bind(&DownloadManager::OnFileRemovalDetected, this, db_handle));
}
}
@@ -371,9 +377,8 @@
BrowserThread::PostTask(
BrowserThread::FILE, FROM_HERE,
- NewRunnableMethod(
- file_manager_, &DownloadFileManager::RenameInProgressDownloadFile,
- download->global_id(), download_path));
+ base::Bind(&DownloadFileManager::RenameInProgressDownloadFile,
+ file_manager_, download->global_id(), download_path));
download->Rename(download_path);
@@ -534,10 +539,10 @@
DCHECK_EQ(0, uniquifier) << "We should not uniquify SAFE downloads twice";
}
- BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, NewRunnableMethod(
- file_manager_,
- &DownloadFileManager::CompleteDownload,
- item->global_id()));
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ base::Bind(&DownloadFileManager::CompleteDownload,
+ file_manager_, item->global_id()));
if (uniquifier)
item->set_path_uniquifier(uniquifier);
@@ -718,16 +723,14 @@
content::GetContentClient()->browser()->GetResourceDispatcherHost();
// We send a pointer to content::ResourceContext, instead of the usual
// reference, so that a copy of the object isn't made.
- BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- NewRunnableFunction(&BeginDownload,
- url,
- referrer,
- save_info,
- resource_dispatcher_host,
- tab_contents->GetRenderProcessHost()->id(),
- tab_contents->render_view_host()->routing_id(),
- &tab_contents->browser_context()->
- GetResourceContext()));
+ // base::Bind can't handle 7 args, so we use URLParams and RenderParams.
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&BeginDownload,
+ URLParams(url, referrer), save_info, resource_dispatcher_host,
+ RenderParams(tab_contents->GetRenderProcessHost()->id(),
+ tab_contents->render_view_host()->routing_id()),
+ &tab_contents->browser_context()->GetResourceContext()));
}
void DownloadManager::AddObserver(Observer* observer) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698