Upstream version 10.38.220.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / supervised / supervised_user_creation_screen.cc
index 53f5cd7..5386278 100644 (file)
@@ -16,6 +16,7 @@
 #include "chrome/browser/chromeos/login/supervised/supervised_user_authentication.h"
 #include "chrome/browser/chromeos/login/supervised/supervised_user_creation_controller.h"
 #include "chrome/browser/chromeos/login/supervised/supervised_user_creation_controller_new.h"
+#include "chrome/browser/chromeos/login/supervised/supervised_user_creation_flow.h"
 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h"
 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h"
@@ -92,6 +93,7 @@ SupervisedUserCreationScreen::SupervisedUserCreationScreen(
       weak_factory_(this),
       actor_(actor),
       on_error_screen_(false),
+      manager_signin_in_progress_(false),
       last_page_(kNameOfIntroScreen),
       sync_service_(NULL),
       image_decoder_(NULL),
@@ -154,6 +156,7 @@ void SupervisedUserCreationScreen::OnPortalDetectionCompleted(
 }
 
 void SupervisedUserCreationScreen::ShowManagerInconsistentStateErrorScreen() {
+  manager_signin_in_progress_ = false;
   if (!actor_)
     return;
   actor_->ShowErrorPage(
@@ -193,6 +196,13 @@ void SupervisedUserCreationScreen::FinishFlow() {
 void SupervisedUserCreationScreen::AuthenticateManager(
     const std::string& manager_id,
     const std::string& manager_password) {
+  if (manager_signin_in_progress_)
+    return;
+  manager_signin_in_progress_ = true;
+
+  UserFlow* flow = new SupervisedUserCreationFlow(manager_id);
+  ChromeUserManager::Get()->SetUserFlow(manager_id, flow);
+
   // Make sure no two controllers exist at the same time.
   controller_.reset();
 
@@ -325,12 +335,14 @@ void SupervisedUserCreationScreen::ImportSupervisedUserWithPassword(
 }
 
 void SupervisedUserCreationScreen::OnManagerLoginFailure() {
+  manager_signin_in_progress_ = false;
   if (actor_)
     actor_->ShowManagerPasswordError();
 }
 
 void SupervisedUserCreationScreen::OnManagerFullyAuthenticated(
     Profile* manager_profile) {
+  manager_signin_in_progress_ = false;
   DCHECK(controller_.get());
   // For manager user, move desktop to locked container so that windows created
   // during the user image picker step are below it.