diff options
author | arun87.kumar <arun87.kumar@samsung.com> | 2014-10-28 23:19:00 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-29 06:19:24 +0000 |
commit | 7252e6eb8e6e88cf7ac6f5181498d2b3fc2c3874 (patch) | |
tree | 66b1aa53bae1cf739f2d15f03448805026ee301d /net/base/filename_util_internal.cc | |
parent | 994573c61efc0ff5f39ac2d0edff55af8dde5ab5 (diff) | |
download | chromium_src-7252e6eb8e6e88cf7ac6f5181498d2b3fc2c3874.zip chromium_src-7252e6eb8e6e88cf7ac6f5181498d2b3fc2c3874.tar.gz chromium_src-7252e6eb8e6e88cf7ac6f5181498d2b3fc2c3874.tar.bz2 |
This patch prevents appending extension to filename derived from content disposition if it does not have one.
For example, in below case,
Content-Type:text/plain;charset=UTF-8
Content-Disposition:attachment; fileName = "ABC"
File is saved as "ABC" instead of "ABC.txt"
BUG=411200
Review URL: https://codereview.chromium.org/640713002
Cr-Commit-Position: refs/heads/master@{#301794}
Diffstat (limited to 'net/base/filename_util_internal.cc')
-rw-r--r-- | net/base/filename_util_internal.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/net/base/filename_util_internal.cc b/net/base/filename_util_internal.cc index 49b6a3d..cda7f62 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,13 @@ base::string16 GetSuggestedFilenameImpl( } replace_illegal_characters_callback.Run(&result_str, '-'); base::FilePath result(result_str); - GenerateSafeFileName(mime_type, overwrite_extension, &result); + // extension should not appended to filename derived from + // content-disposition, if it does not have one. + // Hence mimetype and overwrite_extension values are not used. + if (is_name_from_content_disposition) + GenerateSafeFileName("", false, &result); + else + GenerateSafeFileName(mime_type, overwrite_extension, &result); base::string16 result16; if (!FilePathToString16(result, &result16)) { |