| Index: net/base/filename_util_unsafe.cc
|
| diff --git a/net/base/filename_util_unsafe.cc b/net/base/filename_util_unsafe.cc
|
| index 12e80dcf32d5f701b5525b413266451e9e662d36..18143838055e26e21bcbba93612c287f3db31055 100644
|
| --- a/net/base/filename_util_unsafe.cc
|
| +++ b/net/base/filename_util_unsafe.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/strings/string_util.h"
|
| +#include "net/base/filename_util.h"
|
| #include "net/base/filename_util_internal.h"
|
|
|
| namespace {
|
| @@ -18,12 +19,13 @@ const base::FilePath::CharType illegal_characters[] =
|
| FILE_PATH_LITERAL("\"*/:<>?\\\\|\001\002\003\004\005\006\007\010\011\012")
|
| FILE_PATH_LITERAL("\013\014\015\016\017\020\021\022\023\024\025\025\027");
|
|
|
| -void ReplaceIllegalCharactersInPath(base::FilePath::StringType* file_name,
|
| +void ReplaceIllegalCharactersInPath(base::FilePath* file_name,
|
| char replace_char) {
|
| - base::ReplaceChars(*file_name,
|
| - illegal_characters,
|
| + base::FilePath::StringType filename_string = file_name->value();
|
| + base::ReplaceChars(filename_string, illegal_characters,
|
| base::FilePath::StringType(1, replace_char),
|
| - file_name);
|
| + &filename_string);
|
| + *file_name = base::FilePath(filename_string);
|
| }
|
|
|
| } // namespace
|
| @@ -37,15 +39,14 @@ base::FilePath::StringType GenerateFileExtensionUnsafe(
|
| const std::string& suggested_name,
|
| const std::string& mime_type,
|
| const std::string& default_file_name) {
|
| - base::FilePath filepath =
|
| - GenerateFileNameImpl(url,
|
| - content_disposition,
|
| - referrer_charset,
|
| - suggested_name,
|
| - mime_type,
|
| - default_file_name,
|
| - base::Bind(&ReplaceIllegalCharactersInPath));
|
| - return filepath.Extension();
|
| + ExtensionGenerationOption extension_option = EXTENSION_OPTION_KEEP_EXISTING;
|
| + std::string unsafe_filename = SelectUnsafeDownloadFilename(
|
| + url, content_disposition, referrer_charset, suggested_name, mime_type,
|
| + default_file_name, &extension_option);
|
| + base::FilePath path = base::FilePath::FromUTF8Unsafe(unsafe_filename);
|
| + ReplaceIllegalCharactersInPath(&path, kReplacement);
|
| + EnsureSafeFilenameInternal(mime_type, extension_option, &path);
|
| + return path.Extension();
|
| }
|
|
|
| } // namespace net
|
|
|