[sqlite_vfs] Move sandboxed SQLite VFS to its own component [chromium/src : main]

0 views
Skip to first unread message

Tsuyoshi Horo (Gerrit)

unread,
Jan 5, 2026, 11:22:47 PM (8 days ago) Jan 5
to Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
Attention needed from Greg Thompson

Tsuyoshi Horo added 1 comment

Patchset-level comments
File-level comment, Patchset 20 (Latest):
Tsuyoshi Horo . resolved

grt@

Could you please review this CL?

Thank you.

Open in Gerrit

Related details

Attention is currently required from:
  • Greg Thompson
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
Gerrit-Change-Number: 7378144
Gerrit-PatchSet: 20
Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
Gerrit-CC: Nate Chapin <jap...@chromium.org>
Gerrit-CC: Zijie He <zij...@google.com>
Gerrit-Attention: Greg Thompson <g...@chromium.org>
Gerrit-Comment-Date: Tue, 06 Jan 2026 04:22:16 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Greg Thompson (Gerrit)

unread,
Jan 7, 2026, 4:23:18 AM (7 days ago) Jan 7
to Tsuyoshi Horo, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
Attention needed from Tsuyoshi Horo

Greg Thompson added 2 comments

File components/persistent_cache/persistent_cache.h
Line 101, Patchset 20: sqlite_vfs::PendingBackend pending_backend);
Greg Thompson . unresolved

This change (the bulk-move of `PendingBackend` like this) locks `PersistentCache` into using this particular SQLite backend. This goes against my earlier remark that "persistent_cache::PendingBackend and its producers/consumers are designed to accommodate different types of backends. We would like to keep this in PC's object model."

Could you look into ways to change this split so that today's use of `PersistentCache` and `PendingBackend` aren't locked into SQLite like this?

File components/sqlite_vfs/pending_backend.h
File-level comment, Patchset 20:
Greg Thompson . unresolved

This change

Open in Gerrit

Related details

Attention is currently required from:
  • Tsuyoshi Horo
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
    Gerrit-Change-Number: 7378144
    Gerrit-PatchSet: 20
    Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
    Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-CC: Nate Chapin <jap...@chromium.org>
    Gerrit-CC: Zijie He <zij...@google.com>
    Gerrit-Attention: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Comment-Date: Wed, 07 Jan 2026 09:23:03 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Tsuyoshi Horo (Gerrit)

    unread,
    Jan 8, 2026, 2:10:18 AM (6 days ago) Jan 8
    to Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
    Attention needed from Greg Thompson

    Tsuyoshi Horo added 2 comments

    Patchset-level comments
    File-level comment, Patchset 26 (Latest):
    Tsuyoshi Horo . resolved

    Thank you.

    File components/persistent_cache/persistent_cache.h
    Line 101, Patchset 20: sqlite_vfs::PendingBackend pending_backend);
    Greg Thompson . resolved

    This change (the bulk-move of `PendingBackend` like this) locks `PersistentCache` into using this particular SQLite backend. This goes against my earlier remark that "persistent_cache::PendingBackend and its producers/consumers are designed to accommodate different types of backends. We would like to keep this in PC's object model."

    Could you look into ways to change this split so that today's use of `PersistentCache` and `PendingBackend` aren't locked into SQLite like this?

    Tsuyoshi Horo

    To address the concern about backend flexibility, I have moved the SQLite-specific data into a new sqlite_vfs::PendingFileSet struct. persistent_cache::PendingBackend now contains this struct as a member. I believe this structure better accommodates future backend types. I would appreciate your further review.

    Thank you.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Greg Thompson
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
    Gerrit-Change-Number: 7378144
    Gerrit-PatchSet: 26
    Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
    Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-CC: Nate Chapin <jap...@chromium.org>
    Gerrit-CC: Zijie He <zij...@google.com>
    Gerrit-Attention: Greg Thompson <g...@chromium.org>
    Gerrit-Comment-Date: Thu, 08 Jan 2026 07:09:56 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Greg Thompson <g...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Greg Thompson (Gerrit)

    unread,
    Jan 8, 2026, 5:49:38 AM (6 days ago) Jan 8
    to Tsuyoshi Horo, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
    Attention needed from Tsuyoshi Horo

    Greg Thompson added 17 comments

    Patchset-level comments
    Greg Thompson . resolved

    hi. this is getting closer. thanks for working on it.

    File components/persistent_cache/BUILD.gn
    Line 11, Patchset 26 (Latest): "pending_backend.h",
    Greg Thompson . unresolved

    since this file includes `components/sqlite_vfs/pending_file_set.h`, the `persistent_cache` target needs to list a target that provides that .h in its `public_deps`.

    since we don't want `persistent_cache` consumers to use any other facilities of `sqlite_vfs`, is it possible to split the latter into two targets: one that only has pending_file_set.h in its `public` list and is in `public_deps` here, and another that has the full implementation and is in `deps` here? this would help prevent consumers of `persistent_cache` from trying to use other bits of `sqlite_vfs` directly.

    File components/persistent_cache/backend_storage_unittest.cc
    Line 83, Patchset 26 (Latest): sqlite_vfs::PendingFileSet pending_file_set;
    Greg Thompson . unresolved

    can we not keep using `PendingBackend` here?

    File components/persistent_cache/mojom/BUILD.gn
    Line 12, Patchset 26 (Latest): "//mojo/public/mojom/base",
    Greg Thompson . unresolved

    no longer needed

    Line 49, Patchset 26 (Latest): deps = [ "//mojo/public/cpp/base:shared_typemap_traits" ]
    Greg Thompson . unresolved

    no longer needed

    File components/persistent_cache/pending_backend.h
    Line 17, Patchset 26 (Latest): explicit PendingBackend(sqlite_vfs::PendingFileSet pending_file_set);
    Greg Thompson . unresolved

    can we do something to restrict access to this ctor so that it can only be used by the sqlite `BackendStorageDelegate` impl and the mojom deserializer? maybe something with PassKey or private/friend? maybe `pending_file_set` can also be private?

    Line 9, Patchset 26 (Latest):#include "components/sqlite_vfs/pending_file_set.h"
    Greg Thompson . unresolved

    i think we should strive to make this the only sqlte_vfs header/type that is needed by consumers of persistent_cache. it would be really nice, actually, if `PendingBackend` was completely opaque to consumers of persistent_cache. persistent_cache consumers should never need to reach into a `PB` instance -- they should just get them and pass them across mojo connections to be consumed elsewhere. in particular, a persistent_cache consumer should never use sqlite_vfs APIs to get a `PendingFileSet` from somewhere else and then put it into a `PendingBackend`.

    not something i'm suggesting that you address here, just thinking out loud to share some design principles.

    File components/persistent_cache/pending_backend.cc
    Line 11, Patchset 26 (Latest): : pending_file_set(std::move(pending_file_set)) {}
    Greg Thompson . unresolved

    #include <utility>

    File components/persistent_cache/persistent_cache.h
    Line 138, Patchset 26 (Latest): sqlite_vfs::LockState Abandon();
    Greg Thompson . unresolved

    can we avoid leaking SQLite out through the API here? as it is, this forces all backends to use this SQLite-specific type.

    (same comment applies in Backend interface)

    File components/persistent_cache/sqlite/backend_storage_delegate.cc
    Line 51, Patchset 26 (Latest): auto pending_file_set = sqlite_vfs::ShareConnection(
    Greg Thompson . unresolved
    consider using `ASSIGN_OR_RETURN` from base/types/expected_macros.h. for example:
    ```
    ASSIGN_OR_RETURN(auto pending_file_set,
    sqlite_vfs::ShareConnection(...));
    return PendingBackend(std::move(pending_file_set));
    ```
    Line 55, Patchset 26 (Latest): return pending_file_set ? PendingBackend(std::move(*pending_file_set))
    Greg Thompson . unresolved

    nit: when moving a value out of an optional, use `*std::move(pending_file_set)` as per go/totw/181#moving-from-the-value-of-an-abslstatusor

    Line 56, Patchset 26 (Latest): : std::optional<PendingBackend>();
    Greg Thompson . unresolved

    nit: use `std::nullopt` for an empty optional.

    File components/sqlite_vfs/pending_file_set.h
    Line 23, Patchset 26 (Latest): struct COMPONENT_EXPORT(SQLITE_VFS) SqliteData {
    Greg Thompson . unresolved

    do we need this nested type here? this was present in persistent_cache so that we can support different backend types there. sqlite_vfs is the implementation of one specific type of backend, so i don't think we need that flexibility here.

    File components/sqlite_vfs/vfs_utils.h
    Line 58, Patchset 26 (Latest):std::optional<SqliteVfsFileSet> BindToFileSet(PendingFileSet pending_file_set);
    Greg Thompson . unresolved
    now that `PendingFileSet` and `SqliteVfsFileSet` are in the same component, should we make this a `static` factory function in `SqliteVfsFileSet` itself? for example:
    ```
    class SqliteVfsFileSet {
    public:
    static std::optional<SqliteVfsFileSet> Bind(PendingFileSet pending_file_set);
    ```
    Line 38, Patchset 26 (Latest):std::optional<PendingFileSet> ShareConnection(const base::FilePath& directory,
    Greg Thompson . unresolved

    this is a dangerous API, so i think we need some very scary text in the doc comment for it. previously, it was an implementation detail of `BackendStorageDelegate`, which isn't publicly accessible, so it was not possible for it to be misused.

    the issue is that we can only satisfy a request for r/o access to a `file_set` that holds r/w handles on POSIX if we know the paths to the files. if a caller accidentally provides a different `directory` or `base_name` here compared to when `file_set` was created, then the returned `PendingFileSet` could actually point to different file(s). the only use of this in persistent_cache (PersistentCacheCollection::ShareReadOnlyConnection) is safe because it doesn't give the caller an opportunity to confuse matters.

    at the very least, there should be some text in the comment saying that the caller **MUST** ensure that `directory` and `base_name` are identical to those used when `MakePendingFileSet` was called to obtain `file_set` in the first place.

    Line 13, Patchset 26 (Latest):#include "base/files/file_path.h"
    Greg Thompson . unresolved

    forward-declare `FilePath` and move this to .cc

    Line 8, Patchset 26 (Latest):#include <stdint.h>
    Greg Thompson . unresolved

    unused?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Tsuyoshi Horo
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
    Gerrit-Change-Number: 7378144
    Gerrit-PatchSet: 26
    Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
    Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-CC: Nate Chapin <jap...@chromium.org>
    Gerrit-CC: Zijie He <zij...@google.com>
    Gerrit-Attention: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Comment-Date: Thu, 08 Jan 2026 10:49:24 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Tsuyoshi Horo (Gerrit)

    unread,
    Jan 8, 2026, 11:18:43 PM (5 days ago) Jan 8
    to Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
    Attention needed from Greg Thompson

    Tsuyoshi Horo added 17 comments

    Tsuyoshi Horo . resolved

    Thank you

    File components/persistent_cache/BUILD.gn
    Line 11, Patchset 26: "pending_backend.h",
    Greg Thompson . resolved

    since this file includes `components/sqlite_vfs/pending_file_set.h`, the `persistent_cache` target needs to list a target that provides that .h in its `public_deps`.

    since we don't want `persistent_cache` consumers to use any other facilities of `sqlite_vfs`, is it possible to split the latter into two targets: one that only has pending_file_set.h in its `public` list and is in `public_deps` here, and another that has the full implementation and is in `deps` here? this would help prevent consumers of `persistent_cache` from trying to use other bits of `sqlite_vfs` directly.

    Tsuyoshi Horo

    Done

    File components/persistent_cache/backend_storage_unittest.cc
    Line 83, Patchset 26: sqlite_vfs::PendingFileSet pending_file_set;
    Greg Thompson . unresolved

    can we not keep using `PendingBackend` here?

    Tsuyoshi Horo

    Could you please clarify what you mean by "not keep using PendingBackend"? If you meant we should avoid directly using sqlite_vfs::PendingFileSet here, I have updated the code to no longer use it.

    File components/persistent_cache/mojom/BUILD.gn
    Line 12, Patchset 26: "//mojo/public/mojom/base",
    Greg Thompson . resolved

    no longer needed

    Tsuyoshi Horo

    Done

    Line 49, Patchset 26: deps = [ "//mojo/public/cpp/base:shared_typemap_traits" ]
    Greg Thompson . resolved

    no longer needed

    Tsuyoshi Horo

    Done

    File components/persistent_cache/pending_backend.h
    Line 17, Patchset 26: explicit PendingBackend(sqlite_vfs::PendingFileSet pending_file_set);
    Greg Thompson . resolved

    can we do something to restrict access to this ctor so that it can only be used by the sqlite `BackendStorageDelegate` impl and the mojom deserializer? maybe something with PassKey or private/friend? maybe `pending_file_set` can also be private?

    Tsuyoshi Horo

    Done

    Line 9, Patchset 26:#include "components/sqlite_vfs/pending_file_set.h"
    Greg Thompson . resolved

    i think we should strive to make this the only sqlte_vfs header/type that is needed by consumers of persistent_cache. it would be really nice, actually, if `PendingBackend` was completely opaque to consumers of persistent_cache. persistent_cache consumers should never need to reach into a `PB` instance -- they should just get them and pass them across mojo connections to be consumed elsewhere. in particular, a persistent_cache consumer should never use sqlite_vfs APIs to get a `PendingFileSet` from somewhere else and then put it into a `PendingBackend`.

    not something i'm suggesting that you address here, just thinking out loud to share some design principles.

    Tsuyoshi Horo

    Acknowledged

    File components/persistent_cache/pending_backend.cc
    Line 11, Patchset 26: : pending_file_set(std::move(pending_file_set)) {}
    Greg Thompson . resolved

    #include <utility>

    Tsuyoshi Horo

    Done

    File components/persistent_cache/persistent_cache.h
    Line 138, Patchset 26: sqlite_vfs::LockState Abandon();
    Greg Thompson . resolved

    can we avoid leaking SQLite out through the API here? as it is, this forces all backends to use this SQLite-specific type.

    (same comment applies in Backend interface)

    Tsuyoshi Horo

    Modified this method and Backend::Abandon() and SqliteVfsFileSet::Abandon() return a bool.

    File components/persistent_cache/sqlite/backend_storage_delegate.cc
    Line 51, Patchset 26: auto pending_file_set = sqlite_vfs::ShareConnection(
    Greg Thompson . resolved
    consider using `ASSIGN_OR_RETURN` from base/types/expected_macros.h. for example:
    ```
    ASSIGN_OR_RETURN(auto pending_file_set,
    sqlite_vfs::ShareConnection(...));
    return PendingBackend(std::move(pending_file_set));
    ```
    Tsuyoshi Horo

    Done

    Line 55, Patchset 26: return pending_file_set ? PendingBackend(std::move(*pending_file_set))
    Greg Thompson . resolved

    nit: when moving a value out of an optional, use `*std::move(pending_file_set)` as per go/totw/181#moving-from-the-value-of-an-abslstatusor

    Tsuyoshi Horo

    Done

    Line 56, Patchset 26: : std::optional<PendingBackend>();
    Greg Thompson . resolved

    nit: use `std::nullopt` for an empty optional.

    Tsuyoshi Horo

    Done

    File components/sqlite_vfs/pending_file_set.h
    Line 23, Patchset 26: struct COMPONENT_EXPORT(SQLITE_VFS) SqliteData {
    Greg Thompson . resolved

    do we need this nested type here? this was present in persistent_cache so that we can support different backend types there. sqlite_vfs is the implementation of one specific type of backend, so i don't think we need that flexibility here.

    Tsuyoshi Horo

    Sounds good. Flattened the PendingFileSet struct.

    File components/sqlite_vfs/vfs_utils.h
    Line 58, Patchset 26:std::optional<SqliteVfsFileSet> BindToFileSet(PendingFileSet pending_file_set);
    Greg Thompson . resolved
    now that `PendingFileSet` and `SqliteVfsFileSet` are in the same component, should we make this a `static` factory function in `SqliteVfsFileSet` itself? for example:
    ```
    class SqliteVfsFileSet {
    public:
    static std::optional<SqliteVfsFileSet> Bind(PendingFileSet pending_file_set);
    ```
    Tsuyoshi Horo

    Done

    Line 38, Patchset 26:std::optional<PendingFileSet> ShareConnection(const base::FilePath& directory,
    Greg Thompson . resolved

    this is a dangerous API, so i think we need some very scary text in the doc comment for it. previously, it was an implementation detail of `BackendStorageDelegate`, which isn't publicly accessible, so it was not possible for it to be misused.

    the issue is that we can only satisfy a request for r/o access to a `file_set` that holds r/w handles on POSIX if we know the paths to the files. if a caller accidentally provides a different `directory` or `base_name` here compared to when `file_set` was created, then the returned `PendingFileSet` could actually point to different file(s). the only use of this in persistent_cache (PersistentCacheCollection::ShareReadOnlyConnection) is safe because it doesn't give the caller an opportunity to confuse matters.

    at the very least, there should be some text in the comment saying that the caller **MUST** ensure that `directory` and `base_name` are identical to those used when `MakePendingFileSet` was called to obtain `file_set` in the first place.

    Tsuyoshi Horo

    Added comments.

    Line 13, Patchset 26:#include "base/files/file_path.h"
    Greg Thompson . resolved

    forward-declare `FilePath` and move this to .cc

    Tsuyoshi Horo

    Done

    Line 8, Patchset 26:#include <stdint.h>
    Greg Thompson . resolved

    unused?

    Tsuyoshi Horo

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Greg Thompson
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
    Gerrit-Change-Number: 7378144
    Gerrit-PatchSet: 30
    Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
    Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-CC: Nate Chapin <jap...@chromium.org>
    Gerrit-CC: Zijie He <zij...@google.com>
    Gerrit-Attention: Greg Thompson <g...@chromium.org>
    Gerrit-Comment-Date: Fri, 09 Jan 2026 04:18:07 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Greg Thompson <g...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Greg Thompson (Gerrit)

    unread,
    Jan 9, 2026, 4:30:57 AM (5 days ago) Jan 9
    to Tsuyoshi Horo, Olivier Li, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
    Attention needed from Olivier Li and Tsuyoshi Horo

    Greg Thompson added 9 comments

    File components/persistent_cache/backend_storage_unittest.cc
    Line 83, Patchset 26: sqlite_vfs::PendingFileSet pending_file_set;
    Greg Thompson . resolved

    can we not keep using `PendingBackend` here?

    Tsuyoshi Horo

    Could you please clarify what you mean by "not keep using PendingBackend"? If you meant we should avoid directly using sqlite_vfs::PendingFileSet here, I have updated the code to no longer use it.

    Greg Thompson

    yup, that was what i meant. apologies for the confusing request. :-)

    Line 83, Patchset 30 (Parent): PendingBackend pending_backend;
    pending_backend.read_write = true;
    Greg Thompson . unresolved

    this was here so that the expectation on line 91 can verify that the exact instance returned by the delegate is the one that ends up in `result` on line 88. is it possible to keep this as it was? as it is now in patch set 30, `backend_storage().MakePendingBackend(...)` could ignore the result from the delegate and return some other empty `PendingBackend`.

    File components/persistent_cache/persistent_cache.h
    Line 138, Patchset 26: sqlite_vfs::LockState Abandon();
    Greg Thompson . unresolved

    can we avoid leaking SQLite out through the API here? as it is, this forces all backends to use this SQLite-specific type.

    (same comment applies in Backend interface)

    Tsuyoshi Horo

    Modified this method and Backend::Abandon() and SqliteVfsFileSet::Abandon() return a bool.

    Greg Thompson

    i'm checking with @oliv...@chromium.org about this. while the bool works for what we have here today, i don't remember if we were planning to handle the two cases differently someday.

    if this change is okay, i would suggest making this API change in its own CL so that this and the sqlite_vfs extraction are independent.

    File components/sqlite_vfs/BUILD.gn
    Line 42, Patchset 30 (Latest): "//base",
    Greg Thompson . unresolved

    this should be in a `public_deps` block since the public headers include files from //base.

    Line 43, Patchset 30 (Latest): "//sql",
    Greg Thompson . unresolved

    this, too

    File components/sqlite_vfs/sqlite_database_vfs_file_set.h
    Line 72, Patchset 30 (Latest): // Marks the file as no longer suitable for use. Returns true if some
    // connections had a view of the files while abandoning. Should only be used
    Greg Thompson . unresolved

    this isn't quite correct. true means that another connection to the file set held either a shared reader lock or the exclusive pending/reserved writer lock.

    i think it's important that we make this comment a bit more verbose and precise since this is now becoming a public API (it was previously an implementation detail of Persistent Cache). i propose:
    ```
    // Permanently marks this file set's database as no longer suitable for use by
    // any connection. Returns true if any connection to the database holds either
    // a shared reader lock; or the reserved, pending, or exclusive lock. All
    // subsequent attempts to lock the database by any connection will fail with
    // SQLITE_IOERR_LOCK. Clients accessing a database by such a file set should
    // handle this error by closing their connection. When `Abandon()` returns
    // false, it is safe to re-establish new connections to the same files.
    // Conversely, the backing files should be deleted if a file set is abandoned
    // while any other connection holds a lock since it is not possible to know
    // when all outstanding connections have been closed.
    ```
    does that make sense to you?
    Line 30, Patchset 30 (Latest): static std::optional<SqliteVfsFileSet> Bind(PendingFileSet pending_file_set);
    Greg Thompson . unresolved

    #include <optional>

    File components/sqlite_vfs/vfs_utils.cc
    Line 28, Patchset 30 (Latest):base::File DuplicateFile(const base::File& source_file,
    Greg Thompson . unresolved

    #include "base/files/file.h"

    Line 32, Patchset 30 (Latest): CHECK(source_file.IsValid());
    Greg Thompson . unresolved

    #include "base/check.h"

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Olivier Li
    • Tsuyoshi Horo
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
    Gerrit-Change-Number: 7378144
    Gerrit-PatchSet: 30
    Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
    Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-CC: Nate Chapin <jap...@chromium.org>
    Gerrit-CC: Olivier Li <oliv...@chromium.org>
    Gerrit-CC: Zijie He <zij...@google.com>
    Gerrit-Attention: Tsuyoshi Horo <ho...@chromium.org>
    Gerrit-Attention: Olivier Li <oliv...@chromium.org>
    Gerrit-Comment-Date: Fri, 09 Jan 2026 09:30:40 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Tsuyoshi Horo <ho...@chromium.org>
    Comment-In-Reply-To: Greg Thompson <g...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Greg Thompson (Gerrit)

    unread,
    Jan 9, 2026, 10:10:27 AM (5 days ago) Jan 9
    to Tsuyoshi Horo, Olivier Li, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
    Attention needed from Olivier Li and Tsuyoshi Horo

    Greg Thompson added 1 comment

    File components/persistent_cache/persistent_cache.h
    Line 138, Patchset 26: sqlite_vfs::LockState Abandon();
    Greg Thompson . unresolved

    can we avoid leaking SQLite out through the API here? as it is, this forces all backends to use this SQLite-specific type.

    (same comment applies in Backend interface)

    Tsuyoshi Horo

    Modified this method and Backend::Abandon() and SqliteVfsFileSet::Abandon() return a bool.

    Greg Thompson

    i'm checking with @oliv...@chromium.org about this. while the bool works for what we have here today, i don't remember if we were planning to handle the two cases differently someday.

    if this change is okay, i would suggest making this API change in its own CL so that this and the sqlite_vfs extraction are independent.

    Greg Thompson

    Olivier points out that the tristate enables an optimization whereby a copy of the files can be used after `Abandon` if the lock was held only by readers.

    one way to deal with this is to simply have LockState in both namespaces. mapping from one to the other could be done via `switch` or direct casting w/ some `static_assert`s to ensure at compile time that the values match.

    Gerrit-Comment-Date: Fri, 09 Jan 2026 15:10:08 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Tsuyoshi Horo (Gerrit)

    unread,
    5:25 AM (18 hours ago) 5:25 AM
    to Olivier Li, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
    Attention needed from Greg Thompson and Olivier Li

    Tsuyoshi Horo voted and added 10 comments

    Votes added by Tsuyoshi Horo

    Commit-Queue+0

    10 comments

    Patchset-level comments
    File-level comment, Patchset 31 (Latest):
    Tsuyoshi Horo . resolved

    Thank you very much!

    File components/persistent_cache/backend_storage_unittest.cc
    Line 83, Patchset 30 (Parent): PendingBackend pending_backend;
    pending_backend.read_write = true;
    Greg Thompson . resolved

    this was here so that the expectation on line 91 can verify that the exact instance returned by the delegate is the one that ends up in `result` on line 88. is it possible to keep this as it was? as it is now in patch set 30, `backend_storage().MakePendingBackend(...)` could ignore the result from the delegate and return some other empty `PendingBackend`.

    Tsuyoshi Horo

    Done

    File components/persistent_cache/persistent_cache.h
    Line 138, Patchset 26: sqlite_vfs::LockState Abandon();
    Greg Thompson . resolved

    can we avoid leaking SQLite out through the API here? as it is, this forces all backends to use this SQLite-specific type.

    (same comment applies in Backend interface)

    Tsuyoshi Horo

    Modified this method and Backend::Abandon() and SqliteVfsFileSet::Abandon() return a bool.

    Greg Thompson

    i'm checking with @oliv...@chromium.org about this. while the bool works for what we have here today, i don't remember if we were planning to handle the two cases differently someday.

    if this change is okay, i would suggest making this API change in its own CL so that this and the sqlite_vfs extraction are independent.

    Greg Thompson

    Olivier points out that the tristate enables an optimization whereby a copy of the files can be used after `Abandon` if the lock was held only by readers.

    one way to deal with this is to simply have LockState in both namespaces. mapping from one to the other could be done via `switch` or direct casting w/ some `static_assert`s to ensure at compile time that the values match.

    Tsuyoshi Horo

    Thanks!

    Done via `switch`.

    File components/sqlite_vfs/BUILD.gn
    Line 42, Patchset 30: "//base",
    Greg Thompson . resolved

    this should be in a `public_deps` block since the public headers include files from //base.

    Tsuyoshi Horo

    Done

    Line 43, Patchset 30: "//sql",
    Greg Thompson . resolved

    this, too

    Tsuyoshi Horo

    Done

    File components/sqlite_vfs/pending_backend.h
    Greg Thompson . resolved

    This change

    Tsuyoshi Horo

    Acknowledged

    File components/sqlite_vfs/sqlite_database_vfs_file_set.h
    Line 72, Patchset 30: // Marks the file as no longer suitable for use. Returns true if some

    // connections had a view of the files while abandoning. Should only be used
    Greg Thompson . resolved

    this isn't quite correct. true means that another connection to the file set held either a shared reader lock or the exclusive pending/reserved writer lock.

    i think it's important that we make this comment a bit more verbose and precise since this is now becoming a public API (it was previously an implementation detail of Persistent Cache). i propose:
    ```
    // Permanently marks this file set's database as no longer suitable for use by
    // any connection. Returns true if any connection to the database holds either
    // a shared reader lock; or the reserved, pending, or exclusive lock. All
    // subsequent attempts to lock the database by any connection will fail with
    // SQLITE_IOERR_LOCK. Clients accessing a database by such a file set should
    // handle this error by closing their connection. When `Abandon()` returns
    // false, it is safe to re-establish new connections to the same files.
    // Conversely, the backing files should be deleted if a file set is abandoned
    // while any other connection holds a lock since it is not possible to know
    // when all outstanding connections have been closed.
    ```
    does that make sense to you?
    Tsuyoshi Horo

    Done.

    Line 30, Patchset 30: static std::optional<SqliteVfsFileSet> Bind(PendingFileSet pending_file_set);
    Greg Thompson . resolved

    #include <optional>

    Tsuyoshi Horo

    Done

    File components/sqlite_vfs/vfs_utils.cc
    Line 28, Patchset 30:base::File DuplicateFile(const base::File& source_file,
    Greg Thompson . resolved

    #include "base/files/file.h"

    Tsuyoshi Horo

    Done

    Line 32, Patchset 30: CHECK(source_file.IsValid());
    Greg Thompson . resolved

    #include "base/check.h"

    Tsuyoshi Horo

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Greg Thompson
    • Olivier Li
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
      Gerrit-Change-Number: 7378144
      Gerrit-PatchSet: 31
      Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
      Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
      Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
      Gerrit-CC: Nate Chapin <jap...@chromium.org>
      Gerrit-CC: Olivier Li <oliv...@chromium.org>
      Gerrit-CC: Zijie He <zij...@google.com>
      Gerrit-Attention: Greg Thompson <g...@chromium.org>
      Gerrit-Attention: Olivier Li <oliv...@chromium.org>
      Gerrit-Comment-Date: Tue, 13 Jan 2026 10:24:44 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Greg Thompson (Gerrit)

      unread,
      6:08 AM (17 hours ago) 6:08 AM
      to Tsuyoshi Horo, Olivier Li, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
      Attention needed from Olivier Li and Tsuyoshi Horo

      Greg Thompson voted and added 3 comments

      Votes added by Greg Thompson

      Code-Review+1

      3 comments

      Patchset-level comments
      Greg Thompson . resolved

      lgtm with two nits. thanks for the extra changes.

      File components/persistent_cache/sqlite/backend_storage_delegate.cc
      Line 26, Patchset 31 (Latest): auto pending_file_set = sqlite_vfs::MakePendingFileSet(
      directory, base_name, single_connection, journal_mode_wal);
      if (!pending_file_set) {
      return std::nullopt;
      }
      return PendingBackend(std::move(*pending_file_set));
      Greg Thompson . unresolved
      nit:
      ```
      ASSIGN_OR_RETURN(
      auto pending_file_set,
      sqlite_vfs::MakePendingFileSet(directory, base_name, single_connection,
      journal_mode_wal));
      return PendingBackend(std::move(pending_file_set));
      ```
      or, if you prefer to not use the macro, please switch to `*std::move(pending_file_set)` on the last line.
      File components/persistent_cache/sqlite/sqlite_backend_impl.cc
      Line 59, Patchset 31 (Latest): auto instance = base::WrapUnique(new SqliteBackendImpl(std::move(*file_set)));
      Greg Thompson . unresolved

      nit: `*std::move(file_set)`

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Olivier Li
      • Tsuyoshi Horo
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
        Gerrit-Change-Number: 7378144
        Gerrit-PatchSet: 31
        Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
        Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
        Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Olivier Li <oliv...@chromium.org>
        Gerrit-CC: Zijie He <zij...@google.com>
        Gerrit-Attention: Tsuyoshi Horo <ho...@chromium.org>
        Gerrit-Attention: Olivier Li <oliv...@chromium.org>
        Gerrit-Comment-Date: Tue, 13 Jan 2026 11:07:45 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Tsuyoshi Horo (Gerrit)

        unread,
        6:37 AM (17 hours ago) 6:37 AM
        to Greg Thompson, Olivier Li, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
        Attention needed from Olivier Li

        Tsuyoshi Horo added 3 comments

        Patchset-level comments
        File-level comment, Patchset 32 (Latest):
        Tsuyoshi Horo . resolved

        Thanks for the LGTM!

        File components/persistent_cache/sqlite/backend_storage_delegate.cc
        Line 26, Patchset 31: auto pending_file_set = sqlite_vfs::MakePendingFileSet(

        directory, base_name, single_connection, journal_mode_wal);
        if (!pending_file_set) {
        return std::nullopt;
        }
        return PendingBackend(std::move(*pending_file_set));
        Greg Thompson . resolved
        nit:
        ```
        ASSIGN_OR_RETURN(
        auto pending_file_set,
        sqlite_vfs::MakePendingFileSet(directory, base_name, single_connection,
        journal_mode_wal));
        return PendingBackend(std::move(pending_file_set));
        ```
        or, if you prefer to not use the macro, please switch to `*std::move(pending_file_set)` on the last line.
        Tsuyoshi Horo

        Done

        File components/persistent_cache/sqlite/sqlite_backend_impl.cc
        Line 59, Patchset 31: auto instance = base::WrapUnique(new SqliteBackendImpl(std::move(*file_set)));
        Greg Thompson . resolved

        nit: `*std::move(file_set)`

        Tsuyoshi Horo

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Olivier Li
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement satisfiedCode-Review
          • requirement satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
          Gerrit-Change-Number: 7378144
          Gerrit-PatchSet: 32
          Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
          Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
          Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
          Gerrit-CC: Nate Chapin <jap...@chromium.org>
          Gerrit-CC: Olivier Li <oliv...@chromium.org>
          Gerrit-CC: Zijie He <zij...@google.com>
          Gerrit-Attention: Olivier Li <oliv...@chromium.org>
          Gerrit-Comment-Date: Tue, 13 Jan 2026 11:36:38 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Greg Thompson <g...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Tsuyoshi Horo (Gerrit)

          unread,
          6:37 AM (17 hours ago) 6:37 AM
          to Olivier Li, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
          Attention needed from Olivier Li

          Tsuyoshi Horo added 1 comment

          Patchset-level comments
          Tsuyoshi Horo . resolved

          Hi Olivier, could you please review this CL as an OWNER?
          Thanks!

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Olivier Li
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement satisfiedCode-Review
          • requirement satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
          Gerrit-Change-Number: 7378144
          Gerrit-PatchSet: 32
          Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
          Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
          Gerrit-Reviewer: Olivier Li <oliv...@chromium.org>
          Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
          Gerrit-CC: Nate Chapin <jap...@chromium.org>
          Gerrit-CC: Zijie He <zij...@google.com>
          Gerrit-Attention: Olivier Li <oliv...@chromium.org>
          Gerrit-Comment-Date: Tue, 13 Jan 2026 11:37:23 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Olivier Li (Gerrit)

          unread,
          11:11 AM (12 hours ago) 11:11 AM
          to Tsuyoshi Horo, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
          Attention needed from Tsuyoshi Horo

          Olivier Li added 4 comments

          Patchset-level comments
          Olivier Li . resolved

          Looks good to me 😊

          Please adress the comment about metric names before committing with a TODO or a fix.

          Thanks!

          File components/persistent_cache/DEPS
          Line 6, Patchset 32 (Latest): # persistent_cache is not expected to depend on other components (except
          Olivier Li . unresolved

          Nit:

          Might be a bit clearer to say:

          `persistent_cache is expectly to depend only on sqlite_vfs ... `

          File components/persistent_cache/lock_state.h
          Line 13, Patchset 32 (Latest):// Note: This enum is currently a copy of sqlite_vfs::LockState.
          Olivier Li . unresolved

          Could this be enforced with `LINT.ThenChange`?

          File components/sqlite_vfs/vfs_utils.cc
          Line 97, Patchset 32 (Latest): base::UmaHistogramExactLinear("PersistentCache.Sqlite.DbFile.CreateResult",
          Olivier Li . unresolved

          For now this is not going to change much but can we please make sure that this is renamed properly when PersistentCache is not the only code calling the function. Preferably the would be a prefix for PersitentCache and one for HttpCache.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Tsuyoshi Horo
          Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement is not satisfiedCode-Owners
            • requirement satisfiedCode-Review
            • requirement is not satisfiedNo-Unresolved-Comments
            • requirement satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
            Gerrit-Change-Number: 7378144
            Gerrit-PatchSet: 32
            Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
            Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
            Gerrit-Reviewer: Olivier Li <oliv...@chromium.org>
            Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
            Gerrit-CC: Nate Chapin <jap...@chromium.org>
            Gerrit-CC: Zijie He <zij...@google.com>
            Gerrit-Attention: Tsuyoshi Horo <ho...@chromium.org>
            Gerrit-Comment-Date: Tue, 13 Jan 2026 16:11:31 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Olivier Li (Gerrit)

            unread,
            11:11 AM (12 hours ago) 11:11 AM
            to Tsuyoshi Horo, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
            Attention needed from Tsuyoshi Horo

            Olivier Li voted Code-Review+1

            Code-Review+1
            Gerrit-Comment-Date: Tue, 13 Jan 2026 16:11:42 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Tsuyoshi Horo (Gerrit)

            unread,
            8:54 PM (2 hours ago) 8:54 PM
            to Olivier Li, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org

            Tsuyoshi Horo added 4 comments

            Patchset-level comments
            File-level comment, Patchset 33 (Latest):
            Tsuyoshi Horo . resolved

            Thank you very much.

            File components/persistent_cache/DEPS
            Line 6, Patchset 32: # persistent_cache is not expected to depend on other components (except
            Olivier Li . resolved

            Nit:

            Might be a bit clearer to say:

            `persistent_cache is expectly to depend only on sqlite_vfs ... `

            Tsuyoshi Horo

            Done

            File components/persistent_cache/lock_state.h
            Line 13, Patchset 32:// Note: This enum is currently a copy of sqlite_vfs::LockState.
            Olivier Li . resolved

            Could this be enforced with `LINT.ThenChange`?

            Tsuyoshi Horo

            Done

            File components/sqlite_vfs/vfs_utils.cc
            Line 97, Patchset 32: base::UmaHistogramExactLinear("PersistentCache.Sqlite.DbFile.CreateResult",
            Olivier Li . resolved

            For now this is not going to change much but can we please make sure that this is renamed properly when PersistentCache is not the only code calling the function. Preferably the would be a prefix for PersitentCache and one for HttpCache.

            Tsuyoshi Horo

            Done. I've added TODO comments in several places.

            Open in Gerrit

            Related details

            Attention set is empty
            Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement satisfiedCode-Review
              • requirement satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: chromium/src
              Gerrit-Branch: main
              Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
              Gerrit-Change-Number: 7378144
              Gerrit-PatchSet: 33
              Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
              Gerrit-Reviewer: Olivier Li <oliv...@chromium.org>
              Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-CC: Nate Chapin <jap...@chromium.org>
              Gerrit-CC: Zijie He <zij...@google.com>
              Gerrit-Comment-Date: Wed, 14 Jan 2026 01:53:42 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              Comment-In-Reply-To: Olivier Li <oliv...@chromium.org>
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Tsuyoshi Horo (Gerrit)

              unread,
              8:55 PM (2 hours ago) 8:55 PM
              to Tommy Nyquist, Olivier Li, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
              Attention needed from Tommy Nyquist

              Tsuyoshi Horo added 1 comment

              Patchset-level comments
              Tsuyoshi Horo . resolved

              nyquist@
              Could you please review this CL as an OWNER of `//components/`? This CL refactors the sandboxed SQLite Virtual File System (VFS) implementation in `//components/persistent_cache` to make it reusable by other components and adds a new component, `//components/sqlite_vfs`.

              Thank you.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Tommy Nyquist
              Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement satisfiedCode-Review
              • requirement satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: chromium/src
              Gerrit-Branch: main
              Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
              Gerrit-Change-Number: 7378144
              Gerrit-PatchSet: 33
              Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
              Gerrit-Reviewer: Olivier Li <oliv...@chromium.org>
              Gerrit-Reviewer: Tommy Nyquist <nyq...@chromium.org>
              Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-CC: Nate Chapin <jap...@chromium.org>
              Gerrit-CC: Zijie He <zij...@google.com>
              Gerrit-Attention: Tommy Nyquist <nyq...@chromium.org>
              Gerrit-Comment-Date: Wed, 14 Jan 2026 01:54:51 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Tsuyoshi Horo (Gerrit)

              unread,
              8:58 PM (2 hours ago) 8:58 PM
              to Chromium IPC Reviews, Tommy Nyquist, Olivier Li, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
              Attention needed from Chromium IPC Reviews and Tommy Nyquist

              Tsuyoshi Horo added 1 comment

              Patchset-level comments
              Tsuyoshi Horo . resolved

              chrome-ip...@google.com

              Please review files under `components/persistent_cache/mojom/` and `components/sqlite_vfs/mojom/`.

              Thank you.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Chromium IPC Reviews
              • Tommy Nyquist
              Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement satisfiedCode-Review
              • requirement satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: chromium/src
              Gerrit-Branch: main
              Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
              Gerrit-Change-Number: 7378144
              Gerrit-PatchSet: 33
              Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-Reviewer: Chromium IPC Reviews <chrome-ip...@google.com>
              Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
              Gerrit-Reviewer: Olivier Li <oliv...@chromium.org>
              Gerrit-Reviewer: Tommy Nyquist <nyq...@chromium.org>
              Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-CC: Nate Chapin <jap...@chromium.org>
              Gerrit-CC: Zijie He <zij...@google.com>
              Gerrit-Attention: Tommy Nyquist <nyq...@chromium.org>
              Gerrit-Attention: Chromium IPC Reviews <chrome-ip...@google.com>
              Gerrit-Comment-Date: Wed, 14 Jan 2026 01:57:52 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              gwsq (Gerrit)

              unread,
              8:59 PM (2 hours ago) 8:59 PM
              to Tsuyoshi Horo, Chromium IPC Reviews, Hidehiko Abe, Tommy Nyquist, Olivier Li, Greg Thompson, Chromium LUCI CQ, Zijie He, Nate Chapin, AyeAye, chromium...@chromium.org, gavinp...@chromium.org, loading...@chromium.org, blink-re...@chromium.org, kinuko...@chromium.org, dullweb...@chromium.org, cc-...@chromium.org, blink-...@chromium.org, loading-re...@chromium.org, fuchsia...@chromium.org, alexmo...@chromium.org, creis...@chromium.org, msrame...@chromium.org, navigation...@chromium.org, droger+w...@chromium.org, gavin...@chromium.org, grt+...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org
              Attention needed from Hidehiko Abe and Tommy Nyquist

              Message from gwsq

              From googleclient/chrome/chromium_gwsq/ipc/config.gwsq:
              IPC: hide...@chromium.org

              📎 It looks like you’re making a possibly security-sensitive change! 📎 IPC security review isn’t a rubberstamp, so your friendly security reviewer will need a fair amount of context to review your CL effectively. Please review your CL description and code comments to make sure they provide context for someone unfamiliar with your project/area. Pay special attention to where data comes from and which processes it flows between (and their privilege levels). Feel free to point your security reviewer at design docs, bugs, or other links if you can’t reasonably make a self-contained CL description. (Also see https://cbea.ms/git-commit/).

              IPC reviewer(s): hide...@chromium.org


              Reviewer source(s):
              hide...@chromium.org is from context(googleclient/chrome/chromium_gwsq/ipc/config.gwsq)

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Hidehiko Abe
              • Tommy Nyquist
              Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement satisfiedCode-Review
              • requirement satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: chromium/src
              Gerrit-Branch: main
              Gerrit-Change-Id: Ic554fcc4d9a7dc92a446a7aacaba3dc0754a04fb
              Gerrit-Change-Number: 7378144
              Gerrit-PatchSet: 33
              Gerrit-Owner: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
              Gerrit-Reviewer: Hidehiko Abe <hide...@chromium.org>
              Gerrit-Reviewer: Olivier Li <oliv...@chromium.org>
              Gerrit-Reviewer: Tommy Nyquist <nyq...@chromium.org>
              Gerrit-Reviewer: Tsuyoshi Horo <ho...@chromium.org>
              Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
              Gerrit-CC: Nate Chapin <jap...@chromium.org>
              Gerrit-CC: Zijie He <zij...@google.com>
              Gerrit-CC: gwsq
              Gerrit-Attention: Tommy Nyquist <nyq...@chromium.org>
              Gerrit-Attention: Hidehiko Abe <hide...@chromium.org>
              Gerrit-Comment-Date: Wed, 14 Jan 2026 01:59:23 +0000
              Gerrit-HasComments: No
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy
              Reply all
              Reply to author
              Forward
              0 new messages