[FedCM] Don't block the API when ISS is enabled through OT

Bug: 1472015
Change-Id: I9aa2f7e8d5d366d68973d8e271d9946f4d754da9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4763234
Reviewed-by: Yi Gu <[email protected]>
Commit-Queue: Christian Biesinger <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1182254}
diff --git a/chrome/browser/webid/federated_identity_api_permission_context.cc b/chrome/browser/webid/federated_identity_api_permission_context.cc
index f095ea5c..815cf80 100644
--- a/chrome/browser/webid/federated_identity_api_permission_context.cc
+++ b/chrome/browser/webid/federated_identity_api_permission_context.cc
@@ -39,18 +39,6 @@
 
   const GURL rp_embedder_url = relying_party_embedder.GetURL();
 
-  // TODO(npm): FedCM is currently restricted to contexts where third party
-  // cookies are not blocked unless the FedCmWithoutThirdPartyCookies flag or
-  // FedCmIdpSigninStatusEnabled flag is enabled.  Once the privacy improvements
-  // for the API are implemented, remove this restriction. See
-  // https://crbug.com/13043
-  if (cookie_settings_->ShouldBlockThirdPartyCookies() &&
-      !cookie_settings_->IsThirdPartyAccessAllowed(rp_embedder_url) &&
-      !base::FeatureList::IsEnabled(features::kFedCmWithoutThirdPartyCookies) &&
-      !base::FeatureList::IsEnabled(features::kFedCmIdpSigninStatusEnabled)) {
-    return PermissionStatus::BLOCKED_THIRD_PARTY_COOKIES_BLOCKED;
-  }
-
   const ContentSetting setting = host_content_settings_map_->GetContentSetting(
       rp_embedder_url, rp_embedder_url,
       ContentSettingsType::FEDERATED_IDENTITY_API);
@@ -68,6 +56,19 @@
           rp_embedder_url, ContentSettingsType::FEDERATED_IDENTITY_API)) {
     return PermissionStatus::BLOCKED_EMBARGO;
   }
+  // TODO(npm): FedCM is currently restricted to contexts where third party
+  // cookies are not blocked unless the FedCmWithoutThirdPartyCookies flag or
+  // FedCmIdpSigninStatusEnabled flag is enabled. The IDP signin status API
+  // override is implemented in the caller because it can be enabled through
+  // origin trials. This block can be removed when the IDP Signin status API
+  // ships.
+  // See https://crbug.com/1451396
+  if (cookie_settings_->ShouldBlockThirdPartyCookies() &&
+      !cookie_settings_->IsThirdPartyAccessAllowed(rp_embedder_url) &&
+      !base::FeatureList::IsEnabled(features::kFedCmWithoutThirdPartyCookies)) {
+    return PermissionStatus::BLOCKED_THIRD_PARTY_COOKIES_BLOCKED;
+  }
+
   return PermissionStatus::GRANTED;
 }