#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;
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;
// 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();
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.
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;
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);
// Resumes a pending login screen.
void ResumeLoginScreen();
+ // Invokes corresponding first OOBE screen.
+ void OnHIDScreenNecessityCheck(bool screen_needed);
+
// Exit handlers:
void OnHIDDetectionCompleted();
void OnNetworkConnected();
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();
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_;
// 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_;
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_;