Add SSM support to Direct Sockets API (services/network and Blink layers) [chromium/src : main]

0 views
Skip to first unread message

Omar Ramadan (Gerrit)

unread,
Nov 21, 2025, 3:42:19 PM11/21/25
to chromium...@chromium.org, Andrew Rayskiy, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org

Omar Ramadan abandoned this change

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • 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: abandon
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Id11508b7f43b1fd63afd1edb7b5e99a97e0ec29f
Gerrit-Change-Number: 7182218
Gerrit-PatchSet: 4
Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
Gerrit-CC: Andrew Rayskiy <green...@google.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-CC: Simon Hangl <sim...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Vlad Krot (Gerrit)

unread,
Nov 24, 2025, 8:07:00 AM11/24/25
to Omar Ramadan, Andrew Rayskiy, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
Attention needed from Andrew Rayskiy, Omar Ramadan and Reilly Grant

Vlad Krot added 2 comments

File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
Line 109, Patchset 14 (Latest): Vector<String> joined_groups_;
Vlad Krot . unresolved

Why not hold MembershipKey in this vector? Then string operations to join strings + "@" won't be necessary.

File third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
Line 840, Patchset 14 (Latest): 'net::IPAddress',
Vlad Krot . unresolved

Why this is needed?

Open in Gerrit

Related details

Attention is currently required from:
  • Andrew Rayskiy
  • Omar Ramadan
  • Reilly Grant
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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
Gerrit-Change-Number: 7186747
Gerrit-PatchSet: 14
Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
Gerrit-Reviewer: Vlad Krot <vk...@google.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-CC: Simon Hangl <sim...@google.com>
Gerrit-Attention: Reilly Grant <rei...@chromium.org>
Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
Gerrit-Attention: Andrew Rayskiy <green...@google.com>
Gerrit-Comment-Date: Mon, 24 Nov 2025 13:06:43 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Vlad Krot (Gerrit)

unread,
Nov 24, 2025, 8:11:11 AM11/24/25
to Omar Ramadan, Andrew Rayskiy, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
Attention needed from Andrew Rayskiy, Omar Ramadan and Reilly Grant

Vlad Krot added 1 comment

File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
Line 40, Patchset 14 (Latest):std::optional<net::IPAddress> MulticastController::ParseAndValidateIPAddress(
Vlad Krot . unresolved

IsValidMulticastAddress can be included in this function. It is fine if old joinGroup/leaveGroup will also be checked for multicast address.

Gerrit-Comment-Date: Mon, 24 Nov 2025 13:10:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Omar Ramadan (Gerrit)

unread,
Nov 24, 2025, 11:51:04 AM11/24/25
to Andrew Rayskiy, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
Attention needed from Andrew Rayskiy, Reilly Grant and Vlad Krot

Omar Ramadan added 3 comments

File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
Line 109, Patchset 14: Vector<String> joined_groups_;
Vlad Krot . resolved

Why not hold MembershipKey in this vector? Then string operations to join strings + "@" won't be necessary.

Omar Ramadan

Done. Changed joined_groups_ from Vector<String> to Vector<MembershipKey> to eliminate string concatenation operations.

File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
Line 40, Patchset 14:std::optional<net::IPAddress> MulticastController::ParseAndValidateIPAddress(
Vlad Krot . resolved

IsValidMulticastAddress can be included in this function. It is fine if old joinGroup/leaveGroup will also be checked for multicast address.

Omar Ramadan

Done. Created ParseAndValidateMulticastAddress() and ParseAndValidateUnicastAddress() that include the multicast check. Both joinGroup and leaveGroup now validate addresses appropriately.

File third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
Line 840, Patchset 14: 'net::IPAddress',
Vlad Krot . resolved

Why this is needed?

Omar Ramadan

MulticastController uses it in the public API for ParseAndValidateIPAddress and IsValidMulticastAddress. The audit tool requires explicit approval for non-Blink types used in Blink code.

Open in Gerrit

Related details

Attention is currently required from:
  • Andrew Rayskiy
  • Reilly Grant
  • Vlad Krot
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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
    Gerrit-Change-Number: 7186747
    Gerrit-PatchSet: 15
    Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
    Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
    Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
    Gerrit-Reviewer: Vlad Krot <vk...@google.com>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-CC: Simon Hangl <sim...@google.com>
    Gerrit-Attention: Reilly Grant <rei...@chromium.org>
    Gerrit-Attention: Andrew Rayskiy <green...@google.com>
    Gerrit-Attention: Vlad Krot <vk...@google.com>
    Gerrit-Comment-Date: Mon, 24 Nov 2025 16:50:45 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Vlad Krot <vk...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Vlad Krot (Gerrit)

    unread,
    Nov 24, 2025, 12:03:21 PM11/24/25
    to Omar Ramadan, Andrew Rayskiy, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
    Attention needed from Andrew Rayskiy, Omar Ramadan and Reilly Grant

    Vlad Krot added 2 comments

    File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
    Line 116, Patchset 15 (Latest): HeapHashMap<String, Member<ScriptPromiseResolver<IDLUndefined>>>
    Vlad Krot . unresolved

    Why not use MembershipKey here as well as a key. Then membership_key_str will not be necessary. The hashing function will be required.

    Line 94, Patchset 15 (Latest): const String& ip_string,
    Vlad Krot . unresolved

    Since these functions are not used anywhere outside of this file, I recommend to move them to .cc and to anynimous namespace. This will also eliminate the need for touching third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Andrew Rayskiy
    • Omar Ramadan
    • Reilly Grant
    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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
      Gerrit-Change-Number: 7186747
      Gerrit-PatchSet: 15
      Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
      Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
      Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
      Gerrit-Reviewer: Vlad Krot <vk...@google.com>
      Gerrit-CC: Kentaro Hara <har...@chromium.org>
      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
      Gerrit-CC: Simon Hangl <sim...@google.com>
      Gerrit-Attention: Reilly Grant <rei...@chromium.org>
      Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
      Gerrit-Comment-Date: Mon, 24 Nov 2025 17:03:08 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Omar Ramadan (Gerrit)

      unread,
      Nov 24, 2025, 2:24:40 PM11/24/25
      to Andrew Rayskiy, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
      Attention needed from Andrew Rayskiy, Reilly Grant and Vlad Krot

      Omar Ramadan added 2 comments

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
      Line 116, Patchset 15: HeapHashMap<String, Member<ScriptPromiseResolver<IDLUndefined>>>
      Vlad Krot . resolved

      Why not use MembershipKey here as well as a key. Then membership_key_str will not be necessary. The hashing function will be required.

      Omar Ramadan

      Changed HeapHashMap keys from String to MembershipKey with custom hash function, eliminating membership_key_str conversions.

      Line 94, Patchset 15: const String& ip_string,
      Vlad Krot . unresolved

      Since these functions are not used anywhere outside of this file, I recommend to move them to .cc and to anynimous namespace. This will also eliminate the need for touching third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py

      Omar Ramadan

      Moved to anonymous namespace in .cc but audit still complained about net::IPAddress although was already used in multicast_controller.cc. Is it safe to ignore?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andrew Rayskiy
      • Reilly Grant
      • Vlad Krot
      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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
      Gerrit-Change-Number: 7186747
      Gerrit-PatchSet: 17
      Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
      Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
      Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
      Gerrit-Reviewer: Vlad Krot <vk...@google.com>
      Gerrit-CC: Kentaro Hara <har...@chromium.org>
      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
      Gerrit-CC: Simon Hangl <sim...@google.com>
      Gerrit-Attention: Reilly Grant <rei...@chromium.org>
      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
      Gerrit-Attention: Vlad Krot <vk...@google.com>
      Gerrit-Comment-Date: Mon, 24 Nov 2025 19:24:20 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Vlad Krot <vk...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Reilly Grant (Gerrit)

      unread,
      Nov 24, 2025, 3:00:47 PM11/24/25
      to Omar Ramadan, Andrew Rayskiy, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
      Attention needed from Andrew Rayskiy, Omar Ramadan and Vlad Krot

      Reilly Grant added 2 comments

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
      Line 27, Patchset 17 (Latest):bool IsValidMulticastAddress(const net::IPAddress& address) {
      Reilly Grant . unresolved

      Consider adding this to `IPAddress` like the existing `IsPubliclyRoutable` method.

      Line 140, Patchset 17 (Latest): return {};
      Reilly Grant . unresolved

      We now need to catch the case where an empty string was provided for this non-optional parameter.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andrew Rayskiy
      • Omar Ramadan
      • Vlad Krot
      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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
      Gerrit-Change-Number: 7186747
      Gerrit-PatchSet: 17
      Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
      Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
      Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
      Gerrit-Reviewer: Vlad Krot <vk...@google.com>
      Gerrit-CC: Kentaro Hara <har...@chromium.org>
      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
      Gerrit-CC: Simon Hangl <sim...@google.com>
      Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
      Gerrit-Attention: Vlad Krot <vk...@google.com>
      Gerrit-Comment-Date: Mon, 24 Nov 2025 20:00:37 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Reilly Grant (Gerrit)

      unread,
      Nov 24, 2025, 3:02:27 PM11/24/25
      to Omar Ramadan, Andrew Rayskiy, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
      Attention needed from Andrew Rayskiy, Omar Ramadan and Vlad Krot

      Reilly Grant added 1 comment

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.idl
      Line 14, Patchset 17 (Latest): Promise<undefined> joinGroup(DOMString ipAddress, optional DOMString? sourceAddress);
      Reilly Grant . unresolved

      Create a new feature in `runtime_enabled_features.json5` for this and add the [RuntimeEnabled] attribute to `sourceAddress` so that it's only accepted if the feature is enabled.

      Gerrit-Comment-Date: Mon, 24 Nov 2025 20:02:16 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Andrew Rayskiy (Gerrit)

      unread,
      Nov 25, 2025, 7:45:25 AM11/25/25
      to Omar Ramadan, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
      Attention needed from Omar Ramadan and Vlad Krot

      Andrew Rayskiy added 8 comments

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
      Line 94, Patchset 17 (Latest): return StringHash::GetHash(key.group) ^
      Andrew Rayskiy . unresolved

      Tbh I'd rather do a `StringHash::GetHash(key.ToString())` here -- it's unique enough

      Line 87, Patchset 17 (Latest): bool operator==(const MembershipKey& other) const {
      Andrew Rayskiy . unresolved

      just default the operator?

      Line 81, Patchset 17 (Latest): String source; // Empty for ASM
      Andrew Rayskiy . unresolved

      `optional<>`?

      Line 80, Patchset 17 (Latest): String group;
      Andrew Rayskiy . unresolved

      I'd just keep `IP`, `IP` here instead of strings

      Line 42, Patchset 17 (Latest): ScriptPromise<IDLUndefined> joinGroup(ScriptState*,
      Andrew Rayskiy . unresolved

      Wouldn't it be simpler to merge these functions? With `(ScriptState*, const String&, MulticastGroupOptions*, ExceptionState&`)?

      Line 94, Patchset 15: const String& ip_string,
      Vlad Krot . resolved

      Since these functions are not used anywhere outside of this file, I recommend to move them to .cc and to anynimous namespace. This will also eliminate the need for touching third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py

      Omar Ramadan

      Moved to anonymous namespace in .cc but audit still complained about net::IPAddress although was already used in multicast_controller.cc. Is it safe to ignore?

      Andrew Rayskiy

      Yes, it's fine.

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
      Line 260, Patchset 17 (Latest): MembershipKey key;
      Andrew Rayskiy . unresolved

      I'd create a proper constructor for this which takes `(const IP&, const optional<IP>&)`

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.idl
      Line 14, Patchset 16: Promise<undefined> joinGroup(DOMString ipAddress, optional DOMString? sourceAddress);
      Andrew Rayskiy . unresolved

      I believe you wanted to go with MulticastGroupOptions as per the spec PR?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Omar Ramadan
      • Vlad Krot
      Gerrit-Attention: Vlad Krot <vk...@google.com>
      Gerrit-Comment-Date: Tue, 25 Nov 2025 12:45:12 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Omar Ramadan <om...@blockcast.net>
      Comment-In-Reply-To: Vlad Krot <vk...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Omar Ramadan (Gerrit)

      unread,
      Nov 26, 2025, 11:48:49 AM11/26/25
      to AyeAye, Andrew Rayskiy, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
      Attention needed from Andrew Rayskiy, Reilly Grant and Vlad Krot

      Omar Ramadan added 11 comments

      Patchset-level comments
      File-level comment, Patchset 18 (Latest):
      Omar Ramadan . resolved

      thank you so much for the quick review all, and guiding me as a first time contributor. sorry for tagging folks unnecessarily

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
      Line 94, Patchset 17: return StringHash::GetHash(key.group) ^
      Andrew Rayskiy . resolved

      Tbh I'd rather do a `StringHash::GetHash(key.ToString())` here -- it's unique enough

      Omar Ramadan

      Done

      Line 87, Patchset 17: bool operator==(const MembershipKey& other) const {
      Andrew Rayskiy . resolved

      just default the operator?

      Omar Ramadan

      Done

      Line 81, Patchset 17: String source; // Empty for ASM
      Andrew Rayskiy . resolved

      `optional<>`?

      Omar Ramadan

      Done

      Line 80, Patchset 17: String group;
      Andrew Rayskiy . resolved

      I'd just keep `IP`, `IP` here instead of strings

      Omar Ramadan

      Done

      Line 42, Patchset 17: ScriptPromise<IDLUndefined> joinGroup(ScriptState*,
      Andrew Rayskiy . resolved

      Wouldn't it be simpler to merge these functions? With `(ScriptState*, const String&, MulticastGroupOptions*, ExceptionState&`)?

      Omar Ramadan

      Done

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
      Line 27, Patchset 17:bool IsValidMulticastAddress(const net::IPAddress& address) {
      Reilly Grant . resolved

      Consider adding this to `IPAddress` like the existing `IsPubliclyRoutable` method.

      Omar Ramadan

      Done

      Line 140, Patchset 17: return {};
      Reilly Grant . resolved

      We now need to catch the case where an empty string was provided for this non-optional parameter.

      Omar Ramadan

      Done

      Line 260, Patchset 17: MembershipKey key;
      Andrew Rayskiy . resolved

      I'd create a proper constructor for this which takes `(const IP&, const optional<IP>&)`

      Omar Ramadan

      Done

      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.idl
      Line 14, Patchset 16: Promise<undefined> joinGroup(DOMString ipAddress, optional DOMString? sourceAddress);
      Andrew Rayskiy . resolved

      I believe you wanted to go with MulticastGroupOptions as per the spec PR?

      Omar Ramadan

      Done

      Line 14, Patchset 17: Promise<undefined> joinGroup(DOMString ipAddress, optional DOMString? sourceAddress);
      Reilly Grant . resolved

      Create a new feature in `runtime_enabled_features.json5` for this and add the [RuntimeEnabled] attribute to `sourceAddress` so that it's only accepted if the feature is enabled.

      Omar Ramadan

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andrew Rayskiy
      • Reilly Grant
      • Vlad Krot
      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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
        Gerrit-Change-Number: 7186747
        Gerrit-PatchSet: 18
        Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
        Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
        Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
        Gerrit-Reviewer: Vlad Krot <vk...@google.com>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-CC: Simon Hangl <sim...@google.com>
        Gerrit-Attention: Reilly Grant <rei...@chromium.org>
        Gerrit-Attention: Andrew Rayskiy <green...@google.com>
        Gerrit-Attention: Vlad Krot <vk...@google.com>
        Gerrit-Comment-Date: Wed, 26 Nov 2025 16:48:33 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Reilly Grant <rei...@chromium.org>
        Comment-In-Reply-To: Andrew Rayskiy <green...@google.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Reilly Grant (Gerrit)

        unread,
        Nov 26, 2025, 7:49:30 PM11/26/25
        to Omar Ramadan, AyeAye, Andrew Rayskiy, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
        Attention needed from Andrew Rayskiy, Omar Ramadan and Vlad Krot

        Reilly Grant added 5 comments

        File net/base/ip_address.cc
        Line 214, Patchset 19 (Latest):bool IPAddress::IsMulticast() const {
        Reilly Grant . unresolved

        Use `IPAddressPrefixCheck` in this method.

        File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
        Line 140, Patchset 19 (Latest): if (!group_ip.has_value()) {
        return {};
        }
        Reilly Grant . unresolved
        I would move the check above into here to make sure we always catch cases where `group_ip` is nullopt without an exception having been thrown.
        ```suggestion
        if (!group_ip.has_value()) {
        if (!exception_state.HadException()) {
        exception_state.ThrowTypeError("ipAddress must not be empty");
        }
        return {};
        }
        ```
        File third_party/blink/renderer/modules/direct_sockets/multicast_controller.idl
        Line 2, Patchset 19 (Latest): required DOMString groupAddress;
        Reilly Grant . unresolved
        ```suggestion
        DOMString groupAddress;
        ```
        File third_party/blink/renderer/modules/direct_sockets/multicast_controller_unittest.cc
        Line 32, Patchset 19 (Latest):MulticastGroupOptions MakeSourceOptions(const char* source_address) {
        Reilly Grant . unresolved

        ```suggestion
        MulticastGroupOptions MakeSourceOptions(std::string_view source_address) {
        ```

        File third_party/blink/renderer/platform/runtime_enabled_features.json5
        Line 3434, Patchset 19 (Latest): status: "stable",
        Reilly Grant . unresolved

        This lets us land this change before the Intent to Ship is approved.

        ```suggestion
        status: "experimental",
        ```
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Andrew Rayskiy
        • Omar Ramadan
        • Vlad Krot
        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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
          Gerrit-Change-Number: 7186747
          Gerrit-PatchSet: 19
          Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
          Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
          Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
          Gerrit-Reviewer: Vlad Krot <vk...@google.com>
          Gerrit-CC: Kentaro Hara <har...@chromium.org>
          Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
          Gerrit-CC: Simon Hangl <sim...@google.com>
          Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
          Gerrit-Attention: Andrew Rayskiy <green...@google.com>
          Gerrit-Attention: Vlad Krot <vk...@google.com>
          Gerrit-Comment-Date: Thu, 27 Nov 2025 00:49:23 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Omar Ramadan (Gerrit)

          unread,
          Nov 26, 2025, 8:16:47 PM11/26/25
          to AyeAye, Andrew Rayskiy, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
          Attention needed from Andrew Rayskiy, Reilly Grant and Vlad Krot

          Omar Ramadan added 6 comments

          Patchset-level comments
          File-level comment, Patchset 19:
          Omar Ramadan . resolved

          tysm! addressing comments + rebase

          File net/base/ip_address.cc
          Line 214, Patchset 19:bool IPAddress::IsMulticast() const {
          Reilly Grant . resolved

          Use `IPAddressPrefixCheck` in this method.

          Omar Ramadan

          Done

          File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
          Line 140, Patchset 19: if (!group_ip.has_value()) {
          return {};
          }
          Reilly Grant . resolved
          I would move the check above into here to make sure we always catch cases where `group_ip` is nullopt without an exception having been thrown.
          ```suggestion
          if (!group_ip.has_value()) {
          if (!exception_state.HadException()) {
          exception_state.ThrowTypeError("ipAddress must not be empty");
          }
          return {};
          }
          ```
          Omar Ramadan

          Done

          File third_party/blink/renderer/modules/direct_sockets/multicast_controller.idl
          Line 2, Patchset 19: required DOMString groupAddress;
          Reilly Grant . resolved
          ```suggestion
          DOMString groupAddress;
          ```
          Omar Ramadan

          Done

          File third_party/blink/renderer/modules/direct_sockets/multicast_controller_unittest.cc
          Line 32, Patchset 19:MulticastGroupOptions MakeSourceOptions(const char* source_address) {
          Reilly Grant . resolved

          ```suggestion
          MulticastGroupOptions MakeSourceOptions(std::string_view source_address) {
          ```

          Omar Ramadan

          Done

          File third_party/blink/renderer/platform/runtime_enabled_features.json5
          Line 3434, Patchset 19: status: "stable",
          Reilly Grant . resolved

          This lets us land this change before the Intent to Ship is approved.

          ```suggestion
          status: "experimental",
          ```
          Omar Ramadan

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Andrew Rayskiy
          • Reilly Grant
          • Vlad Krot
          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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
            Gerrit-Change-Number: 7186747
            Gerrit-PatchSet: 19
            Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
            Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
            Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
            Gerrit-Reviewer: Vlad Krot <vk...@google.com>
            Gerrit-CC: Kentaro Hara <har...@chromium.org>
            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
            Gerrit-CC: Simon Hangl <sim...@google.com>
            Gerrit-Attention: Reilly Grant <rei...@chromium.org>
            Gerrit-Attention: Andrew Rayskiy <green...@google.com>
            Gerrit-Attention: Vlad Krot <vk...@google.com>
            Gerrit-Comment-Date: Thu, 27 Nov 2025 01:16:26 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Reilly Grant <rei...@chromium.org>
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Vlad Krot (Gerrit)

            unread,
            Nov 27, 2025, 7:58:55 AM11/27/25
            to Omar Ramadan, AyeAye, Andrew Rayskiy, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
            Attention needed from Andrew Rayskiy, Omar Ramadan and Reilly Grant

            Vlad Krot added 1 comment

            File third_party/blink/renderer/platform/runtime_enabled_features.json5
            Line 3434, Patchset 19: status: "stable",
            Reilly Grant . unresolved

            This lets us land this change before the Intent to Ship is approved.

            ```suggestion
            status: "experimental",
            ```
            Omar Ramadan

            Done

            Vlad Krot

            We need a separate flag. This change will disable Multicast altogether which is already used by developers, and they expect this functionality to not disappear.
            Also, I would suggest adding a flag in about://flags to simplify testing for those who are interested.
            And do this all in a separate CL.
            Reference - https://chromium-review.googlesource.com/c/chromium/src/+/6890773

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Andrew Rayskiy
            • Omar Ramadan
            • Reilly Grant
            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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
              Gerrit-Change-Number: 7186747
              Gerrit-PatchSet: 21
              Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
              Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
              Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
              Gerrit-Reviewer: Vlad Krot <vk...@google.com>
              Gerrit-CC: Kentaro Hara <har...@chromium.org>
              Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
              Gerrit-CC: Simon Hangl <sim...@google.com>
              Gerrit-Attention: Reilly Grant <rei...@chromium.org>
              Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
              Gerrit-Attention: Andrew Rayskiy <green...@google.com>
              Gerrit-Comment-Date: Thu, 27 Nov 2025 12:58:41 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              Comment-In-Reply-To: Reilly Grant <rei...@chromium.org>
              Comment-In-Reply-To: Omar Ramadan <om...@blockcast.net>
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Omar Ramadan (Gerrit)

              unread,
              Nov 30, 2025, 3:33:10 PM11/30/25
              to Andrew Rayskiy, AyeAye, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
              Attention needed from Reilly Grant and Vlad Krot

              Omar Ramadan added 1 comment

              File third_party/blink/renderer/platform/runtime_enabled_features.json5
              Line 3434, Patchset 19: status: "stable",
              Reilly Grant . resolved

              This lets us land this change before the Intent to Ship is approved.

              ```suggestion
              status: "experimental",
              ```
              Omar Ramadan

              Done

              Vlad Krot

              We need a separate flag. This change will disable Multicast altogether which is already used by developers, and they expect this functionality to not disappear.
              Also, I would suggest adding a flag in about://flags to simplify testing for those who are interested.
              And do this all in a separate CL.
              Reference - https://chromium-review.googlesource.com/c/chromium/src/+/6890773

              Omar Ramadan

              Done. Moved the feature flag to CL 7212151

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Reilly Grant
              • Vlad Krot
              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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                Gerrit-Change-Number: 7186747
                Gerrit-PatchSet: 25
                Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                Gerrit-CC: Andrew Rayskiy <green...@google.com>
                Gerrit-CC: Kentaro Hara <har...@chromium.org>
                Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                Gerrit-CC: Simon Hangl <sim...@google.com>
                Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                Gerrit-Attention: Vlad Krot <vk...@google.com>
                Gerrit-Comment-Date: Sun, 30 Nov 2025 20:32:50 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                Comment-In-Reply-To: Reilly Grant <rei...@chromium.org>
                Comment-In-Reply-To: Omar Ramadan <om...@blockcast.net>
                Comment-In-Reply-To: Vlad Krot <vk...@google.com>
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Vlad Krot (Gerrit)

                unread,
                Dec 1, 2025, 6:47:47 AM12/1/25
                to Omar Ramadan, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                Attention needed from Omar Ramadan and Reilly Grant

                Vlad Krot added 2 comments

                File services/network/restricted_udp_socket.cc
                Line 44, Patchset 26 (Latest): udp_socket_->JoinSourceGroup(group_address, *source_address,
                Vlad Krot . unresolved

                Source-Specific Multicast (SSM) feature flag must be checked here in case renderer was compromised. If the flag is disabled, but the function was called with source_address, then do mojo::ReportBadMessage("no permission to use source-specific multicast");

                File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
                Line 120, Patchset 26 (Latest):ScriptPromise<IDLUndefined> MulticastController::joinGroup(
                Vlad Krot . unresolved

                There should be a check for new feature flag here. Now the addition to multicast API is possible to use with the flag disabled.

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Omar Ramadan
                • Reilly Grant
                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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                  Gerrit-Change-Number: 7186747
                  Gerrit-PatchSet: 26
                  Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                  Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                  Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                  Gerrit-CC: Andrew Rayskiy <green...@google.com>
                  Gerrit-CC: Kentaro Hara <har...@chromium.org>
                  Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                  Gerrit-CC: Simon Hangl <sim...@google.com>
                  Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                  Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                  Gerrit-Comment-Date: Mon, 01 Dec 2025 11:47:33 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: No
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Vlad Krot (Gerrit)

                  unread,
                  Dec 1, 2025, 8:25:49 AM12/1/25
                  to Omar Ramadan, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                  Attention needed from Omar Ramadan and Reilly Grant

                  Vlad Krot added 1 comment

                  File services/network/public/cpp/permissions_policy/permissions_policy_features.json5
                  Line 453, Patchset 27 (Latest): name: "SourceSpecificMulticastInDirectSockets",
                  Vlad Krot . unresolved

                  I don't think that a new permission policy is necessary. This is usually added to guard some dangerous functionality, I don't see how source specific multicast is more dangerous then the usual one.

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Omar Ramadan
                  • Reilly Grant
                  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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                  Gerrit-Change-Number: 7186747
                  Gerrit-PatchSet: 27
                  Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                  Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                  Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                  Gerrit-CC: Andrew Rayskiy <green...@google.com>
                  Gerrit-CC: Kentaro Hara <har...@chromium.org>
                  Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                  Gerrit-CC: Simon Hangl <sim...@google.com>
                  Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                  Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                  Gerrit-Comment-Date: Mon, 01 Dec 2025 13:25:30 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: No
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Vlad Krot (Gerrit)

                  unread,
                  Dec 1, 2025, 8:26:18 AM12/1/25
                  to Omar Ramadan, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                  Attention needed from Omar Ramadan and Reilly Grant

                  Vlad Krot added 1 comment

                  Commit Message
                  Gerrit-Comment-Date: Mon, 01 Dec 2025 13:25:59 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: No
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Omar Ramadan (Gerrit)

                  unread,
                  Dec 1, 2025, 3:54:52 PM12/1/25
                  to Andrew Rayskiy, AyeAye, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                  Attention needed from Reilly Grant and Vlad Krot

                  Omar Ramadan added 4 comments

                  Commit Message
                  Line 9, Patchset 27:https://chromestatus.com/feature/6208452397498368
                  Vlad Krot . resolved

                  Create intent to prototype.

                  Omar Ramadan

                  Done

                  File services/network/public/cpp/permissions_policy/permissions_policy_features.json5
                  Line 453, Patchset 27: name: "SourceSpecificMulticastInDirectSockets",
                  Vlad Krot . resolved

                  I don't think that a new permission policy is necessary. This is usually added to guard some dangerous functionality, I don't see how source specific multicast is more dangerous then the usual one.

                  Omar Ramadan

                  Done

                  File services/network/restricted_udp_socket.cc
                  Line 44, Patchset 26: udp_socket_->JoinSourceGroup(group_address, *source_address,
                  Vlad Krot . resolved

                  Source-Specific Multicast (SSM) feature flag must be checked here in case renderer was compromised. If the flag is disabled, but the function was called with source_address, then do mojo::ReportBadMessage("no permission to use source-specific multicast");

                  Omar Ramadan

                  Done

                  File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
                  Line 120, Patchset 26:ScriptPromise<IDLUndefined> MulticastController::joinGroup(
                  Vlad Krot . resolved

                  There should be a check for new feature flag here. Now the addition to multicast API is possible to use with the flag disabled.

                  Omar Ramadan

                  Done

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Reilly Grant
                  • Vlad Krot
                  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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                    Gerrit-Change-Number: 7186747
                    Gerrit-PatchSet: 29
                    Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                    Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                    Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                    Gerrit-CC: Andrew Rayskiy <green...@google.com>
                    Gerrit-CC: Kentaro Hara <har...@chromium.org>
                    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                    Gerrit-CC: Simon Hangl <sim...@google.com>
                    Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                    Gerrit-Attention: Vlad Krot <vk...@google.com>
                    Gerrit-Comment-Date: Mon, 01 Dec 2025 20:54:37 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    Comment-In-Reply-To: Vlad Krot <vk...@google.com>
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Vlad Krot (Gerrit)

                    unread,
                    Dec 2, 2025, 6:01:31 AM12/2/25
                    to Omar Ramadan, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                    Attention needed from Omar Ramadan and Reilly Grant

                    Vlad Krot added 2 comments

                    File content/browser/direct_sockets/direct_sockets_service_impl.cc
                    Line 176, Patchset 29 (Latest): if (!base::FeatureList::IsEnabled(
                    Vlad Krot . unresolved

                    Nit: I think it was easier just check this flag in restricted_udp_socket, the reason multicast was passed as a variable, because it had check for permission policy.

                    Line 182, Patchset 29 (Latest): // We don't require a separate permissions policy for SSM (see crbug.com/1520671).
                    Vlad Krot . unresolved

                    (see crbug.com/1520671).
                    How is this bug relevant here?

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Omar Ramadan
                    • Reilly Grant
                    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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                      Gerrit-Change-Number: 7186747
                      Gerrit-PatchSet: 29
                      Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                      Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                      Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                      Gerrit-CC: Andrew Rayskiy <green...@google.com>
                      Gerrit-CC: Kentaro Hara <har...@chromium.org>
                      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                      Gerrit-CC: Simon Hangl <sim...@google.com>
                      Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                      Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                      Gerrit-Comment-Date: Tue, 02 Dec 2025 11:01:14 +0000
                      Gerrit-HasComments: Yes
                      Gerrit-Has-Labels: No
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy

                      Omar Ramadan (Gerrit)

                      unread,
                      Dec 2, 2025, 9:34:35 AM12/2/25
                      to Andrew Rayskiy, AyeAye, Vlad Krot, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                      Attention needed from Reilly Grant and Vlad Krot

                      Omar Ramadan added 2 comments

                      File content/browser/direct_sockets/direct_sockets_service_impl.cc
                      Line 176, Patchset 29: if (!base::FeatureList::IsEnabled(
                      Vlad Krot . resolved

                      Nit: I think it was easier just check this flag in restricted_udp_socket, the reason multicast was passed as a variable, because it had check for permission policy.

                      Omar Ramadan

                      Done

                      Line 182, Patchset 29: // We don't require a separate permissions policy for SSM (see crbug.com/1520671).
                      Vlad Krot . resolved

                      (see crbug.com/1520671).
                      How is this bug relevant here?

                      Omar Ramadan

                      Done

                      Open in Gerrit

                      Related details

                      Attention is currently required from:
                      • Reilly Grant
                      • Vlad Krot
                      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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                        Gerrit-Change-Number: 7186747
                        Gerrit-PatchSet: 30
                        Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                        Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                        Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                        Gerrit-CC: Andrew Rayskiy <green...@google.com>
                        Gerrit-CC: Kentaro Hara <har...@chromium.org>
                        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                        Gerrit-CC: Simon Hangl <sim...@google.com>
                        Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                        Gerrit-Attention: Vlad Krot <vk...@google.com>
                        Gerrit-Comment-Date: Tue, 02 Dec 2025 14:34:21 +0000
                        Gerrit-HasComments: Yes
                        Gerrit-Has-Labels: No
                        Comment-In-Reply-To: Vlad Krot <vk...@google.com>
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy

                        Vlad Krot (Gerrit)

                        unread,
                        Dec 2, 2025, 9:37:20 AM12/2/25
                        to Omar Ramadan, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                        Attention needed from Omar Ramadan and Reilly Grant

                        Vlad Krot voted Code-Review+1

                        Code-Review+1
                        Open in Gerrit

                        Related details

                        Attention is currently required from:
                        • Omar Ramadan
                        • Reilly Grant
                        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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                        Gerrit-Change-Number: 7186747
                        Gerrit-PatchSet: 30
                        Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                        Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                        Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                        Gerrit-CC: Andrew Rayskiy <green...@google.com>
                        Gerrit-CC: Kentaro Hara <har...@chromium.org>
                        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                        Gerrit-CC: Simon Hangl <sim...@google.com>
                        Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                        Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                        Gerrit-Comment-Date: Tue, 02 Dec 2025 14:36:50 +0000
                        Gerrit-HasComments: No
                        Gerrit-Has-Labels: Yes
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy

                        Andrew Rayskiy (Gerrit)

                        unread,
                        Dec 2, 2025, 9:42:36 AM12/2/25
                        to Omar Ramadan, Chromium LUCI CQ, Vlad Krot, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                        Attention needed from Omar Ramadan, Reilly Grant and Vlad Krot

                        Andrew Rayskiy added 1 comment

                        File content/browser/direct_sockets/direct_sockets_service_impl.cc
                        Line 762, Patchset 30 (Latest): IsMulticastAllowed(context_) &&
                        Andrew Rayskiy . unresolved

                        I don't think it's necessary to propagate this all the way down the stack; since all processes generally have the same launch flags, you can simply do

                        ```
                        if (source_address.has_value()) {
                        // Source-Specific Multicast (SSM)
                        if (!base::FeatureList::IsEnabled(blink::features::kSourceSpecificMulticastInDirectSockets)) {
                        // Calling this method with source_address without the SSM permission
                        // means that the renderer is sending faulty IPCs.

                        mojo::ReportBadMessage("no permission to use source-specific multicast");
                              return;
                        }
                        udp_socket_->JoinSourceGroup(group_address, *source_address,
                        std::move(callback));
                        } else {
                        // Any-Source Multicast (ASM)
                        udp_socket_->JoinGroup(group_address, std::move(callback));
                        }
                        ```

                        In your `restricted_udp_socket.cc`

                        Open in Gerrit

                        Related details

                        Attention is currently required from:
                        • Omar Ramadan
                        • Reilly Grant
                        • Vlad Krot
                        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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                          Gerrit-Change-Number: 7186747
                          Gerrit-PatchSet: 30
                          Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                          Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                          Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                          Gerrit-CC: Andrew Rayskiy <green...@google.com>
                          Gerrit-CC: Kentaro Hara <har...@chromium.org>
                          Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                          Gerrit-CC: Simon Hangl <sim...@google.com>
                          Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                          Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                          Gerrit-Attention: Vlad Krot <vk...@google.com>
                          Gerrit-Comment-Date: Tue, 02 Dec 2025 14:42:10 +0000
                          Gerrit-HasComments: Yes
                          Gerrit-Has-Labels: No
                          satisfied_requirement
                          unsatisfied_requirement
                          open
                          diffy

                          Omar Ramadan (Gerrit)

                          unread,
                          Dec 2, 2025, 10:51:04 AM12/2/25
                          to Chromium LUCI CQ, Vlad Krot, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                          Attention needed from Andrew Rayskiy, Reilly Grant and Vlad Krot

                          Omar Ramadan added 1 comment

                          File content/browser/direct_sockets/direct_sockets_service_impl.cc
                          Line 762, Patchset 30 (Latest): IsMulticastAllowed(context_) &&
                          Andrew Rayskiy . unresolved

                          I don't think it's necessary to propagate this all the way down the stack; since all processes generally have the same launch flags, you can simply do

                          ```
                          if (source_address.has_value()) {
                          // Source-Specific Multicast (SSM)
                          if (!base::FeatureList::IsEnabled(blink::features::kSourceSpecificMulticastInDirectSockets)) {
                          // Calling this method with source_address without the SSM permission
                          // means that the renderer is sending faulty IPCs.
                          mojo::ReportBadMessage("no permission to use source-specific multicast");
                          return;
                          }
                          udp_socket_->JoinSourceGroup(group_address, *source_address,
                          std::move(callback));
                          } else {
                          // Any-Source Multicast (ASM)
                          udp_socket_->JoinGroup(group_address, std::move(callback));
                          }
                          ```

                          In your `restricted_udp_socket.cc`

                          Omar Ramadan

                          @green...@google.com if we can use `FeatureList::IsEnabled` directly in `restricted_udp_socket.cc` to check both multicast and source specific multicast, should I remove `allow_multicast` all together from `content/browser`? cc @vk...@google.com

                          Open in Gerrit

                          Related details

                          Attention is currently required from:
                          • Andrew Rayskiy
                          • Reilly Grant
                          • Vlad Krot
                          Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                          Gerrit-Attention: Vlad Krot <vk...@google.com>
                          Gerrit-Comment-Date: Tue, 02 Dec 2025 15:50:44 +0000
                          Gerrit-HasComments: Yes
                          Gerrit-Has-Labels: No
                          Comment-In-Reply-To: Andrew Rayskiy <green...@google.com>
                          satisfied_requirement
                          unsatisfied_requirement
                          open
                          diffy

                          Vlad Krot (Gerrit)

                          unread,
                          Dec 2, 2025, 10:52:43 AM12/2/25
                          to Omar Ramadan, Chromium LUCI CQ, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                          Attention needed from Andrew Rayskiy, Omar Ramadan and Reilly Grant

                          Vlad Krot added 1 comment

                          File content/browser/direct_sockets/direct_sockets_service_impl.cc
                          Line 762, Patchset 30 (Latest): IsMulticastAllowed(context_) &&
                          Andrew Rayskiy . unresolved

                          I don't think it's necessary to propagate this all the way down the stack; since all processes generally have the same launch flags, you can simply do

                          ```
                          if (source_address.has_value()) {
                          // Source-Specific Multicast (SSM)
                          if (!base::FeatureList::IsEnabled(blink::features::kSourceSpecificMulticastInDirectSockets)) {
                          // Calling this method with source_address without the SSM permission
                          // means that the renderer is sending faulty IPCs.
                          mojo::ReportBadMessage("no permission to use source-specific multicast");
                          return;
                          }
                          udp_socket_->JoinSourceGroup(group_address, *source_address,
                          std::move(callback));
                          } else {
                          // Any-Source Multicast (ASM)
                          udp_socket_->JoinGroup(group_address, std::move(callback));
                          }
                          ```

                          In your `restricted_udp_socket.cc`

                          Omar Ramadan

                          @green...@google.com if we can use `FeatureList::IsEnabled` directly in `restricted_udp_socket.cc` to check both multicast and source specific multicast, should I remove `allow_multicast` all together from `content/browser`? cc @vk...@google.com

                          Vlad Krot

                          "should I remove allow_multicast all together from" - no, because AllowMulticast also contains result of permissions policy check for which you need ExecutionContext.

                          Open in Gerrit

                          Related details

                          Attention is currently required from:
                          • Andrew Rayskiy
                          • Omar Ramadan
                          • Reilly Grant
                          Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                          Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                          Gerrit-Comment-Date: Tue, 02 Dec 2025 15:52:26 +0000
                          Gerrit-HasComments: Yes
                          Gerrit-Has-Labels: No
                          Comment-In-Reply-To: Omar Ramadan <om...@blockcast.net>
                          Comment-In-Reply-To: Andrew Rayskiy <green...@google.com>
                          satisfied_requirement
                          unsatisfied_requirement
                          open
                          diffy

                          Andrew Rayskiy (Gerrit)

                          unread,
                          Dec 2, 2025, 10:56:28 AM12/2/25
                          to Omar Ramadan, Chromium LUCI CQ, Vlad Krot, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                          Attention needed from Omar Ramadan and Reilly Grant

                          Andrew Rayskiy added 1 comment

                          File content/browser/direct_sockets/direct_sockets_service_impl.cc
                          Line 762, Patchset 30 (Latest): IsMulticastAllowed(context_) &&
                          Andrew Rayskiy . unresolved

                          I don't think it's necessary to propagate this all the way down the stack; since all processes generally have the same launch flags, you can simply do

                          ```
                          if (source_address.has_value()) {
                          // Source-Specific Multicast (SSM)
                          if (!base::FeatureList::IsEnabled(blink::features::kSourceSpecificMulticastInDirectSockets)) {
                          // Calling this method with source_address without the SSM permission
                          // means that the renderer is sending faulty IPCs.
                          mojo::ReportBadMessage("no permission to use source-specific multicast");
                          return;
                          }
                          udp_socket_->JoinSourceGroup(group_address, *source_address,
                          std::move(callback));
                          } else {
                          // Any-Source Multicast (ASM)
                          udp_socket_->JoinGroup(group_address, std::move(callback));
                          }
                          ```

                          In your `restricted_udp_socket.cc`

                          Omar Ramadan

                          @green...@google.com if we can use `FeatureList::IsEnabled` directly in `restricted_udp_socket.cc` to check both multicast and source specific multicast, should I remove `allow_multicast` all together from `content/browser`? cc @vk...@google.com

                          Vlad Krot

                          "should I remove allow_multicast all together from" - no, because AllowMulticast also contains result of permissions policy check for which you need ExecutionContext.

                          Andrew Rayskiy

                          +1! allow_multicast is per-frame, FeatureList::IsEnabled is global

                          Open in Gerrit

                          Related details

                          Attention is currently required from:
                          • Omar Ramadan
                          • Reilly Grant
                          Gerrit-Comment-Date: Tue, 02 Dec 2025 15:56:05 +0000
                          Gerrit-HasComments: Yes
                          Gerrit-Has-Labels: No
                          Comment-In-Reply-To: Omar Ramadan <om...@blockcast.net>
                          Comment-In-Reply-To: Andrew Rayskiy <green...@google.com>
                          Comment-In-Reply-To: Vlad Krot <vk...@google.com>
                          satisfied_requirement
                          unsatisfied_requirement
                          open
                          diffy

                          Omar Ramadan (Gerrit)

                          unread,
                          Dec 2, 2025, 12:11:49 PM12/2/25
                          to Chromium LUCI CQ, Vlad Krot, Andrew Rayskiy, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                          Attention needed from Andrew Rayskiy, Reilly Grant and Vlad Krot

                          Omar Ramadan added 1 comment

                          File content/browser/direct_sockets/direct_sockets_service_impl.cc
                          Line 762, Patchset 30: IsMulticastAllowed(context_) &&
                          Andrew Rayskiy . resolved

                          I don't think it's necessary to propagate this all the way down the stack; since all processes generally have the same launch flags, you can simply do

                          ```
                          if (source_address.has_value()) {
                          // Source-Specific Multicast (SSM)
                          if (!base::FeatureList::IsEnabled(blink::features::kSourceSpecificMulticastInDirectSockets)) {
                          // Calling this method with source_address without the SSM permission
                          // means that the renderer is sending faulty IPCs.
                          mojo::ReportBadMessage("no permission to use source-specific multicast");
                          return;
                          }
                          udp_socket_->JoinSourceGroup(group_address, *source_address,
                          std::move(callback));
                          } else {
                          // Any-Source Multicast (ASM)
                          udp_socket_->JoinGroup(group_address, std::move(callback));
                          }
                          ```

                          In your `restricted_udp_socket.cc`

                          Omar Ramadan

                          @green...@google.com if we can use `FeatureList::IsEnabled` directly in `restricted_udp_socket.cc` to check both multicast and source specific multicast, should I remove `allow_multicast` all together from `content/browser`? cc @vk...@google.com

                          Vlad Krot

                          "should I remove allow_multicast all together from" - no, because AllowMulticast also contains result of permissions policy check for which you need ExecutionContext.

                          Andrew Rayskiy

                          +1! allow_multicast is per-frame, FeatureList::IsEnabled is global

                          Omar Ramadan

                          Done

                          Open in Gerrit

                          Related details

                          Attention is currently required from:
                          • Andrew Rayskiy
                          • Reilly Grant
                          • Vlad Krot
                          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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                            Gerrit-Change-Number: 7186747
                            Gerrit-PatchSet: 31
                            Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                            Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                            Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                            Gerrit-CC: Andrew Rayskiy <green...@google.com>
                            Gerrit-CC: Kentaro Hara <har...@chromium.org>
                            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                            Gerrit-CC: Simon Hangl <sim...@google.com>
                            Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                            Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                            Gerrit-Attention: Vlad Krot <vk...@google.com>
                            Gerrit-Comment-Date: Tue, 02 Dec 2025 17:11:31 +0000
                            satisfied_requirement
                            unsatisfied_requirement
                            open
                            diffy

                            Andrew Rayskiy (Gerrit)

                            unread,
                            Dec 2, 2025, 12:13:46 PM12/2/25
                            to Omar Ramadan, Chromium LUCI CQ, Vlad Krot, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                            Attention needed from Omar Ramadan, Reilly Grant and Vlad Krot

                            Andrew Rayskiy voted Code-Review+1

                            Code-Review+1
                            Open in Gerrit

                            Related details

                            Attention is currently required from:
                            • Omar Ramadan
                            • Reilly Grant
                            • Vlad Krot
                            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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                            Gerrit-Change-Number: 7186747
                            Gerrit-PatchSet: 31
                            Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                            Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
                            Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                            Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                            Gerrit-CC: Kentaro Hara <har...@chromium.org>
                            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                            Gerrit-CC: Simon Hangl <sim...@google.com>
                            Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                            Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                            Gerrit-Attention: Vlad Krot <vk...@google.com>
                            Gerrit-Comment-Date: Tue, 02 Dec 2025 17:13:29 +0000
                            Gerrit-HasComments: No
                            Gerrit-Has-Labels: Yes
                            satisfied_requirement
                            unsatisfied_requirement
                            open
                            diffy

                            Vlad Krot (Gerrit)

                            unread,
                            Dec 3, 2025, 8:12:43 AM12/3/25
                            to Omar Ramadan, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                            Attention needed from Andrew Rayskiy, Omar Ramadan and Reilly Grant

                            Vlad Krot voted Code-Review+1

                            Code-Review+1
                            Open in Gerrit

                            Related details

                            Attention is currently required from:
                            • Andrew Rayskiy
                            • Omar Ramadan
                            • Reilly Grant
                            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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                            Gerrit-Change-Number: 7186747
                            Gerrit-PatchSet: 37
                            Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                            Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                            Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                            Gerrit-CC: Andrew Rayskiy <green...@google.com>
                            Gerrit-CC: Kentaro Hara <har...@chromium.org>
                            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                            Gerrit-CC: Simon Hangl <sim...@google.com>
                            Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                            Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                            Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                            Gerrit-Comment-Date: Wed, 03 Dec 2025 13:12:20 +0000
                            Gerrit-HasComments: No
                            Gerrit-Has-Labels: Yes
                            satisfied_requirement
                            unsatisfied_requirement
                            open
                            diffy

                            Vlad Krot (Gerrit)

                            unread,
                            Dec 4, 2025, 6:30:50 AM12/4/25
                            to Omar Ramadan, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                            Attention needed from Andrew Rayskiy, Omar Ramadan and Reilly Grant

                            Vlad Krot added 1 comment

                            File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
                            Line 78, Patchset 38 (Latest): bool is_deleted = false;
                            Vlad Krot . unresolved

                            What is the reason for adding this?

                            Open in Gerrit

                            Related details

                            Attention is currently required from:
                            • Andrew Rayskiy
                            • Omar Ramadan
                            • Reilly Grant
                            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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                              Gerrit-Change-Number: 7186747
                              Gerrit-PatchSet: 38
                              Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                              Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                              Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                              Gerrit-CC: Andrew Rayskiy <green...@google.com>
                              Gerrit-CC: Kentaro Hara <har...@chromium.org>
                              Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                              Gerrit-CC: Simon Hangl <sim...@google.com>
                              Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                              Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                              Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                              Gerrit-Comment-Date: Thu, 04 Dec 2025 11:30:33 +0000
                              Gerrit-HasComments: Yes
                              Gerrit-Has-Labels: No
                              satisfied_requirement
                              unsatisfied_requirement
                              open
                              diffy

                              Omar Ramadan (Gerrit)

                              unread,
                              Dec 4, 2025, 7:27:11 AM12/4/25
                              to Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                              Attention needed from Andrew Rayskiy, Reilly Grant and Vlad Krot

                              Omar Ramadan added 1 comment

                              File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
                              Line 78, Patchset 38 (Latest): bool is_deleted = false;
                              Vlad Krot . resolved

                              What is the reason for adding this?

                              Omar Ramadan

                              Blink's hash tables use open addressing so when a collision occurs, the table probes for the next available slot. To work correctly, the table needs to distinguish between three states for each slot (empty/deleted/valid). If you simply marked deleted slots as "empty," you'd break the probing chain. The `is_deleted` acts as a sentinel to differentiate deleted entries as `true` while an invalid/empty IP address `false`

                              Open in Gerrit

                              Related details

                              Attention is currently required from:
                              • Andrew Rayskiy
                              • Reilly Grant
                              • Vlad Krot
                              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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                Gerrit-Change-Number: 7186747
                                Gerrit-PatchSet: 38
                                Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                Gerrit-CC: Simon Hangl <sim...@google.com>
                                Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                                Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                Gerrit-Attention: Vlad Krot <vk...@google.com>
                                Gerrit-Comment-Date: Thu, 04 Dec 2025 12:26:54 +0000
                                Gerrit-HasComments: Yes
                                Gerrit-Has-Labels: No
                                Comment-In-Reply-To: Vlad Krot <vk...@google.com>
                                satisfied_requirement
                                unsatisfied_requirement
                                open
                                diffy

                                gwsq (Gerrit)

                                unread,
                                Dec 5, 2025, 5:51:45 PM12/5/25
                                to Omar Ramadan, Chromium IPC Reviews, Tom Sepez, David Schinazi, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                Attention needed from Andrew Rayskiy, David Schinazi, Reilly Grant, Tom Sepez and Vlad Krot

                                Message from gwsq

                                From googleclient/chrome/chromium_gwsq/ipc/config.gwsq:
                                IPC: tse...@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): tse...@chromium.org


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

                                Open in Gerrit

                                Related details

                                Attention is currently required from:
                                • Andrew Rayskiy
                                • David Schinazi
                                • Reilly Grant
                                • Tom Sepez
                                • Vlad Krot
                                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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                Gerrit-Change-Number: 7186747
                                Gerrit-PatchSet: 41
                                Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                Gerrit-Reviewer: David Schinazi <dsch...@chromium.org>
                                Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                Gerrit-CC: Simon Hangl <sim...@google.com>
                                Gerrit-CC: gwsq
                                Gerrit-Attention: Tom Sepez <tse...@chromium.org>
                                Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                                Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                Gerrit-Attention: David Schinazi <dsch...@chromium.org>
                                Gerrit-Attention: Vlad Krot <vk...@google.com>
                                Gerrit-Comment-Date: Fri, 05 Dec 2025 22:51:40 +0000
                                Gerrit-HasComments: No
                                Gerrit-Has-Labels: No
                                satisfied_requirement
                                unsatisfied_requirement
                                open
                                diffy

                                Reilly Grant (Gerrit)

                                unread,
                                Dec 5, 2025, 9:00:44 PM12/5/25
                                to Omar Ramadan, Chromium IPC Reviews, Tom Sepez, David Schinazi, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                Attention needed from Andrew Rayskiy, David Schinazi, Omar Ramadan, Tom Sepez and Vlad Krot

                                Reilly Grant added 2 comments

                                File services/network/restricted_udp_socket.cc
                                Line 48, Patchset 41 (Latest): // Calling this method with source_address without the SSM permission
                                Reilly Grant . unresolved
                                ```suggestion
                                // Calling this method with source_address without the SSM feature enabled
                                ```
                                Line 50, Patchset 41 (Latest): mojo::ReportBadMessage("no permission to use source-specific multicast");
                                Reilly Grant . unresolved
                                This isn't a permissions thing.
                                ```suggestion
                                mojo::ReportBadMessage("Source-specific multicast disabled");
                                ```
                                Open in Gerrit

                                Related details

                                Attention is currently required from:
                                • Andrew Rayskiy
                                • David Schinazi
                                • Omar Ramadan
                                • Tom Sepez
                                • Vlad Krot
                                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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                  Gerrit-Change-Number: 7186747
                                  Gerrit-PatchSet: 41
                                  Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                  Gerrit-Reviewer: David Schinazi <dsch...@chromium.org>
                                  Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                  Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                  Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                  Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                  Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                  Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                  Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                  Gerrit-CC: Simon Hangl <sim...@google.com>
                                  Gerrit-CC: gwsq
                                  Gerrit-Attention: Tom Sepez <tse...@chromium.org>
                                  Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                                  Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                  Gerrit-Attention: David Schinazi <dsch...@chromium.org>
                                  Gerrit-Attention: Vlad Krot <vk...@google.com>
                                  Gerrit-Comment-Date: Sat, 06 Dec 2025 02:00:35 +0000
                                  Gerrit-HasComments: Yes
                                  Gerrit-Has-Labels: No
                                  satisfied_requirement
                                  unsatisfied_requirement
                                  open
                                  diffy

                                  Omar Ramadan (Gerrit)

                                  unread,
                                  Dec 6, 2025, 7:07:57 AM12/6/25
                                  to Chromium IPC Reviews, Tom Sepez, David Schinazi, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                  Attention needed from Andrew Rayskiy, David Schinazi, Reilly Grant, Tom Sepez and Vlad Krot

                                  Omar Ramadan added 3 comments

                                  Omar Ramadan . resolved

                                  thank you

                                  File services/network/restricted_udp_socket.cc
                                  Line 48, Patchset 41 (Latest): // Calling this method with source_address without the SSM permission
                                  Reilly Grant . resolved
                                  ```suggestion
                                  // Calling this method with source_address without the SSM feature enabled
                                  ```
                                  Omar Ramadan

                                  Fix applied.

                                  Line 50, Patchset 41 (Latest): mojo::ReportBadMessage("no permission to use source-specific multicast");
                                  Reilly Grant . resolved
                                  This isn't a permissions thing.
                                  ```suggestion
                                  mojo::ReportBadMessage("Source-specific multicast disabled");
                                  ```
                                  Omar Ramadan

                                  Fix applied.

                                  Open in Gerrit

                                  Related details

                                  Attention is currently required from:
                                  • Andrew Rayskiy
                                  • David Schinazi
                                  • Reilly Grant
                                  • Tom Sepez
                                  • Vlad Krot
                                  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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                    Gerrit-Change-Number: 7186747
                                    Gerrit-PatchSet: 41
                                    Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                    Gerrit-Reviewer: David Schinazi <dsch...@chromium.org>
                                    Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                    Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                    Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                    Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                    Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                    Gerrit-CC: Simon Hangl <sim...@google.com>
                                    Gerrit-CC: gwsq
                                    Gerrit-Attention: Tom Sepez <tse...@chromium.org>
                                    Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                                    Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                    Gerrit-Attention: David Schinazi <dsch...@chromium.org>
                                    Gerrit-Attention: Vlad Krot <vk...@google.com>
                                    Gerrit-Comment-Date: Sat, 06 Dec 2025 12:07:36 +0000
                                    Gerrit-HasComments: Yes
                                    Gerrit-Has-Labels: No
                                    Comment-In-Reply-To: Reilly Grant <rei...@chromium.org>
                                    satisfied_requirement
                                    unsatisfied_requirement
                                    open
                                    diffy

                                    Reilly Grant (Gerrit)

                                    unread,
                                    Dec 8, 2025, 5:17:36 PM12/8/25
                                    to Omar Ramadan, Chromium IPC Reviews, Tom Sepez, David Schinazi, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                    Attention needed from Andrew Rayskiy, David Schinazi, Omar Ramadan, Tom Sepez and Vlad Krot

                                    Reilly Grant added 1 comment

                                    Patchset-level comments
                                    Omar Ramadan . resolved

                                    thank you

                                    Reilly Grant

                                    It looks like you haven't uploaded a new version of this CL.

                                    Open in Gerrit

                                    Related details

                                    Attention is currently required from:
                                    • Andrew Rayskiy
                                    • David Schinazi
                                    • Omar Ramadan
                                    • Tom Sepez
                                    • Vlad Krot
                                    Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                                    Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                    Gerrit-Attention: David Schinazi <dsch...@chromium.org>
                                    Gerrit-Attention: Vlad Krot <vk...@google.com>
                                    Gerrit-Comment-Date: Mon, 08 Dec 2025 22:17:25 +0000
                                    Gerrit-HasComments: Yes
                                    Gerrit-Has-Labels: No
                                    Comment-In-Reply-To: Omar Ramadan <om...@blockcast.net>
                                    satisfied_requirement
                                    unsatisfied_requirement
                                    open
                                    diffy

                                    David Schinazi (Gerrit)

                                    unread,
                                    Dec 8, 2025, 9:22:38 PM12/8/25
                                    to Omar Ramadan, Adam Rice, Chromium IPC Reviews, Tom Sepez, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                    Attention needed from Adam Rice, Andrew Rayskiy, Omar Ramadan, Tom Sepez and Vlad Krot

                                    David Schinazi added 1 comment

                                    Patchset-level comments
                                    David Schinazi . resolved

                                    Switching to one of the primary reviewers from //services/network/OWNERS

                                    Open in Gerrit

                                    Related details

                                    Attention is currently required from:
                                    • Adam Rice
                                    • Andrew Rayskiy
                                    • Omar Ramadan
                                    • Tom Sepez
                                    • Vlad Krot
                                    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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                    Gerrit-Change-Number: 7186747
                                    Gerrit-PatchSet: 41
                                    Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                    Gerrit-Reviewer: Adam Rice <ri...@chromium.org>
                                    Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                    Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                    Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                    Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                    Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                    Gerrit-CC: Simon Hangl <sim...@google.com>
                                    Gerrit-CC: gwsq
                                    Gerrit-Attention: Tom Sepez <tse...@chromium.org>
                                    Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                                    Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                    Gerrit-Attention: Adam Rice <ri...@chromium.org>
                                    Gerrit-Attention: Vlad Krot <vk...@google.com>
                                    Gerrit-Comment-Date: Tue, 09 Dec 2025 02:22:28 +0000
                                    Gerrit-HasComments: Yes
                                    Gerrit-Has-Labels: No
                                    satisfied_requirement
                                    unsatisfied_requirement
                                    open
                                    diffy

                                    Tom Sepez (Gerrit)

                                    unread,
                                    Jan 5, 2026, 1:58:18 PM (11 days ago) Jan 5
                                    to Omar Ramadan, Adam Rice, Chromium IPC Reviews, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                    Attention needed from Adam Rice, Andrew Rayskiy, Omar Ramadan and Vlad Krot

                                    Tom Sepez added 3 comments

                                    Patchset-level comments
                                    Tom Sepez . resolved

                                    LG otherwise.

                                    File content/test/data/direct_sockets/udp.js
                                    Line 461, Patchset 41 (Latest): assertEq(multicastController.joinedGroups[0].groupAddress, ssmMulticastGroup);
                                    Tom Sepez . unresolved

                                    nit: wrap at 80?

                                    File services/network/public/mojom/restricted_udp_socket.mojom
                                    Line 52, Patchset 41 (Latest): JoinGroup(IPAddress group_address, IPAddress? source_address)
                                    Tom Sepez . unresolved

                                    So are multiple calls with different source_address filters allowed? Does such a call replace a prior one? Or does it form a set of allowed addresses?

                                    Open in Gerrit

                                    Related details

                                    Attention is currently required from:
                                    • Adam Rice
                                    • Andrew Rayskiy
                                    • Omar Ramadan
                                    • Vlad Krot
                                    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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                      Gerrit-Change-Number: 7186747
                                      Gerrit-PatchSet: 41
                                      Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                      Gerrit-Reviewer: Adam Rice <ri...@chromium.org>
                                      Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                      Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                      Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                      Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                      Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                      Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                      Gerrit-CC: Simon Hangl <sim...@google.com>
                                      Gerrit-CC: gwsq
                                      Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                                      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                      Gerrit-Attention: Adam Rice <ri...@chromium.org>
                                      Gerrit-Attention: Vlad Krot <vk...@google.com>
                                      Gerrit-Comment-Date: Mon, 05 Jan 2026 18:58:08 +0000
                                      Gerrit-HasComments: Yes
                                      Gerrit-Has-Labels: No
                                      satisfied_requirement
                                      unsatisfied_requirement
                                      open
                                      diffy

                                      Adam Rice (Gerrit)

                                      unread,
                                      Jan 8, 2026, 3:49:38 AM (8 days ago) Jan 8
                                      to Omar Ramadan, Chromium IPC Reviews, Tom Sepez, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                      Attention needed from Andrew Rayskiy, Omar Ramadan and Vlad Krot

                                      Adam Rice added 11 comments

                                      Patchset-level comments
                                      Adam Rice . resolved

                                      Generally looks good, just a few things to change.

                                      File services/network/restricted_udp_socket.cc
                                      Line 48, Patchset 41 (Latest): // Calling this method with source_address without the SSM permission
                                      Reilly Grant . unresolved
                                      ```suggestion
                                      // Calling this method with source_address without the SSM feature enabled
                                      ```
                                      Omar Ramadan

                                      Fix applied.

                                      Adam Rice

                                      The comment doesn't look updated to me.

                                      Line 50, Patchset 41 (Latest): mojo::ReportBadMessage("no permission to use source-specific multicast");
                                      Reilly Grant . unresolved
                                      This isn't a permissions thing.
                                      ```suggestion
                                      mojo::ReportBadMessage("Source-specific multicast disabled");
                                      ```
                                      Omar Ramadan

                                      Fix applied.

                                      Adam Rice

                                      It still looks like the message is `"no permission to use source-specific multicast"` to me.

                                      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
                                      Line 92, Patchset 41 (Latest): return key.ToString().Impl()->GetHash();
                                      Adam Rice . unresolved
                                      This is a very inefficient hash function, as it has to do memory allocation to create the String. I suggest something like
                                      ```
                                      static unsigned GetHash(const MembershipKey& key) {
                                      size_t hash = base::FastHash(key.group.bytes());
                                      if (key.source.has_value()) {
                                      size_t source_hash = base::FastHash(key.source->bytes());
                                      if constexpr (sizeof(size_t) == sizeof(uint32_t)) {
                                      hash = base::HashInts32(hash, source_hash);
                                      } else {
                                      hash = base::HashInts64(hash, source_hash);
                                      }
                                      }
                                      return static_cast<unsigned>(hash);
                                      }
                                      ```
                                      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
                                      Line 133, Patchset 41 (Latest): if (ip_address.empty()) {
                                      Adam Rice . unresolved
                                      The next 30 lines or so are duplicated in `leaveGroup()`. I suggest factoring them out into a common function so you can do something like
                                      ```
                                      const auto [group_ip, source_ip] =
                                      ParseAndCheckGroupIPs(ip_address, options, exception_state);
                                      ```
                                      Line 142, Patchset 41 (Latest): return {};
                                      Adam Rice . unresolved

                                      It would be good to add
                                      ```
                                      CHECK(exception_state.HadException());
                                      ```
                                      just to make it clear that an exception is always thrown in this case.

                                      Line 156, Patchset 41 (Latest): SourceSpecificMulticastInDirectSocketsEnabled()) {
                                      Adam Rice . unresolved
                                      The body of this if statement should be unreachable because the feature is already conditional in the IDL file. If you want to be extra sure, you can do
                                      ```
                                      CHECK(!source_ip.has_value() ||
                                      RuntimeEnabledFeatures::SourceSpecificMulticastInDirectSocketsEnabled());
                                      ```
                                      Line 191, Patchset 41 (Latest): for (const MembershipKey& existing_membership : joined_groups_) {
                                      Adam Rice . unresolved

                                      I don't know if joining a lot of groups is a realistic thing to do, but if it is, this loop would make it an O(N^2) operation. On way to make this change more efficient would be to have
                                      ```
                                      HashSet<net::IPAddress> asm_groups_;
                                      HashSet<net::IPAddress> ssm_groups_;
                                      ```
                                      defined, then you only need to check that `group_id` is not already present in the wrong set.

                                      Line 258, Patchset 41 (Latest): if (source_ip.has_value() &&
                                      Adam Rice . unresolved
                                      The body of this if statement should be unreachable because the feature is already conditional in the IDL file. If you want to be extra sure, you can do
                                      ```
                                      CHECK(!source_ip.has_value() ||
                                      RuntimeEnabledFeatures::SourceSpecificMulticastInDirectSocketsEnabled());
                                      ```
                                      File third_party/blink/renderer/modules/direct_sockets/multicast_controller_unittest.cc
                                      Line 441, Patchset 41 (Latest):TEST(MulticastControllerTest, SSM_CannotJoinASMAndSSMForSameGroup) {
                                      Adam Rice . unresolved

                                      We should also have a test doing SSM first and then ASM, since there are different code paths for each case.

                                      Line 516, Patchset 41 (Latest):TEST(MulticastControllerTest, SSM_IPv6WithSource) {
                                      Adam Rice . unresolved

                                      We should also have tests that an IPv4 multicast address with an IPv6 source address fails, and vice-versa.

                                      Open in Gerrit

                                      Related details

                                      Attention is currently required from:
                                      Gerrit-Attention: Vlad Krot <vk...@google.com>
                                      Gerrit-Comment-Date: Thu, 08 Jan 2026 08:49:11 +0000
                                      Gerrit-HasComments: Yes
                                      Gerrit-Has-Labels: No
                                      satisfied_requirement
                                      unsatisfied_requirement
                                      open
                                      diffy

                                      Adam Rice (Gerrit)

                                      unread,
                                      Jan 8, 2026, 3:50:23 AM (8 days ago) Jan 8
                                      to Omar Ramadan, Chromium IPC Reviews, Tom Sepez, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                      Attention needed from Andrew Rayskiy, Omar Ramadan and Vlad Krot

                                      Adam Rice added 1 comment

                                      Patchset-level comments
                                      Adam Rice . resolved

                                      Sorry for the slow response! I didn't realise I'd had this for almost a month.

                                      Gerrit-Comment-Date: Thu, 08 Jan 2026 08:50:01 +0000
                                      Gerrit-HasComments: Yes
                                      Gerrit-Has-Labels: No
                                      satisfied_requirement
                                      unsatisfied_requirement
                                      open
                                      diffy

                                      Omar Ramadan (Gerrit)

                                      unread,
                                      Jan 14, 2026, 5:59:28 AM (2 days ago) Jan 14
                                      to Adam Rice, Chromium IPC Reviews, Tom Sepez, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, extension...@chromium.org, chromium-a...@chromium.org, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                      Attention needed from Adam Rice, Andrew Rayskiy, Reilly Grant, Tom Sepez and Vlad Krot

                                      Omar Ramadan added 13 comments

                                      Patchset-level comments
                                      File-level comment, Patchset 46 (Latest):
                                      Omar Ramadan . resolved
                                      - Hash function: Replaced String allocation with base::FastHash() on raw bytes + base::HashInts32/64 for combining
                                      - Code deduplication: Factored out ParseAndValidateGroupIPs() helper for join/leave
                                      - Validation: Added CHECK(exception_state.HadException()) after parse failures
                                      - Feature check: Replaced runtime if (!...Enabled()) with CHECK() since IDL gates the option
                                      - ASM/SSM mixing: Added asm_groups_/ssm_groups_ HashSets for O(1) lookup instead of iterating joined_groups_
                                      - restricted_udp_socket.cc: Added comment explaining faulty IPC check for SSM feature
                                      - New tests: SSM_CannotJoinSSMThenASMForSameGroup, SSM_IPv4MulticastWithIPv6SourceFails, SSM_IPv6MulticastWithIPv4SourceFails
                                      - udp.js: Wrapped lines at 80 chars
                                      - Mojom comments: Clarified that multiple JoinGroup calls with different sources form a set of allowed sources
                                      File content/test/data/direct_sockets/udp.js
                                      Line 461, Patchset 41: assertEq(multicastController.joinedGroups[0].groupAddress, ssmMulticastGroup);
                                      Tom Sepez . resolved

                                      nit: wrap at 80?

                                      Omar Ramadan

                                      Done

                                      File services/network/public/mojom/restricted_udp_socket.mojom
                                      Line 52, Patchset 41: JoinGroup(IPAddress group_address, IPAddress? source_address)
                                      Tom Sepez . resolved

                                      So are multiple calls with different source_address filters allowed? Does such a call replace a prior one? Or does it form a set of allowed addresses?

                                      Omar Ramadan

                                      Yes updating comment for clarity

                                      File services/network/restricted_udp_socket.cc
                                      Line 48, Patchset 41: // Calling this method with source_address without the SSM permission
                                      Reilly Grant . resolved
                                      ```suggestion
                                      // Calling this method with source_address without the SSM feature enabled
                                      ```
                                      Omar Ramadan

                                      Fix applied.

                                      Adam Rice

                                      The comment doesn't look updated to me.

                                      Omar Ramadan

                                      Done

                                      Line 50, Patchset 41: mojo::ReportBadMessage("no permission to use source-specific multicast");
                                      Reilly Grant . resolved
                                      This isn't a permissions thing.
                                      ```suggestion
                                      mojo::ReportBadMessage("Source-specific multicast disabled");
                                      ```
                                      Omar Ramadan

                                      Fix applied.

                                      Adam Rice

                                      It still looks like the message is `"no permission to use source-specific multicast"` to me.

                                      Omar Ramadan

                                      Done

                                      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
                                      Line 92, Patchset 41: return key.ToString().Impl()->GetHash();
                                      Adam Rice . resolved
                                      This is a very inefficient hash function, as it has to do memory allocation to create the String. I suggest something like
                                      ```
                                      static unsigned GetHash(const MembershipKey& key) {
                                      size_t hash = base::FastHash(key.group.bytes());
                                      if (key.source.has_value()) {
                                      size_t source_hash = base::FastHash(key.source->bytes());
                                      if constexpr (sizeof(size_t) == sizeof(uint32_t)) {
                                      hash = base::HashInts32(hash, source_hash);
                                      } else {
                                      hash = base::HashInts64(hash, source_hash);
                                      }
                                      }
                                      return static_cast<unsigned>(hash);
                                      }
                                      ```
                                      Omar Ramadan

                                      Acknowledged

                                      File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
                                      Line 133, Patchset 41: if (ip_address.empty()) {
                                      Adam Rice . resolved
                                      The next 30 lines or so are duplicated in `leaveGroup()`. I suggest factoring them out into a common function so you can do something like
                                      ```
                                      const auto [group_ip, source_ip] =
                                      ParseAndCheckGroupIPs(ip_address, options, exception_state);
                                      ```
                                      Omar Ramadan

                                      Done

                                      Line 142, Patchset 41: return {};
                                      Adam Rice . resolved

                                      It would be good to add
                                      ```
                                      CHECK(exception_state.HadException());
                                      ```
                                      just to make it clear that an exception is always thrown in this case.

                                      Omar Ramadan

                                      Done

                                      Line 156, Patchset 41: SourceSpecificMulticastInDirectSocketsEnabled()) {
                                      Adam Rice . resolved
                                      The body of this if statement should be unreachable because the feature is already conditional in the IDL file. If you want to be extra sure, you can do
                                      ```
                                      CHECK(!source_ip.has_value() ||
                                      RuntimeEnabledFeatures::SourceSpecificMulticastInDirectSocketsEnabled());
                                      ```
                                      Omar Ramadan

                                      Acknowledged

                                      Line 191, Patchset 41: for (const MembershipKey& existing_membership : joined_groups_) {
                                      Adam Rice . resolved

                                      I don't know if joining a lot of groups is a realistic thing to do, but if it is, this loop would make it an O(N^2) operation. On way to make this change more efficient would be to have
                                      ```
                                      HashSet<net::IPAddress> asm_groups_;
                                      HashSet<net::IPAddress> ssm_groups_;
                                      ```
                                      defined, then you only need to check that `group_id` is not already present in the wrong set.

                                      Omar Ramadan

                                      Done

                                      Line 258, Patchset 41: if (source_ip.has_value() &&
                                      Adam Rice . resolved
                                      The body of this if statement should be unreachable because the feature is already conditional in the IDL file. If you want to be extra sure, you can do
                                      ```
                                      CHECK(!source_ip.has_value() ||
                                      RuntimeEnabledFeatures::SourceSpecificMulticastInDirectSocketsEnabled());
                                      ```
                                      Omar Ramadan

                                      Done

                                      File third_party/blink/renderer/modules/direct_sockets/multicast_controller_unittest.cc
                                      Line 441, Patchset 41:TEST(MulticastControllerTest, SSM_CannotJoinASMAndSSMForSameGroup) {
                                      Adam Rice . resolved

                                      We should also have a test doing SSM first and then ASM, since there are different code paths for each case.

                                      Omar Ramadan

                                      Done

                                      Line 516, Patchset 41:TEST(MulticastControllerTest, SSM_IPv6WithSource) {
                                      Adam Rice . resolved

                                      We should also have tests that an IPv4 multicast address with an IPv6 source address fails, and vice-versa.

                                      Omar Ramadan

                                      Done

                                      Open in Gerrit

                                      Related details

                                      Attention is currently required from:
                                      • Adam Rice
                                      • Andrew Rayskiy
                                      • Reilly Grant
                                      • Tom Sepez
                                      • Vlad Krot
                                      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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                        Gerrit-Change-Number: 7186747
                                        Gerrit-PatchSet: 46
                                        Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                        Gerrit-Reviewer: Adam Rice <ri...@chromium.org>
                                        Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                        Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                        Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                        Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                        Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                        Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                        Gerrit-CC: Simon Hangl <sim...@google.com>
                                        Gerrit-CC: gwsq
                                        Gerrit-Attention: Tom Sepez <tse...@chromium.org>
                                        Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                                        Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                        Gerrit-Attention: Adam Rice <ri...@chromium.org>
                                        Gerrit-Attention: Vlad Krot <vk...@google.com>
                                        Gerrit-Comment-Date: Wed, 14 Jan 2026 10:59:17 +0000
                                        Gerrit-HasComments: Yes
                                        Gerrit-Has-Labels: No
                                        Comment-In-Reply-To: Tom Sepez <tse...@chromium.org>
                                        Comment-In-Reply-To: Reilly Grant <rei...@chromium.org>
                                        Comment-In-Reply-To: Omar Ramadan <om...@blockcast.net>
                                        Comment-In-Reply-To: Adam Rice <ri...@chromium.org>
                                        satisfied_requirement
                                        unsatisfied_requirement
                                        open
                                        diffy

                                        Adam Rice (Gerrit)

                                        unread,
                                        Jan 15, 2026, 9:45:27 AM (yesterday) Jan 15
                                        to Omar Ramadan, Chromium IPC Reviews, Tom Sepez, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, extension...@chromium.org, chromium-a...@chromium.org, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                        Attention needed from Adam Rice, Andrew Rayskiy, Omar Ramadan, Reilly Grant, Tom Sepez and Vlad Krot

                                        Adam Rice voted and added 4 comments

                                        Votes added by Adam Rice

                                        Commit-Queue+1

                                        4 comments

                                        File content/browser/direct_sockets/direct_sockets_udp_browsertest.cc
                                        Line 432, Patchset 47 (Latest): ASSERT_FALSE(addresses.empty()) << "No IPv4 interface found";
                                        Adam Rice . unresolved
                                        Unfortunately I don't think we can guarantee that every Chromium developer will have an IPv4 interface active. I think the best we can do is
                                        ```
                                        if (addresses.empty()) {
                                        GTEST_SKIP() << "No IPv4 interface found";
                                        }
                                        ```
                                        This risks us losing test coverage without noticing, but I don't have a better idea.

                                        I'm also worried these tests might fail if someone has multicast disabled, but the existing tests have the same issue, so let's ignore that problem for now.

                                        Line 459, Patchset 47 (Latest): EvalJsResult::IsError());
                                        Adam Rice . unresolved

                                        Because we cannot distinguish the type of error in C++, it's better to design the JavaScript to return a string indicating success when the expected exception is thrown.

                                        File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
                                        Line 147, Patchset 47 (Latest): HashSet<net::IPAddress> ssm_groups_;
                                        Adam Rice . unresolved

                                        Maybe use `HashSet<std::pair<net::IPAddress, net::IPAddress>>` so that you can include both the group and source in the set and so avoid an O(N) lookup when leaving the group?

                                        If that doesn't work, you could do something like `HashMap<net::IPAddress, HashSet<net::IPAddress>>` where the key to the map is the source address and the key to the set is the group.

                                        File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
                                        Line 312, Patchset 47 (Latest): ssm_groups_.insert(membership_key.group);
                                        Adam Rice . unresolved

                                        What happens if someone calls `joinGroup()` a second time with the same parameters before `OnJoinedGroup()` is called?

                                        Open in Gerrit

                                        Related details

                                        Attention is currently required from:
                                        • Adam Rice
                                        • Andrew Rayskiy
                                        • Omar Ramadan
                                        • Reilly Grant
                                        • Tom Sepez
                                        • Vlad Krot
                                          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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                            Gerrit-Change-Number: 7186747
                                            Gerrit-PatchSet: 47
                                            Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                            Gerrit-Reviewer: Adam Rice <ri...@chromium.org>
                                            Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                            Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                            Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                            Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                            Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                            Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                            Gerrit-CC: Simon Hangl <sim...@google.com>
                                            Gerrit-CC: gwsq
                                            Gerrit-Attention: Tom Sepez <tse...@chromium.org>
                                            Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                                            Gerrit-Attention: Omar Ramadan <om...@blockcast.net>
                                            Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                            Gerrit-Attention: Adam Rice <ri...@chromium.org>
                                            Gerrit-Attention: Vlad Krot <vk...@google.com>
                                            Gerrit-Comment-Date: Thu, 15 Jan 2026 14:44:56 +0000
                                            Gerrit-HasComments: Yes
                                            Gerrit-Has-Labels: Yes
                                            satisfied_requirement
                                            unsatisfied_requirement
                                            open
                                            diffy

                                            Omar Ramadan (Gerrit)

                                            unread,
                                            Jan 15, 2026, 12:46:13 PM (yesterday) Jan 15
                                            to Adam Rice, Chromium IPC Reviews, Tom Sepez, Vlad Krot, Andrew Rayskiy, Chromium LUCI CQ, AyeAye, Reilly Grant, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, Simon Hangl, extension...@chromium.org, chromium-a...@chromium.org, fenced-fra...@chromium.org, asvitki...@chromium.org, kinuko...@chromium.org, bnc+...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, network-ser...@chromium.org, rmcelra...@chromium.org
                                            Attention needed from Adam Rice, Andrew Rayskiy, Reilly Grant, Tom Sepez and Vlad Krot

                                            Omar Ramadan added 4 comments

                                            File content/browser/direct_sockets/direct_sockets_udp_browsertest.cc
                                            Line 432, Patchset 47: ASSERT_FALSE(addresses.empty()) << "No IPv4 interface found";
                                            Adam Rice . resolved
                                            Unfortunately I don't think we can guarantee that every Chromium developer will have an IPv4 interface active. I think the best we can do is
                                            ```
                                            if (addresses.empty()) {
                                            GTEST_SKIP() << "No IPv4 interface found";
                                            }
                                            ```
                                            This risks us losing test coverage without noticing, but I don't have a better idea.

                                            I'm also worried these tests might fail if someone has multicast disabled, but the existing tests have the same issue, so let's ignore that problem for now.

                                            Omar Ramadan

                                            Fair point, but if you are running without IPv4 I probably can't get your reports of less coverage.

                                            Line 459, Patchset 47: EvalJsResult::IsError());
                                            Adam Rice . resolved

                                            Because we cannot distinguish the type of error in C++, it's better to design the JavaScript to return a string indicating success when the expected exception is thrown.

                                            Omar Ramadan

                                            Done

                                            File third_party/blink/renderer/modules/direct_sockets/multicast_controller.h
                                            Line 147, Patchset 47: HashSet<net::IPAddress> ssm_groups_;
                                            Adam Rice . resolved

                                            Maybe use `HashSet<std::pair<net::IPAddress, net::IPAddress>>` so that you can include both the group and source in the set and so avoid an O(N) lookup when leaving the group?

                                            If that doesn't work, you could do something like `HashMap<net::IPAddress, HashSet<net::IPAddress>>` where the key to the map is the source address and the key to the set is the group.

                                            Omar Ramadan

                                            Done

                                            File third_party/blink/renderer/modules/direct_sockets/multicast_controller.cc
                                            Line 312, Patchset 47: ssm_groups_.insert(membership_key.group);
                                            Adam Rice . resolved

                                            What happens if someone calls `joinGroup()` a second time with the same parameters before `OnJoinedGroup()` is called?

                                            Omar Ramadan

                                            If `joinGroup()` is called a second time with the same parameters before `OnJoinedGroup()` is called, it throws an `InvalidStateError` with the message "Already joining this group/source combination". This is handled in multicast_controller.cc:197-202 the pending join is tracked in `join_group_promises_` immediately when `joinGroup()` is called, so subsequent calls with the same group/source are rejected until `OnJoinedGroup()` completes and removes the entry.

                                            Open in Gerrit

                                            Related details

                                            Attention is currently required from:
                                            • Adam Rice
                                            • Andrew Rayskiy
                                            • Reilly Grant
                                            • Tom Sepez
                                            • Vlad Krot
                                              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: Ia399ebcdbae425b1b89089eb5bcebbc5e8fa8d45
                                                Gerrit-Change-Number: 7186747
                                                Gerrit-PatchSet: 48
                                                Gerrit-Owner: Omar Ramadan <om...@blockcast.net>
                                                Gerrit-Reviewer: Adam Rice <ri...@chromium.org>
                                                Gerrit-Reviewer: Reilly Grant <rei...@chromium.org>
                                                Gerrit-Reviewer: Tom Sepez <tse...@chromium.org>
                                                Gerrit-Reviewer: Vlad Krot <vk...@google.com>
                                                Gerrit-CC: Andrew Rayskiy <green...@google.com>
                                                Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
                                                Gerrit-CC: Kentaro Hara <har...@chromium.org>
                                                Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
                                                Gerrit-CC: Simon Hangl <sim...@google.com>
                                                Gerrit-CC: gwsq
                                                Gerrit-Attention: Tom Sepez <tse...@chromium.org>
                                                Gerrit-Attention: Reilly Grant <rei...@chromium.org>
                                                Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                                                Gerrit-Attention: Adam Rice <ri...@chromium.org>
                                                Gerrit-Attention: Vlad Krot <vk...@google.com>
                                                Gerrit-Comment-Date: Thu, 15 Jan 2026 17:46:04 +0000
                                                Gerrit-HasComments: Yes
                                                Gerrit-Has-Labels: No
                                                Comment-In-Reply-To: Adam Rice <ri...@chromium.org>
                                                satisfied_requirement
                                                unsatisfied_requirement
                                                open
                                                diffy
                                                Reply all
                                                Reply to author
                                                Forward
                                                0 new messages