0

[FedCM] Clean up some renderer-side flags

These features have shipped but there seems to be no reminders for
cleaning up renderer-side flags after shipping.

Bug: None
Change-Id: Ibd2c4a1885a6fc1537b39aa5410da1c14ece6d39
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6279387
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Joe Mason <joenotcharles@google.com>
Reviewed-by: Christian Biesinger <cbiesinger@chromium.org>
Commit-Queue: Nicolás Peña <npm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1422228}
This commit is contained in:
Nicolás Peña
2025-02-19 15:03:51 -08:00
committed by Chromium LUCI CQ
parent 785898f7c4
commit b3c6e5f02e
23 changed files with 68 additions and 198 deletions

@ -153,7 +153,6 @@ std::string ComputeUrlEncodedTokenPostDataForIssuers(
std::string ComputeUrlEncodedTokenPostData(
RenderFrameHost& render_frame_host,
const url::Origin& idp_origin,
const std::string& client_id,
const std::string& nonce,
const std::string& account_id,
@ -212,7 +211,7 @@ std::string ComputeUrlEncodedTokenPostData(
query += "mode=" + rp_mode_str;
}
if (webid::IsFedCmAuthzEnabled(render_frame_host, idp_origin)) {
if (webid::IsFedCmAuthzEnabled()) {
std::vector<std::string> fields_to_use;
if (fields) {
fields_to_use = *fields;
@ -941,7 +940,6 @@ void FederatedAuthRequestImpl::RequestToken(
render_frame_host(), idp_ptr->config->config_url,
permission_delegate_);
url::Origin idp_origin = url::Origin::Create(idp_ptr->config->config_url);
if (has_failing_idp_signin_status) {
if (idp_get_params_ptr->mode == blink::mojom::RpMode::kPassive) {
if (IsFedCmMultipleIdentityProvidersEnabled()) {
@ -986,7 +984,7 @@ void FederatedAuthRequestImpl::RequestToken(
return;
}
if (webid::IsFedCmAuthzEnabled(render_frame_host(), idp_origin)) {
if (webid::IsFedCmAuthzEnabled()) {
any_idp_has_custom_scopes =
any_idp_has_custom_scopes || GetDisclosureFields(*idp_ptr).empty();
any_idp_has_parameters = any_idp_has_parameters || idp_ptr->params_json;
@ -1102,7 +1100,7 @@ void FederatedAuthRequestImpl::ResolveTokenRequest(
const std::optional<std::string>& account_id,
const std::string& token,
ResolveTokenRequestCallback callback) {
if (!webid::IsFedCmAuthzEnabled(render_frame_host(), origin())) {
if (!webid::IsFedCmAuthzEnabled()) {
std::move(callback).Run(false);
return;
}
@ -1450,8 +1448,7 @@ FederatedAuthRequestImpl::GetDisclosureFields(
IdentityRequestDialogDisclosureField::kEmail,
IdentityRequestDialogDisclosureField::kPicture};
url::Origin idp_origin = url::Origin::Create(provider.config->config_url);
if (!webid::IsFedCmAuthzEnabled(render_frame_host(), idp_origin)) {
if (!webid::IsFedCmAuthzEnabled()) {
return kDefaultPermissions;
}
@ -1863,8 +1860,6 @@ void FederatedAuthRequestImpl::HandleAccountsFetchFailure(
std::optional<bool> old_idp_signin_status,
blink::mojom::FederatedAuthRequestResult result,
std::optional<TokenStatus> token_status) {
url::Origin idp_origin =
url::Origin::Create(idp_info->provider->config->config_url);
if (!old_idp_signin_status.has_value()) {
if (rp_mode_ == blink::mojom::RpMode::kActive) {
MaybeShowActiveModeModalDialog(idp_info->provider->config->config_url,
@ -2074,8 +2069,7 @@ void FederatedAuthRequestImpl::OnAccountsResponseReceived(
}
case IdpNetworkRequestManager::ParseStatus::kSuccess: {
RecordRawAccountsSize(accounts.size());
if (webid::IsFedCmAuthzEnabled(render_frame_host(),
url::Origin::Create(idp_config_url))) {
if (webid::IsFedCmAuthzEnabled()) {
if (!FilterAccountsWithLabel(idp_info->metadata.requested_label,
accounts)) {
// No accounts remain, so treat as account fetch failure.
@ -2363,10 +2357,8 @@ void FederatedAuthRequestImpl::OnAccountSelected(const GURL& idp_config_url,
fedcm_metrics_->RecordContinueOnPopupTime(
idp_config_url, select_account_time_ - accounts_dialog_display_time_);
url::Origin idp_origin = url::Origin::Create(idp_config_url);
IdpNetworkRequestManager::ContinueOnCallback continue_on;
if (webid::IsFedCmAuthzEnabled(render_frame_host(), idp_origin)) {
if (webid::IsFedCmAuthzEnabled()) {
continue_on = base::BindOnce(
&FederatedAuthRequestImpl::OnContinueOnResponseReceived,
weak_ptr_factory_.GetWeakPtr(), idp_info.provider->Clone());
@ -2406,7 +2398,7 @@ void FederatedAuthRequestImpl::OnAccountSelected(const GURL& idp_config_url,
} else {
endpoint = idp_info.endpoints.token;
query = ComputeUrlEncodedTokenPostData(
render_frame_host(), idp_origin, idp_info.provider->config->client_id,
render_frame_host(), idp_info.provider->config->client_id,
idp_info.provider->nonce, account_id,
identity_selection_type_ != kExplicit, rp_mode_,
idp_info.provider->fields, disclosure_shown_for,
@ -2594,15 +2586,15 @@ void FederatedAuthRequestImpl::OnContinueOnResponseReceived(
IdentityProviderRequestOptionsPtr idp,
IdpNetworkRequestManager::FetchStatus status,
const GURL& continue_on) {
url::Origin idp_origin = url::Origin::Create(idp->config->config_url);
// This is enforced by OnAccountSelected when we call SendTokenRequest.
DCHECK(webid::IsFedCmAuthzEnabled(render_frame_host(), idp_origin));
DCHECK(webid::IsFedCmAuthzEnabled());
id_assertion_response_time_ = base::TimeTicks::Now();
GetContentClient()->browser()->LogWebFeatureForCurrentPage(
&render_frame_host(), blink::mojom::WebFeature::kFedCmContinueOnResponse);
url::Origin idp_origin = url::Origin::Create(idp->config->config_url);
// We only allow loading continue_on urls that are same-origin
// with the IdP.
// This isn't necessarily final, but seemed like a safer

@ -239,8 +239,6 @@ void FederatedProviderFetcher::ValidateAndMaybeSetError(FetchResult& result) {
result.identity_provider_config_url, result.endpoints.token);
bool is_accounts_valid = webid::IsEndpointSameOrigin(
result.identity_provider_config_url, result.endpoints.accounts);
url::Origin idp_origin =
url::Origin::Create(result.identity_provider_config_url);
bool is_login_url_valid =
result.metadata &&
@ -281,8 +279,7 @@ void FederatedProviderFetcher::ValidateAndMaybeSetError(FetchResult& result) {
}
// (b)
if (webid::IsFedCmAuthzEnabled(*render_frame_host_, idp_origin) &&
result.wellknown.accounts.is_valid() &&
if (webid::IsFedCmAuthzEnabled() && result.wellknown.accounts.is_valid() &&
result.wellknown.login_url.is_valid() && result.metadata &&
result.metadata->idp_login_url.is_valid()) {
// Behind the AuthZ flag, it is valid for IdPs to have valid configURLs

@ -438,28 +438,14 @@ bool HasSharingPermissionOrIdpHasThirdPartyCookiesAccess(
requester_origin, embedder_origin, url::Origin::Create(provider_url));
}
bool IsFedCmAuthzEnabled(RenderFrameHost& host, const url::Origin& idp_origin) {
RuntimeFeatureStateDocumentData* rfs_document_data =
RuntimeFeatureStateDocumentData::GetForCurrentDocument(&host);
bool IsFedCmAuthzEnabled() {
// If field trials or an explicit user selection disables authz, we should
// respect that.
std::optional<bool> is_overridden = IsFedCmAuthzOverridden();
if (is_overridden) {
return *is_overridden;
}
// Should not be null as this gets initialized when the host gets created.
DCHECK(rfs_document_data);
std::vector<url::Origin> third_party_origins = {idp_origin};
// This includes origin trials.
bool runtime_enabled =
rfs_document_data->runtime_feature_state_read_context()
.IsFedCmAuthzEnabled() ||
rfs_document_data->runtime_feature_state_read_context()
.IsFedCmAuthzEnabledForThirdParty(third_party_origins);
bool flag_enabled = IsFedCmAuthzFlagEnabled();
return runtime_enabled || flag_enabled;
return true;
}
FederatedAuthRequestPageData* GetPageData(Page& page) {

@ -103,7 +103,7 @@ bool HasSharingPermissionOrIdpHasThirdPartyCookiesAccess(
FederatedIdentityPermissionContextDelegate* sharing_permission_delegate,
FederatedIdentityApiPermissionContextDelegate* api_permission_delegate);
bool IsFedCmAuthzEnabled(RenderFrameHost& host, const url::Origin& idp_origin);
bool IsFedCmAuthzEnabled();
FederatedAuthRequestPageData* GetPageData(Page& page);

@ -203,9 +203,9 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
{wf::EnableEyeDropperAPI, raw_ref(features::kEyeDropper),
kSetOnlyIfOverridden},
{wf::EnableFedCm, raw_ref(features::kFedCm), kSetOnlyIfOverridden},
{wf::EnableFedCmButtonMode, raw_ref(features::kFedCmButtonMode),
{wf::EnableFedCm, raw_ref(features::kFedCmButtonMode),
kSetOnlyIfOverridden},
{wf::EnableFedCmAuthz, raw_ref(features::kFedCmAuthz),
{wf::EnableFedCm, raw_ref(features::kFedCmAuthz),
kSetOnlyIfOverridden},
{wf::EnableFedCmDelegation, raw_ref(features::kFedCmDelegation),
kDefault},

@ -501,7 +501,7 @@ void OnRequestToken(std::unique_ptr<ScopedPromiseResolver> scoped_resolver,
return;
}
case RequestTokenStatus::kError: {
if (!RuntimeEnabledFeatures::FedCmErrorEnabled() || !error) {
if (!error) {
resolver->Reject(MakeGarbageCollected<DOMException>(
DOMExceptionCode::kNetworkError, "Error retrieving a token."));
return;
@ -2160,8 +2160,7 @@ void AuthenticationCredentialsContainer::GetForIdentity(
UseCounter::Count(resolver->GetExecutionContext(),
WebFeature::kFedCmLoginHint);
}
if (RuntimeEnabledFeatures::FedCmDomainHintEnabled() &&
provider->hasDomainHint()) {
if (provider->hasDomainHint()) {
UseCounter::Count(resolver->GetExecutionContext(),
WebFeature::kFedCmDomainHint);
}
@ -2256,38 +2255,35 @@ void AuthenticationCredentialsContainer::GetForIdentity(
}
mojom::blink::RpMode rp_mode = mojom::blink::RpMode::kPassive;
if (blink::RuntimeEnabledFeatures::FedCmButtonModeEnabled(
resolver->GetExecutionContext())) {
auto v8_rp_mode = identity_options.mode();
// TODO(crbug.com/372198646): remove the debugging aid enums after shipping
// active mode.
if (v8_rp_mode ==
blink::V8IdentityCredentialRequestOptionsMode::Enum::kWidget ||
v8_rp_mode ==
blink::V8IdentityCredentialRequestOptionsMode::Enum::kButton) {
resolver->GetExecutionContext()->AddConsoleMessage(
MakeGarbageCollected<ConsoleMessage>(
mojom::blink::ConsoleMessageSource::kJavaScript,
mojom::blink::ConsoleMessageLevel::kWarning,
"The mode button/widget are renamed to active/passive "
"respectively and will be deprecated soon."));
}
auto v8_rp_mode = identity_options.mode();
// TODO(crbug.com/372198646): remove the debugging aid enums after shipping
// active mode.
if (v8_rp_mode ==
blink::V8IdentityCredentialRequestOptionsMode::Enum::kWidget ||
v8_rp_mode ==
blink::V8IdentityCredentialRequestOptionsMode::Enum::kButton) {
resolver->GetExecutionContext()->AddConsoleMessage(
MakeGarbageCollected<ConsoleMessage>(
mojom::blink::ConsoleMessageSource::kJavaScript,
mojom::blink::ConsoleMessageLevel::kWarning,
"The mode button/widget are renamed to active/passive "
"respectively and will be deprecated soon."));
}
rp_mode = mojo::ConvertTo<mojom::blink::RpMode>(v8_rp_mode);
if (rp_mode == mojom::blink::RpMode::kActive) {
if (identity_provider_ptrs.size() > 1u) {
resolver->Reject(MakeGarbageCollected<DOMException>(
DOMExceptionCode::kInvalidStateError,
"Active mode is not currently supported with multiple identity "
"providers."));
return;
}
if (mediation_requirement == CredentialMediationRequirement::kSilent) {
resolver->Reject(MakeGarbageCollected<DOMException>(
DOMExceptionCode::kNotSupportedError,
"mediation:silent is not supported in active mode"));
return;
}
rp_mode = mojo::ConvertTo<mojom::blink::RpMode>(v8_rp_mode);
if (rp_mode == mojom::blink::RpMode::kActive) {
if (identity_provider_ptrs.size() > 1u) {
resolver->Reject(MakeGarbageCollected<DOMException>(
DOMExceptionCode::kInvalidStateError,
"Active mode is not currently supported with multiple identity "
"providers."));
return;
}
if (mediation_requirement == CredentialMediationRequirement::kSilent) {
resolver->Reject(MakeGarbageCollected<DOMException>(
DOMExceptionCode::kNotSupportedError,
"mediation:silent is not supported in active mode"));
return;
}
}

@ -444,12 +444,10 @@ TEST(AuthenticationCredentialsContainerTest, PublicKeyConditionalMediationUkm) {
class AuthenticationCredentialsContainerActiveModeMultiIdpTest
: public testing::Test,
private ScopedFedCmMultipleIdentityProvidersForTest,
ScopedFedCmButtonModeForTest {
private ScopedFedCmMultipleIdentityProvidersForTest {
protected:
AuthenticationCredentialsContainerActiveModeMultiIdpTest()
: ScopedFedCmMultipleIdentityProvidersForTest(true),
ScopedFedCmButtonModeForTest(true) {}
: ScopedFedCmMultipleIdentityProvidersForTest(true) {}
};
TEST_F(AuthenticationCredentialsContainerActiveModeMultiIdpTest,

@ -983,11 +983,7 @@ TypeConverter<IdentityProviderRequestOptionsPtr,
mojo_options->nonce = options.getNonceOr("");
mojo_options->login_hint = options.getLoginHintOr("");
mojo_options->domain_hint =
blink::RuntimeEnabledFeatures::FedCmDomainHintEnabled()
? options.getDomainHintOr("")
: "";
mojo_options->domain_hint = options.getDomainHintOr("");
if (options.hasFormat()) {
// Only one format type is supported at the time and the bindings code
// verifies that the correct one was specified.

@ -46,9 +46,6 @@ void OnDisconnect(ScriptPromiseResolver<IDLUndefined>* resolver,
IdentityCredential* IdentityCredential::Create(const String& token,
bool is_auto_selected,
const String& config_url) {
if (!RuntimeEnabledFeatures::FedCmAutoSelectedFlagEnabled()) {
is_auto_selected = false;
}
return MakeGarbageCollected<IdentityCredential>(token, is_auto_selected,
config_url);
}

@ -17,13 +17,11 @@ dictionary IdentityCredentialDisconnectOptions : IdentityProviderConfig {
readonly attribute USVString token;
// Whether an account was automatically selected in the FedCM flow.
[RuntimeEnabled=FedCmAutoSelectedFlag]
readonly attribute boolean isAutoSelected;
// The config URL of the selected identity provider.
[RuntimeEnabled=FedCmMultipleIdentityProviders] readonly attribute USVString configURL;
// https://github.com/fedidcg/FedCM/pull/515
[RuntimeEnabled=FedCmDisconnect, CallWith=ScriptState, RaisesException, MeasureAs=FedCmDisconnect] static Promise<undefined> disconnect(IdentityCredentialDisconnectOptions options);
[CallWith=ScriptState, RaisesException, MeasureAs=FedCmDisconnect] static Promise<undefined> disconnect(IdentityCredentialDisconnectOptions options);
};

@ -12,7 +12,7 @@ dictionary IdentityCredentialErrorInit {
[
Exposed=Window,
SecureContext,
RuntimeEnabled=FedCmError
RuntimeEnabled=FedCm
] interface IdentityCredentialError : DOMException {
constructor(optional DOMString message = "", optional IdentityCredentialErrorInit options = {});

@ -23,7 +23,7 @@ dictionary IdentityCredentialRequestOptions {
required sequence<IdentityProviderRequestOptions> providers;
IdentityCredentialRequestOptionsContext context = "signin";
// Allows an RP to select between the two modes of operation: active or passive.
[RuntimeEnabled=FedCmButtonMode, MeasureAs=FedCmButtonMode] IdentityCredentialRequestOptionsMode mode = "passive";
[MeasureAs=FedCmButtonMode] IdentityCredentialRequestOptionsMode mode = "passive";
// A querying language that allows an RP to ask what it wants from the IdPs.
[RuntimeEnabled=FedCmSelectiveDisclosure] IdentityStandardClaims claims;
// This is a debugging aid string instead of an actual member of this dictionary.

@ -27,8 +27,7 @@ dictionary IdentityProviderToken {
[CallWith=ScriptState, RaisesException, MeasureAs=FedCmUserInfo]
static Promise<sequence<IdentityUserInfo>> getUserInfo(IdentityProviderConfig config);
[RuntimeEnabled=FedCm, CallWith=ScriptState]
static void close();
[CallWith=ScriptState] static void close();
[RuntimeEnabled=FedCmIdPRegistration, CallWith=ScriptState, ImplementedAs=registerIdentityProvider]
static Promise<boolean> register(USVString configURL);
@ -37,6 +36,5 @@ dictionary IdentityProviderToken {
// Allows an IdP to return a token to the RP from the content area, as opposed to
// over HTTP with the id_assertion_endpoint.
[RuntimeEnabled=FedCmAuthz, CallWith=ScriptState]
static Promise<undefined> resolve((USVString or IdentityProviderToken) token, optional IdentityResolveOptions options = {});
[CallWith=ScriptState] static Promise<undefined> resolve((USVString or IdentityProviderToken) token, optional IdentityResolveOptions options = {});
};

@ -26,8 +26,8 @@ dictionary IdentityProviderField {
dictionary IdentityProviderRequestOptions : IdentityProviderConfig {
USVString nonce;
DOMString loginHint;
[RuntimeEnabled=FedCmDomainHint] DOMString domainHint;
[RuntimeEnabled=FedCmAuthz] sequence<(USVString or IdentityProviderField)> fields;
[RuntimeEnabled=FedCmAuthz] any params;
DOMString domainHint;
sequence<(USVString or IdentityProviderField)> fields;
any params;
[RuntimeEnabled=FedCmDelegation] IdentityProviderRequestOptionsFormat format;
};

@ -1861,32 +1861,6 @@
status: "stable",
base_feature: "none",
},
{
name: "FedCmAuthz",
depends_on: ["FedCm"],
public: true,
browser_process_read_access: true,
status: "stable",
base_feature: "none",
origin_trial_feature_name: "FedCmContinueOnBundle",
origin_trial_allows_third_party: true,
},
{
name: "FedCmAutoSelectedFlag",
depends_on: ["FedCm"],
public: true,
status: "stable",
base_feature: "none",
},
{
name: "FedCmButtonMode",
depends_on: ["FedCm"],
public: true,
status: "stable",
base_feature: "none",
origin_trial_feature_name: "FedCmButtonMode",
origin_trial_allows_third_party: true,
},
{
name: "FedCmDelegation",
depends_on: ["FedCm"],
@ -1894,27 +1868,6 @@
status: "test",
base_feature: "none",
},
{
name: "FedCmDisconnect",
depends_on: ["FedCm"],
base_feature: "none",
status: "stable",
public: true,
},
{
name: "FedCmDomainHint",
depends_on: ["FedCm"],
public: true,
status: "stable",
base_feature: "none",
},
{
name: "FedCmError",
depends_on: ["FedCm"],
public: true,
status: "stable",
base_feature: "none",
},
{
name: "FedCmIdPRegistration",
depends_on: ["FedCm"],

@ -1333,12 +1333,12 @@ crbug.com/1404951 [ Mac12 Release ] external/wpt/fedcm/fedcm-iframe.https.html [
crbug.com/1404951 [ Mac13 Release ] external/wpt/fedcm/fedcm-iframe.https.html [ Slow ]
crbug.com/1404951 [ Release Win ] external/wpt/fedcm/fedcm-iframe.https.html [ Slow ]
crbug.com/1494119 external/wpt/fedcm/fedcm-login-status/confirm-idp-login.https.html [ Slow ]
crbug.com/1489239 [ Debug Mac13-arm64 ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Linux ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Mac11 Release ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Mac12 Release ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Mac13 ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Release Win ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Debug Mac13-arm64 ] external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Linux ] external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Mac11 Release ] external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Mac12 Release ] external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Mac13 ] external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
crbug.com/1489239 [ Release Win ] external/wpt/fedcm/fedcm-authz/fedcm-continue-on.https.html [ Slow ]
# Slow because it contains thousands of subtests
crbug.com/1423483 [ Linux ] external/wpt/css/css-color/parsing/color-computed-hsl.html [ Slow ]

@ -2743,8 +2743,9 @@ crbug.com/388319477 [ Win ] external/wpt/css/css-page/margin-boxes/content-007-p
crbug.com/388319477 [ Mac13 ] external/wpt/css/css-page/margin-boxes/dimensions-008-print.html [ Crash ]
crbug.com/388319477 [ Win ] external/wpt/css/css-page/margin-boxes/dimensions-008-print.html [ Crash ]
crbug.com/388345823 [ Win ] external/wpt/fetch/api/credentials/cookies.any.sharedworker.html [ Crash ]
crbug.com/388326073 [ Mac14 ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-disclosure-text-shown.https.html [ Crash ]
crbug.com/388326073 [ Win ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-disclosure-text-shown.https.html [ Crash ]
crbug.com/388326073 [ Mac14 ] external/wpt/fedcm/fedcm-authz/fedcm-disclosure-text-shown.https.html [ Crash ]
crbug.com/388326073 [ Win ] external/wpt/fedcm/fedcm-authz/fedcm-disclosure-text-shown.https.html [ Crash ]
crbug.com/41482163 [ Linux ] external/wpt/fedcm/fedcm-authz/fedcm-continue-on-with-account.https.html [ Timeout ]
[ Linux ] virtual/fenced-frame-mparch-internal/wpt_internal/fenced_frame/revoke-manual-report-event-beacons.https.html [ Crash ]
[ Win ] virtual/fenced-frame-mparch-internal/wpt_internal/fenced_frame/revoke-manual-report-event-beacons.https.html [ Crash ]
[ Mac14 ] virtual/keepalive-in-browser-migration/external/wpt/background-fetch/abort.https.window.html [ Crash Timeout ]
@ -3370,7 +3371,7 @@ crbug.com/626703 virtual/view-transition-wide-gamut/external/wpt/css/css-view-tr
crbug.com/626703 virtual/threaded/external/wpt/css/css-view-transitions/no-white-flash-before-activation.html [ Timeout ]
crbug.com/626703 external/wpt/css/css-values/viewport-units-scrollbars-auto-vhw-001.html [ Failure ]
crbug.com/626703 external/wpt/css/css-values/viewport-units-scrollbars-scroll-vhw-001.html [ Failure ]
crbug.com/626703 [ Win11-arm64 ] virtual/fedcm-button-and-other-account/external/wpt/fedcm/fedcm-button-and-other-account/fedcm-use-other-account-button-flow.tentative.https.html [ Timeout ]
crbug.com/626703 [ Win11-arm64 ] external/wpt/fedcm/fedcm-button-and-other-account/fedcm-use-other-account-button-flow.tentative.https.html [ Timeout ]
crbug.com/626703 [ Win11-arm64 ] virtual/fenced-frame-mparch/external/wpt/fenced-frame/default-enabled-features-attribution-disabled.https.html [ Timeout ]
crbug.com/626703 [ Win11-arm64 ] virtual/shared-storage-fenced-frame-mparch/external/wpt/shared-storage/embedder-context.tentative.https.sub.html [ Timeout ]
crbug.com/626703 external/wpt/css/css-transforms/transform-box/svgbox-stroke-box-005.html [ Failure ]
@ -6988,7 +6989,7 @@ crbug.com/1404951 [ Win ] external/wpt/fedcm/fedcm-nonce-is-optional.https.html
crbug.com/1480054 [ Win ] external/wpt/fedcm/fedcm-loginhint.https.html [ Pass Timeout ]
crbug.com/328129675 virtual/fedcm-button-and-other-account/external/wpt/fedcm/fedcm-button-and-other-account/fedcm-button-mode-priority.tentative.https.html [ Pass Timeout ]
crbug.com/328129675 external/wpt/fedcm/fedcm-button-and-other-account/fedcm-button-mode-priority.tentative.https.html [ Pass Timeout ]
# We skip these tests in the base test suite in NeverFixTests, but we do want
# to run them in the virtual test suite.
@ -7704,7 +7705,7 @@ crbug.com/326065719 [ Win11-arm64 ] http/tests/xmlhttprequest/simple-cross-origi
crbug.com/326065568 [ Win11-arm64 ] external/wpt/fedcm/fedcm-disconnect-iframe.sub.https.html [ Failure Pass Timeout ] # Flaky
crbug.com/326065727 [ Win11-arm64 ] external/wpt/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.html [ Failure Pass Timeout ] # Flaky
crbug.com/326065972 [ Win11-arm64 ] external/wpt/webrtc-encoded-transform/tentative/RTCPeerConnection-insertable-streams-video.https.html [ Failure Pass Timeout ] # Flaky
crbug.com/326067001 [ Win11-arm64 ] virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-userinfo-after-resolve.https.html [ Failure Pass Timeout ] # Flaky
crbug.com/326067001 [ Win11-arm64 ] external/wpt/fedcm/fedcm-authz/fedcm-userinfo-after-resolve.https.html [ Failure Pass Timeout ] # Flaky
crbug.com/326067598 [ Win11-arm64 ] virtual/fenced-frame-mparch/external/wpt/fenced-frame/set-automatic-beacon.https.html [ Failure Pass Timeout ] # Flaky
crbug.com/326066872 [ Win11-arm64 ] virtual/prefetch-reusable/external/wpt/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https.html?prefetch=true [ Failure Pass Timeout ] # Flaky
crbug.com/326066872 [ Win11-arm64 ] virtual/prefetch-new-wait-loop/external/wpt/speculation-rules/prefetch/navigation-timing-requestStart-responseStart.https.html?prefetch=true [ Failure Pass Timeout ] # Flaky

@ -944,8 +944,6 @@ virtual/disable-css-line-clamp/external/wpt/css/css-overflow/line-clamp/webkit-l
virtual/disable-css-line-clamp/external/wpt/css/css-overflow/line-clamp/webkit-line-clamp-025.html
virtual/disable-css-line-clamp/external/wpt/css/css-overflow/line-clamp/webkit-line-clamp-036.html
virtual/document-isolation-policy/external/wpt/html/document-isolation-policy/shared-workers.tentative.https.html
virtual/fedcm-authz/external/wpt/fedcm/fedcm-authz/fedcm-disclosure-text-shown.https.html
virtual/fedcm-button-and-other-account/external/wpt/fedcm/fedcm-button-and-other-account/fedcm-use-other-account-button-flow.tentative.https.html
virtual/fedcm-multi-idp/external/wpt/fedcm/fedcm-multi-idp/fedcm-multi-idp-mediation-optional.https.html
virtual/fedcm-multi-idp/external/wpt/fedcm/fedcm-multi-idp/fedcm-multi-idp-mediation-silent.https.html
virtual/fedcm-register/external/wpt/fedcm/fedcm-register/fedcm-no-registered-idps.https.html

@ -1855,24 +1855,6 @@
"owners": ["syg@chromium.org"],
"expires": "Jul 1, 2025"
},
{
"prefix": "fedcm-authz",
"platforms": ["Linux", "Mac", "Win"],
"bases": ["external/wpt/fedcm/fedcm-authz/"],
"exclusive_tests": "ALL",
"args": ["--enable-features=FedCmAuthz"],
"owners": ["cbiesinger@chromium.org", "goto@chromium.org"],
"expires": "May 1, 2025"
},
{
"prefix": "fedcm-button-and-other-account",
"platforms": ["Linux", "Mac", "Win"],
"bases": ["external/wpt/fedcm/fedcm-button-and-other-account/"],
"exclusive_tests": "ALL",
"args": ["--enable-features=FedCmUseOtherAccount,FedCmButtonMode"],
"owners": ["cbiesinger@chromium.org", "yigu@chromium.org"],
"expires": "May 1, 2025"
},
{
"prefix": "fedcm-multi-idp",
"owners": ["npm@chromium.org", "web-identity-eng@google.com"],

@ -1,6 +0,0 @@
monorail: {
component: "Chromium > Blink > Identity > FedCM"
}
buganizer_public: {
component_id: 1456331
}

@ -1,5 +0,0 @@
# FedCmAuthz
This suite runs the tests in wpt/credential-management/fedcm-authz/ with
`--enable-features=FedCmAuthz`.
See crbug.com/1429083.

@ -1,6 +0,0 @@
monorail: {
component: "Chromium > Blink > Identity > FedCM"
}
buganizer_public: {
component_id: 1456331
}

@ -1,5 +0,0 @@
# FedCmButtonMode and FedCmAddAccount
This suite runs the tests in wpt/credential-management/fedcm-button-and-other-account/ with
`--enable-features=FedCmButtonMode,FedCmAddAccount`.
See crbug.com/40284792.