chromium/chromeos/ash/components/telemetry_extension/common/telemetry_extension_converters.cc

// 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.

#include "chromeos/ash/components/telemetry_extension/common/telemetry_extension_converters.h"

#include <utility>

#include "base/notreached.h"
#include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd_exception.mojom.h"
#include "chromeos/crosapi/mojom/telemetry_extension_exception.mojom.h"

namespace ash::converters {

namespace unchecked {

crosapi::mojom::TelemetryExtensionExceptionPtr UncheckedConvertPtr(
    cros_healthd::mojom::ExceptionPtr input) {
  return crosapi::mojom::TelemetryExtensionException::New(
      Convert(input->reason), input->debug_message);
}

crosapi::mojom::TelemetryExtensionSupportedPtr UncheckedConvertPtr(
    cros_healthd::mojom::SupportedPtr input) {
  return crosapi::mojom::TelemetryExtensionSupported::New();
}

crosapi::mojom::TelemetryExtensionUnsupportedReasonPtr UncheckedConvertPtr(
    cros_healthd::mojom::UnsupportedReasonPtr input) {
  switch (input->which()) {
    case cros_healthd::mojom::UnsupportedReason::Tag::kUnmappedUnionField:
      return crosapi::mojom::TelemetryExtensionUnsupportedReason::
          NewUnmappedUnionField(input->get_unmapped_union_field());
  }
}

crosapi::mojom::TelemetryExtensionUnsupportedPtr UncheckedConvertPtr(
    cros_healthd::mojom::UnsupportedPtr input) {
  return crosapi::mojom::TelemetryExtensionUnsupported::New(
      input->debug_message, ConvertCommonPtr(std::move(input->reason)));
}

crosapi::mojom::TelemetryExtensionSupportStatusPtr UncheckedConvertPtr(
    cros_healthd::mojom::SupportStatusPtr input) {
  switch (input->which()) {
    case cros_healthd::mojom::SupportStatus::Tag::kUnmappedUnionField:
      return crosapi::mojom::TelemetryExtensionSupportStatus::
          NewUnmappedUnionField(input->get_unmapped_union_field());
    case cros_healthd::mojom::SupportStatus::Tag::kException:
      return crosapi::mojom::TelemetryExtensionSupportStatus::NewException(
          ConvertCommonPtr(std::move(input->get_exception())));
    case cros_healthd::mojom::SupportStatus::Tag::kSupported:
      return crosapi::mojom::TelemetryExtensionSupportStatus::NewSupported(
          ConvertCommonPtr(std::move(input->get_supported())));
    case cros_healthd::mojom::SupportStatus::Tag::kUnsupported:
      return crosapi::mojom::TelemetryExtensionSupportStatus::NewUnsupported(
          ConvertCommonPtr(std::move(input->get_unsupported())));
  }
}

}  // namespace unchecked

crosapi::mojom::TelemetryExtensionException::Reason Convert(
    cros_healthd::mojom::Exception::Reason input) {
  switch (input) {
    case cros_healthd::mojom::Exception::Reason::kUnmappedEnumField:
      return crosapi::mojom::TelemetryExtensionException::Reason::
          kUnmappedEnumField;
    case cros_healthd::mojom::Exception::Reason::kMojoDisconnectWithoutReason:
      return crosapi::mojom::TelemetryExtensionException::Reason::
          kMojoDisconnectWithoutReason;
    case cros_healthd::mojom::Exception::Reason::kUnexpected:
      return crosapi::mojom::TelemetryExtensionException::Reason::kUnexpected;
    case cros_healthd::mojom::Exception::Reason::kUnsupported:
      return crosapi::mojom::TelemetryExtensionException::Reason::kUnsupported;
    case cros_healthd::mojom::Exception::Reason::kCameraFrontendNotOpened:
      return crosapi::mojom::TelemetryExtensionException::Reason::
          kCameraFrontendNotOpened;
  }
  NOTREACHED();
}

}  // namespace ash::converters