#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/timezone/timezone_provider.h"
+#include "chrome/browser/lifetime/application_lifetime.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/options/options_util.h"
oobe_display_(oobe_display),
usage_statistics_reporting_(true),
skip_update_enroll_after_eula_(false),
+ enrollment_recovery_(ShouldRecoverEnrollment()),
login_screen_started_(false),
user_image_screen_return_to_previous_hack_(false),
timezone_resolved_(false),
EnrollmentScreenActor::EnrollmentMode mode =
EnrollmentScreenActor::ENROLLMENT_MODE_MANUAL;
- if (is_auto_enrollment)
+ EnrollmentScreen* screen = GetEnrollmentScreen();
+ std::string enrollment_domain = GetForcedEnrollmentDomain();
+ if (is_auto_enrollment) {
mode = EnrollmentScreenActor::ENROLLMENT_MODE_AUTO;
- else if (ShouldAutoStartEnrollment() && !CanExitEnrollment())
+ } else if (enrollment_recovery_) {
+ mode = EnrollmentScreenActor::ENROLLMENT_MODE_RECOVERY;
+ enrollment_domain = GetEnrollmentRecoveryDomain();
+ } else if (ShouldAutoStartEnrollment() && !CanExitEnrollment()) {
mode = EnrollmentScreenActor::ENROLLMENT_MODE_FORCED;
+ }
- EnrollmentScreen* screen = GetEnrollmentScreen();
- screen->SetParameters(mode, GetForcedEnrollmentDomain(), user);
+ screen->SetParameters(mode, enrollment_domain, user);
SetCurrentScreen(screen);
}
void WizardController::OnEnrollmentDone() {
// Mark OOBE as completed only if enterprise enrollment was part of the
// forced flow (i.e. app kiosk).
- if (ShouldAutoStartEnrollment())
+ if (ShouldAutoStartEnrollment() || enrollment_recovery_)
PerformOOBECompletedActions();
// TODO(mnissler): Unify the logic for auto-login for Public Sessions and
}
void WizardController::OnOOBECompleted() {
- if (ShouldAutoStartEnrollment()) {
+ if (ShouldAutoStartEnrollment() || enrollment_recovery_) {
ShowEnrollmentScreen();
} else {
PerformOOBECompletedActions();
"HIDDetection.TimesDialogShownPerOOBECompleted",
GetLocalState()->GetInteger(prefs::kTimesHIDDialogShown));
GetLocalState()->ClearPref(prefs::kTimesHIDDialogShown);
+
+ if (enrollment_recovery_)
+ chrome::AttemptRestart();
}
void WizardController::SetCurrentScreen(WizardScreen* new_current) {
}
// static
+bool WizardController::ShouldRecoverEnrollment() {
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ return connector->GetDeviceCloudPolicyManager()->ShouldRecoverEnrollment();
+}
+
+// static
+std::string WizardController::GetEnrollmentRecoveryDomain() {
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ return
+ connector->GetDeviceCloudPolicyManager()->GetEnrollmentRecoveryDomain();
+}
+
+// static
bool WizardController::CanExitEnrollment() {
policy::BrowserPolicyConnectorChromeOS* connector =
g_browser_process->platform_part()->browser_policy_connector_chromeos();