Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Side by Side Diff: chrome/browser/chromeos/policy/device_cloud_policy_initializer.cc

Issue 751703003: Implemented consumer management unenrollment. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dcpm
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698