OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // Download utility implementation | 5 // Download utility implementation |
6 | 6 |
7 #include "chrome/browser/download/download_util.h" | 7 #include "chrome/browser/download/download_util.h" |
8 | 8 |
9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
10 #include <shobjidl.h> | 10 #include <shobjidl.h> |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 info->referrer_charset, | 210 info->referrer_charset, |
211 info->mime_type, | 211 info->mime_type, |
212 generated_name); | 212 generated_name); |
213 } | 213 } |
214 | 214 |
215 void GenerateFileName(const GURL& url, | 215 void GenerateFileName(const GURL& url, |
216 const std::string& content_disposition, | 216 const std::string& content_disposition, |
217 const std::string& referrer_charset, | 217 const std::string& referrer_charset, |
218 const std::string& mime_type, | 218 const std::string& mime_type, |
219 FilePath* generated_name) { | 219 FilePath* generated_name) { |
| 220 string16 default_file_name( |
| 221 l10n_util::GetStringUTF16(IDS_DEFAULT_DOWNLOAD_FILENAME)); |
| 222 |
| 223 string16 new_name = net::GetSuggestedFilename(GURL(url), |
| 224 content_disposition, |
| 225 referrer_charset, |
| 226 default_file_name); |
| 227 |
| 228 // TODO(evan): this code is totally wrong -- we should just generate |
| 229 // Unicode filenames and do all this encoding switching at the end. |
| 230 // However, I'm just shuffling wrong code around, at least not adding |
| 231 // to it. |
220 #if defined(OS_WIN) | 232 #if defined(OS_WIN) |
221 FilePath default_file_path( | 233 *generated_name = FilePath(new_name); |
222 l10n_util::GetStringUTF16(IDS_DEFAULT_DOWNLOAD_FILENAME)); | 234 #else |
223 #elif defined(OS_POSIX) | 235 *generated_name = FilePath( |
224 std::string default_file = | 236 base::SysWideToNativeMB(UTF16ToWide(new_name))); |
225 l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME); | |
226 FilePath default_file_path( | |
227 base::SysWideToNativeMB(base::SysUTF8ToWide(default_file))); | |
228 #endif | 237 #endif |
229 | 238 |
230 *generated_name = net::GetSuggestedFilename(GURL(url), | |
231 content_disposition, | |
232 referrer_charset, | |
233 default_file_path); | |
234 | |
235 DCHECK(!generated_name->empty()); | 239 DCHECK(!generated_name->empty()); |
236 | 240 |
237 GenerateSafeFileName(mime_type, generated_name); | 241 GenerateSafeFileName(mime_type, generated_name); |
238 } | 242 } |
239 | 243 |
240 void GenerateSafeFileName(const std::string& mime_type, FilePath* file_name) { | 244 void GenerateSafeFileName(const std::string& mime_type, FilePath* file_name) { |
241 // Make sure we get the right file extension | 245 // Make sure we get the right file extension |
242 FilePath::StringType extension; | 246 FilePath::StringType extension; |
243 GenerateExtension(*file_name, mime_type, &extension); | 247 GenerateExtension(*file_name, mime_type, &extension); |
244 *file_name = file_name->ReplaceExtension(extension); | 248 *file_name = file_name->ReplaceExtension(extension); |
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 !service->IsDownloadFromGallery(info->url, info->referrer_url)) { | 776 !service->IsDownloadFromGallery(info->url, info->referrer_url)) { |
773 // Extensions that are not from the gallery are considered dangerous. | 777 // Extensions that are not from the gallery are considered dangerous. |
774 return true; | 778 return true; |
775 } | 779 } |
776 } | 780 } |
777 | 781 |
778 return false; | 782 return false; |
779 } | 783 } |
780 | 784 |
781 } // namespace download_util | 785 } // namespace download_util |
OLD | NEW |