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

Side by Side Diff: chrome/browser/policy/cloud_policy_client.cc

Issue 12209070: Fix cloud policy duplicate registrations issue. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months 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 | Annotate | Revision Log
OLDNEW
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/cloud_policy_client.h" 5 #include "chrome/browser/policy/cloud_policy_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/guid.h" 8 #include "base/guid.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 if (!client_id.empty()) 103 if (!client_id.empty())
104 request->set_reregister(true); 104 request->set_reregister(true);
105 request->set_type(type); 105 request->set_type(type);
106 if (!machine_id_.empty()) 106 if (!machine_id_.empty())
107 request->set_machine_id(machine_id_); 107 request->set_machine_id(machine_id_);
108 if (!machine_model_.empty()) 108 if (!machine_model_.empty())
109 request->set_machine_model(machine_model_); 109 request->set_machine_model(machine_model_);
110 if (is_auto_enrollement) 110 if (is_auto_enrollement)
111 request->set_auto_enrolled(true); 111 request->set_auto_enrolled(true);
112 112
113 request_job_->SetRetryCallback(
114 base::Bind(&CloudPolicyClient::OnRetryRegister, base::Unretained(this)));
115
113 request_job_->Start(base::Bind(&CloudPolicyClient::OnRegisterCompleted, 116 request_job_->Start(base::Bind(&CloudPolicyClient::OnRegisterCompleted,
114 base::Unretained(this))); 117 base::Unretained(this)));
115 } 118 }
116 119
117 void CloudPolicyClient::FetchPolicy() { 120 void CloudPolicyClient::FetchPolicy() {
118 CHECK(is_registered()); 121 CHECK(is_registered());
119 122
120 request_job_.reset( 123 request_job_.reset(
121 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)); 124 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH));
122 request_job_->SetDMToken(dm_token_); 125 request_job_->SetDMToken(dm_token_);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 void CloudPolicyClient::RemoveNamespaceToFetch(const PolicyNamespaceKey& key) { 197 void CloudPolicyClient::RemoveNamespaceToFetch(const PolicyNamespaceKey& key) {
195 namespaces_to_fetch_.erase(key); 198 namespaces_to_fetch_.erase(key);
196 } 199 }
197 200
198 const em::PolicyFetchResponse* CloudPolicyClient::GetPolicyFor( 201 const em::PolicyFetchResponse* CloudPolicyClient::GetPolicyFor(
199 const PolicyNamespaceKey& key) const { 202 const PolicyNamespaceKey& key) const {
200 ResponseMap::const_iterator it = responses_.find(key); 203 ResponseMap::const_iterator it = responses_.find(key);
201 return it == responses_.end() ? NULL : it->second; 204 return it == responses_.end() ? NULL : it->second;
202 } 205 }
203 206
207 void CloudPolicyClient::OnRetryRegister(DeviceManagementRequestJob* job) {
208 DCHECK_EQ(request_job_.get(), job);
209 // If the initial request managed to get to the server but the response didn't
210 // arrive to the client then retrying with the same device-id will fail.
Mattias Nissler (ping if slow) 2013/02/11 11:30:37 nit: s/to/at/
Mattias Nissler (ping if slow) 2013/02/11 11:30:37 nit: s/device-id/client ID/ (for consistency with
Joao da Silva 2013/02/11 17:38:19 Done.
Joao da Silva 2013/02/11 17:38:19 Done.
211 // Set the re-registration flag so that the server accepts it.
212 // If the server hasn't seen the device-id before then it will also accept
Mattias Nissler (ping if slow) 2013/02/11 11:30:37 ditto
Joao da Silva 2013/02/11 17:38:19 Done.
213 // the re-registration.
214 job->GetRequest()->mutable_register_request()->set_reregister(true);
215 }
216
204 void CloudPolicyClient::OnRegisterCompleted( 217 void CloudPolicyClient::OnRegisterCompleted(
205 DeviceManagementStatus status, 218 DeviceManagementStatus status,
206 const em::DeviceManagementResponse& response) { 219 const em::DeviceManagementResponse& response) {
207 if (status == DM_STATUS_SUCCESS && 220 if (status == DM_STATUS_SUCCESS &&
208 (!response.has_register_response() || 221 (!response.has_register_response() ||
209 !response.register_response().has_device_management_token())) { 222 !response.register_response().has_device_management_token())) {
210 LOG(WARNING) << "Invalid registration response."; 223 LOG(WARNING) << "Invalid registration response.";
211 status = DM_STATUS_RESPONSE_DECODING_ERROR; 224 status = DM_STATUS_RESPONSE_DECODING_ERROR;
212 } 225 }
213 226
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 310
298 void CloudPolicyClient::NotifyRegistrationStateChanged() { 311 void CloudPolicyClient::NotifyRegistrationStateChanged() {
299 FOR_EACH_OBSERVER(Observer, observers_, OnRegistrationStateChanged(this)); 312 FOR_EACH_OBSERVER(Observer, observers_, OnRegistrationStateChanged(this));
300 } 313 }
301 314
302 void CloudPolicyClient::NotifyClientError() { 315 void CloudPolicyClient::NotifyClientError() {
303 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this)); 316 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this));
304 } 317 }
305 318
306 } // namespace policy 319 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/cloud_policy_client.h ('k') | chrome/browser/policy/device_management_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698