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

Unified Diff: content/browser/renderer_host/render_message_filter.cc

Issue 23496076: WIP - Refactor programmatic downloads Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 | « content/browser/net/referrer.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_message_filter.cc
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc
index 29e1e1f199a4d0cfe286083e5f870ecdcd337bcf..7adc14c0a302b7210dcddf110603b37b5a277777 100644
--- a/content/browser/renderer_host/render_message_filter.cc
+++ b/content/browser/renderer_host/render_message_filter.cc
@@ -40,6 +40,7 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/download_save_info.h"
+#include "content/public/browser/download_url_parameters.h"
#include "content/public/browser/plugin_service_filter.h"
#include "content/public/browser/resource_context.h"
#include "content/public/browser/user_metrics.h"
@@ -202,6 +203,24 @@ class OpenChannelToPpapiBrokerCallback
int routing_id_;
};
+// Run on the UI thread to initiate a download.
+void BeginDownloadOnUIThread(int render_process_id,
+ int routing_id,
+ const GURL& url,
+ const content::Referrer& referrer,
+ const string16& suggested_name,
+ ResourceContext* resource_context) {
+ RenderProcessHost* rph = RenderProcessHost::FromID(render_process_id);
+ DownloadManager* download_manager =
+ BrowserContext::GetDownloadManager(rph->GetBrowserContext());
+ scoped_ptr<DownloadUrlParameters> download_params(new DownloadUrlParameters(
+ url, render_process_id, routing_id, resource_context));
+ download_params->set_suggested_name(suggested_name);
+ download_params->set_referrer(referrer);
+ download_params->set_content_initiated(true);
+ download_manager->DownloadUrl(download_params.Pass());
+}
+
} // namespace
class RenderMessageFilter::OpenChannelToNpapiPluginCallback
@@ -831,22 +850,15 @@ void RenderMessageFilter::OnDownloadUrl(const IPC::Message& message,
const GURL& url,
const Referrer& referrer,
const string16& suggested_name) {
- scoped_ptr<DownloadSaveInfo> save_info(new DownloadSaveInfo());
- save_info->suggested_name = suggested_name;
- scoped_ptr<net::URLRequest> request(
- resource_context_->GetRequestContext()->CreateRequest(url, NULL));
- RecordDownloadSource(INITIATED_BY_RENDERER);
- resource_dispatcher_host_->BeginDownload(
- request.Pass(),
- referrer,
- true, // is_content_initiated
- resource_context_,
- render_process_id_,
- message.routing_id(),
- false,
- save_info.Pass(),
- content::DownloadItem::kInvalidId,
- ResourceDispatcherHostImpl::DownloadStartedCallback());
+ BrowserThread::PostTask(BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&BeginDownloadOnUIThread,
+ render_process_id_,
+ message.routing_id(),
+ url,
+ referrer,
+ suggested_name,
+ resource_context_));
}
void RenderMessageFilter::OnCheckNotificationPermission(
« no previous file with comments | « content/browser/net/referrer.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698