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 #ifndef COMPONENTS_METRICS_STRUCTURED_KEY_DATA_PROVIDER_PREFS_H_ 6 #define COMPONENTS_METRICS_STRUCTURED_KEY_DATA_PROVIDER_PREFS_H_ 7 8 #include <optional> 9 #include <string_view> 10 11 #include "components/metrics/structured/lib/key_data.h" 12 #include "components/metrics/structured/lib/key_data_provider.h" 13 #include "components/prefs/pref_service.h" 14 15 namespace metrics::structured { 16 17 // KeyDataProvider implementation that stores the keys in a preferences. 18 class KeyDataProviderPrefs : public KeyDataProvider { 19 public: 20 KeyDataProviderPrefs(PrefService* local_state, std::string_view pref_name); 21 22 ~KeyDataProviderPrefs() override; 23 24 // KeyDataProvider: 25 bool IsReady() override; 26 std::optional<uint64_t> GetId(const std::string& project_name) override; 27 KeyData* GetKeyData(const std::string& project_name) override; 28 void Purge() override; 29 30 private: 31 KeyData key_data_; 32 }; 33 } // namespace metrics::structured 34 35 #endif // COMPONENTS_METRICS_STRUCTURED_KEY_DATA_PROVIDER_PREFS_H_ 36