Index: content/browser/download/download_manager_impl.cc |
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc |
index 16555c23e624a671ce2cb7afd6026db658b0251f..4b519e0179a2a73cf5cb0bca6c223c74304e1169 100644 |
--- a/content/browser/download/download_manager_impl.cc |
+++ b/content/browser/download/download_manager_impl.cc |
@@ -58,11 +58,12 @@ namespace { |
// Param structs exist because base::Bind can only handle 6 args. |
struct URLParams { |
- URLParams(const GURL& url, const GURL& referrer, int64 post_id) |
- : url_(url), referrer_(referrer), post_id_(post_id) {} |
+ URLParams(const GURL& url, const GURL& referrer, int64 post_id, bool cache) |
+ : url_(url), referrer_(referrer), post_id_(post_id), prefer_cache_(cache) {} |
GURL url_; |
GURL referrer_; |
int64 post_id_; |
+ bool prefer_cache_; |
}; |
struct RenderParams { |
@@ -72,12 +73,13 @@ struct RenderParams { |
int render_view_id_; |
}; |
-void BeginDownload(const URLParams& url_params, |
- bool prefer_cache, |
- const DownloadSaveInfo& save_info, |
- ResourceDispatcherHostImpl* resource_dispatcher_host, |
- const RenderParams& render_params, |
- content::ResourceContext* context) { |
+void BeginDownload( |
+ const URLParams& url_params, |
+ const DownloadSaveInfo& save_info, |
+ ResourceDispatcherHostImpl* resource_dispatcher_host, |
+ const RenderParams& render_params, |
+ content::ResourceContext* context, |
+ const content::DownloadManager::OnStartedCallback& callback) { |
scoped_ptr<net::URLRequest> request( |
new net::URLRequest(url_params.url_, resource_dispatcher_host)); |
request->set_referrer(url_params.referrer_.spec()); |
@@ -86,7 +88,7 @@ void BeginDownload(const URLParams& url_params, |
// when retrieving data from cache. This is done because we don't want |
// to do a re-POST without user consent, and currently don't have a good |
// plan on how to display the UI for that. |
- DCHECK(prefer_cache); |
+ DCHECK(url_params.prefer_cache_); |
request->set_method("POST"); |
scoped_refptr<net::UploadData> upload_data = new net::UploadData(); |
upload_data->set_identifier(url_params.post_id_); |
@@ -97,9 +99,9 @@ void BeginDownload(const URLParams& url_params, |
context, |
render_params.render_process_id_, |
render_params.render_view_id_, |
- prefer_cache, |
+ url_params.prefer_cache_, |
save_info, |
- ResourceDispatcherHostImpl::DownloadStartedCallback()); |
+ callback); |
} |
class MapValueIteratorAdapter { |
@@ -866,7 +868,8 @@ void DownloadManagerImpl::DownloadUrl( |
bool prefer_cache, |
int64 post_id, |
const DownloadSaveInfo& save_info, |
- WebContents* web_contents) { |
+ WebContents* web_contents, |
+ const OnStartedCallback& callback) { |
ResourceDispatcherHostImpl* resource_dispatcher_host = |
ResourceDispatcherHostImpl::Get(); |
DCHECK(resource_dispatcher_host); |
@@ -878,13 +881,13 @@ void DownloadManagerImpl::DownloadUrl( |
BrowserThread::IO, FROM_HERE, |
base::Bind( |
&BeginDownload, |
- URLParams(url, referrer, post_id), |
- prefer_cache, |
+ URLParams(url, referrer, post_id, prefer_cache), |
save_info, |
resource_dispatcher_host, |
RenderParams(web_contents->GetRenderProcessHost()->GetID(), |
web_contents->GetRenderViewHost()->GetRoutingID()), |
- web_contents->GetBrowserContext()->GetResourceContext())); |
+ web_contents->GetBrowserContext()->GetResourceContext(), |
+ callback)); |
} |
void DownloadManagerImpl::AddObserver(Observer* observer) { |