Chromium Code Reviews| Index: chrome/browser/download/download_prefs.cc |
| diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc |
| index e9e0b7681d696fe9685943a79cbe45a17994d675..cc6b794ddb03a54ddb33dda0af6a3b3e7c589e8f 100644 |
| --- a/chrome/browser/download/download_prefs.cc |
| +++ b/chrome/browser/download/download_prefs.cc |
| @@ -60,18 +60,18 @@ void DownloadPrefs::RegisterUserPrefs(PrefService* prefs) { |
| SavePackage::SAVE_AS_COMPLETE_HTML, |
| PrefService::UNSYNCABLE_PREF); |
| - // The default download path is userprofile\download. |
| - const FilePath& default_download_path = |
| - download_util::GetDefaultDownloadDirectory(); |
| + // The user's default "Downloads" folder. |
| + FilePath default_download_dir = |
| + download_util::GetDefaultDownloadDirectoryFromPathService(); |
| prefs->RegisterFilePathPref(prefs::kDownloadDefaultDirectory, |
| - default_download_path, |
| + default_download_dir, |
| PrefService::UNSYNCABLE_PREF); |
| #if defined(OS_CHROMEOS) |
| // Ensure that the download directory specified in the preferences exists. |
| BrowserThread::PostTask( |
| BrowserThread::FILE, FROM_HERE, |
| - NewRunnableFunction(&file_util::CreateDirectory, default_download_path)); |
| + NewRunnableFunction(&file_util::CreateDirectory, default_download_dir)); |
| #endif // defined(OS_CHROMEOS) |
| // If the download path is dangerous we forcefully reset it. But if we do |
| @@ -82,7 +82,7 @@ void DownloadPrefs::RegisterUserPrefs(PrefService* prefs) { |
| prefs::kDownloadDefaultDirectory); |
| if (download_util::DownloadPathIsDangerous(current_download_dir)) { |
| prefs->SetFilePath(prefs::kDownloadDefaultDirectory, |
| - default_download_path); |
| + default_download_dir); |
| } |
| prefs->SetBoolean(prefs::kDownloadDirUpgraded, true); |
| } |
| @@ -135,6 +135,12 @@ void DownloadPrefs::ResetAutoOpen() { |
| SaveAutoOpenState(); |
| } |
| +FilePath DownloadPrefs::GetDefaultDownloadDirectory() { |
| + if (!override_path_.empty()) |
| + return override_path_; |
| + return download_util::GetDefaultDownloadDirectoryFromPathService(); |
| +} |
| + |
| void DownloadPrefs::SaveAutoOpenState() { |
| std::string extensions; |
| for (AutoOpenSet::iterator it = auto_open_.begin(); |
| @@ -153,6 +159,33 @@ void DownloadPrefs::SaveAutoOpenState() { |
| prefs_->SetString(prefs::kDownloadExtensionsToOpen, extensions); |
| } |
| +void DownloadPrefs::OverrideDefaultDownloadDirectory( |
| + const FilePath& override_path) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + FilePath default_download_path = GetDefaultDownloadDirectory(); |
| + if (*download_path_ == default_download_path) { |
| + download_path_.SetValue(override_path); |
|
Paweł Hajdan Jr.
2011/06/15 09:31:33
Aren't those two lines (SetValue and SetFilePath)
haraken1
2011/06/15 10:39:45
Done. Just SetValue() is OK.
|
| + prefs_->SetFilePath(prefs::kDownloadDefaultDirectory, override_path); |
| + } |
| + |
| + override_path_ = override_path; |
| +} |
| + |
| +void DownloadPrefs::UnOverrideDefaultDownloadDirectory() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + bool overridden = !override_path_.empty(); |
|
Paweł Hajdan Jr.
2011/06/15 09:31:33
I think we can always assume (DCHECK if needed) th
haraken1
2011/06/15 10:39:45
Done.
|
| + override_path_.clear(); |
| + |
| + if (overridden) { |
|
Paweł Hajdan Jr.
2011/06/15 09:31:33
For symmetry, shouldn't we only reset the pref to
haraken1
2011/06/15 10:39:45
Done, although I am not sure if it is the fix you
|
| + FilePath default_download_path = GetDefaultDownloadDirectory(); |
| + download_path_.SetValue(default_download_path); |
| + prefs_->SetFilePath(prefs::kDownloadDefaultDirectory, |
| + default_download_path); |
| + } |
| +} |
| + |
| bool DownloadPrefs::AutoOpenCompareFunctor::operator()( |
| const FilePath::StringType& a, |
| const FilePath::StringType& b) const { |