1 // Copyright 2020 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chromeos/components/telemetry_extension_ui/diagnostics_service_converters.h" 6 7 #include "base/notreached.h" 8 #include "base/optional.h" 9 #include "chrome/browser/chromeos/wilco_dtc_supportd/mojo_utils.h" 10 #include "chromeos/components/telemetry_extension_ui/convert_ptr.h" 11 #include "chromeos/components/telemetry_extension_ui/mojom/diagnostics_service.mojom.h" 12 #include "chromeos/services/cros_healthd/public/mojom/cros_healthd_diagnostics.mojom.h" 13 14 namespace chromeos { 15 namespace converters { 16 17 namespace unchecked { 18 19 namespace { 20 GetStringFromMojoHandle(mojo::ScopedHandle handle)21std::string GetStringFromMojoHandle(mojo::ScopedHandle handle) { 22 base::ReadOnlySharedMemoryMapping shared_memory; 23 return MojoUtils::GetStringPieceFromMojoHandle(std::move(handle), 24 &shared_memory) 25 .as_string(); 26 } 27 28 } // namespace 29 UncheckedConvertPtr(cros_healthd::mojom::RoutineUpdatePtr input)30health::mojom::RoutineUpdatePtr UncheckedConvertPtr( 31 cros_healthd::mojom::RoutineUpdatePtr input) { 32 return health::mojom::RoutineUpdate::New( 33 input->progress_percent, 34 GetStringFromMojoHandle(std::move(input->output)), 35 ConvertPtr(std::move(input->routine_update_union))); 36 } 37 UncheckedConvertPtr(cros_healthd::mojom::RoutineUpdateUnionPtr input)38health::mojom::RoutineUpdateUnionPtr UncheckedConvertPtr( 39 cros_healthd::mojom::RoutineUpdateUnionPtr input) { 40 switch (input->which()) { 41 case cros_healthd::mojom::RoutineUpdateUnion::Tag::INTERACTIVE_UPDATE: 42 return health::mojom::RoutineUpdateUnion::NewInteractiveUpdate( 43 ConvertPtr(std::move(input->get_interactive_update()))); 44 case cros_healthd::mojom::RoutineUpdateUnion::Tag::NONINTERACTIVE_UPDATE: 45 return health::mojom::RoutineUpdateUnion::NewNoninteractiveUpdate( 46 ConvertPtr(std::move(input->get_noninteractive_update()))); 47 } 48 } 49 UncheckedConvertPtr(cros_healthd::mojom::InteractiveRoutineUpdatePtr input)50health::mojom::InteractiveRoutineUpdatePtr UncheckedConvertPtr( 51 cros_healthd::mojom::InteractiveRoutineUpdatePtr input) { 52 return health::mojom::InteractiveRoutineUpdate::New( 53 Convert(input->user_message)); 54 } 55 UncheckedConvertPtr(cros_healthd::mojom::NonInteractiveRoutineUpdatePtr input)56health::mojom::NonInteractiveRoutineUpdatePtr UncheckedConvertPtr( 57 cros_healthd::mojom::NonInteractiveRoutineUpdatePtr input) { 58 return health::mojom::NonInteractiveRoutineUpdate::New( 59 Convert(input->status), std::move(input->status_message)); 60 } 61 UncheckedConvertPtr(cros_healthd::mojom::RunRoutineResponsePtr input)62health::mojom::RunRoutineResponsePtr UncheckedConvertPtr( 63 cros_healthd::mojom::RunRoutineResponsePtr input) { 64 return health::mojom::RunRoutineResponse::New(input->id, 65 Convert(input->status)); 66 } 67 68 } // namespace unchecked 69 Convert(cros_healthd::mojom::DiagnosticRoutineEnum input)70base::Optional<health::mojom::DiagnosticRoutineEnum> Convert( 71 cros_healthd::mojom::DiagnosticRoutineEnum input) { 72 switch (input) { 73 case cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryCapacity: 74 return health::mojom::DiagnosticRoutineEnum::kBatteryCapacity; 75 case cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryHealth: 76 return health::mojom::DiagnosticRoutineEnum::kBatteryHealth; 77 case cros_healthd::mojom::DiagnosticRoutineEnum::kSmartctlCheck: 78 return health::mojom::DiagnosticRoutineEnum::kSmartctlCheck; 79 case cros_healthd::mojom::DiagnosticRoutineEnum::kAcPower: 80 return health::mojom::DiagnosticRoutineEnum::kAcPower; 81 case cros_healthd::mojom::DiagnosticRoutineEnum::kCpuCache: 82 return health::mojom::DiagnosticRoutineEnum::kCpuCache; 83 case cros_healthd::mojom::DiagnosticRoutineEnum::kCpuStress: 84 return health::mojom::DiagnosticRoutineEnum::kCpuStress; 85 case cros_healthd::mojom::DiagnosticRoutineEnum::kFloatingPointAccuracy: 86 return health::mojom::DiagnosticRoutineEnum::kFloatingPointAccuracy; 87 case cros_healthd::mojom::DiagnosticRoutineEnum::kNvmeWearLevel: 88 return health::mojom::DiagnosticRoutineEnum::kNvmeWearLevel; 89 case cros_healthd::mojom::DiagnosticRoutineEnum::kNvmeSelfTest: 90 return health::mojom::DiagnosticRoutineEnum::kNvmeSelfTest; 91 case cros_healthd::mojom::DiagnosticRoutineEnum::kDiskRead: 92 return health::mojom::DiagnosticRoutineEnum::kDiskRead; 93 case cros_healthd::mojom::DiagnosticRoutineEnum::kPrimeSearch: 94 return health::mojom::DiagnosticRoutineEnum::kPrimeSearch; 95 case cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryDischarge: 96 return health::mojom::DiagnosticRoutineEnum::kBatteryDischarge; 97 case cros_healthd::mojom::DiagnosticRoutineEnum::kBatteryCharge: 98 return health::mojom::DiagnosticRoutineEnum::kBatteryCharge; 99 default: 100 return base::nullopt; 101 } 102 } 103 Convert(const std::vector<cros_healthd::mojom::DiagnosticRoutineEnum> & input)104std::vector<health::mojom::DiagnosticRoutineEnum> Convert( 105 const std::vector<cros_healthd::mojom::DiagnosticRoutineEnum>& input) { 106 std::vector<health::mojom::DiagnosticRoutineEnum> output; 107 for (const auto element : input) { 108 base::Optional<health::mojom::DiagnosticRoutineEnum> converted = 109 Convert(element); 110 if (converted.has_value()) { 111 output.push_back(converted.value()); 112 } 113 } 114 return output; 115 } 116 Convert(cros_healthd::mojom::DiagnosticRoutineUserMessageEnum input)117health::mojom::DiagnosticRoutineUserMessageEnum Convert( 118 cros_healthd::mojom::DiagnosticRoutineUserMessageEnum input) { 119 switch (input) { 120 case cros_healthd::mojom::DiagnosticRoutineUserMessageEnum::kUnplugACPower: 121 return health::mojom::DiagnosticRoutineUserMessageEnum::kUnplugACPower; 122 case cros_healthd::mojom::DiagnosticRoutineUserMessageEnum::kPlugInACPower: 123 return health::mojom::DiagnosticRoutineUserMessageEnum::kPlugInACPower; 124 } 125 NOTREACHED(); 126 return static_cast<health::mojom::DiagnosticRoutineUserMessageEnum>( 127 static_cast<int>( 128 health::mojom::DiagnosticRoutineUserMessageEnum::kMaxValue) + 129 1); 130 } 131 Convert(cros_healthd::mojom::DiagnosticRoutineStatusEnum input)132health::mojom::DiagnosticRoutineStatusEnum Convert( 133 cros_healthd::mojom::DiagnosticRoutineStatusEnum input) { 134 switch (input) { 135 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kReady: 136 return health::mojom::DiagnosticRoutineStatusEnum::kReady; 137 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kRunning: 138 return health::mojom::DiagnosticRoutineStatusEnum::kRunning; 139 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kWaiting: 140 return health::mojom::DiagnosticRoutineStatusEnum::kWaiting; 141 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kPassed: 142 return health::mojom::DiagnosticRoutineStatusEnum::kPassed; 143 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kFailed: 144 return health::mojom::DiagnosticRoutineStatusEnum::kFailed; 145 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kError: 146 return health::mojom::DiagnosticRoutineStatusEnum::kError; 147 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kCancelled: 148 return health::mojom::DiagnosticRoutineStatusEnum::kCancelled; 149 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kFailedToStart: 150 return health::mojom::DiagnosticRoutineStatusEnum::kFailedToStart; 151 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kRemoved: 152 return health::mojom::DiagnosticRoutineStatusEnum::kRemoved; 153 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kCancelling: 154 return health::mojom::DiagnosticRoutineStatusEnum::kCancelling; 155 case cros_healthd::mojom::DiagnosticRoutineStatusEnum::kUnsupported: 156 return health::mojom::DiagnosticRoutineStatusEnum::kUnsupported; 157 } 158 NOTREACHED(); 159 return static_cast<health::mojom::DiagnosticRoutineStatusEnum>( 160 static_cast<int>(health::mojom::DiagnosticRoutineStatusEnum::kMaxValue) + 161 1); 162 } 163 Convert(health::mojom::DiagnosticRoutineCommandEnum input)164cros_healthd::mojom::DiagnosticRoutineCommandEnum Convert( 165 health::mojom::DiagnosticRoutineCommandEnum input) { 166 switch (input) { 167 case health::mojom::DiagnosticRoutineCommandEnum::kContinue: 168 return cros_healthd::mojom::DiagnosticRoutineCommandEnum::kContinue; 169 case health::mojom::DiagnosticRoutineCommandEnum::kCancel: 170 return cros_healthd::mojom::DiagnosticRoutineCommandEnum::kCancel; 171 case health::mojom::DiagnosticRoutineCommandEnum::kGetStatus: 172 return cros_healthd::mojom::DiagnosticRoutineCommandEnum::kGetStatus; 173 case health::mojom::DiagnosticRoutineCommandEnum::kRemove: 174 return cros_healthd::mojom::DiagnosticRoutineCommandEnum::kRemove; 175 } 176 NOTREACHED(); 177 return static_cast<cros_healthd::mojom::DiagnosticRoutineCommandEnum>( 178 static_cast<int>( 179 cros_healthd::mojom::DiagnosticRoutineCommandEnum::kMaxValue) + 180 1); 181 } 182 Convert(health::mojom::AcPowerStatusEnum input)183cros_healthd::mojom::AcPowerStatusEnum Convert( 184 health::mojom::AcPowerStatusEnum input) { 185 switch (input) { 186 case health::mojom::AcPowerStatusEnum::kConnected: 187 return cros_healthd::mojom::AcPowerStatusEnum::kConnected; 188 case health::mojom::AcPowerStatusEnum::kDisconnected: 189 return cros_healthd::mojom::AcPowerStatusEnum::kDisconnected; 190 } 191 NOTREACHED(); 192 return static_cast<cros_healthd::mojom::AcPowerStatusEnum>( 193 static_cast<int>(cros_healthd::mojom::AcPowerStatusEnum::kMaxValue) + 1); 194 } 195 Convert(health::mojom::NvmeSelfTestTypeEnum input)196cros_healthd::mojom::NvmeSelfTestTypeEnum Convert( 197 health::mojom::NvmeSelfTestTypeEnum input) { 198 switch (input) { 199 case health::mojom::NvmeSelfTestTypeEnum::kShortSelfTest: 200 return cros_healthd::mojom::NvmeSelfTestTypeEnum::kShortSelfTest; 201 case health::mojom::NvmeSelfTestTypeEnum::kLongSelfTest: 202 return cros_healthd::mojom::NvmeSelfTestTypeEnum::kLongSelfTest; 203 } 204 NOTREACHED(); 205 return static_cast<cros_healthd::mojom::NvmeSelfTestTypeEnum>( 206 static_cast<int>(cros_healthd::mojom::NvmeSelfTestTypeEnum::kMaxValue) + 207 1); 208 } 209 Convert(health::mojom::DiskReadRoutineTypeEnum input)210cros_healthd::mojom::DiskReadRoutineTypeEnum Convert( 211 health::mojom::DiskReadRoutineTypeEnum input) { 212 switch (input) { 213 case health::mojom::DiskReadRoutineTypeEnum::kLinearRead: 214 return cros_healthd::mojom::DiskReadRoutineTypeEnum::kLinearRead; 215 case health::mojom::DiskReadRoutineTypeEnum::kRandomRead: 216 return cros_healthd::mojom::DiskReadRoutineTypeEnum::kRandomRead; 217 } 218 NOTREACHED(); 219 return static_cast<cros_healthd::mojom::DiskReadRoutineTypeEnum>( 220 static_cast<int>( 221 cros_healthd::mojom::DiskReadRoutineTypeEnum::kMaxValue) + 222 1); 223 } 224 225 } // namespace converters 226 } // namespace chromeos 227