Minor optimization for source registration parsing

Parse fields that can fail first.

Bug: 1379009
Change-Id: Ida2556d4b537c6eb28dfcff67f7537de13bc0b31
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4031590
Reviewed-by: Andrew Paseltiner <apaseltiner@chromium.org>
Commit-Queue: Nan Lin <linnan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1072373}
diff --git a/components/attribution_reporting/source_registration.cc b/components/attribution_reporting/source_registration.cc
index 86cd048..1da4432 100644
--- a/components/attribution_reporting/source_registration.cc
+++ b/components/attribution_reporting/source_registration.cc
@@ -82,6 +82,20 @@
   SourceRegistration result(std::move(*destination),
                             std::move(reporting_origin));
 
+  base::expected<FilterData, SourceRegistrationError> filter_data =
+      FilterData::FromJSON(registration.Find("filter_data"));
+  if (!filter_data.has_value())
+    return base::unexpected(filter_data.error());
+
+  result.filter_data = std::move(*filter_data);
+
+  base::expected<AggregationKeys, SourceRegistrationError> aggregation_keys =
+      AggregationKeys::FromJSON(registration.Find("aggregation_keys"));
+  if (!aggregation_keys.has_value())
+    return base::unexpected(aggregation_keys.error());
+
+  result.aggregation_keys = std::move(*aggregation_keys);
+
   result.source_event_id =
       ParseUint64(registration, "source_event_id").value_or(0);
 
@@ -97,20 +111,6 @@
 
   result.debug_key = ParseUint64(registration, "debug_key");
 
-  base::expected<FilterData, SourceRegistrationError> filter_data =
-      FilterData::FromJSON(registration.Find("filter_data"));
-  if (!filter_data.has_value())
-    return base::unexpected(filter_data.error());
-
-  result.filter_data = std::move(*filter_data);
-
-  base::expected<AggregationKeys, SourceRegistrationError> aggregation_keys =
-      AggregationKeys::FromJSON(registration.Find("aggregation_keys"));
-  if (!aggregation_keys.has_value())
-    return base::unexpected(aggregation_keys.error());
-
-  result.aggregation_keys = std::move(*aggregation_keys);
-
   result.debug_reporting =
       registration.FindBool("debug_reporting").value_or(false);