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)17KeyDataProviderPrefs::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()24bool KeyDataProviderPrefs::IsReady() { 25 return true; 26 } 27 GetId(const std::string & project_name)28std::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)42KeyData* KeyDataProviderPrefs::GetKeyData(const std::string& project_name) { 43 return &key_data_; 44 } 45 Purge()46void KeyDataProviderPrefs::Purge() { 47 key_data_.Purge(); 48 } 49 50 } // namespace metrics::structured 51