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()); |