[fedcm] Extend the LocalFrame to query/notify <federation>s elements [chromium/src : main]

38 views
Skip to first unread message

Sam Goto (Gerrit)

unread,
Feb 3, 2026, 8:38:35 PM (8 days ago) Feb 3
to Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
Attention needed from Christian Biesinger

Sam Goto added 1 comment

Patchset-level comments
File-level comment, Patchset 7 (Latest):
Sam Goto . resolved

Christian, I took your advice and started extending the LocalFrame mojo. I think this works much better than the other approaches. Can you PTAL?

Open in Gerrit

Related details

Attention is currently required from:
  • Christian Biesinger
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: Ib5b22d29080de727e922392622c3b4e2a8684aae
Gerrit-Change-Number: 7543033
Gerrit-PatchSet: 7
Gerrit-Owner: Sam Goto <go...@chromium.org>
Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
Gerrit-Reviewer: Sam Goto <go...@chromium.org>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
Gerrit-Comment-Date: Wed, 04 Feb 2026 01:38:25 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Christian Biesinger (Gerrit)

unread,
Feb 4, 2026, 12:21:26 PM (7 days ago) Feb 4
to Sam Goto, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
Attention needed from Sam Goto

Christian Biesinger added 8 comments

File third_party/blink/public/mojom/frame/frame.mojom
Line 92, Patchset 7:struct Federation {
Christian Biesinger . unresolved

If I recall correctly, the design expects this element to contain a clickable element. If this is something we want to keep, maybe add something like `boolean is_clickable` that is true if there is a child element, and a function ClickFederationElement or something? Although maybe we should do that separately from this CL anyway.

File third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
Line 1468, Patchset 7: if (Document* document = GetDocument()) {
Christian Biesinger . unresolved

Everywhere else in this file assumes that GetDocument() can't return null. Do you have reason to believe that this instance is special?

If you want to keep the nullcheck, I'd turn this into an early return if document is null.

(same in the other function below)

Line 1472, Patchset 7: element.GetId(), element.GetIdentityProviderRequestOptions()));
Christian Biesinger . unresolved

We should probably allow for GetIdentityProviderRequestOptions() to return null if required attributes were not specified (e.g. no URL), and not add it to the result list if so

File third_party/blink/renderer/core/html/html_federation_element.cc
Line 33, Patchset 7: GetNonEmptyURLAttribute(html_names::kConfigurlAttr);
Christian Biesinger . unresolved

We may want to verify that this is not an invalid URL

Line 55, Patchset 7: // TODO(crbug.com/441895082): allow a structured JSON be passed to
Christian Biesinger . unresolved

So..

That is actually not what I meant and I don't think this is possible because this is an HTML attribute.

However, params is supposed to be serialized JSON, and since we are just reading a string from the attribute, it is possible that it is not valid JSON. In that case, we probably should not send malformed JSON to the server.

Line 65, Patchset 7: DispatchEvent(*Event::Create(event_type_names::kToken));
Christian Biesinger . unresolved

It would be better to create a new event interface and put the received token on the event, IMO.

File third_party/blink/renderer/core/html/html_federation_element.idl
Line 15, Patchset 7: readonly attribute DOMString token;
Christian Biesinger . unresolved

that does not look right, seems better to expose this on the event object?

File third_party/blink/web_tests/TestExpectations
Line 9749, Patchset 7:webexposed/global-interface-listing.html [ Failure ]
Christian Biesinger . unresolved

I am confused, what is the mismatch this is referring to?

it would be better to update the expectations file so that future unexpected mismatches do not get undetected

Open in Gerrit

Related details

Attention is currently required from:
  • Sam Goto
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: Ib5b22d29080de727e922392622c3b4e2a8684aae
    Gerrit-Change-Number: 7543033
    Gerrit-PatchSet: 7
    Gerrit-Owner: Sam Goto <go...@chromium.org>
    Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
    Gerrit-Reviewer: Sam Goto <go...@chromium.org>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-Attention: Sam Goto <go...@chromium.org>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 17:21:20 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Sam Goto (Gerrit)

    unread,
    Feb 4, 2026, 1:10:07 PM (7 days ago) Feb 4
    to Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
    Attention needed from Christian Biesinger

    Sam Goto added 8 comments

    File third_party/blink/public/mojom/frame/frame.mojom
    Line 92, Patchset 7:struct Federation {
    Christian Biesinger . resolved

    If I recall correctly, the design expects this element to contain a clickable element. If this is something we want to keep, maybe add something like `boolean is_clickable` that is true if there is a child element, and a function ClickFederationElement or something? Although maybe we should do that separately from this CL anyway.

    Sam Goto

    Yeah, I was planning to leave the entire "what happens when you click on it" to a separate CL to keep this one a bit more self-contained.

    I'm going to resolve, feel free to re-open if you feel like I should add that scope to this CL.

    File third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
    Line 1468, Patchset 7: if (Document* document = GetDocument()) {
    Christian Biesinger . unresolved

    Everywhere else in this file assumes that GetDocument() can't return null. Do you have reason to believe that this instance is special?

    If you want to keep the nullcheck, I'd turn this into an early return if document is null.

    (same in the other function below)

    Sam Goto

    Just curious: when would GetDocuments() be null in this case? Doesn't an HTMLElement always need to be attached to a Document?

    Line 1472, Patchset 7: element.GetId(), element.GetIdentityProviderRequestOptions()));
    Christian Biesinger . resolved

    We should probably allow for GetIdentityProviderRequestOptions() to return null if required attributes were not specified (e.g. no URL), and not add it to the result list if so

    Sam Goto

    Done. Also, added unittests and browser tests for this case.

    File third_party/blink/renderer/core/html/html_federation_element.cc
    Line 33, Patchset 7: GetNonEmptyURLAttribute(html_names::kConfigurlAttr);
    Christian Biesinger . resolved

    We may want to verify that this is not an invalid URL

    Sam Goto

    Done, also added a unit test.

    Line 55, Patchset 7: // TODO(crbug.com/441895082): allow a structured JSON be passed to
    Christian Biesinger . unresolved

    So..

    That is actually not what I meant and I don't think this is possible because this is an HTML attribute.

    However, params is supposed to be serialized JSON, and since we are just reading a string from the attribute, it is possible that it is not valid JSON. In that case, we probably should not send malformed JSON to the server.

    Sam Goto

    Yeah, I think I understand what you are looking for now. I think I have addressed, PTAL?

    One side effect of this is that if a developer wants to pass a "string" as a param, they have to wrap it around a \", which I think is OK.

    WDYT?

    Also, added a test.

    Line 65, Patchset 7: DispatchEvent(*Event::Create(event_type_names::kToken));
    Christian Biesinger . resolved

    It would be better to create a new event interface and put the received token on the event, IMO.

    Sam Goto

    Yeah, that's what I thought too, but mt raised to me in a TAG review that state should actually be in the element, rather than in the event from this principle here: https://w3ctag.github.io/design-principles/#state-and-subclassing

    Resolving, lmk if you strongly disagree with the principle or its applications.

    File third_party/blink/renderer/core/html/html_federation_element.idl
    Line 15, Patchset 7: readonly attribute DOMString token;
    Christian Biesinger . resolved

    that does not look right, seems better to expose this on the event object?

    Sam Goto

    Oh yeah, I thought so too, but that's what I heard from mt in a TAG review that pointed to to this design principle: https://w3ctag.github.io/design-principles/#state-and-subclassing


    Resolving, lmk if you disagree.

    File third_party/blink/web_tests/TestExpectations
    Line 9749, Patchset 7:webexposed/global-interface-listing.html [ Failure ]
    Christian Biesinger . unresolved

    I am confused, what is the mismatch this is referring to?

    it would be better to update the expectations file so that future unexpected mismatches do not get undetected

    Sam Goto

    This may go away if I sync my main branch, but at the moment, there is an unrelated failure happening here. I'll add it to this CL.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Christian Biesinger
    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: Ib5b22d29080de727e922392622c3b4e2a8684aae
    Gerrit-Change-Number: 7543033
    Gerrit-PatchSet: 10
    Gerrit-Owner: Sam Goto <go...@chromium.org>
    Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
    Gerrit-Reviewer: Sam Goto <go...@chromium.org>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 18:09:57 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Christian Biesinger <cbies...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Christian Biesinger (Gerrit)

    unread,
    Feb 4, 2026, 4:34:36 PM (7 days ago) Feb 4
    to Sam Goto, Dominic Farolino, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
    Attention needed from Sam Goto

    Christian Biesinger added 5 comments

    File content/browser/webid/federation_element_local_frame_browsertest.cc
    Line 186, Patchset 12 (Latest): <federation clientid="invalid-configurl" configurl="https://:80"></federation>
    Christian Biesinger . unresolved

    maybe add a test with invalid JSON in params?

    File third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
    Line 1468, Patchset 7: if (Document* document = GetDocument()) {
    Christian Biesinger . unresolved

    Everywhere else in this file assumes that GetDocument() can't return null. Do you have reason to believe that this instance is special?

    If you want to keep the nullcheck, I'd turn this into an early return if document is null.

    (same in the other function below)

    Sam Goto

    Just curious: when would GetDocuments() be null in this case? Doesn't an HTMLElement always need to be attached to a Document?

    Christian Biesinger

    This code goes from LocalFrameMojoHandler to Document, not from Element. I do not actually know when/if this can be null, I am just going by what other functions do 😞

    File third_party/blink/renderer/core/html/html_federation_element.cc
    Line 26, Patchset 12 (Latest):std::optional<mojom::blink::IdentityProviderRequestOptionsPtr>
    Christian Biesinger . unresolved

    It's a pointer, I would just return null for failure instead of wrapping an optional around it

    Line 55, Patchset 7: // TODO(crbug.com/441895082): allow a structured JSON be passed to
    Christian Biesinger . resolved

    So..

    That is actually not what I meant and I don't think this is possible because this is an HTML attribute.

    However, params is supposed to be serialized JSON, and since we are just reading a string from the attribute, it is possible that it is not valid JSON. In that case, we probably should not send malformed JSON to the server.

    Sam Goto

    Yeah, I think I understand what you are looking for now. I think I have addressed, PTAL?

    One side effect of this is that if a developer wants to pass a "string" as a param, they have to wrap it around a \", which I think is OK.

    WDYT?

    Also, added a test.

    Christian Biesinger

    I think that's reasonable.

    I can't decide whether I prefer ignoring invalid JSON like you do, or returning null and logging an error. so I'll go with what you did here.

    Line 65, Patchset 7: DispatchEvent(*Event::Create(event_type_names::kToken));
    Christian Biesinger . resolved

    It would be better to create a new event interface and put the received token on the event, IMO.

    Sam Goto

    Yeah, that's what I thought too, but mt raised to me in a TAG review that state should actually be in the element, rather than in the event from this principle here: https://w3ctag.github.io/design-principles/#state-and-subclassing

    Resolving, lmk if you strongly disagree with the principle or its applications.

    Christian Biesinger

    Hmm I am not sure I agree that the received token is "state" in this way, but I'm not going to argue with the TAG, so this is fine.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Sam Goto
    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: Ib5b22d29080de727e922392622c3b4e2a8684aae
    Gerrit-Change-Number: 7543033
    Gerrit-PatchSet: 12
    Gerrit-Owner: Sam Goto <go...@chromium.org>
    Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
    Gerrit-Reviewer: Sam Goto <go...@chromium.org>
    Gerrit-CC: Dominic Farolino <d...@chromium.org>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-Attention: Sam Goto <go...@chromium.org>
    Gerrit-Comment-Date: Wed, 04 Feb 2026 21:34:31 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Christian Biesinger <cbies...@chromium.org>
    Comment-In-Reply-To: Sam Goto <go...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Sam Goto (Gerrit)

    unread,
    Feb 5, 2026, 4:17:17 PM (6 days ago) Feb 5
    to Dominic Farolino, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
    Attention needed from Christian Biesinger

    Sam Goto added 4 comments

    File content/browser/webid/federation_element_local_frame_browsertest.cc
    Line 186, Patchset 12: <federation clientid="invalid-configurl" configurl="https://:80"></federation>
    Christian Biesinger . resolved

    maybe add a test with invalid JSON in params?

    Sam Goto

    I added a unit test here:

    https://chromium-review.googlesource.com/c/chromium/src/+/7543033/12/third_party/blink/renderer/core/html/html_federation_element_test.cc

    I was hoping to keep these corner cases in the unit test, and cover only some of the main cases in the browser test.

    Feel free to re-open if you disagree and I can add one here too.

    File third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
    Line 1468, Patchset 7: if (Document* document = GetDocument()) {
    Christian Biesinger . resolved

    Everywhere else in this file assumes that GetDocument() can't return null. Do you have reason to believe that this instance is special?

    If you want to keep the nullcheck, I'd turn this into an early return if document is null.

    (same in the other function below)

    Sam Goto

    Just curious: when would GetDocuments() be null in this case? Doesn't an HTMLElement always need to be attached to a Document?

    Christian Biesinger

    This code goes from LocalFrameMojoHandler to Document, not from Element. I do not actually know when/if this can be null, I am just going by what other functions do 😞

    Sam Goto

    Yeah, I don't think I have any reasons to believe hat GetDocument() can be null that would be inconsistent with how the other methods operate too. I'm going to remove the if () block here and go from there.

    File third_party/blink/renderer/core/html/html_federation_element.cc
    Line 26, Patchset 12:std::optional<mojom::blink::IdentityProviderRequestOptionsPtr>
    Christian Biesinger . resolved

    It's a pointer, I would just return null for failure instead of wrapping an optional around it

    Sam Goto

    Done

    File third_party/blink/web_tests/TestExpectations
    Line 9749, Patchset 7:webexposed/global-interface-listing.html [ Failure ]
    Christian Biesinger . resolved

    I am confused, what is the mismatch this is referring to?

    it would be better to update the expectations file so that future unexpected mismatches do not get undetected

    Sam Goto

    This may go away if I sync my main branch, but at the moment, there is an unrelated failure happening here. I'll add it to this CL.

    Sam Goto

    This just got removed in this last patch.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Christian Biesinger
    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: Ib5b22d29080de727e922392622c3b4e2a8684aae
      Gerrit-Change-Number: 7543033
      Gerrit-PatchSet: 14
      Gerrit-Owner: Sam Goto <go...@chromium.org>
      Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
      Gerrit-Reviewer: Sam Goto <go...@chromium.org>
      Gerrit-CC: Dominic Farolino <d...@chromium.org>
      Gerrit-CC: Kentaro Hara <har...@chromium.org>
      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
      Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
      Gerrit-Comment-Date: Thu, 05 Feb 2026 21:17:09 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Christian Biesinger (Gerrit)

      unread,
      Feb 5, 2026, 4:48:24 PM (6 days ago) Feb 5
      to Sam Goto, Christian Biesinger, Dominic Farolino, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
      Attention needed from Sam Goto

      Christian Biesinger voted and added 9 comments

      Votes added by Christian Biesinger

      Code-Review+1

      9 comments

      Patchset-level comments
      File-level comment, Patchset 14 (Latest):
      Christian Biesinger . resolved

      lgtm with nits below

      File content/browser/webid/federation_element_local_frame_browsertest.cc
      Line 186, Patchset 12: <federation clientid="invalid-configurl" configurl="https://:80"></federation>
      Christian Biesinger . resolved

      maybe add a test with invalid JSON in params?

      Sam Goto

      I added a unit test here:

      https://chromium-review.googlesource.com/c/chromium/src/+/7543033/12/third_party/blink/renderer/core/html/html_federation_element_test.cc

      I was hoping to keep these corner cases in the unit test, and cover only some of the main cases in the browser test.

      Feel free to re-open if you disagree and I can add one here too.

      Christian Biesinger

      sounds good

      File third_party/blink/renderer/core/frame/local_frame_mojo_handler.h
      Line 248, Patchset 14 (Latest): void DispatchFederationEvent(const base::UnguessableToken& id,
      Christian Biesinger . unresolved

      I would rename id to `element_id` or something like that

      File third_party/blink/renderer/core/html/html_federation_element.idl
      Line 10, Patchset 14 (Latest): [CEReactions, Reflect] attribute DOMString clientid;
      Christian Biesinger . unresolved
      Line 11, Patchset 14 (Latest): [CEReactions, Reflect, URL] attribute USVString configurl;
      Christian Biesinger . unresolved

      `configURL`

      Line 12, Patchset 14 (Latest): [CEReactions, Reflect] attribute DOMString loginhint;
      Christian Biesinger . unresolved

      `loginHint`

      Line 13, Patchset 14 (Latest): [CEReactions, Reflect] attribute DOMString domainhint;
      Christian Biesinger . unresolved

      `domainHint`

      File third_party/blink/web_tests/TestExpectations
      Line 9678, Patchset 14 (Latest):virtual/stable/webexposed/global-interface-listing.html [ Pass ]
      Christian Biesinger . unresolved

      this shouldn't be needed now

      File third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
      Line 13135, Patchset 14 (Latest):interface XSLTProcessor
      Christian Biesinger . unresolved

      can you remove this change?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Sam Goto
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: Ib5b22d29080de727e922392622c3b4e2a8684aae
        Gerrit-Change-Number: 7543033
        Gerrit-PatchSet: 14
        Gerrit-Owner: Sam Goto <go...@chromium.org>
        Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
        Gerrit-Reviewer: Sam Goto <go...@chromium.org>
        Gerrit-CC: Dominic Farolino <d...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Sam Goto <go...@chromium.org>
        Gerrit-Comment-Date: Thu, 05 Feb 2026 21:48:18 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Sam Goto (Gerrit)

        unread,
        Feb 5, 2026, 6:16:01 PM (6 days ago) Feb 5
        to Christian Biesinger, Dominic Farolino, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
        Attention needed from Christian Biesinger

        Sam Goto added 6 comments

        File third_party/blink/renderer/core/frame/local_frame_mojo_handler.h
        Line 248, Patchset 14: void DispatchFederationEvent(const base::UnguessableToken& id,
        Christian Biesinger . resolved

        I would rename id to `element_id` or something like that

        Sam Goto

        Done

        File third_party/blink/renderer/core/html/html_federation_element.idl
        Line 10, Patchset 14: [CEReactions, Reflect] attribute DOMString clientid;
        Christian Biesinger . resolved
        Sam Goto

        Done

        Line 11, Patchset 14: [CEReactions, Reflect, URL] attribute USVString configurl;
        Christian Biesinger . resolved

        `configURL`

        Sam Goto

        Done

        Line 12, Patchset 14: [CEReactions, Reflect] attribute DOMString loginhint;
        Christian Biesinger . resolved

        `loginHint`

        Sam Goto

        Done

        Line 13, Patchset 14: [CEReactions, Reflect] attribute DOMString domainhint;
        Christian Biesinger . resolved

        `domainHint`

        Sam Goto

        Done

        File third_party/blink/web_tests/TestExpectations
        Line 9678, Patchset 14:virtual/stable/webexposed/global-interface-listing.html [ Pass ]
        Christian Biesinger . resolved

        this shouldn't be needed now

        Sam Goto

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Christian Biesinger
        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: Ib5b22d29080de727e922392622c3b4e2a8684aae
          Gerrit-Change-Number: 7543033
          Gerrit-PatchSet: 17
          Gerrit-Owner: Sam Goto <go...@chromium.org>
          Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
          Gerrit-Reviewer: Sam Goto <go...@chromium.org>
          Gerrit-CC: Dominic Farolino <d...@chromium.org>
          Gerrit-CC: Kentaro Hara <har...@chromium.org>
          Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
          Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
          Gerrit-Comment-Date: Thu, 05 Feb 2026 23:15:52 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Sam Goto (Gerrit)

          unread,
          Feb 6, 2026, 2:24:15 PM (5 days ago) Feb 6
          to Christian Biesinger, Dominic Farolino, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
          Attention needed from Christian Biesinger

          Sam Goto added 1 comment

          File third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
          Line 13135, Patchset 14:interface XSLTProcessor
          Christian Biesinger . resolved

          can you remove this change?

          Sam Goto

          Yes. Done.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Christian Biesinger
          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: Ib5b22d29080de727e922392622c3b4e2a8684aae
            Gerrit-Change-Number: 7543033
            Gerrit-PatchSet: 18
            Gerrit-Owner: Sam Goto <go...@chromium.org>
            Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
            Gerrit-Reviewer: Sam Goto <go...@chromium.org>
            Gerrit-CC: Dominic Farolino <d...@chromium.org>
            Gerrit-CC: Kentaro Hara <har...@chromium.org>
            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
            Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
            Gerrit-Comment-Date: Fri, 06 Feb 2026 19:24:05 +0000
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Sam Goto (Gerrit)

            unread,
            Feb 6, 2026, 2:26:06 PM (5 days ago) Feb 6
            to Chromium IPC Reviews, Christian Biesinger, Dominic Farolino, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
            Attention needed from Christian Biesinger, Chromium IPC Reviews and Nasko Oskov

            Sam Goto added 1 comment

            Patchset-level comments
            File-level comment, Patchset 18 (Latest):
            Sam Goto . resolved

            Nasko and @chromium-ipc-reviewers,

              Could you please take a look at:
              third_party/blink/public/mojom/frame/ frame.mojom
            content/public/test/ fake_local_frame.h
            content/public/test/ fake_local_frame.cc

            ?
            Open in Gerrit

            Related details

            Attention is currently required from:
            • Christian Biesinger
            • Chromium IPC Reviews
            • Nasko Oskov
            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: Ib5b22d29080de727e922392622c3b4e2a8684aae
            Gerrit-Change-Number: 7543033
            Gerrit-PatchSet: 18
            Gerrit-Owner: Sam Goto <go...@chromium.org>
            Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
            Gerrit-Reviewer: Chromium IPC Reviews <chrome-ip...@google.com>
            Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
            Gerrit-Reviewer: Sam Goto <go...@chromium.org>
            Gerrit-CC: Dominic Farolino <d...@chromium.org>
            Gerrit-CC: Kentaro Hara <har...@chromium.org>
            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
            Gerrit-Attention: Nasko Oskov <na...@chromium.org>
            Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
            Gerrit-Attention: Chromium IPC Reviews <chrome-ip...@google.com>
            Gerrit-Comment-Date: Fri, 06 Feb 2026 19:25:58 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            gwsq (Gerrit)

            unread,
            Feb 6, 2026, 2:27:27 PM (5 days ago) Feb 6
            to Sam Goto, Chromium IPC Reviews, Christian Biesinger, Dominic Farolino, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
            Attention needed from Christian Biesinger and Nasko Oskov

            Message from gwsq

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

            Note: IPC gwsq added no new reviewers; existing reviewers satisfied requirements!

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

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Christian Biesinger
            • Nasko Oskov
            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: Ib5b22d29080de727e922392622c3b4e2a8684aae
            Gerrit-Change-Number: 7543033
            Gerrit-PatchSet: 18
            Gerrit-Owner: Sam Goto <go...@chromium.org>
            Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
            Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
            Gerrit-Reviewer: Sam Goto <go...@chromium.org>
            Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
            Gerrit-CC: Dominic Farolino <d...@chromium.org>
            Gerrit-CC: Kentaro Hara <har...@chromium.org>
            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
            Gerrit-CC: gwsq
            Gerrit-Attention: Nasko Oskov <na...@chromium.org>
            Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
            Gerrit-Comment-Date: Fri, 06 Feb 2026 19:27:22 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: No
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Dominic Farolino (Gerrit)

            unread,
            Feb 6, 2026, 3:40:41 PM (5 days ago) Feb 6
            to Sam Goto, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
            Attention needed from Christian Biesinger, Nasko Oskov and Sam Goto

            Dominic Farolino added 10 comments

            Commit Message
            Line 10, Patchset 19 (Latest):methods to the LocalFrame renderer mojom service, so that the browser
            Dominic Farolino . unresolved

            ```suggestion
            methods to the LocalFrame renderer mojom interface, so that the browser
            ```

            Line 16, Patchset 19 (Latest):https://github.com/fedidcg/declarative-login
            Dominic Farolino . unresolved

            I see no mention of the `<federation>` element there, but I do see lots of `<login>` and `<credential>`. What's missing?

            File third_party/blink/public/mojom/frame/frame.mojom
            Line 1290, Patchset 19 (Latest): GetFederations() => (array<Federation> federations);
            Dominic Farolino . unresolved

            Technically per https://docs.google.com/document/d/1Kw4aTuISF7csHnjOpDJGc7JYIjlvOAKRprCTBVWw_E4/edit?tab=t.0#heading=h.jv90dicow9kc, these new methods need to have at least one non-test usage, but they're only really exercised in browser tests and no production path.

            https://chromium-review.googlesource.com/c/chromium/src/+/7539587 probably has some "production"-paths. Would it be possible to chain the next CL on top of this one that shows how these are really going to be used? (or point out which parts of that aforementioned CL I should look at to get a feel for how these mojo methods would be used outside of tests)?

            Line 1293, Patchset 19 (Latest): DispatchFederationEvent(mojo_base.mojom.UnguessableToken element_id, string token);
            Dominic Farolino . unresolved

            What is this supposed to do besides just dispatching a DOM event? What Blink actions are supposed to happen, or what does this indicate?

            File third_party/blink/renderer/core/html/html_federation_element.h
            Line 38, Patchset 19 (Latest): String token_;
            Dominic Farolino . unresolved

            Can you add some documentation describing what these members are, and how they relate to the concepts in the explainer?

            File third_party/blink/renderer/core/html/html_federation_element.cc
            Line 38, Patchset 19 (Latest): options->config->client_id = "";
            Dominic Farolino . unresolved
            ```suggestion
            options->config->client_id = g_empty_atom;
            ```

            Maybe?

            Line 42, Patchset 19 (Latest): options->nonce = "";
            Dominic Farolino . unresolved

            Maybe same for now.

            Line 70, Patchset 19 (Latest): token_ = token;
            Dominic Farolino . unresolved

            Can you `DCHECK(isConnected());` first?

            File third_party/blink/renderer/core/html/html_federation_element.idl
            Line 17, Patchset 19 (Latest): attribute EventHandler ontoken;
            Dominic Farolino . unresolved

            Per https://github.com/w3ctag/design-principles/pull/612, I think you'll want to add this to global_event_handlers.idl. I'd go with that approach in the meantime, and revert back to this one if my PR turns out to be in the wrong direction.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Christian Biesinger
            • Nasko Oskov
            • Sam Goto
            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: Ib5b22d29080de727e922392622c3b4e2a8684aae
              Gerrit-Change-Number: 7543033
              Gerrit-PatchSet: 19
              Gerrit-Owner: Sam Goto <go...@chromium.org>
              Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
              Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
              Gerrit-Reviewer: Sam Goto <go...@chromium.org>
              Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
              Gerrit-CC: Dominic Farolino <d...@chromium.org>
              Gerrit-CC: Kentaro Hara <har...@chromium.org>
              Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
              Gerrit-CC: gwsq
              Gerrit-Attention: Nasko Oskov <na...@chromium.org>
              Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
              Gerrit-Attention: Sam Goto <go...@chromium.org>
              Gerrit-Comment-Date: Fri, 06 Feb 2026 20:40:36 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Christian Biesinger (Gerrit)

              unread,
              Feb 6, 2026, 3:53:15 PM (5 days ago) Feb 6
              to Sam Goto, Dominic Farolino, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
              Attention needed from Nasko Oskov and Sam Goto

              Christian Biesinger added 2 comments

              File third_party/blink/public/mojom/frame/frame.mojom
              Line 1293, Patchset 19 (Latest): DispatchFederationEvent(mojo_base.mojom.UnguessableToken element_id, string token);
              Dominic Farolino . unresolved

              What is this supposed to do besides just dispatching a DOM event? What Blink actions are supposed to happen, or what does this indicate?

              Christian Biesinger

              That's it -- the website is supposed to listen to the event to receive the token that the IDP sent to the browser.

              In a regular FedCM call, there's a promise returned from navigator.credentials.get. But in this case, because it's declarative, we instead deliver the token through this event. (Per https://www.w3.org/TR/design-principles/#state-and-subclassing, the token is stored on the federation element, not on the event object)

              File third_party/blink/renderer/core/html/html_federation_element.cc
              Dominic Farolino . unresolved

              Can you `DCHECK(isConnected());` first?

              Christian Biesinger

              just curious -- what's wrong with dispatching an event on a disconnected element? (I know this can't actually happen here, because of how we find the element)

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Nasko Oskov
              • Sam Goto
              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: Ib5b22d29080de727e922392622c3b4e2a8684aae
              Gerrit-Change-Number: 7543033
              Gerrit-PatchSet: 19
              Gerrit-Owner: Sam Goto <go...@chromium.org>
              Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
              Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
              Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
              Gerrit-Reviewer: Sam Goto <go...@chromium.org>
              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: gwsq
              Gerrit-Attention: Nasko Oskov <na...@chromium.org>
              Gerrit-Attention: Sam Goto <go...@chromium.org>
              Gerrit-Comment-Date: Fri, 06 Feb 2026 20:53:10 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              Comment-In-Reply-To: Dominic Farolino <d...@chromium.org>
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Christian Biesinger (Gerrit)

              unread,
              Feb 6, 2026, 3:55:37 PM (5 days ago) Feb 6
              to Sam Goto, Dominic Farolino, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
              Attention needed from Nasko Oskov and Sam Goto

              Christian Biesinger added 1 comment

              File third_party/blink/renderer/core/html/html_federation_element.h
              Gerrit-Comment-Date: Fri, 06 Feb 2026 20:55:32 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Dominic Farolino (Gerrit)

              unread,
              Feb 6, 2026, 4:05:35 PM (5 days ago) Feb 6
              to Sam Goto, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
              Attention needed from Nasko Oskov and Sam Goto

              Dominic Farolino added 2 comments

              File third_party/blink/public/mojom/frame/frame.mojom
              Line 1293, Patchset 19 (Latest): DispatchFederationEvent(mojo_base.mojom.UnguessableToken element_id, string token);
              Dominic Farolino . unresolved

              What is this supposed to do besides just dispatching a DOM event? What Blink actions are supposed to happen, or what does this indicate?

              Christian Biesinger

              That's it -- the website is supposed to listen to the event to receive the token that the IDP sent to the browser.

              In a regular FedCM call, there's a promise returned from navigator.credentials.get. But in this case, because it's declarative, we instead deliver the token through this event. (Per https://www.w3.org/TR/design-principles/#state-and-subclassing, the token is stored on the federation element, not on the event object)

              Dominic Farolino

              Ah so Blink literally isn't supposed to take any action besides storing the state, and telling the developer about it here so they can grab it off of the element?

              File third_party/blink/renderer/core/html/html_federation_element.cc
              Dominic Farolino . unresolved

              Can you `DCHECK(isConnected());` first?

              Christian Biesinger

              just curious -- what's wrong with dispatching an event on a disconnected element? (I know this can't actually happen here, because of how we find the element)

              Dominic Farolino

              Nothing, it's just that this event is not intended to ever be dispatched on a disconnected federation element (at least through this path), so I figured we'd "enforce" that here.

              Gerrit-Comment-Date: Fri, 06 Feb 2026 21:05:29 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              Comment-In-Reply-To: Dominic Farolino <d...@chromium.org>
              Comment-In-Reply-To: Christian Biesinger <cbies...@chromium.org>
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Christian Biesinger (Gerrit)

              unread,
              Feb 6, 2026, 4:20:04 PM (5 days ago) Feb 6
              to Sam Goto, Dominic Farolino, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
              Attention needed from Nasko Oskov and Sam Goto

              Christian Biesinger added 1 comment

              File third_party/blink/public/mojom/frame/frame.mojom
              Line 1293, Patchset 19 (Latest): DispatchFederationEvent(mojo_base.mojom.UnguessableToken element_id, string token);
              Dominic Farolino . unresolved

              What is this supposed to do besides just dispatching a DOM event? What Blink actions are supposed to happen, or what does this indicate?

              Christian Biesinger

              That's it -- the website is supposed to listen to the event to receive the token that the IDP sent to the browser.

              In a regular FedCM call, there's a promise returned from navigator.credentials.get. But in this case, because it's declarative, we instead deliver the token through this event. (Per https://www.w3.org/TR/design-principles/#state-and-subclassing, the token is stored on the federation element, not on the event object)

              Dominic Farolino

              Ah so Blink literally isn't supposed to take any action besides storing the state, and telling the developer about it here so they can grab it off of the element?

              Christian Biesinger

              Yes that's correct

              Gerrit-Comment-Date: Fri, 06 Feb 2026 21:20:00 +0000
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Dominic Farolino (Gerrit)

              unread,
              Feb 6, 2026, 4:44:50 PM (5 days ago) Feb 6
              to Sam Goto, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
              Attention needed from Nasko Oskov and Sam Goto

              Dominic Farolino added 1 comment

              File third_party/blink/public/mojom/frame/frame.mojom
              Line 1293, Patchset 19 (Latest): DispatchFederationEvent(mojo_base.mojom.UnguessableToken element_id, string token);
              Dominic Farolino . unresolved

              What is this supposed to do besides just dispatching a DOM event? What Blink actions are supposed to happen, or what does this indicate?

              Christian Biesinger

              That's it -- the website is supposed to listen to the event to receive the token that the IDP sent to the browser.

              In a regular FedCM call, there's a promise returned from navigator.credentials.get. But in this case, because it's declarative, we instead deliver the token through this event. (Per https://www.w3.org/TR/design-principles/#state-and-subclassing, the token is stored on the federation element, not on the event object)

              Dominic Farolino

              Ah so Blink literally isn't supposed to take any action besides storing the state, and telling the developer about it here so they can grab it off of the element?

              Christian Biesinger

              Yes that's correct

              Dominic Farolino

              What "type" should `token` be? It's a string, but can it be described by any more specific type?

              Gerrit-Comment-Date: Fri, 06 Feb 2026 21:44:45 +0000
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Nasko Oskov (Gerrit)

              unread,
              Feb 6, 2026, 7:17:59 PM (5 days ago) Feb 6
              to Sam Goto, Dominic Farolino, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
              Attention needed from Sam Goto

              Nasko Oskov added 1 comment

              File third_party/blink/public/mojom/frame/frame.mojom
              Line 1293, Patchset 19 (Latest): DispatchFederationEvent(mojo_base.mojom.UnguessableToken element_id, string token);
              Nasko Oskov . unresolved

              I find it strange to add mojo IPC methods without actual usage. +1 on dom@'s comment that we should see a bit more of the picture and linking to the future CLs in this one is needed.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Sam Goto
              Gerrit-Attention: Sam Goto <go...@chromium.org>
              Gerrit-Comment-Date: Sat, 07 Feb 2026 00:17:51 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Sam Goto (Gerrit)

              unread,
              Feb 9, 2026, 3:20:40 PM (2 days ago) Feb 9
              to Dominic Farolino, Chromium IPC Reviews, Christian Biesinger, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, blink-re...@chromium.org, blink-revie...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, npm+...@chromium.org, yigu+...@chromium.org
              Attention needed from Christian Biesinger, Dominic Farolino and Nasko Oskov

              Sam Goto added 3 comments

              Patchset-level comments
              File-level comment, Patchset 20 (Latest):
              Sam Goto . resolved

              I re-based this CL on top of other three to try to answer some of the questions.

              I still don't have a good answer on how to re-base this CL in a way that answers the question of "how does this get used outside of tests" for this CL specifically, because it is being used in agentic experiences and I'm not sure yet how to connect this CL with it.

              I'm working with my team to see how things connect here and I'll report back, but in the meantime, I branched this CL out of other 3 CLs that I think can be looked at independently from this one here, specifically.

              Commit Message

              I see no mention of the `<federation>` element there, but I do see lots of `<login>` and `<credential>`. What's missing?

              Sam Goto

              This is somewhat changing as I'm gathering more and more implementation experience, so apologies for the confusion.

              I have rebased this change onto a renaming that more closely matches what's described in the explainer.

              https://chromium-review.googlesource.com/c/chromium/src/+/7558441

              I'm going to mark this as resolve since I believe the changes above (and rebasing this CL on top of that) hopefully clarifies how `<federation>` got renamed to `<credential type="federated">` and how `<login>` gets introduced (and how it relates to `<crednetial>` now.).

              Feel free to re-open if this is still confusing.

              File third_party/blink/public/mojom/frame/frame.mojom
              Line 1293, Patchset 19: DispatchFederationEvent(mojo_base.mojom.UnguessableToken element_id, string token);
              Nasko Oskov . unresolved

              I find it strange to add mojo IPC methods without actual usage. +1 on dom@'s comment that we should see a bit more of the picture and linking to the future CLs in this one is needed.

              Sam Goto

              SGTM

              Let me rebase some of these changes so that it gets easier to see how this (specifically, the Mojom browser/renderer API changes) is intended to be used.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Christian Biesinger
              • Dominic Farolino
              • Nasko Oskov
              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: Ib5b22d29080de727e922392622c3b4e2a8684aae
              Gerrit-Change-Number: 7543033
              Gerrit-PatchSet: 20
              Gerrit-Owner: Sam Goto <go...@chromium.org>
              Gerrit-Reviewer: Christian Biesinger <cbies...@chromium.org>
              Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
              Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
              Gerrit-Reviewer: Sam Goto <go...@chromium.org>
              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: gwsq
              Gerrit-Attention: Nasko Oskov <na...@chromium.org>
              Gerrit-Attention: Dominic Farolino <d...@chromium.org>
              Gerrit-Attention: Christian Biesinger <cbies...@chromium.org>
              Gerrit-Comment-Date: Mon, 09 Feb 2026 20:20:30 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              Comment-In-Reply-To: Nasko Oskov <na...@chromium.org>
              Comment-In-Reply-To: Dominic Farolino <d...@chromium.org>
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy
              Reply all
              Reply to author
              Forward
              0 new messages