blob: 88706138078b0c60e952d860dcd48e5d8c619383 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_METRICS_STRUCTURED_TEST_TEST_KEY_DATA_PROVIDER_H_
#define COMPONENTS_METRICS_STRUCTURED_TEST_TEST_KEY_DATA_PROVIDER_H_
#include <memory>
#include <optional>
#include <string>
#include "base/functional/callback_forward.h"
#include "components/metrics/structured/key_data_provider.h"
namespace base {
class FilePath;
}
namespace metrics::structured {
// Test implementation for KeyDataProvider.
//
// If only the |device_key_path| is provided in the ctor, then
// |profile_key_data_| will be empty until InitializeProfileKey is called and
// created in specified path |profile_path|. If |profile_key_path| is provided
// in the ctor, then |profile_path| provided in InitializeProfileKey will be
// ignored.
class TestKeyDataProvider : public KeyDataProvider, KeyDataProvider::Observer {
public:
explicit TestKeyDataProvider(const base::FilePath& device_key_path);
TestKeyDataProvider(const base::FilePath& device_key_path,
const base::FilePath& profile_key_path);
~TestKeyDataProvider() override;
// KeyDataProvider:
bool IsReady() override;
std::optional<uint64_t> GetId(const std::string& project_name) override;
std::optional<uint64_t> GetSecondaryId(
const std::string& project_name) override;
KeyData* GetKeyData(const std::string& project_name) override;
void OnProfileAdded(const base::FilePath& profile_path) override;
void Purge() override;
// KeyDataProvider::Observer
void OnKeyReady() override;
private:
base::FilePath device_key_path_;
base::FilePath profile_key_path_;
std::unique_ptr<KeyDataProvider> device_key_data_;
std::unique_ptr<KeyDataProvider> profile_key_data_;
};
} // namespace metrics::structured
#endif // COMPONENTS_METRICS_STRUCTURED_TEST_TEST_KEY_DATA_PROVIDER_H_