1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_CHROMEOS_POLICY_ENROLLMENT_STATUS_CHROMEOS_H_ 6 #define CHROME_BROWSER_CHROMEOS_POLICY_ENROLLMENT_STATUS_CHROMEOS_H_ 7 8 #include "components/policy/core/common/cloud/cloud_policy_constants.h" 9 #include "components/policy/core/common/cloud/cloud_policy_store.h" 10 #include "components/policy/core/common/cloud/cloud_policy_validator.h" 11 12 namespace policy { 13 14 // Describes the result of an enrollment operation, including the relevant error 15 // codes received from the involved components. 16 class EnrollmentStatus { 17 public: 18 // Enrollment status codes. 19 enum Status { 20 STATUS_SUCCESS, // Enrollment succeeded. 21 STATUS_REGISTRATION_FAILED, // DM registration failed. 22 STATUS_REGISTRATION_BAD_MODE, // Bad device mode. 23 STATUS_ROBOT_AUTH_FETCH_FAILED, // API OAuth2 auth code failure. 24 STATUS_ROBOT_REFRESH_FETCH_FAILED, // API OAuth2 refresh token failure. 25 STATUS_ROBOT_REFRESH_STORE_FAILED, // Failed to store API OAuth2 token. 26 STATUS_POLICY_FETCH_FAILED, // DM policy fetch failed. 27 STATUS_VALIDATION_FAILED, // Policy validation failed. 28 STATUS_LOCK_ERROR, // Cryptohome failed to lock the device. 29 STATUS_LOCK_TIMEOUT, // Timeout while waiting for the lock. 30 STATUS_LOCK_WRONG_USER, // Locked to different domain. 31 STATUS_STORE_ERROR, // Failed to store the policy. 32 }; 33 34 // Helpers for constructing errors for relevant cases. 35 static EnrollmentStatus ForStatus(Status status); 36 static EnrollmentStatus ForRegistrationError( 37 DeviceManagementStatus client_status); 38 static EnrollmentStatus ForFetchError(DeviceManagementStatus client_status); 39 static EnrollmentStatus ForRobotAuthFetchError( 40 DeviceManagementStatus client_status); 41 static EnrollmentStatus ForRobotRefreshFetchError(int http_status); 42 static EnrollmentStatus ForValidationError( 43 CloudPolicyValidatorBase::Status validation_status); 44 static EnrollmentStatus ForStoreError( 45 CloudPolicyStore::Status store_error, 46 CloudPolicyValidatorBase::Status validation_status); 47 status()48 Status status() const { return status_; } client_status()49 DeviceManagementStatus client_status() const { return client_status_; } http_status()50 int http_status() const { return http_status_; } store_status()51 CloudPolicyStore::Status store_status() const { return store_status_; } validation_status()52 CloudPolicyValidatorBase::Status validation_status() const { 53 return validation_status_; 54 } 55 56 private: 57 EnrollmentStatus(Status status, 58 DeviceManagementStatus client_status, 59 int http_status, 60 CloudPolicyStore::Status store_status, 61 CloudPolicyValidatorBase::Status validation_status); 62 63 Status status_; 64 DeviceManagementStatus client_status_; 65 int http_status_; 66 CloudPolicyStore::Status store_status_; 67 CloudPolicyValidatorBase::Status validation_status_; 68 }; 69 70 } // namespace policy 71 72 #endif // CHROME_BROWSER_CHROMEOS_POLICY_ENROLLMENT_STATUS_CHROMEOS_H_ 73