// Copyright 2012 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/ash/policy/enrollment/enrollment_status.h"
#include <string_view>
namespace policy {
namespace {
std::string_view ToStringView(EnrollmentStatus::Code enrollment_code) {
switch (enrollment_code) {
case EnrollmentStatus::Code::kSuccess:
return "Success";
case EnrollmentStatus::Code::kNoStateKeys:
return "NoStateKeys";
case EnrollmentStatus::Code::kRegistrationFailed:
return "RegistrationFailed";
case EnrollmentStatus::Code::kRegistrationBadMode:
return "RegistrationBadMode";
case EnrollmentStatus::Code::kRobotAuthFetchFailed:
return "RobotAuthFetchFailed";
case EnrollmentStatus::Code::kRobotRefreshFetchFailed:
return "RobotRefreshFetchFailed";
case EnrollmentStatus::Code::kRobotRefreshStoreFailed:
return "RobotRefreshStoreFailed";
case EnrollmentStatus::Code::kPolicyFetchFailed:
return "PolicyFetchFailed";
case EnrollmentStatus::Code::kValidationFailed:
return "ValidationFailed";
case EnrollmentStatus::Code::kLockError:
return "LockError";
case EnrollmentStatus::Code::kStoreError:
return "StoreError";
case EnrollmentStatus::Code::kAttributeUpdateFailed:
return "AttributeUpdateFailed";
case EnrollmentStatus::Code::kRegistrationCertFetchFailed:
return "RegistrationCertFetchFailed";
case EnrollmentStatus::Code::kNoMachineIdentification:
return "NoMachineIdentification";
case EnrollmentStatus::Code::kDmTokenStoreFailed:
return "DmTokenStoreFailed";
case EnrollmentStatus::Code::kMayNotBlockDevMode:
return "MayNotBlockDevMode";
}
}
} // namespace
// static
EnrollmentStatus EnrollmentStatus::ForEnrollmentCode(Code enrollment_code) {
EnrollmentStatus status;
status.enrollment_code_ = enrollment_code;
return status;
}
// static
EnrollmentStatus EnrollmentStatus::ForAttestationError(
ash::attestation::AttestationStatus attestation_status) {
EnrollmentStatus status;
status.enrollment_code_ = Code::kRegistrationCertFetchFailed;
status.attestation_status_ = attestation_status;
return status;
}
// static
EnrollmentStatus EnrollmentStatus::ForRegistrationError(
DeviceManagementStatus client_status) {
EnrollmentStatus status;
status.enrollment_code_ = Code::kRegistrationFailed;
status.client_status_ = client_status;
return status;
}
// static
EnrollmentStatus EnrollmentStatus::ForRobotAuthFetchError(
DeviceManagementStatus client_status) {
EnrollmentStatus status;
status.enrollment_code_ = Code::kRobotAuthFetchFailed;
status.client_status_ = client_status;
return status;
}
// static
EnrollmentStatus EnrollmentStatus::ForFetchError(
DeviceManagementStatus client_status) {
EnrollmentStatus status;
status.enrollment_code_ = Code::kPolicyFetchFailed;
status.client_status_ = client_status;
return status;
}
// static
EnrollmentStatus EnrollmentStatus::ForValidationError(
CloudPolicyValidatorBase::Status validation_status) {
EnrollmentStatus status;
status.enrollment_code_ = Code::kValidationFailed;
status.validation_status_ = validation_status;
return status;
}
// static
EnrollmentStatus EnrollmentStatus::ForStoreError(
CloudPolicyStore::Status store_error,
CloudPolicyValidatorBase::Status validation_status) {
EnrollmentStatus status;
status.enrollment_code_ = Code::kStoreError;
status.store_status_ = store_error;
return status;
}
// static
EnrollmentStatus EnrollmentStatus::ForLockError(
ash::InstallAttributes::LockResult lock_status) {
EnrollmentStatus status;
status.enrollment_code_ = Code::kLockError;
status.lock_status_ = lock_status;
return status;
}
EnrollmentStatus::EnrollmentStatus() = default;
std::ostream& operator<<(std::ostream& os,
const EnrollmentStatus::Code& enrollment_code) {
return os << ToStringView(enrollment_code);
}
} // namespace policy