// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_FILENAME_GENERATION_FILENAME_GENERATION_H_ #define COMPONENTS_FILENAME_GENERATION_FILENAME_GENERATION_H_ #include <string> #include "base/files/file_path.h" class GURL; namespace filename_generation { // Returns extension for supported MIME types (for example, for "text/plain" // it returns "txt"). const base::FilePath::CharType* ExtensionForMimeType( const std::string& contents_mime_type); // Ensures that the file name has a proper extension for HTML by adding ".htm" // if necessary. base::FilePath EnsureHtmlExtension(const base::FilePath& name); // Ensures that the file name has a proper extension for supported formats // if necessary. base::FilePath EnsureMimeExtension(const base::FilePath& name, const std::string& contents_mime_type); // Function for generating a filename based on |title|, if it is empty, |url| // will be used as a fallback. base::FilePath GenerateFilename(const std::u16string& title, const GURL& url, bool can_save_as_complete, std::string contents_mime_type); // Truncates path->BaseName() to make path->BaseName().value().size() <= limit. // - It keeps the extension as is. Only truncates the body part. // - Only truncates if the base filename can maintain a minimum length // (currently a hardcoded internval constant kTruncatedNameLengthLowerbound, // but could be parameterized if ever required). // If it was unable to shorten the name, returns false. bool TruncateFilename(base::FilePath* path, size_t limit); } // namespace filename_generation #endif // COMPONENTS_FILENAME_GENERATION_FILENAME_GENERATION_H_