blob: 4b12eef5ff5f6c9205fca63f68970df033644080 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_METRICS_STRUCTURED_KEY_DATA_PROVIDER_CHROME_H_
#define CHROME_BROWSER_METRICS_STRUCTURED_KEY_DATA_PROVIDER_CHROME_H_
#include <string>
#include "components/metrics/structured/key_data_provider_prefs.h"
#include "components/metrics/structured/lib/key_data_provider.h"
#include "components/metrics/structured/lib/proto/key.pb.h"
class PrefRegistrySimple;
class PrefService;
namespace metrics::structured {
// Implementation of KeyDataProvider for Chrome platforms.
//
// Currently, only device keys are supported due to the current use case only
// needing device id's.
class KeyDataProviderChrome : public KeyDataProvider {
public:
explicit KeyDataProviderChrome(PrefService* local_state);
KeyDataProviderChrome(const KeyDataProviderChrome&) = delete;
KeyDataProviderChrome& operator=(const KeyDataProviderChrome&) = delete;
~KeyDataProviderChrome() override;
// KeyDataProvider:
bool IsReady() override;
std::optional<uint64_t> GetId(const std::string& project_name) override;
KeyData* GetKeyData(const std::string& project_name) override;
void Purge() override;
static void RegisterLocalState(PrefRegistrySimple* registry);
private:
KeyDataProviderPrefs device_key_;
};
} // namespace metrics::structured
#endif // CHROME_BROWSER_METRICS_STRUCTURED_KEY_DATA_PROVIDER_CHROME_H_