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

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

Issue 1644743003: Use DownloadManager to initiate downloads instead ResourceDispatcherHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/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 cec7b8b1225fbbe99c24a5849041c8e0f26856cc..d3e33aee5e29571df3b43fce1947650ee32c8ca2 100644
--- a/content/browser/renderer_host/render_message_filter.cc
+++ b/content/browser/renderer_host/render_message_filter.cc
@@ -42,7 +42,8 @@
#include "content/public/browser/browser_context.h"
#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_manager.h"
+#include "content/public/browser/download_url_parameters.h"
#include "content/public/browser/resource_context.h"
#include "content/public/browser/user_metrics.h"
#include "content/public/common/content_switches.h"
@@ -100,6 +101,21 @@ base::LazyInstance<gfx::ColorProfile>::Leaky g_color_profile =
LAZY_INSTANCE_INITIALIZER;
#endif
+void DownloadUrlOnUIThread(scoped_ptr<DownloadUrlParameters> parameters) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ RenderProcessHost* render_process_host =
+ RenderProcessHost::FromID(parameters->render_process_host_id());
+ if (!render_process_host)
+ return;
+
+ BrowserContext* browser_context = render_process_host->GetBrowserContext();
+ DownloadManager* download_manager =
+ BrowserContext::GetDownloadManager(browser_context);
+ RecordDownloadSource(INITIATED_BY_RENDERER);
+ download_manager->DownloadUrl(std::move(parameters));
+}
+
} // namespace
RenderMessageFilter::RenderMessageFilter(
@@ -372,19 +388,16 @@ void RenderMessageFilter::DownloadUrl(int render_view_id,
if (!resource_context_)
return;
- scoped_ptr<DownloadSaveInfo> save_info(new DownloadSaveInfo());
- save_info->suggested_name = suggested_name;
- save_info->prompt_for_save_location = use_prompt;
- scoped_ptr<net::URLRequest> request(
- resource_context_->GetRequestContext()->CreateRequest(
- url, net::DEFAULT_PRIORITY, NULL));
- RecordDownloadSource(INITIATED_BY_RENDERER);
- resource_dispatcher_host_->BeginDownload(
- std::move(request), referrer,
- true, // is_content_initiated
- resource_context_, render_process_id_, render_view_id, render_frame_id,
- false, false, std::move(save_info), DownloadItem::kInvalidId,
- ResourceDispatcherHostImpl::DownloadStartedCallback());
+ scoped_ptr<DownloadUrlParameters> parameters(
+ new DownloadUrlParameters(url, render_process_id_, render_view_id,
+ render_frame_id, resource_context_));
+ parameters->set_content_initiated(true);
+ parameters->set_suggested_name(suggested_name);
+ parameters->set_prompt(use_prompt);
+ parameters->set_referrer(referrer);
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&DownloadUrlOnUIThread, base::Passed(&parameters)));
}
void RenderMessageFilter::OnDownloadUrl(int render_view_id,
« 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