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/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/i18n/file_util_icu.h" | 9 #include "base/i18n/file_util_icu.h" |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 // switching save-as file formats, and remove the flag/switch. | 135 // switching save-as file formats, and remove the flag/switch. |
136 if (ShouldSaveAsMHTML()) { | 136 if (ShouldSaveAsMHTML()) { |
137 default_extension_copy = FILE_PATH_LITERAL("mhtml"); | 137 default_extension_copy = FILE_PATH_LITERAL("mhtml"); |
138 suggested_path_copy = suggested_path_copy.ReplaceExtension( | 138 suggested_path_copy = suggested_path_copy.ReplaceExtension( |
139 default_extension_copy); | 139 default_extension_copy); |
140 } else if (can_save_as_complete_) { | 140 } else if (can_save_as_complete_) { |
141 // NOTE: this branch will never run on chromeos because ShouldSaveAsHTML() | 141 // NOTE: this branch will never run on chromeos because ShouldSaveAsHTML() |
142 // == can_save_as_complete_ on chromeos. | 142 // == can_save_as_complete_ on chromeos. |
143 bool add_extra_extension = false; | 143 bool add_extra_extension = false; |
144 base::FilePath::StringType extra_extension; | 144 base::FilePath::StringType extra_extension; |
145 if (!suggested_path_copy.Extension().empty() && | 145 if (!suggested_path_copy.FinalExtension().empty() && |
146 !suggested_path_copy.MatchesExtension(FILE_PATH_LITERAL(".htm")) && | 146 !suggested_path_copy.MatchesExtension(FILE_PATH_LITERAL(".htm")) && |
147 !suggested_path_copy.MatchesExtension(FILE_PATH_LITERAL(".html"))) { | 147 !suggested_path_copy.MatchesExtension(FILE_PATH_LITERAL(".html"))) { |
148 add_extra_extension = true; | 148 add_extra_extension = true; |
149 extra_extension = suggested_path_copy.Extension().substr(1); | 149 extra_extension = suggested_path_copy.FinalExtension().substr(1); |
150 } | 150 } |
151 | 151 |
152 static const size_t kNumberExtensions = arraysize(kIndexToIDS) - 1; | 152 static const size_t kNumberExtensions = arraysize(kIndexToIDS) - 1; |
153 file_type_info.extensions.resize(kNumberExtensions); | 153 file_type_info.extensions.resize(kNumberExtensions); |
154 file_type_info.extension_description_overrides.resize(kNumberExtensions); | 154 file_type_info.extension_description_overrides.resize(kNumberExtensions); |
155 | 155 |
156 // Indices into kIndexToIDS are 1-based whereas indices into | 156 // Indices into kIndexToIDS are 1-based whereas indices into |
157 // file_type_info.extensions are 0-based. Hence the '-1's. | 157 // file_type_info.extensions are 0-based. Hence the '-1's. |
158 // If you switch these resize()/direct-assignment patterns to push_back(), | 158 // If you switch these resize()/direct-assignment patterns to push_back(), |
159 // then you risk breaking FileSelected()'s use of |index|. | 159 // then you risk breaking FileSelected()'s use of |index|. |
(...skipping 20 matching lines...) Expand all Loading... |
180 if (add_extra_extension) { | 180 if (add_extra_extension) { |
181 file_type_info.extensions[kSelectFileCompleteIndex - 1].push_back( | 181 file_type_info.extensions[kSelectFileCompleteIndex - 1].push_back( |
182 extra_extension); | 182 extra_extension); |
183 } | 183 } |
184 | 184 |
185 file_type_info.include_all_files = false; | 185 file_type_info.include_all_files = false; |
186 } else { | 186 } else { |
187 // The contents can not be saved as complete-HTML, so do not show the file | 187 // The contents can not be saved as complete-HTML, so do not show the file |
188 // filters. | 188 // filters. |
189 file_type_info.extensions.resize(1); | 189 file_type_info.extensions.resize(1); |
190 file_type_info.extensions[0].push_back(suggested_path_copy.Extension()); | 190 file_type_info.extensions[0].push_back( |
| 191 suggested_path_copy.FinalExtension()); |
191 | 192 |
192 if (!file_type_info.extensions[0][0].empty()) { | 193 if (!file_type_info.extensions[0][0].empty()) { |
193 // Drop the . | 194 // Drop the . |
194 file_type_info.extensions[0][0].erase(0, 1); | 195 file_type_info.extensions[0][0].erase(0, 1); |
195 } | 196 } |
196 | 197 |
197 file_type_info.include_all_files = true; | 198 file_type_info.include_all_files = true; |
198 file_type_index = 1; | 199 file_type_index = 1; |
199 } | 200 } |
200 | 201 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 } | 279 } |
279 #endif | 280 #endif |
280 | 281 |
281 callback_.Run(path_copy, save_type, | 282 callback_.Run(path_copy, save_type, |
282 base::Bind(&OnSavePackageDownloadCreated)); | 283 base::Bind(&OnSavePackageDownloadCreated)); |
283 } | 284 } |
284 | 285 |
285 void SavePackageFilePicker::FileSelectionCanceled(void* unused_params) { | 286 void SavePackageFilePicker::FileSelectionCanceled(void* unused_params) { |
286 delete this; | 287 delete this; |
287 } | 288 } |
OLD | NEW |