summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-13 11:55:57 +0000
committeravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-13 11:55:57 +0000
commit22f9708089b581832fa67bd77c7258b942b542bf (patch)
treeb4293f94dc4a740f1252be8b439e0a7c6d568475 /chrome
parent06fb4d86a605caeab6c26cdbe7c0cb506030fd43 (diff)
downloadchromium_src-22f9708089b581832fa67bd77c7258b942b542bf.zip
chromium_src-22f9708089b581832fa67bd77c7258b942b542bf.tar.gz
chromium_src-22f9708089b581832fa67bd77c7258b942b542bf.tar.bz2
Removed old login screen from source.
Deleted kEnableLoginImages flag. BUG=chromium-os:7214 TEST=Old login screen should not show up even under automation tests for login. Review URL: http://codereview.chromium.org/5809001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71313 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/automation/automation_provider_chromeos.cc17
-rw-r--r--chrome/browser/chromeos/login/existing_user_controller.cc20
-rw-r--r--chrome/browser/chromeos/login/existing_user_controller.h23
-rw-r--r--chrome/browser/chromeos/login/existing_user_controller_browsertest.cc113
-rw-r--r--chrome/browser/chromeos/login/login_screen.cc142
-rw-r--r--chrome/browser/chromeos/login/login_screen.h90
-rw-r--r--chrome/browser/chromeos/login/login_screen_browsertest.cc140
-rw-r--r--chrome/browser/chromeos/login/mock_user_manager.h2
-rw-r--r--chrome/browser/chromeos/login/new_user_view.h3
-rw-r--r--chrome/browser/chromeos/login/screen_observer.h3
-rw-r--r--chrome/browser/chromeos/login/user_manager.h2
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.cc119
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.h25
-rw-r--r--chrome/browser/chromeos/login/wizard_controller_browsertest.cc47
-rw-r--r--chrome/browser/chromeos/login/wizard_in_process_browser_test.h3
-rw-r--r--chrome/chrome_browser.gypi2
-rw-r--r--chrome/chrome_tests.gypi2
-rw-r--r--chrome/common/chrome_switches.cc3
-rw-r--r--chrome/common/chrome_switches.h1
19 files changed, 206 insertions, 551 deletions
diff --git a/chrome/browser/automation/automation_provider_chromeos.cc b/chrome/browser/automation/automation_provider_chromeos.cc
index 6e1cc2b..8a25f98 100644
--- a/chrome/browser/automation/automation_provider_chromeos.cc
+++ b/chrome/browser/automation/automation_provider_chromeos.cc
@@ -5,23 +5,18 @@
#include "chrome/browser/automation/automation_provider.h"
#include "chrome/browser/automation/automation_provider_observers.h"
-#include "chrome/browser/chromeos/login/login_screen.h"
-#include "chrome/browser/chromeos/login/user_manager.h"
-#include "chrome/browser/chromeos/login/wizard_controller.h"
-#include "views/window/window_gtk.h"
+#include "chrome/browser/chromeos/login/existing_user_controller.h"
+
+using chromeos::ExistingUserController;
void AutomationProvider::LoginWithUserAndPass(const std::string& username,
const std::string& password,
IPC::Message* reply_message) {
- WizardController* controller = WizardController::default_controller();
- chromeos::NewUserView* new_user_view =
- controller->GetLoginScreen()->view();
-
- new_user_view->SetUsername(username);
- new_user_view->SetPassword(password);
+ ExistingUserController* controller =
+ ExistingUserController::current_controller();
// Set up an observer (it will delete itself).
new LoginManagerObserver(this, reply_message);
- new_user_view->Login();
+ controller->LoginNewUser(username, password);
}
diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc
index 28a2fef..185f3e4 100644
--- a/chrome/browser/chromeos/login/existing_user_controller.cc
+++ b/chrome/browser/chromeos/login/existing_user_controller.cc
@@ -117,7 +117,7 @@ void EnableTooltipsIfNeeded(const std::vector<UserController*>& controllers) {
} // namespace
ExistingUserController*
- ExistingUserController::delete_scheduled_instance_ = NULL;
+ ExistingUserController::current_controller_ = NULL;
// TODO(xiyuan): Wait for the cached settings update before using them.
ExistingUserController::ExistingUserController(
@@ -131,8 +131,9 @@ ExistingUserController::ExistingUserController(
bubble_(NULL),
user_settings_(new UserCrosSettingsProvider),
method_factory_(this) {
- if (delete_scheduled_instance_)
- delete_scheduled_instance_->Delete();
+ if (current_controller_)
+ current_controller_->Delete();
+ current_controller_ = this;
// Calculate the max number of users from available screen size.
bool show_guest = UserCrosSettingsProvider::cached_allow_guest();
@@ -247,10 +248,11 @@ ExistingUserController::~ExistingUserController() {
STLDeleteElements(&controllers_);
STLDeleteElements(&invisible_controllers_);
+ DCHECK(current_controller_ != NULL);
+ current_controller_ = NULL;
}
void ExistingUserController::Delete() {
- delete_scheduled_instance_ = NULL;
delete this;
}
@@ -288,7 +290,10 @@ void ExistingUserController::Login(UserController* source,
// Use the same LoginPerformer for subsequent login as it has state
// such as CAPTCHA challenge token & corresponding user input.
if (!login_performer_.get() || num_login_attempts_ <= 1) {
- login_performer_.reset(new LoginPerformer(this));
+ LoginPerformer::Delegate* delegate = this;
+ if (login_performer_delegate_.get())
+ delegate = login_performer_delegate_.get();
+ login_performer_.reset(new LoginPerformer(delegate));
}
login_performer_->Login(controllers_[selected_view_index_]->user().email(),
UTF16ToUTF8(password));
@@ -361,11 +366,6 @@ void ExistingUserController::ActivateWizard(const std::string& screen_name) {
controller->set_start_url(start_url_);
controller->Show();
- // And schedule us for deletion. We delay for a second as the window manager
- // is doing an animation with our windows.
- DCHECK(!delete_scheduled_instance_);
- delete_scheduled_instance_ = this;
-
delete_timer_.Start(base::TimeDelta::FromSeconds(1), this,
&ExistingUserController::Delete);
}
diff --git a/chrome/browser/chromeos/login/existing_user_controller.h b/chrome/browser/chromeos/login/existing_user_controller.h
index f648b22..451fda2 100644
--- a/chrome/browser/chromeos/login/existing_user_controller.h
+++ b/chrome/browser/chromeos/login/existing_user_controller.h
@@ -21,6 +21,7 @@
#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/wm_message_listener.h"
#include "gfx/size.h"
+#include "testing/gtest/include/gtest/gtest_prod.h"
namespace chromeos {
@@ -50,6 +51,11 @@ class ExistingUserController : public WmMessageListener::Observer,
ExistingUserController(const std::vector<UserManager::User>& users,
const gfx::Rect& background_bounds);
+ // Returns the current existing user controller if it has been created.
+ static ExistingUserController* current_controller() {
+ return current_controller_;
+ }
+
// Creates and shows the appropriate set of windows.
void Init();
@@ -66,6 +72,7 @@ class ExistingUserController : public WmMessageListener::Observer,
private:
friend class DeleteTask<ExistingUserController>;
+ friend class MockLoginPerformerDelegate;
~ExistingUserController();
@@ -129,6 +136,10 @@ class ExistingUserController : public WmMessageListener::Observer,
// Send message to window manager to enable/disable click on other windows.
void SendSetLoginState(bool is_login);
+ void set_login_performer_delegate(LoginPerformer::Delegate* d) {
+ login_performer_delegate_.reset(d);
+ }
+
// Bounds of the background window.
const gfx::Rect background_bounds_;
@@ -145,6 +156,10 @@ class ExistingUserController : public WmMessageListener::Observer,
// Used to execute login operations.
scoped_ptr<LoginPerformer> login_performer_;
+ // Delegate for login performer to be overridden by tests.
+ // |this| is used if |login_performer_delegate_| is NULL.
+ scoped_ptr<LoginPerformer::Delegate> login_performer_delegate_;
+
// Index of selected view (user).
size_t selected_view_index_;
@@ -155,9 +170,9 @@ class ExistingUserController : public WmMessageListener::Observer,
// See comment in ProcessWmMessage.
base::OneShotTimer<ExistingUserController> delete_timer_;
- // Pointer to the instance that was scheduled to be deleted soon or NULL
- // if there is no such instance.
- static ExistingUserController* delete_scheduled_instance_;
+ // Pointer to the current instance of the controller to be used by
+ // automation tests.
+ static ExistingUserController* current_controller_;
// Pointer to shown message bubble. We don't need to delete it because
// it will be deleted on bubble closing.
@@ -175,6 +190,8 @@ class ExistingUserController : public WmMessageListener::Observer,
// Factory of callbacks.
ScopedRunnableMethodFactory<ExistingUserController> method_factory_;
+ FRIEND_TEST_ALL_PREFIXES(ExistingUserControllerTest, NewUserLogin);
+
DISALLOW_COPY_AND_ASSIGN(ExistingUserController);
};
diff --git a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
new file mode 100644
index 0000000..442074c
--- /dev/null
+++ b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
@@ -0,0 +1,113 @@
+// 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 "app/l10n_util.h"
+#include "base/message_loop.h"
+#include "chrome/browser/chromeos/cros/cros_mock.h"
+#include "chrome/browser/chromeos/cros/mock_cryptohome_library.h"
+#include "chrome/browser/chromeos/cros/mock_login_library.h"
+#include "chrome/browser/chromeos/cros/mock_network_library.h"
+#include "chrome/browser/chromeos/login/existing_user_controller.h"
+#include "chrome/browser/chromeos/login/login_performer.h"
+#include "chrome/browser/chromeos/login/login_utils.h"
+#include "chrome/browser/chromeos/login/mock_authenticator.h"
+#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h"
+#include "grit/generated_resources.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace chromeos {
+
+using ::testing::AnyNumber;
+using ::testing::InvokeWithoutArgs;
+using ::testing::Return;
+
+const char kUsername[] = "test_user@gmail.com";
+const char kPassword[] = "test_password";
+
+class MockLoginPerformerDelegate : public LoginPerformer::Delegate {
+ public:
+ explicit MockLoginPerformerDelegate(ExistingUserController* controller)
+ : controller_(controller) {
+ }
+
+ void OnLoginSuccess(const std::string&,
+ const std::string&,
+ const GaiaAuthConsumer::ClientLoginResult&,
+ bool) {
+ LoginPerformer* login_performer = controller_->login_performer_.release();
+ login_performer = NULL;
+ controller_->ActivateWizard(WizardController::kUserImageScreenName);
+ delete WizardController::default_controller();
+ }
+
+ MOCK_METHOD1(OnLoginFailure, void(const LoginFailure&));
+ MOCK_METHOD1(WhiteListCheckFailed, void(const std::string&));
+
+ private:
+ ExistingUserController* controller_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockLoginPerformerDelegate);
+};
+
+class ExistingUserControllerTest : public WizardInProcessBrowserTest {
+ protected:
+ ExistingUserControllerTest()
+ : chromeos::WizardInProcessBrowserTest(
+ WizardController::kLoginScreenName),
+ mock_cryptohome_library_(NULL),
+ mock_login_library_(NULL),
+ mock_network_library_(NULL) {
+ }
+
+ ExistingUserController* existing_user_controller() {
+ return ExistingUserController::current_controller();
+ }
+
+ virtual void SetUpInProcessBrowserTestFixture() {
+ WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
+ cros_mock_->InitStatusAreaMocks();
+ cros_mock_->SetStatusAreaMocksExpectations();
+
+ mock_network_library_ = cros_mock_->mock_network_library();
+
+ mock_login_library_ = new MockLoginLibrary();
+ EXPECT_CALL(*mock_login_library_, EmitLoginPromptReady())
+ .Times(1);
+ EXPECT_CALL(*mock_login_library_, RetrieveProperty(_, _, _))
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(true)));
+ cros_mock_->test_api()->SetLoginLibrary(mock_login_library_, true);
+
+ cros_mock_->InitMockCryptohomeLibrary();
+ mock_cryptohome_library_ = cros_mock_->mock_cryptohome_library();
+ EXPECT_CALL(*mock_cryptohome_library_, IsMounted())
+ .Times(AnyNumber())
+ .WillRepeatedly((Return(true)));
+ LoginUtils::Set(new MockLoginUtils(kUsername, kPassword));
+ }
+
+ virtual void TearDownInProcessBrowserTestFixture() {
+ WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
+ cros_mock_->test_api()->SetLoginLibrary(NULL, false);
+ }
+
+ MockCryptohomeLibrary* mock_cryptohome_library_;
+ MockLoginLibrary* mock_login_library_;
+ MockNetworkLibrary* mock_network_library_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerTest);
+};
+
+IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, NewUserLogin) {
+ MockLoginPerformerDelegate* mock_delegate =
+ new MockLoginPerformerDelegate(existing_user_controller());
+ existing_user_controller()->set_login_performer_delegate(mock_delegate);
+
+ existing_user_controller()->LoginNewUser(kUsername, kPassword);
+}
+
+} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/login_screen.cc b/chrome/browser/chromeos/login/login_screen.cc
deleted file mode 100644
index 515b7be..0000000
--- a/chrome/browser/chromeos/login/login_screen.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2010 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/login_screen.h"
-
-#include "app/l10n_util.h"
-#include "app/resource_bundle.h"
-#include "base/callback.h"
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "base/process_util.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/browser_thread.h"
-#include "chrome/browser/chromeos/boot_times_loader.h"
-#include "chrome/browser/chromeos/cros/cros_library.h"
-#include "chrome/browser/chromeos/cros/network_library.h"
-#include "chrome/browser/chromeos/login/authentication_notification_details.h"
-#include "chrome/browser/chromeos/login/helper.h"
-#include "chrome/browser/chromeos/login/login_utils.h"
-#include "chrome/browser/chromeos/login/message_bubble.h"
-#include "chrome/browser/chromeos/login/screen_observer.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-
-namespace chromeos {
-
-LoginScreen::LoginScreen(WizardScreenDelegate* delegate)
- : ViewScreen<NewUserView>(delegate,
- kNewUserPodFullWidth, kNewUserPodFullHeight),
- bubble_(NULL),
- authenticator_(NULL) {
- if (CrosLibrary::Get()->EnsureLoaded()) {
- authenticator_ = LoginUtils::Get()->CreateAuthenticator(this);
- }
-}
-
-LoginScreen::~LoginScreen() {
- ClearErrors();
-}
-
-NewUserView* LoginScreen::AllocateView() {
- return new NewUserView(this, true, true);
-}
-
-void LoginScreen::OnLogin(const std::string& username,
- const std::string& password) {
- BootTimesLoader::Get()->RecordLoginAttempted();
- Profile* profile = g_browser_process->profile_manager()->GetDefaultProfile();
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- NewRunnableMethod(authenticator_.get(),
- &Authenticator::AuthenticateToLogin,
- profile, username, password,
- std::string(), std::string()));
-}
-
-void LoginScreen::OnLoginOffTheRecord() {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- NewRunnableMethod(authenticator_.get(),
- &Authenticator::LoginOffTheRecord));
-}
-
-void LoginScreen::OnCreateAccount() {
- delegate()->GetObserver(this)->OnExit(ScreenObserver::LOGIN_CREATE_ACCOUNT);
-}
-
-void LoginScreen::ClearErrors() {
- // bubble_ will be set to NULL in InfoBubbleClosing callback.
- if (bubble_)
- bubble_->Close();
-}
-
-void LoginScreen::OnLoginFailure(const LoginFailure& failure) {
- const std::string error = failure.GetErrorString();
- VLOG(1) << "LoginManagerView: OnLoginFailure() " << error;
- NetworkLibrary* network = CrosLibrary::Get()->GetNetworkLibrary();
-
- // Check networking after trying to login in case user is
- // cached locally or the local admin account.
- if (!network || !CrosLibrary::Get()->EnsureLoaded()) {
- ShowError(IDS_LOGIN_ERROR_NO_NETWORK_LIBRARY, error);
- } else if (!network->Connected()) {
- ShowError(IDS_LOGIN_ERROR_OFFLINE_FAILED_NETWORK_NOT_CONNECTED, error);
- } else {
- ShowError(IDS_LOGIN_ERROR_AUTHENTICATING_NEW, error);
- }
-
- view()->ClearAndFocusPassword();
- view()->EnableInputControls(true);
-}
-
-void LoginScreen::OnLoginSuccess(
- const std::string& username,
- const std::string& password,
- const GaiaAuthConsumer::ClientLoginResult& credentials,
- bool pending_requests) {
-
- delegate()->GetObserver(this)->OnExit(ScreenObserver::LOGIN_SIGN_IN_SELECTED);
- AppendStartUrlToCmdline();
- LoginUtils::Get()->CompleteLogin(username,
- password,
- credentials,
- pending_requests);
-}
-
-void LoginScreen::OnOffTheRecordLoginSuccess() {
- LoginUtils::Get()->CompleteOffTheRecordLogin(start_url_);
-}
-
-void LoginScreen::OnHelpLinkActivated() {
- AddStartUrl(GetAccountRecoveryHelpUrl());
- OnLoginOffTheRecord();
-}
-
-void LoginScreen::AppendStartUrlToCmdline() {
- if (start_url_.is_valid())
- CommandLine::ForCurrentProcess()->AppendArg(start_url_.spec());
-}
-
-void LoginScreen::ShowError(int error_id, const std::string& details) {
- ClearErrors();
- std::wstring error_text = UTF16ToWide(l10n_util::GetStringUTF16(error_id));
- // TODO(dpolukhin): show detailed error info. |details| string contains
- // low level error info that is not localized and even is not user friendly.
- // For now just ignore it because error_text contains all required information
- // for end users, developers can see details string in Chrome logs.
- bubble_ = MessageBubble::Show(
- view()->GetWidget(),
- view()->GetPasswordBounds(),
- BubbleBorder::LEFT_TOP,
- ResourceBundle::GetSharedInstance().GetBitmapNamed(IDR_WARNING),
- error_text,
- UTF16ToWide(l10n_util::GetStringUTF16(IDS_CANT_ACCESS_ACCOUNT_BUTTON)),
- this);
-}
-
-} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/login_screen.h b/chrome/browser/chromeos/login/login_screen.h
deleted file mode 100644
index 7c64dc3..0000000
--- a/chrome/browser/chromeos/login/login_screen.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2010 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_LOGIN_SCREEN_H_
-#define CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_SCREEN_H_
-#pragma once
-
-#include <string>
-
-#include "base/ref_counted.h"
-#include "chrome/browser/chromeos/login/authenticator.h"
-#include "chrome/browser/chromeos/login/login_status_consumer.h"
-#include "chrome/browser/chromeos/login/message_bubble.h"
-#include "chrome/browser/chromeos/login/new_user_view.h"
-#include "chrome/browser/chromeos/login/view_screen.h"
-
-namespace chromeos {
-
-class MessageBubble;
-
-// This screen is obsolete, used only on test images. http://crosbug.com/7214
-// TODO(nkostylev): Use ExistingUserController sign in screen for test images.
-class LoginScreen : public ViewScreen<NewUserView>,
- public NewUserView::Delegate,
- public LoginStatusConsumer,
- public MessageBubbleDelegate {
- public:
- explicit LoginScreen(WizardScreenDelegate* delegate);
- virtual ~LoginScreen();
-
- bool IsErrorShown() {
- return bubble_ != NULL;
- }
-
- // NewUserView::Delegate:
- virtual void OnLogin(const std::string& username,
- const std::string& password);
- virtual void OnLoginOffTheRecord();
- virtual void OnCreateAccount();
- virtual void AddStartUrl(const GURL& start_url) { start_url_ = start_url; }
- virtual void ClearErrors();
- virtual void NavigateAway() {}
- virtual void SetStatusAreaEnabled(bool enable) {}
-
- // Overridden from LoginStatusConsumer.
- virtual void OnLoginFailure(const LoginFailure& error);
- virtual void OnLoginSuccess(
- const std::string& username,
- const std::string& password,
- const GaiaAuthConsumer::ClientLoginResult& credentials,
- bool pending_requests);
- virtual void OnOffTheRecordLoginSuccess();
-
- // Overridden from views::InfoBubbleDelegate.
- virtual void InfoBubbleClosing(InfoBubble* info_bubble,
- bool closed_by_escape) {
- bubble_ = NULL;
- }
- virtual bool CloseOnEscape() { return true; }
- virtual bool FadeInOnShow() { return false; }
- virtual void OnHelpLinkActivated();
-
- private:
- // ViewScreen<NewUserView>:
- virtual NewUserView* AllocateView();
-
- // Adds start url to command line.
- void AppendStartUrlToCmdline();
-
- // Shows error message with the specified message id.
- // If |details| string is not empty, it specify additional error text
- // provided by authenticator, it is not localized.
- void ShowError(int error_id, const std::string& details);
-
- // Pointer to shown message bubble. We don't need to delete it because
- // it will be deleted on bubble closing.
- MessageBubble* bubble_;
-
- scoped_refptr<Authenticator> authenticator_;
-
- // URL that will be opened on browser startup.
- GURL start_url_;
-
- DISALLOW_COPY_AND_ASSIGN(LoginScreen);
-};
-
-} // namespace chromeos
-
-#endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_SCREEN_H_
diff --git a/chrome/browser/chromeos/login/login_screen_browsertest.cc b/chrome/browser/chromeos/login/login_screen_browsertest.cc
deleted file mode 100644
index ccb9c7a6..0000000
--- a/chrome/browser/chromeos/login/login_screen_browsertest.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright (c) 2010 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 "base/message_loop.h"
-#include "chrome/browser/browser_thread.h"
-#include "chrome/browser/chromeos/cros/mock_cryptohome_library.h"
-#include "chrome/browser/chromeos/cros/mock_login_library.h"
-#include "chrome/browser/chromeos/cros/mock_network_library.h"
-#include "chrome/browser/chromeos/login/login_screen.h"
-#include "chrome/browser/chromeos/login/mock_authenticator.h"
-#include "chrome/browser/chromeos/login/mock_screen_observer.h"
-#include "chrome/browser/chromeos/login/wizard_controller.h"
-#include "chrome/browser/chromeos/login/wizard_in_process_browser_test.h"
-#include "chrome/browser/chromeos/login/wizard_screen.h"
-#include "grit/generated_resources.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace chromeos {
-
-using ::testing::AnyNumber;
-using ::testing::InvokeWithoutArgs;
-using ::testing::Return;
-
-const char kUsername[] = "test_user@gmail.com";
-const char kPassword[] = "test_password";
-
-class LoginScreenTest : public WizardInProcessBrowserTest {
- public:
- LoginScreenTest(): WizardInProcessBrowserTest("login"),
- mock_cryptohome_library_(NULL),
- mock_login_library_(NULL),
- mock_network_library_(NULL) {
- }
-
- protected:
- MockCryptohomeLibrary *mock_cryptohome_library_;
- MockLoginLibrary *mock_login_library_;
- MockNetworkLibrary *mock_network_library_;
-
- virtual void SetUpInProcessBrowserTestFixture() {
- WizardInProcessBrowserTest::SetUpInProcessBrowserTestFixture();
- cros_mock_->InitStatusAreaMocks();
- cros_mock_->SetStatusAreaMocksExpectations();
-
- mock_network_library_ = cros_mock_->mock_network_library();
-
- mock_login_library_ = new MockLoginLibrary();
- EXPECT_CALL(*mock_login_library_, EmitLoginPromptReady())
- .Times(1);
- cros_mock_->test_api()->SetLoginLibrary(mock_login_library_, true);
-
- cros_mock_->InitMockCryptohomeLibrary();
- mock_cryptohome_library_ = cros_mock_->mock_cryptohome_library();
- EXPECT_CALL(*mock_cryptohome_library_, IsMounted())
- .Times(AnyNumber())
- .WillRepeatedly((Return(true)));
- LoginUtils::Set(new MockLoginUtils(kUsername, kPassword));
- }
-
- virtual void TearDownInProcessBrowserTestFixture() {
- WizardInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
- cros_mock_->test_api()->SetLoginLibrary(NULL, false);
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(LoginScreenTest);
-};
-
-static void Quit() {
- VLOG(1) << "Posting a QuitTask to UI thread";
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- new MessageLoop::QuitTask);
-}
-IN_PROC_BROWSER_TEST_F(LoginScreenTest, TestBasic) {
- ASSERT_TRUE(controller() != NULL);
- ASSERT_EQ(controller()->current_screen(), controller()->GetLoginScreen());
-
- scoped_ptr<MockScreenObserver> mock_screen_observer(
- new MockScreenObserver());
- EXPECT_CALL(*mock_screen_observer,
- OnExit(ScreenObserver::LOGIN_SIGN_IN_SELECTED))
- .WillOnce(InvokeWithoutArgs(Quit));
-
- controller()->set_observer(mock_screen_observer.get());
- NewUserView* login = controller()->GetLoginScreen()->view();
- login->SetUsername(kUsername);
- login->SetPassword(kPassword);
-
- bool old_state = MessageLoop::current()->NestableTasksAllowed();
- MessageLoop::current()->SetNestableTasksAllowed(true);
- login->Login();
- MessageLoop::current()->Run();
- MessageLoop::current()->SetNestableTasksAllowed(old_state);
- controller()->set_observer(NULL);
-}
-
-IN_PROC_BROWSER_TEST_F(LoginScreenTest, AuthenticationFailed) {
- ASSERT_TRUE(controller() != NULL);
- ASSERT_EQ(controller()->current_screen(), controller()->GetLoginScreen());
-
- scoped_ptr<MockScreenObserver> mock_screen_observer(
- new MockScreenObserver());
- controller()->set_observer(mock_screen_observer.get());
-
- EXPECT_CALL(*mock_network_library_, Connected())
- .Times(AnyNumber())
- .WillRepeatedly((Return(true)));
-
- NewUserView* login = controller()->GetLoginScreen()->view();
- login->SetUsername(kUsername);
- login->SetPassword("wrong password");
-
- bool old_state = MessageLoop::current()->NestableTasksAllowed();
- MessageLoop::current()->SetNestableTasksAllowed(true);
- login->Login();
- MessageLoop::current()->Run();
- MessageLoop::current()->SetNestableTasksAllowed(old_state);
-
- ASSERT_EQ(controller()->current_screen(), controller()->GetLoginScreen());
- EXPECT_TRUE(controller()->GetLoginScreen()->IsErrorShown());
- controller()->set_observer(NULL);
-}
-
-IN_PROC_BROWSER_TEST_F(LoginScreenTest, IncognitoLogin) {
- ASSERT_TRUE(controller() != NULL);
- ASSERT_EQ(controller()->current_screen(), controller()->GetLoginScreen());
-
- scoped_ptr<MockScreenObserver> mock_screen_observer(
- new MockScreenObserver());
- controller()->set_observer(mock_screen_observer.get());
- NewUserView* login = controller()->GetLoginScreen()->view();
-
- login->LinkActivated(login->guest_link_, 0);
- controller()->set_observer(NULL);
- Quit();
-}
-
-} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/mock_user_manager.h b/chrome/browser/chromeos/login/mock_user_manager.h
index 87858e6..f12a363 100644
--- a/chrome/browser/chromeos/login/mock_user_manager.h
+++ b/chrome/browser/chromeos/login/mock_user_manager.h
@@ -24,7 +24,7 @@ class MockUserManager : public UserManager {
MOCK_METHOD1(UserLoggedIn, void(const std::string&));
MOCK_METHOD1(RemoveUser, void(const std::string&));
MOCK_METHOD1(IsKnownUser, bool(const std::string&));
- MOCK_METHOD0(logged_in_user, const User&());
+ MOCK_CONST_METHOD0(logged_in_user, User());
MOCK_METHOD0(current_user_is_owner, bool());
MOCK_METHOD1(set_current_user_is_owner, void(bool));
};
diff --git a/chrome/browser/chromeos/login/new_user_view.h b/chrome/browser/chromeos/login/new_user_view.h
index d749035..35c557d 100644
--- a/chrome/browser/chromeos/login/new_user_view.h
+++ b/chrome/browser/chromeos/login/new_user_view.h
@@ -199,9 +199,6 @@ class NewUserView : public ThrobberHostView,
int languages_menubutton_order_;
int sign_in_button_order_;
- FRIEND_TEST_ALL_PREFIXES(LoginScreenTest, IncognitoLogin);
- friend class LoginScreenTest;
-
DISALLOW_COPY_AND_ASSIGN(NewUserView);
};
diff --git a/chrome/browser/chromeos/login/screen_observer.h b/chrome/browser/chromeos/login/screen_observer.h
index 4cba1bb..d997a7c 100644
--- a/chrome/browser/chromeos/login/screen_observer.h
+++ b/chrome/browser/chromeos/login/screen_observer.h
@@ -20,9 +20,6 @@ class ScreenObserver {
// login wizard decides what is the next view to show. There must be an
// exit code for each way to exit the screen for each screen.
enum ExitCodes {
- LOGIN_SIGN_IN_SELECTED,
- LOGIN_GUEST_SELECTED,
- LOGIN_CREATE_ACCOUNT,
NETWORK_CONNECTED,
NETWORK_OFFLINE,
ACCOUNT_CREATE_BACK,
diff --git a/chrome/browser/chromeos/login/user_manager.h b/chrome/browser/chromeos/login/user_manager.h
index 428513f..49e0865 100644
--- a/chrome/browser/chromeos/login/user_manager.h
+++ b/chrome/browser/chromeos/login/user_manager.h
@@ -74,7 +74,7 @@ class UserManager : public UserImageLoader::Delegate,
virtual bool IsKnownUser(const std::string& email);
// Returns the logged-in user.
- virtual const User& logged_in_user() {
+ virtual User logged_in_user() const {
return logged_in_user_;
}
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc
index a3b7efd..26c33e6 100644
--- a/chrome/browser/chromeos/login/wizard_controller.cc
+++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -32,7 +32,6 @@
#include "chrome/browser/chromeos/login/helper.h"
#include "chrome/browser/chromeos/login/html_page_screen.h"
#include "chrome/browser/chromeos/login/language_switch_menu.h"
-#include "chrome/browser/chromeos/login/login_screen.h"
#include "chrome/browser/chromeos/login/login_utils.h"
#include "chrome/browser/chromeos/login/network_screen.h"
#include "chrome/browser/chromeos/login/registration_screen.h"
@@ -260,7 +259,6 @@ WizardController::WizardController()
is_official_build_(false),
#endif
is_out_of_box_(false),
- is_test_mode_(false),
observer_(NULL) {
DCHECK(default_controller_ == NULL);
default_controller_ = this;
@@ -346,12 +344,6 @@ chromeos::NetworkScreen* WizardController::GetNetworkScreen() {
return network_screen_.get();
}
-chromeos::LoginScreen* WizardController::GetLoginScreen() {
- if (!login_screen_.get())
- login_screen_.reset(new chromeos::LoginScreen(this));
- return login_screen_.get();
-}
-
chromeos::AccountScreen* WizardController::GetAccountScreen() {
if (!account_screen_.get())
account_screen_.reset(new chromeos::AccountScreen(this));
@@ -414,30 +406,23 @@ chromeos::ExistingUserController* WizardController::ShowLoginScreen() {
// Initiate services customization.
chromeos::ApplyServicesCustomization::StartIfNeeded();
- // When run under automation test show plain login screen.
- if (!is_test_mode_ &&
- chromeos::CrosLibrary::Get()->EnsureLoaded() &&
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableLoginImages)) {
- std::vector<chromeos::UserManager::User> users =
- chromeos::UserManager::Get()->GetUsers();
- // ExistingUserController deletes itself.
- gfx::Rect screen_bounds;
- background_widget_->GetBounds(&screen_bounds, true);
- chromeos::ExistingUserController* controller =
- new chromeos::ExistingUserController(users, screen_bounds);
- controller->OwnBackground(background_widget_, background_view_);
- controller->Init();
- background_widget_ = NULL;
- background_view_ = NULL;
-
- MessageLoop::current()->DeleteSoon(FROM_HERE, this);
-
- return controller;
- }
+ std::vector<chromeos::UserManager::User> users;
+ if (chromeos::CrosLibrary::Get()->EnsureLoaded())
+ users = chromeos::UserManager::Get()->GetUsers();
+
+ // ExistingUserController deletes itself.
+ gfx::Rect screen_bounds;
+ background_widget_->GetBounds(&screen_bounds, true);
+ chromeos::ExistingUserController* controller =
+ new chromeos::ExistingUserController(users, screen_bounds);
+ controller->OwnBackground(background_widget_, background_view_);
+ controller->Init();
+ background_widget_ = NULL;
+ background_view_ = NULL;
- SetCurrentScreen(GetLoginScreen());
- return NULL;
+ MessageLoop::current()->DeleteSoon(FROM_HERE, this);
+
+ return controller;
}
void WizardController::ShowAccountScreen() {
@@ -539,26 +524,6 @@ void WizardController::RegisterPrefs(PrefService* local_state) {
///////////////////////////////////////////////////////////////////////////////
// WizardController, ExitHandlers:
-void WizardController::OnLoginSignInSelected() {
- // Don't show user image screen in case of automated testing.
- if (is_test_mode_) {
- MessageLoop::current()->DeleteSoon(FROM_HERE, this);
- return;
- }
- // Don't launch browser until we pass image screen.
- chromeos::LoginUtils::Get()->EnableBrowserLaunch(false);
- ShowUserImageScreen();
-}
-
-void WizardController::OnLoginGuestUser() {
- // We're on the stack, so don't try and delete us now.
- MessageLoop::current()->DeleteSoon(FROM_HERE, this);
-}
-
-void WizardController::OnLoginCreateAccount() {
- ShowAccountScreen();
-}
-
void WizardController::OnNetworkConnected() {
if (is_official_build_) {
if (!IsEulaAccepted()) {
@@ -583,16 +548,14 @@ void WizardController::OnNetworkOffline() {
void WizardController::OnAccountCreateBack() {
chromeos::ExistingUserController* controller = ShowLoginScreen();
- if (controller)
- controller->SelectNewUser();
+ DCHECK(controller);
+ controller->SelectNewUser();
}
void WizardController::OnAccountCreated() {
chromeos::ExistingUserController* controller = ShowLoginScreen();
- if (controller)
- controller->LoginNewUser(username_, password_);
- else
- Login(username_, password_);
+ DCHECK(controller);
+ controller->LoginNewUser(username_, password_);
// TODO(dpolukhin): clear password memory for real. Now it is not
// a problem because we can't extract password from the form.
password_.clear();
@@ -762,8 +725,6 @@ void WizardController::ShowFirstScreen(const std::string& first_screen_name) {
if (first_screen_name == kNetworkScreenName) {
ShowNetworkScreen();
} else if (first_screen_name == kLoginScreenName) {
- // This flag is passed if we're running under automation test.
- is_test_mode_ = true;
ShowLoginScreen();
} else if (first_screen_name == kAccountScreenName) {
ShowAccountScreen();
@@ -791,19 +752,6 @@ void WizardController::ShowFirstScreen(const std::string& first_screen_name) {
}
}
-void WizardController::Login(const std::string& username,
- const std::string& password) {
- chromeos::LoginScreen* login = GetLoginScreen();
- if (username.empty())
- return;
- login->view()->SetUsername(username);
-
- if (password.empty())
- return;
- login->view()->SetPassword(password);
- login->view()->Login();
-}
-
// static
bool WizardController::IsEulaAccepted() {
return g_browser_process->local_state()->GetBoolean(kEulaAccepted);
@@ -847,8 +795,9 @@ void WizardController::MarkDeviceRegistered() {
// Create flag file for boot-time init scripts.
FilePath oobe_complete_path(kOobeCompleteFlagFilePath);
FILE* oobe_flag_file = file_util::OpenFile(oobe_complete_path, "w+b");
- DCHECK(oobe_flag_file != NULL) << kOobeCompleteFlagFilePath;
- if (oobe_flag_file != NULL)
+ if (oobe_flag_file == NULL)
+ DLOG(WARNING) << kOobeCompleteFlagFilePath << " doesn't exist.";
+ else
file_util::CloseFile(oobe_flag_file);
}
@@ -857,15 +806,6 @@ void WizardController::MarkDeviceRegistered() {
void WizardController::OnExit(ExitCodes exit_code) {
LOG(INFO) << "Wizard screen exit code: " << exit_code;
switch (exit_code) {
- case LOGIN_SIGN_IN_SELECTED:
- OnLoginSignInSelected();
- break;
- case LOGIN_GUEST_SELECTED:
- OnLoginGuestUser();
- break;
- case LOGIN_CREATE_ACCOUNT:
- OnLoginCreateAccount();
- break;
case NETWORK_CONNECTED:
OnNetworkConnected();
break;
@@ -960,18 +900,17 @@ void ShowLoginWizard(const std::string& first_screen_name,
// Check whether we need to execute OOBE process.
bool oobe_complete = WizardController::IsOobeCompleted();
+ bool show_login_screen =
+ (first_screen_name.empty() && oobe_complete) ||
+ first_screen_name == WizardController::kLoginScreenName;
- if (first_screen_name.empty() &&
- oobe_complete &&
- chromeos::CrosLibrary::Get()->EnsureLoaded() &&
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableLoginImages)) {
+ if (show_login_screen && chromeos::CrosLibrary::Get()->EnsureLoaded()) {
std::vector<chromeos::UserManager::User> users =
chromeos::UserManager::Get()->GetUsers();
// Fix for users who updated device and thus never passed register screen.
- // If we already have user we assume that it is not a second part of OOBE.
- // See http://crosbug.com/6289
+ // If we already have users, we assume that it is not a second part of
+ // OOBE. See http://crosbug.com/6289
if (!WizardController::IsDeviceRegistered() && !users.empty()) {
VLOG(1) << "Mark device registered because there are remembered users: "
<< users.size();
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h
index 38380d6..0e0543f 100644
--- a/chrome/browser/chromeos/login/wizard_controller.h
+++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -29,7 +29,6 @@ class BackgroundView;
class EulaScreen;
class ExistingUserController;
class HTMLPageScreen;
-class LoginScreen;
class NetworkScreen;
class RegistrationScreen;
class StartupCustomizationDocument;
@@ -106,7 +105,6 @@ class WizardController : public chromeos::ScreenObserver,
// Lazy initializers and getters for screens.
chromeos::NetworkScreen* GetNetworkScreen();
- chromeos::LoginScreen* GetLoginScreen();
chromeos::AccountScreen* GetAccountScreen();
chromeos::UpdateScreen* GetUpdateScreen();
chromeos::UserImageScreen* GetUserImageScreen();
@@ -122,9 +120,8 @@ class WizardController : public chromeos::ScreenObserver,
void ShowEulaScreen();
void ShowRegistrationScreen();
void ShowHTMLPageScreen();
- // Shows the default login screen and returns NULL or shows images login
- // screen and returns the corresponding controller instance for optional
- // tweaking.
+ // Shows images login screen and returns the corresponding controller
+ // instance for optional tweaking.
chromeos::ExistingUserController* ShowLoginScreen();
// Returns a pointer to the current screen or NULL if there's no such
@@ -169,9 +166,6 @@ class WizardController : public chromeos::ScreenObserver,
private:
// Exit handlers:
- void OnLoginSignInSelected();
- void OnLoginGuestUser();
- void OnLoginCreateAccount();
void OnNetworkConnected();
void OnNetworkOffline();
void OnAccountCreateBack();
@@ -190,6 +184,11 @@ class WizardController : public chromeos::ScreenObserver,
// Shows update screen and starts update process.
void InitiateOOBEUpdate();
+ // Overridden from chromeos::ScreenObserver:
+ virtual void OnExit(ExitCodes exit_code);
+ virtual void OnSetUserNamePassword(const std::string& username,
+ const std::string& password);
+
// Creates wizard screen window with the specified |bounds|.
// If |initial_show| initial animation (window & background) is shown.
// Otherwise only window is animated.
@@ -206,11 +205,6 @@ class WizardController : public chromeos::ScreenObserver,
// Changes status area visibility.
void SetStatusAreaVisible(bool visible);
- // Overridden from chromeos::ScreenObserver:
- virtual void OnExit(ExitCodes exit_code);
- virtual void OnSetUserNamePassword(const std::string& username,
- const std::string& password);
-
// Overridden from WizardScreenDelegate:
virtual views::View* GetWizardView();
virtual chromeos::ScreenObserver* GetObserver(WizardScreen* screen);
@@ -237,7 +231,6 @@ class WizardController : public chromeos::ScreenObserver,
// Screens.
scoped_ptr<chromeos::NetworkScreen> network_screen_;
- scoped_ptr<chromeos::LoginScreen> login_screen_;
scoped_ptr<chromeos::AccountScreen> account_screen_;
scoped_ptr<chromeos::UpdateScreen> update_screen_;
scoped_ptr<chromeos::UserImageScreen> user_image_screen_;
@@ -257,10 +250,6 @@ class WizardController : public chromeos::ScreenObserver,
// True if full OOBE flow should be shown.
bool is_out_of_box_;
- // True if this is run under automation test and we need to show only
- // login screen.
- bool is_test_mode_;
-
// Value of the screen name that WizardController was started with.
std::string first_screen_name_;
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
index 29972d8..1104be2 100644
--- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -7,8 +7,8 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/account_screen.h"
#include "chrome/browser/chromeos/login/eula_view.h"
+#include "chrome/browser/chromeos/login/existing_user_controller.h"
#include "chrome/browser/chromeos/login/language_switch_menu.h"
-#include "chrome/browser/chromeos/login/login_screen.h"
#include "chrome/browser/chromeos/login/mock_update_screen.h"
#include "chrome/browser/chromeos/login/network_screen.h"
#include "chrome/browser/chromeos/login/network_selection_view.h"
@@ -57,6 +57,8 @@ CreateMockWizardScreenHelper<chromeos::NetworkScreen>::Create(
} // namespace
+using chromeos::ExistingUserController;
+
class WizardControllerTest : public chromeos::WizardInProcessBrowserTest {
protected:
WizardControllerTest() : chromeos::WizardInProcessBrowserTest(
@@ -114,7 +116,6 @@ class WizardControllerFlowTest : public WizardControllerTest {
// Set up the mocks for all screens.
MOCK(mock_account_screen_, account_screen_, chromeos::AccountScreen);
- MOCK(mock_login_screen_, login_screen_, chromeos::LoginScreen);
MOCK(mock_network_screen_, network_screen_, chromeos::NetworkScreen);
MOCK(mock_update_screen_, update_screen_, MockUpdateScreen);
MOCK(mock_eula_screen_, eula_screen_, chromeos::EulaScreen);
@@ -128,7 +129,6 @@ class WizardControllerFlowTest : public WizardControllerTest {
}
MockOutShowHide<chromeos::AccountScreen>* mock_account_screen_;
- MockOutShowHide<chromeos::LoginScreen>* mock_login_screen_;
MockOutShowHide<chromeos::NetworkScreen>* mock_network_screen_;
MockOutShowHide<MockUpdateScreen>* mock_update_screen_;
MockOutShowHide<chromeos::EulaScreen>* mock_eula_screen_;
@@ -138,6 +138,7 @@ class WizardControllerFlowTest : public WizardControllerTest {
};
IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowMain) {
+ EXPECT_TRUE(ExistingUserController::current_controller() == NULL);
EXPECT_EQ(controller()->GetNetworkScreen(), controller()->current_screen());
EXPECT_CALL(*mock_network_screen_, Hide()).Times(1);
EXPECT_CALL(*mock_eula_screen_, Show()).Times(1);
@@ -150,23 +151,12 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowMain) {
controller()->OnExit(chromeos::ScreenObserver::EULA_ACCEPTED);
EXPECT_EQ(controller()->GetUpdateScreen(), controller()->current_screen());
- EXPECT_CALL(*mock_update_screen_, Hide()).Times(1);
+ EXPECT_CALL(*mock_update_screen_, Hide()).Times(0);
EXPECT_CALL(*mock_eula_screen_, Show()).Times(0);
- EXPECT_CALL(*mock_login_screen_, Show()).Times(1);
controller()->OnExit(chromeos::ScreenObserver::UPDATE_INSTALLED);
- EXPECT_EQ(controller()->GetLoginScreen(), controller()->current_screen());
- EXPECT_CALL(*mock_login_screen_, Hide()).Times(1);
- EXPECT_CALL(*mock_account_screen_, Show()).Times(1);
- controller()->OnExit(chromeos::ScreenObserver::LOGIN_CREATE_ACCOUNT);
-
- EXPECT_EQ(controller()->GetAccountScreen(), controller()->current_screen());
- EXPECT_CALL(*mock_account_screen_, Hide()).Times(1);
- EXPECT_CALL(*mock_login_screen_, Show()).Times(1);
- EXPECT_CALL(*mock_login_screen_, Hide()).Times(0); // last transition
- controller()->OnExit(chromeos::ScreenObserver::ACCOUNT_CREATED);
-
- EXPECT_EQ(controller()->GetLoginScreen(), controller()->current_screen());
+ EXPECT_FALSE(ExistingUserController::current_controller() == NULL);
+ set_controller(NULL);
}
IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowErrorUpdate) {
@@ -184,14 +174,14 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowErrorUpdate) {
controller()->OnExit(chromeos::ScreenObserver::EULA_ACCEPTED);
EXPECT_EQ(controller()->GetUpdateScreen(), controller()->current_screen());
- EXPECT_CALL(*mock_update_screen_, Hide()).Times(1);
+ EXPECT_CALL(*mock_update_screen_, Hide()).Times(0);
EXPECT_CALL(*mock_eula_screen_, Show()).Times(0);
EXPECT_CALL(*mock_eula_screen_, Hide()).Times(0); // last transition
- EXPECT_CALL(*mock_login_screen_, Show()).Times(1);
controller()->OnExit(
chromeos::ScreenObserver::UPDATE_ERROR_UPDATING);
- EXPECT_EQ(controller()->GetLoginScreen(), controller()->current_screen());
+ EXPECT_FALSE(ExistingUserController::current_controller() == NULL);
+ set_controller(NULL);
}
IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowEulaDeclined) {
@@ -212,14 +202,14 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowEulaDeclined) {
IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, ControlFlowErrorNetwork) {
EXPECT_EQ(controller()->GetNetworkScreen(), controller()->current_screen());
- EXPECT_CALL(*mock_login_screen_, Show()).Times(1);
- EXPECT_CALL(*mock_network_screen_, Hide()).Times(1);
controller()->OnExit(chromeos::ScreenObserver::NETWORK_OFFLINE);
- EXPECT_EQ(controller()->GetLoginScreen(), controller()->current_screen());
+
+ EXPECT_FALSE(ExistingUserController::current_controller() == NULL);
+ set_controller(NULL);
}
#if defined(OFFICIAL_BUILD)
-// This test is supposed to fail on official test.
+// This test is supposed to fail on official build.
#define MAYBE_Accelerators DISABLED_Accelerators
#else
#define MAYBE_Accelerators Accelerators
@@ -231,7 +221,6 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, MAYBE_Accelerators) {
views::FocusManager* focus_manager =
controller()->contents()->GetFocusManager();
views::Accelerator accel_account_screen(app::VKEY_A, false, true, true);
- views::Accelerator accel_login_screen(app::VKEY_L, false, true, true);
views::Accelerator accel_network_screen(app::VKEY_N, false, true, true);
views::Accelerator accel_update_screen(app::VKEY_U, false, true, true);
views::Accelerator accel_image_screen(app::VKEY_I, false, true, true);
@@ -244,12 +233,6 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, MAYBE_Accelerators) {
focus_manager = controller()->contents()->GetFocusManager();
EXPECT_CALL(*mock_account_screen_, Hide()).Times(1);
- EXPECT_CALL(*mock_login_screen_, Show()).Times(1);
- EXPECT_TRUE(focus_manager->ProcessAccelerator(accel_login_screen));
- EXPECT_EQ(controller()->GetLoginScreen(), controller()->current_screen());
-
- focus_manager = controller()->contents()->GetFocusManager();
- EXPECT_CALL(*mock_login_screen_, Hide()).Times(1);
EXPECT_CALL(*mock_network_screen_, Show()).Times(1);
EXPECT_TRUE(focus_manager->ProcessAccelerator(accel_network_screen));
EXPECT_EQ(controller()->GetNetworkScreen(), controller()->current_screen());
@@ -271,5 +254,5 @@ IN_PROC_BROWSER_TEST_F(WizardControllerFlowTest, MAYBE_Accelerators) {
EXPECT_EQ(controller()->GetEulaScreen(), controller()->current_screen());
}
-COMPILE_ASSERT(chromeos::ScreenObserver::EXIT_CODES_COUNT == 18,
+COMPILE_ASSERT(chromeos::ScreenObserver::EXIT_CODES_COUNT == 15,
add_tests_for_new_control_flow_you_just_introduced);
diff --git a/chrome/browser/chromeos/login/wizard_in_process_browser_test.h b/chrome/browser/chromeos/login/wizard_in_process_browser_test.h
index da23b35..488da4e 100644
--- a/chrome/browser/chromeos/login/wizard_in_process_browser_test.h
+++ b/chrome/browser/chromeos/login/wizard_in_process_browser_test.h
@@ -34,6 +34,9 @@ class WizardInProcessBrowserTest : public CrosInProcessBrowserTest {
virtual void CleanUpOnMainThread();
WizardController* controller() const { return controller_; }
+ void set_controller(WizardController* controller) {
+ controller_ = controller;
+ }
private:
std::string screen_name_;
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index c09a9a5..e43a3ac 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -602,8 +602,6 @@
'browser/chromeos/login/login_html_dialog.h',
'browser/chromeos/login/login_performer.cc',
'browser/chromeos/login/login_performer.h',
- 'browser/chromeos/login/login_screen.cc',
- 'browser/chromeos/login/login_screen.h',
'browser/chromeos/login/login_status_consumer.h',
'browser/chromeos/login/login_utils.cc',
'browser/chromeos/login/login_utils.h',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index f183052..bab5ca9 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -2025,8 +2025,8 @@
'browser/chromeos/cros/mock_system_library.h',
'browser/chromeos/cros/mock_touchpad_library.h',
'browser/chromeos/login/account_screen_browsertest.cc',
+ 'browser/chromeos/login/existing_user_controller_browsertest.cc',
'browser/chromeos/login/login_browsertest.cc',
- 'browser/chromeos/login/login_screen_browsertest.cc',
'browser/chromeos/login/mock_authenticator.h',
'browser/chromeos/login/network_screen_browsertest.cc',
'browser/chromeos/login/screen_locker_browsertest.cc',
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index ec029c6..9fee02f 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -1225,9 +1225,6 @@ const char kZygoteProcess[] = "zygote";
// Document Viewer.
const char kEnableGView[] = "enable-gview";
-// Should we show the image based login?
-const char kEnableLoginImages[] = "enable-login-images";
-
// Enable Chrome-as-a-login-manager behavior.
const char kLoginManager[] = "login-manager";
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 71274ae..cae8fcd 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -342,7 +342,6 @@ extern const char kZygoteProcess[];
#if defined(OS_CHROMEOS)
extern const char kEnableGView[];
-extern const char kEnableLoginImages[];
extern const char kLoginManager[];
// TODO(avayvod): Remove this flag when it's unnecessary for testing
// purposes.