// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_DISPLAY_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_DISPLAY_H_
#include <string>
#include "base/basictypes.h"
#include "base/callback.h"
namespace chromeos {
class AppLaunchSplashScreenActor;
class EnrollmentScreenActor;
class ErrorScreenActor;
class EulaScreenActor;
class KioskAutolaunchScreenActor;
class KioskEnableScreenActor;
class NetworkScreenActor;
class ResetScreenActor;
class TermsOfServiceScreenActor;
class UpdateScreenActor;
class UserImageScreenActor;
// TODO(altimofeev): use real actors instead
class ViewScreenDelegate;
class WizardScreen;
class WrongHWIDScreenActor;
class LocallyManagedUserCreationScreenHandler;
// Interface which is used by WizardController to do actual OOBE screens
// showing. Also it provides actors for the OOBE screens.
class OobeDisplay {
public:
enum Screen {
SCREEN_OOBE_NETWORK = 0,
SCREEN_OOBE_EULA,
SCREEN_OOBE_UPDATE,
SCREEN_OOBE_ENROLLMENT,
SCREEN_GAIA_SIGNIN,
SCREEN_ACCOUNT_PICKER,
SCREEN_KIOSK_AUTOLAUNCH,
SCREEN_KIOSK_ENABLE,
SCREEN_ERROR_MESSAGE,
SCREEN_USER_IMAGE_PICKER,
SCREEN_TPM_ERROR,
SCREEN_PASSWORD_CHANGED,
SCREEN_CREATE_MANAGED_USER_DIALOG,
SCREEN_CREATE_MANAGED_USER_FLOW,
SCREEN_TERMS_OF_SERVICE,
SCREEN_WRONG_HWID,
SCREEN_APP_LAUNCH_SPLASH,
SCREEN_CONFIRM_PASSWORD,
SCREEN_MESSAGE_BOX,
SCREEN_UNKNOWN
};
virtual ~OobeDisplay() {}
// Shows the given screen.
virtual void ShowScreen(WizardScreen* screen) = 0;
// Hides the given screen.
virtual void HideScreen(WizardScreen* screen) = 0;
// Pointers to actors which should be used by the specific screens. Actors
// must be owned by the OobeDisplay implementation.
virtual UpdateScreenActor* GetUpdateScreenActor() = 0;
virtual NetworkScreenActor* GetNetworkScreenActor() = 0;
virtual EulaScreenActor* GetEulaScreenActor() = 0;
virtual EnrollmentScreenActor* GetEnrollmentScreenActor() = 0;
virtual ResetScreenActor* GetResetScreenActor() = 0;
virtual KioskAutolaunchScreenActor* GetKioskAutolaunchScreenActor() = 0;
virtual KioskEnableScreenActor* GetKioskEnableScreenActor() = 0;
virtual TermsOfServiceScreenActor* GetTermsOfServiceScreenActor() = 0;
virtual UserImageScreenActor* GetUserImageScreenActor() = 0;
virtual ErrorScreenActor* GetErrorScreenActor() = 0;
virtual WrongHWIDScreenActor* GetWrongHWIDScreenActor() = 0;
virtual LocallyManagedUserCreationScreenHandler*
GetLocallyManagedUserCreationScreenActor() = 0;
virtual AppLaunchSplashScreenActor* GetAppLaunchSplashScreenActor() = 0;
// Returns if JS side is fully loaded and ready to accept messages.
// If |false| is returned, then |display_is_ready_callback| is stored
// and will be called once display is ready.
virtual bool IsJSReady(const base::Closure& display_is_ready_callback) = 0;
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_DISPLAY_H_