summaryrefslogtreecommitdiffstats
path: root/net/base/filename_util_internal.cc
diff options
context:
space:
mode:
authorarun87.kumar <arun87.kumar@samsung.com>2014-10-28 23:19:00 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-29 06:19:24 +0000
commit7252e6eb8e6e88cf7ac6f5181498d2b3fc2c3874 (patch)
tree66b1aa53bae1cf739f2d15f03448805026ee301d /net/base/filename_util_internal.cc
parent994573c61efc0ff5f39ac2d0edff55af8dde5ab5 (diff)
downloadchromium_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.cc12
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)) {