15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 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_UI_WEBUI_CHROMEOS_LOGIN_OOBE_UI_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_OOBE_UI_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <map> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/observer_list.h" 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/ui/oobe_display.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_ui_controller.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue; 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace base 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class AppLaunchSplashScreenActor; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BaseScreenHandler; 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass ControllerPairingScreenActor; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ErrorScreenHandler; 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass HostPairingScreenActor; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class KioskAppMenuHandler; 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class KioskEnableScreenActor; 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class LoginScreenContext; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NativeWindowDelegate; 332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochclass NetworkDropdownHandler; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkStateInformer; 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class GaiaScreenHandler; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SigninScreenHandler; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SigninScreenHandlerDelegate; 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class UpdateScreenHandler; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A custom WebUI that defines datasource for out-of-box-experience (OOBE) UI: 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - welcome screen (setup language/keyboard/network). 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - eula screen (CrOS (+ OEM) EULA content/TPM password/crash reporting). 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - update screen. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OobeUI : public OobeDisplay, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public content::WebUIController, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public CoreOobeHandler::Delegate { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) class Observer { 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~Observer() {} 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnCurrentScreenChanged( 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Screen current_screen, Screen new_screen) = 0; 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) }; 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // List of known types of OobeUI. Type added as path in chrome://oobe url, for 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // example chrome://oobe/user-adding. 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static const char kOobeDisplay[]; 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static const char kLoginDisplay[]; 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static const char kLockDisplay[]; 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static const char kUserAddingDisplay[]; 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static const char kAppLaunchSplashDisplay[]; 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // JS oobe/login screens names. 64010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static const char kScreenOobeHIDDetection[]; 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeNetwork[]; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeEula[]; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeUpdate[]; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeEnrollment[]; 69effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch static const char kScreenOobeReset[]; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenGaiaSignin[]; 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenAccountPicker[]; 72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) static const char kScreenKioskAutolaunch[]; 737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static const char kScreenKioskEnable[]; 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenErrorMessage[]; 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenUserImagePicker[]; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenTpmError[]; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenPasswordChanged[]; 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static const char kScreenSupervisedUserCreationFlow[]; 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenTermsOfService[]; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenWrongHWID[]; 8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) static const char kScreenAutoEnrollmentCheck[]; 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static const char kScreenAppLaunchSplash[]; 83d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) static const char kScreenConfirmPassword[]; 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static const char kScreenFatalError[]; 85a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static const char kScreenHIDDetection[]; 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static const char kScreenControllerPairing[]; 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static const char kScreenHostPairing[]; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) OobeUI(content::WebUI* web_ui, const GURL& url); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OobeUI(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OobeDisplay implementation: 93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual CoreOobeActor* GetCoreOobeActor() OVERRIDE; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual UpdateScreenActor* GetUpdateScreenActor() OVERRIDE; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual NetworkScreenActor* GetNetworkScreenActor() OVERRIDE; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual EulaScreenActor* GetEulaScreenActor() OVERRIDE; 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual EnrollmentScreenActor* GetEnrollmentScreenActor() OVERRIDE; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ResetScreenActor* GetResetScreenActor() OVERRIDE; 99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual KioskAutolaunchScreenActor* GetKioskAutolaunchScreenActor() OVERRIDE; 1007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual KioskEnableScreenActor* GetKioskEnableScreenActor() OVERRIDE; 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual TermsOfServiceScreenActor* 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTermsOfServiceScreenActor() OVERRIDE; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual UserImageScreenActor* GetUserImageScreenActor() OVERRIDE; 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ErrorScreenActor* GetErrorScreenActor() OVERRIDE; 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual WrongHWIDScreenActor* GetWrongHWIDScreenActor() OVERRIDE; 10646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual AutoEnrollmentCheckScreenActor* 10746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) GetAutoEnrollmentCheckScreenActor() OVERRIDE; 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual SupervisedUserCreationScreenHandler* 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetSupervisedUserCreationScreenActor() OVERRIDE; 1103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual AppLaunchSplashScreenActor* 1113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetAppLaunchSplashScreenActor() OVERRIDE; 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool IsJSReady(const base::Closure& display_is_ready_callback) 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OVERRIDE; 114a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual HIDDetectionScreenActor* GetHIDDetectionScreenActor() OVERRIDE; 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ControllerPairingScreenActor* GetControllerPairingScreenActor() 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch OVERRIDE; 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual HostPairingScreenActor* GetHostPairingScreenActor() OVERRIDE; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Collects localized strings from the owned handlers. 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetLocalizedStrings(base::DictionaryValue* localized_strings); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initializes the handlers. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitializeHandlers(); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Invoked after the async assets load. The screen handler that has the same 126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // async assets load id will be initialized. 127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnScreenAssetsLoaded(const std::string& async_assets_load_id); 128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows or hides OOBE UI elements. 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowOobeUI(bool show); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(rkc): Create a separate retail mode login UI and move this method 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // there - see crbug.com/157671. 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows a login spinner for retail mode logins. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowRetailModeLoginSpinner(); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the signin screen. 138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void ShowSigninScreen(const LoginScreenContext& context, 139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SigninScreenHandlerDelegate* delegate, 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeWindowDelegate* native_window_delegate); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resets the delegate set in ShowSigninScreen. 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResetSigninScreenHandlerDelegate(); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Add and remove observers for screen change events. 14658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void AddObserver(Observer* observer); 14758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void RemoveObserver(Observer* observer); 14858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Screen current_screen() const { return current_screen_; } 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch Screen previous_screen() const { return previous_screen_; } 1520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 153cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& display_type() const { return display_type_; } 154cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& GetScreenName(Screen screen) const; 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SigninScreenHandler* signin_screen_handler_for_test() { 1581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return signin_screen_handler_; 1591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Initializes |screen_ids_| and |screen_names_| structures. 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InitializeScreenMaps(); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddScreenHandler(BaseScreenHandler* handler); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // CoreOobeHandler::Delegate implementation: 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnCurrentScreenChanged(const std::string& screen) OVERRIDE; 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Type of UI. 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string display_type_; 1723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to NetworkStateInformer that handles changes in network 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // state. 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<NetworkStateInformer> network_state_informer_; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to CoreOobeHandler that handles common requests of Oobe page. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CoreOobeHandler* core_handler_; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1802385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // Reference to NetworkDropdownHandler that handles interaction with 1812385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // network dropdown. 1822385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch NetworkDropdownHandler* network_dropdown_handler_; 1832385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Screens actors. Note, OobeUI owns them via |handlers_|, not directly here. 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UpdateScreenHandler* update_screen_handler_; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkScreenActor* network_screen_actor_; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EulaScreenActor* eula_screen_actor_; 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnrollmentScreenActor* enrollment_screen_actor_; 189a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch HIDDetectionScreenActor* hid_detection_screen_actor_; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetScreenActor* reset_screen_actor_; 191868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) KioskAutolaunchScreenActor* autolaunch_screen_actor_; 1927d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) KioskEnableScreenActor* kiosk_enable_screen_actor_; 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WrongHWIDScreenActor* wrong_hwid_screen_actor_; 19446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) AutoEnrollmentCheckScreenActor* auto_enrollment_check_screen_actor_; 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SupervisedUserCreationScreenHandler* 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) supervised_user_creation_screen_actor_; 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) AppLaunchSplashScreenActor* app_launch_splash_screen_actor_; 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ControllerPairingScreenActor* controller_pairing_screen_actor_; 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch HostPairingScreenActor* host_pairing_screen_actor_; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to ErrorScreenHandler that handles error screen 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // requests and forward calls from native code to JS side. 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ErrorScreenHandler* error_screen_handler_; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Reference to GaiaScreenHandler that handles gaia screen requests and 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // forwards calls from native code to JS side. 207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GaiaScreenHandler* gaia_screen_handler_; 208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to SigninScreenHandler that handles sign-in screen requests and 210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // forwards calls from native code to JS side. 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SigninScreenHandler* signin_screen_handler_; 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TermsOfServiceScreenActor* terms_of_service_screen_actor_; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserImageScreenActor* user_image_screen_actor_; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<BaseScreenHandler*> handlers_; // Non-owning pointers. 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) KioskAppMenuHandler* kiosk_app_menu_handler_; // Non-owning pointers. 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Id of the current oobe/login screen. 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Screen current_screen_; 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Id of the previous oobe/login screen. 2240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch Screen previous_screen_; 2250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maps JS screen names to screen ids. 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::map<std::string, Screen> screen_ids_; 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maps screen ids to JS screen names. 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::string> screen_names_; 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Flag that indicates whether JS part is fully loaded and ready to accept 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // calls. 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool ready_; 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Callbacks to notify when JS part is fully loaded and ready to accept calls. 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<base::Closure> ready_callbacks_; 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 23958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // List of registered observers. 24058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ObserverList<Observer> observer_list_; 24158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(OobeUI); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_OOBE_UI_H_ 248