| 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(¶meters)));
|
| }
|
|
|
| void RenderMessageFilter::OnDownloadUrl(int render_view_id,
|
|
|