Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / chromeos / login / oobe_ui.cc
index 8d55960..c6fd45b 100644 (file)
@@ -4,40 +4,38 @@
 
 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
 
-#include "ash/ash_switches.h"
 #include "base/command_line.h"
 #include "base/logging.h"
-#include "base/memory/ref_counted_memory.h"
 #include "base/values.h"
-#include "chrome/browser/browser_about_handler.h"
-#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
 #include "chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen_actor.h"
 #include "chrome/browser/chromeos/login/enrollment/enrollment_screen_actor.h"
-#include "chrome/browser/chromeos/login/lock/screen_locker.h"
-#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
-#include "chrome/browser/chromeos/login/users/user_manager.h"
-#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/browser/chromeos/policy/consumer_management_service.h"
 #include "chrome/browser/chromeos/system/input_device_settings.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/webui/about_ui.h"
 #include "chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/auto_enrollment_check_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
+#include "chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/error_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.h"
+#include "chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h"
-#include "chrome/browser/ui/webui/chromeos/login/locally_managed_user_creation_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/network_dropdown_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/network_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h"
 #include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
+#include "chrome/browser/ui/webui/chromeos/login/supervised_user_creation_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/update_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/user_image_screen_handler.h"
@@ -46,7 +44,6 @@
 #include "chrome/browser/ui/webui/theme_source.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/url_constants.h"
-#include "chromeos/chromeos_constants.h"
 #include "chromeos/chromeos_switches.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_data_source.h"
@@ -134,29 +131,30 @@ const char OobeUI::kAppLaunchSplashDisplay[] = "app-launch-splash";
 
 // static
 const char OobeUI::kScreenOobeHIDDetection[] = "hid-detection";
-const char OobeUI::kScreenOobeNetwork[]      = "connect";
-const char OobeUI::kScreenOobeEula[]         = "eula";
-const char OobeUI::kScreenOobeUpdate[]       = "update";
-const char OobeUI::kScreenOobeEnrollment[]   = "oauth-enrollment";
-const char OobeUI::kScreenOobeReset[]        = "reset";
-const char OobeUI::kScreenGaiaSignin[]       = "gaia-signin";
-const char OobeUI::kScreenAccountPicker[]    = "account-picker";
-const char OobeUI::kScreenKioskAutolaunch[]  = "autolaunch";
-const char OobeUI::kScreenKioskEnable[]      = "kiosk-enable";
-const char OobeUI::kScreenErrorMessage[]     = "error-message";
-const char OobeUI::kScreenUserImagePicker[]  = "user-image";
-const char OobeUI::kScreenTpmError[]         = "tpm-error-message";
-const char OobeUI::kScreenPasswordChanged[]  = "password-changed";
-const char OobeUI::kScreenManagedUserCreationFlow[]
-                                             = "managed-user-creation";
-const char OobeUI::kScreenTermsOfService[]   = "terms-of-service";
-const char OobeUI::kScreenWrongHWID[]        = "wrong-hwid";
-const char OobeUI::kScreenAutoEnrollmentCheck[]
-                                             = "auto-enrollment-check";
-const char OobeUI::kScreenHIDDetection[]     = "hid-detection";
-const char OobeUI::kScreenAppLaunchSplash[]  = "app-launch-splash";
-const char OobeUI::kScreenConfirmPassword[]  = "confirm-password";
-const char OobeUI::kScreenFatalError[]       = "fatal-error";
+const char OobeUI::kScreenOobeNetwork[] = "connect";
+const char OobeUI::kScreenOobeEula[] = "eula";
+const char OobeUI::kScreenOobeUpdate[] = "update";
+const char OobeUI::kScreenOobeEnrollment[] = "oauth-enrollment";
+const char OobeUI::kScreenOobeReset[] = "reset";
+const char OobeUI::kScreenGaiaSignin[] = "gaia-signin";
+const char OobeUI::kScreenAccountPicker[] = "account-picker";
+const char OobeUI::kScreenKioskAutolaunch[] = "autolaunch";
+const char OobeUI::kScreenKioskEnable[] = "kiosk-enable";
+const char OobeUI::kScreenErrorMessage[] = "error-message";
+const char OobeUI::kScreenUserImagePicker[] = "user-image";
+const char OobeUI::kScreenTpmError[] = "tpm-error-message";
+const char OobeUI::kScreenPasswordChanged[] = "password-changed";
+const char OobeUI::kScreenSupervisedUserCreationFlow[] =
+    "supervised-user-creation";
+const char OobeUI::kScreenTermsOfService[] = "terms-of-service";
+const char OobeUI::kScreenWrongHWID[] = "wrong-hwid";
+const char OobeUI::kScreenAutoEnrollmentCheck[] = "auto-enrollment-check";
+const char OobeUI::kScreenHIDDetection[] = "hid-detection";
+const char OobeUI::kScreenAppLaunchSplash[] = "app-launch-splash";
+const char OobeUI::kScreenConfirmPassword[] = "confirm-password";
+const char OobeUI::kScreenFatalError[] = "fatal-error";
+const char OobeUI::kScreenControllerPairing[] = "controller-pairing";
+const char OobeUI::kScreenHostPairing[] = "host-pairing";
 
 OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
     : WebUIController(web_ui),
@@ -171,7 +169,7 @@ OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
       kiosk_enable_screen_actor_(NULL),
       wrong_hwid_screen_actor_(NULL),
       auto_enrollment_check_screen_actor_(NULL),
-      locally_managed_user_creation_screen_actor_(NULL),
+      supervised_user_creation_screen_actor_(NULL),
       error_screen_handler_(NULL),
       signin_screen_handler_(NULL),
       terms_of_service_screen_actor_(NULL),
@@ -222,12 +220,11 @@ OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
   kiosk_enable_screen_actor_ = kiosk_enable_screen_handler;
   AddScreenHandler(kiosk_enable_screen_handler);
 
-  LocallyManagedUserCreationScreenHandler*
-      locally_managed_user_creation_screen_handler =
-          new LocallyManagedUserCreationScreenHandler();
-  locally_managed_user_creation_screen_actor_ =
-      locally_managed_user_creation_screen_handler;
-  AddScreenHandler(locally_managed_user_creation_screen_handler);
+  SupervisedUserCreationScreenHandler* supervised_user_creation_screen_handler =
+      new SupervisedUserCreationScreenHandler();
+  supervised_user_creation_screen_actor_ =
+      supervised_user_creation_screen_handler;
+  AddScreenHandler(supervised_user_creation_screen_handler);
 
   WrongHWIDScreenHandler* wrong_hwid_screen_handler =
       new WrongHWIDScreenHandler();
@@ -244,13 +241,17 @@ OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
   hid_detection_screen_actor_ = hid_detection_screen_handler;
   AddScreenHandler(hid_detection_screen_handler);
 
+  error_screen_handler_ = new ErrorScreenHandler(network_state_informer_);
+  AddScreenHandler(error_screen_handler_);
+
   EnrollmentScreenHandler* enrollment_screen_handler =
-      new EnrollmentScreenHandler();
+      new EnrollmentScreenHandler(network_state_informer_,
+                                  error_screen_handler_);
   enrollment_screen_actor_ = enrollment_screen_handler;
   AddScreenHandler(enrollment_screen_handler);
 
   TermsOfServiceScreenHandler* terms_of_service_screen_handler =
-      new TermsOfServiceScreenHandler;
+      new TermsOfServiceScreenHandler(core_handler_);
   terms_of_service_screen_actor_ = terms_of_service_screen_handler;
   AddScreenHandler(terms_of_service_screen_handler);
 
@@ -259,10 +260,11 @@ OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
   user_image_screen_actor_ = user_image_screen_handler;
   AddScreenHandler(user_image_screen_handler);
 
-  error_screen_handler_ = new ErrorScreenHandler(network_state_informer_);
-  AddScreenHandler(error_screen_handler_);
-
-  gaia_screen_handler_ = new GaiaScreenHandler(network_state_informer_);
+  policy::ConsumerManagementService* consumer_management =
+      g_browser_process->platform_part()->browser_policy_connector_chromeos()->
+          GetConsumerManagementService();
+  gaia_screen_handler_ =
+      new GaiaScreenHandler(network_state_informer_, consumer_management);
   AddScreenHandler(gaia_screen_handler_);
 
   signin_screen_handler_ = new SigninScreenHandler(network_state_informer_,
@@ -277,6 +279,19 @@ OobeUI::OobeUI(content::WebUI* web_ui, const GURL& url)
   AddScreenHandler(app_launch_splash_screen_handler);
   app_launch_splash_screen_actor_ = app_launch_splash_screen_handler;
 
+  if (display_type_ == kOobeDisplay) {
+    ControllerPairingScreenHandler* handler =
+        new ControllerPairingScreenHandler();
+    controller_pairing_screen_actor_ = handler;
+    AddScreenHandler(handler);
+  }
+
+  if (display_type_ == kOobeDisplay) {
+    HostPairingScreenHandler* handler = new HostPairingScreenHandler();
+    host_pairing_screen_actor_ = handler;
+    AddScreenHandler(handler);
+  }
+
   // Initialize KioskAppMenuHandler. Note that it is NOT a screen handler.
   kiosk_app_menu_handler_ = new KioskAppMenuHandler(network_state_informer_);
   web_ui->AddMessageHandler(kiosk_app_menu_handler_);
@@ -310,14 +325,6 @@ OobeUI::~OobeUI() {
   network_dropdown_handler_->RemoveObserver(update_screen_handler_);
 }
 
-void OobeUI::ShowScreen(WizardScreen* screen) {
-  screen->Show();
-}
-
-void OobeUI::HideScreen(WizardScreen* screen) {
-  screen->Hide();
-}
-
 CoreOobeActor* OobeUI::GetCoreOobeActor() {
   return core_handler_;
 }
@@ -366,6 +373,14 @@ HIDDetectionScreenActor* OobeUI::GetHIDDetectionScreenActor() {
   return hid_detection_screen_actor_;
 }
 
+ControllerPairingScreenActor* OobeUI::GetControllerPairingScreenActor() {
+  return controller_pairing_screen_actor_;
+}
+
+HostPairingScreenActor* OobeUI::GetHostPairingScreenActor() {
+  return host_pairing_screen_actor_;
+}
+
 UserImageScreenActor* OobeUI::GetUserImageScreenActor() {
   return user_image_screen_actor_;
 }
@@ -374,9 +389,9 @@ ErrorScreenActor* OobeUI::GetErrorScreenActor() {
   return error_screen_handler_;
 }
 
-LocallyManagedUserCreationScreenHandler*
-    OobeUI::GetLocallyManagedUserCreationScreenActor() {
-  return locally_managed_user_creation_screen_actor_;
+SupervisedUserCreationScreenHandler*
+    OobeUI::GetSupervisedUserCreationScreenActor() {
+  return supervised_user_creation_screen_actor_;
 }
 
 AppLaunchSplashScreenActor*
@@ -431,14 +446,16 @@ void OobeUI::InitializeScreenMaps() {
   screen_names_[SCREEN_USER_IMAGE_PICKER] = kScreenUserImagePicker;
   screen_names_[SCREEN_TPM_ERROR] = kScreenTpmError;
   screen_names_[SCREEN_PASSWORD_CHANGED] = kScreenPasswordChanged;
-  screen_names_[SCREEN_CREATE_MANAGED_USER_FLOW] =
-      kScreenManagedUserCreationFlow;
+  screen_names_[SCREEN_CREATE_SUPERVISED_USER_FLOW] =
+      kScreenSupervisedUserCreationFlow;
   screen_names_[SCREEN_TERMS_OF_SERVICE] = kScreenTermsOfService;
   screen_names_[SCREEN_WRONG_HWID] = kScreenWrongHWID;
   screen_names_[SCREEN_AUTO_ENROLLMENT_CHECK] = kScreenAutoEnrollmentCheck;
   screen_names_[SCREEN_APP_LAUNCH_SPLASH] = kScreenAppLaunchSplash;
   screen_names_[SCREEN_CONFIRM_PASSWORD] = kScreenConfirmPassword;
   screen_names_[SCREEN_FATAL_ERROR] = kScreenFatalError;
+  screen_names_[SCREEN_OOBE_CONTROLLER_PAIRING] = kScreenControllerPairing;
+  screen_names_[SCREEN_OOBE_HOST_PAIRING] = kScreenHostPairing;
 
   screen_ids_.clear();
   for (size_t i = 0; i < screen_names_.size(); ++i)
@@ -518,16 +535,13 @@ const std::string& OobeUI::GetScreenName(Screen screen) const {
 
 void OobeUI::OnCurrentScreenChanged(const std::string& screen) {
   previous_screen_ = current_screen_;
-  if (screen_ids_.count(screen)) {
-    Screen new_screen = screen_ids_[screen];
-    FOR_EACH_OBSERVER(Observer,
-                      observer_list_,
-                      OnCurrentScreenChanged(current_screen_, new_screen));
-    current_screen_ = new_screen;
-  } else {
-    NOTREACHED() << "Screen should be registered in InitializeScreenMaps()";
-    current_screen_ = SCREEN_UNKNOWN;
-  }
+  DCHECK(screen_ids_.count(screen))
+      << "Screen should be registered in InitializeScreenMaps()";
+  Screen new_screen = screen_ids_[screen];
+  FOR_EACH_OBSERVER(Observer,
+                    observer_list_,
+                    OnCurrentScreenChanged(current_screen_, new_screen));
+  current_screen_ = new_screen;
 }
 
 }  // namespace chromeos