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/chromeos/policy/device_cloud_policy_manager_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.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 "chrome/browser/chromeos/attestation/attestation_policy_observer.h" | 9 #include "chrome/browser/chromeos/attestation/attestation_policy_observer.h" |
10 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" | 10 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" |
11 #include "chrome/browser/chromeos/policy/enrollment_handler_chromeos.h" | 11 #include "chrome/browser/chromeos/policy/enrollment_handler_chromeos.h" |
12 #include "chrome/browser/chromeos/policy/enterprise_install_attributes.h" | 12 #include "chrome/browser/chromeos/policy/enterprise_install_attributes.h" |
13 #include "chrome/browser/chromeos/system/statistics_provider.h" | 13 #include "chrome/browser/chromeos/system/statistics_provider.h" |
14 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" | 14 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" |
15 #include "chrome/browser/policy/cloud/cloud_policy_store.h" | 15 #include "chrome/browser/policy/cloud/cloud_policy_store.h" |
16 #include "chrome/browser/policy/cloud/device_management_service.h" | 16 #include "chrome/browser/policy/cloud/device_management_service.h" |
17 #include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h" | 17 #include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h" |
18 #include "chrome/common/pref_names.h" | 18 #include "chrome/common/pref_names.h" |
| 19 #include "chromeos/chromeos_constants.h" |
19 | 20 |
20 namespace em = enterprise_management; | 21 namespace em = enterprise_management; |
21 | 22 |
22 namespace policy { | 23 namespace policy { |
23 | 24 |
24 namespace { | 25 namespace { |
25 | 26 |
26 // MachineInfo key names. | 27 // MachineInfo key names. |
27 const char kMachineInfoSystemHwqual[] = "hardware_class"; | 28 const char kMachineInfoSystemHwqual[] = "hardware_class"; |
28 | 29 |
(...skipping 13 matching lines...) Expand all Loading... |
42 // | 43 // |
43 // TODO(mnissler): Move serial_number back to the top once the server side uses | 44 // TODO(mnissler): Move serial_number back to the top once the server side uses |
44 // the correct serial number. | 45 // the correct serial number. |
45 const char* kMachineInfoSerialNumberKeys[] = { | 46 const char* kMachineInfoSerialNumberKeys[] = { |
46 "Product_S/N", // Lumpy/Alex devices | 47 "Product_S/N", // Lumpy/Alex devices |
47 "serial_number", // VPD v2+ devices | 48 "serial_number", // VPD v2+ devices |
48 "Product_SN", // Mario | 49 "Product_SN", // Mario |
49 "sn", // old ZGB devices (more recent ones use serial_number) | 50 "sn", // old ZGB devices (more recent ones use serial_number) |
50 }; | 51 }; |
51 | 52 |
| 53 // Fetches a machine statics from StatisticsProvider, returns an empty string on |
| 54 // failure. |
| 55 std::string GetMachineStatistic(const std::string& key) { |
| 56 std::string value; |
| 57 chromeos::system::StatisticsProvider* provider = |
| 58 chromeos::system::StatisticsProvider::GetInstance(); |
| 59 if (!provider->GetMachineStatistic(key, &value)) |
| 60 LOG(WARNING) << "Failed to get machine statistic " << key; |
| 61 |
| 62 return value; |
| 63 } |
| 64 |
52 } // namespace | 65 } // namespace |
53 | 66 |
54 DeviceCloudPolicyManagerChromeOS::DeviceCloudPolicyManagerChromeOS( | 67 DeviceCloudPolicyManagerChromeOS::DeviceCloudPolicyManagerChromeOS( |
55 scoped_ptr<DeviceCloudPolicyStoreChromeOS> store, | 68 scoped_ptr<DeviceCloudPolicyStoreChromeOS> store, |
56 EnterpriseInstallAttributes* install_attributes) | 69 EnterpriseInstallAttributes* install_attributes) |
57 : CloudPolicyManager( | 70 : CloudPolicyManager( |
58 PolicyNamespaceKey(dm_protocol::kChromeDevicePolicyType, | 71 PolicyNamespaceKey(dm_protocol::kChromeDevicePolicyType, |
59 std::string()), | 72 std::string()), |
60 store.get()), | 73 store.get()), |
61 device_store_(store.Pass()), | 74 device_store_(store.Pass()), |
(...skipping 19 matching lines...) Expand all Loading... |
81 } | 94 } |
82 | 95 |
83 void DeviceCloudPolicyManagerChromeOS::StartEnrollment( | 96 void DeviceCloudPolicyManagerChromeOS::StartEnrollment( |
84 const std::string& auth_token, | 97 const std::string& auth_token, |
85 bool is_auto_enrollment, | 98 bool is_auto_enrollment, |
86 const AllowedDeviceModes& allowed_device_modes, | 99 const AllowedDeviceModes& allowed_device_modes, |
87 const EnrollmentCallback& callback) { | 100 const EnrollmentCallback& callback) { |
88 CHECK(device_management_service_); | 101 CHECK(device_management_service_); |
89 core()->Disconnect(); | 102 core()->Disconnect(); |
90 | 103 |
| 104 if (requisition_.empty()) |
| 105 requisition_ = GetMachineStatistic(chromeos::kOemDeviceRequisitionKey); |
| 106 |
91 enrollment_handler_.reset( | 107 enrollment_handler_.reset( |
92 new EnrollmentHandlerChromeOS( | 108 new EnrollmentHandlerChromeOS( |
93 device_store_.get(), install_attributes_, CreateClient(), auth_token, | 109 device_store_.get(), install_attributes_, CreateClient(), auth_token, |
94 install_attributes_->GetDeviceId(), is_auto_enrollment, | 110 install_attributes_->GetDeviceId(), is_auto_enrollment, |
95 allowed_device_modes, | 111 requisition_, allowed_device_modes, |
96 base::Bind(&DeviceCloudPolicyManagerChromeOS::EnrollmentCompleted, | 112 base::Bind(&DeviceCloudPolicyManagerChromeOS::EnrollmentCompleted, |
97 base::Unretained(this), callback))); | 113 base::Unretained(this), callback))); |
98 enrollment_handler_->StartEnrollment(); | 114 enrollment_handler_->StartEnrollment(); |
99 } | 115 } |
100 | 116 |
101 void DeviceCloudPolicyManagerChromeOS::CancelEnrollment() { | 117 void DeviceCloudPolicyManagerChromeOS::CancelEnrollment() { |
102 if (enrollment_handler_.get()) { | 118 if (enrollment_handler_.get()) { |
103 enrollment_handler_.reset(); | 119 enrollment_handler_.reset(); |
104 StartIfManaged(); | 120 StartIfManaged(); |
105 } | 121 } |
(...skipping 25 matching lines...) Expand all Loading... |
131 } | 147 } |
132 | 148 |
133 if (machine_id.empty()) | 149 if (machine_id.empty()) |
134 LOG(WARNING) << "Failed to get machine id."; | 150 LOG(WARNING) << "Failed to get machine id."; |
135 | 151 |
136 return machine_id; | 152 return machine_id; |
137 } | 153 } |
138 | 154 |
139 // static | 155 // static |
140 std::string DeviceCloudPolicyManagerChromeOS::GetMachineModel() { | 156 std::string DeviceCloudPolicyManagerChromeOS::GetMachineModel() { |
141 std::string machine_model; | 157 return GetMachineStatistic(kMachineInfoSystemHwqual); |
142 chromeos::system::StatisticsProvider* provider = | |
143 chromeos::system::StatisticsProvider::GetInstance(); | |
144 if (!provider->GetMachineStatistic(kMachineInfoSystemHwqual, &machine_model)) | |
145 LOG(WARNING) << "Failed to get machine model."; | |
146 | |
147 return machine_model; | |
148 } | 158 } |
149 | 159 |
150 scoped_ptr<CloudPolicyClient> DeviceCloudPolicyManagerChromeOS::CreateClient() { | 160 scoped_ptr<CloudPolicyClient> DeviceCloudPolicyManagerChromeOS::CreateClient() { |
151 return make_scoped_ptr( | 161 return make_scoped_ptr( |
152 new CloudPolicyClient(GetMachineID(), GetMachineModel(), | 162 new CloudPolicyClient(GetMachineID(), GetMachineModel(), |
153 USER_AFFILIATION_NONE, | 163 USER_AFFILIATION_NONE, |
154 device_status_provider_.get(), | 164 device_status_provider_.get(), |
155 device_management_service_)); | 165 device_management_service_)); |
156 } | 166 } |
157 | 167 |
(...skipping 25 matching lines...) Expand all Loading... |
183 core()->Connect(CreateClient()); | 193 core()->Connect(CreateClient()); |
184 core()->StartRefreshScheduler(); | 194 core()->StartRefreshScheduler(); |
185 core()->TrackRefreshDelayPref(local_state_, | 195 core()->TrackRefreshDelayPref(local_state_, |
186 prefs::kDevicePolicyRefreshRate); | 196 prefs::kDevicePolicyRefreshRate); |
187 attestation_policy_observer_.reset( | 197 attestation_policy_observer_.reset( |
188 new chromeos::attestation::AttestationPolicyObserver(client())); | 198 new chromeos::attestation::AttestationPolicyObserver(client())); |
189 } | 199 } |
190 } | 200 } |
191 | 201 |
192 } // namespace policy | 202 } // namespace policy |
OLD | NEW |