| 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/cloud/cloud_policy_client.h" | 5 #include "chrome/browser/policy/cloud/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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 UserAffiliation user_affiliation, | 51 UserAffiliation user_affiliation, |
| 52 StatusProvider* status_provider, | 52 StatusProvider* status_provider, |
| 53 DeviceManagementService* service) | 53 DeviceManagementService* service) |
| 54 : machine_id_(machine_id), | 54 : machine_id_(machine_id), |
| 55 machine_model_(machine_model), | 55 machine_model_(machine_model), |
| 56 user_affiliation_(user_affiliation), | 56 user_affiliation_(user_affiliation), |
| 57 device_mode_(DEVICE_MODE_NOT_SET), | 57 device_mode_(DEVICE_MODE_NOT_SET), |
| 58 submit_machine_id_(false), | 58 submit_machine_id_(false), |
| 59 public_key_version_(-1), | 59 public_key_version_(-1), |
| 60 public_key_version_valid_(false), | 60 public_key_version_valid_(false), |
| 61 invalidation_version_(0), |
| 62 fetched_invalidation_version_(0), |
| 61 service_(service), // Can be NULL for unit tests. | 63 service_(service), // Can be NULL for unit tests. |
| 62 status_provider_(status_provider), // Can be NULL for unit tests. | 64 status_provider_(status_provider), // Can be NULL for unit tests. |
| 63 status_(DM_STATUS_SUCCESS) { | 65 status_(DM_STATUS_SUCCESS) { |
| 64 } | 66 } |
| 65 | 67 |
| 66 CloudPolicyClient::~CloudPolicyClient() { | 68 CloudPolicyClient::~CloudPolicyClient() { |
| 67 STLDeleteValues(&responses_); | 69 STLDeleteValues(&responses_); |
| 68 } | 70 } |
| 69 | 71 |
| 70 void CloudPolicyClient::SetupRegistration(const std::string& dm_token, | 72 void CloudPolicyClient::SetupRegistration(const std::string& dm_token, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 if (!requisition.empty()) | 120 if (!requisition.empty()) |
| 119 request->set_requisition(requisition); | 121 request->set_requisition(requisition); |
| 120 | 122 |
| 121 request_job_->SetRetryCallback( | 123 request_job_->SetRetryCallback( |
| 122 base::Bind(&CloudPolicyClient::OnRetryRegister, base::Unretained(this))); | 124 base::Bind(&CloudPolicyClient::OnRetryRegister, base::Unretained(this))); |
| 123 | 125 |
| 124 request_job_->Start(base::Bind(&CloudPolicyClient::OnRegisterCompleted, | 126 request_job_->Start(base::Bind(&CloudPolicyClient::OnRegisterCompleted, |
| 125 base::Unretained(this))); | 127 base::Unretained(this))); |
| 126 } | 128 } |
| 127 | 129 |
| 130 void CloudPolicyClient::SetInvalidationInfo( |
| 131 int64 version, |
| 132 const std::string& payload) { |
| 133 invalidation_version_ = version; |
| 134 invalidation_payload_ = payload; |
| 135 } |
| 136 |
| 128 void CloudPolicyClient::FetchPolicy() { | 137 void CloudPolicyClient::FetchPolicy() { |
| 129 CHECK(is_registered()); | 138 CHECK(is_registered()); |
| 130 CHECK(!namespaces_to_fetch_.empty()); | 139 CHECK(!namespaces_to_fetch_.empty()); |
| 131 | 140 |
| 132 request_job_.reset( | 141 request_job_.reset( |
| 133 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)); | 142 service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH)); |
| 134 request_job_->SetDMToken(dm_token_); | 143 request_job_->SetDMToken(dm_token_); |
| 135 request_job_->SetClientID(client_id_); | 144 request_job_->SetClientID(client_id_); |
| 136 request_job_->SetUserAffiliation(user_affiliation_); | 145 request_job_->SetUserAffiliation(user_affiliation_); |
| 137 | 146 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 158 | 167 |
| 159 // These fields are included only in requests for chrome policy. | 168 // These fields are included only in requests for chrome policy. |
| 160 if (IsChromePolicy(it->first)) { | 169 if (IsChromePolicy(it->first)) { |
| 161 if (submit_machine_id_ && !machine_id_.empty()) | 170 if (submit_machine_id_ && !machine_id_.empty()) |
| 162 fetch_request->set_machine_id(machine_id_); | 171 fetch_request->set_machine_id(machine_id_); |
| 163 if (!last_policy_timestamp_.is_null()) { | 172 if (!last_policy_timestamp_.is_null()) { |
| 164 base::TimeDelta timestamp( | 173 base::TimeDelta timestamp( |
| 165 last_policy_timestamp_ - base::Time::UnixEpoch()); | 174 last_policy_timestamp_ - base::Time::UnixEpoch()); |
| 166 fetch_request->set_timestamp(timestamp.InMilliseconds()); | 175 fetch_request->set_timestamp(timestamp.InMilliseconds()); |
| 167 } | 176 } |
| 177 if (!invalidation_payload_.empty()) { |
| 178 fetch_request->set_invalidation_version(invalidation_version_); |
| 179 fetch_request->set_invalidation_payload(invalidation_payload_); |
| 180 } |
| 168 } | 181 } |
| 169 } | 182 } |
| 170 | 183 |
| 171 // Add status data. | 184 // Add status data. |
| 172 if (status_provider_) { | 185 if (status_provider_) { |
| 173 if (!status_provider_->GetDeviceStatus( | 186 if (!status_provider_->GetDeviceStatus( |
| 174 request->mutable_device_status_report_request())) { | 187 request->mutable_device_status_report_request())) { |
| 175 request->clear_device_status_report_request(); | 188 request->clear_device_status_report_request(); |
| 176 } | 189 } |
| 177 if (!status_provider_->GetSessionStatus( | 190 if (!status_provider_->GetSessionStatus( |
| 178 request->mutable_session_status_report_request())) { | 191 request->mutable_session_status_report_request())) { |
| 179 request->clear_session_status_report_request(); | 192 request->clear_session_status_report_request(); |
| 180 } | 193 } |
| 181 } | 194 } |
| 182 | 195 |
| 196 // Set the fetched invalidation version to the latest invalidation version |
| 197 // since it is now the invalidation version used for the latest fetch. |
| 198 fetched_invalidation_version_ = invalidation_version_; |
| 199 |
| 183 // Fire the job. | 200 // Fire the job. |
| 184 request_job_->Start(base::Bind(&CloudPolicyClient::OnPolicyFetchCompleted, | 201 request_job_->Start(base::Bind(&CloudPolicyClient::OnPolicyFetchCompleted, |
| 185 base::Unretained(this))); | 202 base::Unretained(this))); |
| 186 } | 203 } |
| 187 | 204 |
| 188 void CloudPolicyClient::FetchRobotAuthCodes(const std::string& auth_token) { | 205 void CloudPolicyClient::FetchRobotAuthCodes(const std::string& auth_token) { |
| 189 CHECK(is_registered()); | 206 CHECK(is_registered()); |
| 190 DCHECK(!auth_token.empty()); | 207 DCHECK(!auth_token.empty()); |
| 191 | 208 |
| 192 request_job_.reset(service_->CreateJob( | 209 request_job_.reset(service_->CreateJob( |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 | 435 |
| 419 void CloudPolicyClient::NotifyRobotAuthCodesFetched() { | 436 void CloudPolicyClient::NotifyRobotAuthCodesFetched() { |
| 420 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this)); | 437 FOR_EACH_OBSERVER(Observer, observers_, OnRobotAuthCodesFetched(this)); |
| 421 } | 438 } |
| 422 | 439 |
| 423 void CloudPolicyClient::NotifyClientError() { | 440 void CloudPolicyClient::NotifyClientError() { |
| 424 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this)); | 441 FOR_EACH_OBSERVER(Observer, observers_, OnClientError(this)); |
| 425 } | 442 } |
| 426 | 443 |
| 427 } // namespace policy | 444 } // namespace policy |
| OLD | NEW |