| Index: chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc
|
| diff --git a/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc b/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc
|
| index 8046f3f83d82b42426016c5c9741c06c4bd3c7fe..3a7cadfe82fff0c6bc86407fc4f8d9f58b9f053b 100644
|
| --- a/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc
|
| +++ b/chrome/browser/chromeos/login/existing_user_controller_auto_login_unittest.cc
|
| @@ -2,13 +2,17 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include <string>
|
| +
|
| #include "base/message_loop.h"
|
| +#include "base/values.h"
|
| #include "chrome/browser/chromeos/login/existing_user_controller.h"
|
| #include "chrome/browser/chromeos/login/mock_login_display.h"
|
| #include "chrome/browser/chromeos/login/mock_login_display_host.h"
|
| #include "chrome/browser/chromeos/login/mock_login_utils.h"
|
| #include "chrome/browser/chromeos/login/mock_user_manager.h"
|
| #include "chrome/browser/chromeos/login/user_manager.h"
|
| +#include "chrome/browser/chromeos/policy/device_local_account.h"
|
| #include "chrome/browser/chromeos/settings/cros_settings.h"
|
| #include "chrome/browser/chromeos/settings/cros_settings_names.h"
|
| #include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
|
| @@ -27,7 +31,7 @@ namespace chromeos {
|
|
|
| namespace {
|
|
|
| -const char kAutoLoginUsername[] = "public_session_user@localhost";
|
| +const char kAutoLoginAccountId[] = "public_session_user@localhost";
|
| // These values are only used to test the configuration. They don't
|
| // delay the test.
|
| const int kAutoLoginNoDelay = 0;
|
| @@ -39,7 +43,10 @@ const int kAutoLoginDelay2 = 180000;
|
| class ExistingUserControllerAutoLoginTest : public ::testing::Test {
|
| protected:
|
| ExistingUserControllerAutoLoginTest()
|
| - : message_loop_(MessageLoop::TYPE_UI),
|
| + : auto_login_user_id_(policy::GenerateDeviceLocalAccountUserId(
|
| + kAutoLoginAccountId,
|
| + policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION)),
|
| + message_loop_(MessageLoop::TYPE_UI),
|
| ui_thread_(content::BrowserThread::UI, &message_loop_),
|
| local_state_(TestingBrowserProcess::GetGlobal()),
|
| mock_user_manager_(new MockUserManager()),
|
| @@ -61,13 +68,24 @@ class ExistingUserControllerAutoLoginTest : public ::testing::Test {
|
| EXPECT_CALL(*mock_user_manager_, Shutdown()).Times(AnyNumber());
|
| EXPECT_CALL(*mock_user_manager_, FindUser(_))
|
| .WillRepeatedly(ReturnNull());
|
| - EXPECT_CALL(*mock_user_manager_, FindUser(kAutoLoginUsername))
|
| + EXPECT_CALL(*mock_user_manager_, FindUser(auto_login_user_id_))
|
| .WillRepeatedly(Return(
|
| - mock_user_manager_->CreatePublicAccountUser(kAutoLoginUsername)));
|
| + mock_user_manager_->CreatePublicAccountUser(auto_login_user_id_)));
|
|
|
| existing_user_controller_.reset(
|
| new ExistingUserController(mock_login_display_host_.get()));
|
|
|
| + scoped_ptr<base::DictionaryValue> account(new base::DictionaryValue);
|
| + account->SetStringWithoutPathExpansion(
|
| + kAccountsPrefDeviceLocalAccountsKeyId,
|
| + kAutoLoginAccountId);
|
| + account->SetIntegerWithoutPathExpansion(
|
| + kAccountsPrefDeviceLocalAccountsKeyType,
|
| + policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION);
|
| + base::ListValue accounts;
|
| + accounts.Append(account.release());
|
| + CrosSettings::Get()->Set(kAccountsPrefDeviceLocalAccounts, accounts);
|
| +
|
| // Prevent settings changes from auto-starting the timer.
|
| CrosSettings::Get()->RemoveSettingsObserver(
|
| kAccountsPrefDeviceLocalAccountAutoLoginId,
|
| @@ -85,10 +103,10 @@ class ExistingUserControllerAutoLoginTest : public ::testing::Test {
|
| return ExistingUserController::current_controller();
|
| }
|
|
|
| - void SetAutoLoginSettings(const std::string& username, int delay) {
|
| + void SetAutoLoginSettings(const std::string& account_id, int delay) {
|
| CrosSettings::Get()->SetString(
|
| kAccountsPrefDeviceLocalAccountAutoLoginId,
|
| - username);
|
| + account_id);
|
| CrosSettings::Get()->SetInteger(
|
| kAccountsPrefDeviceLocalAccountAutoLoginDelay,
|
| delay);
|
| @@ -124,6 +142,8 @@ class ExistingUserControllerAutoLoginTest : public ::testing::Test {
|
| existing_user_controller()->ConfigurePublicSessionAutoLogin();
|
| }
|
|
|
| + const std::string auto_login_user_id_;
|
| +
|
| private:
|
| // Owned by LoginUtilsWrapper.
|
| MockLoginUtils* mock_login_utils_;
|
| @@ -150,7 +170,7 @@ class ExistingUserControllerAutoLoginTest : public ::testing::Test {
|
|
|
| TEST_F(ExistingUserControllerAutoLoginTest, StartAutoLoginTimer) {
|
| // Timer shouldn't start until signin screen is ready.
|
| - set_auto_login_username(kAutoLoginUsername);
|
| + set_auto_login_username(auto_login_user_id_);
|
| set_auto_login_delay(kAutoLoginDelay2);
|
| existing_user_controller()->StartPublicSessionAutoLoginTimer();
|
| EXPECT_FALSE(auto_login_timer());
|
| @@ -162,7 +182,7 @@ TEST_F(ExistingUserControllerAutoLoginTest, StartAutoLoginTimer) {
|
| EXPECT_FALSE(auto_login_timer());
|
|
|
| // Timer shouldn't fire in the middle of a login attempt.
|
| - set_auto_login_username(kAutoLoginUsername);
|
| + set_auto_login_username(auto_login_user_id_);
|
| set_is_login_in_progress(true);
|
| existing_user_controller()->StartPublicSessionAutoLoginTimer();
|
| EXPECT_FALSE(auto_login_timer());
|
| @@ -178,7 +198,7 @@ TEST_F(ExistingUserControllerAutoLoginTest, StartAutoLoginTimer) {
|
|
|
| TEST_F(ExistingUserControllerAutoLoginTest, StopAutoLoginTimer) {
|
| existing_user_controller()->OnSigninScreenReady();
|
| - set_auto_login_username(kAutoLoginUsername);
|
| + set_auto_login_username(auto_login_user_id_);
|
| set_auto_login_delay(kAutoLoginDelay2);
|
|
|
| existing_user_controller()->StartPublicSessionAutoLoginTimer();
|
| @@ -192,7 +212,7 @@ TEST_F(ExistingUserControllerAutoLoginTest, StopAutoLoginTimer) {
|
|
|
| TEST_F(ExistingUserControllerAutoLoginTest, ResetAutoLoginTimer) {
|
| existing_user_controller()->OnSigninScreenReady();
|
| - set_auto_login_username(kAutoLoginUsername);
|
| + set_auto_login_username(auto_login_user_id_);
|
|
|
| // Timer starts off not running.
|
| EXPECT_FALSE(auto_login_timer());
|
| @@ -235,27 +255,27 @@ TEST_F(ExistingUserControllerAutoLoginTest, ConfigureAutoLogin) {
|
| EXPECT_EQ(auto_login_delay(), kAutoLoginDelay1);
|
| EXPECT_EQ(auto_login_username(), "");
|
|
|
| - // Timer should start when the username is set.
|
| - SetAutoLoginSettings(kAutoLoginUsername, kAutoLoginDelay1);
|
| + // Timer should start when the account ID is set.
|
| + SetAutoLoginSettings(kAutoLoginAccountId, kAutoLoginDelay1);
|
| ConfigureAutoLogin();
|
| ASSERT_TRUE(auto_login_timer());
|
| EXPECT_TRUE(auto_login_timer()->IsRunning());
|
| EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(),
|
| kAutoLoginDelay1);
|
| EXPECT_EQ(auto_login_delay(), kAutoLoginDelay1);
|
| - EXPECT_EQ(auto_login_username(), kAutoLoginUsername);
|
| + EXPECT_EQ(auto_login_username(), auto_login_user_id_);
|
|
|
| // Timer should restart when the delay is changed.
|
| - SetAutoLoginSettings(kAutoLoginUsername, kAutoLoginDelay2);
|
| + SetAutoLoginSettings(kAutoLoginAccountId, kAutoLoginDelay2);
|
| ConfigureAutoLogin();
|
| ASSERT_TRUE(auto_login_timer());
|
| EXPECT_TRUE(auto_login_timer()->IsRunning());
|
| EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(),
|
| kAutoLoginDelay2);
|
| EXPECT_EQ(auto_login_delay(), kAutoLoginDelay2);
|
| - EXPECT_EQ(auto_login_username(), kAutoLoginUsername);
|
| + EXPECT_EQ(auto_login_username(), auto_login_user_id_);
|
|
|
| - // Timer should stop when the username is unset.
|
| + // Timer should stop when the account ID is unset.
|
| SetAutoLoginSettings("", kAutoLoginDelay2);
|
| ConfigureAutoLogin();
|
| ASSERT_TRUE(auto_login_timer());
|
|
|