1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
// 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 CHROMEOS_ASH_COMPONENTS_DBUS_DEVICE_MANAGEMENT_FAKE_INSTALL_ATTRIBUTES_CLIENT_H_
#define CHROMEOS_ASH_COMPONENTS_DBUS_DEVICE_MANAGEMENT_FAKE_INSTALL_ATTRIBUTES_CLIENT_H_
#include <cstdint>
#include <optional>
#include "base/component_export.h"
#include "chromeos/ash/components/dbus/device_management/device_management_interface.pb.h"
#include "chromeos/ash/components/dbus/device_management/install_attributes_client.h"
namespace ash {
class COMPONENT_EXPORT(DEVICE_MANAGEMENT_CLIENT) FakeInstallAttributesClient
: public InstallAttributesClient {
public:
FakeInstallAttributesClient();
~FakeInstallAttributesClient() override;
// Not copyable or movable.
FakeInstallAttributesClient(const FakeInstallAttributesClient&) = delete;
FakeInstallAttributesClient& operator=(const FakeInstallAttributesClient&) =
delete;
// Checks that a FakeInstallAttributesClient instance was initialized and
// returns it.
static FakeInstallAttributesClient* Get();
// InstallAttributesClient override:
void WaitForServiceToBeAvailable(
chromeos::WaitForServiceToBeAvailableCallback callback) override;
void InstallAttributesGet(
const ::device_management::InstallAttributesGetRequest& request,
InstallAttributesGetCallback callback) override;
void InstallAttributesFinalize(
const ::device_management::InstallAttributesFinalizeRequest& request,
InstallAttributesFinalizeCallback callback) override;
void InstallAttributesGetStatus(
const ::device_management::InstallAttributesGetStatusRequest& request,
InstallAttributesGetStatusCallback callback) override;
void RemoveFirmwareManagementParameters(
const ::device_management::RemoveFirmwareManagementParametersRequest&
request,
RemoveFirmwareManagementParametersCallback callback) override;
void SetFirmwareManagementParameters(
const ::device_management::SetFirmwareManagementParametersRequest& request,
SetFirmwareManagementParametersCallback callback) override;
void GetFirmwareManagementParameters(
const ::device_management::GetFirmwareManagementParametersRequest& request,
GetFirmwareManagementParametersCallback callback) override;
std::optional<::device_management::InstallAttributesGetReply>
BlockingInstallAttributesGet(
const ::device_management::InstallAttributesGetRequest& request) override;
std::optional<::device_management::InstallAttributesSetReply>
BlockingInstallAttributesSet(
const ::device_management::InstallAttributesSetRequest& request) override;
std::optional<::device_management::InstallAttributesFinalizeReply>
BlockingInstallAttributesFinalize(
const ::device_management::InstallAttributesFinalizeRequest& request)
override;
std::optional<::device_management::InstallAttributesGetStatusReply>
BlockingInstallAttributesGetStatus(
const ::device_management::InstallAttributesGetStatusRequest& request)
override;
// FWMP related:
// Return the number of times RemoveFirmwareManagementParameters is called.
int remove_firmware_management_parameters_from_tpm_call_count() const {
return remove_firmware_management_parameters_from_tpm_call_count_;
}
// WaitForServiceToBeAvailable() related:
// Changes the behavior of WaitForServiceToBeAvailable(). This method runs
// pending callbacks if is_available is true.
void SetServiceIsAvailable(bool is_available);
// Runs pending availability callbacks reporting that the service is
// unavailable. Expects service not to be available when called.
void ReportServiceIsNotAvailable();
private:
// Helper that returns the protobuf reply.
template <typename ReplyType>
void ReturnProtobufMethodCallback(
const ReplyType& reply,
chromeos::DBusMethodCallback<ReplyType> callback);
// Loads install attributes from the stub file.
bool LoadInstallAttributes();
// FWMP related:
// Firmware management parameters.
std::optional<uint32_t> fwmp_flags_;
// Number of times RemoveFirmwareManagementParameters() is called.
int remove_firmware_management_parameters_from_tpm_call_count_ = 0;
// Install attributes related:
// A stub store for InstallAttributes, mapping an attribute name to the
// associated data blob. Used to implement InstallAttributesSet and -Get.
std::map<std::string, std::string> install_attrs_;
// Set to true if install attributes are finalized.
bool locked_;
// WaitForServiceToBeAvailable() related fields:
// If set, we tell callers that service is available.
bool service_is_available_ = true;
// If set, WaitForServiceToBeAvailable will run the callback, even if service
// is not available (instead of adding the callback to pending callback list).
bool service_reported_not_available_ = false;
// The list of callbacks passed to WaitForServiceToBeAvailable when the
// service wasn't available.
std::vector<chromeos::WaitForServiceToBeAvailableCallback>
pending_wait_for_service_to_be_available_callbacks_;
};
} // namespace ash
#endif // CHROMEOS_ASH_COMPONENTS_DBUS_DEVICE_MANAGEMENT_FAKE_INSTALL_ATTRIBUTES_CLIENT_H_
|