blob: b2f02804bf2dbb5c28468066eb0ed1dae08a333d [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/extensions/telemetry/api/diagnostics_api_converters.h"
#include "base/notreached.h"
#include "chrome/common/chromeos/extensions/api/diagnostics.h"
#include "chromeos/crosapi/mojom/diagnostics_service.mojom.h"
namespace chromeos {
namespace converters {
namespace {
using MojoRoutineCommandType = crosapi::mojom::DiagnosticsRoutineCommandEnum;
using MojoRoutineStatus = ::crosapi::mojom::DiagnosticsRoutineStatusEnum;
using MojoRoutineType = ::crosapi::mojom::DiagnosticsRoutineEnum;
using MojoAcPowerStatusType = crosapi::mojom::DiagnosticsAcPowerStatusEnum;
using MojoRoutineUserMessageType =
crosapi::mojom::DiagnosticsRoutineUserMessageEnum;
using MojoDiskReadRoutineType =
crosapi::mojom::DiagnosticsDiskReadRoutineTypeEnum;
using MojoNvmeSelfTestType = crosapi::mojom::DiagnosticsNvmeSelfTestTypeEnum;
using RoutineCommandType = ::chromeos::api::os_diagnostics::RoutineCommandType;
using RoutineStatus = ::chromeos::api::os_diagnostics::RoutineStatus;
using RoutineType = ::chromeos::api::os_diagnostics::RoutineType;
using RoutineAcPowerStatusRoutineType =
::chromeos::api::os_diagnostics::AcPowerStatus;
using RoutineUserMessageType = ::chromeos::api::os_diagnostics::UserMessageType;
using RoutineDiskReadRoutineType =
::chromeos::api::os_diagnostics::DiskReadRoutineType;
using RoutineNvmeSelfTestRoutineType =
::chromeos::api::os_diagnostics::RunNvmeSelfTestRequest;
} // namespace
bool ConvertMojoRoutine(MojoRoutineType in, RoutineType* out) {
DCHECK(out);
switch (in) {
case MojoRoutineType::kAcPower:
*out = RoutineType::ROUTINE_TYPE_AC_POWER;
return true;
case MojoRoutineType::kBatteryCapacity:
*out = RoutineType::ROUTINE_TYPE_BATTERY_CAPACITY;
return true;
case MojoRoutineType::kBatteryCharge:
*out = RoutineType::ROUTINE_TYPE_BATTERY_CHARGE;
return true;
case MojoRoutineType::kBatteryDischarge:
*out = RoutineType::ROUTINE_TYPE_BATTERY_DISCHARGE;
return true;
case MojoRoutineType::kBatteryHealth:
*out = RoutineType::ROUTINE_TYPE_BATTERY_HEALTH;
return true;
case MojoRoutineType::kCpuCache:
*out = RoutineType::ROUTINE_TYPE_CPU_CACHE;
return true;
case MojoRoutineType::kFloatingPointAccuracy:
*out = RoutineType::ROUTINE_TYPE_CPU_FLOATING_POINT_ACCURACY;
return true;
case MojoRoutineType::kPrimeSearch:
*out = RoutineType::ROUTINE_TYPE_CPU_PRIME_SEARCH;
return true;
case MojoRoutineType::kCpuStress:
*out = RoutineType::ROUTINE_TYPE_CPU_STRESS;
return true;
case MojoRoutineType::kDiskRead:
*out = RoutineType::ROUTINE_TYPE_DISK_READ;
return true;
case MojoRoutineType::kDnsResolution:
*out = RoutineType::ROUTINE_TYPE_DNS_RESOLUTION;
return true;
case MojoRoutineType::kDnsResolverPresent:
*out = RoutineType::ROUTINE_TYPE_DNS_RESOLVER_PRESENT;
return true;
case MojoRoutineType::kLanConnectivity:
*out = RoutineType::ROUTINE_TYPE_LAN_CONNECTIVITY;
return true;
case MojoRoutineType::kMemory:
*out = RoutineType::ROUTINE_TYPE_MEMORY;
return true;
case MojoRoutineType::kNvmeWearLevel:
*out = RoutineType::ROUTINE_TYPE_NVME_WEAR_LEVEL;
return true;
case MojoRoutineType::kSignalStrength:
*out = RoutineType::ROUTINE_TYPE_SIGNAL_STRENGTH;
return true;
case MojoRoutineType::kGatewayCanBePinged:
*out = RoutineType::ROUTINE_TYPE_GATEWAY_CAN_BE_PINGED;
return true;
case MojoRoutineType::kSmartctlCheck:
*out = RoutineType::ROUTINE_TYPE_SMARTCTL_CHECK;
return true;
case MojoRoutineType::kSensitiveSensor:
*out = RoutineType::ROUTINE_TYPE_SENSITIVE_SENSOR;
return true;
case MojoRoutineType::kNvmeSelfTest:
*out = RoutineType::ROUTINE_TYPE_NVME_SELF_TEST;
return true;
case MojoRoutineType::kFingerprintAlive:
*out = RoutineType::ROUTINE_TYPE_FINGERPRINT_ALIVE;
return true;
case MojoRoutineType::kSmartctlCheckWithPercentageUsed:
*out = RoutineType::ROUTINE_TYPE_SMARTCTL_CHECK_WITH_PERCENTAGE_USED;
return true;
case MojoRoutineType::kEmmcLifetime:
*out = RoutineType::ROUTINE_TYPE_EMMC_LIFETIME;
return true;
default:
return false;
}
}
RoutineStatus ConvertRoutineStatus(MojoRoutineStatus status) {
switch (status) {
case MojoRoutineStatus::kUnknown:
return RoutineStatus::ROUTINE_STATUS_UNKNOWN;
case MojoRoutineStatus::kReady:
return RoutineStatus::ROUTINE_STATUS_READY;
case MojoRoutineStatus::kRunning:
return RoutineStatus::ROUTINE_STATUS_RUNNING;
case MojoRoutineStatus::kWaiting:
return RoutineStatus::ROUTINE_STATUS_WAITING_USER_ACTION;
case MojoRoutineStatus::kPassed:
return RoutineStatus::ROUTINE_STATUS_PASSED;
case MojoRoutineStatus::kFailed:
return RoutineStatus::ROUTINE_STATUS_FAILED;
case MojoRoutineStatus::kError:
return RoutineStatus::ROUTINE_STATUS_ERROR;
case MojoRoutineStatus::kCancelled:
return RoutineStatus::ROUTINE_STATUS_CANCELLED;
case MojoRoutineStatus::kFailedToStart:
return RoutineStatus::ROUTINE_STATUS_FAILED_TO_START;
case MojoRoutineStatus::kRemoved:
return RoutineStatus::ROUTINE_STATUS_REMOVED;
case MojoRoutineStatus::kCancelling:
return RoutineStatus::ROUTINE_STATUS_CANCELLING;
case MojoRoutineStatus::kUnsupported:
return RoutineStatus::ROUTINE_STATUS_UNSUPPORTED;
case MojoRoutineStatus::kNotRun:
return RoutineStatus::ROUTINE_STATUS_NOT_RUN;
}
}
MojoRoutineCommandType ConvertRoutineCommand(RoutineCommandType commandType) {
switch (commandType) {
case RoutineCommandType::ROUTINE_COMMAND_TYPE_CANCEL:
return MojoRoutineCommandType::kCancel;
case RoutineCommandType::ROUTINE_COMMAND_TYPE_REMOVE:
return MojoRoutineCommandType::kRemove;
case RoutineCommandType::ROUTINE_COMMAND_TYPE_RESUME:
return MojoRoutineCommandType::kContinue;
case RoutineCommandType::ROUTINE_COMMAND_TYPE_STATUS:
return MojoRoutineCommandType::kGetStatus;
case RoutineCommandType::ROUTINE_COMMAND_TYPE_NONE:
break;
}
NOTREACHED() << "Unknown command type: " << commandType;
return static_cast<MojoRoutineCommandType>(
static_cast<int>(MojoRoutineCommandType::kMaxValue) + 1);
}
MojoAcPowerStatusType ConvertAcPowerStatusRoutineType(
RoutineAcPowerStatusRoutineType routineType) {
switch (routineType) {
case RoutineAcPowerStatusRoutineType::AC_POWER_STATUS_CONNECTED:
return MojoAcPowerStatusType::kConnected;
case RoutineAcPowerStatusRoutineType::AC_POWER_STATUS_DISCONNECTED:
return MojoAcPowerStatusType::kDisconnected;
case RoutineAcPowerStatusRoutineType::AC_POWER_STATUS_NONE:
break;
}
NOTREACHED() << "Unknown ac power status routine type: " << routineType;
return static_cast<MojoAcPowerStatusType>(
static_cast<int>(MojoAcPowerStatusType::kMaxValue) + 1);
}
RoutineUserMessageType ConvertRoutineUserMessage(
MojoRoutineUserMessageType userMessage) {
switch (userMessage) {
case MojoRoutineUserMessageType::kUnknown:
return RoutineUserMessageType::USER_MESSAGE_TYPE_UNKNOWN;
case MojoRoutineUserMessageType::kUnplugACPower:
return RoutineUserMessageType::USER_MESSAGE_TYPE_UNPLUG_AC_POWER;
case MojoRoutineUserMessageType::kPlugInACPower:
return RoutineUserMessageType::USER_MESSAGE_TYPE_PLUG_IN_AC_POWER;
}
}
MojoDiskReadRoutineType ConvertDiskReadRoutineType(
RoutineDiskReadRoutineType routineType) {
switch (routineType) {
case RoutineDiskReadRoutineType::DISK_READ_ROUTINE_TYPE_LINEAR:
return MojoDiskReadRoutineType::kLinearRead;
case RoutineDiskReadRoutineType::DISK_READ_ROUTINE_TYPE_RANDOM:
return MojoDiskReadRoutineType::kRandomRead;
case RoutineDiskReadRoutineType::DISK_READ_ROUTINE_TYPE_NONE:
break;
}
NOTREACHED() << "Unknown disk read routine type: " << routineType;
return static_cast<MojoDiskReadRoutineType>(
static_cast<int>(MojoDiskReadRoutineType::kMaxValue) + 1);
}
MojoNvmeSelfTestType ConvertNvmeSelfTestRoutineType(
RoutineNvmeSelfTestRoutineType routine_type) {
switch (routine_type.test_type) {
case api::os_diagnostics::NVME_SELF_TEST_TYPE_NONE:
return MojoNvmeSelfTestType::kUnknown;
case api::os_diagnostics::NVME_SELF_TEST_TYPE_SHORT_TEST:
return MojoNvmeSelfTestType::kShortSelfTest;
case api::os_diagnostics::NVME_SELF_TEST_TYPE_LONG_TEST:
return MojoNvmeSelfTestType::kLongSelfTest;
}
}
} // namespace converters
} // namespace chromeos