58 lines
1.6 KiB
C++
58 lines
1.6 KiB
C++
|
|
// 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 "base/android/remove_stale_data.h"
|
||
|
|
|
||
|
|
#include "base/files/file_path.h"
|
||
|
|
#include "base/files/file_util.h"
|
||
|
|
#include "base/metrics/histogram_functions.h"
|
||
|
|
#include "base/task/task_traits.h"
|
||
|
|
#include "base/task/thread_pool.h"
|
||
|
|
#include "base/trace_event/base_tracing.h"
|
||
|
|
|
||
|
|
namespace base {
|
||
|
|
namespace android {
|
||
|
|
|
||
|
|
namespace {
|
||
|
|
|
||
|
|
// These values are persisted to logs. Entries should not be renumbered and
|
||
|
|
// numeric values should never be reused.
|
||
|
|
enum class DeleteResult {
|
||
|
|
kNotFound = 0,
|
||
|
|
kDeleted = 1,
|
||
|
|
kDeleteError = 2,
|
||
|
|
kMaxValue = kDeleteError,
|
||
|
|
};
|
||
|
|
|
||
|
|
void RecordDeleteResult(DeleteResult result) {
|
||
|
|
base::UmaHistogramEnumeration("NetworkService.ClearStaleDataDirectoryResult",
|
||
|
|
result);
|
||
|
|
}
|
||
|
|
|
||
|
|
void RemoveStaleDataDirectoryOnPool(const base::FilePath& data_directory) {
|
||
|
|
TRACE_EVENT0("startup", "RemoveStaleDataDirectoryOnPool");
|
||
|
|
if (!base::PathExists(data_directory)) {
|
||
|
|
RecordDeleteResult(DeleteResult::kNotFound);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (base::DeletePathRecursively(data_directory)) {
|
||
|
|
RecordDeleteResult(DeleteResult::kDeleted);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
RecordDeleteResult(DeleteResult::kDeleteError);
|
||
|
|
}
|
||
|
|
|
||
|
|
} // namespace
|
||
|
|
|
||
|
|
void RemoveStaleDataDirectory(const base::FilePath& data_directory) {
|
||
|
|
base::ThreadPool::PostTask(
|
||
|
|
FROM_HERE,
|
||
|
|
{base::TaskPriority::BEST_EFFORT, base::MayBlock(),
|
||
|
|
base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
|
||
|
|
base::BindOnce(&RemoveStaleDataDirectoryOnPool, data_directory));
|
||
|
|
}
|
||
|
|
|
||
|
|
} // namespace android
|
||
|
|
} // namespace base
|