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);