[Segmentation] Check that validation messages only contain data after UKM approval
The input tensors may contain data before UKM approval. This CL
will verify that this doesn't happen.
Bug: 1327419
Change-Id: I30749e20f229fcc011c285d4900bd4f7a9a84771
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3655131
Commit-Queue: Min Qin <[email protected]>
Reviewed-by: Siddhartha S <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1005600}
diff --git a/components/segmentation_platform/internal/segmentation_ukm_helper.cc b/components/segmentation_platform/internal/segmentation_ukm_helper.cc
index e976700a..24bc080 100644
--- a/components/segmentation_platform/internal/segmentation_ukm_helper.cc
+++ b/components/segmentation_platform/internal/segmentation_ukm_helper.cc
@@ -8,10 +8,13 @@
#include "base/metrics/field_trial_params.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
+#include "base/time/clock.h"
+#include "components/segmentation_platform/internal/constants.h"
#include "components/segmentation_platform/internal/selection/segmentation_result_prefs.h"
#include "components/segmentation_platform/internal/stats.h"
#include "components/segmentation_platform/public/config.h"
#include "components/segmentation_platform/public/features.h"
+#include "components/segmentation_platform/public/local_state_helper.h"
#include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_recorder.h"
@@ -204,4 +207,14 @@
return base::bit_cast<int64_t>(static_cast<double>(f));
}
+// static
+bool SegmentationUkmHelper::AllowedToUploadData(
+ base::TimeDelta signal_storage_length,
+ base::Clock* clock) {
+ return LocalStateHelper::GetInstance().GetPrefTime(
+ kSegmentationUkmMostRecentAllowedTimeKey) +
+ signal_storage_length <
+ clock->Now();
+}
+
} // namespace segmentation_platform