| // 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. |
| |
| #ifndef CHROME_BROWSER_ASH_POLICY_ENROLLMENT_ENROLLMENT_STATUS_H_ |
| #define CHROME_BROWSER_ASH_POLICY_ENROLLMENT_ENROLLMENT_STATUS_H_ |
| |
| #include <ostream> |
| |
| #include "chromeos/ash/components/dbus/constants/attestation_constants.h" |
| #include "chromeos/ash/components/install_attributes/install_attributes.h" |
| #include "components/policy/core/common/cloud/cloud_policy_constants.h" |
| #include "components/policy/core/common/cloud/cloud_policy_store.h" |
| #include "components/policy/core/common/cloud/cloud_policy_validator.h" |
| |
| namespace policy { |
| |
| // Describes the result of an enrollment operation, including the relevant error |
| // codes received from the involved components. Note that the component error |
| // codes only convey useful information in case `code_` points towards a |
| // problem in that specific component. |
| class EnrollmentStatus { |
| public: |
| // Enrollment status codes. Do not change the numeric ids or the meaning of |
| // the existing codes to preserve the interpretability of old logfiles. |
| enum class Code { |
| kSuccess = 0, // Enrollment succeeded. |
| kNoStateKeys = 1, // Server-backed state keys unavailable. |
| kRegistrationFailed = 2, // DM registration failed. |
| kRegistrationBadMode = 3, // Bad device mode. |
| kRobotAuthFetchFailed = 4, // API OAuth2 auth code failure. |
| kRobotRefreshFetchFailed = 5, // API OAuth2 refresh token failure. |
| kRobotRefreshStoreFailed = 6, // Failed to store API OAuth2 token. |
| kPolicyFetchFailed = 7, // DM policy fetch failed. |
| kValidationFailed = 8, // Policy validation failed. |
| kLockError = 9, // Cryptohome failed to lock device. |
| /* kLockTimeout = 10, */ // Unused: Timeout while waiting for the |
| // lock. |
| /* kLockWrongUser = 11, */ // Unused: Locked to different domain. |
| kStoreError = 12, // Failed to store the policy. |
| /* kStoreTokenAndIdFailed = 13, */ // Unused: Failed to store DM token |
| // and device ID. |
| kAttributeUpdateFailed = 14, // Device attribute update failed. |
| kRegistrationCertFetchFailed = 15, // Cannot obtain registration cert. |
| kNoMachineIdentification = 16, // Machine model or serial missing. |
| /* kActiveDirectoryPolicyFetchFailed = 17, */ // Unused since ChromeAD |
| // deprecated. |
| kDmTokenStoreFailed = 18, // Failed to store DM token into the |
| // local state. |
| /* kLicenseRequestFailed = 19, */ // Unused: Failed to get available |
| // license types. |
| /* kOfflinePolicyLoadFailed = 20, */ // Deprecated: Failed to load the |
| // policy data for the offline demo |
| // mode. |
| /* kOfflinePolicyDecodingFailed = 21, */ // Deprecated: Failed when the |
| // policy data fails to be |
| // decoded. |
| // Device policy would block dev mode but the |
| // kEnterpriseEnrollmentFailOnBlockDevMode flag was given. |
| kMayNotBlockDevMode = 22, |
| }; |
| |
| // Helpers for constructing errors for relevant cases. |
| static EnrollmentStatus ForEnrollmentCode(Code code); |
| static EnrollmentStatus ForAttestationError( |
| ash::attestation::AttestationStatus attestation_status); |
| static EnrollmentStatus ForRegistrationError( |
| DeviceManagementStatus client_status); |
| static EnrollmentStatus ForFetchError(DeviceManagementStatus client_status); |
| static EnrollmentStatus ForRobotAuthFetchError( |
| DeviceManagementStatus client_status); |
| static EnrollmentStatus ForValidationError( |
| CloudPolicyValidatorBase::Status validation_status); |
| static EnrollmentStatus ForStoreError( |
| CloudPolicyStore::Status store_error, |
| CloudPolicyValidatorBase::Status validation_status); |
| static EnrollmentStatus ForLockError( |
| ash::InstallAttributes::LockResult lock_status); |
| |
| Code enrollment_code() const { return enrollment_code_; } |
| DeviceManagementStatus client_status() const { return client_status_; } |
| CloudPolicyStore::Status store_status() const { return store_status_; } |
| CloudPolicyValidatorBase::Status validation_status() const { |
| return validation_status_; |
| } |
| ash::InstallAttributes::LockResult lock_status() const { |
| return lock_status_; |
| } |
| ash::attestation::AttestationStatus attestation_status() const { |
| return attestation_status_; |
| } |
| |
| friend bool operator==(const EnrollmentStatus&, |
| const EnrollmentStatus&) = default; |
| |
| private: |
| Code enrollment_code_ = EnrollmentStatus::Code::kSuccess; |
| DeviceManagementStatus client_status_ = |
| DeviceManagementStatus::DM_STATUS_SUCCESS; |
| CloudPolicyStore::Status store_status_ = CloudPolicyStore::Status::STATUS_OK; |
| CloudPolicyValidatorBase::Status validation_status_ = |
| CloudPolicyValidatorBase::Status::VALIDATION_OK; |
| ash::InstallAttributes::LockResult lock_status_ = |
| ash::InstallAttributes::LockResult::LOCK_SUCCESS; |
| ash::attestation::AttestationStatus attestation_status_ = |
| ash::attestation::ATTESTATION_SUCCESS; |
| |
| EnrollmentStatus(); |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, |
| const EnrollmentStatus::Code& enrollment_code); |
| |
| } // namespace policy |
| |
| #endif // CHROME_BROWSER_ASH_POLICY_ENROLLMENT_ENROLLMENT_STATUS_H_ |