Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / wizard_controller.h
index f230ab5..d30116c 100644 (file)
@@ -7,7 +7,9 @@
 
 #include <string>
 
+#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/containers/hash_tables.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
 #include "chrome/browser/chromeos/login/screens/screen_observer.h"
-#include "chrome/browser/chromeos/login/screens/wizard_screen.h"
-#include "chrome/browser/chromeos/policy/auto_enrollment_client.h"
-#include "ui/gfx/rect.h"
-#include "url/gurl.h"
 
 class PrefRegistrySimple;
 class PrefService;
@@ -31,20 +29,22 @@ class DictionaryValue;
 namespace chromeos {
 
 class AutoEnrollmentCheckScreen;
+class ControllerPairingScreen;
 class EnrollmentScreen;
 class ErrorScreen;
 class EulaScreen;
-class HIDDetectionScreen;
 struct Geoposition;
+class HIDDetectionScreen;
+class HostPairingScreen;
 class KioskAutolaunchScreen;
 class KioskEnableScreen;
-class LocallyManagedUserCreationScreen;
 class LoginDisplayHost;
 class LoginScreenContext;
 class NetworkScreen;
 class OobeDisplay;
 class ResetScreen;
 class SimpleGeolocationProvider;
+class SupervisedUserCreationScreen;
 class TermsOfServiceScreen;
 class TimeZoneProvider;
 struct TimeZoneResponseData;
@@ -87,6 +87,9 @@ class WizardController : public ScreenObserver {
   // If true zero delays have been enabled (for browser tests).
   static bool IsZeroDelayEnabled();
 
+  // Checks whether screen show time should be tracked with UMA.
+  static bool IsOOBEStepToTrack(const std::string& screen_id);
+
   // Skips any screens that may normally be shown after login (registration,
   // Terms of Service, user image selection).
   static void SkipPostLoginScreensForTesting();
@@ -138,8 +141,10 @@ class WizardController : public ScreenObserver {
   TermsOfServiceScreen* GetTermsOfServiceScreen();
   WrongHWIDScreen* GetWrongHWIDScreen();
   AutoEnrollmentCheckScreen* GetAutoEnrollmentCheckScreen();
+  SupervisedUserCreationScreen* GetSupervisedUserCreationScreen();
   HIDDetectionScreen* GetHIDDetectionScreen();
-  LocallyManagedUserCreationScreen* GetLocallyManagedUserCreationScreen();
+  ControllerPairingScreen* GetControllerPairingScreen();
+  HostPairingScreen* GetHostPairingScreen();
 
   // Returns a pointer to the current screen or NULL if there's no such
   // screen.
@@ -163,9 +168,11 @@ class WizardController : public ScreenObserver {
   static const char kTermsOfServiceScreenName[];
   static const char kAutoEnrollmentCheckScreenName[];
   static const char kWrongHWIDScreenName[];
-  static const char kLocallyManagedUserCreationScreenName[];
+  static const char kSupervisedUserCreationScreenName[];
   static const char kAppLaunchSplashScreenName[];
-  static const char kHIDDetectionScreenName [];
+  static const char kHIDDetectionScreenName[];
+  static const char kControllerPairingScreenName[];
+  static const char kHostPairingScreenName[];
 
   // Volume percent at which spoken feedback is still audible.
   static const int kMinAudibleOutputVolumePercent;
@@ -183,8 +190,10 @@ class WizardController : public ScreenObserver {
   void ShowTermsOfServiceScreen();
   void ShowWrongHWIDScreen();
   void ShowAutoEnrollmentCheckScreen();
-  void ShowLocallyManagedUserCreationScreen();
+  void ShowSupervisedUserCreationScreen();
   void ShowHIDDetectionScreen();
+  void ShowControllerPairingScreen();
+  void ShowHostPairingScreen();
 
   // Shows images login screen.
   void ShowLoginScreen(const LoginScreenContext& context);
@@ -192,6 +201,9 @@ class WizardController : public ScreenObserver {
   // Resumes a pending login screen.
   void ResumeLoginScreen();
 
+  // Invokes corresponding first OOBE screen.
+  void OnHIDScreenNecessityCheck(bool screen_needed);
+
   // Exit handlers:
   void OnHIDDetectionCompleted();
   void OnNetworkConnected();
@@ -210,9 +222,11 @@ class WizardController : public ScreenObserver {
   void OnKioskAutolaunchConfirmed();
   void OnKioskEnableCompleted();
   void OnWrongHWIDWarningSkipped();
-  void OnOOBECompleted();
+  void OnAutoEnrollmentCheckCompleted();
   void OnTermsOfServiceDeclined();
   void OnTermsOfServiceAccepted();
+  void OnControllerPairingFinished();
+  void OnHostPairingFinished();
 
   // Loads brand code on I/O enabled thread and stores to Local State.
   void LoadBrandCodeFromFile();
@@ -317,9 +331,10 @@ class WizardController : public ScreenObserver {
   scoped_ptr<TermsOfServiceScreen> terms_of_service_screen_;
   scoped_ptr<WrongHWIDScreen> wrong_hwid_screen_;
   scoped_ptr<AutoEnrollmentCheckScreen> auto_enrollment_check_screen_;
-  scoped_ptr<LocallyManagedUserCreationScreen>
-      locally_managed_user_creation_screen_;
+  scoped_ptr<SupervisedUserCreationScreen> supervised_user_creation_screen_;
   scoped_ptr<HIDDetectionScreen> hid_detection_screen_;
+  scoped_ptr<ControllerPairingScreen> controller_pairing_screen_;
+  scoped_ptr<HostPairingScreen> host_pairing_screen_;
 
   // Screen that's currently active.
   WizardScreen* current_screen_;
@@ -368,6 +383,10 @@ class WizardController : public ScreenObserver {
   // acceptance until the Sign-In screen is displayed.
   base::Time time_eula_accepted_;
 
+  // Time when OOBE was started. Used to measure the total time from boot to
+  // user Sign-In completed.
+  base::Time time_oobe_started_;
+
   ObserverList<Observer> observer_list_;
 
   bool login_screen_started_;
@@ -391,6 +410,9 @@ class WizardController : public ScreenObserver {
   scoped_ptr<SimpleGeolocationProvider> geolocation_provider_;
   scoped_ptr<TimeZoneProvider> timezone_provider_;
 
+  // Maps screen ids to last time of their shows.
+  base::hash_map<std::string, base::Time> screen_show_times_;
+
   // Tests check result of timezone resolve.
   bool timezone_resolved_;
   base::Closure on_timezone_resolved_for_testing_;