blob: 52aafa54a04af18df722c677037af082fb3fb475 [file] [log] [blame]
/* Copyright 2021 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef HARDWARE_VERIFIER_HW_VERIFICATION_REPORT_GETTER_IMPL_H_
#define HARDWARE_VERIFIER_HW_VERIFICATION_REPORT_GETTER_IMPL_H_
#include <memory>
#include <optional>
#include <utility>
#include <base/strings/string_piece.h>
#include "hardware_verifier/hardware_verifier.pb.h"
#include "hardware_verifier/hw_verification_report_getter.h"
#include "hardware_verifier/hw_verification_spec_getter.h"
#include "hardware_verifier/probe_result_getter.h"
#include "hardware_verifier/verifier.h"
namespace hardware_verifier {
// The actual implementation to the |HwVerificationReportGetter|.
class HwVerificationReportGetterImpl : public HwVerificationReportGetter {
public:
HwVerificationReportGetterImpl();
HwVerificationReportGetterImpl(const HwVerificationReportGetterImpl&) =
delete;
HwVerificationReportGetterImpl& operator=(
const HwVerificationReportGetterImpl&) = delete;
std::optional<HwVerificationReport> Get(
const base::StringPiece& probe_result_file,
const base::StringPiece& hw_verification_spec_file,
ErrorCode* error_code) const override;
protected:
// This constructor is reserved only for testing.
explicit HwVerificationReportGetterImpl(
std::unique_ptr<ProbeResultGetter> pr_getter,
std::unique_ptr<HwVerificationSpecGetter> vs_getter,
std::unique_ptr<Verifier> verifier)
: pr_getter_(std::move(pr_getter)),
vs_getter_(std::move(vs_getter)),
verifier_(std::move(verifier)) {}
private:
std::unique_ptr<ProbeResultGetter> pr_getter_;
std::unique_ptr<HwVerificationSpecGetter> vs_getter_;
std::unique_ptr<Verifier> verifier_;
};
} // namespace hardware_verifier
#endif // HARDWARE_VERIFIER_HW_VERIFICATION_REPORT_GETTER_IMPL_H_