[mojo] Migrate EnumTraits in //services to return by value [chromium/src : main]

0 views
Skip to first unread message

Jan Wilken Dörrie (Gerrit)

unread,
Mar 24, 2026, 9:41:59 AM (9 days ago) Mar 24
to Daniel Cheng, Chromium LUCI CQ, Jiewei Qian, Hu, Ningxin, AyeAye, mac-r...@chromium.org, network-ser...@chromium.org, chrome-intelligence-te...@google.com, chrome-intell...@chromium.org, chrome-gr...@chromium.org, marinacio...@chromium.org, spang...@chromium.org, wfh+...@chromium.org, olka+...@chromium.org, cfredri...@chromium.org, tracing...@chromium.org
Attention needed from Daniel Cheng

New activity on the change

Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Cheng
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: I28e35a51ce4fe53b6f61d072372ad1b76a6a6964
Gerrit-Change-Number: 7693695
Gerrit-PatchSet: 7
Gerrit-Owner: Jan Wilken Dörrie <jdoe...@chromium.org>
Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
Gerrit-Reviewer: Jan Wilken Dörrie <jdoe...@chromium.org>
Gerrit-CC: Hu, Ningxin <ningx...@intel.com>
Gerrit-CC: Jiewei Qian <q...@chromium.org>
Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
Gerrit-Comment-Date: Tue, 24 Mar 2026 13:41:44 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniel Cheng (Gerrit)

unread,
Mar 24, 2026, 1:21:49 PM (9 days ago) Mar 24
to Jan Wilken Dörrie, Daniel Cheng, Chromium LUCI CQ, Jiewei Qian, Hu, Ningxin, AyeAye, mac-r...@chromium.org, network-ser...@chromium.org, chrome-intelligence-te...@google.com, chrome-intell...@chromium.org, chrome-gr...@chromium.org, marinacio...@chromium.org, spang...@chromium.org, wfh+...@chromium.org, olka+...@chromium.org, cfredri...@chromium.org, tracing...@chromium.org
Attention needed from Jan Wilken Dörrie

Daniel Cheng voted and added 4 comments

Votes added by Daniel Cheng

Code-Review+1

4 comments

Patchset-level comments
File-level comment, Patchset 7 (Latest):
Daniel Cheng . resolved

LGTM

File mojo/public/cpp/bindings/lib/bindings_internal.h
Line 347, Patchset 7 (Latest):template <typename MojoT, typename T>
Daniel Cheng . unresolved

I think I would like to keep this template param named as MojomType, since that's how we refer to it in several other places: https://source.chromium.org/search?q=f:mojo%2Fpublic%2Fcpp%2Fbindings%20mojomtype%20lang:c%2B%2B&ss=chromium

File services/network/public/cpp/cookie_manager_mojom_traits.h
Line 230, Patchset 7 (Latest): cpk.IsThirdParty()));
Daniel Cheng . resolved

Flagging this for myself to followup.

File services/webnn/public/mojom/operand_descriptor_mojom_traits.cc
Line 107, Patchset 7 (Latest): return FromMojoDataType(input);
Daniel Cheng . resolved

Flagging this for myself to followup

Open in Gerrit

Related details

Attention is currently required from:
  • Jan Wilken Dörrie
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement 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: I28e35a51ce4fe53b6f61d072372ad1b76a6a6964
Gerrit-Change-Number: 7693695
Gerrit-PatchSet: 7
Gerrit-Owner: Jan Wilken Dörrie <jdoe...@chromium.org>
Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
Gerrit-Reviewer: Jan Wilken Dörrie <jdoe...@chromium.org>
Gerrit-CC: Hu, Ningxin <ningx...@intel.com>
Gerrit-CC: Jiewei Qian <q...@chromium.org>
Gerrit-Attention: Jan Wilken Dörrie <jdoe...@chromium.org>
Gerrit-Comment-Date: Tue, 24 Mar 2026 17:21:37 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Jan Wilken Dörrie (Gerrit)

unread,
Mar 24, 2026, 2:44:22 PM (9 days ago) Mar 24
to Daniel Cheng, Chromium LUCI CQ, Jiewei Qian, Hu, Ningxin, AyeAye, mac-r...@chromium.org, network-ser...@chromium.org, chrome-intelligence-te...@google.com, chrome-intell...@chromium.org, chrome-gr...@chromium.org, marinacio...@chromium.org, spang...@chromium.org, wfh+...@chromium.org, olka+...@chromium.org, cfredri...@chromium.org, tracing...@chromium.org

Jan Wilken Dörrie voted and added 1 comment

Votes added by Jan Wilken Dörrie

Commit-Queue+2

1 comment

File mojo/public/cpp/bindings/lib/bindings_internal.h
Line 347, Patchset 7:template <typename MojoT, typename T>
Daniel Cheng . resolved

I think I would like to keep this template param named as MojomType, since that's how we refer to it in several other places: https://source.chromium.org/search?q=f:mojo%2Fpublic%2Fcpp%2Fbindings%20mojomtype%20lang:c%2B%2B&ss=chromium

Jan Wilken Dörrie

Done

Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I28e35a51ce4fe53b6f61d072372ad1b76a6a6964
    Gerrit-Change-Number: 7693695
    Gerrit-PatchSet: 8
    Gerrit-Owner: Jan Wilken Dörrie <jdoe...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: Jan Wilken Dörrie <jdoe...@chromium.org>
    Gerrit-CC: Hu, Ningxin <ningx...@intel.com>
    Gerrit-CC: Jiewei Qian <q...@chromium.org>
    Gerrit-Comment-Date: Tue, 24 Mar 2026 18:44:08 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
    satisfied_requirement
    open
    diffy

    Jan Wilken Dörrie (Gerrit)

    unread,
    Mar 24, 2026, 3:41:30 PM (9 days ago) Mar 24
    to Daniel Cheng, Chromium LUCI CQ, Jiewei Qian, Hu, Ningxin, AyeAye, mac-r...@chromium.org, network-ser...@chromium.org, chrome-intelligence-te...@google.com, chrome-intell...@chromium.org, chrome-gr...@chromium.org, marinacio...@chromium.org, spang...@chromium.org, wfh+...@chromium.org, olka+...@chromium.org, cfredri...@chromium.org, tracing...@chromium.org

    Jan Wilken Dörrie voted Commit-Queue+2

    Commit-Queue+2
    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I28e35a51ce4fe53b6f61d072372ad1b76a6a6964
    Gerrit-Change-Number: 7693695
    Gerrit-PatchSet: 8
    Gerrit-Owner: Jan Wilken Dörrie <jdoe...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: Jan Wilken Dörrie <jdoe...@chromium.org>
    Gerrit-CC: Hu, Ningxin <ningx...@intel.com>
    Gerrit-CC: Jiewei Qian <q...@chromium.org>
    Gerrit-Comment-Date: Tue, 24 Mar 2026 19:41:13 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Chromium LUCI CQ (Gerrit)

    unread,
    Mar 24, 2026, 6:25:00 PM (9 days ago) Mar 24
    to Jan Wilken Dörrie, Daniel Cheng, Jiewei Qian, Hu, Ningxin, AyeAye, mac-r...@chromium.org, network-ser...@chromium.org, chrome-intelligence-te...@google.com, chrome-intell...@chromium.org, chrome-gr...@chromium.org, marinacio...@chromium.org, spang...@chromium.org, wfh+...@chromium.org, olka+...@chromium.org, cfredri...@chromium.org, tracing...@chromium.org

    Chromium LUCI CQ submitted the change with unreviewed changes

    Unreviewed changes

    7 is the latest approved patch-set.
    The change was submitted with unreviewed changes in the following files:

    ```
    The name of the file: mojo/public/cpp/bindings/lib/bindings_internal.h
    Insertions: 21, Deletions: 19.

    @@ -344,42 +344,44 @@
    }
    };

    -template <typename MojoT, typename T>
    - requires(requires(MojoT in) {
    - { EnumTraits<MojoT, T>::FromMojom(in) } -> std::same_as<T>;
    +template <typename MojomType, typename T>
    + requires(requires(MojomType in) {
    + { EnumTraits<MojomType, T>::FromMojom(in) } -> std::same_as<T>;
    })
    -T ConvertEnumValue(MojoT in) {
    - return EnumTraits<MojoT, T>::FromMojom(in);
    +T ConvertEnumValue(MojomType in) {
    + return EnumTraits<MojomType, T>::FromMojom(in);
    }

    -template <typename MojoT, typename T>
    - requires(requires(MojoT in) {
    - { EnumTraits<MojoT, T>::FromMojom(in) } -> std::same_as<std::optional<T>>;
    +template <typename MojomType, typename T>
    + requires(requires(MojomType in) {
    + {
    + EnumTraits<MojomType, T>::FromMojom(in)
    + } -> std::same_as<std::optional<T>>;
    })
    -T ConvertEnumValue(MojoT in) {
    - std::optional<T> out = EnumTraits<MojoT, T>::FromMojom(in);
    +T ConvertEnumValue(MojomType in) {
    + std::optional<T> out = EnumTraits<MojomType, T>::FromMojom(in);
    DCHECK(out.has_value());
    return *out;
    }

    -template <typename MojoT, typename T>
    -T ConvertEnumValue(MojoT in) {
    +template <typename MojomType, typename T>
    +T ConvertEnumValue(MojomType in) {
    T out;
    - bool result = EnumTraits<MojoT, T>::FromMojom(in, &out);
    + bool result = EnumTraits<MojomType, T>::FromMojom(in, &out);
    DCHECK(result);
    return out;
    }

    -template <typename MojoT>
    - requires(requires(MojoT in) {
    - { ToKnownEnumValue(in) } -> std::same_as<MojoT>;
    +template <typename MojomType>
    + requires(requires(MojomType in) {
    + { ToKnownEnumValue(in) } -> std::same_as<MojomType>;
    })
    -MojoT ToKnownEnumValueHelper(MojoT in) {
    +MojomType ToKnownEnumValueHelper(MojomType in) {
    return ToKnownEnumValue(in);
    }

    -template <typename MojoT>
    -MojoT ToKnownEnumValueHelper(MojoT in) {
    +template <typename MojomType>
    +MojomType ToKnownEnumValueHelper(MojomType in) {
    return in;
    }

    ```

    Change information

    Commit message:
    [mojo] Migrate EnumTraits in //services to return by value

    Update EnumTraits specializations in //services to use the new FromMojom
    signature. This returns the converted type directly for infallible
    conversions or wrapped in a std::optional for fallible ones, replacing
    the legacy boolean return and out-parameter pattern.

    The Mojo internal binding helpers and test utilities are also updated to
    support the new signatures using C++20 requires-expressions. This
    enables a gradual migration by maintaining backward compatibility with
    the legacy out-parameter signature while prioritizing the new
    return-by-value API when available.
    Bug: 483092898
    Change-Id: I28e35a51ce4fe53b6f61d072372ad1b76a6a6964
    Reviewed-by: Daniel Cheng <dch...@chromium.org>
    Commit-Queue: Jan Wilken Dörrie <jdoe...@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1604408}
    Files:
    • M mojo/public/cpp/bindings/lib/bindings_internal.h
    • M mojo/public/cpp/test_support/test_utils.h
    • M services/audio/public/cpp/debug_recording_mojom_traits.cc
    • M services/audio/public/cpp/debug_recording_mojom_traits.h
    • M services/network/host_resolver.cc
    • M services/network/public/cpp/address_family_mojom_traits.cc
    • M services/network/public/cpp/address_family_mojom_traits.h
    • M services/network/public/cpp/alternate_protocol_usage_mojom_traits.cc
    • M services/network/public/cpp/alternate_protocol_usage_mojom_traits.h
    • M services/network/public/cpp/connection_change_observer_client_mojom_traits.cc
    • M services/network/public/cpp/connection_change_observer_client_mojom_traits.h
    • M services/network/public/cpp/cookie_manager_mojom_traits.cc
    • M services/network/public/cpp/cookie_manager_mojom_traits.h
    • M services/network/public/cpp/cookie_manager_shared_mojom_traits.cc
    • M services/network/public/cpp/cookie_manager_shared_mojom_traits.h
    • M services/network/public/cpp/default_credentials_mojom_traits.cc
    • M services/network/public/cpp/default_credentials_mojom_traits.h
    • M services/network/public/cpp/default_credentials_mojom_traits_unittest.cc
    • M services/network/public/cpp/device_bound_sessions_mojom_traits.cc
    • M services/network/public/cpp/device_bound_sessions_mojom_traits.h
    • M services/network/public/cpp/digitally_signed_mojom_traits.h
    • M services/network/public/cpp/first_party_sets_mojom_traits.cc
    • M services/network/public/cpp/first_party_sets_mojom_traits.h
    • M services/network/public/cpp/host_resolver_mojom_traits.cc
    • M services/network/public/cpp/host_resolver_mojom_traits.h
    • M services/network/public/cpp/isolation_info_mojom_traits.cc
    • M services/network/public/cpp/isolation_info_mojom_traits.h
    • M services/network/public/cpp/load_timing_internal_info_mojom_traits.cc
    • M services/network/public/cpp/load_timing_internal_info_mojom_traits.h
    • M services/network/public/cpp/net_log_mojom_traits.cc
    • M services/network/public/cpp/net_log_mojom_traits.h
    • M services/network/public/cpp/net_log_mojom_traits_unittest.cc
    • M services/network/public/cpp/network_interface_mojom_traits.cc
    • M services/network/public/cpp/network_interface_mojom_traits.h
    • M services/network/public/cpp/network_isolation_partition_mojom_traits.cc
    • M services/network/public/cpp/network_isolation_partition_mojom_traits.h
    • M services/network/public/cpp/network_param_mojom_traits.cc
    • M services/network/public/cpp/network_param_mojom_traits.h
    • M services/network/public/cpp/p2p_param_traits.cc
    • M services/network/public/cpp/p2p_param_traits.h
    • M services/network/public/cpp/proxy_config_mojom_traits.cc
    • M services/network/public/cpp/proxy_config_mojom_traits.h
    • M services/network/public/cpp/reporting_api_report_mojom_traits.cc
    • M services/network/public/cpp/reporting_api_report_mojom_traits.h
    • M services/network/public/cpp/source_type_mojom_traits.cc
    • M services/network/public/cpp/source_type_mojom_traits.h
    • M services/network/public/cpp/storage_access_api_mojom_traits.cc
    • M services/network/public/cpp/storage_access_api_mojom_traits.h
    • M services/network/public/cpp/url_request_param_mojom_traits.cc
    • M services/network/public/cpp/url_request_param_mojom_traits.h
    • M services/on_device_model/public/cpp/chrome_ml_types_mojom_traits.cc
    • M services/on_device_model/public/cpp/chrome_ml_types_mojom_traits.h
    • M services/proxy_resolver/public/cpp/mojo_host_mojom_traits.cc
    • M services/proxy_resolver/public/cpp/mojo_host_mojom_traits.h
    • M services/proxy_resolver_mac/public/cpp/proxy_resolver_mac_mojom_traits.cc
    • M services/proxy_resolver_mac/public/cpp/proxy_resolver_mac_mojom_traits.h
    • M services/proxy_resolver_win/public/cpp/proxy_resolver_win_mojom_traits.cc
    • M services/proxy_resolver_win/public/cpp/proxy_resolver_win_mojom_traits.h
    • M services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation_mojom_traits.cc
    • M services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation_mojom_traits.h
    • M services/tracing/public/mojom/console_config_mojom_traits.h
    • M services/tracing/public/mojom/trace_config_mojom_traits.h
    • M services/viz/privileged/cpp/context_lost_reason_traits.h
    • M services/viz/privileged/cpp/overlay_strategy_mojom_traits.h
    • M services/viz/public/cpp/compositing/begin_frame_args_mojom_traits.cc
    • M services/viz/public/cpp/compositing/begin_frame_args_mojom_traits.h
    • M services/viz/public/cpp/compositing/blit_request_mojom_traits.cc
    • M services/viz/public/cpp/compositing/blit_request_mojom_traits.h
    • M services/viz/public/cpp/compositing/compositor_frame_transition_directive_mojom_traits.cc
    • M services/viz/public/cpp/compositing/compositor_frame_transition_directive_mojom_traits.h
    • M services/viz/public/cpp/compositing/copy_output_result_mojom_traits.cc
    • M services/viz/public/cpp/compositing/copy_output_result_mojom_traits.h
    • M services/viz/public/cpp/compositing/frame_interval_inputs_mojom_traits.cc
    • M services/viz/public/cpp/compositing/frame_interval_inputs_mojom_traits.h
    • M services/viz/public/cpp/compositing/quads_mojom_traits.h
    • M services/viz/public/cpp/compositing/shared_image_format_mojom_traits.cc
    • M services/viz/public/cpp/compositing/shared_image_format_mojom_traits.h
    • M services/viz/public/cpp/compositing/thread_mojom_traits.cc
    • M services/viz/public/cpp/compositing/thread_mojom_traits.h
    • M services/viz/public/cpp/compositing/transferable_resource_mojom_traits.cc
    • M services/viz/public/cpp/compositing/transferable_resource_mojom_traits.h
    • M services/viz/public/cpp/compositing/vertical_scroll_direction_mojom_traits.h
    • M services/webnn/public/mojom/operand_descriptor_mojom_traits.cc
    • M services/webnn/public/mojom/operand_descriptor_mojom_traits.h
    Change size: XL
    Delta: 84 files changed, 1191 insertions(+), 1477 deletions(-)
    Branch: refs/heads/main
    Submit Requirements:
    • requirement satisfiedCode-Review: +1 by Daniel Cheng
    Open in Gerrit
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: merged
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I28e35a51ce4fe53b6f61d072372ad1b76a6a6964
    Gerrit-Change-Number: 7693695
    Gerrit-PatchSet: 9
    Gerrit-Owner: Jan Wilken Dörrie <jdoe...@chromium.org>
    Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: Jan Wilken Dörrie <jdoe...@chromium.org>
    open
    diffy
    satisfied_requirement
    Reply all
    Reply to author
    Forward
    0 new messages