Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3374)

Unified Diff: base/files/important_file_writer.cc

Issue 1127963002: Implement lossy pref behavior for JsonPrefStore. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@prefs-fix-flags
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/files/important_file_writer.cc
diff --git a/base/files/important_file_writer.cc b/base/files/important_file_writer.cc
index 814fc7b9add0eb8e30d951b5784e8ec817c64055..e6fa3a3e896a657ecf04b7820f738ee477b2f46a 100644
--- a/base/files/important_file_writer.cc
+++ b/base/files/important_file_writer.cc
@@ -54,14 +54,14 @@ void LogFailure(const FilePath& path, TempFileFailure failure_code,
// Helper function to call WriteFileAtomically() with a scoped_ptr<std::string>.
bool WriteScopedStringToFileAtomically(const FilePath& path,
scoped_ptr<std::string> data) {
- return ImportantFileWriter::WriteFileAtomically(path, *data);
+ return ImportantFileWriterImpl::WriteFileAtomically(path, *data);
}
} // namespace
// static
-bool ImportantFileWriter::WriteFileAtomically(const FilePath& path,
- const std::string& data) {
+bool ImportantFileWriterImpl::WriteFileAtomically(const FilePath& path,
+ const std::string& data) {
#if defined(OS_CHROMEOS)
// On Chrome OS, chrome gets killed when it cannot finish shutdown quickly,
// and this function seems to be one of the slowest shutdown steps.
@@ -121,7 +121,7 @@ bool ImportantFileWriter::WriteFileAtomically(const FilePath& path,
return true;
}
-ImportantFileWriter::ImportantFileWriter(
+ImportantFileWriterImpl::ImportantFileWriterImpl(
const FilePath& path,
const scoped_refptr<base::SequencedTaskRunner>& task_runner)
: path_(path),
@@ -133,19 +133,19 @@ ImportantFileWriter::ImportantFileWriter(
DCHECK(task_runner_);
}
-ImportantFileWriter::~ImportantFileWriter() {
+ImportantFileWriterImpl::~ImportantFileWriterImpl() {
// We're usually a member variable of some other object, which also tends
// to be our serializer. It may not be safe to call back to the parent object
// being destructed.
DCHECK(!HasPendingWrite());
}
-bool ImportantFileWriter::HasPendingWrite() const {
+bool ImportantFileWriterImpl::HasPendingWrite() const {
DCHECK(CalledOnValidThread());
return timer_.IsRunning();
}
-void ImportantFileWriter::WriteNow(scoped_ptr<std::string> data) {
+void ImportantFileWriterImpl::WriteNow(scoped_ptr<std::string> data) {
DCHECK(CalledOnValidThread());
if (data->length() > static_cast<size_t>(kint32max)) {
NOTREACHED();
@@ -166,7 +166,7 @@ void ImportantFileWriter::WriteNow(scoped_ptr<std::string> data) {
}
}
-void ImportantFileWriter::ScheduleWrite(DataSerializer* serializer) {
+void ImportantFileWriterImpl::ScheduleWrite(DataSerializer* serializer) {
DCHECK(CalledOnValidThread());
DCHECK(serializer);
@@ -174,11 +174,11 @@ void ImportantFileWriter::ScheduleWrite(DataSerializer* serializer) {
if (!timer_.IsRunning()) {
timer_.Start(FROM_HERE, commit_interval_, this,
- &ImportantFileWriter::DoScheduledWrite);
+ &ImportantFileWriterImpl::DoScheduledWrite);
}
}
-void ImportantFileWriter::DoScheduledWrite() {
+void ImportantFileWriterImpl::DoScheduledWrite() {
DCHECK(serializer_);
scoped_ptr<std::string> data(new std::string);
if (serializer_->SerializeData(data.get())) {
@@ -190,13 +190,17 @@ void ImportantFileWriter::DoScheduledWrite() {
serializer_ = NULL;
}
-void ImportantFileWriter::RegisterOnNextSuccessfulWriteCallback(
+void ImportantFileWriterImpl::RegisterOnNextSuccessfulWriteCallback(
const base::Closure& on_next_successful_write) {
DCHECK(on_next_successful_write_.is_null());
on_next_successful_write_ = on_next_successful_write;
}
-bool ImportantFileWriter::PostWriteTask(const Callback<bool()>& task) {
+TimeDelta ImportantFileWriterImpl::CommitInterval() const {
+ return commit_interval_;
+}
+
+bool ImportantFileWriterImpl::PostWriteTask(const Callback<bool()>& task) {
// TODO(gab): This code could always use PostTaskAndReplyWithResult and let
// ForwardSuccessfulWrite() no-op if |on_next_successful_write_| is null, but
// PostTaskAndReply causes memory leaks in tests (crbug.com/371974) and
@@ -204,10 +208,8 @@ bool ImportantFileWriter::PostWriteTask(const Callback<bool()>& task) {
// using PostTask() in the typical scenario below.
if (!on_next_successful_write_.is_null()) {
return base::PostTaskAndReplyWithResult(
- task_runner_.get(),
- FROM_HERE,
- MakeCriticalClosure(task),
- Bind(&ImportantFileWriter::ForwardSuccessfulWrite,
+ task_runner_.get(), FROM_HERE, MakeCriticalClosure(task),
+ Bind(&ImportantFileWriterImpl::ForwardSuccessfulWrite,
weak_factory_.GetWeakPtr()));
}
return task_runner_->PostTask(
@@ -215,7 +217,7 @@ bool ImportantFileWriter::PostWriteTask(const Callback<bool()>& task) {
MakeCriticalClosure(base::Bind(IgnoreResult(task))));
}
-void ImportantFileWriter::ForwardSuccessfulWrite(bool result) {
+void ImportantFileWriterImpl::ForwardSuccessfulWrite(bool result) {
DCHECK(CalledOnValidThread());
if (result && !on_next_successful_write_.is_null()) {
on_next_successful_write_.Run();

Powered by Google App Engine
This is Rietveld 408576698