oobe_ui.h revision 010d83a9304c5a91596085d917d248abff47903a
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" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/login/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; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CoreOobeHandler; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ErrorScreenHandler; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class KioskAppMenuHandler; 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class KioskEnableScreenActor; 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class LoginScreenContext; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NativeWindowDelegate; 322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochclass NetworkDropdownHandler; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkStateInformer; 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class GaiaScreenHandler; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SigninScreenHandler; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SigninScreenHandlerDelegate; 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class UpdateScreenHandler; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A custom WebUI that defines datasource for out-of-box-experience (OOBE) UI: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - welcome screen (setup language/keyboard/network). 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - eula screen (CrOS (+ OEM) EULA content/TPM password/crash reporting). 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - update screen. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OobeUI : public OobeDisplay, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public content::WebUIController, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public CoreOobeHandler::Delegate { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) class Observer { 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~Observer() {} 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnCurrentScreenChanged( 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) Screen current_screen, Screen new_screen) = 0; 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) }; 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // JS oobe/login screens names. 55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static const char kScreenOobeHIDDetection[]; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeNetwork[]; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeEula[]; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeUpdate[]; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeEnrollment[]; 60effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch static const char kScreenOobeReset[]; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenGaiaSignin[]; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenAccountPicker[]; 63868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) static const char kScreenKioskAutolaunch[]; 647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static const char kScreenKioskEnable[]; 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenErrorMessage[]; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenUserImagePicker[]; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenTpmError[]; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenPasswordChanged[]; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenManagedUserCreationFlow[]; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenTermsOfService[]; 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenWrongHWID[]; 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static const char kScreenAppLaunchSplash[]; 73d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) static const char kScreenConfirmPassword[]; 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static const char kScreenFatalError[]; 75a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static const char kScreenHIDDetection[]; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) OobeUI(content::WebUI* web_ui, const GURL& url); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OobeUI(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OobeDisplay implementation: 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowScreen(WizardScreen* screen) OVERRIDE; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HideScreen(WizardScreen* screen) OVERRIDE; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual UpdateScreenActor* GetUpdateScreenActor() OVERRIDE; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual NetworkScreenActor* GetNetworkScreenActor() OVERRIDE; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual EulaScreenActor* GetEulaScreenActor() OVERRIDE; 86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual EnrollmentScreenActor* GetEnrollmentScreenActor() OVERRIDE; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ResetScreenActor* GetResetScreenActor() OVERRIDE; 88868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual KioskAutolaunchScreenActor* GetKioskAutolaunchScreenActor() OVERRIDE; 897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual KioskEnableScreenActor* GetKioskEnableScreenActor() OVERRIDE; 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual TermsOfServiceScreenActor* 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTermsOfServiceScreenActor() OVERRIDE; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual UserImageScreenActor* GetUserImageScreenActor() OVERRIDE; 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ErrorScreenActor* GetErrorScreenActor() OVERRIDE; 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual WrongHWIDScreenActor* GetWrongHWIDScreenActor() OVERRIDE; 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual LocallyManagedUserCreationScreenHandler* 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetLocallyManagedUserCreationScreenActor() OVERRIDE; 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual AppLaunchSplashScreenActor* 983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetAppLaunchSplashScreenActor() OVERRIDE; 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool IsJSReady(const base::Closure& display_is_ready_callback) 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OVERRIDE; 101a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual HIDDetectionScreenActor* GetHIDDetectionScreenActor() OVERRIDE; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Collects localized strings from the owned handlers. 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetLocalizedStrings(base::DictionaryValue* localized_strings); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initializes the handlers. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitializeHandlers(); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Invoked after the async assets load. The screen handler that has the same 110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // async assets load id will be initialized. 111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnScreenAssetsLoaded(const std::string& async_assets_load_id); 112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows or hides OOBE UI elements. 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowOobeUI(bool show); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(rkc): Create a separate retail mode login UI and move this method 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // there - see crbug.com/157671. 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows a login spinner for retail mode logins. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowRetailModeLoginSpinner(); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the signin screen. 122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void ShowSigninScreen(const LoginScreenContext& context, 123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SigninScreenHandlerDelegate* delegate, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeWindowDelegate* native_window_delegate); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resets the delegate set in ShowSigninScreen. 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResetSigninScreenHandlerDelegate(); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Add and remove observers for screen change events. 13058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void AddObserver(Observer* observer); 13158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void RemoveObserver(Observer* observer); 13258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Screen current_screen() const { return current_screen_; } 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch Screen previous_screen() const { return previous_screen_; } 1360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& GetScreenName(Screen screen) const; 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SigninScreenHandler* signin_screen_handler_for_test() { 1401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return signin_screen_handler_; 1411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Initializes |screen_ids_| and |screen_names_| structures. 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InitializeScreenMaps(); 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddScreenHandler(BaseScreenHandler* handler); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // CoreOobeHandler::Delegate implementation: 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnCurrentScreenChanged(const std::string& screen) OVERRIDE; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Type of UI. 1533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string display_type_; 1543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to NetworkStateInformer that handles changes in network 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // state. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<NetworkStateInformer> network_state_informer_; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to CoreOobeHandler that handles common requests of Oobe page. 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CoreOobeHandler* core_handler_; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1622385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // Reference to NetworkDropdownHandler that handles interaction with 1632385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // network dropdown. 1642385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch NetworkDropdownHandler* network_dropdown_handler_; 1652385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Screens actors. Note, OobeUI owns them via |handlers_|, not directly here. 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UpdateScreenHandler* update_screen_handler_; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkScreenActor* network_screen_actor_; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EulaScreenActor* eula_screen_actor_; 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnrollmentScreenActor* enrollment_screen_actor_; 171a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch HIDDetectionScreenActor* hid_detection_screen_actor_; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetScreenActor* reset_screen_actor_; 173868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) KioskAutolaunchScreenActor* autolaunch_screen_actor_; 1747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) KioskEnableScreenActor* kiosk_enable_screen_actor_; 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WrongHWIDScreenActor* wrong_hwid_screen_actor_; 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LocallyManagedUserCreationScreenHandler* 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) locally_managed_user_creation_screen_actor_; 1783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) AppLaunchSplashScreenActor* app_launch_splash_screen_actor_; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to ErrorScreenHandler that handles error screen 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // requests and forward calls from native code to JS side. 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ErrorScreenHandler* error_screen_handler_; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Reference to GaiaScreenHandler that handles gaia screen requests and 185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // forwards calls from native code to JS side. 186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GaiaScreenHandler* gaia_screen_handler_; 187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to SigninScreenHandler that handles sign-in screen requests and 189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // forwards calls from native code to JS side. 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SigninScreenHandler* signin_screen_handler_; 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TermsOfServiceScreenActor* terms_of_service_screen_actor_; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserImageScreenActor* user_image_screen_actor_; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<BaseScreenHandler*> handlers_; // Non-owning pointers. 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) KioskAppMenuHandler* kiosk_app_menu_handler_; // Non-owning pointers. 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Id of the current oobe/login screen. 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Screen current_screen_; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Id of the previous oobe/login screen. 2030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch Screen previous_screen_; 2040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maps JS screen names to screen ids. 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::map<std::string, Screen> screen_ids_; 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maps screen ids to JS screen names. 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::string> screen_names_; 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Flag that indicates whether JS part is fully loaded and ready to accept 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // calls. 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool ready_; 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Callbacks to notify when JS part is fully loaded and ready to accept calls. 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<base::Closure> ready_callbacks_; 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 21858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // List of registered observers. 21958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ObserverList<Observer> observer_list_; 22058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(OobeUI); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_OOBE_UI_H_ 227