blob: 18d806469abba793ce2dea1107bbc566b0b55840 [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_BASE_CLIPBOARD_FILE_INFO_H_
#define UI_BASE_CLIPBOARD_FILE_INFO_H_
#include <string>
#include <string_view>
#include "base/component_export.h"
#include "base/files/file_path.h"
namespace ui {
// struct that bundles a file's path with an optional display name.
struct COMPONENT_EXPORT(UI_BASE_FILE_INFO) FileInfo {
FileInfo();
FileInfo(const base::FilePath& path, const base::FilePath& display_name);
~FileInfo();
bool operator==(const FileInfo& other) const;
base::FilePath path;
base::FilePath display_name; // Optional.
};
// Returns UTF8 file:// URL. |file_path| is expected to be an absolute path, and
// will be encoded as one regardless. E.g. '/path' and 'path' both encode as
// 'file:///path'.
std::string COMPONENT_EXPORT(UI_BASE_FILE_INFO)
FilePathToFileURL(const base::FilePath& file_path);
// Returns a list of ui::FileInfo from the text/uri-list CRLF-separated file://
// URLs in |uri_list| as per
// https://www.iana.org/assignments/media-types/text/uri-list
// URLs which cannot be parsed are ignored.
std::vector<FileInfo> COMPONENT_EXPORT(UI_BASE_FILE_INFO)
URIListToFileInfos(std::string_view uri_list);
// Returns UTF8 text/uri-list CRLF-separated file:// URLs from filenames.
std::string COMPONENT_EXPORT(UI_BASE_FILE_INFO)
FileInfosToURIList(const std::vector<FileInfo>& filenames);
} // namespace ui
#endif // UI_BASE_CLIPBOARD_FILE_INFO_H_