Chromium Code Reviews| Index: net/base/filename_util_internal.cc |
| diff --git a/net/base/filename_util_internal.cc b/net/base/filename_util_internal.cc |
| index 49b6a3db923d52fef031f1a666563422241dc793..8ebe442c0438b51819499c3ccfb0b1e1b1463f70 100644 |
| --- a/net/base/filename_util_internal.cc |
| +++ b/net/base/filename_util_internal.cc |
| @@ -229,11 +229,13 @@ base::string16 GetSuggestedFilenameImpl( |
| FILE_PATH_LITERAL("download"); |
| std::string filename; // In UTF-8 |
| bool overwrite_extension = false; |
| - |
| + bool is_name_from_content_disposition = false; |
| // Try to extract a filename from content-disposition first. |
| if (!content_disposition.empty()) { |
| HttpContentDisposition header(content_disposition, referrer_charset); |
| filename = header.filename(); |
| + if (!filename.empty()) |
| + is_name_from_content_disposition = true; |
| } |
| // Then try to use the suggested name. |
| @@ -275,7 +277,10 @@ base::string16 GetSuggestedFilenameImpl( |
| } |
| replace_illegal_characters_callback.Run(&result_str, '-'); |
| base::FilePath result(result_str); |
| - GenerateSafeFileName(mime_type, overwrite_extension, &result); |
| + // extension is not appended to filename derived from content-disposition, |
| + // if it doesnot have one |
| + if (!is_name_from_content_disposition) |
| + GenerateSafeFileName(mime_type, overwrite_extension, &result); |
|
asanka
2014/10/08 15:58:29
This step isn't optional. The fact that a filename
|
| base::string16 result16; |
| if (!FilePathToString16(result, &result16)) { |