| 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 0036c260981d30cec2d5ac0b4f9927efef26404a..d585b0ba3d517880e812e6804ba8a6738904b906 100644
|
| --- a/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc
|
| +++ b/chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.cc
|
| @@ -52,10 +52,14 @@ namespace policy {
|
|
|
| namespace {
|
|
|
| +// Well-known requisition types.
|
| const char kNoRequisition[] = "none";
|
| const char kRemoraRequisition[] = "remora";
|
| const char kSharkRequisition[] = "shark";
|
|
|
| +// Zero-touch enrollment flag values.
|
| +const char kZeroTouchEnrollmentForced[] = "forced";
|
| +
|
| // These are the machine serial number keys that we check in order until we
|
| // find a non-empty serial number. The VPD spec says the serial number should be
|
| // in the "serial_number" key for v2+ VPDs. However, legacy devices used a
|
| @@ -136,6 +140,7 @@ void DeviceCloudPolicyManagerChromeOS::Initialize(PrefService* local_state) {
|
| base::Unretained(this)));
|
|
|
| InitializeRequisition();
|
| + InitializeEnrollment();
|
| }
|
|
|
| void DeviceCloudPolicyManagerChromeOS::AddDeviceCloudPolicyManagerObserver(
|
| @@ -175,8 +180,7 @@ void DeviceCloudPolicyManagerChromeOS::SetDeviceRequisition(
|
| local_state_->ClearPref(prefs::kDeviceEnrollmentAutoStart);
|
| local_state_->ClearPref(prefs::kDeviceEnrollmentCanExit);
|
| } else {
|
| - local_state_->SetBoolean(prefs::kDeviceEnrollmentAutoStart, true);
|
| - local_state_->SetBoolean(prefs::kDeviceEnrollmentCanExit, false);
|
| + SetDeviceEnrollmentAutoStart();
|
| }
|
| }
|
| }
|
| @@ -320,8 +324,7 @@ void DeviceCloudPolicyManagerChromeOS::InitializeRequisition() {
|
| requisition);
|
| if (requisition == kRemoraRequisition ||
|
| requisition == kSharkRequisition) {
|
| - local_state_->SetBoolean(prefs::kDeviceEnrollmentAutoStart, true);
|
| - local_state_->SetBoolean(prefs::kDeviceEnrollmentCanExit, false);
|
| + SetDeviceEnrollmentAutoStart();
|
| } else {
|
| local_state_->SetBoolean(
|
| prefs::kDeviceEnrollmentAutoStart,
|
| @@ -336,6 +339,21 @@ void DeviceCloudPolicyManagerChromeOS::InitializeRequisition() {
|
| }
|
| }
|
|
|
| +void DeviceCloudPolicyManagerChromeOS::InitializeEnrollment() {
|
| + // Enrollment happens during OOBE only.
|
| + if (chromeos::StartupUtils::IsOobeCompleted())
|
| + return;
|
| +
|
| + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| + if (command_line->HasSwitch(
|
| + chromeos::switches::kEnterpriseEnableZeroTouchEnrollment) &&
|
| + command_line->GetSwitchValueASCII(
|
| + chromeos::switches::kEnterpriseEnableZeroTouchEnrollment) ==
|
| + kZeroTouchEnrollmentForced) {
|
| + SetDeviceEnrollmentAutoStart();
|
| + }
|
| +}
|
| +
|
| void DeviceCloudPolicyManagerChromeOS::NotifyConnected() {
|
| FOR_EACH_OBSERVER(
|
| Observer, observers_, OnDeviceCloudPolicyManagerConnected());
|
|
|