• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2024 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/metrics/structured/key_data_provider_prefs.h"
6 
7 #include <memory>
8 #include <optional>
9 #include <string_view>
10 
11 #include "base/time/time.h"
12 #include "components/metrics/structured/key_data_prefs_delegate.h"
13 #include "components/metrics/structured/structured_metrics_validator.h"
14 
15 namespace metrics::structured {
16 
KeyDataProviderPrefs(PrefService * local_state,std::string_view pref_name)17 KeyDataProviderPrefs::KeyDataProviderPrefs(PrefService* local_state,
18                                            std::string_view pref_name)
19     : key_data_(
20           std::make_unique<KeyDataPrefsDelegate>(local_state, pref_name)) {}
21 
22 KeyDataProviderPrefs::~KeyDataProviderPrefs() = default;
23 
IsReady()24 bool KeyDataProviderPrefs::IsReady() {
25   return true;
26 }
27 
GetId(const std::string & project_name)28 std::optional<uint64_t> KeyDataProviderPrefs::GetId(
29     const std::string& project_name) {
30   // Validates the project. If valid, retrieve the metadata associated
31   // with the event.
32   const auto* project_validator =
33       validator::Validators::Get()->GetProjectValidator(project_name);
34 
35   if (!project_validator) {
36     return std::nullopt;
37   }
38   return key_data_.Id(project_validator->project_hash(),
39                       base::Days(project_validator->key_rotation_period()));
40 }
41 
GetKeyData(const std::string & project_name)42 KeyData* KeyDataProviderPrefs::GetKeyData(const std::string& project_name) {
43   return &key_data_;
44 }
45 
Purge()46 void KeyDataProviderPrefs::Purge() {
47   key_data_.Purge();
48 }
49 
50 }  // namespace metrics::structured
51