| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/save_package_file_picker.h" | 5 #include "chrome/browser/download/save_package_file_picker.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/prefs/pref_member.h" | 9 #include "base/prefs/pref_member.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 CommandLine::ForCurrentProcess()->HasSwitch( | 72 CommandLine::ForCurrentProcess()->HasSwitch( |
| 73 switches::kSavePageAsMHTML); | 73 switches::kSavePageAsMHTML); |
| 74 } | 74 } |
| 75 | 75 |
| 76 SavePackageFilePicker::SavePackageFilePicker( | 76 SavePackageFilePicker::SavePackageFilePicker( |
| 77 content::WebContents* web_contents, | 77 content::WebContents* web_contents, |
| 78 const base::FilePath& suggested_path_const, | 78 const base::FilePath& suggested_path_const, |
| 79 const base::FilePath::StringType& default_extension_const, | 79 const base::FilePath::StringType& default_extension_const, |
| 80 bool can_save_as_complete, | 80 bool can_save_as_complete, |
| 81 DownloadPrefs* download_prefs, | 81 DownloadPrefs* download_prefs, |
| 82 const base::Callback<void(const base::FilePath&)>& on_chosen, |
| 82 const content::SavePackagePathPickedCallback& callback) | 83 const content::SavePackagePathPickedCallback& callback) |
| 83 : render_process_id_(web_contents->GetRenderProcessHost()->GetID()), | 84 : render_process_id_(web_contents->GetRenderProcessHost()->GetID()), |
| 84 can_save_as_complete_(can_save_as_complete), | 85 can_save_as_complete_(can_save_as_complete), |
| 86 on_chosen_(on_chosen), |
| 85 callback_(callback) { | 87 callback_(callback) { |
| 86 base::FilePath suggested_path = suggested_path_const; | 88 base::FilePath suggested_path = suggested_path_const; |
| 87 base::FilePath::StringType default_extension = default_extension_const; | 89 base::FilePath::StringType default_extension = default_extension_const; |
| 88 int file_type_index = SavePackageTypeToIndex( | 90 int file_type_index = SavePackageTypeToIndex( |
| 89 static_cast<SavePageType>(download_prefs->save_file_type())); | 91 static_cast<SavePageType>(download_prefs->save_file_type())); |
| 90 DCHECK_NE(-1, file_type_index); | 92 DCHECK_NE(-1, file_type_index); |
| 91 | 93 |
| 92 ui::SelectFileDialog::FileTypeInfo file_type_info; | 94 ui::SelectFileDialog::FileTypeInfo file_type_info; |
| 93 | 95 |
| 94 // TODO(benjhayden): Merge the first branch with the second when all of the | 96 // TODO(benjhayden): Merge the first branch with the second when all of the |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 save_type = kIndexToSaveType[index]; | 202 save_type = kIndexToSaveType[index]; |
| 201 if (select_file_dialog_ && | 203 if (select_file_dialog_ && |
| 202 select_file_dialog_->HasMultipleFileTypeChoices()) | 204 select_file_dialog_->HasMultipleFileTypeChoices()) |
| 203 prefs->SetInteger(prefs::kSaveFileType, save_type); | 205 prefs->SetInteger(prefs::kSaveFileType, save_type); |
| 204 } | 206 } |
| 205 | 207 |
| 206 UMA_HISTOGRAM_ENUMERATION("Download.SavePageType", | 208 UMA_HISTOGRAM_ENUMERATION("Download.SavePageType", |
| 207 save_type, | 209 save_type, |
| 208 content::SAVE_PAGE_TYPE_MAX); | 210 content::SAVE_PAGE_TYPE_MAX); |
| 209 | 211 |
| 210 StringPrefMember save_file_path; | 212 on_chosen_.Run(path); |
| 211 save_file_path.Init(prefs::kSaveFileDefaultDirectory, prefs); | |
| 212 #if defined(OS_POSIX) | |
| 213 std::string path_string = path.DirName().value(); | |
| 214 #elif defined(OS_WIN) | |
| 215 std::string path_string = WideToUTF8(path.DirName().value()); | |
| 216 #endif | |
| 217 // If user change the default saving directory, we will remember it just | |
| 218 // like IE and FireFox. | |
| 219 if (!process->GetBrowserContext()->IsOffTheRecord() && | |
| 220 save_file_path.GetValue() != path_string) | |
| 221 save_file_path.SetValue(path_string); | |
| 222 | |
| 223 callback_.Run(path, save_type, base::Bind(&OnSavePackageDownloadCreated)); | 213 callback_.Run(path, save_type, base::Bind(&OnSavePackageDownloadCreated)); |
| 224 } | 214 } |
| 225 | 215 |
| 226 delete this; | 216 delete this; |
| 227 } | 217 } |
| 228 | 218 |
| 229 void SavePackageFilePicker::FileSelectionCanceled(void* unused_params) { | 219 void SavePackageFilePicker::FileSelectionCanceled(void* unused_params) { |
| 230 delete this; | 220 delete this; |
| 231 } | 221 } |
| OLD | NEW |