| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/base/filename_util_unsafe.h" |
| |
| #include "base/bind.h" |
| #include "base/strings/string_util.h" |
| #include "net/base/filename_util_internal.h" |
| |
| namespace { |
| |
| // Local ICU-independent implementation of filename sanitizing functions defined |
| // in base/i18n/file_util_icu.h. Does not require ICU because on POSIX systems |
| // all international characters are considered legal, so only control and |
| // special characters have to be replaced. |
| 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, |
| char replace_char) { |
| base::ReplaceChars(*file_name, |
| illegal_characters, |
| base::FilePath::StringType(1, replace_char), |
| file_name); |
| } |
| |
| } // namespace |
| |
| namespace net { |
| |
| base::FilePath::StringType GenerateFileExtensionUnsafe( |
| const GURL& url, |
| const std::string& content_disposition, |
| const std::string& referrer_charset, |
| 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(); |
| } |
| |
| } // namespace net |