commit | 7306fc8c28ab1155d357758b86a3dfbd06826d3f | [log] [tgz] |
---|---|---|
author | Daniel Cheng <dcheng@chromium.org> | Wed May 15 04:58:13 2024 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Wed May 15 04:58:13 2024 |
tree | 9a7425f7da9e1c12d6247ae42a4fe86f0bfdab36 | |
parent | 553f873325d9e3832c6a0818b42e67ff2ad3056f [diff] |
Use absl::Cleanup to ensure widgets are unblocked from closing. 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: I124db56965aa009cfd458ef40ade0c8440f90192 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5536274 Commit-Queue: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Elly FJ <ellyjones@chromium.org> Cr-Commit-Position: refs/heads/main@{#1301102}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.