Chromium Code Reviews| Index: chrome/browser/chromeos/login/wizard_controller.cc |
| diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc |
| index 882302b6c074f9a87eca60e1c273da981561dd66..d100f24279aad6696ee6c6b59686a2bace8db222 100644 |
| --- a/chrome/browser/chromeos/login/wizard_controller.cc |
| +++ b/chrome/browser/chromeos/login/wizard_controller.cc |
| @@ -55,6 +55,7 @@ |
| #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.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" |
| @@ -204,6 +205,7 @@ WizardController::WizardController(chromeos::LoginDisplayHost* host, |
| 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), |
| @@ -493,15 +495,18 @@ void WizardController::ShowEnrollmentScreen() { |
| 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 (ShouldAutoStartEnrollment() && !CanExitEnrollment()) { |
| mode = EnrollmentScreenActor::ENROLLMENT_MODE_FORCED; |
| - else if (ShouldRecoverEnrollment()) |
| + } else if (enrollment_recovery_) { |
| mode = EnrollmentScreenActor::ENROLLMENT_MODE_FORCED; |
| + enrollment_domain = GetEnrollmentRecoveryDomain(); |
| + } |
| - EnrollmentScreen* screen = GetEnrollmentScreen(); |
| - screen->SetParameters(mode, GetForcedEnrollmentDomain(), user); |
| + screen->SetParameters(mode, enrollment_domain, user); |
| SetCurrentScreen(screen); |
| } |
| @@ -731,7 +736,7 @@ void WizardController::OnUserImageSkipped() { |
| void WizardController::OnEnrollmentDone() { |
| // Mark OOBE as completed only if enterprise enrollment was part of the |
| // forced flow (i.e. app kiosk). |
| - if (ShouldAutoStartEnrollment() || ShouldRecoverEnrollment()) |
| + if (ShouldAutoStartEnrollment() || enrollment_recovery_) |
| PerformOOBECompletedActions(); |
| // TODO(mnissler): Unify the logic for auto-login for Public Sessions and |
| @@ -776,7 +781,7 @@ void WizardController::OnAutoEnrollmentDone() { |
| } |
| void WizardController::OnOOBECompleted() { |
| - if (ShouldAutoStartEnrollment() || ShouldRecoverEnrollment()) { |
| + if (ShouldAutoStartEnrollment() || enrollment_recovery_) { |
| ShowEnrollmentScreen(); |
| } else { |
| PerformOOBECompletedActions(); |
| @@ -844,6 +849,9 @@ void WizardController::PerformOOBECompletedActions() { |
| GetLocalState()->GetInteger(prefs::kTimesHIDDialogShown)); |
| GetLocalState()->ClearPref(prefs::kTimesHIDDialogShown); |
| StartupUtils::MarkOobeCompleted(); |
| + |
| + if (enrollment_recovery_) |
| + chrome::AttemptRestart(); |
| } |
| void WizardController::SetCurrentScreen(WizardScreen* new_current) { |
| @@ -1142,6 +1150,16 @@ bool WizardController::ShouldRecoverEnrollment() { |
| } |
| // static |
| +std::string WizardController::GetEnrollmentRecoveryDomain() { |
| + policy::BrowserPolicyConnectorChromeOS* connector = |
| + g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
| + policy::DeviceCloudPolicyInitializer* dcp_initializer = |
| + connector->GetDeviceCloudPolicyInitializer(); |
| + if (!dcp_initializer) return std::string(); |
|
pastarmovj
2014/07/15 08:44:10
nit: line break.
Thiemo Nagel
2014/07/16 09:55:32
Done.
|
| + return dcp_initializer->GetEnrollmentRecoveryDomain(); |
| +} |
| + |
| +// static |
| bool WizardController::CanExitEnrollment() { |
| policy::BrowserPolicyConnectorChromeOS* connector = |
| g_browser_process->platform_part()->browser_policy_connector_chromeos(); |