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 075297391b3f62223d60fdbed105b71056f96a0f..f02a213d7c293cee6178d794c98d6853aa07ab1f 100644 |
--- a/chrome/browser/chromeos/login/screens/host_pairing_screen.cc |
+++ b/chrome/browser/chromeos/login/screens/host_pairing_screen.cc |
@@ -20,6 +20,7 @@ HostPairingScreen::HostPairingScreen( |
: WizardScreen(observer), |
actor_(actor), |
controller_(controller), |
+ observing_controller_(true), |
current_stage_(HostPairingController::STAGE_NONE) { |
actor_->SetDelegate(this); |
controller_->AddObserver(this); |
@@ -28,7 +29,8 @@ HostPairingScreen::HostPairingScreen( |
HostPairingScreen::~HostPairingScreen() { |
if (actor_) |
actor_->SetDelegate(NULL); |
- controller_->RemoveObserver(this); |
+ if (observing_controller_) |
+ controller_->RemoveObserver(this); |
} |
void HostPairingScreen::CommitContextChanges() { |
@@ -63,6 +65,10 @@ void HostPairingScreen::PairingStageChanged(Stage new_stage) { |
std::string desired_page; |
switch (new_stage) { |
+ case HostPairingController::STAGE_NONE: |
+ case HostPairingController::STAGE_INITIALIZATION_ERROR: { |
+ break; |
+ } |
case HostPairingController::STAGE_WAITING_FOR_CONTROLLER: |
case HostPairingController::STAGE_WAITING_FOR_CONTROLLER_AFTER_UPDATE: { |
desired_page = kPageWelcome; |
@@ -98,11 +104,7 @@ void HostPairingScreen::PairingStageChanged(Stage new_stage) { |
break; |
} |
case HostPairingController::STAGE_FINISHED: { |
- get_screen_observer()->OnExit(WizardController::HOST_PAIRING_FINISHED); |
- break; |
- } |
- default: { |
- NOTREACHED(); |
+ // This page is closed in EnrollHost. |
break; |
} |
} |
@@ -122,9 +124,11 @@ void HostPairingScreen::ConfigureHost(bool accepted_eula, |
} |
void HostPairingScreen::EnrollHost(const std::string& auth_token) { |
- // TODO(zork,achuith): Enroll device, send error on error. |
- // (http://crbug.com/374990) |
- controller_->SetEnrollmentComplete(true); |
+ DCHECK(observing_controller_); |
+ observing_controller_ = false; |
+ controller_->RemoveObserver(this); |
+ WizardController::default_controller()->OnEnrollmentAuthTokenReceived( |
+ auth_token); |
} |
void HostPairingScreen::OnActorDestroyed(HostPairingScreenActor* actor) { |