blob: 216405b56af90e8c2d2803a80201db8eedb9f92c [file] [log] [blame]
// 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.
#include "chrome/browser/chromeos/login/screens/screen_factory.h"
#include "chrome/browser/chromeos/login/enrollment/enrollment_screen.h"
#include "chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.h"
#include "chrome/browser/chromeos/login/screens/base_screen.h"
#include "chrome/browser/chromeos/login/screens/error_screen.h"
#include "chrome/browser/chromeos/login/screens/eula_screen.h"
#include "chrome/browser/chromeos/login/screens/kiosk_autolaunch_screen.h"
#include "chrome/browser/chromeos/login/screens/network_screen.h"
#include "chrome/browser/chromeos/login/screens/reset_screen.h"
#include "chrome/browser/chromeos/login/screens/terms_of_service_screen.h"
#include "chrome/browser/chromeos/login/screens/update_screen.h"
#include "chrome/browser/chromeos/login/screens/user_image_screen.h"
#include "chrome/browser/chromeos/login/screens/wrong_hwid_screen.h"
namespace chromeos {
// static
const char ScreenFactory::kEnrollmentScreenId[] = "enroll";
const char ScreenFactory::kErrorScreenId[] = "error-message";
const char ScreenFactory::kEulaScreenId[] = "eula";
const char ScreenFactory::kKioskAutolaunchScreenId[] = "autolaunch";
const char ScreenFactory::kLocallyManagedUserCreationScreenId[] =
"locally-managed-user-creation-flow";
const char ScreenFactory::kNetworkScreenId[] = "network";
const char ScreenFactory::kResetScreenId[] = "reset";
const char ScreenFactory::kTermsOfServiceScreenId[] = "tos";
const char ScreenFactory::kUpdateScreenId[] = "update";
const char ScreenFactory::kUserImageScreenId[] = "image";
const char ScreenFactory::kWrongHWIDScreenId[] = "wrong-hwid";
const char ScreenFactory::kLoginScreenId[] = "login";
ScreenFactory::ScreenFactory(ScreenObserver* observer,
OobeDisplay* oobe_display)
: observer_(observer),
oobe_display_(oobe_display) {
}
ScreenFactory::~ScreenFactory() {
}
BaseScreen* ScreenFactory::CreateScreen(const std::string& id) {
BaseScreen* result = CreateScreenImpl(id);
DCHECK_EQ(id, result->GetID());
return result;
}
BaseScreen* ScreenFactory::CreateScreenImpl(const std::string& id) {
if (id == kNetworkScreenId) {
return new NetworkScreen(observer_, oobe_display_->GetNetworkScreenActor());
} else if (id == kUpdateScreenId) {
return new UpdateScreen(observer_, oobe_display_->GetUpdateScreenActor());
} else if (id == kUserImageScreenId) {
return new UserImageScreen(observer_,
oobe_display_->GetUserImageScreenActor());
} else if (id == kEulaScreenId) {
return new EulaScreen(observer_, oobe_display_->GetEulaScreenActor());
} else if (id == kEnrollmentScreenId) {
return new EnrollmentScreen(observer_,
oobe_display_->GetEnrollmentScreenActor());
} else if (id == kResetScreenId) {
return new ResetScreen(observer_, oobe_display_->GetResetScreenActor());
} else if (id == kKioskAutolaunchScreenId) {
return new KioskAutolaunchScreen(
observer_, oobe_display_->GetKioskAutolaunchScreenActor());
} else if (id == kTermsOfServiceScreenId) {
return new TermsOfServiceScreen(observer_,
oobe_display_->GetTermsOfServiceScreenActor());
} else if (id == kWrongHWIDScreenId) {
return new WrongHWIDScreen(
observer_,
oobe_display_->GetWrongHWIDScreenActor());
} else if (id == kLocallyManagedUserCreationScreenId) {
return new LocallyManagedUserCreationScreen(
observer_,
oobe_display_->GetLocallyManagedUserCreationScreenActor());
} else if (id == kErrorScreenId) {
return new ErrorScreen(observer_, oobe_display_->GetErrorScreenActor());
}
// TODO(antrim): support for login screen.
NOTREACHED() << "Unknown screen ID: " << id;
return NULL;
}
} // namespace chromeos