wizard_controller.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_CONTROLLER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_CONTROLLER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/observer_list.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/time.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/timer.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/login/screen_observer.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/login/wizard_screen.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "googleurl/src/gurl.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefService; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EnterpriseEnrollmentScreen; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EulaScreen; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HTMLPageScreen; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LoginDisplayHost; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkScreen; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OobeDisplay; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RegistrationScreen; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResetScreen; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UpdateScreen; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UserImageScreen; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WizardScreen; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Class that manages control flow between wizard screens. Wizard controller 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// interacts with screen controllers to move the user between screens. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WizardController : public ScreenObserver { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Observes screen changes. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Observer { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called before a screen change happens. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnScreenChanged(WizardScreen* next_screen) = 0; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called after the browser session has started. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnSessionStart() = 0; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WizardController(LoginDisplayHost* host, OobeDisplay* oobe_display); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~WizardController(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the default wizard controller if it has been created. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static WizardController* default_controller() { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return default_controller_; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether the user image selection step should be skipped. 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool skip_user_image_selection() { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return skip_user_image_selection_; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if EULA has been accepted. 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsEulaAccepted(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns OOBE completion status. 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsOobeCompleted(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Marks EULA status as accepted. 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void MarkEulaAccepted(); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Marks OOBE process as completed. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void MarkOobeCompleted(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns device registration completion status, i.e. second part of OOBE. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsDeviceRegistered(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if valid registration URL is defined. 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsRegisterScreenDefined(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Marks device registered. i.e. second part of OOBE is completed. 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void MarkDeviceRegistered(); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns initial locale from local settings. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static std::string GetInitialLocale(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets delays to zero. MUST be used only for tests. 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void SetZeroDelays(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If true zero delays have been enabled (for browser tests). 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool IsZeroDelayEnabled(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets initial locale in local settings. 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void SetInitialLocale(const std::string& locale); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Registers OOBE preferences. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void RegisterPrefs(PrefService* local_state); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Marks user image screen to be always skipped after login. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void SkipImageSelectionForTesting(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the first screen defined by |first_screen_name| or by default 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // if the parameter is empty. Takes ownership of |screen_parameters|. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Init(const std::string& first_screen_name, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::DictionaryValue* screen_parameters); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Advances to screen defined by |screen_name| and shows it. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AdvanceToScreen(const std::string& screen_name); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Advances to login screen. Should be used in for testing only. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SkipToLoginForTesting(); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If being at register screen proceeds to the next one. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SkipRegistration(); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds and removes an observer. 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddObserver(Observer* observer); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveObserver(Observer* observer); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called right after the browser session has started. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSessionStart(); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Skip update, go straight to enrollment after EULA is accepted. 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SkipUpdateEnrollAfterEula(); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Lazy initializers and getters for screens. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkScreen* GetNetworkScreen(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateScreen* GetUpdateScreen(); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserImageScreen* GetUserImageScreen(); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EulaScreen* GetEulaScreen(); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegistrationScreen* GetRegistrationScreen(); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HTMLPageScreen* GetHTMLPageScreen(); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnterpriseEnrollmentScreen* GetEnterpriseEnrollmentScreen(); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetScreen* GetResetScreen(); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a pointer to the current screen or NULL if there's no such 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // screen. 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WizardScreen* current_screen() const { return current_screen_; } 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the current wizard instance has reached the login screen. 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool login_screen_started() const { return login_screen_started_; } 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kNetworkScreenName[]; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kLoginScreenName[]; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kUpdateScreenName[]; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kUserImageScreenName[]; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kRegistrationScreenName[]; 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kOutOfBoxScreenName[]; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kTestNoScreenName[]; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kEulaScreenName[]; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kHTMLPageScreenName[]; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kEnterpriseEnrollmentScreenName[]; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kResetScreenName[]; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Show specific screen. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowNetworkScreen(); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowUpdateScreen(); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowUserImageScreen(); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowEulaScreen(); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowRegistrationScreen(); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowHTMLPageScreen(); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowEnterpriseEnrollmentScreen(); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowResetScreen(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows images login screen. 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowLoginScreen(); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resumes a pending login screen. 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResumeLoginScreen(); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Exit handlers: 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnNetworkConnected(); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnNetworkOffline(); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnConnectionFailed(); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateCompleted(); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEulaAccepted(); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateErrorCheckingForUpdate(); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateErrorUpdating(); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUserImageSelected(); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUserImageSkipped(); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnRegistrationSuccess(); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnRegistrationSkipped(); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnterpriseEnrollmentDone(); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnterpriseAutoEnrollmentDone(); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnResetCanceled(); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnOOBECompleted(); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows update screen and starts update process. 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitiateOOBEUpdate(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Actions that should be done right after EULA is accepted, 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // before update check. 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PerformPostEulaActions(); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Actions that should be done right after update stage is finished. 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PerformPostUpdateActions(); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ScreenObserver: 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnExit(ExitCodes exit_code) OVERRIDE; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowCurrentScreen() OVERRIDE; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnSetUserNamePassword(const std::string& username, 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& password) OVERRIDE; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUsageStatisticsReporting(bool val) OVERRIDE; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetUsageStatisticsReporting() const OVERRIDE; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Switches from one screen to another. 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetCurrentScreen(WizardScreen* screen); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Switches from one screen to another with delay before showing. Calling 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ShowCurrentScreen directly forces screen to be shown immediately. 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetCurrentScreenSmooth(WizardScreen* screen, bool use_smoothing); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Changes status area visibility. 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetStatusAreaVisible(bool visible); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Logs in the specified user via default login screen. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Login(const std::string& username, const std::string& password); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool skip_user_image_selection_; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool zero_delay_enabled_; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Screens. 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<NetworkScreen> network_screen_; 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<UpdateScreen> update_screen_; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<UserImageScreen> user_image_screen_; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<EulaScreen> eula_screen_; 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<RegistrationScreen> registration_screen_; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<ResetScreen> reset_screen_; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<HTMLPageScreen> html_page_screen_; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<EnterpriseEnrollmentScreen> 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enterprise_enrollment_screen_; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Screen that's currently active. 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WizardScreen* current_screen_; 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Screen that was active before, or NULL for login screen. 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WizardScreen* previous_screen_; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string username_; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string password_; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if running official BUILD. 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_official_build_; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if full OOBE flow should be shown. 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_out_of_box_; 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Value of the screen name that WizardController was started with. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string first_screen_name_; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OOBE/login display host. 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LoginDisplayHost* host_; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Default WizardController. 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static WizardController* default_controller_; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Parameters for the first screen. May be NULL. 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::DictionaryValue> screen_parameters_; 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::OneShotTimer<WizardController> smooth_show_timer_; 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OobeDisplay* oobe_display_; 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // State of Usage stat/error reporting checkbox on EULA screen 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // during wizard lifetime. 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool usage_statistics_reporting_; 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If true then update check is cancelled and enrollment is started after 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // EULA is accepted. 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool skip_update_enroll_after_eula_; 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Time when the EULA was accepted. Used to measure the duration from the EULA 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // acceptance until the Sign-In screen is displayed. 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time time_eula_accepted_; 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserverList<Observer> observer_list_; 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool login_screen_started_; 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(EnterpriseEnrollmentScreenTest, TestCancel); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WizardControllerFlowTest, Accelerators); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class WizardControllerFlowTest; 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class WizardInProcessBrowserTest; 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WizardController); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_CONTROLLER_H_ 298