Refactor to accept coordinator allowlist in feature param

Instead of specify explicitly for AWS and GCP, it's more extensible to
accept coordinator allowlist in the feature param. This also allows
coverage in the interop tests which can override the allowlist.

Change-Id: Ib0fb47205e0b7a9b1a5004df06e89678495c372d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5444731
Reviewed-by: Andrew Paseltiner <[email protected]>
Reviewed-by: Dominic Farolino <[email protected]>
Reviewed-by: Alex Turner <[email protected]>
Commit-Queue: Nan Lin <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1290765}
diff --git a/components/aggregation_service/aggregation_coordinator_utils.cc b/components/aggregation_service/aggregation_coordinator_utils.cc
index ebe25647..a2240e00 100644
--- a/components/aggregation_service/aggregation_coordinator_utils.cc
+++ b/components/aggregation_service/aggregation_coordinator_utils.cc
@@ -6,9 +6,14 @@
 
 #include <string>
 #include <string_view>
+#include <utility>
+#include <vector>
 
 #include "base/check.h"
-#include "base/containers/enum_set.h"
+#include "base/containers/contains.h"
+#include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_split.h"
 #include "components/aggregation_service/features.h"
 #include "components/attribution_reporting/is_origin_suitable.h"
 #include "url/gurl.h"
@@ -18,61 +23,107 @@
 
 namespace {
 
-// An identifier to specify the deployment option for the aggregation service.
-enum class AggregationCoordinator {
-  kAwsCloud,
-  kGcpCloud,
-
-  kMinValue = kAwsCloud,
-  kMaxValue = kGcpCloud,
-  kDefault = kAwsCloud,
-};
-
-url::Origin GetAggregationCoordinatorOriginFromString(
-    std::string_view origin_str,
-    std::string_view default_origin_str) {
-  // Uses default origin in case of erroneous Finch params.
-  auto origin = url::Origin::Create(GURL(origin_str));
-  if (attribution_reporting::IsOriginSuitable(origin)) {
-    return origin;
-  }
-  return url::Origin::Create(GURL(default_origin_str));
+std::vector<url::Origin> DefaultOrigins() {
+  return {url::Origin::Create(GURL(kDefaultAggregationCoordinatorAwsCloud)),
+          url::Origin::Create(GURL(kDefaultAggregationCoordinatorGcpCloud))};
 }
 
-url::Origin GetAggregationCoordinatorOrigin(
-    AggregationCoordinator aggregation_coordinator) {
-  url::Origin origin;
-  switch (aggregation_coordinator) {
-    case AggregationCoordinator::kAwsCloud:
-      origin = GetAggregationCoordinatorOriginFromString(
-          kAggregationServiceCoordinatorAwsCloud.Get(),
-          kDefaultAggregationCoordinatorAwsCloud);
-      break;
-    case AggregationCoordinator::kGcpCloud:
-      origin = GetAggregationCoordinatorOriginFromString(
-          kAggregationServiceCoordinatorGcpCloud.Get(),
-          kDefaultAggregationCoordinatorGcpCloud);
-      break;
+std::vector<url::Origin> Parse(const std::string& unparsed) {
+  std::vector<url::Origin> parsed;
+
+  std::vector<std::string_view> tokens = base::SplitStringPiece(
+      unparsed, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+  for (const std::string_view token : tokens) {
+    auto origin = url::Origin::Create(GURL(token));
+    if (!attribution_reporting::IsOriginSuitable(origin)) {
+      return DefaultOrigins();
+    }
+    parsed.push_back(std::move(origin));
   }
-  CHECK(attribution_reporting::IsOriginSuitable(origin));
-  return origin;
+
+  if (parsed.empty()) {
+    return DefaultOrigins();
+  }
+
+  return parsed;
+}
+
+class CoordinatorOrigins {
+ public:
+  CoordinatorOrigins() = default;
+  ~CoordinatorOrigins() = default;
+
+  explicit CoordinatorOrigins(const std::string& unparsed)
+      : CoordinatorOrigins(Parse(unparsed)) {}
+
+  explicit CoordinatorOrigins(std::vector<url::Origin> origins)
+      : origins_(std::move(origins)) {
+    CHECK(origins_.empty() || IsValid());
+  }
+
+  CoordinatorOrigins(const CoordinatorOrigins&) = delete;
+  CoordinatorOrigins& operator=(const CoordinatorOrigins&) = delete;
+
+  CoordinatorOrigins(CoordinatorOrigins&&) = default;
+  CoordinatorOrigins& operator=(CoordinatorOrigins&&) = default;
+
+  bool contains(const url::Origin& origin) const {
+    CHECK(IsValid());
+    return base::Contains(origins_, origin);
+  }
+
+  const url::Origin& default_origin() const {
+    CHECK(IsValid());
+    return origins_.front();
+  }
+
+  const std::vector<url::Origin>& origins() const { return origins_; }
+
+  [[nodiscard]] bool IsValid() const {
+    if (origins_.empty()) {
+      return false;
+    }
+    return base::ranges::all_of(origins_,
+                                &attribution_reporting::IsOriginSuitable);
+  }
+
+ private:
+  std::vector<url::Origin> origins_;
+};
+
+CoordinatorOrigins& GetCoordinatorOrigins() {
+  static base::NoDestructor<CoordinatorOrigins> g_origins;
+
+  if (!g_origins->origins().empty()) {
+    return *g_origins;
+  }
+
+  *g_origins =
+      CoordinatorOrigins(kAggregationServiceCoordinatorAllowlist.Get());
+
+  return *g_origins;
 }
 
 }  // namespace
 
 url::Origin GetDefaultAggregationCoordinatorOrigin() {
-  return GetAggregationCoordinatorOrigin(AggregationCoordinator::kDefault);
+  return GetCoordinatorOrigins().default_origin();
 }
 
 bool IsAggregationCoordinatorOriginAllowed(const url::Origin& origin) {
-  for (auto coordinator :
-       base::EnumSet<AggregationCoordinator, AggregationCoordinator::kMinValue,
-                     AggregationCoordinator::kMaxValue>::All()) {
-    if (origin == GetAggregationCoordinatorOrigin(coordinator)) {
-      return true;
-    }
-  }
-  return false;
+  return GetCoordinatorOrigins().contains(origin);
+}
+
+ScopedAggregationCoordinatorAllowlistForTesting::
+    ScopedAggregationCoordinatorAllowlistForTesting(
+        std::vector<url::Origin> origins)
+    : previous_(GetCoordinatorOrigins().origins()) {
+  GetCoordinatorOrigins() = CoordinatorOrigins(std::move(origins));
+}
+
+ScopedAggregationCoordinatorAllowlistForTesting::
+    ~ScopedAggregationCoordinatorAllowlistForTesting() {
+  GetCoordinatorOrigins() = CoordinatorOrigins(std::move(previous_));
 }
 
 }  // namespace aggregation_service
diff --git a/components/aggregation_service/aggregation_coordinator_utils.h b/components/aggregation_service/aggregation_coordinator_utils.h
index 8c90552..437a90b7 100644
--- a/components/aggregation_service/aggregation_coordinator_utils.h
+++ b/components/aggregation_service/aggregation_coordinator_utils.h
@@ -5,11 +5,10 @@
 #ifndef COMPONENTS_AGGREGATION_SERVICE_AGGREGATION_COORDINATOR_UTILS_H_
 #define COMPONENTS_AGGREGATION_SERVICE_AGGREGATION_COORDINATOR_UTILS_H_
 
-#include "base/component_export.h"
+#include <vector>
 
-namespace url {
-class Origin;
-}  // namespace url
+#include "base/component_export.h"
+#include "url/origin.h"
 
 namespace aggregation_service {
 
@@ -25,6 +24,26 @@
 COMPONENT_EXPORT(AGGREGATION_SERVICE)
 bool IsAggregationCoordinatorOriginAllowed(const url::Origin&);
 
+class COMPONENT_EXPORT(AGGREGATION_SERVICE)
+    ScopedAggregationCoordinatorAllowlistForTesting {
+ public:
+  explicit ScopedAggregationCoordinatorAllowlistForTesting(
+      std::vector<url::Origin> origins = {});
+  ~ScopedAggregationCoordinatorAllowlistForTesting();
+  ScopedAggregationCoordinatorAllowlistForTesting(
+      const ScopedAggregationCoordinatorAllowlistForTesting&) = delete;
+  ScopedAggregationCoordinatorAllowlistForTesting& operator=(
+      const ScopedAggregationCoordinatorAllowlistForTesting&) = delete;
+
+  ScopedAggregationCoordinatorAllowlistForTesting(
+      ScopedAggregationCoordinatorAllowlistForTesting&&) = delete;
+  ScopedAggregationCoordinatorAllowlistForTesting& operator=(
+      ScopedAggregationCoordinatorAllowlistForTesting&&) = delete;
+
+ private:
+  std::vector<url::Origin> previous_;
+};
+
 }  // namespace aggregation_service
 
 #endif  // COMPONENTS_AGGREGATION_SERVICE_AGGREGATION_COORDINATOR_UTILS_H_
diff --git a/components/aggregation_service/aggregation_coordinator_utils_unittest.cc b/components/aggregation_service/aggregation_coordinator_utils_unittest.cc
index dca9d2f5..700a753 100644
--- a/components/aggregation_service/aggregation_coordinator_utils_unittest.cc
+++ b/components/aggregation_service/aggregation_coordinator_utils_unittest.cc
@@ -20,35 +20,59 @@
     url::Origin expected;
   } kTestCases[] = {
       {
-          "aws-valid",
+          "valid",
           "https://a.test",
           url::Origin::Create(GURL("https://a.test")),
       },
       {
-          "aws-valid-non-empty-path",
+          "valid-non-empty-path",
           "https://a.test/foo",
           url::Origin::Create(GURL("https://a.test")),
       },
       {
-          "aws-valid-subdomain",
+          "valid-subdomain",
           "https://a.b.test",
           url::Origin::Create(GURL("https://a.b.test")),
       },
       {
-          "aws-non-trustworthy",
+          "non-trustworthy",
           "http://a.test",
           url::Origin::Create(GURL(kDefaultAggregationCoordinatorAwsCloud)),
       },
+      {
+          "invalid-origin",
+          "a.test",
+          url::Origin::Create(GURL(kDefaultAggregationCoordinatorAwsCloud)),
+      },
+      {
+          "multiple",
+          "https://b.test,https://a.test",
+          url::Origin::Create(GURL("https://b.test")),
+      },
+      {
+          "any-invalid",
+          "https://b.test,http://a.test",
+          url::Origin::Create(GURL(kDefaultAggregationCoordinatorAwsCloud)),
+      },
+      {
+          "empty",
+          "",
+          url::Origin::Create(GURL(kDefaultAggregationCoordinatorAwsCloud)),
+      },
   };
 
   for (const auto& test_case : kTestCases) {
+    SCOPED_TRACE(test_case.desc);
+
+    ScopedAggregationCoordinatorAllowlistForTesting
+        scoped_coordinator_allowlist;
+
     base::test::ScopedFeatureList scoped_feature_list;
     scoped_feature_list.InitAndEnableFeatureWithParameters(
         ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-        {{"aws_cloud", test_case.feature_param}});
+        {{"allowlist", test_case.feature_param}});
 
-    EXPECT_EQ(GetDefaultAggregationCoordinatorOrigin(), test_case.expected)
-        << test_case.desc;
+    EXPECT_EQ(GetDefaultAggregationCoordinatorOrigin(), test_case.expected);
   }
 }
 
@@ -58,29 +82,27 @@
     bool expected;
   } kTestCases[] = {
       {
-          .origin = url::Origin::Create(GURL("https://aws.example.test")),
-          .expected = true,
-      },
-      {
-          .origin = url::Origin::Create(GURL("https://gcp.example.test")),
-          .expected = true,
-      },
-      {
           .origin = url::Origin::Create(GURL("https://a.test")),
+          .expected = true,
+      },
+      {
+          .origin = url::Origin::Create(GURL("https://b.test")),
+          .expected = true,
+      },
+      {
+          .origin = url::Origin::Create(GURL("https://c.test")),
           .expected = false,
       },
   };
 
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"},
-       {"gcp_cloud", "https://gcp.example.test"}});
+  ScopedAggregationCoordinatorAllowlistForTesting scoped_coordinator_allowlist(
+      {url::Origin::Create(GURL("https://a.test")),
+       url::Origin::Create(GURL("https://b.test"))});
 
   for (const auto& test_case : kTestCases) {
+    SCOPED_TRACE(test_case.origin);
     EXPECT_EQ(IsAggregationCoordinatorOriginAllowed(test_case.origin),
-              test_case.expected)
-        << test_case.origin;
+              test_case.expected);
   }
 }
 
diff --git a/components/aggregation_service/features.cc b/components/aggregation_service/features.cc
index 17d4975..644ae6e 100644
--- a/components/aggregation_service/features.cc
+++ b/components/aggregation_service/features.cc
@@ -8,7 +8,6 @@
 
 #include "base/feature_list.h"
 #include "base/metrics/field_trial_params.h"
-#include "components/aggregation_service/aggregation_coordinator_utils.h"
 
 namespace aggregation_service {
 
@@ -16,12 +15,7 @@
              "AggregationServiceMultipleCloudProviders",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::FeatureParam<std::string> kAggregationServiceCoordinatorAwsCloud{
-    &kAggregationServiceMultipleCloudProviders, "aws_cloud",
-    kDefaultAggregationCoordinatorAwsCloud};
-
-const base::FeatureParam<std::string> kAggregationServiceCoordinatorGcpCloud{
-    &kAggregationServiceMultipleCloudProviders, "gcp_cloud",
-    kDefaultAggregationCoordinatorGcpCloud};
+const base::FeatureParam<std::string> kAggregationServiceCoordinatorAllowlist{
+    &kAggregationServiceMultipleCloudProviders, "allowlist", ""};
 
 }  // namespace aggregation_service
diff --git a/components/aggregation_service/features.h b/components/aggregation_service/features.h
index f08cc65..2f42dff 100644
--- a/components/aggregation_service/features.h
+++ b/components/aggregation_service/features.h
@@ -16,13 +16,14 @@
 COMPONENT_EXPORT(AGGREGATION_SERVICE)
 BASE_DECLARE_FEATURE(kAggregationServiceMultipleCloudProviders);
 
+// Comma-separated origins. The first origin will be used as default. When
+// empty, the default coordinator origins will be used.
+//
+// TODO(linnan): Consider replacing this with a command-line switch since it
+// isn't needed in production.
 COMPONENT_EXPORT(AGGREGATION_SERVICE)
 extern const base::FeatureParam<std::string>
-    kAggregationServiceCoordinatorAwsCloud;
-
-COMPONENT_EXPORT(AGGREGATION_SERVICE)
-extern const base::FeatureParam<std::string>
-    kAggregationServiceCoordinatorGcpCloud;
+    kAggregationServiceCoordinatorAllowlist;
 
 }  // namespace aggregation_service
 
diff --git a/components/aggregation_service/parsing_utils_unittest.cc b/components/aggregation_service/parsing_utils_unittest.cc
index c5cd99d..705cc54 100644
--- a/components/aggregation_service/parsing_utils_unittest.cc
+++ b/components/aggregation_service/parsing_utils_unittest.cc
@@ -7,7 +7,7 @@
 #include <optional>
 #include <string>
 
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 #include "url/origin.h"
@@ -16,12 +16,14 @@
 namespace {
 
 TEST(AggregationServiceParsingUtilsTest, ParseAggregationCoordinator) {
+  ScopedAggregationCoordinatorAllowlistForTesting scoped_coordinator_allowlist(
+      {url::Origin::Create(GURL("https://b.test"))});
+
   const struct {
     std::string str;
     std::optional<url::Origin> expected;
   } kTestCases[] = {
-      {kAggregationServiceCoordinatorAwsCloud.Get(),
-       url::Origin::Create(GURL(kAggregationServiceCoordinatorAwsCloud.Get()))},
+      {"https://b.test", url::Origin::Create(GURL("https://b.test"))},
       {"https://a.test", std::nullopt},
   };
 
diff --git a/components/attribution_reporting/trigger_registration_unittest.cc b/components/attribution_reporting/trigger_registration_unittest.cc
index 06b4712d..95cd9d0 100644
--- a/components/attribution_reporting/trigger_registration_unittest.cc
+++ b/components/attribution_reporting/trigger_registration_unittest.cc
@@ -12,12 +12,11 @@
 #include "base/functional/function_ref.h"
 #include "base/test/gmock_expected_support.h"
 #include "base/test/metrics/histogram_tester.h"
-#include "base/test/scoped_feature_list.h"
 #include "base/test/values_test_util.h"
 #include "base/time/time.h"
 #include "base/types/expected.h"
 #include "base/values.h"
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "components/attribution_reporting/aggregatable_dedup_key.h"
 #include "components/attribution_reporting/aggregatable_trigger_config.h"
 #include "components/attribution_reporting/aggregatable_trigger_data.h"
@@ -360,10 +359,9 @@
   } kTestCases[] = {
       {
           "aggregation_coordinator_origin_valid",
-          R"json({"aggregation_coordinator_origin":"https://aws.example.test"})json",
-          ValueIs(
-              Field(&TriggerRegistration::aggregation_coordinator_origin,
-                    *SuitableOrigin::Create(GURL("https://aws.example.test")))),
+          R"json({"aggregation_coordinator_origin":"https://a.test"})json",
+          ValueIs(Field(&TriggerRegistration::aggregation_coordinator_origin,
+                        *SuitableOrigin::Create(GURL("https://a.test")))),
       },
       {
           "aggregation_coordinator_origin_wrong_type",
@@ -373,7 +371,7 @@
       },
       {
           "aggregation_coordinator_origin_invalid_value",
-          R"json({"aggregation_coordinator_origin":"https://unknown.example.test"})json",
+          R"json({"aggregation_coordinator_origin":"https://b.test"})json",
           ErrorIs(
               TriggerRegistrationError::kAggregationCoordinatorValueInvalid),
       },
@@ -382,10 +380,9 @@
   static constexpr char kTriggerRegistrationErrorMetric[] =
       "Conversions.TriggerRegistrationError11";
 
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"}});
+  aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist(
+          {url::Origin::Create(GURL("https://a.test"))});
 
   for (const auto& test_case : kTestCases) {
     SCOPED_TRACE(test_case.description);
@@ -418,19 +415,16 @@
       {
           TriggerRegistrationWith([](TriggerRegistration& r) {
             r.aggregation_coordinator_origin =
-                SuitableOrigin::Create(GURL("https://aws.example.test"));
+                SuitableOrigin::Create(GURL("https://a.test"));
           }),
           R"json({
             "aggregatable_source_registration_time": "exclude",
-            "aggregation_coordinator_origin": "https://aws.example.test",
+            "aggregation_coordinator_origin": "https://a.test",
             "debug_reporting": false
           })json",
       },
   };
 
-  base::test::ScopedFeatureList scoped_feature_list(
-      aggregation_service::kAggregationServiceMultipleCloudProviders);
-
   for (const auto& test_case : kTestCases) {
     EXPECT_THAT(test_case.input.ToJson(),
                 base::test::IsJson(test_case.expected_json));
diff --git a/content/browser/aggregation_service/aggregatable_report_unittest.cc b/content/browser/aggregation_service/aggregatable_report_unittest.cc
index 9e58436..3f67c8c8 100644
--- a/content/browser/aggregation_service/aggregatable_report_unittest.cc
+++ b/content/browser/aggregation_service/aggregatable_report_unittest.cc
@@ -25,7 +25,7 @@
 #include "base/time/time.h"
 #include "base/uuid.h"
 #include "base/values.h"
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "components/cbor/reader.h"
 #include "components/cbor/values.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
@@ -226,27 +226,20 @@
  public:
   void SetUp() override {
     if (GetParam()) {
-      scoped_feature_list_.InitWithFeaturesAndParameters(
-          /*enabled_features=*/{{kPrivacySandboxAggregationServiceReportPadding,
-                                 {}},
-                                {::aggregation_service::
-                                     kAggregationServiceMultipleCloudProviders,
-                                 {{"aws_cloud", "https://aws.example.test"},
-                                  {"gcp_cloud", "https://gcp.example.test"}}}},
-          /*disabled_features=*/{});
+      scoped_feature_list_.InitAndEnableFeature(
+          kPrivacySandboxAggregationServiceReportPadding);
     } else {
-      scoped_feature_list_.InitWithFeaturesAndParameters(
-          /*enabled_features=*/{{::aggregation_service::
-                                     kAggregationServiceMultipleCloudProviders,
-                                 {{"aws_cloud", "https://aws.example.test"},
-                                  {"gcp_cloud", "https://gcp.example.test"}}}},
-          /*disabled_features=*/{
-              kPrivacySandboxAggregationServiceReportPadding});
+      scoped_feature_list_.InitAndDisableFeature(
+          kPrivacySandboxAggregationServiceReportPadding);
     }
   }
 
  private:
   base::test::ScopedFeatureList scoped_feature_list_;
+  ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist_{
+          {url::Origin::Create(GURL("https://a.test")),
+           url::Origin::Create(GURL("https://b.test"))}};
 };
 
 TEST_P(AggregatableReportTest,
@@ -693,7 +686,7 @@
 
   const char kExpectedJsonString[] =
       R"({)"
-      R"("aggregation_coordinator_origin":"https://aws.example.test",)"
+      R"("aggregation_coordinator_origin":"https://a.test",)"
       R"("aggregation_service_payloads":[)"
       R"({"key_id":"key_1","payload":"ABCD1234"})"
       R"(],)"
@@ -721,7 +714,7 @@
 
   const char kExpectedJsonString[] =
       R"({)"
-      R"("aggregation_coordinator_origin":"https://aws.example.test",)"
+      R"("aggregation_coordinator_origin":"https://a.test",)"
       R"("aggregation_service_payloads":[)"
       R"({"key_id":"key_1","payload":"ABCD1234"},)"
       R"({"key_id":"key_2","payload":"EFGH5678"})"
@@ -748,7 +741,7 @@
 
   const char kExpectedJsonString[] =
       R"({)"
-      R"("aggregation_coordinator_origin":"https://aws.example.test",)"
+      R"("aggregation_coordinator_origin":"https://a.test",)"
       R"("aggregation_service_payloads":[{)"
       R"("debug_cleartext_payload":"EFGH5678",)"
       R"("key_id":"key_1",)"
@@ -774,7 +767,7 @@
 
   const char kExpectedJsonString[] =
       R"({)"
-      R"("aggregation_coordinator_origin":"https://aws.example.test",)"
+      R"("aggregation_coordinator_origin":"https://a.test",)"
       R"("aggregation_service_payloads":[{)"
       R"("debug_cleartext_payload":"EFGH5678",)"
       R"("key_id":"key_1",)"
@@ -805,7 +798,7 @@
       R"({)"
       R"("":"",)"
       R"("additional_key":"example_value",)"
-      R"("aggregation_coordinator_origin":"https://aws.example.test",)"
+      R"("aggregation_coordinator_origin":"https://a.test",)"
       R"("aggregation_service_payloads":[{)"
       R"("key_id":"key_1",)"
       R"("payload":"ABCD1234")"
@@ -1009,9 +1002,8 @@
     const char* description;
   } kTestCases[] = {
       {std::nullopt, true, "default coordinator"},
-      {url::Origin::Create(GURL("https://aws.example.test")), true,
-       "valid coordinator"},
-      {url::Origin::Create(GURL("https://a.test")), false,
+      {url::Origin::Create(GURL("https://a.test")), true, "valid coordinator"},
+      {url::Origin::Create(GURL("https://c.test")), false,
        "invalid coordinator"},
   };
 
@@ -1047,11 +1039,12 @@
 }
 
 TEST_P(AggregatableReportTest, AggregationCoordinatorOriginAllowlistChanged) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"},
-       {"gcp_cloud", "https://gcp.example.test"}});
+  std::optional<
+      ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting>
+      scoped_coordinator_allowlist;
+
+  scoped_coordinator_allowlist.emplace(
+      {url::Origin::Create(GURL("https://a.test"))});
 
   AggregatableReportRequest example_request =
       aggregation_service::CreateExampleRequest();
@@ -1059,7 +1052,7 @@
   AggregationServicePayloadContents payload_contents =
       example_request.payload_contents();
   payload_contents.aggregation_coordinator_origin =
-      url::Origin::Create(GURL("https://aws.example.test"));
+      url::Origin::Create(GURL("https://a.test"));
 
   AggregatableReportRequest request =
       AggregatableReportRequest::Create(payload_contents,
@@ -1069,11 +1062,9 @@
   std::vector<uint8_t> proto = request.Serialize();
 
   // Change the allowlist between serializing and deserializing
-  scoped_feature_list.Reset();
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws2.example.test"},
-       {"gcp_cloud", "https://gcp2.example.test"}});
+  scoped_coordinator_allowlist.reset();
+  scoped_coordinator_allowlist.emplace(
+      {url::Origin::Create(GURL("https://b.test"))});
 
   // Expect the report to fail to be recreated.
   std::optional<AggregatableReportRequest> parsed_request =
@@ -1107,7 +1098,7 @@
 
   const char kExpectedJsonString[] =
       R"({)"
-      R"("aggregation_coordinator_origin":"https://aws.example.test",)"
+      R"("aggregation_coordinator_origin":"https://a.test",)"
       R"("shared_info":"example_shared_info")"
       R"(})";
   EXPECT_EQ(report_json_string, kExpectedJsonString);
@@ -1435,10 +1426,8 @@
       aggregation_service::CreateExampleRequest();
   EXPECT_THAT(
       request.processing_urls(),
-      ::testing::ElementsAre(
-          GetAggregationServiceProcessingUrl(url::Origin::Create(
-              GURL(::aggregation_service::kAggregationServiceCoordinatorAwsCloud
-                       .Get())))));
+      ::testing::ElementsAre(GetAggregationServiceProcessingUrl(
+          ::aggregation_service::GetDefaultAggregationCoordinatorOrigin())));
 }
 
 TEST_P(AggregatableReportTest, AggregationCoordinator_ProcessingUrlSet) {
@@ -1448,21 +1437,21 @@
   } kTestCases[] = {
       {
           std::nullopt,
-          {GURL("https://aws.example.test/.well-known/aggregation-service/v1/"
-                "public-keys")},
-      },
-      {
-          url::Origin::Create(GURL("https://aws.example.test")),
-          {GURL("https://aws.example.test/.well-known/aggregation-service/v1/"
-                "public-keys")},
-      },
-      {
-          url::Origin::Create(GURL("https://gcp.example.test")),
-          {GURL("https://gcp.example.test/.well-known/aggregation-service/v1/"
+          {GURL("https://a.test/.well-known/aggregation-service/v1/"
                 "public-keys")},
       },
       {
           url::Origin::Create(GURL("https://a.test")),
+          {GURL("https://a.test/.well-known/aggregation-service/v1/"
+                "public-keys")},
+      },
+      {
+          url::Origin::Create(GURL("https://b.test")),
+          {GURL("https://b.test/.well-known/aggregation-service/v1/"
+                "public-keys")},
+      },
+      {
+          url::Origin::Create(GURL("https://c.test")),
           {},
       },
   };
@@ -1502,11 +1491,6 @@
 }
 
 TEST_P(AggregatableReportTest, AggregationCoordinator_SetInReport) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"}});
-
   std::vector<AggregatableReport::AggregationServicePayload> payloads;
   payloads.emplace_back(/*payload=*/kABCD1234AsBytes,
                         /*key_id=*/"key_1",
@@ -1522,7 +1506,7 @@
 
   const char kExpectedJsonString[] =
       R"({)"
-      R"("aggregation_coordinator_origin":"https://aws.example.test",)"
+      R"("aggregation_coordinator_origin":"https://a.test",)"
       R"("aggregation_service_payloads":[)"
       R"({"key_id":"key_1","payload":"ABCD1234"})"
       R"(],)"
diff --git a/content/browser/aggregation_service/aggregation_service_storage_sql_unittest.cc b/content/browser/aggregation_service/aggregation_service_storage_sql_unittest.cc
index f699d0a..e71b48c 100644
--- a/content/browser/aggregation_service/aggregation_service_storage_sql_unittest.cc
+++ b/content/browser/aggregation_service/aggregation_service_storage_sql_unittest.cc
@@ -25,6 +25,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
 #include "base/time/time.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "components/aggregation_service/features.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
 #include "content/browser/aggregation_service/aggregation_service.h"
@@ -1301,10 +1302,9 @@
 
 TEST_F(AggregationServiceStorageSqlTest,
        StoreRequestWithCoordinatorOrigin_DeserializedWithOrigin) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://coordinator.example"}});
+  ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist(
+          {url::Origin::Create(GURL("https://coordinator.example"))});
 
   OpenDatabase();
 
@@ -1380,10 +1380,11 @@
 
   // Turning the feature on should not affect the report loading.
   scoped_feature_list.Reset();
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"},
-       {"gcp_cloud", "https://gcp.example.test"}});
+  scoped_feature_list.InitAndEnableFeature(
+      ::aggregation_service::kAggregationServiceMultipleCloudProviders);
+  ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist(
+          {url::Origin::Create(GURL("https://a.test"))});
 
   ASSERT_EQ(GetRequestsReportingOnOrBefore(base::Time::Max()).size(), 1u);
   EXPECT_FALSE(GetRequestsReportingOnOrBefore(base::Time::Max())[0]
@@ -1395,7 +1396,7 @@
   AggregationServicePayloadContents payload_contents =
       example_request.payload_contents();
   payload_contents.aggregation_coordinator_origin =
-      url::Origin::Create(GURL("https://aws.example.test"));
+      url::Origin::Create(GURL("https://a.test"));
 
   storage_->StoreRequest(
       AggregatableReportRequest::Create(payload_contents,
@@ -1407,7 +1408,7 @@
                 .aggregation_coordinator_origin.value()
                 .GetURL()
                 .spec(),
-            "https://aws.example.test/");
+            "https://a.test/");
 
   // Turning the feature off should also not affect the report loading.
   scoped_feature_list.Reset();
@@ -1426,7 +1427,7 @@
                 .aggregation_coordinator_origin.value()
                 .GetURL()
                 .spec(),
-            "https://aws.example.test/");
+            "https://a.test/");
   histograms_.ExpectTotalCount(
       "PrivacySandbox.AggregationService.Storage.Sql."
       "RequestDelayFromUpdatedReportTime2",
@@ -1435,11 +1436,13 @@
 
 TEST_F(AggregationServiceStorageSqlTest,
        AggregationCoordinatorAllowlistChanges_ReportDeleted) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"},
-       {"gcp_cloud", "https://gcp.example.test"}});
+  std::optional<
+      ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting>
+      scoped_coordinator_allowlist;
+
+  scoped_coordinator_allowlist.emplace(
+      {url::Origin::Create(GURL("https://a.test"))});
+
   OpenDatabase();
 
   AggregatableReportRequest example_request =
@@ -1448,7 +1451,7 @@
   AggregationServicePayloadContents payload_contents =
       example_request.payload_contents();
   payload_contents.aggregation_coordinator_origin =
-      url::Origin::Create(GURL("https://aws.example.test"));
+      url::Origin::Create(GURL("https://a.test"));
 
   storage_->StoreRequest(
       AggregatableReportRequest::Create(payload_contents,
@@ -1457,20 +1460,16 @@
   EXPECT_EQ(GetRequestsReportingOnOrBefore(base::Time::Max()).size(), 1u);
 
   // If the origin is removed from the allowlist, the report is dropped.
-  scoped_feature_list.Reset();
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws2.example.test"},
-       {"gcp_cloud", "https://gcp.example.test"}});
+  scoped_coordinator_allowlist.reset();
+  scoped_coordinator_allowlist.emplace(
+      {url::Origin::Create(GURL("https://b.test"))});
 
   EXPECT_TRUE(GetRequestsReportingOnOrBefore(base::Time::Max()).empty());
 
   // Check that the report is not just ignored, but actually deleted.
-  scoped_feature_list.Reset();
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"},
-       {"gcp_cloud", "https://gcp.example.test"}});
+  scoped_coordinator_allowlist.reset();
+  scoped_coordinator_allowlist.emplace(
+      {url::Origin::Create(GURL("https://a.test"))});
 
   EXPECT_TRUE(GetRequestsReportingOnOrBefore(base::Time::Max()).empty());
 
diff --git a/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc b/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc
index 8334a4f..cc1dbc30 100644
--- a/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc
+++ b/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc
@@ -14,7 +14,7 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/time/time.h"
 #include "base/values.h"
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "components/attribution_reporting/aggregatable_trigger_data.h"
 #include "components/attribution_reporting/aggregatable_values.h"
 #include "components/attribution_reporting/aggregation_keys.h"
@@ -304,8 +304,8 @@
 }
 
 TEST(AggregatableAttributionUtilsTest, AggregationCoordinatorSet) {
-  auto coordinator_origin = attribution_reporting::SuitableOrigin::Deserialize(
-      ::aggregation_service::kAggregationServiceCoordinatorAwsCloud.Get());
+  auto coordinator_origin = attribution_reporting::SuitableOrigin::Create(
+      ::aggregation_service::GetDefaultAggregationCoordinatorOrigin());
   AttributionReport report =
       ReportBuilder(AttributionInfoBuilder().Build(),
                     SourceBuilder().BuildStored())
diff --git a/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc b/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc
index 2d1de1db..98efea7 100644
--- a/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc
+++ b/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc
@@ -22,7 +22,7 @@
 #include "base/test/gmock_expected_support.h"
 #include "base/test/values_test_util.h"
 #include "base/time/time.h"
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "components/attribution_reporting/source_registration_time_config.mojom.h"
 #include "components/attribution_reporting/suitable_origin.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
@@ -84,14 +84,12 @@
     ASSERT_EQ(keyset.keys.size(), 1u);
 
     aggregation_service().SetPublicKeysForTesting(
-        GetAggregationServiceProcessingUrl(url::Origin::Create(
-            GURL(::aggregation_service::kAggregationServiceCoordinatorAwsCloud
-                     .Get()))),
+        GetAggregationServiceProcessingUrl(url::Origin::Create(GURL(
+            ::aggregation_service::kDefaultAggregationCoordinatorAwsCloud))),
         keyset);
     aggregation_service().SetPublicKeysForTesting(
-        GetAggregationServiceProcessingUrl(url::Origin::Create(
-            GURL(::aggregation_service::kAggregationServiceCoordinatorGcpCloud
-                     .Get()))),
+        GetAggregationServiceProcessingUrl(url::Origin::Create(GURL(
+            ::aggregation_service::kDefaultAggregationCoordinatorGcpCloud))),
         keyset);
 
     std::optional<std::vector<uint8_t>> private_key =
@@ -332,7 +330,7 @@
        VerifyGoldenReport) {
   const auto kGcpCoordinatorOrigin =
       *attribution_reporting::SuitableOrigin::Deserialize(
-          ::aggregation_service::kAggregationServiceCoordinatorGcpCloud.Get());
+          ::aggregation_service::kDefaultAggregationCoordinatorGcpCloud);
 
   struct {
     AttributionReport report;
diff --git a/content/browser/attribution_reporting/attribution_report_unittest.cc b/content/browser/attribution_reporting/attribution_report_unittest.cc
index c75c596f..113b074 100644
--- a/content/browser/attribution_reporting/attribution_report_unittest.cc
+++ b/content/browser/attribution_reporting/attribution_report_unittest.cc
@@ -10,11 +10,10 @@
 #include <string>
 
 #include "base/containers/flat_set.h"
-#include "base/test/scoped_feature_list.h"
 #include "base/test/values_test_util.h"
 #include "base/time/time.h"
 #include "base/values.h"
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "components/attribution_reporting/source_type.mojom.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
 #include "content/browser/aggregation_service/aggregation_service_test_utils.h"
@@ -293,13 +292,12 @@
 }
 
 TEST(AttributionReportTest, NullAggregatableReport) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"}});
+  ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist(
+          {url::Origin::Create(GURL("https://a.test"))});
 
   base::Value::Dict expected = base::test::ParseJsonDict(R"json({
-    "aggregation_coordinator_origin":"https://aws.example.test",
+    "aggregation_coordinator_origin":"https://a.test",
     "aggregation_service_payloads": [{
       "key_id": "key",
       "payload": "ABCD1234"
@@ -335,13 +333,12 @@
 }
 
 TEST(AttributionReportTest, ReportBody_AggregatableAttributionReport) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      ::aggregation_service::kAggregationServiceMultipleCloudProviders,
-      {{"aws_cloud", "https://aws.example.test"}});
+  ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist(
+          {url::Origin::Create(GURL("https://a.test"))});
 
   base::Value::Dict expected = base::test::ParseJsonDict(R"json({
-    "aggregation_coordinator_origin": "https://aws.example.test",
+    "aggregation_coordinator_origin": "https://a.test",
     "aggregation_service_payloads": [{
       "key_id": "key",
       "payload": "ABCD1234"
diff --git a/content/browser/private_aggregation/private_aggregation_host_unittest.cc b/content/browser/private_aggregation/private_aggregation_host_unittest.cc
index 733af37..749d83a3 100644
--- a/content/browser/private_aggregation/private_aggregation_host_unittest.cc
+++ b/content/browser/private_aggregation/private_aggregation_host_unittest.cc
@@ -23,7 +23,7 @@
 #include "base/time/clock.h"
 #include "base/time/time.h"
 #include "base/values.h"
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
 #include "content/browser/aggregation_service/aggregation_service_test_utils.h"
 #include "content/browser/private_aggregation/private_aggregation_budget_key.h"
@@ -871,12 +871,11 @@
 
 TEST_F(PrivateAggregationHostTest, AggregationCoordinatorOrigin) {
   base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeaturesAndParameters(
-      /*enabled_features=*/
-      {{::aggregation_service::kAggregationServiceMultipleCloudProviders,
-        {{"aws_cloud", "https://aws.example"}}},
-       {blink::features::kPrivateAggregationApiMultipleCloudProviders, {}}},
-      /*disabled_features=*/{});
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kPrivateAggregationApiMultipleCloudProviders);
+  ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist(
+          {url::Origin::Create(GURL("https://a.test"))});
 
   const url::Origin kExampleOrigin =
       url::Origin::Create(GURL("https://example.com"));
@@ -884,9 +883,9 @@
       url::Origin::Create(GURL("https://main_frame.com"));
 
   const url::Origin kValidCoordinatorOrigin =
-      url::Origin::Create(GURL("https://aws.example"));
+      url::Origin::Create(GURL("https://a.test"));
   const url::Origin kInvalidCoordinatorOrigin =
-      url::Origin::Create(GURL("https://unknown.example"));
+      url::Origin::Create(GURL("https://b.test"));
 
   const struct {
     const char* description;
@@ -955,12 +954,11 @@
 TEST_F(PrivateAggregationHostTest,
        AggregationCoordinatorOriginIgnoredIfFeatureDisabled) {
   base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitWithFeaturesAndParameters(
-      /*enabled_features=*/{{::aggregation_service::
-                                 kAggregationServiceMultipleCloudProviders,
-                             {{"aws_cloud", "https://aws.example"}}}},
-      /*disabled_features=*/{
-          blink::features::kPrivateAggregationApiMultipleCloudProviders});
+  scoped_feature_list.InitAndDisableFeature(
+      blink::features::kPrivateAggregationApiMultipleCloudProviders);
+  ::aggregation_service::ScopedAggregationCoordinatorAllowlistForTesting
+      scoped_coordinator_allowlist(
+          {url::Origin::Create(GURL("https://a.test"))});
 
   const url::Origin kExampleOrigin =
       url::Origin::Create(GURL("https://example.com"));
@@ -968,9 +966,9 @@
       url::Origin::Create(GURL("https://main_frame.com"));
 
   const url::Origin kValidCoordinatorOrigin =
-      url::Origin::Create(GURL("https://aws.example"));
+      url::Origin::Create(GURL("https://a.test"));
   const url::Origin kInvalidCoordinatorOrigin =
-      url::Origin::Create(GURL("https://unknown.example"));
+      url::Origin::Create(GURL("https://b.test"));
 
   const std::optional<url::Origin> kTestCases[] = {
       std::nullopt,
diff --git a/content/browser/private_aggregation/private_aggregation_report_golden_unittest.cc b/content/browser/private_aggregation/private_aggregation_report_golden_unittest.cc
index b2fa849..ab1657b 100644
--- a/content/browser/private_aggregation/private_aggregation_report_golden_unittest.cc
+++ b/content/browser/private_aggregation/private_aggregation_report_golden_unittest.cc
@@ -28,7 +28,7 @@
 #include "base/timer/elapsed_timer.h"
 #include "base/uuid.h"
 #include "base/values.h"
-#include "components/aggregation_service/features.h"
+#include "components/aggregation_service/aggregation_coordinator_utils.h"
 #include "content/browser/aggregation_service/aggregatable_report.h"
 #include "content/browser/aggregation_service/aggregation_service.h"
 #include "content/browser/aggregation_service/aggregation_service_features.h"
@@ -87,9 +87,8 @@
     ASSERT_EQ(keyset.keys.size(), 1u);
 
     aggregation_service().SetPublicKeysForTesting(
-        GetAggregationServiceProcessingUrl(url::Origin::Create(
-            GURL(::aggregation_service::kAggregationServiceCoordinatorAwsCloud
-                     .Get()))),
+        GetAggregationServiceProcessingUrl(
+            ::aggregation_service::GetDefaultAggregationCoordinatorOrigin()),
         std::move(keyset));
 
     std::optional<std::vector<uint8_t>> private_key =
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index c6d9150..463068be 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -200,7 +200,7 @@
     "bases": ["wpt_internal/attribution-reporting"],
     "exclusive_tests": "ALL",
     "args": ["--attribution-reporting-debug-mode",
-             "--enable-features=AttributionReportingCrossAppWeb,AttributionReportingReportVerification,PrivacySandboxAdsAPIsOverride,AggregationServiceMultipleCloudProviders:aws_cloud/https%3A%2F%2Fweb-platform.test%3A8444/gcp_cloud/https%3A%2F%2Fwww1.web-platform.test%3A8444",
+             "--enable-features=AttributionReportingCrossAppWeb,AttributionReportingReportVerification,PrivacySandboxAdsAPIsOverride,AggregationServiceMultipleCloudProviders:allowlist/https%3A%2F%2Fweb-platform%2Etest%3A8444%2Chttps%3A%2F%2Fwww1%2Eweb-platform%2Etest%3A8444",
              "--additional-private-state-token-key-commitments={\"https://web-platform.test:8444\":{\"PrivateStateTokenV3VOPRF\":{\"protocol_version\":\"PrivateStateTokenV3VOPRF\",\"id\":1,\"batchsize\":1,\"keys\":{\"0\":{\"Y\":\"AAAAAASqh8oivosFN46xxx7zIK10bh07Younm5hZ90HgglQqOFUC8l2/VSlsOlReOHJ2CrfJ6CG1adnTkKJhZ0BtbSPWBwviQtdl64MWJc7sSg9HPvWfTjDigX5ihbzihG8V8aA=\",\"expiry\":\"253402300799000000\"}}}}}",
              "--disable-threaded-compositing", "--disable-threaded-animation"],
     "expires": "May 30, 2024"
@@ -1845,7 +1845,7 @@
     ],
     "args": [
       "--enable-privacy-sandbox-ads-apis",
-      "--enable-features=FencedFramesDefaultMode,AggregationServiceMultipleCloudProviders:aws_cloud/https%3A%2F%2Fweb-platform.test%3A8444,FencedFramesEnforceFocus,PrivateAggregationAuctionReportBuyerDebugModeConfig",
+      "--enable-features=FencedFramesDefaultMode,AggregationServiceMultipleCloudProviders:allowlist/https%3A%2F%2Fweb-platform.test%3A8444,FencedFramesEnforceFocus,PrivateAggregationAuctionReportBuyerDebugModeConfig",
       "--disable-threaded-compositing", "--disable-threaded-animation"
     ],
     "expires": "Jul 1, 2024"
@@ -1862,7 +1862,7 @@
     "args": [
       "--enable-privacy-sandbox-ads-apis",
       "--private-aggregation-developer-mode",
-      "--enable-features=FencedFramesDefaultMode,AggregationServiceMultipleCloudProviders:aws_cloud/https%3A%2F%2Fweb-platform.test%3A8444/gcp_cloud/https%3A%2F%2Fwww1.web-platform.test%3A8444,PrivateAggregationApiBundledEnhancements,PrivateAggregationApiMultipleCloudProviders,PrivateAggregationAuctionReportBuyerDebugModeConfig",
+      "--enable-features=FencedFramesDefaultMode,AggregationServiceMultipleCloudProviders:allowlist/https%3A%2F%2Fweb-platform%2Etest%3A8444%2Chttps%3A%2F%2Fwww1%2Eweb-platform%2Etest%3A8444,PrivateAggregationApiBundledEnhancements,PrivateAggregationApiMultipleCloudProviders,PrivateAggregationAuctionReportBuyerDebugModeConfig",
       "--disable-threaded-compositing", "--disable-threaded-animation"
     ],
     "expires": "Jul 1, 2024"