#ifndef CHROMEOS_DBUS_TPM_MANAGER_TPM_MANAGER_CLIENT_H_
#define CHROMEOS_DBUS_TPM_MANAGER_TPM_MANAGER_CLIENT_H_
#include "base/component_export.h"
#include "base/functional/callback.h"
#include "base/observer_list_types.h"
#include "chromeos/dbus/tpm_manager/tpm_manager.pb.h"
namespace dbus {
class Bus;
}
namespace chromeos {
class COMPONENT_EXPORT(CHROMEOS_DBUS_TPM_MANAGER) TpmManagerClient {
public:
class Observer : public base::CheckedObserver {
public:
virtual void OnOwnershipTaken() = 0;
};
public:
using GetTpmNonsensitiveStatusCallback = base::OnceCallback<void(
const ::tpm_manager::GetTpmNonsensitiveStatusReply&)>;
using GetVersionInfoCallback =
base::OnceCallback<void(const ::tpm_manager::GetVersionInfoReply&)>;
using GetSupportedFeaturesCallback =
base::OnceCallback<void(const ::tpm_manager::GetSupportedFeaturesReply&)>;
using GetDictionaryAttackInfoCallback = base::OnceCallback<void(
const ::tpm_manager::GetDictionaryAttackInfoReply&)>;
using TakeOwnershipCallback =
base::OnceCallback<void(const ::tpm_manager::TakeOwnershipReply&)>;
using ClearStoredOwnerPasswordCallback = base::OnceCallback<void(
const ::tpm_manager::ClearStoredOwnerPasswordReply&)>;
using ClearTpmCallback =
base::OnceCallback<void(const ::tpm_manager::ClearTpmReply&)>;
class TestInterface {
public:
virtual ::tpm_manager::GetTpmNonsensitiveStatusReply*
mutable_nonsensitive_status_reply() = 0;
virtual void set_non_nonsensitive_status_dbus_error_count(int count) = 0;
virtual ::tpm_manager::GetVersionInfoReply*
mutable_version_info_reply() = 0;
virtual ::tpm_manager::GetSupportedFeaturesReply*
mutable_supported_features_reply() = 0;
virtual ::tpm_manager::GetDictionaryAttackInfoReply*
mutable_dictionary_attack_info_reply() = 0;
virtual int take_ownership_count() const = 0;
virtual int clear_stored_owner_password_count() const = 0;
virtual int clear_tpm_count() const = 0;
virtual void EmitOwnershipTakenSignal() = 0;
};
TpmManagerClient(const TpmManagerClient&) = delete;
TpmManagerClient& operator=(const TpmManagerClient&) = delete;
TpmManagerClient(TpmManagerClient&&) = delete;
TpmManagerClient& operator=(TpmManagerClient&&) = delete;
static void Initialize(dbus::Bus* bus);
static void InitializeFake();
static void Shutdown();
static TpmManagerClient* Get();
virtual void GetTpmNonsensitiveStatus(
const ::tpm_manager::GetTpmNonsensitiveStatusRequest& request,
GetTpmNonsensitiveStatusCallback callback) = 0;
virtual void GetVersionInfo(
const ::tpm_manager::GetVersionInfoRequest& request,
GetVersionInfoCallback callback) = 0;
virtual void GetSupportedFeatures(
const ::tpm_manager::GetSupportedFeaturesRequest& request,
GetSupportedFeaturesCallback callback) = 0;
virtual void GetDictionaryAttackInfo(
const ::tpm_manager::GetDictionaryAttackInfoRequest& request,
GetDictionaryAttackInfoCallback callback) = 0;
virtual void TakeOwnership(const ::tpm_manager::TakeOwnershipRequest& request,
TakeOwnershipCallback callback) = 0;
virtual void ClearStoredOwnerPassword(
const ::tpm_manager::ClearStoredOwnerPasswordRequest& request,
ClearStoredOwnerPasswordCallback callback) = 0;
virtual void ClearTpm(const ::tpm_manager::ClearTpmRequest& request,
ClearTpmCallback callback) = 0;
virtual void AddObserver(Observer* observer) = 0;
virtual void RemoveObserver(Observer* observer) = 0;
virtual TestInterface* GetTestInterface() = 0;
protected:
TpmManagerClient();
virtual ~TpmManagerClient();
};
}
#endif