blob: 991c3a59130aef7cc589011551e2e95258a01000 [file] [edit]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/base/resource/scoped_file_writer.h"
#include "base/compiler_specific.h"
#include "base/files/file_util.h"
#include "base/logging.h"
namespace ui {
// ScopedFileWriter implementation.
ScopedFileWriter::ScopedFileWriter(const base::FilePath& path)
: valid_(true),
file_(path, base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE) {
if (!file_.IsValid()) {
LOG(ERROR) << "Could not open pak file for writing: "
<< base::File::ErrorToString(file_.error_details());
valid_ = false;
}
}
ScopedFileWriter::~ScopedFileWriter() {
Close();
}
void ScopedFileWriter::Write(base::span<const uint8_t> data) {
if (data.empty()) {
return;
}
if (valid_ && !file_.WriteAtCurrentPosAndCheck(data)) {
PLOG(ERROR) << "Could not write to pak file";
valid_ = false;
}
}
bool ScopedFileWriter::Close() {
if (file_.IsValid()) {
file_.Close();
}
return valid_;
}
} // namespace ui