net/disk_cache/sql: Support entry creation on write in PersistentStore This CL updates SqlPersistentStore and its internal backend classes to support creating a new entry in the database during write operations. Previously, `WriteEntryData` and `WriteEntryDataAndMetadata` required an existing `ResId`. Now: - `WriteEntryData` accepts a `ResIdOrTime` variant. If a `base::Time` is provided, it creates a new entry with that creation time. - `WriteEntryDataAndMetadata` accepts an `std::optional<ResId>`. If `std::nullopt` is passed, it creates a new entry. This is a foundational step for implementing lazy entry creation in the SQL backend, allowing the actual database insertion to be deferred until data is written or the entry is closed. Lazy entry creation will be implemented in https://crrev.com/c/7532735. Bug: 479348720 Change-Id: I01ce2c6712f629ec0471f4c25faa8b95b4f9e860 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7544748 Reviewed-by: Nidhi Jaju <nidhijaju@chromium.org> Reviewed-by: Maks Orlovich <morlovich@chromium.org> Commit-Queue: Tsuyoshi Horo <horo@chromium.org> Cr-Commit-Position: refs/heads/main@{#1581251} NOKEYCHECK=True GitOrigin-RevId: 2288d17407947287ffa4ebc9ca067296004b439d
This document provides a high-level guide to the scripts and utilities in the //tools directory. Its purpose is to improve the discoverability of these tools for both human developers and AI assistants.
Many tools have their own README.md files with more detailed information.
gn/: Contains helper scripts for the GN meta-build system.grit/: The Google Resource and Internationalization Tool. Used for processing .grd files, which contain strings, images, and other resources that are compiled into the binary. See grit/README.md for details.json_schema_compiler/: A tool that takes a JSON schema as input and generates C++ classes for serialization and deserialization.mb/: The Meta-Build wrapper. A Python script that wraps GN argument generation and Ninja invocation for different configurations. See the user_guide.md for more.pgo/: Tools for Profile-Guided Optimization.clang/: Contains scripts for managing and using the Clang compiler and its related tools, such as clang-format and clang-tidy.checklicenses/: A script to check that all third-party code has an appropriate license. See licenses/README.md.pylint/: Scripts for running Python lint checks.code_analysis/: A directory for helper scripts that perform static analysis on the codebase.find_mojo_implementations.py: A script to find the C++ classes that implement a given Mojo interface.uberblame.py: A powerful tool for assigning blame for code changes.bisect/: Home of bisect-builds.py, a powerful script for automatically bisecting a regression by downloading pre-built revisions of Chrome.perf/: The primary location for performance testing tools and test suites. This is a large and complex area of the codebase.run-swarmed.py: A script for running tests on the Swarming distributed testing infrastructure.flakiness/: Tools for dealing with test flakiness. See flakiness/README.md.depot_tools, which is not in this directory. However, some in-tree tools exist.crates/: Scripts for managing third-party Rust libraries (crates) from crates.io.profiling/: Contains various scripts for profiling and analyzing performance, including heap and CPU profilers.memory/: Tools specifically for memory analysis, such as scripts for investigating memory leaks.binary_size/: Scripts for analyzing and diagnosing the binary size of Chrome.tracing/: Scripts for analyzing performance traces. See tracing/README.md.gdb/: GDB-related tools and scripts. See gdb/README.md.valgrind/: Valgrind-related tools and suppressions. See valgrind/README.md.symsrc/: Tools for managing symbols and source indexing. See symsrc/README.chromium.metrics/: Tools for UMA histograms and other metrics. See metrics/histograms/README.md and metrics/README.md.traffic_annotation/: Tools for annotating network traffic. See traffic_annotation/README.md.style_variable_generator/: Tools for generating C++ files from CSS variables. See style_variable_generator/README.md.typescript/: Tools for working with TypeScript in WebUI.cr/: A wrapper for many common developer commands. See cr/README.android/: Tools specific to the Android build and development process.chromeos/: Tools specific to ChromeOS development.fuchsia/: Tools specific to Fuchsia development.mac/: Tools specific to macOS development.win/: Tools specific to Windows development.