| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/download/download_manager.h" | 5 #include "chrome/browser/download/download_manager.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 void DownloadManager::RegisterUserPrefs(PrefService* prefs) { | 77 void DownloadManager::RegisterUserPrefs(PrefService* prefs) { |
| 78 prefs->RegisterBooleanPref(prefs::kPromptForDownload, false); | 78 prefs->RegisterBooleanPref(prefs::kPromptForDownload, false); |
| 79 prefs->RegisterStringPref(prefs::kDownloadExtensionsToOpen, ""); | 79 prefs->RegisterStringPref(prefs::kDownloadExtensionsToOpen, ""); |
| 80 prefs->RegisterBooleanPref(prefs::kDownloadDirUpgraded, false); | 80 prefs->RegisterBooleanPref(prefs::kDownloadDirUpgraded, false); |
| 81 | 81 |
| 82 // The default download path is userprofile\download. | 82 // The default download path is userprofile\download. |
| 83 const FilePath& default_download_path = | 83 const FilePath& default_download_path = |
| 84 download_util::GetDefaultDownloadDirectory(); | 84 download_util::GetDefaultDownloadDirectory(); |
| 85 prefs->RegisterFilePathPref(prefs::kDownloadDefaultDirectory, | 85 prefs->RegisterFilePathPref(prefs::kDownloadDefaultDirectory, |
| 86 default_download_path); | 86 default_download_path); |
| 87 #if defined(OS_CHROMEOS) |
| 88 // Ensure that the download directory specified in the preferences exists. |
| 89 ChromeThread::PostTask( |
| 90 ChromeThread::FILE, FROM_HERE, |
| 91 NewRunnableFunction(&file_util::CreateDirectory, default_download_path)); |
| 92 #endif |
| 87 | 93 |
| 88 // If the download path is dangerous we forcefully reset it. But if we do | 94 // If the download path is dangerous we forcefully reset it. But if we do |
| 89 // so we set a flag to make sure we only do it once, to avoid fighting | 95 // so we set a flag to make sure we only do it once, to avoid fighting |
| 90 // the user if he really wants it on an unsafe place such as the desktop. | 96 // the user if he really wants it on an unsafe place such as the desktop. |
| 91 | 97 |
| 92 if (!prefs->GetBoolean(prefs::kDownloadDirUpgraded)) { | 98 if (!prefs->GetBoolean(prefs::kDownloadDirUpgraded)) { |
| 93 FilePath current_download_dir = prefs->GetFilePath( | 99 FilePath current_download_dir = prefs->GetFilePath( |
| 94 prefs::kDownloadDefaultDirectory); | 100 prefs::kDownloadDefaultDirectory); |
| 95 if (download_util::DownloadPathIsDangerous(current_download_dir)) { | 101 if (download_util::DownloadPathIsDangerous(current_download_dir)) { |
| 96 prefs->SetFilePath(prefs::kDownloadDefaultDirectory, | 102 prefs->SetFilePath(prefs::kDownloadDefaultDirectory, |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 file_manager_ = rdh->download_file_manager(); | 341 file_manager_ = rdh->download_file_manager(); |
| 336 DCHECK(file_manager_); | 342 DCHECK(file_manager_); |
| 337 } | 343 } |
| 338 | 344 |
| 339 // Get our user preference state. | 345 // Get our user preference state. |
| 340 PrefService* prefs = profile_->GetPrefs(); | 346 PrefService* prefs = profile_->GetPrefs(); |
| 341 DCHECK(prefs); | 347 DCHECK(prefs); |
| 342 prompt_for_download_.Init(prefs::kPromptForDownload, prefs, NULL); | 348 prompt_for_download_.Init(prefs::kPromptForDownload, prefs, NULL); |
| 343 | 349 |
| 344 download_path_.Init(prefs::kDownloadDefaultDirectory, prefs, NULL); | 350 download_path_.Init(prefs::kDownloadDefaultDirectory, prefs, NULL); |
| 345 | |
| 346 // Ensure that the download directory specified in the preferences exists. | 351 // Ensure that the download directory specified in the preferences exists. |
| 347 ChromeThread::PostTask( | 352 ChromeThread::PostTask( |
| 348 ChromeThread::FILE, FROM_HERE, | 353 ChromeThread::FILE, FROM_HERE, |
| 349 NewRunnableFunction(&file_util::CreateDirectory, download_path())); | 354 NewRunnableFunction(&file_util::CreateDirectory, download_path())); |
| 350 | 355 |
| 351 // We store any file extension that should be opened automatically at | 356 // We store any file extension that should be opened automatically at |
| 352 // download completion in this pref. | 357 // download completion in this pref. |
| 353 std::string extensions_to_open = | 358 std::string extensions_to_open = |
| 354 prefs->GetString(prefs::kDownloadExtensionsToOpen); | 359 prefs->GetString(prefs::kDownloadExtensionsToOpen); |
| 355 std::vector<std::string> extensions; | 360 std::vector<std::string> extensions; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 // 2) Filetypes marked "always open." If the user just wants this file | 431 // 2) Filetypes marked "always open." If the user just wants this file |
| 427 // opened, don't bother asking where to keep it. | 432 // opened, don't bother asking where to keep it. |
| 428 if (!info->is_extension_install && | 433 if (!info->is_extension_install && |
| 429 !ShouldOpenFileBasedOnExtension(generated_name)) | 434 !ShouldOpenFileBasedOnExtension(generated_name)) |
| 430 info->prompt_user_for_save_location = true; | 435 info->prompt_user_for_save_location = true; |
| 431 } | 436 } |
| 432 | 437 |
| 433 // Determine the proper path for a download, by either one of the following: | 438 // Determine the proper path for a download, by either one of the following: |
| 434 // 1) using the default download directory. | 439 // 1) using the default download directory. |
| 435 // 2) prompting the user. | 440 // 2) prompting the user. |
| 436 if (info->prompt_user_for_save_location && !last_download_path_.empty()) | 441 if (info->prompt_user_for_save_location && !last_download_path_.empty()){ |
| 437 info->suggested_path = last_download_path_; | 442 info->suggested_path = last_download_path_; |
| 438 else | 443 } else { |
| 439 info->suggested_path = download_path(); | 444 info->suggested_path = download_path(); |
| 445 } |
| 440 info->suggested_path = info->suggested_path.Append(generated_name); | 446 info->suggested_path = info->suggested_path.Append(generated_name); |
| 441 } else { | 447 } else { |
| 442 info->suggested_path = info->save_info.file_path; | 448 info->suggested_path = info->save_info.file_path; |
| 443 } | 449 } |
| 444 | 450 |
| 445 if (!info->prompt_user_for_save_location && | 451 if (!info->prompt_user_for_save_location && |
| 446 info->save_info.file_path.empty()) { | 452 info->save_info.file_path.empty()) { |
| 447 // Downloads can be marked as dangerous for two reasons: | 453 // Downloads can be marked as dangerous for two reasons: |
| 448 // a) They have a dangerous-looking filename | 454 // a) They have a dangerous-looking filename |
| 449 // b) They are an extension that is not from the gallery | 455 // b) They are an extension that is not from the gallery |
| (...skipping 1182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1632 observing_download_manager_->NotifyModelChanged(); | 1638 observing_download_manager_->NotifyModelChanged(); |
| 1633 } | 1639 } |
| 1634 | 1640 |
| 1635 void DownloadManager::OtherDownloadManagerObserver::SetDownloads( | 1641 void DownloadManager::OtherDownloadManagerObserver::SetDownloads( |
| 1636 std::vector<DownloadItem*>& downloads) { | 1642 std::vector<DownloadItem*>& downloads) { |
| 1637 } | 1643 } |
| 1638 | 1644 |
| 1639 void DownloadManager::OtherDownloadManagerObserver::ManagerGoingDown() { | 1645 void DownloadManager::OtherDownloadManagerObserver::ManagerGoingDown() { |
| 1640 observed_download_manager_ = NULL; | 1646 observed_download_manager_ = NULL; |
| 1641 } | 1647 } |
| OLD | NEW |