Chromium Code Reviews| Index: chrome/browser/policy/device_token_fetcher.cc |
| diff --git a/chrome/browser/policy/device_token_fetcher.cc b/chrome/browser/policy/device_token_fetcher.cc |
| index 3faf3e1a5b61b3045349f3dcfe45a413c735ac62..3cd4cd4d300f88b81c88ce8ade28a8103bdf546f 100644 |
| --- a/chrome/browser/policy/device_token_fetcher.cc |
| +++ b/chrome/browser/policy/device_token_fetcher.cc |
| @@ -18,6 +18,8 @@ |
| #include "chrome/browser/policy/policy_notifier.h" |
| #include "chrome/browser/policy/proto/device_management_local.pb.h" |
| +namespace em = enterprise_management; |
| + |
| namespace policy { |
| namespace { |
| @@ -71,9 +73,21 @@ void SampleErrorStatus(DeviceManagementStatus status) { |
| NOTREACHED(); |
| } |
| -} // namespace |
| +// Translates the DeviceRegisterResponse::DeviceMode |mode| to the enum used |
| +// internally throughout ChromeOS to represent different device modes. |
|
Mattias Nissler (ping if slow)
2012/02/21 10:37:46
remove "throughout ChromeOS", since this code is c
pastarmovj
2012/02/21 14:57:08
Done.
|
| +DeviceMode TranslateProtobufDeviceMode( |
| + em::DeviceRegisterResponse::DeviceMode mode) { |
| + switch (mode) { |
| + case em::DeviceRegisterResponse::ENTERPRISE: |
| + return DEVICE_MODE_ENTERPRISE; |
| + case em::DeviceRegisterResponse::KIOSK: |
| + return DEVICE_MODE_KIOSK; |
| + } |
| + LOG(ERROR) << "Unknown enrollment mode in registration response: " << mode; |
| + return DEVICE_MODE_UNKNOWN; |
| +} |
| -namespace em = enterprise_management; |
| +} // namespace |
| DeviceTokenFetcher::DeviceTokenFetcher( |
| DeviceManagementService* service, |
| @@ -187,6 +201,23 @@ void DeviceTokenFetcher::OnTokenFetchCompleted( |
| if (register_response.has_device_management_token()) { |
| UMA_HISTOGRAM_ENUMERATION(kMetricToken, kMetricTokenFetchOK, |
| kMetricTokenSize); |
| + |
| + if (data_store_->policy_register_type() == |
| + em::DeviceRegisterRequest::DEVICE) { |
| + // TODO(pastarmovj): Default to DEVICE_MODE_UNKNOWN once DM server has |
| + // been updated. http://crosbug.com/26624 |
| + DeviceMode mode = DEVICE_MODE_ENTERPRISE; |
| + if (register_response.has_enrollment_type()) { |
| + mode = TranslateProtobufDeviceMode( |
| + register_response.enrollment_type()); |
| + } |
| + if (mode == DEVICE_MODE_UNKNOWN) { |
| + LOG(ERROR) << "Enrollment mode missing or unknown!"; |
| + SetState(STATE_BAD_ENROLLMENT_MODE); |
| + return; |
| + } |
| + data_store_->set_device_mode(mode); |
| + } |
| data_store_->SetDeviceToken(register_response.device_management_token(), |
| false); |
| SetState(STATE_TOKEN_AVAILABLE); |
| @@ -251,6 +282,11 @@ void DeviceTokenFetcher::SetState(FetcherState state) { |
| CloudPolicySubsystem::BAD_SERIAL_NUMBER, |
| PolicyNotifier::TOKEN_FETCHER); |
| break; |
| + case STATE_BAD_ENROLLMENT_MODE: |
| + notifier_->Inform(CloudPolicySubsystem::UNENROLLED, |
| + CloudPolicySubsystem::BAD_ENROLLMENT_MODE, |
| + PolicyNotifier::TOKEN_FETCHER); |
| + break; |
| case STATE_UNMANAGED: |
| delayed_work_at = cache_->last_policy_refresh_time() + |
| base::TimeDelta::FromMilliseconds( |
| @@ -306,6 +342,7 @@ void DeviceTokenFetcher::DoWork() { |
| case STATE_INACTIVE: |
| case STATE_TOKEN_AVAILABLE: |
| case STATE_BAD_SERIAL: |
| + case STATE_BAD_ENROLLMENT_MODE: |
| break; |
| case STATE_UNMANAGED: |
| case STATE_ERROR: |