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 |