diff options
author | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-13 11:55:57 +0000 |
---|---|---|
committer | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-13 11:55:57 +0000 |
commit | 22f9708089b581832fa67bd77c7258b942b542bf (patch) | |
tree | b4293f94dc4a740f1252be8b439e0a7c6d568475 /chrome | |
parent | 06fb4d86a605caeab6c26cdbe7c0cb506030fd43 (diff) | |
download | chromium_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')
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. |