#include "storage/browser/file_system/native_file_util.h"
#include <stdint.h>
#include <memory>
#include "base/containers/span.h"
#include "base/files/file_enumerator.h"
#include "base/files/file_util.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "storage/browser/file_system/file_system_operation_context.h"
#include "storage/browser/file_system/file_system_url.h"
#include "storage/common/file_system/file_system_mount_option.h"
#if BUILDFLAG(IS_ANDROID)
#include "base/android/content_uri_utils.h"
#endif
#if BUILDFLAG(IS_WIN)
#include "windows.h"
#endif
#if BUILDFLAG(IS_CHROMEOS)
#include <grp.h>
#endif
namespace storage {
namespace {
bool SetPlatformSpecificDirectoryPermissions(const base::FilePath& dir_path) { … }
bool CopyFileAndSync(const base::FilePath& from, const base::FilePath& to) { … }
}
PlatformFile;
class NativeFileEnumerator : public FileSystemFileUtil::AbstractFileEnumerator { … };
base::FilePath NativeFileEnumerator::Next() { … }
int64_t NativeFileEnumerator::Size() { … }
base::Time NativeFileEnumerator::LastModifiedTime() { … }
bool NativeFileEnumerator::IsDirectory() { … }
NativeFileUtil::CopyOrMoveMode NativeFileUtil::CopyOrMoveModeForDestination(
const FileSystemURL& dest_url,
bool copy) { … }
base::File NativeFileUtil::CreateOrOpen(const base::FilePath& path,
uint32_t file_flags) { … }
base::File::Error NativeFileUtil::EnsureFileExists(const base::FilePath& path,
bool* created) { … }
base::File::Error NativeFileUtil::CreateDirectory(const base::FilePath& path,
bool exclusive,
bool recursive) { … }
base::File::Error NativeFileUtil::GetFileInfo(const base::FilePath& path,
base::File::Info* file_info) { … }
std::unique_ptr<FileSystemFileUtil::AbstractFileEnumerator>
NativeFileUtil::CreateFileEnumerator(const base::FilePath& root_path,
bool recursive) { … }
base::File::Error NativeFileUtil::Touch(const base::FilePath& path,
const base::Time& last_access_time,
const base::Time& last_modified_time) { … }
base::File::Error NativeFileUtil::Truncate(const base::FilePath& path,
int64_t length) { … }
bool NativeFileUtil::PathExists(const base::FilePath& path) { … }
bool NativeFileUtil::DirectoryExists(const base::FilePath& path) { … }
base::File::Error NativeFileUtil::CopyOrMoveFile(
const base::FilePath& src_path,
const base::FilePath& dest_path,
FileSystemOperation::CopyOrMoveOptionSet options,
CopyOrMoveMode mode) { … }
base::File::Error NativeFileUtil::DeleteFile(const base::FilePath& path) { … }
base::File::Error NativeFileUtil::DeleteDirectory(const base::FilePath& path) { … }
}