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