Index: chrome/browser/download/save_file_manager.cc |
diff --git a/chrome/browser/download/save_file_manager.cc b/chrome/browser/download/save_file_manager.cc |
index d5df502c2947f0e29db55bdd90a2a7ef7204ad0a..c4c784e84dee35aedc2eced42aa28903b31295e6 100644 |
--- a/chrome/browser/download/save_file_manager.cc |
+++ b/chrome/browser/download/save_file_manager.cc |
@@ -12,9 +12,12 @@ |
#include "base/string_util.h" |
#include "base/task.h" |
#include "base/threading/thread.h" |
+#include "chrome/browser/download/download_manager.h" |
+#include "chrome/browser/download/download_prefs.h" |
#include "chrome/browser/download/save_file.h" |
#include "chrome/browser/download/save_package.h" |
#include "chrome/browser/platform_util.h" |
+#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/tab_contents/tab_util.h" |
#include "chrome/browser/ui/download/download_tab_helper.h" |
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
@@ -125,6 +128,12 @@ void SaveFileManager::SaveURL( |
SavePackage* save_package) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ TabContents* contents = |
+ tab_util::GetTabContentsByID(render_process_host_id, render_view_id); |
+ DownloadPrefs* download_prefs = |
+ contents->profile()->GetDownloadManager()->download_prefs(); |
+ FilePath default_download_dir = download_prefs->GetDefaultDownloadDirectory(); |
+ |
// Register a saving job. |
RegisterStartingRequest(url, save_package); |
if (save_source == SaveFileCreateInfo::SAVE_FILE_FROM_NET) { |
@@ -138,6 +147,7 @@ void SaveFileManager::SaveURL( |
referrer, |
render_process_host_id, |
render_view_id, |
+ default_download_dir, |
&context)); |
} else { |
// We manually start the save job. |
@@ -225,7 +235,8 @@ void SaveFileManager::StartSave(SaveFileCreateInfo* info) { |
SaveFile* save_file = new SaveFile(info); |
// TODO(phajdan.jr): We should check the return value and handle errors here. |
- save_file->Initialize(false); // No need to calculate hash. |
+ // No need to calculate hash. |
+ save_file->Initialize(false, info->default_download_dir); |
DCHECK(!LookupSaveFile(info->save_id)); |
save_file_map_[info->save_id] = save_file; |
@@ -362,12 +373,14 @@ void SaveFileManager::OnSaveURL( |
const GURL& referrer, |
int render_process_host_id, |
int render_view_id, |
+ const FilePath& default_download_dir, |
const content::ResourceContext* context) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
resource_dispatcher_host_->BeginSaveFile(url, |
referrer, |
render_process_host_id, |
render_view_id, |
+ default_download_dir, |
*context); |
} |