Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/chromeos/policy/device_cloud_policy_initializer.h" | 5 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 | 50 |
| 51 DeviceCloudPolicyInitializer::DeviceCloudPolicyInitializer( | 51 DeviceCloudPolicyInitializer::DeviceCloudPolicyInitializer( |
| 52 PrefService* local_state, | 52 PrefService* local_state, |
| 53 DeviceManagementService* enterprise_service, | 53 DeviceManagementService* enterprise_service, |
| 54 DeviceManagementService* consumer_service, | 54 DeviceManagementService* consumer_service, |
| 55 const scoped_refptr<base::SequencedTaskRunner>& background_task_runner, | 55 const scoped_refptr<base::SequencedTaskRunner>& background_task_runner, |
| 56 EnterpriseInstallAttributes* install_attributes, | 56 EnterpriseInstallAttributes* install_attributes, |
| 57 ServerBackedStateKeysBroker* state_keys_broker, | 57 ServerBackedStateKeysBroker* state_keys_broker, |
| 58 DeviceCloudPolicyStoreChromeOS* device_store, | 58 DeviceCloudPolicyStoreChromeOS* device_store, |
| 59 DeviceCloudPolicyManagerChromeOS* manager, | 59 DeviceCloudPolicyManagerChromeOS* manager, |
| 60 chromeos::DeviceSettingsService* device_settings_service) | 60 chromeos::DeviceSettingsService* device_settings_service, |
| 61 ConsumerManagementService* consumer_management_service) | |
| 61 : local_state_(local_state), | 62 : local_state_(local_state), |
| 62 enterprise_service_(enterprise_service), | 63 enterprise_service_(enterprise_service), |
| 63 consumer_service_(consumer_service), | 64 consumer_service_(consumer_service), |
| 64 background_task_runner_(background_task_runner), | 65 background_task_runner_(background_task_runner), |
| 65 install_attributes_(install_attributes), | 66 install_attributes_(install_attributes), |
| 66 state_keys_broker_(state_keys_broker), | 67 state_keys_broker_(state_keys_broker), |
| 67 device_store_(device_store), | 68 device_store_(device_store), |
| 68 manager_(manager), | 69 manager_(manager), |
| 69 device_settings_service_(device_settings_service), | 70 device_settings_service_(device_settings_service), |
| 71 consumer_management_service_(consumer_management_service), | |
| 70 is_initialized_(false) { | 72 is_initialized_(false) { |
| 71 } | 73 } |
| 72 | 74 |
| 73 DeviceCloudPolicyInitializer::~DeviceCloudPolicyInitializer() { | 75 DeviceCloudPolicyInitializer::~DeviceCloudPolicyInitializer() { |
| 74 DCHECK(!is_initialized_); | 76 DCHECK(!is_initialized_); |
| 75 } | 77 } |
| 76 | 78 |
| 77 void DeviceCloudPolicyInitializer::Init() { | 79 void DeviceCloudPolicyInitializer::Init() { |
| 78 DCHECK(!is_initialized_); | 80 DCHECK(!is_initialized_); |
| 79 | 81 |
| 80 is_initialized_ = true; | 82 is_initialized_ = true; |
| 81 device_store_->AddObserver(this); | 83 device_store_->AddObserver(this); |
| 84 if (consumer_management_service_) | |
| 85 consumer_management_service_->AddObserver(this); | |
| 82 state_keys_update_subscription_ = state_keys_broker_->RegisterUpdateCallback( | 86 state_keys_update_subscription_ = state_keys_broker_->RegisterUpdateCallback( |
| 83 base::Bind(&DeviceCloudPolicyInitializer::TryToCreateClient, | 87 base::Bind(&DeviceCloudPolicyInitializer::TryToCreateClient, |
| 84 base::Unretained(this))); | 88 base::Unretained(this))); |
| 85 | 89 |
| 86 device_status_provider_.reset( | 90 device_status_provider_.reset( |
| 87 new DeviceStatusCollector( | 91 new DeviceStatusCollector( |
| 88 local_state_, | 92 local_state_, |
| 89 chromeos::system::StatisticsProvider::GetInstance(), | 93 chromeos::system::StatisticsProvider::GetInstance(), |
| 90 NULL)); | 94 NULL)); |
| 91 | 95 |
| 92 TryToCreateClient(); | 96 TryToCreateClient(); |
| 93 } | 97 } |
| 94 | 98 |
| 95 void DeviceCloudPolicyInitializer::Shutdown() { | 99 void DeviceCloudPolicyInitializer::Shutdown() { |
| 96 DCHECK(is_initialized_); | 100 DCHECK(is_initialized_); |
| 97 | 101 |
| 102 if (consumer_management_service_) | |
| 103 consumer_management_service_->RemoveObserver(this); | |
| 98 device_store_->RemoveObserver(this); | 104 device_store_->RemoveObserver(this); |
| 99 device_status_provider_.reset(); | 105 device_status_provider_.reset(); |
| 100 enrollment_handler_.reset(); | 106 enrollment_handler_.reset(); |
| 101 state_keys_update_subscription_.reset(); | 107 state_keys_update_subscription_.reset(); |
| 102 is_initialized_ = false; | 108 is_initialized_ = false; |
| 103 } | 109 } |
| 104 | 110 |
| 105 void DeviceCloudPolicyInitializer::StartEnrollment( | 111 void DeviceCloudPolicyInitializer::StartEnrollment( |
| 106 em::PolicyData::ManagementMode management_mode, | 112 em::PolicyData::ManagementMode management_mode, |
| 107 DeviceManagementService* device_management_service, | 113 DeviceManagementService* device_management_service, |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 182 } | 188 } |
| 183 | 189 |
| 184 void DeviceCloudPolicyInitializer::OnStoreLoaded(CloudPolicyStore* store) { | 190 void DeviceCloudPolicyInitializer::OnStoreLoaded(CloudPolicyStore* store) { |
| 185 TryToCreateClient(); | 191 TryToCreateClient(); |
| 186 } | 192 } |
| 187 | 193 |
| 188 void DeviceCloudPolicyInitializer::OnStoreError(CloudPolicyStore* store) { | 194 void DeviceCloudPolicyInitializer::OnStoreError(CloudPolicyStore* store) { |
| 189 // Do nothing. | 195 // Do nothing. |
| 190 } | 196 } |
| 191 | 197 |
| 198 void DeviceCloudPolicyInitializer::OnConsumerManagementStatusChanged() { | |
| 199 TryToCreateClient(); | |
| 200 } | |
| 201 | |
| 192 void DeviceCloudPolicyInitializer::EnrollmentCompleted( | 202 void DeviceCloudPolicyInitializer::EnrollmentCompleted( |
| 193 const EnrollmentCallback& enrollment_callback, | 203 const EnrollmentCallback& enrollment_callback, |
| 194 EnrollmentStatus status) { | 204 EnrollmentStatus status) { |
| 195 scoped_ptr<CloudPolicyClient> client = enrollment_handler_->ReleaseClient(); | 205 scoped_ptr<CloudPolicyClient> client = enrollment_handler_->ReleaseClient(); |
| 196 enrollment_handler_.reset(); | 206 enrollment_handler_.reset(); |
| 197 | 207 |
| 198 if (status.status() == EnrollmentStatus::STATUS_SUCCESS) { | 208 if (status.status() == EnrollmentStatus::STATUS_SUCCESS) { |
| 199 StartConnection(client.Pass()); | 209 StartConnection(client.Pass()); |
| 200 } else { | 210 } else { |
| 201 // Some attempts to create a client may be blocked because the enrollment | 211 // Some attempts to create a client may be blocked because the enrollment |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 217 new CloudPolicyClient(DeviceCloudPolicyManagerChromeOS::GetMachineID(), | 227 new CloudPolicyClient(DeviceCloudPolicyManagerChromeOS::GetMachineID(), |
| 218 DeviceCloudPolicyManagerChromeOS::GetMachineModel(), | 228 DeviceCloudPolicyManagerChromeOS::GetMachineModel(), |
| 219 kPolicyVerificationKeyHash, | 229 kPolicyVerificationKeyHash, |
| 220 USER_AFFILIATION_NONE, | 230 USER_AFFILIATION_NONE, |
| 221 device_status_provider_.get(), | 231 device_status_provider_.get(), |
| 222 device_management_service, | 232 device_management_service, |
| 223 request_context)); | 233 request_context)); |
| 224 } | 234 } |
| 225 | 235 |
| 226 void DeviceCloudPolicyInitializer::TryToCreateClient() { | 236 void DeviceCloudPolicyInitializer::TryToCreateClient() { |
| 227 if (device_store_->is_initialized() && | 237 if (enrollment_handler_ || state_keys_broker_->pending()) |
| 228 device_store_->has_policy() && | 238 return; |
| 229 !device_store_->policy()->request_token().empty() && | 239 |
| 230 !state_keys_broker_->pending() && | 240 DeviceManagementService* service = NULL; |
|
bartfab (slow)
2014/11/28 13:25:18
Nit: s/NULL/nullptr/
davidyu
2014/12/01 17:05:22
Done.
| |
| 231 !enrollment_handler_) { | 241 if (consumer_management_service_ && |
| 232 DeviceManagementService* service = NULL; | 242 consumer_management_service_->IsManaged()) { |
| 233 if (device_store_->policy()->management_mode() == | 243 service = consumer_service_; |
| 234 em::PolicyData::CONSUMER_MANAGED) { | 244 } else if (device_store_->is_initialized() && |
| 235 service = consumer_service_; | 245 device_store_->has_policy() && |
| 236 } else { | 246 !device_store_->policy()->request_token().empty()) { |
| 237 service = enterprise_service_; | 247 DCHECK_NE(em::PolicyData::CONSUMER_MANAGED, |
| 238 } | 248 device_store_->policy()->management_mode()); |
| 239 if (service) | 249 service = enterprise_service_; |
| 240 StartConnection(CreateClient(service)); | |
| 241 } | 250 } |
| 251 | |
| 252 if (service) | |
| 253 StartConnection(CreateClient(service)); | |
| 242 } | 254 } |
| 243 | 255 |
| 244 void DeviceCloudPolicyInitializer::StartConnection( | 256 void DeviceCloudPolicyInitializer::StartConnection( |
| 245 scoped_ptr<CloudPolicyClient> client) { | 257 scoped_ptr<CloudPolicyClient> client) { |
| 246 if (!manager_->core()->service()) | 258 if (!manager_->core()->service()) |
| 247 manager_->StartConnection(client.Pass(), device_status_provider_.Pass()); | 259 manager_->StartConnection(client.Pass(), device_status_provider_.Pass()); |
| 248 } | 260 } |
| 249 | 261 |
| 250 } // namespace policy | 262 } // namespace policy |
| OLD | NEW |