| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/policy/device_token_fetcher.h" | 5 #include "chrome/browser/policy/device_token_fetcher.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 break; | 53 break; |
| 54 case DM_STATUS_SERVICE_DEVICE_ID_CONFLICT: | 54 case DM_STATUS_SERVICE_DEVICE_ID_CONFLICT: |
| 55 sample = kMetricTokenFetchDeviceIdConflict; | 55 sample = kMetricTokenFetchDeviceIdConflict; |
| 56 break; | 56 break; |
| 57 case DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER: | 57 case DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER: |
| 58 sample = kMetricTokenFetchInvalidSerialNumber; | 58 sample = kMetricTokenFetchInvalidSerialNumber; |
| 59 break; | 59 break; |
| 60 case DM_STATUS_RESPONSE_DECODING_ERROR: | 60 case DM_STATUS_RESPONSE_DECODING_ERROR: |
| 61 sample = kMetricTokenFetchBadResponse; | 61 sample = kMetricTokenFetchBadResponse; |
| 62 break; | 62 break; |
| 63 case DM_STATUS_MISSING_LICENSES: |
| 64 sample = kMetricMissingLicenses; |
| 65 break; |
| 63 case DM_STATUS_TEMPORARY_UNAVAILABLE: | 66 case DM_STATUS_TEMPORARY_UNAVAILABLE: |
| 64 case DM_STATUS_SERVICE_ACTIVATION_PENDING: | 67 case DM_STATUS_SERVICE_ACTIVATION_PENDING: |
| 65 case DM_STATUS_SERVICE_POLICY_NOT_FOUND: | 68 case DM_STATUS_SERVICE_POLICY_NOT_FOUND: |
| 66 case DM_STATUS_HTTP_STATUS_ERROR: | 69 case DM_STATUS_HTTP_STATUS_ERROR: |
| 67 sample = kMetricTokenFetchServerFailed; | 70 sample = kMetricTokenFetchServerFailed; |
| 68 break; | 71 break; |
| 69 } | 72 } |
| 70 if (sample != -1) | 73 if (sample != -1) |
| 71 UMA_HISTOGRAM_ENUMERATION(kMetricToken, sample, kMetricTokenSize); | 74 UMA_HISTOGRAM_ENUMERATION(kMetricToken, sample, kMetricTokenSize); |
| 72 else | 75 else |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 // the timestamp that |SetState()| needs to determine the correct refresh | 131 // the timestamp that |SetState()| needs to determine the correct refresh |
| 129 // time. | 132 // time. |
| 130 cache_->SetUnmanaged(); | 133 cache_->SetUnmanaged(); |
| 131 SetState(STATE_UNMANAGED); | 134 SetState(STATE_UNMANAGED); |
| 132 } | 135 } |
| 133 | 136 |
| 134 void DeviceTokenFetcher::SetSerialNumberInvalidState() { | 137 void DeviceTokenFetcher::SetSerialNumberInvalidState() { |
| 135 SetState(STATE_BAD_SERIAL); | 138 SetState(STATE_BAD_SERIAL); |
| 136 } | 139 } |
| 137 | 140 |
| 141 void DeviceTokenFetcher::SetMissingLicensesState() { |
| 142 SetState(STATE_MISSING_LICENSES); |
| 143 } |
| 144 |
| 138 void DeviceTokenFetcher::Reset() { | 145 void DeviceTokenFetcher::Reset() { |
| 139 SetState(STATE_INACTIVE); | 146 SetState(STATE_INACTIVE); |
| 140 } | 147 } |
| 141 | 148 |
| 142 void DeviceTokenFetcher::Initialize(DeviceManagementService* service, | 149 void DeviceTokenFetcher::Initialize(DeviceManagementService* service, |
| 143 CloudPolicyCacheBase* cache, | 150 CloudPolicyCacheBase* cache, |
| 144 CloudPolicyDataStore* data_store, | 151 CloudPolicyDataStore* data_store, |
| 145 PolicyNotifier* notifier, | 152 PolicyNotifier* notifier, |
| 146 DelayedWorkScheduler* scheduler) { | 153 DelayedWorkScheduler* scheduler) { |
| 147 service_ = service; | 154 service_ = service; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 SetState(STATE_TEMPORARY_ERROR); | 250 SetState(STATE_TEMPORARY_ERROR); |
| 244 return; | 251 return; |
| 245 case DM_STATUS_SERVICE_MANAGEMENT_TOKEN_INVALID: | 252 case DM_STATUS_SERVICE_MANAGEMENT_TOKEN_INVALID: |
| 246 // Most probably the GAIA auth cookie has expired. We can not do anything | 253 // Most probably the GAIA auth cookie has expired. We can not do anything |
| 247 // until the user logs-in again. | 254 // until the user logs-in again. |
| 248 SetState(STATE_BAD_AUTH); | 255 SetState(STATE_BAD_AUTH); |
| 249 return; | 256 return; |
| 250 case DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER: | 257 case DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER: |
| 251 SetSerialNumberInvalidState(); | 258 SetSerialNumberInvalidState(); |
| 252 return; | 259 return; |
| 260 case DM_STATUS_MISSING_LICENSES: |
| 261 SetMissingLicensesState(); |
| 262 return; |
| 253 case DM_STATUS_REQUEST_INVALID: | 263 case DM_STATUS_REQUEST_INVALID: |
| 254 case DM_STATUS_HTTP_STATUS_ERROR: | 264 case DM_STATUS_HTTP_STATUS_ERROR: |
| 255 case DM_STATUS_RESPONSE_DECODING_ERROR: | 265 case DM_STATUS_RESPONSE_DECODING_ERROR: |
| 256 case DM_STATUS_SERVICE_ACTIVATION_PENDING: | 266 case DM_STATUS_SERVICE_ACTIVATION_PENDING: |
| 257 case DM_STATUS_SERVICE_POLICY_NOT_FOUND: | 267 case DM_STATUS_SERVICE_POLICY_NOT_FOUND: |
| 258 SetState(STATE_ERROR); | 268 SetState(STATE_ERROR); |
| 259 return; | 269 return; |
| 260 } | 270 } |
| 261 NOTREACHED(); | 271 NOTREACHED(); |
| 262 SetState(STATE_ERROR); | 272 SetState(STATE_ERROR); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 284 case STATE_BAD_SERIAL: | 294 case STATE_BAD_SERIAL: |
| 285 notifier_->Inform(CloudPolicySubsystem::UNENROLLED, | 295 notifier_->Inform(CloudPolicySubsystem::UNENROLLED, |
| 286 CloudPolicySubsystem::BAD_SERIAL_NUMBER, | 296 CloudPolicySubsystem::BAD_SERIAL_NUMBER, |
| 287 PolicyNotifier::TOKEN_FETCHER); | 297 PolicyNotifier::TOKEN_FETCHER); |
| 288 break; | 298 break; |
| 289 case STATE_BAD_ENROLLMENT_MODE: | 299 case STATE_BAD_ENROLLMENT_MODE: |
| 290 notifier_->Inform(CloudPolicySubsystem::UNENROLLED, | 300 notifier_->Inform(CloudPolicySubsystem::UNENROLLED, |
| 291 CloudPolicySubsystem::BAD_ENROLLMENT_MODE, | 301 CloudPolicySubsystem::BAD_ENROLLMENT_MODE, |
| 292 PolicyNotifier::TOKEN_FETCHER); | 302 PolicyNotifier::TOKEN_FETCHER); |
| 293 break; | 303 break; |
| 304 case STATE_MISSING_LICENSES: |
| 305 notifier_->Inform(CloudPolicySubsystem::UNENROLLED, |
| 306 CloudPolicySubsystem::MISSING_LICENSES, |
| 307 PolicyNotifier::TOKEN_FETCHER); |
| 308 break; |
| 294 case STATE_UNMANAGED: | 309 case STATE_UNMANAGED: |
| 295 delayed_work_at = cache_->last_policy_refresh_time() + | 310 delayed_work_at = cache_->last_policy_refresh_time() + |
| 296 base::TimeDelta::FromMilliseconds( | 311 base::TimeDelta::FromMilliseconds( |
| 297 kUnmanagedDeviceRefreshRateMilliseconds); | 312 kUnmanagedDeviceRefreshRateMilliseconds); |
| 298 notifier_->Inform(CloudPolicySubsystem::UNMANAGED, | 313 notifier_->Inform(CloudPolicySubsystem::UNMANAGED, |
| 299 CloudPolicySubsystem::NO_DETAILS, | 314 CloudPolicySubsystem::NO_DETAILS, |
| 300 PolicyNotifier::TOKEN_FETCHER); | 315 PolicyNotifier::TOKEN_FETCHER); |
| 301 break; | 316 break; |
| 302 case STATE_TEMPORARY_ERROR: | 317 case STATE_TEMPORARY_ERROR: |
| 303 delayed_work_at = base::Time::Now() + | 318 delayed_work_at = base::Time::Now() + |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 if (state_ != STATE_INACTIVE && state_ != STATE_TOKEN_AVAILABLE) | 355 if (state_ != STATE_INACTIVE && state_ != STATE_TOKEN_AVAILABLE) |
| 341 cache_->SetFetchingDone(); | 356 cache_->SetFetchingDone(); |
| 342 } | 357 } |
| 343 | 358 |
| 344 void DeviceTokenFetcher::DoWork() { | 359 void DeviceTokenFetcher::DoWork() { |
| 345 switch (state_) { | 360 switch (state_) { |
| 346 case STATE_INACTIVE: | 361 case STATE_INACTIVE: |
| 347 case STATE_TOKEN_AVAILABLE: | 362 case STATE_TOKEN_AVAILABLE: |
| 348 case STATE_BAD_SERIAL: | 363 case STATE_BAD_SERIAL: |
| 349 case STATE_BAD_ENROLLMENT_MODE: | 364 case STATE_BAD_ENROLLMENT_MODE: |
| 365 case STATE_MISSING_LICENSES: |
| 350 break; | 366 break; |
| 351 case STATE_UNMANAGED: | 367 case STATE_UNMANAGED: |
| 352 case STATE_ERROR: | 368 case STATE_ERROR: |
| 353 case STATE_TEMPORARY_ERROR: | 369 case STATE_TEMPORARY_ERROR: |
| 354 case STATE_BAD_AUTH: | 370 case STATE_BAD_AUTH: |
| 355 FetchTokenInternal(); | 371 FetchTokenInternal(); |
| 356 break; | 372 break; |
| 357 } | 373 } |
| 358 } | 374 } |
| 359 | 375 |
| 360 } // namespace policy | 376 } // namespace policy |
| OLD | NEW |