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