| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h" |
| 10 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 11 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 11 #include "chrome/browser/chromeos/login/ui/mock_login_display.h" | 12 #include "chrome/browser/chromeos/login/ui/mock_login_display.h" |
| 12 #include "chrome/browser/chromeos/login/ui/mock_login_display_host.h" | 13 #include "chrome/browser/chromeos/login/ui/mock_login_display_host.h" |
| 13 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" | 14 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" |
| 14 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 15 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| 15 #include "chrome/browser/chromeos/policy/device_local_account.h" | 16 #include "chrome/browser/chromeos/policy/device_local_account.h" |
| 16 #include "chrome/browser/chromeos/settings/cros_settings.h" | 17 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 17 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h" | 18 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h" |
| 18 #include "chrome/test/base/scoped_testing_local_state.h" | 19 #include "chrome/test/base/scoped_testing_local_state.h" |
| 19 #include "chrome/test/base/testing_browser_process.h" | 20 #include "chrome/test/base/testing_browser_process.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 42 protected: | 43 protected: |
| 43 ExistingUserControllerAutoLoginTest() | 44 ExistingUserControllerAutoLoginTest() |
| 44 : ui_thread_(content::BrowserThread::UI, &message_loop_), | 45 : ui_thread_(content::BrowserThread::UI, &message_loop_), |
| 45 local_state_(TestingBrowserProcess::GetGlobal()), | 46 local_state_(TestingBrowserProcess::GetGlobal()), |
| 46 mock_user_manager_(new MockUserManager()), | 47 mock_user_manager_(new MockUserManager()), |
| 47 scoped_user_manager_(mock_user_manager_) {} | 48 scoped_user_manager_(mock_user_manager_) {} |
| 48 | 49 |
| 49 void SetUp() override { | 50 void SetUp() override { |
| 50 mock_login_display_host_.reset(new MockLoginDisplayHost); | 51 mock_login_display_host_.reset(new MockLoginDisplayHost); |
| 51 mock_login_display_ = new MockLoginDisplay(); | 52 mock_login_display_ = new MockLoginDisplay(); |
| 53 arc_kiosk_app_manager_.reset(new ArcKioskAppManager()); |
| 52 | 54 |
| 53 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) | 55 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) |
| 54 .Times(1) | 56 .Times(1) |
| 55 .WillOnce(Return(mock_login_display_)); | 57 .WillOnce(Return(mock_login_display_)); |
| 56 | 58 |
| 57 EXPECT_CALL(*mock_user_manager_, Shutdown()).Times(AnyNumber()); | 59 EXPECT_CALL(*mock_user_manager_, Shutdown()).Times(AnyNumber()); |
| 58 EXPECT_CALL(*mock_user_manager_, FindUser(_)) | 60 EXPECT_CALL(*mock_user_manager_, FindUser(_)) |
| 59 .WillRepeatedly(ReturnNull()); | 61 .WillRepeatedly(ReturnNull()); |
| 60 EXPECT_CALL(*mock_user_manager_, FindUser(auto_login_account_id_)) | 62 EXPECT_CALL(*mock_user_manager_, FindUser(auto_login_account_id_)) |
| 61 .WillRepeatedly(Return(mock_user_manager_->CreatePublicAccountUser( | 63 .WillRepeatedly(Return(mock_user_manager_->CreatePublicAccountUser( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 | 106 |
| 105 const AccountId& auto_login_account_id() const { | 107 const AccountId& auto_login_account_id() const { |
| 106 return existing_user_controller()->public_session_auto_login_account_id_; | 108 return existing_user_controller()->public_session_auto_login_account_id_; |
| 107 } | 109 } |
| 108 void set_auto_login_account_id(const AccountId& account_id) { | 110 void set_auto_login_account_id(const AccountId& account_id) { |
| 109 existing_user_controller()->public_session_auto_login_account_id_ = | 111 existing_user_controller()->public_session_auto_login_account_id_ = |
| 110 account_id; | 112 account_id; |
| 111 } | 113 } |
| 112 | 114 |
| 113 int auto_login_delay() const { | 115 int auto_login_delay() const { |
| 114 return existing_user_controller()->public_session_auto_login_delay_; | 116 return existing_user_controller()->auto_login_delay_; |
| 115 } | 117 } |
| 116 void set_auto_login_delay(int delay) { | 118 void set_auto_login_delay(int delay) { |
| 117 existing_user_controller()->public_session_auto_login_delay_ = delay; | 119 existing_user_controller()->auto_login_delay_ = delay; |
| 118 } | 120 } |
| 119 | 121 |
| 120 bool is_login_in_progress() const { | 122 bool is_login_in_progress() const { |
| 121 return existing_user_controller()->is_login_in_progress_; | 123 return existing_user_controller()->is_login_in_progress_; |
| 122 } | 124 } |
| 123 void set_is_login_in_progress(bool is_login_in_progress) { | 125 void set_is_login_in_progress(bool is_login_in_progress) { |
| 124 existing_user_controller()->is_login_in_progress_ = is_login_in_progress; | 126 existing_user_controller()->is_login_in_progress_ = is_login_in_progress; |
| 125 } | 127 } |
| 126 | 128 |
| 127 void ConfigureAutoLogin() { | 129 void ConfigureAutoLogin() { |
| 128 existing_user_controller()->ConfigurePublicSessionAutoLogin(); | 130 existing_user_controller()->ConfigureAutoLogin(); |
| 129 } | 131 } |
| 130 | 132 |
| 131 const std::string auto_login_user_id_ = | 133 const std::string auto_login_user_id_ = |
| 132 std::string("public_session_user@localhost"); | 134 std::string("public_session_user@localhost"); |
| 133 | 135 |
| 134 const AccountId auto_login_account_id_ = | 136 const AccountId auto_login_account_id_ = |
| 135 AccountId::FromUserEmail(policy::GenerateDeviceLocalAccountUserId( | 137 AccountId::FromUserEmail(policy::GenerateDeviceLocalAccountUserId( |
| 136 auto_login_user_id_, | 138 auto_login_user_id_, |
| 137 policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION)); | 139 policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION)); |
| 138 | 140 |
| 139 private: | 141 private: |
| 140 // |mock_login_display_| is owned by the ExistingUserController, which calls | 142 // |mock_login_display_| is owned by the ExistingUserController, which calls |
| 141 // CreateLoginDisplay() on the |mock_login_display_host_| to get it. | 143 // CreateLoginDisplay() on the |mock_login_display_host_| to get it. |
| 142 MockLoginDisplay* mock_login_display_; | 144 MockLoginDisplay* mock_login_display_; |
| 143 | 145 |
| 144 std::unique_ptr<MockLoginDisplayHost> mock_login_display_host_; | 146 std::unique_ptr<MockLoginDisplayHost> mock_login_display_host_; |
| 145 base::MessageLoopForUI message_loop_; | 147 base::MessageLoopForUI message_loop_; |
| 146 content::TestBrowserThread ui_thread_; | 148 content::TestBrowserThread ui_thread_; |
| 147 ScopedTestingLocalState local_state_; | 149 ScopedTestingLocalState local_state_; |
| 148 | 150 |
| 149 // Required by ExistingUserController: | 151 // Required by ExistingUserController: |
| 150 ScopedDeviceSettingsTestHelper device_settings_test_helper_; | 152 ScopedDeviceSettingsTestHelper device_settings_test_helper_; |
| 151 ScopedTestCrosSettings test_cros_settings_; | 153 ScopedTestCrosSettings test_cros_settings_; |
| 152 MockUserManager* mock_user_manager_; | 154 MockUserManager* mock_user_manager_; |
| 153 ScopedUserManagerEnabler scoped_user_manager_; | 155 ScopedUserManagerEnabler scoped_user_manager_; |
| 156 std::unique_ptr<ArcKioskAppManager> arc_kiosk_app_manager_; |
| 154 | 157 |
| 155 // |existing_user_controller_| must be destroyed before | 158 // |existing_user_controller_| must be destroyed before |
| 156 // |device_settings_test_helper_|. | 159 // |device_settings_test_helper_|. |
| 157 std::unique_ptr<ExistingUserController> existing_user_controller_; | 160 std::unique_ptr<ExistingUserController> existing_user_controller_; |
| 158 }; | 161 }; |
| 159 | 162 |
| 160 TEST_F(ExistingUserControllerAutoLoginTest, StartAutoLoginTimer) { | 163 TEST_F(ExistingUserControllerAutoLoginTest, StartAutoLoginTimer) { |
| 161 // Timer shouldn't start until signin screen is ready. | 164 // Timer shouldn't start until signin screen is ready. |
| 162 set_auto_login_account_id(auto_login_account_id_); | 165 set_auto_login_account_id(auto_login_account_id_); |
| 163 set_auto_login_delay(kAutoLoginDelay2); | 166 set_auto_login_delay(kAutoLoginDelay2); |
| 164 existing_user_controller()->StartPublicSessionAutoLoginTimer(); | 167 existing_user_controller()->StartAutoLoginTimer(); |
| 165 EXPECT_FALSE(auto_login_timer()); | 168 EXPECT_FALSE(auto_login_timer()); |
| 166 | 169 |
| 167 // Timer shouldn't start if the policy isn't set. | 170 // Timer shouldn't start if the policy isn't set. |
| 168 set_auto_login_account_id(EmptyAccountId()); | 171 set_auto_login_account_id(EmptyAccountId()); |
| 169 existing_user_controller()->OnSigninScreenReady(); | 172 existing_user_controller()->OnSigninScreenReady(); |
| 170 existing_user_controller()->StartPublicSessionAutoLoginTimer(); | 173 existing_user_controller()->StartAutoLoginTimer(); |
| 171 EXPECT_FALSE(auto_login_timer()); | 174 EXPECT_FALSE(auto_login_timer()); |
| 172 | 175 |
| 173 // Timer shouldn't fire in the middle of a login attempt. | 176 // Timer shouldn't fire in the middle of a login attempt. |
| 174 set_auto_login_account_id(auto_login_account_id_); | 177 set_auto_login_account_id(auto_login_account_id_); |
| 175 set_is_login_in_progress(true); | 178 set_is_login_in_progress(true); |
| 176 existing_user_controller()->StartPublicSessionAutoLoginTimer(); | 179 existing_user_controller()->StartAutoLoginTimer(); |
| 177 EXPECT_FALSE(auto_login_timer()); | 180 EXPECT_FALSE(auto_login_timer()); |
| 178 | 181 |
| 179 // Otherwise start. | 182 // Otherwise start. |
| 180 set_is_login_in_progress(false); | 183 set_is_login_in_progress(false); |
| 181 existing_user_controller()->StartPublicSessionAutoLoginTimer(); | 184 existing_user_controller()->StartAutoLoginTimer(); |
| 182 ASSERT_TRUE(auto_login_timer()); | 185 ASSERT_TRUE(auto_login_timer()); |
| 183 EXPECT_TRUE(auto_login_timer()->IsRunning()); | 186 EXPECT_TRUE(auto_login_timer()->IsRunning()); |
| 184 EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(), | 187 EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(), |
| 185 kAutoLoginDelay2); | 188 kAutoLoginDelay2); |
| 186 } | 189 } |
| 187 | 190 |
| 188 TEST_F(ExistingUserControllerAutoLoginTest, StopAutoLoginTimer) { | 191 TEST_F(ExistingUserControllerAutoLoginTest, StopAutoLoginTimer) { |
| 189 existing_user_controller()->OnSigninScreenReady(); | 192 existing_user_controller()->OnSigninScreenReady(); |
| 190 set_auto_login_account_id(auto_login_account_id_); | 193 set_auto_login_account_id(auto_login_account_id_); |
| 191 set_auto_login_delay(kAutoLoginDelay2); | 194 set_auto_login_delay(kAutoLoginDelay2); |
| 192 | 195 |
| 193 existing_user_controller()->StartPublicSessionAutoLoginTimer(); | 196 existing_user_controller()->StartAutoLoginTimer(); |
| 194 ASSERT_TRUE(auto_login_timer()); | 197 ASSERT_TRUE(auto_login_timer()); |
| 195 EXPECT_TRUE(auto_login_timer()->IsRunning()); | 198 EXPECT_TRUE(auto_login_timer()->IsRunning()); |
| 196 | 199 |
| 197 existing_user_controller()->StopPublicSessionAutoLoginTimer(); | 200 existing_user_controller()->StopAutoLoginTimer(); |
| 198 ASSERT_TRUE(auto_login_timer()); | 201 ASSERT_TRUE(auto_login_timer()); |
| 199 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 202 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 200 } | 203 } |
| 201 | 204 |
| 202 TEST_F(ExistingUserControllerAutoLoginTest, ResetAutoLoginTimer) { | 205 TEST_F(ExistingUserControllerAutoLoginTest, ResetAutoLoginTimer) { |
| 203 existing_user_controller()->OnSigninScreenReady(); | 206 existing_user_controller()->OnSigninScreenReady(); |
| 204 set_auto_login_account_id(auto_login_account_id_); | 207 set_auto_login_account_id(auto_login_account_id_); |
| 205 | 208 |
| 206 // Timer starts off not running. | 209 // Timer starts off not running. |
| 207 EXPECT_FALSE(auto_login_timer()); | 210 EXPECT_FALSE(auto_login_timer()); |
| 208 | 211 |
| 209 // When the timer isn't running, nothing should happen. | 212 // When the timer isn't running, nothing should happen. |
| 210 existing_user_controller()->ResetPublicSessionAutoLoginTimer(); | 213 existing_user_controller()->ResetPublicSessionAutoLoginTimer(); |
| 211 EXPECT_FALSE(auto_login_timer()); | 214 EXPECT_FALSE(auto_login_timer()); |
| 212 | 215 |
| 213 // Start the timer. | 216 // Start the timer. |
| 214 set_auto_login_delay(kAutoLoginDelay2); | 217 set_auto_login_delay(kAutoLoginDelay2); |
| 215 existing_user_controller()->StartPublicSessionAutoLoginTimer(); | 218 existing_user_controller()->StartAutoLoginTimer(); |
| 216 ASSERT_TRUE(auto_login_timer()); | 219 ASSERT_TRUE(auto_login_timer()); |
| 217 EXPECT_TRUE(auto_login_timer()->IsRunning()); | 220 EXPECT_TRUE(auto_login_timer()->IsRunning()); |
| 218 EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(), | 221 EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(), |
| 219 kAutoLoginDelay2); | 222 kAutoLoginDelay2); |
| 220 | 223 |
| 221 // User activity should restart the timer, so check to see that the | 224 // User activity should restart the timer, so check to see that the |
| 222 // timer delay was modified. | 225 // timer delay was modified. |
| 223 set_auto_login_delay(kAutoLoginDelay1); | 226 set_auto_login_delay(kAutoLoginDelay1); |
| 224 existing_user_controller()->ResetPublicSessionAutoLoginTimer(); | 227 existing_user_controller()->ResetPublicSessionAutoLoginTimer(); |
| 225 ASSERT_TRUE(auto_login_timer()); | 228 ASSERT_TRUE(auto_login_timer()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 ConfigureAutoLogin(); | 272 ConfigureAutoLogin(); |
| 270 ASSERT_TRUE(auto_login_timer()); | 273 ASSERT_TRUE(auto_login_timer()); |
| 271 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 274 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 272 EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(), | 275 EXPECT_EQ(auto_login_timer()->GetCurrentDelay().InMilliseconds(), |
| 273 kAutoLoginDelay2); | 276 kAutoLoginDelay2); |
| 274 EXPECT_EQ(auto_login_account_id(), EmptyAccountId()); | 277 EXPECT_EQ(auto_login_account_id(), EmptyAccountId()); |
| 275 EXPECT_EQ(auto_login_delay(), kAutoLoginDelay2); | 278 EXPECT_EQ(auto_login_delay(), kAutoLoginDelay2); |
| 276 } | 279 } |
| 277 | 280 |
| 278 } // namespace chromeos | 281 } // namespace chromeos |
| OLD | NEW |