Chromium Code Reviews| Index: chrome/browser/download/chrome_download_manager_delegate.cc |
| diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc |
| index 93bd6656729d4f8e54af2348c4f0e77bf97119e8..0d5e86270bbe313cd78f20bcf61357911429969e 100644 |
| --- a/chrome/browser/download/chrome_download_manager_delegate.cc |
| +++ b/chrome/browser/download/chrome_download_manager_delegate.cc |
| @@ -61,7 +61,6 @@ |
| #include "chrome/browser/download/save_package_file_picker_chromeos.h" |
| #endif |
| -using content::BrowserContext; |
| using content::BrowserThread; |
| using content::DownloadId; |
| using content::DownloadItem; |
| @@ -181,6 +180,24 @@ base::FilePath GetPlatformDownloadPath(Profile* profile, |
| return download->GetFullPath(); |
| } |
| +void VirtualSavePathChosen(content::BrowserContext* context, |
| + const base::FilePath& path) { |
| + StringPrefMember save_file_path; |
| + save_file_path.Init(prefs::kSaveFileDefaultDirectory, |
| + Profile::FromBrowserContext(context)->GetPrefs()); |
| +#if defined(OS_POSIX) |
| + std::string path_string = path.DirName().value(); |
| +#elif defined(OS_WIN) |
| + std::string path_string = WideToUTF8(path.DirName().value()); |
|
Randy Smith (Not in Mondays)
2013/04/25 17:58:55
Is this the usual method of persisting file paths
asanka
2013/04/25 19:01:39
kSaveFileDefaultDirectory is registered in CDMD as
benjhayden
2013/04/30 21:11:12
Done.
benjhayden
2013/04/30 21:11:12
Done.
|
| +#endif |
| + // If user change the default saving directory, we will remember it just |
| + // like IE and FireFox. |
| + if (!context->IsOffTheRecord() && |
| + (save_file_path.GetValue() != path_string)) { |
| + save_file_path.SetValue(path_string); |
| + } |
| +} |
| + |
| } // namespace |
| // static |
| @@ -214,8 +231,8 @@ DownloadId ChromeDownloadManagerDelegate::GetNextId() { |
| if (!profile_->IsOffTheRecord()) |
| return DownloadId(this, next_download_id_++); |
| - return BrowserContext::GetDownloadManager(profile_->GetOriginalProfile())-> |
| - GetDelegate()->GetNextId(); |
| + return content::BrowserContext::GetDownloadManager( |
| + profile_->GetOriginalProfile())->GetDelegate()->GetNextId(); |
| } |
| bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( |
| @@ -368,7 +385,7 @@ bool ChromeDownloadManagerDelegate::GenerateFileHash() { |
| } |
| void ChromeDownloadManagerDelegate::GetSaveDir( |
| - BrowserContext* browser_context, |
| + content::BrowserContext* browser_context, |
| base::FilePath* website_save_dir, |
| base::FilePath* download_save_dir, |
| bool* skip_dir_check) { |
| @@ -412,6 +429,7 @@ void ChromeDownloadManagerDelegate::ChooseSavePath( |
| web_contents, |
| suggested_path, |
| can_save_as_complete, |
| + base::Bind(&VirtualSavePathChosen, web_contents->GetBrowserContext()), |
| callback); |
| #else |
| new SavePackageFilePicker( |
| @@ -420,6 +438,7 @@ void ChromeDownloadManagerDelegate::ChooseSavePath( |
| default_extension, |
| can_save_as_complete, |
| download_prefs_.get(), |
| + base::Bind(&VirtualSavePathChosen, web_contents->GetBrowserContext()), |
| callback); |
| #endif |
| } |