| Index: chrome/browser/chromeos/login/screens/host_pairing_screen.cc
|
| diff --git a/chrome/browser/chromeos/login/screens/host_pairing_screen.cc b/chrome/browser/chromeos/login/screens/host_pairing_screen.cc
|
| index 021ab6f5dbbf6028c0e01ea3f11b8cb4361d2c91..0c84bb6646dd6f5baa9eb38ac4ebd0f8ee6393e9 100644
|
| --- a/chrome/browser/chromeos/login/screens/host_pairing_screen.cc
|
| +++ b/chrome/browser/chromeos/login/screens/host_pairing_screen.cc
|
| @@ -5,11 +5,13 @@
|
| #include "chrome/browser/chromeos/login/screens/host_pairing_screen.h"
|
|
|
| #include "base/command_line.h"
|
| +#include "base/prefs/pref_service.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/chromeos/login/startup_utils.h"
|
| #include "chrome/browser/chromeos/login/wizard_controller.h"
|
| #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
|
| #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
|
| +#include "chrome/common/pref_names.h"
|
| #include "components/pairing/host_pairing_controller.h"
|
|
|
| namespace chromeos {
|
| @@ -17,6 +19,18 @@ namespace chromeos {
|
| using namespace host_pairing;
|
| using namespace pairing_chromeos;
|
|
|
| +namespace {
|
| +
|
| +// Clear Enrollment related local state after a successful enrollment or when
|
| +// an error occurs.
|
| +void ClearEnrollmentLocalState() {
|
| + g_browser_process->local_state()->ClearPref(
|
| + prefs::kDeviceEnrollmentAutoStart);
|
| + g_browser_process->local_state()->ClearPref(prefs::kDeviceEnrollmentCanExit);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| HostPairingScreen::HostPairingScreen(
|
| BaseScreenDelegate* base_screen_delegate,
|
| Delegate* delegate,
|
| @@ -68,6 +82,11 @@ std::string HostPairingScreen::GetName() const {
|
| void HostPairingScreen::PairingStageChanged(Stage new_stage) {
|
| std::string desired_page;
|
| switch (new_stage) {
|
| + case HostPairingController::STAGE_INITIALIZATION_ERROR: {
|
| + desired_page = kPageIntializationError;
|
| + ClearEnrollmentLocalState();
|
| + break;
|
| + }
|
| case HostPairingController::STAGE_WAITING_FOR_CONTROLLER:
|
| case HostPairingController::STAGE_WAITING_FOR_CONTROLLER_AFTER_UPDATE: {
|
| desired_page = kPageWelcome;
|
| @@ -79,12 +98,18 @@ void HostPairingScreen::PairingStageChanged(Stage new_stage) {
|
| remora_controller_->GetConfirmationCode());
|
| break;
|
| }
|
| + case HostPairingController::STAGE_CONTROLLER_CONNECTION_ERROR: {
|
| + desired_page = kPageConnectionError;
|
| + ClearEnrollmentLocalState();
|
| + break;
|
| + }
|
| case HostPairingController::STAGE_SETUP_BASIC_CONFIGURATION: {
|
| desired_page = kPageSetupBasicConfiguration;
|
| break;
|
| }
|
| case HostPairingController::STAGE_SETUP_NETWORK_ERROR: {
|
| desired_page = kPageSetupNetworkError;
|
| + ClearEnrollmentLocalState();
|
| break;
|
| }
|
| case HostPairingController::STAGE_WAITING_FOR_CREDENTIALS: {
|
| @@ -100,12 +125,14 @@ void HostPairingScreen::PairingStageChanged(Stage new_stage) {
|
| case HostPairingController::STAGE_ENROLLMENT_SUCCESS: {
|
| remora_controller_->RemoveObserver(this);
|
| Finish(WizardController::ENTERPRISE_ENROLLMENT_COMPLETED);
|
| + ClearEnrollmentLocalState();
|
| break;
|
| }
|
| case HostPairingController::STAGE_ENROLLMENT_ERROR: {
|
| // TODO(xdai): Maybe return to the Network Setup page?
|
| remora_controller_->RemoveObserver(this);
|
| desired_page = kPageEnrollmentError;
|
| + ClearEnrollmentLocalState();
|
| break;
|
| }
|
| default:
|
|
|