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