Chromium Code Reviews| Index: chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc |
| diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc |
| index e0154f7ec70c171137db02e116c28fbef88ecc6b..12174abba94abcd3b24d28e5d3fd95d4cdc6f6f0 100644 |
| --- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc |
| +++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc |
| @@ -34,6 +34,9 @@ namespace policy { |
| namespace { |
| +// Overridden no requisition value. |
| +const char kNoRequisition[] = "none"; |
| + |
| // MachineInfo key names. |
| const char kMachineInfoSystemHwqual[] = "hardware_class"; |
| @@ -118,9 +121,25 @@ void DeviceCloudPolicyManagerChromeOS::Connect( |
| device_management_service_ = device_management_service; |
| device_status_provider_ = device_status_provider.Pass(); |
| + InitalizeRequisition(); |
| StartIfManaged(); |
| } |
| +void DeviceCloudPolicyManagerChromeOS::InitalizeRequisition() { |
| + if (chromeos::StartupUtils::IsOobeCompleted()) |
| + return; |
| + |
| + const PrefService::Preference* pref = local_state_->FindPreference( |
| + prefs::kDeviceEnrollmentRequisition); |
| + if (pref->IsDefaultValue()) { |
| + // OEM statistics are only loaded when OOBE is not completed. |
|
xiyuan
2014/03/01 04:38:58
nit: Move to the comment to above line 129? It fee
zel
2014/03/01 21:30:27
Done.
|
| + std::string requisition = |
| + GetMachineStatistic(chromeos::system::kOemDeviceRequisitionKey); |
| + if (!requisition.empty()) |
| + SetDeviceRequisition(requisition); |
| + } |
| +} |
| + |
| void DeviceCloudPolicyManagerChromeOS::StartEnrollment( |
| const std::string& auth_token, |
| bool is_auto_enrollment, |
| @@ -151,13 +170,11 @@ std::string DeviceCloudPolicyManagerChromeOS::GetDeviceRequisition() const { |
| std::string requisition; |
| const PrefService::Preference* pref = local_state_->FindPreference( |
| prefs::kDeviceEnrollmentRequisition); |
| - if (pref->IsDefaultValue() && !chromeos::StartupUtils::IsOobeCompleted()) { |
| - // OEM statistics are only loaded when OOBE is not completed. |
| - requisition = |
| - GetMachineStatistic(chromeos::system::kOemDeviceRequisitionKey); |
| - } else { |
| + if (!pref->IsDefaultValue()) |
| pref->GetValue()->GetAsString(&requisition); |
| - } |
| + |
| + if (requisition == kNoRequisition) |
| + requisition.clear(); |
| return requisition; |
| } |
| @@ -171,8 +188,13 @@ void DeviceCloudPolicyManagerChromeOS::SetDeviceRequisition( |
| local_state_->ClearPref(prefs::kDeviceEnrollmentCanExit); |
| } else { |
| local_state_->SetString(prefs::kDeviceEnrollmentRequisition, requisition); |
| - local_state_->SetBoolean(prefs::kDeviceEnrollmentAutoStart, true); |
| - local_state_->SetBoolean(prefs::kDeviceEnrollmentCanExit, false); |
| + if (requisition == kNoRequisition) { |
| + local_state_->ClearPref(prefs::kDeviceEnrollmentAutoStart); |
| + local_state_->ClearPref(prefs::kDeviceEnrollmentCanExit); |
| + } else { |
| + local_state_->SetBoolean(prefs::kDeviceEnrollmentAutoStart, true); |
| + local_state_->SetBoolean(prefs::kDeviceEnrollmentCanExit, false); |
| + } |
| } |
| } |
| } |