oobe_ui.h revision a02191e04bc25c4935f804f2c080ae28663d096d
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. 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeNetwork[]; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeEula[]; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeUpdate[]; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenOobeEnrollment[]; 59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch static const char kScreenOobeReset[]; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenGaiaSignin[]; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenAccountPicker[]; 62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) static const char kScreenKioskAutolaunch[]; 637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static const char kScreenKioskEnable[]; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenErrorMessage[]; 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenUserImagePicker[]; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenTpmError[]; 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenPasswordChanged[]; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenManagedUserCreationFlow[]; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenTermsOfService[]; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kScreenWrongHWID[]; 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static const char kScreenAppLaunchSplash[]; 72d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) static const char kScreenConfirmPassword[]; 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static const char kScreenFatalError[]; 74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch static const char kScreenHIDDetection[]; 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) OobeUI(content::WebUI* web_ui, const GURL& url); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OobeUI(); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OobeDisplay implementation: 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowScreen(WizardScreen* screen) OVERRIDE; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HideScreen(WizardScreen* screen) OVERRIDE; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual UpdateScreenActor* GetUpdateScreenActor() OVERRIDE; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual NetworkScreenActor* GetNetworkScreenActor() OVERRIDE; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual EulaScreenActor* GetEulaScreenActor() OVERRIDE; 85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual EnrollmentScreenActor* GetEnrollmentScreenActor() OVERRIDE; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ResetScreenActor* GetResetScreenActor() OVERRIDE; 87868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual KioskAutolaunchScreenActor* GetKioskAutolaunchScreenActor() OVERRIDE; 887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual KioskEnableScreenActor* GetKioskEnableScreenActor() OVERRIDE; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual TermsOfServiceScreenActor* 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTermsOfServiceScreenActor() OVERRIDE; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual UserImageScreenActor* GetUserImageScreenActor() OVERRIDE; 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ErrorScreenActor* GetErrorScreenActor() OVERRIDE; 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual WrongHWIDScreenActor* GetWrongHWIDScreenActor() OVERRIDE; 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual LocallyManagedUserCreationScreenHandler* 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetLocallyManagedUserCreationScreenActor() OVERRIDE; 963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual AppLaunchSplashScreenActor* 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GetAppLaunchSplashScreenActor() OVERRIDE; 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool IsJSReady(const base::Closure& display_is_ready_callback) 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OVERRIDE; 100a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual HIDDetectionScreenActor* GetHIDDetectionScreenActor() OVERRIDE; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Collects localized strings from the owned handlers. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetLocalizedStrings(base::DictionaryValue* localized_strings); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initializes the handlers. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void InitializeHandlers(); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Invoked after the async assets load. The screen handler that has the same 109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // async assets load id will be initialized. 110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnScreenAssetsLoaded(const std::string& async_assets_load_id); 111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows or hides OOBE UI elements. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowOobeUI(bool show); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(rkc): Create a separate retail mode login UI and move this method 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // there - see crbug.com/157671. 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows a login spinner for retail mode logins. 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowRetailModeLoginSpinner(); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows the signin screen. 121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void ShowSigninScreen(const LoginScreenContext& context, 122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SigninScreenHandlerDelegate* delegate, 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NativeWindowDelegate* native_window_delegate); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resets the delegate set in ShowSigninScreen. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResetSigninScreenHandlerDelegate(); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Add and remove observers for screen change events. 12958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void AddObserver(Observer* observer); 13058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void RemoveObserver(Observer* observer); 13158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Screen current_screen() const { return current_screen_; } 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& GetScreenName(Screen screen) const; 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SigninScreenHandler* signin_screen_handler_for_test() { 1371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return signin_screen_handler_; 1381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Initializes |screen_ids_| and |screen_names_| structures. 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InitializeScreenMaps(); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddScreenHandler(BaseScreenHandler* handler); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // CoreOobeHandler::Delegate implementation: 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnCurrentScreenChanged(const std::string& screen) OVERRIDE; 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Type of UI. 1503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string display_type_; 1513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to NetworkStateInformer that handles changes in network 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // state. 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<NetworkStateInformer> network_state_informer_; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to CoreOobeHandler that handles common requests of Oobe page. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CoreOobeHandler* core_handler_; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1592385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // Reference to NetworkDropdownHandler that handles interaction with 1602385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // network dropdown. 1612385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch NetworkDropdownHandler* network_dropdown_handler_; 1622385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Screens actors. Note, OobeUI owns them via |handlers_|, not directly here. 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UpdateScreenHandler* update_screen_handler_; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkScreenActor* network_screen_actor_; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EulaScreenActor* eula_screen_actor_; 167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EnrollmentScreenActor* enrollment_screen_actor_; 168a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch HIDDetectionScreenActor* hid_detection_screen_actor_; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetScreenActor* reset_screen_actor_; 170868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) KioskAutolaunchScreenActor* autolaunch_screen_actor_; 1717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) KioskEnableScreenActor* kiosk_enable_screen_actor_; 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WrongHWIDScreenActor* wrong_hwid_screen_actor_; 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LocallyManagedUserCreationScreenHandler* 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) locally_managed_user_creation_screen_actor_; 1753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) AppLaunchSplashScreenActor* app_launch_splash_screen_actor_; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to ErrorScreenHandler that handles error screen 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // requests and forward calls from native code to JS side. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ErrorScreenHandler* error_screen_handler_; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Reference to GaiaScreenHandler that handles gaia screen requests and 182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // forwards calls from native code to JS side. 183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GaiaScreenHandler* gaia_screen_handler_; 184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reference to SigninScreenHandler that handles sign-in screen requests and 186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // forwards calls from native code to JS side. 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SigninScreenHandler* signin_screen_handler_; 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TermsOfServiceScreenActor* terms_of_service_screen_actor_; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserImageScreenActor* user_image_screen_actor_; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<BaseScreenHandler*> handlers_; // Non-owning pointers. 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) KioskAppMenuHandler* kiosk_app_menu_handler_; // Non-owning pointers. 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Id of the current oobe/login screen. 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Screen current_screen_; 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maps JS screen names to screen ids. 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::map<std::string, Screen> screen_ids_; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maps screen ids to JS screen names. 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<std::string> screen_names_; 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Flag that indicates whether JS part is fully loaded and ready to accept 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // calls. 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool ready_; 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Callbacks to notify when JS part is fully loaded and ready to accept calls. 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<base::Closure> ready_callbacks_; 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 21258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // List of registered observers. 21358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ObserverList<Observer> observer_list_; 21458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(OobeUI); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_OOBE_UI_H_ 221