diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-25 22:36:23 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-25 22:36:23 +0000 |
commit | 966f82b6db7e8c4c6d1da79a97fe82a878697e2b (patch) | |
tree | 796f1e7873707bcffb098db9369508c15c04be3f /chrome/browser/download/save_package.cc | |
parent | 07efa3c8644d88f43224f9cb14a65507c82cba87 (diff) | |
download | chromium_src-966f82b6db7e8c4c6d1da79a97fe82a878697e2b.zip chromium_src-966f82b6db7e8c4c6d1da79a97fe82a878697e2b.tar.gz chromium_src-966f82b6db7e8c4c6d1da79a97fe82a878697e2b.tar.bz2 |
Create the download folder if it doesn't exist. That is, the actual download folder, not the default one.
BUG=21759
TEST=none
Review URL: http://codereview.chromium.org/219017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27266 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download/save_package.cc')
-rw-r--r-- | chrome/browser/download/save_package.cc | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc index 2fd35ee..33c8bfb 100644 --- a/chrome/browser/download/save_package.cc +++ b/chrome/browser/download/save_package.cc @@ -144,6 +144,7 @@ SavePackage::SavePackage(TabContents* web_content, saved_main_file_path_.value().length() <= kMaxFilePathLength); DCHECK(!saved_main_directory_path_.empty() && saved_main_directory_path_.value().length() < kMaxFilePathLength); + InternalInit(); } SavePackage::SavePackage(TabContents* tab_contents) @@ -160,10 +161,12 @@ SavePackage::SavePackage(TabContents* tab_contents) const GURL& current_page_url = tab_contents_->GetURL(); DCHECK(current_page_url.is_valid()); page_url_ = current_page_url; + InternalInit(); } // This is for testing use. Set |finished_| as true because we don't want // method Cancel to be be called in destructor in test mode. +// We also don't call InternalInit(). SavePackage::SavePackage(const FilePath& file_full_path, const FilePath& directory_full_path) : file_manager_(NULL), @@ -233,6 +236,22 @@ void SavePackage::Cancel(bool user_action) { } } +// Init() can be called directly, or indirectly via GetSaveInfo(). In both +// cases, we need file_manager_ to be initialized, so we do this first. +void SavePackage::InternalInit() { + ResourceDispatcherHost* rdh = g_browser_process->resource_dispatcher_host(); + if (!rdh) { + NOTREACHED(); + return; + } + + file_manager_ = rdh->save_file_manager(); + if (!file_manager_) { + NOTREACHED(); + return; + } +} + // Initialize the SavePackage. bool SavePackage::Init() { // Set proper running state. @@ -250,18 +269,6 @@ bool SavePackage::Init() { request_context_ = profile->GetRequestContext(); - ResourceDispatcherHost* rdh = g_browser_process->resource_dispatcher_host(); - if (!rdh) { - NOTREACHED(); - return false; - } - - file_manager_ = rdh->save_file_manager(); - if (!file_manager_) { - NOTREACHED(); - return false; - } - // Create the fake DownloadItem and display the view. download_ = new DownloadItem(1, saved_main_file_path_, 0, page_url_, GURL(), "", FilePath(), Time::Now(), 0, -1, -1, false, false); @@ -1046,6 +1053,17 @@ FilePath SavePackage::GetSaveDirPreference(PrefService* prefs) { } void SavePackage::GetSaveInfo() { + FilePath save_dir = + GetSaveDirPreference(tab_contents_->profile()->GetPrefs()); + file_manager_->file_loop()->PostTask(FROM_HERE, + NewRunnableMethod(file_manager_, + &SaveFileManager::CreateDownloadDirectory, + save_dir, + this)); + // CreateDownloadDirectory() calls ContinueGetSaveInfo() below. +} + +void SavePackage::ContinueGetSaveInfo(FilePath save_dir) { // Use "Web Page, Complete" option as default choice of saving page. int file_type_index = 2; SelectFileDialog::FileTypeInfo file_type_info; @@ -1059,8 +1077,6 @@ void SavePackage::GetSaveInfo() { FilePath title = FilePath::FromWStringHack(UTF16ToWideHack(tab_contents_->GetTitle())); - FilePath save_dir = - GetSaveDirPreference(tab_contents_->profile()->GetPrefs()); FilePath suggested_path = save_dir.Append(GetSuggestedNameForSaveAs(title, can_save_as_complete)); |