Index: net/base/net_util.h |
diff --git a/net/base/net_util.h b/net/base/net_util.h |
index 344a9903d06795dbaa4167adeca482b8c3ed1937..ee9fe129331c0191a3ba0002757adffdaf54def8 100644 |
--- a/net/base/net_util.h |
+++ b/net/base/net_util.h |
@@ -170,12 +170,6 @@ NET_API std::string GetHeaderParamValue(const std::string& header, |
// |
// This function does not do any escaping and callers are responsible for |
// escaping 'unsafe' characters (e.g. (back)slash, colon) as they see fit. |
-// |
-// TODO(jungshik): revisit this issue. At the moment, the only caller |
-// net_util::GetSuggestedFilename and it calls ReplaceIllegalCharacters. The |
-// other caller is a unit test. Need to figure out expose this function only to |
-// net_util_unittest. |
-// |
NET_TEST std::string GetFileNameFromCD(const std::string& header, |
const std::string& referrer_charset); |
@@ -261,6 +255,39 @@ NET_API string16 GetSuggestedFilename(const GURL& url, |
const std::string& suggested_name, |
const string16& default_name); |
+// Generate a filename based on a HTTP request. |
+// |
+// The |url|, |content_disposition|, |referrer_charset|, |suggested_name|, and |
+// |default_name| parameters will be used with GetSuggestedFilename() to |
+// generate a filename. The resulting filename will be passed in along with the |
+// |mime_type| to GenerateSafeFileName() to generate the returned filename. |
+NET_API FilePath GenerateFileName(const GURL& url, |
+ const std::string& content_disposition, |
+ const std::string& referrer_charset, |
+ const std::string& suggested_name, |
+ const std::string& mime_type, |
+ const string16& default_name); |
+ |
+// Ensures that the filename and extension is safe to use in the filesystem. |
+// |
+// Assumes that |file_path| already contains a valid path or file name. On |
+// Windows if the extension causes the file to have an unsafe interaction with |
+// the shell (see net_util::IsShellIntegratedExtension()), then it will be |
+// replaced by the string 'download'. If |file_path| doesn't contain an |
+// extension and |mime_type| is non-empty, the preferred extension for |
+// |mime_type| will be used as the extension. |
+// |
+// On Windows, the filename will be checked against a set of reserved names, and |
+// if so, an underscore will be prepended to the name. |
+// |
+// |file_name| can either be just the file name or it can be a full path to a |
+// file. |
+// |
+// Note: |mime_type| should only be non-empty if this function is called from a |
+// thread that allows IO. |
+NET_API void GenerateSafeFileName(const std::string& mime_type, |
+ FilePath* file_path); |
+ |
// Checks the given port against a list of ports which are restricted by |
// default. Returns true if the port is allowed, false if it is restricted. |
bool IsPortAllowedByDefault(int port); |