Allow IWAs to call navigator.credentials methods [chromium/src : main]

0 views
Skip to first unread message

Martin Kreichgauer (Gerrit)

unread,
Mar 16, 2026, 6:47:59 PMMar 16
to Olga Korokhina, Jerome Jiang, Mirko Bonadei, Andrew Rayskiy, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
Attention needed from Andrew Rayskiy and Olga Korokhina

Martin Kreichgauer added 5 comments

Patchset-level comments
File-level comment, Patchset 52 (Latest):
Martin Kreichgauer . resolved

It looks like in the latest PS you uploaded an outdated gclient sync state.

File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
Line 211, Patchset 50: scoped_feature_list.InitWithFeatures(
Martin Kreichgauer . unresolved

Nit: `scoped_feature_list_`.

But more generally, it's odd that the base test suite shouldn't enables IWAs if it's only relevant for a fraction of the tests. I suggest splitting this into its own test suite, or moving the ScopedFeatureList inline.

Olga Korokhina

We can't make it inline due to features should be set up in a constructor:
FATAL browser_tests[243908:243908]: [base/feature_list.cc:137] DCHECK failed: feature_overrides_allowed. FeatureList overrides must happen in the test constructor, before BrowserTestBase::SetUp() has run.
Can we still keep it in same test suite, please? For the sake of hermeticy.

Martin Kreichgauer

That is a fair point. But your most recent change made the ScopedFeatureList local to the constructor, which is certainly not what was intended.

Line 320, Patchset 52 (Latest): // we do not add any permission here because of it will fail before
Martin Kreichgauer . unresolved

Nit: W

File chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc
Line 275, Patchset 52 (Latest): ::testing::Values(true, false),
Martin Kreichgauer . unresolved

Nit: `testing::Bool()`

File content/browser/webauth/webauth_request_security_checker.cc
Line 201, Patchset 50: } else if (!webauthn::
OriginIsAllowedToUseWebAuthnWithoutRemoteDesktopClientOverride(
caller_origin)) {
// IWAs now can only use WebAuthn in VDI, so with remote desktop override
// extension only
std::move(callback).Run(blink::mojom::AuthenticatorStatus::NOT_IMPLEMENTED);
return nullptr;
}
Martin Kreichgauer . unresolved

I think it would be simpler to just update OriginIsAllowedToClaimRelyingPartyId() to always return false for `iwa://...` origins. I believe that's the semantics we want here, and then we don't need this additional method.

Olga Korokhina

No, this doesn't work because that check happens before check if remoteDesktopClientOverride is used or not. I tried the way you propose and it lead to any IWA calls were rejected. We need to disable local but enable VDIs (with remoteDesktopClientOverride used).

Martin Kreichgauer

I agree that only calls with remoteDesktopClientOverride should succeed, but…

this doesn't work because that check happens before check if remoteDesktopClientOverride is used or not.

Isn't the check for the remoteDesktopClientOverride happening on ll185-200 and the check for OriginIsAllowedToClaimRelyingPartyId() on l210 (which would be **after** and not before)?

I.e., if an IWA was using remoteDesktopClientOverride (and authorized to do so), relying_party_origin would be set to the origin override on l200, and then OriginIsAllowedToClaimRelyingPartyId() would succeed as if the caller was not an IWA. If an IWA was not using the override extension, OriginIsAllowedToClaimRelyingPartyId() would fail, because the caller is an IWA.

Open in Gerrit

Related details

Attention is currently required from:
  • Andrew Rayskiy
  • Olga Korokhina
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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
Gerrit-Change-Number: 6865592
Gerrit-PatchSet: 52
Gerrit-Owner: Olga Korokhina <koro...@google.com>
Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
Gerrit-CC: Chris Thompson <cth...@chromium.org>
Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
Gerrit-CC: Jerome Jiang <ji...@chromium.org>
Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
Gerrit-CC: Simon Hangl <sim...@google.com>
Gerrit-Attention: Andrew Rayskiy <green...@google.com>
Gerrit-Attention: Olga Korokhina <koro...@google.com>
Gerrit-Comment-Date: Mon, 16 Mar 2026 22:47:48 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Martin Kreichgauer <mart...@google.com>
Comment-In-Reply-To: Olga Korokhina <koro...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Olga Korokhina (Gerrit)

unread,
Mar 17, 2026, 8:09:44 AMMar 17
to Jerome Jiang, Mirko Bonadei, Andrew Rayskiy, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
Attention needed from Andrew Rayskiy and Martin Kreichgauer

Olga Korokhina voted and added 4 comments

Votes added by Olga Korokhina

Commit-Queue+1

4 comments

File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
Line 211, Patchset 50: scoped_feature_list.InitWithFeatures(
Martin Kreichgauer . resolved

Nit: `scoped_feature_list_`.

But more generally, it's odd that the base test suite shouldn't enables IWAs if it's only relevant for a fraction of the tests. I suggest splitting this into its own test suite, or moving the ScopedFeatureList inline.

Olga Korokhina

We can't make it inline due to features should be set up in a constructor:
FATAL browser_tests[243908:243908]: [base/feature_list.cc:137] DCHECK failed: feature_overrides_allowed. FeatureList overrides must happen in the test constructor, before BrowserTestBase::SetUp() has run.
Can we still keep it in same test suite, please? For the sake of hermeticy.

Martin Kreichgauer

That is a fair point. But your most recent change made the ScopedFeatureList local to the constructor, which is certainly not what was intended.

Olga Korokhina

True! Still it somehow works, I believe we can keep it there (local to constructor) - looks lie it is injected properly and stays until end of execution.

Line 320, Patchset 52: // we do not add any permission here because of it will fail before
Martin Kreichgauer . resolved

Nit: W

Olga Korokhina

Thank you, fixed.

File chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc
Line 275, Patchset 52: ::testing::Values(true, false),
Martin Kreichgauer . resolved

Nit: `testing::Bool()`

Olga Korokhina

Cool, I didn't know it will work with both possible values this way, thank you very much!

File content/browser/webauth/webauth_request_security_checker.cc
Line 201, Patchset 50: } else if (!webauthn::
OriginIsAllowedToUseWebAuthnWithoutRemoteDesktopClientOverride(
caller_origin)) {
// IWAs now can only use WebAuthn in VDI, so with remote desktop override
// extension only
std::move(callback).Run(blink::mojom::AuthenticatorStatus::NOT_IMPLEMENTED);
return nullptr;
}
Martin Kreichgauer . unresolved

I think it would be simpler to just update OriginIsAllowedToClaimRelyingPartyId() to always return false for `iwa://...` origins. I believe that's the semantics we want here, and then we don't need this additional method.

Olga Korokhina

No, this doesn't work because that check happens before check if remoteDesktopClientOverride is used or not. I tried the way you propose and it lead to any IWA calls were rejected. We need to disable local but enable VDIs (with remoteDesktopClientOverride used).

Martin Kreichgauer

I agree that only calls with remoteDesktopClientOverride should succeed, but…

this doesn't work because that check happens before check if remoteDesktopClientOverride is used or not.

Isn't the check for the remoteDesktopClientOverride happening on ll185-200 and the check for OriginIsAllowedToClaimRelyingPartyId() on l210 (which would be **after** and not before)?

I.e., if an IWA was using remoteDesktopClientOverride (and authorized to do so), relying_party_origin would be set to the origin override on l200, and then OriginIsAllowedToClaimRelyingPartyId() would succeed as if the caller was not an IWA. If an IWA was not using the override extension, OriginIsAllowedToClaimRelyingPartyId() would fail, because the caller is an IWA.

Olga Korokhina

Oh, this way. Thank you, adjusted, hope understood it right.

Open in Gerrit

Related details

Attention is currently required from:
  • Andrew Rayskiy
  • Martin Kreichgauer
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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
Gerrit-Change-Number: 6865592
Gerrit-PatchSet: 54
Gerrit-Owner: Olga Korokhina <koro...@google.com>
Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
Gerrit-CC: Chris Thompson <cth...@chromium.org>
Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
Gerrit-CC: Jerome Jiang <ji...@chromium.org>
Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
Gerrit-CC: Simon Hangl <sim...@google.com>
Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
Gerrit-Attention: Andrew Rayskiy <green...@google.com>
Gerrit-Comment-Date: Tue, 17 Mar 2026 12:09:29 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Martin Kreichgauer (Gerrit)

unread,
Mar 17, 2026, 12:25:41 PMMar 17
to Olga Korokhina, Jerome Jiang, Mirko Bonadei, Andrew Rayskiy, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
Attention needed from Andrew Rayskiy and Olga Korokhina

Martin Kreichgauer added 1 comment

File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
Line 211, Patchset 50: scoped_feature_list.InitWithFeatures(
Martin Kreichgauer . unresolved

Nit: `scoped_feature_list_`.

But more generally, it's odd that the base test suite shouldn't enables IWAs if it's only relevant for a fraction of the tests. I suggest splitting this into its own test suite, or moving the ScopedFeatureList inline.

Olga Korokhina

We can't make it inline due to features should be set up in a constructor:
FATAL browser_tests[243908:243908]: [base/feature_list.cc:137] DCHECK failed: feature_overrides_allowed. FeatureList overrides must happen in the test constructor, before BrowserTestBase::SetUp() has run.
Can we still keep it in same test suite, please? For the sake of hermeticy.

Martin Kreichgauer

That is a fair point. But your most recent change made the ScopedFeatureList local to the constructor, which is certainly not what was intended.

Olga Korokhina

True! Still it somehow works, I believe we can keep it there (local to constructor) - looks lie it is injected properly and stays until end of execution.

Attention is currently required from:
  • Andrew Rayskiy
  • Olga Korokhina
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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
Gerrit-Change-Number: 6865592
Gerrit-PatchSet: 55
Gerrit-Owner: Olga Korokhina <koro...@google.com>
Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
Gerrit-CC: Chris Thompson <cth...@chromium.org>
Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
Gerrit-CC: Jerome Jiang <ji...@chromium.org>
Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
Gerrit-CC: Simon Hangl <sim...@google.com>
Gerrit-Attention: Andrew Rayskiy <green...@google.com>
Gerrit-Attention: Olga Korokhina <koro...@google.com>
Gerrit-Comment-Date: Tue, 17 Mar 2026 16:25:30 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Olga Korokhina (Gerrit)

unread,
Mar 17, 2026, 12:29:16 PMMar 17
to Jerome Jiang, Mirko Bonadei, Andrew Rayskiy, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
Attention needed from Andrew Rayskiy and Martin Kreichgauer

Olga Korokhina added 1 comment

File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
Line 211, Patchset 50: scoped_feature_list.InitWithFeatures(
Martin Kreichgauer . unresolved

Nit: `scoped_feature_list_`.

But more generally, it's odd that the base test suite shouldn't enables IWAs if it's only relevant for a fraction of the tests. I suggest splitting this into its own test suite, or moving the ScopedFeatureList inline.

Olga Korokhina

We can't make it inline due to features should be set up in a constructor:
FATAL browser_tests[243908:243908]: [base/feature_list.cc:137] DCHECK failed: feature_overrides_allowed. FeatureList overrides must happen in the test constructor, before BrowserTestBase::SetUp() has run.
Can we still keep it in same test suite, please? For the sake of hermeticy.

Martin Kreichgauer

That is a fair point. But your most recent change made the ScopedFeatureList local to the constructor, which is certainly not what was intended.

Olga Korokhina

True! Still it somehow works, I believe we can keep it there (local to constructor) - looks lie it is injected properly and stays until end of execution.

Martin Kreichgauer

That's not how it works, I'm afraid. The ScopedFeatureList destructor resets any overrides. https://source.chromium.org/chromium/chromium/src/+/main:base/test/scoped_feature_list.cc;drc=6d57b3d63b080eb4f85344ff0782c962b8ba794b;bpv=1;bpt=1;l=303?q=base::test::ScopedFeatureList

Olga Korokhina

Copy, thank you! So I need to revert it, have scoped_feature_list be declared in class and be initialized in the constructor, let me do this.

Open in Gerrit

Related details

Attention is currently required from:
  • Andrew Rayskiy
  • Martin Kreichgauer
Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
Gerrit-Attention: Andrew Rayskiy <green...@google.com>
Gerrit-Comment-Date: Tue, 17 Mar 2026 16:28:59 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Olga Korokhina (Gerrit)

unread,
Mar 18, 2026, 5:46:12 AMMar 18
to Jerome Jiang, Mirko Bonadei, Andrew Rayskiy, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
Attention needed from Andrew Rayskiy and Martin Kreichgauer

Olga Korokhina added 2 comments

File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
Line 211, Patchset 50: scoped_feature_list.InitWithFeatures(
Martin Kreichgauer . resolved

Nit: `scoped_feature_list_`.

But more generally, it's odd that the base test suite shouldn't enables IWAs if it's only relevant for a fraction of the tests. I suggest splitting this into its own test suite, or moving the ScopedFeatureList inline.

Olga Korokhina

We can't make it inline due to features should be set up in a constructor:
FATAL browser_tests[243908:243908]: [base/feature_list.cc:137] DCHECK failed: feature_overrides_allowed. FeatureList overrides must happen in the test constructor, before BrowserTestBase::SetUp() has run.
Can we still keep it in same test suite, please? For the sake of hermeticy.

Martin Kreichgauer

That is a fair point. But your most recent change made the ScopedFeatureList local to the constructor, which is certainly not what was intended.

Olga Korokhina

True! Still it somehow works, I believe we can keep it there (local to constructor) - looks lie it is injected properly and stays until end of execution.

Martin Kreichgauer

That's not how it works, I'm afraid. The ScopedFeatureList destructor resets any overrides. https://source.chromium.org/chromium/chromium/src/+/main:base/test/scoped_feature_list.cc;drc=6d57b3d63b080eb4f85344ff0782c962b8ba794b;bpv=1;bpt=1;l=303?q=base::test::ScopedFeatureList

Olga Korokhina

Copy, thank you! So I need to revert it, have scoped_feature_list be declared in class and be initialized in the constructor, let me do this.

Olga Korokhina

Done

File content/browser/webauth/webauth_request_security_checker.cc
Line 201, Patchset 50: } else if (!webauthn::
OriginIsAllowedToUseWebAuthnWithoutRemoteDesktopClientOverride(
caller_origin)) {
// IWAs now can only use WebAuthn in VDI, so with remote desktop override
// extension only
std::move(callback).Run(blink::mojom::AuthenticatorStatus::NOT_IMPLEMENTED);
return nullptr;
}
Martin Kreichgauer . resolved

I think it would be simpler to just update OriginIsAllowedToClaimRelyingPartyId() to always return false for `iwa://...` origins. I believe that's the semantics we want here, and then we don't need this additional method.

Olga Korokhina

No, this doesn't work because that check happens before check if remoteDesktopClientOverride is used or not. I tried the way you propose and it lead to any IWA calls were rejected. We need to disable local but enable VDIs (with remoteDesktopClientOverride used).

Martin Kreichgauer

I agree that only calls with remoteDesktopClientOverride should succeed, but…

this doesn't work because that check happens before check if remoteDesktopClientOverride is used or not.

Isn't the check for the remoteDesktopClientOverride happening on ll185-200 and the check for OriginIsAllowedToClaimRelyingPartyId() on l210 (which would be **after** and not before)?

I.e., if an IWA was using remoteDesktopClientOverride (and authorized to do so), relying_party_origin would be set to the origin override on l200, and then OriginIsAllowedToClaimRelyingPartyId() would succeed as if the caller was not an IWA. If an IWA was not using the override extension, OriginIsAllowedToClaimRelyingPartyId() would fail, because the caller is an IWA.

Olga Korokhina

Oh, this way. Thank you, adjusted, hope understood it right.

Olga Korokhina

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Andrew Rayskiy
  • Martin Kreichgauer
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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
Gerrit-Change-Number: 6865592
Gerrit-PatchSet: 57
Gerrit-Owner: Olga Korokhina <koro...@google.com>
Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
Gerrit-CC: Chris Thompson <cth...@chromium.org>
Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
Gerrit-CC: Jerome Jiang <ji...@chromium.org>
Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
Gerrit-CC: Simon Hangl <sim...@google.com>
Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
Gerrit-Attention: Andrew Rayskiy <green...@google.com>
Gerrit-Comment-Date: Wed, 18 Mar 2026 09:45:55 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Andrew Rayskiy (Gerrit)

unread,
Mar 31, 2026, 7:07:36 AMMar 31
to Olga Korokhina, Jerome Jiang, Mirko Bonadei, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
Attention needed from Martin Kreichgauer and Olga Korokhina

Andrew Rayskiy voted Code-Review+1

Code-Review+1
Open in Gerrit

Related details

Attention is currently required from:
  • Martin Kreichgauer
  • Olga Korokhina
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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
    Gerrit-Change-Number: 6865592
    Gerrit-PatchSet: 58
    Gerrit-Owner: Olga Korokhina <koro...@google.com>
    Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
    Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
    Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
    Gerrit-CC: Chris Thompson <cth...@chromium.org>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Jerome Jiang <ji...@chromium.org>
    Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
    Gerrit-CC: Simon Hangl <sim...@google.com>
    Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
    Gerrit-Attention: Olga Korokhina <koro...@google.com>
    Gerrit-Comment-Date: Tue, 31 Mar 2026 11:07:17 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Martin Kreichgauer (Gerrit)

    unread,
    Mar 31, 2026, 6:06:09 PMMar 31
    to Olga Korokhina, Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
    Attention needed from Olga Korokhina

    Martin Kreichgauer added 21 comments

    File chrome/browser/webauthn/chrome_web_authentication_delegate_base_unittest.cc
    Line 16, Patchset 58 (Latest):#include "chrome/common/url_constants.h"
    Martin Kreichgauer . unresolved

    Do you need this include?

    Line 297, Patchset 58 (Latest): base::ListValue list = base::ListValue().Append(kTestIsolatedAppOrigin);
    Martin Kreichgauer . unresolved

    Nit: I think this could reasonably be inlined to the SetList() call.

    Line 314, Patchset 58 (Latest): base::ListValue list = base::ListValue().Append(kExampleOrigin);
    Martin Kreichgauer . unresolved

    Same here, and throughout.

    File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
    Line 42, Patchset 58 (Latest):#include "chrome/browser/web_applications/web_app_command_scheduler.h"
    Martin Kreichgauer . unresolved

    Do you need this include?

    Line 211, Patchset 58 (Latest): scoped_feature_list_.InitWithFeatures(
    {device::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy,
    features::kIsolatedWebApps},
    {});
    Martin Kreichgauer . unresolved

    Please move this into a separate fixture that inherits from this one, and move the new tests there.

    Line 294, Patchset 58 (Latest):content::RenderFrameHost* OpenApp(const webapps::AppId& app_id,
    Martin Kreichgauer . unresolved

    Please add a comment.

    ```suggestion
    // Launches the IWA with the given ID and returns its main frame.
    content::RenderFrameHost* OpenApp(const webapps::AppId& app_id,
    ```

    Line 314, Patchset 58 (Latest): IWAsNegativeCaseIWAHasNoCredentialsGetPolicySet) {
    Martin Kreichgauer . unresolved

    "Negative case" (here, and in other places) seems to be some kind of a shorthand for "WebAuthn doesn't work" or something like that. I think future readers will struggle understand the negative of _what_ exactly is implied here. We should be more descriptive and optimize for folks trying to understand the code/test who don't have all the current context in their head anymore (i.e., most likely ourselves in like 2-3 months)

    This seems to test that WebAuthn returns a NotAllowedError if an IWA tries to use it without the permission policy, right? If so, I think a good name would be something like `WebAuthnIWABrowserTest_MissingPermissionsPolicyYieldsNotAllowedError`.

    Line 315, Patchset 50: // Test that WebAuthn works inside of IWAs (call to navigator.credentials.get
    // allowed and processed). Negative case, permission kPublicKeyCredentialsGet
    Martin Kreichgauer . unresolved

    It appears to test the opposite, i.e. that the get() call is *not* allowed.

    Olga Korokhina

    I added details on this in a second sentence. Let me re-phrase then.

    Martin Kreichgauer

    How about

    ```suggestion
    // Test that invoking WebAuthn inside an IWA is rejected with a NotAllowedError, if the IWA manifest lacks the necessary permissions policy.
    ```

    (Also, minor nit, but ideally these comments describing the test go into the line immediately prior to the test definition (i.e., before the IN_PROC_BROWSER_TEST_F(...) or whatever))

    Line 322, Patchset 50: // Allow IWA to create and get creds, without permission to create
    Martin Kreichgauer . unresolved

    This comment doesn't appear to match the code.

    Olga Korokhina

    Removed comment and adding permission, updated comments, thank you

    Martin Kreichgauer

    I still don't understand what this means. Doesn't the previous comment say that the point of the test is to assert that if we _don't_ add the permission, n.c.get() will fail?

    Line 344, Patchset 58 (Latest): IWAsNegativeCasePolicySetPrefsMissingNoRemoteOriginOverrideExtension) {
    Martin Kreichgauer . unresolved

    Same comment about test naming here.

    Line 345, Patchset 58 (Latest): // Test that WebAuthn does not work inside of IWAs (call to
    // navigator.credentials.get not allowed and processed). Negative local case,
    // remoteDesktopClientOverride not used, prefs and affiliation not checked.
    // Behavior different from Chrome Extensions.
    Martin Kreichgauer . unresolved

    It's not really clear to me what this is testing exactly. The comment names a number of things; so if this test was failing, what would be going wrong?

    The only assertion in this test is that the WebAuthn get() call fails with a SecurityError. So I think what this is supposed to test is that without the extension, the app can't make this assertion. If that's what you're trying to test, you should probably allow the app to use the extension via the policy; and then, in a separate test, verify that the extension can't use the extension if the policy doesn't allow it.

    Line 355, Patchset 58 (Latest): // The 'publickey-credentials-create' feature is not enabled in
    // this document. Permissions Policy may be used to delegate Web
    Martin Kreichgauer . unresolved

    The opposite seems to be true. You add the permission policy for public-key-credentials-create below, and enable it.

    Line 394, Patchset 58 (Latest): IWAsNegativeCasePolicyAndPrefsSetNoRemoteOriginOverrideExtensionSameRp_id) {
    Martin Kreichgauer . unresolved

    Same comment about test naming.

    File chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc
    Line 187, Patchset 58 (Latest): // The 'publickey-credentials-create' feature is not enabled in
    // this document. Permissions Policy may be used to delegate Web
    Martin Kreichgauer . unresolved

    The opposite seems to be true.

    Line 188, Patchset 58 (Latest): // this document. Permissions Policy may be used to delegate Web
    // Authentication capabilities to cross-origin child frames."'
    Martin Kreichgauer . unresolved

    I don't see how cross-origin child frames are relevant in this test.

    Line 220, Patchset 58 (Latest): static constexpr char kMakeCredentialCrossDomainIWA[] = R"((() => {
    Martin Kreichgauer . unresolved

    It's odd that this is declared inline, while the GetAssertion script is declared up top. Move to l47?

    Line 239, Patchset 58 (Latest): // Credentials created OK
    Martin Kreichgauer . unresolved

    These comments seem superfluous.

    File components/webauthn/core/browser/webauthn_security_utils.cc
    Line 40, Patchset 58 (Latest): // `OriginAllowedToMakeWebAuthnRequests()` must have been called before.
    // IWAs can only use WebAuthn in VDI sessions with override extension
    if (caller_origin.scheme() == webapps::kIsolatedAppScheme) {
    return false;
    }
    Martin Kreichgauer . unresolved

    I think this should be called after OriginAllowedToMakeWebAuthnRequests() (which was a DCHECK before, but now is an explicit test). The comment needs updating.

    File content/browser/webauth/authenticator_impl_unittest.cc
    Line 1896, Patchset 58 (Latest): constexpr char kIWAId[] =
    "aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic";
    static const std::string kIWAOrigin =
    std::string(kIWAScheme) + "://" + kIWAId;
    Martin Kreichgauer . unresolved

    You don't actually use the intermediate variable. This could be simplified to

    ```suggestion
    constexpr char[] kIWAOrigin =
    "iwa://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic";
    ```

    and moved to the top of the file.

    Line 2191, Patchset 58 (Latest): device::CredentialType::kPublicKey, std::move(credential_id));
    GetAssertionResult result = AuthenticatorGetAssertion(std::move(options));
    Martin Kreichgauer . unresolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-use-after-move

    A `move` operation occurred here, which caused "...

    check: bugprone-use-after-move

    A `move` operation occurred here, which caused "'credential_id' used after it was moved" at content/browser/webauth/authenticator_impl_unittest.cc:2201 (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/use-after-move.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-use-after-move` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    File content/browser/webauth/authenticator_test_base.cc
    Line 255, Patchset 58 (Latest):// IWAs if not using remoteDesktopClientOverride can assert any rp_id
    Martin Kreichgauer . unresolved

    Why would we need to override it like this in tests? That doesn't really reflect what we do in the production class, right?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Olga Korokhina
    Gerrit-Attention: Olga Korokhina <koro...@google.com>
    Gerrit-Comment-Date: Tue, 31 Mar 2026 22:05:58 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Olga Korokhina (Gerrit)

    unread,
    Apr 3, 2026, 6:22:45 AMApr 3
    to Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
    Attention needed from Andrew Rayskiy and Martin Kreichgauer

    Olga Korokhina added 21 comments

    File chrome/browser/webauthn/chrome_web_authentication_delegate_base_unittest.cc
    Line 16, Patchset 58:#include "chrome/common/url_constants.h"
    Martin Kreichgauer . resolved

    Do you need this include?

    Olga Korokhina

    No, thank you, we do not need it, removed.

    Line 297, Patchset 58: base::ListValue list = base::ListValue().Append(kTestIsolatedAppOrigin);
    Martin Kreichgauer . resolved

    Nit: I think this could reasonably be inlined to the SetList() call.

    Olga Korokhina

    From which package? I failed to find a relevant usage example, please point me to it, thank you.

    Line 314, Patchset 58: base::ListValue list = base::ListValue().Append(kExampleOrigin);
    Martin Kreichgauer . resolved

    Same here, and throughout.

    Olga Korokhina

    Please see comment above, I failed to find the example, please provide.

    File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
    Line 42, Patchset 58:#include "chrome/browser/web_applications/web_app_command_scheduler.h"
    Martin Kreichgauer . resolved

    Do you need this include?

    Olga Korokhina

    Yes, for the line around 299 this file befow.

    Line 211, Patchset 58: scoped_feature_list_.InitWithFeatures(

    {device::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy,
    features::kIsolatedWebApps},
    {});
    Martin Kreichgauer . resolved

    Please move this into a separate fixture that inherits from this one, and move the new tests there.

    Olga Korokhina

    Done

    Line 294, Patchset 58:content::RenderFrameHost* OpenApp(const webapps::AppId& app_id,
    Martin Kreichgauer . resolved

    Please add a comment.

    ```suggestion
    // Launches the IWA with the given ID and returns its main frame.
    content::RenderFrameHost* OpenApp(const webapps::AppId& app_id,
    ```

    Olga Korokhina

    Added, thank you.

    Line 314, Patchset 58: IWAsNegativeCaseIWAHasNoCredentialsGetPolicySet) {
    Martin Kreichgauer . resolved

    "Negative case" (here, and in other places) seems to be some kind of a shorthand for "WebAuthn doesn't work" or something like that. I think future readers will struggle understand the negative of _what_ exactly is implied here. We should be more descriptive and optimize for folks trying to understand the code/test who don't have all the current context in their head anymore (i.e., most likely ourselves in like 2-3 months)

    This seems to test that WebAuthn returns a NotAllowedError if an IWA tries to use it without the permission policy, right? If so, I think a good name would be something like `WebAuthnIWABrowserTest_MissingPermissionsPolicyYieldsNotAllowedError`.

    Olga Korokhina

    Naming improved, thank you.

    Line 315, Patchset 50: // Test that WebAuthn works inside of IWAs (call to navigator.credentials.get
    // allowed and processed). Negative case, permission kPublicKeyCredentialsGet
    Martin Kreichgauer . resolved

    It appears to test the opposite, i.e. that the get() call is *not* allowed.

    Olga Korokhina

    I added details on this in a second sentence. Let me re-phrase then.

    Martin Kreichgauer

    How about

    ```suggestion
    // Test that invoking WebAuthn inside an IWA is rejected with a NotAllowedError, if the IWA manifest lacks the necessary permissions policy.
    ```

    (Also, minor nit, but ideally these comments describing the test go into the line immediately prior to the test definition (i.e., before the IN_PROC_BROWSER_TEST_F(...) or whatever))

    Olga Korokhina

    Addressed the comment change, thank you.

    Line 322, Patchset 50: // Allow IWA to create and get creds, without permission to create
    Martin Kreichgauer . resolved

    This comment doesn't appear to match the code.

    Olga Korokhina

    Removed comment and adding permission, updated comments, thank you

    Martin Kreichgauer

    I still don't understand what this means. Doesn't the previous comment say that the point of the test is to assert that if we _don't_ add the permission, n.c.get() will fail?

    Olga Korokhina

    We need to grant both create() and get() permissions. Adjusted the comment. We have now three tests for non-VDI case, all three fail: first fails with 'NotAllowedError' because of missing permissions on create and get in manifest. Second and third have manifest set up and differ in prefs values (emulates the WebAuthenticationRemoteDesktopAllowedOrigins policy-set values) set or not, both cases fails with security error because of no remoteDesktopClientOverride extension used. All three these cases are 'local', different 'level' or application readiness for WebAuthn usage, if I am allowed to say so. Reworked the naming and comments after moved three IWA-local-cases into dedicated class, please have a look if clearer. Thank you!

    Line 344, Patchset 58: IWAsNegativeCasePolicySetPrefsMissingNoRemoteOriginOverrideExtension) {
    Martin Kreichgauer . resolved

    Same comment about test naming here.

    Olga Korokhina

    Addressed, hope it is OK now, thank you.

    Line 345, Patchset 58: // Test that WebAuthn does not work inside of IWAs (call to

    // navigator.credentials.get not allowed and processed). Negative local case,
    // remoteDesktopClientOverride not used, prefs and affiliation not checked.
    // Behavior different from Chrome Extensions.
    Martin Kreichgauer . resolved

    It's not really clear to me what this is testing exactly. The comment names a number of things; so if this test was failing, what would be going wrong?

    The only assertion in this test is that the WebAuthn get() call fails with a SecurityError. So I think what this is supposed to test is that without the extension, the app can't make this assertion. If that's what you're trying to test, you should probably allow the app to use the extension via the policy; and then, in a separate test, verify that the extension can't use the extension if the policy doesn't allow it.

    Olga Korokhina

    please see comment above with differences between three test cases explanation. Comment addressed, thank you!

    Line 355, Patchset 58: // The 'publickey-credentials-create' feature is not enabled in

    // this document. Permissions Policy may be used to delegate Web
    Martin Kreichgauer . resolved

    The opposite seems to be true. You add the permission policy for public-key-credentials-create below, and enable it.

    Olga Korokhina

    This is the actual body of an error ("error NotAllowedError:
    The 'publickey-credentials-create' feature is not enabled in this document. Permissions Policy may be used to delegate Web Authentication capabilities to cross-origin child frames.") which we get if we do not grant the create permission.
    You're right, we not getting it in this case - because of we grant the create permission, error here is to explain the reason why we need it.

    Line 394, Patchset 58: IWAsNegativeCasePolicyAndPrefsSetNoRemoteOriginOverrideExtensionSameRp_id) {
    Martin Kreichgauer . resolved

    Same comment about test naming.

    Olga Korokhina

    Addressed, thank you.

    File chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc
    Line 187, Patchset 58: // The 'publickey-credentials-create' feature is not enabled in

    // this document. Permissions Policy may be used to delegate Web
    Martin Kreichgauer . resolved

    The opposite seems to be true.

    Olga Korokhina

    Yes, see comment above - probably it is hard to parse: this is the body of the error which we are not getting because of we set the create permission.

    Line 188, Patchset 58: // this document. Permissions Policy may be used to delegate Web

    // Authentication capabilities to cross-origin child frames."'
    Martin Kreichgauer . resolved

    I don't see how cross-origin child frames are relevant in this test.

    Olga Korokhina

    Sorry if it is hard to parse it. This is a quote of an error body which we get of not set the create permission - "..."

    Line 220, Patchset 58: static constexpr char kMakeCredentialCrossDomainIWA[] = R"((() => {
    Martin Kreichgauer . resolved

    It's odd that this is declared inline, while the GetAssertion script is declared up top. Move to l47?

    Olga Korokhina

    Moved up, thank you.

    Line 239, Patchset 58: // Credentials created OK
    Martin Kreichgauer . resolved

    These comments seem superfluous.

    Olga Korokhina

    Removed, thank you

    File components/webauthn/core/browser/webauthn_security_utils.cc
    Line 40, Patchset 58: // `OriginAllowedToMakeWebAuthnRequests()` must have been called before.

    // IWAs can only use WebAuthn in VDI sessions with override extension
    if (caller_origin.scheme() == webapps::kIsolatedAppScheme) {
    return false;
    }
    Martin Kreichgauer . resolved

    I think this should be called after OriginAllowedToMakeWebAuthnRequests() (which was a DCHECK before, but now is an explicit test). The comment needs updating.

    Olga Korokhina

    I decided to exit a bit earlier in this case, but I don't have a strong opinion, so moved below. Comment updated, thank you.

    File content/browser/webauth/authenticator_impl_unittest.cc
    Line 1896, Patchset 58: constexpr char kIWAId[] =

    "aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic";
    static const std::string kIWAOrigin =
    std::string(kIWAScheme) + "://" + kIWAId;
    Martin Kreichgauer . resolved

    You don't actually use the intermediate variable. This could be simplified to

    ```suggestion
    constexpr char[] kIWAOrigin =
    "iwa://aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic";
    ```

    and moved to the top of the file.

    Olga Korokhina

    Right, applied changes, thank you.

    Line 2191, Patchset 58: device::CredentialType::kPublicKey, std::move(credential_id));

    GetAssertionResult result = AuthenticatorGetAssertion(std::move(options));
    Martin Kreichgauer . resolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-use-after-move

    A `move` operation occurred here, which caused "...

    check: bugprone-use-after-move

    A `move` operation occurred here, which caused "'credential_id' used after it was moved" at content/browser/webauth/authenticator_impl_unittest.cc:2201 (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/use-after-move.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-use-after-move` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Olga Korokhina

    I guess we don't need move() here, passing the credentials_id itself should fix it, let me try.

    File content/browser/webauth/authenticator_test_base.cc
    Line 255, Patchset 58:// IWAs if not using remoteDesktopClientOverride can assert any rp_id
    Martin Kreichgauer . resolved

    Why would we need to override it like this in tests? That doesn't really reflect what we do in the production class, right?

    Olga Korokhina

    I believe it is a left-over from a time when I assumed local IWAs can assert matching rp_ids, do not remember, to be honest. Let me see what if we don't do this.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Andrew Rayskiy
    • Martin Kreichgauer
    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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
      Gerrit-Change-Number: 6865592
      Gerrit-PatchSet: 61
      Gerrit-Owner: Olga Korokhina <koro...@google.com>
      Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
      Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
      Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
      Gerrit-CC: Chris Thompson <cth...@chromium.org>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-CC: Jerome Jiang <ji...@chromium.org>
      Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
      Gerrit-CC: Simon Hangl <sim...@google.com>
      Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
      Gerrit-Comment-Date: Fri, 03 Apr 2026 10:22:29 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Martin Kreichgauer (Gerrit)

      unread,
      Apr 3, 2026, 1:34:14 PMApr 3
      to Olga Korokhina, Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
      Attention needed from Andrew Rayskiy and Olga Korokhina

      Martin Kreichgauer added 1 comment

      Patchset-level comments
      File-level comment, Patchset 61 (Latest):
      Martin Kreichgauer . resolved

      (Please make the tests pass before adding me back to the attention set)

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andrew Rayskiy
      • Olga Korokhina
      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
      Gerrit-Attention: Olga Korokhina <koro...@google.com>
      Gerrit-Comment-Date: Fri, 03 Apr 2026 17:34:02 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Olga Korokhina (Gerrit)

      unread,
      Apr 4, 2026, 9:26:51 AMApr 4
      to Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
      Attention needed from Andrew Rayskiy and Martin Kreichgauer

      Olga Korokhina added 1 comment

      Patchset-level comments
      Martin Kreichgauer . resolved

      (Please make the tests pass before adding me back to the attention set)

      Olga Korokhina

      Hey, tests are fine, was fine when I submit the reply. Probably some issue with Gerrit?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andrew Rayskiy
      • Martin Kreichgauer
      Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
      Gerrit-Comment-Date: Sat, 04 Apr 2026 13:26:28 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Martin Kreichgauer <mart...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Olga Korokhina (Gerrit)

      unread,
      Apr 8, 2026, 4:25:09 AMApr 8
      to Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
      Attention needed from Andrew Rayskiy and Martin Kreichgauer

      Olga Korokhina added 1 comment

      File chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc
      Line 119, Patchset 50: ASSERT_TRUE(profile());
      Martin Kreichgauer . resolved

      What is this asserting? This seems guaranteed to be true.

      Olga Korokhina

      Asserting that for non-CrOS active profile is created (browser()->profile()) in parent test class. That was the issue with having these tests in chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc - setting affiliation conflicted with default user/profile provided by CertVerifierBrowserTest. So I moved this code here. Do you think this assertion doesn make sense?

      Olga Korokhina

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Andrew Rayskiy
      • Martin Kreichgauer
      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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
        Gerrit-Change-Number: 6865592
        Gerrit-PatchSet: 64
        Gerrit-Owner: Olga Korokhina <koro...@google.com>
        Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
        Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
        Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
        Gerrit-CC: Chris Thompson <cth...@chromium.org>
        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
        Gerrit-CC: Jerome Jiang <ji...@chromium.org>
        Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
        Gerrit-CC: Simon Hangl <sim...@google.com>
        Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
        Gerrit-Attention: Andrew Rayskiy <green...@google.com>
        Gerrit-Comment-Date: Wed, 08 Apr 2026 08:24:51 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Martin Kreichgauer <mart...@google.com>
        Comment-In-Reply-To: Olga Korokhina <koro...@google.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Andrew Rayskiy (Gerrit)

        unread,
        Apr 9, 2026, 12:55:22 PMApr 9
        to Olga Korokhina, Jerome Jiang, Mirko Bonadei, AyeAye, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
        Attention needed from Martin Kreichgauer and Olga Korokhina

        Andrew Rayskiy voted Code-Review+1

        Code-Review+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Martin Kreichgauer
        • Olga Korokhina
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement satisfiedCode-Review
          • requirement satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
          Gerrit-Change-Number: 6865592
          Gerrit-PatchSet: 64
          Gerrit-Owner: Olga Korokhina <koro...@google.com>
          Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
          Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
          Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
          Gerrit-CC: Chris Thompson <cth...@chromium.org>
          Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
          Gerrit-CC: Jerome Jiang <ji...@chromium.org>
          Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
          Gerrit-CC: Simon Hangl <sim...@google.com>
          Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
          Gerrit-Attention: Olga Korokhina <koro...@google.com>
          Gerrit-Comment-Date: Thu, 09 Apr 2026 16:55:03 +0000
          Gerrit-HasComments: No
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Martin Kreichgauer (Gerrit)

          unread,
          Apr 13, 2026, 8:21:44 PM (10 days ago) Apr 13
          to Olga Korokhina, Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, chromiu...@luci-project-accounts.iam.gserviceaccount.com, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
          Attention needed from Olga Korokhina

          Martin Kreichgauer added 14 comments

          Patchset-level comments
          File-level comment, Patchset 64 (Latest):
          Martin Kreichgauer . resolved

          The actual feature code looks ok now, I think.

          File chrome/browser/webauthn/chrome_web_authentication_delegate_base_unittest.cc
          Line 297, Patchset 58: base::ListValue list = base::ListValue().Append(kTestIsolatedAppOrigin);
          Martin Kreichgauer . unresolved

          Nit: I think this could reasonably be inlined to the SetList() call.

          Olga Korokhina

          From which package? I failed to find a relevant usage example, please point me to it, thank you.

          Martin Kreichgauer

          Instead of creating a temporary variable, and then moving it immediately after, you can directly construct it in the existing SetList() method call. There a numerous examples in other tests in this file.

          ```
          prefs->SetList(webauthn::pref_names::kRemoteDesktopAllowedOrigins,
          base::ListValue().Append(kTestIsolatedAppOrigin));
          ```
          Line 314, Patchset 58: base::ListValue list = base::ListValue().Append(kExampleOrigin);
          Martin Kreichgauer . unresolved

          Same here, and throughout.

          Olga Korokhina

          Please see comment above, I failed to find the example, please provide.

          Martin Kreichgauer

          See above. (Try not to resolve comment threads if you're expecting a follow-up from me, please.)

          File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
          Line 211, Patchset 58: scoped_feature_list_.InitWithFeatures(
          {device::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy,
          features::kIsolatedWebApps},
          {});
          Martin Kreichgauer . unresolved

          Please move this into a separate fixture that inherits from this one, and move the new tests there.

          Olga Korokhina

          Done

          Martin Kreichgauer

          I don't think that test suite warrants a new file though. WebAuthnBrowserTest already has several other suites inheriting from it, and all of them live in this file. So it makes sense for WebAuthnIWABrowserTest to just be defined here as well.

          If we wanted to have WebAuthnBrowserTestBase or something live in its own .h./.cc, and then have multiple browsertest files reuse it, I could see a point. But as it is, this test code organization is a bit unorthodox.

          Moving these into a separate file also makes it really difficult to follow the numerous existing comment threads on this file, which isn't ideal.

          Line 355, Patchset 58: // The 'publickey-credentials-create' feature is not enabled in
          // this document. Permissions Policy may be used to delegate Web
          Martin Kreichgauer . unresolved

          The opposite seems to be true. You add the permission policy for public-key-credentials-create below, and enable it.

          Olga Korokhina

          This is the actual body of an error ("error NotAllowedError:
          The 'publickey-credentials-create' feature is not enabled in this document. Permissions Policy may be used to delegate Web Authentication capabilities to cross-origin child frames.") which we get if we do not grant the create permission.
          You're right, we not getting it in this case - because of we grant the create permission, error here is to explain the reason why we need it.

          Martin Kreichgauer

          I see. But I still don't understand why you're adding the `kPublicKeyCredentialsCreate` permissions policy here in the first place. It doesn't do anything, right? The only call you're making is a get() call, so the permission policy for get is all you should need.

          Can we just delete the first AddPermissionsPolicy() call here, along with the comment?

          File chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc
          Line 187, Patchset 58: // The 'publickey-credentials-create' feature is not enabled in
          // this document. Permissions Policy may be used to delegate Web
          Martin Kreichgauer . unresolved

          The opposite seems to be true.

          Olga Korokhina

          Yes, see comment above - probably it is hard to parse: this is the body of the error which we are not getting because of we set the create permission.

          Martin Kreichgauer

          Ah, I see my error, thanks.

          Reproducing the error message here verbatim isn't useful, I'm afraid. Please change this to a succinct comment explaining why you need to add permissions policies here. E.g.

          `// Add permissions policies for creating and asserting WebAuthn credentials which aren't enabled by default in IWAs.`

          Line 242, Patchset 64 (Latest): // Credentials got OK
          Martin Kreichgauer . unresolved

          This comment is superfluous.

          Line 247, Patchset 64 (Latest): // Credentials created but not allowed to use remoteDesktopClientOverride
          Martin Kreichgauer . unresolved

          That's not correct, there wasn't any credential created.

          Line 254, Patchset 64 (Latest): // Credentials got but not allowed to use remoteDesktopClientOverride due to
          Martin Kreichgauer . unresolved

          That's not correct, there were no credentials retrieved.

          Line 264, Patchset 64 (Latest): // Credentials got OK
          Martin Kreichgauer . unresolved

          This comment is superfluous.

          File components/webauthn/core/browser/webauthn_security_utils.cc
          Line 24, Patchset 64 (Latest): caller_origin.scheme() != webapps::kIsolatedAppScheme) {
          Martin Kreichgauer . unresolved

          Can you please unit test this change? There are existing tests in //components/webauthn/core/browser/webauthn_security_utils.cc.

          Line 48, Patchset 64 (Latest): // IWAs can only use WebAuthn in VDI sessions with override extension
          Martin Kreichgauer . unresolved
          ```suggestion
          // IWAs can only claim RP IDs via the remoteDesktopClientOverride extension
          ```
          Line 49, Patchset 64 (Latest): if (caller_origin.scheme() == webapps::kIsolatedAppScheme) {
          return false;
          }
          Martin Kreichgauer . unresolved

          Can you please unit test this change? There are existing tests in //components/webauthn/core/browser/webauthn_security_utils.cc.

          File device/fido/public/features.cc
          Line 175, Patchset 64 (Latest):// Enabled by default.
          Martin Kreichgauer . unresolved

          ```suggestion
          // Enabled by default in M149. Remove in or after M152.
          ```

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Olga Korokhina
          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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
            Gerrit-Change-Number: 6865592
            Gerrit-PatchSet: 64
            Gerrit-Owner: Olga Korokhina <koro...@google.com>
            Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
            Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
            Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
            Gerrit-CC: Chris Thompson <cth...@chromium.org>
            Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
            Gerrit-CC: Jerome Jiang <ji...@chromium.org>
            Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
            Gerrit-CC: Simon Hangl <sim...@google.com>
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Olga Korokhina (Gerrit)

            unread,
            Apr 20, 2026, 4:00:54 AM (4 days ago) Apr 20
            to Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
            Attention needed from Andrew Rayskiy and Martin Kreichgauer

            Olga Korokhina added 13 comments

            File chrome/browser/webauthn/chrome_web_authentication_delegate_base_unittest.cc
            Line 297, Patchset 58: base::ListValue list = base::ListValue().Append(kTestIsolatedAppOrigin);
            Martin Kreichgauer . resolved

            Nit: I think this could reasonably be inlined to the SetList() call.

            Olga Korokhina

            From which package? I failed to find a relevant usage example, please point me to it, thank you.

            Martin Kreichgauer

            Instead of creating a temporary variable, and then moving it immediately after, you can directly construct it in the existing SetList() method call. There a numerous examples in other tests in this file.

            ```
            prefs->SetList(webauthn::pref_names::kRemoteDesktopAllowedOrigins,
            base::ListValue().Append(kTestIsolatedAppOrigin));
            ```
            Olga Korokhina

            Oh, got it, thank you!

            Line 314, Patchset 58: base::ListValue list = base::ListValue().Append(kExampleOrigin);
            Martin Kreichgauer . resolved

            Same here, and throughout.

            Olga Korokhina

            Please see comment above, I failed to find the example, please provide.

            Martin Kreichgauer

            See above. (Try not to resolve comment threads if you're expecting a follow-up from me, please.)

            Olga Korokhina

            Meant to have less open comments, I remember there are two places with same change needed. Thank you, code simplified.

            File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
            Line 211, Patchset 58: scoped_feature_list_.InitWithFeatures(
            {device::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy,
            features::kIsolatedWebApps},
            {});
            Martin Kreichgauer . unresolved

            Please move this into a separate fixture that inherits from this one, and move the new tests there.

            Olga Korokhina

            Done

            Martin Kreichgauer

            I don't think that test suite warrants a new file though. WebAuthnBrowserTest already has several other suites inheriting from it, and all of them live in this file. So it makes sense for WebAuthnIWABrowserTest to just be defined here as well.

            If we wanted to have WebAuthnBrowserTestBase or something live in its own .h./.cc, and then have multiple browsertest files reuse it, I could see a point. But as it is, this test code organization is a bit unorthodox.

            Moving these into a separate file also makes it really difficult to follow the numerous existing comment threads on this file, which isn't ideal.

            Olga Korokhina

            Than I misunderstood your initial comment. Setting scoped_feature_list_ is only possible in constructor and not needed for other then IWA tests indeed. I am fully agree all tests (old and new IWA-specific) should be in one file, but just fail to understand what code reorganization you propose under "Please move this into a separate fixture that inherits from this one, and move the new tests there.". Please give me more clues?

            Line 355, Patchset 58: // The 'publickey-credentials-create' feature is not enabled in
            // this document. Permissions Policy may be used to delegate Web
            Martin Kreichgauer . resolved

            The opposite seems to be true. You add the permission policy for public-key-credentials-create below, and enable it.

            Olga Korokhina

            This is the actual body of an error ("error NotAllowedError:
            The 'publickey-credentials-create' feature is not enabled in this document. Permissions Policy may be used to delegate Web Authentication capabilities to cross-origin child frames.") which we get if we do not grant the create permission.
            You're right, we not getting it in this case - because of we grant the create permission, error here is to explain the reason why we need it.

            Martin Kreichgauer

            I see. But I still don't understand why you're adding the `kPublicKeyCredentialsCreate` permissions policy here in the first place. It doesn't do anything, right? The only call you're making is a get() call, so the permission policy for get is all you should need.

            Can we just delete the first AddPermissionsPolicy() call here, along with the comment?

            Olga Korokhina

            Actually for both similar cases in this file we do not need to set 'create' permission,setting it only needed for WebAuthnAffiliationCheck/WebAuthnIWARemoteDesktopOverrideBrowserTest

            File chrome/browser/webauthn/chrome_webauthn_iwa_remote_desktop_override_browsertest.cc
            Line 187, Patchset 58: // The 'publickey-credentials-create' feature is not enabled in
            // this document. Permissions Policy may be used to delegate Web
            Martin Kreichgauer . resolved

            The opposite seems to be true.

            Olga Korokhina

            Yes, see comment above - probably it is hard to parse: this is the body of the error which we are not getting because of we set the create permission.

            Martin Kreichgauer

            Ah, I see my error, thanks.

            Reproducing the error message here verbatim isn't useful, I'm afraid. Please change this to a succinct comment explaining why you need to add permissions policies here. E.g.

            `// Add permissions policies for creating and asserting WebAuthn credentials which aren't enabled by default in IWAs.`

            Olga Korokhina

            Actually in this test we do not need 'create' permission, it is needed in WebAuthnAffiliationCheck/WebAuthnIWARemoteDesktopOverrideBrowserTest only.

            Line 242, Patchset 64: // Credentials got OK
            Martin Kreichgauer . resolved

            This comment is superfluous.

            Olga Korokhina

            removed here and same below, thank you.

            Line 247, Patchset 64: // Credentials created but not allowed to use remoteDesktopClientOverride
            Martin Kreichgauer . resolved

            That's not correct, there wasn't any credential created.

            Olga Korokhina

            True, left-over from previous state of a code, removed. Thank you,

            Line 254, Patchset 64: // Credentials got but not allowed to use remoteDesktopClientOverride due to
            Martin Kreichgauer . resolved

            That's not correct, there were no credentials retrieved.

            Olga Korokhina

            Adjusted, thank you

            Line 264, Patchset 64: // Credentials got OK
            Martin Kreichgauer . resolved

            This comment is superfluous.

            Olga Korokhina

            removed

            File components/webauthn/core/browser/webauthn_security_utils.cc
            Line 24, Patchset 64: caller_origin.scheme() != webapps::kIsolatedAppScheme) {
            Martin Kreichgauer . unresolved

            Can you please unit test this change? There are existing tests in //components/webauthn/core/browser/webauthn_security_utils.cc.

            Olga Korokhina

            Added test case to components/webauthn/core/browser/webauthn_security_utils_unittest.cc, according to it check fails into kInvalidDomain (fails into !network::IsUrlPotentiallyTrustworthy(caller_origin.GetURL()) below in line 31).

            Line 48, Patchset 64: // IWAs can only use WebAuthn in VDI sessions with override extension
            Martin Kreichgauer . resolved
            ```suggestion
            // IWAs can only claim RP IDs via the remoteDesktopClientOverride extension
            ```
            Olga Korokhina

            Applied edit, thank you

            Line 49, Patchset 64: if (caller_origin.scheme() == webapps::kIsolatedAppScheme) {
            return false;
            }
            Martin Kreichgauer . unresolved

            Can you please unit test this change? There are existing tests in //components/webauthn/core/browser/webauthn_security_utils.cc.

            Olga Korokhina

            Yes, added three cases for it in WebAuthnSecurityUtilsTest.OriginIsAllowedToClaimRelyingPartyId

            File device/fido/public/features.cc
            Line 175, Patchset 64:// Enabled by default.
            Martin Kreichgauer . resolved

            ```suggestion
            // Enabled by default in M149. Remove in or after M152.
            ```

            Olga Korokhina

            Change adopted

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Andrew Rayskiy
            • Martin Kreichgauer
            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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
              Gerrit-Change-Number: 6865592
              Gerrit-PatchSet: 65
              Gerrit-Owner: Olga Korokhina <koro...@google.com>
              Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
              Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
              Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
              Gerrit-CC: Chris Thompson <cth...@chromium.org>
              Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
              Gerrit-CC: Jerome Jiang <ji...@chromium.org>
              Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
              Gerrit-CC: Simon Hangl <sim...@google.com>
              Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
              Gerrit-Attention: Andrew Rayskiy <green...@google.com>
              Gerrit-Comment-Date: Mon, 20 Apr 2026 08:00:34 +0000
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Martin Kreichgauer (Gerrit)

              unread,
              Apr 20, 2026, 8:12:40 PM (3 days ago) Apr 20
              to Olga Korokhina, Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
              Attention needed from Andrew Rayskiy and Olga Korokhina

              Martin Kreichgauer added 7 comments

              File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
              Line 211, Patchset 58: scoped_feature_list_.InitWithFeatures(
              {device::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy,
              features::kIsolatedWebApps},
              {});
              Martin Kreichgauer . unresolved

              Please move this into a separate fixture that inherits from this one, and move the new tests there.

              Olga Korokhina

              Done

              Martin Kreichgauer

              I don't think that test suite warrants a new file though. WebAuthnBrowserTest already has several other suites inheriting from it, and all of them live in this file. So it makes sense for WebAuthnIWABrowserTest to just be defined here as well.

              If we wanted to have WebAuthnBrowserTestBase or something live in its own .h./.cc, and then have multiple browsertest files reuse it, I could see a point. But as it is, this test code organization is a bit unorthodox.

              Moving these into a separate file also makes it really difficult to follow the numerous existing comment threads on this file, which isn't ideal.

              Olga Korokhina

              Than I misunderstood your initial comment. Setting scoped_feature_list_ is only possible in constructor and not needed for other then IWA tests indeed. I am fully agree all tests (old and new IWA-specific) should be in one file, but just fail to understand what code reorganization you propose under "Please move this into a separate fixture that inherits from this one, and move the new tests there.". Please give me more clues?

              Martin Kreichgauer

              The WebAuthnIWABrowserTest test suite should be defined at the bottom of this file, rather than in a separate file, same for its individual IN_PROC_BROWSER_TEST_F test cases. (You'll notice there are multiple other test suite classes inheriting from WebAuthnIWABrowserTest already in this file.)

              Once you have done that, you should also undo moving the definition for WebAuthnBrowserTest into the new header file, and just revert it back to what it was before.

              File chrome/browser/webauthn/chrome_webauthn_iwa_browsertest.cc
              Line 131, Patchset 65 (Latest): // Allow IWA to create and get creds
              Martin Kreichgauer . unresolved

              Please update the comment to match the code.

              Line 173, Patchset 65 (Latest): // Allow IWA to create and get creds
              Martin Kreichgauer . unresolved

              Please update the comment to match the code.

              File components/webauthn/core/browser/webauthn_security_utils.cc
              Line 24, Patchset 64: caller_origin.scheme() != webapps::kIsolatedAppScheme) {
              Martin Kreichgauer . unresolved

              Can you please unit test this change? There are existing tests in //components/webauthn/core/browser/webauthn_security_utils.cc.

              Olga Korokhina

              Added test case to components/webauthn/core/browser/webauthn_security_utils_unittest.cc, according to it check fails into kInvalidDomain (fails into !network::IsUrlPotentiallyTrustworthy(caller_origin.GetURL()) below in line 31).

              Martin Kreichgauer

              Ah, right, those tests should only cover HTTP(S) origins. You'll want to fix that, probably by removing this check and adding something like this above it instead.

              ```

              if (caller_origin.scheme() == webapps::kIsolatedAppScheme) {
                return ValidationStatus::kSuccess;
              }
              ```
              File components/webauthn/core/browser/webauthn_security_utils_unittest.cc
              Line 20, Patchset 65 (Latest): // {"https://example.com", ValidationStatus::kSuccess},
              Martin Kreichgauer . unresolved

              These shouldn't be commented out.

              Line 85, Patchset 65 (Latest): // IWAs can not claim any rp_ids ourside or VDI sessions
              Martin Kreichgauer . unresolved
              I don't know what this means. Maybe 
              ```suggestion
              // IWAs can not claim any RP ID except via remoteDesktopClientOverride.
              ```
              Line 86, Patchset 65 (Latest): {"isolated-app://"
              Martin Kreichgauer . unresolved

              Please add one more test case here for the IWA claiming an ordinary domain name (like "example.com"). This should fail.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Andrew Rayskiy
              • Olga Korokhina
              Gerrit-Attention: Andrew Rayskiy <green...@google.com>
              Gerrit-Attention: Olga Korokhina <koro...@google.com>
              Gerrit-Comment-Date: Tue, 21 Apr 2026 00:12:32 +0000
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Olga Korokhina (Gerrit)

              unread,
              Apr 21, 2026, 9:15:10 AM (3 days ago) Apr 21
              to Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
              Attention needed from Andrew Rayskiy and Martin Kreichgauer

              Olga Korokhina added 8 comments

              File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
              Line 211, Patchset 58: scoped_feature_list_.InitWithFeatures(
              {device::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy,
              features::kIsolatedWebApps},
              {});
              Martin Kreichgauer . resolved

              Please move this into a separate fixture that inherits from this one, and move the new tests there.

              Olga Korokhina

              Done

              Martin Kreichgauer

              I don't think that test suite warrants a new file though. WebAuthnBrowserTest already has several other suites inheriting from it, and all of them live in this file. So it makes sense for WebAuthnIWABrowserTest to just be defined here as well.

              If we wanted to have WebAuthnBrowserTestBase or something live in its own .h./.cc, and then have multiple browsertest files reuse it, I could see a point. But as it is, this test code organization is a bit unorthodox.

              Moving these into a separate file also makes it really difficult to follow the numerous existing comment threads on this file, which isn't ideal.

              Olga Korokhina

              Than I misunderstood your initial comment. Setting scoped_feature_list_ is only possible in constructor and not needed for other then IWA tests indeed. I am fully agree all tests (old and new IWA-specific) should be in one file, but just fail to understand what code reorganization you propose under "Please move this into a separate fixture that inherits from this one, and move the new tests there.". Please give me more clues?

              Martin Kreichgauer

              The WebAuthnIWABrowserTest test suite should be defined at the bottom of this file, rather than in a separate file, same for its individual IN_PROC_BROWSER_TEST_F test cases. (You'll notice there are multiple other test suite classes inheriting from WebAuthnIWABrowserTest already in this file.)

              Once you have done that, you should also undo moving the definition for WebAuthnBrowserTest into the new header file, and just revert it back to what it was before.

              Olga Korokhina

              Oh, got it, done.

              File chrome/browser/webauthn/chrome_webauthn_iwa_browsertest.cc
              Line 131, Patchset 65: // Allow IWA to create and get creds
              Martin Kreichgauer . resolved

              Please update the comment to match the code.

              Olga Korokhina

              Done, sorry!

              Line 173, Patchset 65: // Allow IWA to create and get creds
              Martin Kreichgauer . resolved

              Please update the comment to match the code.

              Olga Korokhina

              Adjusted, thank you

              File components/webauthn/core/browser/webauthn_security_utils.cc
              Line 24, Patchset 64: caller_origin.scheme() != webapps::kIsolatedAppScheme) {
              Martin Kreichgauer . resolved

              Can you please unit test this change? There are existing tests in //components/webauthn/core/browser/webauthn_security_utils.cc.

              Olga Korokhina

              Added test case to components/webauthn/core/browser/webauthn_security_utils_unittest.cc, according to it check fails into kInvalidDomain (fails into !network::IsUrlPotentiallyTrustworthy(caller_origin.GetURL()) below in line 31).

              Martin Kreichgauer

              Ah, right, those tests should only cover HTTP(S) origins. You'll want to fix that, probably by removing this check and adding something like this above it instead.

              ```
              if (caller_origin.scheme() == webapps::kIsolatedAppScheme) {
              return ValidationStatus::kSuccess;
              }
              ```
              Olga Korokhina

              Added check above in same method, thank you.

              Line 49, Patchset 64: if (caller_origin.scheme() == webapps::kIsolatedAppScheme) {
              return false;
              }
              Martin Kreichgauer . resolved

              Can you please unit test this change? There are existing tests in //components/webauthn/core/browser/webauthn_security_utils.cc.

              Olga Korokhina

              Yes, added three cases for it in WebAuthnSecurityUtilsTest.OriginIsAllowedToClaimRelyingPartyId

              Olga Korokhina

              Done.

              File components/webauthn/core/browser/webauthn_security_utils_unittest.cc
              Line 20, Patchset 65: // {"https://example.com", ValidationStatus::kSuccess},
              Martin Kreichgauer . resolved

              These shouldn't be commented out.

              Olga Korokhina

              Oh, sorry, committed my 'debugging' version. Uncommented!

              Line 85, Patchset 65: // IWAs can not claim any rp_ids ourside or VDI sessions
              Martin Kreichgauer . resolved
              I don't know what this means. Maybe 
              ```suggestion
              // IWAs can not claim any RP ID except via remoteDesktopClientOverride.
              ```
              Olga Korokhina

              Accepted, thank you.

              Line 86, Patchset 65: {"isolated-app://"
              Martin Kreichgauer . resolved

              Please add one more test case here for the IWA claiming an ordinary domain name (like "example.com"). This should fail.

              Olga Korokhina

              added, thank you.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Andrew Rayskiy
              • Martin Kreichgauer
              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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
                Gerrit-Change-Number: 6865592
                Gerrit-PatchSet: 66
                Gerrit-Owner: Olga Korokhina <koro...@google.com>
                Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
                Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
                Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
                Gerrit-CC: Chris Thompson <cth...@chromium.org>
                Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
                Gerrit-CC: Jerome Jiang <ji...@chromium.org>
                Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
                Gerrit-CC: Simon Hangl <sim...@google.com>
                Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
                Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                Gerrit-Comment-Date: Tue, 21 Apr 2026 13:14:47 +0000
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Andrew Rayskiy (Gerrit)

                unread,
                Apr 22, 2026, 4:42:27 AM (2 days ago) Apr 22
                to Olga Korokhina, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
                Attention needed from Martin Kreichgauer and Olga Korokhina

                Andrew Rayskiy voted Code-Review+1

                Code-Review+1
                Open in Gerrit

                Related details

                Attention is currently required from:
                • Martin Kreichgauer
                • Olga Korokhina
                Submit Requirements:
                  • requirement satisfiedCode-Coverage
                  • requirement is not satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: chromium/src
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
                  Gerrit-Change-Number: 6865592
                  Gerrit-PatchSet: 66
                  Gerrit-Owner: Olga Korokhina <koro...@google.com>
                  Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
                  Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
                  Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
                  Gerrit-CC: Chris Thompson <cth...@chromium.org>
                  Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
                  Gerrit-CC: Jerome Jiang <ji...@chromium.org>
                  Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
                  Gerrit-CC: Simon Hangl <sim...@google.com>
                  Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
                  Gerrit-Attention: Olga Korokhina <koro...@google.com>
                  Gerrit-Comment-Date: Wed, 22 Apr 2026 08:42:07 +0000
                  Gerrit-HasComments: No
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Martin Kreichgauer (Gerrit)

                  unread,
                  Apr 22, 2026, 8:21:24 PM (2 days ago) Apr 22
                  to Olga Korokhina, Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
                  Attention needed from Olga Korokhina

                  Martin Kreichgauer added 5 comments

                  File chrome/browser/webauthn/chrome_web_authentication_delegate_base.cc
                  Line 112, Patchset 66 (Latest): // Isolated Web Apps can use RemoteDesktopClientOverride if the feature flag
                  Martin Kreichgauer . unresolved
                  ```suggestion
                  // Isolated Web Apps may be configured to use the
                  // remoteDesktopClientOverride extension only if the feature flag is
                  // enabled.
                  ```

                  I.e., the feature flag doesn't allow them to use it automatically. (But the code is correct.)

                  File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
                  Line 1160, Patchset 66 (Parent):class ChallengeUrlBrowserTest : public WebAuthnBrowserTest {
                  Martin Kreichgauer . unresolved

                  This test has been deleted at HEAD recently, but shouldn't be deleted as part of this CL. Please rebase.

                  File components/webauthn/core/browser/webauthn_security_utils.cc
                  Line 20, Patchset 66 (Latest): // IWAs scheme should be recognized as valid, separated case because
                  // schema is not trust-worthy and fails into 'invalid domain' case
                  Martin Kreichgauer . unresolved
                  ```suggestion
                  // IWAs can make WebAuthn requests but generally aren't allowed to claim
                  // any RP IDs, except via the remoteDesktopClientOverride extension.
                  ```
                  Line 29, Patchset 66 (Latest): caller_origin.scheme() != url::kHttpsScheme &&
                  caller_origin.scheme() != webapps::kIsolatedAppScheme) {
                  Martin Kreichgauer . unresolved

                  The additional test is now superfluous.

                  ```suggestion
                  caller_origin.scheme() != url::kHttpsScheme) {
                  ```
                  File components/webauthn/core/browser/webauthn_security_utils_unittest.cc
                  Line 23, Patchset 66 (Latest): // IWAs schema allowed to proceed with WebAuthn calls only if
                  // remoteDesktopClientOverride set, happens not in this method
                  Martin Kreichgauer . unresolved

                  Nit: Delete this comment

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Olga Korokhina
                  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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
                    Gerrit-Change-Number: 6865592
                    Gerrit-PatchSet: 66
                    Gerrit-Owner: Olga Korokhina <koro...@google.com>
                    Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
                    Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
                    Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
                    Gerrit-CC: Chris Thompson <cth...@chromium.org>
                    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
                    Gerrit-CC: Jerome Jiang <ji...@chromium.org>
                    Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
                    Gerrit-CC: Simon Hangl <sim...@google.com>
                    Gerrit-Attention: Olga Korokhina <koro...@google.com>
                    Gerrit-Comment-Date: Thu, 23 Apr 2026 00:21:16 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Olga Korokhina (Gerrit)

                    unread,
                    Apr 23, 2026, 6:56:43 AM (23 hours ago) Apr 23
                    to Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, kinuko...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
                    Attention needed from Andrew Rayskiy and Martin Kreichgauer

                    Olga Korokhina added 5 comments

                    File chrome/browser/webauthn/chrome_web_authentication_delegate_base.cc
                    Line 112, Patchset 66: // Isolated Web Apps can use RemoteDesktopClientOverride if the feature flag
                    Martin Kreichgauer . resolved
                    ```suggestion
                    // Isolated Web Apps may be configured to use the
                    // remoteDesktopClientOverride extension only if the feature flag is
                    // enabled.
                    ```

                    I.e., the feature flag doesn't allow them to use it automatically. (But the code is correct.)

                    Olga Korokhina

                    Changed, thank you

                    File chrome/browser/webauthn/chrome_webauthn_browsertest.cc
                    Line 1160, Patchset 66 (Parent):class ChallengeUrlBrowserTest : public WebAuthnBrowserTest {
                    Martin Kreichgauer . resolved

                    This test has been deleted at HEAD recently, but shouldn't be deleted as part of this CL. Please rebase.

                    Olga Korokhina

                    Done, thank you

                    File components/webauthn/core/browser/webauthn_security_utils.cc
                    Line 20, Patchset 66: // IWAs scheme should be recognized as valid, separated case because

                    // schema is not trust-worthy and fails into 'invalid domain' case
                    Martin Kreichgauer . resolved
                    ```suggestion
                    // IWAs can make WebAuthn requests but generally aren't allowed to claim
                    // any RP IDs, except via the remoteDesktopClientOverride extension.
                    ```
                    Olga Korokhina

                    Changed, thank you

                    Line 29, Patchset 66: caller_origin.scheme() != url::kHttpsScheme &&
                    caller_origin.scheme() != webapps::kIsolatedAppScheme) {
                    Martin Kreichgauer . resolved

                    The additional test is now superfluous.

                    ```suggestion
                    caller_origin.scheme() != url::kHttpsScheme) {
                    ```
                    Olga Korokhina

                    Indeed, sorry!

                    File components/webauthn/core/browser/webauthn_security_utils_unittest.cc
                    Line 23, Patchset 66: // IWAs schema allowed to proceed with WebAuthn calls only if

                    // remoteDesktopClientOverride set, happens not in this method
                    Martin Kreichgauer . resolved

                    Nit: Delete this comment

                    Olga Korokhina

                    removed, thank you

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Andrew Rayskiy
                    • Martin Kreichgauer
                    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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
                      Gerrit-Change-Number: 6865592
                      Gerrit-PatchSet: 70
                      Gerrit-Owner: Olga Korokhina <koro...@google.com>
                      Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
                      Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
                      Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
                      Gerrit-CC: Chris Thompson <cth...@chromium.org>
                      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
                      Gerrit-CC: Jerome Jiang <ji...@chromium.org>
                      Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
                      Gerrit-CC: Simon Hangl <sim...@google.com>
                      Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
                      Gerrit-Attention: Andrew Rayskiy <green...@google.com>
                      Gerrit-Comment-Date: Thu, 23 Apr 2026 10:56:22 +0000
                      Gerrit-HasComments: Yes
                      Gerrit-Has-Labels: No
                      Comment-In-Reply-To: Martin Kreichgauer <mart...@google.com>
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy

                      Andrew Rayskiy (Gerrit)

                      unread,
                      Apr 23, 2026, 6:58:44 AM (23 hours ago) Apr 23
                      to Olga Korokhina, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, kinuko...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
                      Attention needed from Martin Kreichgauer and Olga Korokhina

                      Andrew Rayskiy voted Code-Review+1

                      Code-Review+1
                      Open in Gerrit

                      Related details

                      Attention is currently required from:
                      • Martin Kreichgauer
                      • Olga Korokhina
                      Submit Requirements:
                        • requirement satisfiedCode-Coverage
                        • requirement is not satisfiedCode-Owners
                        • requirement satisfiedCode-Review
                        • requirement satisfiedReview-Enforcement
                        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                        Gerrit-MessageType: comment
                        Gerrit-Project: chromium/src
                        Gerrit-Branch: main
                        Gerrit-Change-Id: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
                        Gerrit-Change-Number: 6865592
                        Gerrit-PatchSet: 70
                        Gerrit-Owner: Olga Korokhina <koro...@google.com>
                        Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
                        Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
                        Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
                        Gerrit-CC: Chris Thompson <cth...@chromium.org>
                        Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
                        Gerrit-CC: Jerome Jiang <ji...@chromium.org>
                        Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
                        Gerrit-CC: Simon Hangl <sim...@google.com>
                        Gerrit-Attention: Martin Kreichgauer <mart...@google.com>
                        Gerrit-Attention: Olga Korokhina <koro...@google.com>
                        Gerrit-Comment-Date: Thu, 23 Apr 2026 10:58:29 +0000
                        Gerrit-HasComments: No
                        Gerrit-Has-Labels: Yes
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy

                        Martin Kreichgauer (Gerrit)

                        unread,
                        Apr 23, 2026, 7:56:48 PM (10 hours ago) Apr 23
                        to Olga Korokhina, Andrew Rayskiy, Jerome Jiang, Mirko Bonadei, android-bu...@system.gserviceaccount.com, Chris Thompson, Code Review Nudger, Simon Hangl, Martin Kreichgauer, Chromium LUCI CQ, chromium...@chromium.org, blink-re...@chromium.org, blink-...@chromium.org, kinuko...@chromium.org, mar...@chromium.org, browser-comp...@chromium.org, net-r...@chromium.org, eme-r...@chromium.org, devtools...@chromium.org, titoua...@chromium.org, chrome-intell...@chromium.org, chrome-intelligence-te...@google.com, feature-me...@chromium.org, penghuan...@chromium.org, jz...@chromium.org, cblume...@chromium.org, oshima...@chromium.org, ortuno...@chromium.org, fgal...@chromium.org, chromotin...@chromium.org, jshin...@chromium.org, droger+w...@chromium.org, derinel+wat...@google.com, webauthn...@chromium.org
                        Attention needed from Olga Korokhina

                        Martin Kreichgauer added 4 comments

                        Commit Message
                        Line 7, Patchset 70 (Latest):Allow IWAs to call navigator.credentials methods
                        Martin Kreichgauer . unresolved

                        ```suggestion
                        Allow IWAs to call WebAuthn
                        ```

                        Line 9, Patchset 70 (Latest):Change adds IWA schema for allowed to proceed with WebAuthn VDI flow calls, introduces dedicated flag feature::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy, check if IWA caller origin listed in webauthn::pref_names::kRemoteDesktopAllowedOrigins happens in existing code.
                        Martin Kreichgauer . unresolved

                        ```suggestion
                        This exposes the WebAuthn API to calls from IWA origins. IWAs by default won't be able to claim any RP IDs, unless they're using the remoteDestkopClientOverride extension to act on behalf of another web origin. Access to this extension must be enabled for individual IWA origins via the webauthn.remote_desktop_allowed_origins enterprise policy.

                        Flag guarded by the device::kWebAuthnIWARemoteDesktopAllowedOriginsPolicy feature flag.
                        ```

                        Line 14, Patchset 70 (Latest):Enabled-by-default-reason: WebAuthn for IWAs should be enabled
                        from the box
                        Martin Kreichgauer . unresolved

                        ```suggestion
                        Enabled-by-default-reason: Killswitch
                        ```

                        Line 16, Patchset 70 (Latest):Fuchsia-Binary-Size: Adds ~16KB uncompressed to support WebAuthn for Isolated Web Apps, which is enabled by default.
                        Martin Kreichgauer . unresolved

                        I find it unlikely that this change is really adding that much to the Fuchsia binary. Try removing this please.

                        Open in Gerrit

                        Related details

                        Attention is currently required from:
                        • Olga Korokhina
                        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: Ie485f5d8ace040f2bd4a52ba24606a2d2732d7d1
                          Gerrit-Change-Number: 6865592
                          Gerrit-PatchSet: 70
                          Gerrit-Owner: Olga Korokhina <koro...@google.com>
                          Gerrit-Reviewer: Andrew Rayskiy <green...@google.com>
                          Gerrit-Reviewer: Martin Kreichgauer <mart...@google.com>
                          Gerrit-Reviewer: Olga Korokhina <koro...@google.com>
                          Gerrit-CC: Chris Thompson <cth...@chromium.org>
                          Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
                          Gerrit-CC: Jerome Jiang <ji...@chromium.org>
                          Gerrit-CC: Mirko Bonadei <mbon...@chromium.org>
                          Gerrit-CC: Simon Hangl <sim...@google.com>
                          Gerrit-Attention: Olga Korokhina <koro...@google.com>
                          Gerrit-Comment-Date: Thu, 23 Apr 2026 23:56:32 +0000
                          Gerrit-HasComments: Yes
                          Gerrit-Has-Labels: No
                          satisfied_requirement
                          unsatisfied_requirement
                          open
                          diffy
                          Reply all
                          Reply to author
                          Forward
                          0 new messages