// Copyright 2022 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 CHAPS_CHAPS_METRICS_H_
#define CHAPS_CHAPS_METRICS_H_

#include <string>

#include <base/time/time.h>
#include <metrics/metrics_library.h>

namespace chaps {

inline constexpr char kReinitializingToken[] =
    "Platform.Chaps.ReinitializingToken";

inline constexpr char kTPMAvailability[] = "Platform.Chaps.TPMAvailability";

inline constexpr char kDatabaseCorrupted[] = "Chaps.DatabaseCorrupted";

inline constexpr char kDatabaseRepairFailure[] = "Chaps.DatabaseRepairFailure";

inline constexpr char kDatabaseCreateFailure[] = "Chaps.DatabaseCreateFailure";

inline constexpr char kDatabaseOpenedSuccessfully[] =
    "Chaps.DatabaseOpenedSuccessfully";

inline constexpr char kDatabaseOpenAttempt[] = "Chaps.DatabaseOpenAttempt";

// List of reasons to initializing token. These entries
// should not be renumbered and numeric values should never be reused.
// These values are persisted to logs.
enum class ReinitializingTokenStatus {
  kFailedToUnseal = 0,
  kBadAuthorizationData = 1,
  kFailedToDecryptRootKey = 2,
  kFailedToValidate = 3,
  kMaxValue
};

// The TPM availability status. These entries
// should not be renumbered and numeric values should never be reused.
// These values are persisted to logs.
enum class TPMAvailabilityStatus {
  kTPMAvailable = 0,
  kTPMUnavailable = 1,
  kMaxValue
};

// This class provides wrapping functions for callers to report Chaps related
// metrics without bothering to know all the constant declarations.
class ChapsMetrics : private MetricsLibrary {
 public:
  ChapsMetrics() = default;
  ChapsMetrics(const ChapsMetrics&) = delete;
  ChapsMetrics& operator=(const ChapsMetrics&) = delete;

  virtual ~ChapsMetrics() = default;

  // The |status| value is reported to the
  // "Platform.Chaps.ReinitializingToken" enum histogram.
  virtual void ReportReinitializingTokenStatus(
      ReinitializingTokenStatus status);

  // The |status| value is reported to the "Platform.Chaps.TPMAvailability" enum
  // histogram.
  virtual void ReportTPMAvailabilityStatus(TPMAvailabilityStatus status);

  // Cros events are translated to an enum and reported to the generic
  // "Platform.CrOSEvent" enum histogram. The |event| string must be registered
  // in metrics/metrics_library.cc:kCrosEventNames.
  virtual void ReportCrosEvent(const std::string& event);

  void set_metrics_library_for_testing(
      MetricsLibraryInterface* metrics_library) {
    metrics_library_ = metrics_library;
  }

 private:
  MetricsLibraryInterface* metrics_library_{this};
};

}  // namespace chaps

#endif  // CHAPS_CHAPS_METRICS_H_
