Use absl::Cleanup in storage::DatabaseTracker test helpers.
absl::Cleanup is a helper to run arbitrary code when the absl::Cleanup object goes out of scope, which is useful for executing cleanup code or ensuring something always runs. The current //base equivalent is base::ScopedClosureRunner, which executes a base::OnceClosure when the runner object goes out of scope. Compared to base::ScopedClosureRunner, there are several benefits to using absl::Cleanup: - works with capturing lambdas, which are often much more concise than base::BindOnce() - requires no heap allocations - less impact on binary size since absl::Cleanup instantiates fewer templates This CL is part of a project-wide cleanup to migrate to absl::Cleanup where appropriate. The general criteria for migrating usages of base::ScopedCLosureRunner: - The cleanup scoper must not escape block scope, e.g. it is not returned from the function, passed to another function, or bound into a callback. - The cleanup scoper's type does not need to be named, e.g. the scoper construction can use CTAD: absl::Cleanup run_at_exit = [] { RestoreSettings(original); }; Note: having to write absl::Cleanup<decltype(lambda)> as a type is often a sign that absl::Cleanup is not a good fit for how the code is currently structured. - The cleanup scoper is not simply running a base::OnceClosure. Bug: 339492604 Change-Id: Ic09233219ede932a5b4d6890fe294e6dfef86e5f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5530333 Reviewed-by: Ayu Ishii <ayui@chromium.org> Commit-Queue: Daniel Cheng <dcheng@chromium.org> Cr-Commit-Position: refs/heads/main@{#1298928}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
78bf4e3236
commit
81da54551c
@ -13,7 +13,6 @@
|
||||
#include "base/files/file_path.h"
|
||||
#include "base/files/file_util.h"
|
||||
#include "base/files/scoped_temp_dir.h"
|
||||
#include "base/functional/callback_helpers.h"
|
||||
#include "base/gtest_prod_util.h"
|
||||
#include "base/memory/ptr_util.h"
|
||||
#include "base/memory/scoped_refptr.h"
|
||||
@ -28,6 +27,7 @@
|
||||
#include "storage/browser/quota/quota_manager_proxy.h"
|
||||
#include "storage/common/database/database_identifier.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "third_party/abseil-cpp/absl/cleanup/cleanup.h"
|
||||
#include "third_party/sqlite/sqlite3.h"
|
||||
|
||||
namespace storage {
|
||||
@ -197,8 +197,7 @@ class DatabaseTracker_TestHelper_Test {
|
||||
base::RunLoop run_loop;
|
||||
tracker->task_runner()->PostTask(
|
||||
FROM_HERE, base::BindLambdaForTesting([&]() {
|
||||
base::ScopedClosureRunner quit_runner(
|
||||
base::BindLambdaForTesting([&]() { run_loop.Quit(); }));
|
||||
absl::Cleanup quit_runner = [&] { run_loop.Quit(); };
|
||||
|
||||
// Create and open three databases.
|
||||
int64_t database_size = 0;
|
||||
@ -301,8 +300,7 @@ class DatabaseTracker_TestHelper_Test {
|
||||
base::RunLoop run_loop;
|
||||
tracker->task_runner()->PostTask(
|
||||
FROM_HERE, base::BindLambdaForTesting([&]() {
|
||||
base::ScopedClosureRunner quit_runner(
|
||||
base::BindLambdaForTesting([&]() { run_loop.Quit(); }));
|
||||
absl::Cleanup quit_runner = [&] { run_loop.Quit(); };
|
||||
|
||||
// Add two observers.
|
||||
TestObserver observer1;
|
||||
@ -452,8 +450,7 @@ class DatabaseTracker_TestHelper_Test {
|
||||
base::RunLoop run_loop;
|
||||
tracker->task_runner()->PostTask(
|
||||
FROM_HERE, base::BindLambdaForTesting([&]() {
|
||||
base::ScopedClosureRunner quit_runner(
|
||||
base::BindLambdaForTesting([&]() { run_loop.Quit(); }));
|
||||
absl::Cleanup quit_runner = [&] { run_loop.Quit(); };
|
||||
|
||||
EXPECT_TRUE(test_quota_proxy->registered_client_);
|
||||
|
||||
@ -583,8 +580,7 @@ class DatabaseTracker_TestHelper_Test {
|
||||
base::RunLoop run_loop;
|
||||
tracker->task_runner()->PostTask(
|
||||
FROM_HERE, base::BindLambdaForTesting([&]() {
|
||||
base::ScopedClosureRunner quit_runner(
|
||||
base::BindLambdaForTesting([&]() { run_loop.Quit(); }));
|
||||
absl::Cleanup quit_runner = [&] { run_loop.Quit(); };
|
||||
|
||||
// Starts off with no databases.
|
||||
std::vector<OriginInfo> infos;
|
||||
@ -641,8 +637,7 @@ class DatabaseTracker_TestHelper_Test {
|
||||
base::RunLoop run_loop;
|
||||
tracker->task_runner()->PostTask(
|
||||
FROM_HERE, base::BindLambdaForTesting([&]() {
|
||||
base::ScopedClosureRunner quit_runner(
|
||||
base::BindLambdaForTesting([&]() { run_loop.Quit(); }));
|
||||
absl::Cleanup quit_runner = [&] { run_loop.Quit(); };
|
||||
|
||||
// Setup to observe OnScheduledForDelete notifications.
|
||||
TestObserver observer(false, true);
|
||||
|
Reference in New Issue
Block a user