1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_DISPLAY_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_DISPLAY_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/callback.h"
12
13namespace chromeos {
14
15class EnrollmentScreenActor;
16class ErrorScreenActor;
17class EulaScreenActor;
18class KioskAutolaunchScreenActor;
19class KioskEnableScreenActor;
20class NetworkScreenActor;
21class ResetScreenActor;
22class TermsOfServiceScreenActor;
23class UpdateScreenActor;
24class UserImageScreenActor;
25// TODO(altimofeev): use real actors instead
26class ViewScreenDelegate;
27class WizardScreen;
28class WrongHWIDScreenActor;
29class LocallyManagedUserCreationScreenHandler;
30
31// Interface which is used by WizardController to do actual OOBE screens
32// showing. Also it provides actors for the OOBE screens.
33class OobeDisplay {
34 public:
35  enum Screen {
36    SCREEN_OOBE_NETWORK = 0,
37    SCREEN_OOBE_EULA,
38    SCREEN_OOBE_UPDATE,
39    SCREEN_OOBE_ENROLLMENT,
40    SCREEN_GAIA_SIGNIN,
41    SCREEN_ACCOUNT_PICKER,
42    SCREEN_KIOSK_AUTOLAUNCH,
43    SCREEN_KIOSK_ENABLE,
44    SCREEN_ERROR_MESSAGE,
45    SCREEN_USER_IMAGE_PICKER,
46    SCREEN_TPM_ERROR,
47    SCREEN_PASSWORD_CHANGED,
48    SCREEN_CREATE_MANAGED_USER_DIALOG,
49    SCREEN_CREATE_MANAGED_USER_FLOW,
50    SCREEN_TERMS_OF_SERVICE,
51    SCREEN_WRONG_HWID,
52    SCREEN_UNKNOWN
53  };
54
55  virtual ~OobeDisplay() {}
56
57  // Shows the given screen.
58  virtual void ShowScreen(WizardScreen* screen) = 0;
59
60  // Hides the given screen.
61  virtual void HideScreen(WizardScreen* screen) = 0;
62
63  // Pointers to actors which should be used by the specific screens. Actors
64  // must be owned by the OobeDisplay implementation.
65  virtual UpdateScreenActor* GetUpdateScreenActor() = 0;
66  virtual NetworkScreenActor* GetNetworkScreenActor() = 0;
67  virtual EulaScreenActor* GetEulaScreenActor() = 0;
68  virtual EnrollmentScreenActor* GetEnrollmentScreenActor() = 0;
69  virtual ResetScreenActor* GetResetScreenActor() = 0;
70  virtual KioskAutolaunchScreenActor* GetKioskAutolaunchScreenActor() = 0;
71  virtual KioskEnableScreenActor* GetKioskEnableScreenActor() = 0;
72  virtual TermsOfServiceScreenActor* GetTermsOfServiceScreenActor() = 0;
73  virtual UserImageScreenActor* GetUserImageScreenActor() = 0;
74  virtual ErrorScreenActor* GetErrorScreenActor() = 0;
75  virtual WrongHWIDScreenActor* GetWrongHWIDScreenActor() = 0;
76  virtual LocallyManagedUserCreationScreenHandler*
77      GetLocallyManagedUserCreationScreenActor() = 0;
78
79  // Returns if JS side is fully loaded and ready to accept messages.
80  // If |false| is returned, then |display_is_ready_callback| is stored
81  // and will be called once display is ready.
82  virtual bool IsJSReady(const base::Closure& display_is_ready_callback) = 0;
83};
84
85}  // namespace chromeos
86
87#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_DISPLAY_H_
88