blob: ff15cb290a3b720704b2c16007957aa36a4db878 [file] [log] [blame]
// 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.
#include "chrome/browser/web_applications/test/test_file_utils.h"
#include <cstdint>
#include <utility>
#include "base/files/file_path.h"
#include "base/memory/scoped_refptr.h"
namespace web_app {
scoped_refptr<TestFileUtils> TestFileUtils::Create(
std::map<base::FilePath, base::FilePath> read_file_rerouting) {
return base::MakeRefCounted<TestFileUtils>(std::move(read_file_rerouting));
}
TestFileUtils::TestFileUtils(
std::map<base::FilePath, base::FilePath> read_file_rerouting)
: read_file_rerouting_(std::move(read_file_rerouting)) {}
TestFileUtils::~TestFileUtils() = default;
void TestFileUtils::SetRemainingDiskSpaceSize(int remaining_disk_space) {
remaining_disk_space_ = remaining_disk_space;
}
void TestFileUtils::SetNextDeleteFileRecursivelyResult(
std::optional<bool> delete_result) {
delete_file_recursively_result_ = delete_result;
}
bool TestFileUtils::WriteFile(const base::FilePath& filename,
base::span<const uint8_t> file_data) {
if (remaining_disk_space_ != kNoLimit) {
int data_size = base::checked_cast<int>(file_data.size());
if (data_size > remaining_disk_space_) {
// Disk full:
const int size_written = remaining_disk_space_;
if (size_written > 0) {
FileUtilsWrapper::WriteFile(filename, file_data);
}
remaining_disk_space_ = 0;
return size_written;
}
remaining_disk_space_ -= file_data.size();
}
return FileUtilsWrapper::WriteFile(filename, file_data);
}
bool TestFileUtils::ReadFileToString(const base::FilePath& path,
std::string* contents) {
for (const std::pair<const base::FilePath, base::FilePath>& route :
read_file_rerouting_) {
if (route.first == path)
return FileUtilsWrapper::ReadFileToString(route.second, contents);
}
return FileUtilsWrapper::ReadFileToString(path, contents);
}
bool TestFileUtils::DeleteFileRecursively(const base::FilePath& path) {
return delete_file_recursively_result_
? *delete_file_recursively_result_
: FileUtilsWrapper::DeleteFileRecursively(path);
}
TestFileUtils* TestFileUtils::AsTestFileUtils() {
return this;
}
} // namespace web_app