Index: chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc |
diff --git a/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc b/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc |
index 1c78f41876b1b92ab353ad757db90b8e4863e5d8..4addba0f9368ab7c5f6d93fe6db0bb2cbe6f08e4 100644 |
--- a/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc |
+++ b/chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.cc |
@@ -49,6 +49,36 @@ int GetSanitizedArg(const std::string& switch_name) { |
} // namespace |
+const char AutoEnrollmentController::kForcedReEnrollmentAlways[] = "always"; |
+const char AutoEnrollmentController::kForcedReEnrollmentLegacy[] = "legacy"; |
+const char AutoEnrollmentController::kForcedReEnrollmentNever[] = "never"; |
+const char AutoEnrollmentController::kForcedReEnrollmentOfficialBuild[] = |
+ "official"; |
+ |
+AutoEnrollmentController::Mode AutoEnrollmentController::GetMode() { |
+ CommandLine* command_line = CommandLine::ForCurrentProcess(); |
+ |
+ if (!command_line->HasSwitch(switches::kEnterpriseEnableForcedReEnrollment)) |
+ return MODE_LEGACY_AUTO_ENROLLMENT; |
+ |
+ std::string command_line_mode = command_line->GetSwitchValueASCII( |
+ switches::kEnterpriseEnableForcedReEnrollment); |
+ if (command_line_mode.empty() || |
Joao da Silva
2014/04/02 07:41:45
Why?
Mattias Nissler (ping if slow)
2014/04/02 07:45:00
Because that's the original behavior of the flag a
Joao da Silva
2014/04/02 07:48:05
Right, the flag could be used before without a val
Mattias Nissler (ping if slow)
2014/04/02 13:10:39
But in fact, it should only switch on FRE on offic
|
+ command_line_mode == kForcedReEnrollmentAlways) { |
+ return MODE_FORCED_RE_ENROLLMENT; |
+ } else if (command_line_mode == kForcedReEnrollmentOfficialBuild) { |
+#if defined(OFFICIAL_BUILD) |
+ return MODE_FORCED_RE_ENROLLMENT; |
+#else |
+ return MODE_NONE; |
+#endif |
+ } else if (command_line_mode == kForcedReEnrollmentLegacy) { |
+ return MODE_LEGACY_AUTO_ENROLLMENT; |
+ } |
+ |
+ return MODE_NONE; |
+} |
+ |
AutoEnrollmentController::AutoEnrollmentController() |
: state_(policy::AUTO_ENROLLMENT_STATE_IDLE), |
weak_factory_(this) {} |
@@ -63,12 +93,15 @@ void AutoEnrollmentController::Start() { |
// Do not communicate auto-enrollment data to the server if |
// 1. we are running integration or perf tests with telemetry. |
// 2. modulus configuration is not present. |
+ // 3. Auto-enrollment is disabled via the command line. |
+ |
CommandLine* command_line = CommandLine::ForCurrentProcess(); |
if (command_line->HasSwitch(chromeos::switches::kOobeSkipPostLogin) || |
(!command_line->HasSwitch( |
chromeos::switches::kEnterpriseEnrollmentInitialModulus) && |
!command_line->HasSwitch( |
- chromeos::switches::kEnterpriseEnrollmentModulusLimit))) { |
+ chromeos::switches::kEnterpriseEnrollmentModulusLimit)) || |
+ GetMode() == MODE_NONE) { |
VLOG(1) << "Auto-enrollment disabled."; |
UpdateState(policy::AUTO_ENROLLMENT_STATE_NO_ENROLLMENT); |
return; |
@@ -106,9 +139,8 @@ AutoEnrollmentController::RegisterProgressCallback( |
} |
bool AutoEnrollmentController::ShouldEnrollSilently() { |
- return !CommandLine::ForCurrentProcess()->HasSwitch( |
- chromeos::switches::kEnterpriseEnableForcedReEnrollment) && |
- state_ == policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT; |
+ return state_ == policy::AUTO_ENROLLMENT_STATE_TRIGGER_ENROLLMENT && |
+ GetMode() == MODE_LEGACY_AUTO_ENROLLMENT; |
} |
void AutoEnrollmentController::OnOwnershipStatusCheckDone( |
@@ -138,8 +170,7 @@ void AutoEnrollmentController::OnOwnershipStatusCheckDone( |
bool retrieve_device_state = false; |
std::string device_id; |
- if (CommandLine::ForCurrentProcess()->HasSwitch( |
- chromeos::switches::kEnterpriseEnableForcedReEnrollment)) { |
+ if (GetMode() == MODE_FORCED_RE_ENROLLMENT) { |
retrieve_device_state = true; |
device_id = |
policy::DeviceCloudPolicyManagerChromeOS::GetCurrentDeviceStateKey(); |