| Index: chrome/browser/download/save_package.cc
|
| diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc
|
| index 81bdfcfdfe5a2dd5d252165196836d0e304fa532..cbc6ae9c3d0f4632fb94b22cd4ddd5a32212df03 100644
|
| --- a/chrome/browser/download/save_package.cc
|
| +++ b/chrome/browser/download/save_package.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/i18n/file_util_icu.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop.h"
|
| +#include "base/path_service.h"
|
| #include "base/stl_util-inl.h"
|
| #include "base/string_piece.h"
|
| #include "base/string_split.h"
|
| @@ -1267,7 +1268,7 @@ void SavePackage::GetSaveInfo() {
|
| BrowserThread::PostTask(
|
| BrowserThread::FILE, FROM_HERE,
|
| NewRunnableMethod(this, &SavePackage::CreateDirectoryOnFileThread,
|
| - website_save_dir, download_save_dir, mime_type));
|
| + website_save_dir, download_save_dir, mime_type));
|
| }
|
|
|
| void SavePackage::CreateDirectoryOnFileThread(
|
| @@ -1275,15 +1276,26 @@ void SavePackage::CreateDirectoryOnFileThread(
|
| const FilePath& download_save_dir,
|
| const std::string& mime_type) {
|
| FilePath save_dir;
|
| - // If the default html/websites save folder doesn't exist...
|
| - if (!file_util::DirectoryExists(website_save_dir)) {
|
| - // If the default download dir doesn't exist, create it.
|
| - if (!file_util::DirectoryExists(download_save_dir))
|
| - file_util::CreateDirectory(download_save_dir);
|
| + if (file_util::DirectoryExists(website_save_dir)) {
|
| + // If the default html/websites save folder exists,
|
| + // then use the default html/websites save folder.
|
| + save_dir = website_save_dir;
|
| + } else if (file_util::DirectoryExists(download_save_dir)) {
|
| + // If the default html/websites save folder does not exist
|
| + // but the default download folder exists,
|
| + // then use the default download folder.
|
| save_dir = download_save_dir;
|
| } else {
|
| - // If it does exist, use the default save dir param.
|
| - save_dir = website_save_dir;
|
| + // If both the above folders do not exist,
|
| + // use the user's "Downloads" folder.
|
| + if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &save_dir)) {
|
| + // Create the |download_save_dir| folder if we cannot get
|
| + // DIR_DEFAULT_DOWNLOADS (This will be a rare case).
|
| + save_dir = download_save_dir;
|
| + }
|
| + // Make sure that the folder does exist.
|
| + if (!file_util::CreateDirectory(save_dir))
|
| + LOG(ERROR) << "Failed to create " << save_dir.value();
|
| }
|
|
|
| bool can_save_as_complete = CanSaveAsComplete(mime_type);
|
|
|