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 "chrome/browser/ui/ash/session_controller_client.h" | 5 #include "chrome/browser/ui/ash/session_controller_client.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "base/run_loop.h" | 12 #include "base/run_loop.h" |
13 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" | 13 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" |
14 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" | 14 #include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" |
15 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 15 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
16 #include "chrome/browser/chromeos/policy/policy_cert_service.h" | 16 #include "chrome/browser/chromeos/policy/policy_cert_service.h" |
17 #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h" | 17 #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h" |
18 #include "chrome/browser/chromeos/policy/policy_cert_verifier.h" | 18 #include "chrome/browser/chromeos/policy/policy_cert_verifier.h" |
19 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 19 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
20 #include "chrome/browser/supervised_user/supervised_user_service.h" | 20 #include "chrome/browser/supervised_user/supervised_user_service.h" |
21 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" | 21 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
22 #include "chrome/common/pref_names.h" | 22 #include "chrome/common/pref_names.h" |
23 #include "chrome/test/base/testing_browser_process.h" | 23 #include "chrome/test/base/testing_browser_process.h" |
24 #include "chrome/test/base/testing_profile_manager.h" | 24 #include "chrome/test/base/testing_profile_manager.h" |
| 25 #include "components/prefs/pref_service.h" |
25 #include "components/session_manager/core/session_manager.h" | 26 #include "components/session_manager/core/session_manager.h" |
26 #include "components/signin/core/account_id/account_id.h" | 27 #include "components/signin/core/account_id/account_id.h" |
27 #include "components/user_manager/user_manager.h" | 28 #include "components/user_manager/user_manager.h" |
28 #include "content/public/test/test_browser_thread_bundle.h" | 29 #include "content/public/test/test_browser_thread_bundle.h" |
29 #include "net/cert/x509_certificate.h" | 30 #include "net/cert/x509_certificate.h" |
30 #include "net/test/cert_test_util.h" | 31 #include "net/test/cert_test_util.h" |
31 #include "net/test/test_data_directory.h" | 32 #include "net/test/test_data_directory.h" |
32 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
33 | 34 |
34 using chromeos::FakeChromeUserManager; | 35 using chromeos::FakeChromeUserManager; |
(...skipping 24 matching lines...) Expand all Loading... |
59 // user_manager::UserManager: | 60 // user_manager::UserManager: |
60 void UserLoggedIn(const AccountId& account_id, | 61 void UserLoggedIn(const AccountId& account_id, |
61 const std::string& user_id_hash, | 62 const std::string& user_id_hash, |
62 bool browser_restart) override { | 63 bool browser_restart) override { |
63 FakeChromeUserManager::UserLoggedIn(account_id, user_id_hash, | 64 FakeChromeUserManager::UserLoggedIn(account_id, user_id_hash, |
64 browser_restart); | 65 browser_restart); |
65 active_user_ = const_cast<user_manager::User*>(FindUser(account_id)); | 66 active_user_ = const_cast<user_manager::User*>(FindUser(account_id)); |
66 NotifyOnLogin(); | 67 NotifyOnLogin(); |
67 } | 68 } |
68 | 69 |
| 70 user_manager::UserList GetUnlockUsers() const override { |
| 71 // Test case UserPrefsChange expects that the list of the unlock users |
| 72 // depends on prefs::kAllowScreenLock. |
| 73 user_manager::UserList unlock_users; |
| 74 for (user_manager::User* user : users_) { |
| 75 Profile* user_profile = |
| 76 chromeos::ProfileHelper::Get()->GetProfileByUser(user); |
| 77 // Skip if user has a profile and kAllowScreenLock is set to false. |
| 78 if (user_profile && |
| 79 !user_profile->GetPrefs()->GetBoolean(prefs::kAllowScreenLock)) { |
| 80 continue; |
| 81 } |
| 82 |
| 83 unlock_users.push_back(user); |
| 84 } |
| 85 |
| 86 return unlock_users; |
| 87 } |
| 88 |
69 private: | 89 private: |
70 DISALLOW_COPY_AND_ASSIGN(TestChromeUserManager); | 90 DISALLOW_COPY_AND_ASSIGN(TestChromeUserManager); |
71 }; | 91 }; |
72 | 92 |
73 // A session controller interface implementation that tracks sessions and users. | 93 // A session controller interface implementation that tracks sessions and users. |
74 class TestSessionController : public ash::mojom::SessionController { | 94 class TestSessionController : public ash::mojom::SessionController { |
75 public: | 95 public: |
76 TestSessionController() : binding_(this) {} | 96 TestSessionController() : binding_(this) {} |
77 ~TestSessionController() override {} | 97 ~TestSessionController() override {} |
78 | 98 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 const std::string& GetActiveUserEmail() { | 185 const std::string& GetActiveUserEmail() { |
166 return user_manager::UserManager::Get() | 186 return user_manager::UserManager::Get() |
167 ->GetActiveUser() | 187 ->GetActiveUser() |
168 ->GetAccountId() | 188 ->GetAccountId() |
169 .GetUserEmail(); | 189 .GetUserEmail(); |
170 } | 190 } |
171 | 191 |
172 TestChromeUserManager* user_manager() { return user_manager_; } | 192 TestChromeUserManager* user_manager() { return user_manager_; } |
173 | 193 |
174 // Adds a regular user with a profile. | 194 // Adds a regular user with a profile. |
175 void InitForMultiProfile() { | 195 TestingProfile* InitForMultiProfile() { |
176 const AccountId account_id(AccountId::FromUserEmail(kUser)); | 196 const AccountId account_id(AccountId::FromUserEmail(kUser)); |
177 const user_manager::User* user = user_manager()->AddUser(account_id); | 197 const user_manager::User* user = user_manager()->AddUser(account_id); |
178 | 198 |
179 // Note that user profiles are created after user login in reality. | 199 // Note that user profiles are created after user login in reality. |
180 CreateTestingProfile(user); | 200 return CreateTestingProfile(user); |
181 } | 201 } |
182 | 202 |
183 // Calls private methods to create a testing profile. | 203 // Calls private methods to create a testing profile. The created profile |
184 void CreateTestingProfile(const user_manager::User* user) { | 204 // is owned by ProfileManager. |
| 205 TestingProfile* CreateTestingProfile(const user_manager::User* user) { |
185 const AccountId& account_id = user->GetAccountId(); | 206 const AccountId& account_id = user->GetAccountId(); |
186 user_profile_ = | 207 TestingProfile* profile = |
187 profile_manager_->CreateTestingProfile(account_id.GetUserEmail()); | 208 profile_manager_->CreateTestingProfile(account_id.GetUserEmail()); |
188 user_profile_->set_profile_name(account_id.GetUserEmail()); | 209 profile->set_profile_name(account_id.GetUserEmail()); |
189 chromeos::ProfileHelper::Get()->SetUserToProfileMappingForTesting( | 210 chromeos::ProfileHelper::Get()->SetUserToProfileMappingForTesting(user, |
190 user, user_profile_); | 211 profile); |
| 212 return profile; |
191 } | 213 } |
192 | 214 |
193 content::TestBrowserThreadBundle threads_; | 215 content::TestBrowserThreadBundle threads_; |
194 std::unique_ptr<policy::PolicyCertVerifier> cert_verifier_; | 216 std::unique_ptr<policy::PolicyCertVerifier> cert_verifier_; |
195 std::unique_ptr<TestingProfileManager> profile_manager_; | 217 std::unique_ptr<TestingProfileManager> profile_manager_; |
196 TestingProfile* user_profile_; | |
197 session_manager::SessionManager session_manager_; | 218 session_manager::SessionManager session_manager_; |
198 | 219 |
199 private: | 220 private: |
200 std::unique_ptr<chromeos::ScopedUserManagerEnabler> user_manager_enabler_; | 221 std::unique_ptr<chromeos::ScopedUserManagerEnabler> user_manager_enabler_; |
201 | 222 |
202 // Owned by |user_manager_enabler_|. | 223 // Owned by |user_manager_enabler_|. |
203 TestChromeUserManager* user_manager_ = nullptr; | 224 TestChromeUserManager* user_manager_ = nullptr; |
204 | 225 |
205 DISALLOW_COPY_AND_ASSIGN(SessionControllerClientTest); | 226 DISALLOW_COPY_AND_ASSIGN(SessionControllerClientTest); |
206 }; | 227 }; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 SessionControllerClient::DoCycleActiveUser(backward); | 260 SessionControllerClient::DoCycleActiveUser(backward); |
240 EXPECT_EQ("thirduser@test.com", GetActiveUserEmail()); | 261 EXPECT_EQ("thirduser@test.com", GetActiveUserEmail()); |
241 SessionControllerClient::DoCycleActiveUser(backward); | 262 SessionControllerClient::DoCycleActiveUser(backward); |
242 EXPECT_EQ("seconduser@test.com", GetActiveUserEmail()); | 263 EXPECT_EQ("seconduser@test.com", GetActiveUserEmail()); |
243 SessionControllerClient::DoCycleActiveUser(backward); | 264 SessionControllerClient::DoCycleActiveUser(backward); |
244 EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); | 265 EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); |
245 } | 266 } |
246 | 267 |
247 // Make sure MultiProfile disabled by primary user policy. | 268 // Make sure MultiProfile disabled by primary user policy. |
248 TEST_F(SessionControllerClientTest, MultiProfileDisallowedByUserPolicy) { | 269 TEST_F(SessionControllerClientTest, MultiProfileDisallowedByUserPolicy) { |
249 InitForMultiProfile(); | 270 TestingProfile* user_profile = InitForMultiProfile(); |
250 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, | 271 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
251 SessionControllerClient::GetAddUserSessionPolicy()); | 272 SessionControllerClient::GetAddUserSessionPolicy()); |
252 const AccountId account_id(AccountId::FromUserEmail(kUser)); | 273 const AccountId account_id(AccountId::FromUserEmail(kUser)); |
253 user_manager()->LoginUser(account_id); | 274 user_manager()->LoginUser(account_id); |
254 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NO_ELIGIBLE_USERS, | 275 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NO_ELIGIBLE_USERS, |
255 SessionControllerClient::GetAddUserSessionPolicy()); | 276 SessionControllerClient::GetAddUserSessionPolicy()); |
256 | 277 |
257 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); | 278 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); |
258 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, | 279 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
259 SessionControllerClient::GetAddUserSessionPolicy()); | 280 SessionControllerClient::GetAddUserSessionPolicy()); |
260 | 281 |
261 user_profile_->GetPrefs()->SetString( | 282 user_profile->GetPrefs()->SetString( |
262 prefs::kMultiProfileUserBehavior, | 283 prefs::kMultiProfileUserBehavior, |
263 chromeos::MultiProfileUserController::kBehaviorNotAllowed); | 284 chromeos::MultiProfileUserController::kBehaviorNotAllowed); |
264 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, | 285 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, |
265 SessionControllerClient::GetAddUserSessionPolicy()); | 286 SessionControllerClient::GetAddUserSessionPolicy()); |
266 } | 287 } |
267 | 288 |
268 // Make sure MultiProfile disabled by primary user policy certificates. | 289 // Make sure MultiProfile disabled by primary user policy certificates. |
269 TEST_F(SessionControllerClientTest, | 290 TEST_F(SessionControllerClientTest, |
270 MultiProfileDisallowedByPolicyCertificates) { | 291 MultiProfileDisallowedByPolicyCertificates) { |
271 InitForMultiProfile(); | 292 InitForMultiProfile(); |
272 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); | 293 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); |
273 | 294 |
274 const AccountId account_id(AccountId::FromUserEmail(kUser)); | 295 const AccountId account_id(AccountId::FromUserEmail(kUser)); |
275 user_manager()->LoginUser(account_id); | 296 user_manager()->LoginUser(account_id); |
276 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, | 297 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
277 SessionControllerClient::GetAddUserSessionPolicy()); | 298 SessionControllerClient::GetAddUserSessionPolicy()); |
278 policy::PolicyCertServiceFactory::SetUsedPolicyCertificates( | 299 policy::PolicyCertServiceFactory::SetUsedPolicyCertificates( |
279 account_id.GetUserEmail()); | 300 account_id.GetUserEmail()); |
280 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, | 301 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, |
281 SessionControllerClient::GetAddUserSessionPolicy()); | 302 SessionControllerClient::GetAddUserSessionPolicy()); |
282 | 303 |
283 // Flush tasks posted to IO. | 304 // Flush tasks posted to IO. |
284 base::RunLoop().RunUntilIdle(); | 305 base::RunLoop().RunUntilIdle(); |
285 } | 306 } |
286 | 307 |
287 // Make sure MultiProfile disabled by primary user certificates in memory. | 308 // Make sure MultiProfile disabled by primary user certificates in memory. |
288 TEST_F(SessionControllerClientTest, | 309 TEST_F(SessionControllerClientTest, |
289 MultiProfileDisallowedByPrimaryUserCertificatesInMemory) { | 310 MultiProfileDisallowedByPrimaryUserCertificatesInMemory) { |
290 InitForMultiProfile(); | 311 TestingProfile* user_profile = InitForMultiProfile(); |
291 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); | 312 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); |
292 | 313 |
293 const AccountId account_id(AccountId::FromUserEmail(kUser)); | 314 const AccountId account_id(AccountId::FromUserEmail(kUser)); |
294 user_manager()->LoginUser(account_id); | 315 user_manager()->LoginUser(account_id); |
295 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, | 316 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
296 SessionControllerClient::GetAddUserSessionPolicy()); | 317 SessionControllerClient::GetAddUserSessionPolicy()); |
297 cert_verifier_.reset(new policy::PolicyCertVerifier(base::Closure())); | 318 cert_verifier_.reset(new policy::PolicyCertVerifier(base::Closure())); |
298 g_policy_cert_verifier_for_factory = cert_verifier_.get(); | 319 g_policy_cert_verifier_for_factory = cert_verifier_.get(); |
299 ASSERT_TRUE( | 320 ASSERT_TRUE( |
300 policy::PolicyCertServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 321 policy::PolicyCertServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
301 user_profile_, CreateTestPolicyCertService)); | 322 user_profile, CreateTestPolicyCertService)); |
302 policy::PolicyCertService* service = | 323 policy::PolicyCertService* service = |
303 policy::PolicyCertServiceFactory::GetForProfile(user_profile_); | 324 policy::PolicyCertServiceFactory::GetForProfile(user_profile); |
304 ASSERT_TRUE(service); | 325 ASSERT_TRUE(service); |
305 | 326 |
306 EXPECT_FALSE(service->has_policy_certificates()); | 327 EXPECT_FALSE(service->has_policy_certificates()); |
307 net::CertificateList certificates; | 328 net::CertificateList certificates; |
308 certificates.push_back( | 329 certificates.push_back( |
309 net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem")); | 330 net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem")); |
310 service->OnTrustAnchorsChanged(certificates); | 331 service->OnTrustAnchorsChanged(certificates); |
311 EXPECT_TRUE(service->has_policy_certificates()); | 332 EXPECT_TRUE(service->has_policy_certificates()); |
312 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, | 333 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, |
313 SessionControllerClient::GetAddUserSessionPolicy()); | 334 SessionControllerClient::GetAddUserSessionPolicy()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 const AccountId account_id(AccountId::FromUserEmail(kUser)); | 366 const AccountId account_id(AccountId::FromUserEmail(kUser)); |
346 user_manager()->LoginUser(account_id); | 367 user_manager()->LoginUser(account_id); |
347 UserAddedToSession("bb@b.b"); | 368 UserAddedToSession("bb@b.b"); |
348 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NO_ELIGIBLE_USERS, | 369 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NO_ELIGIBLE_USERS, |
349 SessionControllerClient::GetAddUserSessionPolicy()); | 370 SessionControllerClient::GetAddUserSessionPolicy()); |
350 } | 371 } |
351 | 372 |
352 // Make sure adding users to multiprofiles disabled by primary user policy. | 373 // Make sure adding users to multiprofiles disabled by primary user policy. |
353 TEST_F(SessionControllerClientTest, | 374 TEST_F(SessionControllerClientTest, |
354 AddUserToMultiprofileDisallowedByPrimaryUserPolicy) { | 375 AddUserToMultiprofileDisallowedByPrimaryUserPolicy) { |
355 InitForMultiProfile(); | 376 TestingProfile* user_profile = InitForMultiProfile(); |
356 | 377 |
357 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, | 378 EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
358 SessionControllerClient::GetAddUserSessionPolicy()); | 379 SessionControllerClient::GetAddUserSessionPolicy()); |
359 const AccountId account_id(AccountId::FromUserEmail(kUser)); | 380 const AccountId account_id(AccountId::FromUserEmail(kUser)); |
360 user_manager()->LoginUser(account_id); | 381 user_manager()->LoginUser(account_id); |
361 user_profile_->GetPrefs()->SetString( | 382 user_profile->GetPrefs()->SetString( |
362 prefs::kMultiProfileUserBehavior, | 383 prefs::kMultiProfileUserBehavior, |
363 chromeos::MultiProfileUserController::kBehaviorNotAllowed); | 384 chromeos::MultiProfileUserController::kBehaviorNotAllowed); |
364 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); | 385 user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); |
365 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, | 386 EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, |
366 SessionControllerClient::GetAddUserSessionPolicy()); | 387 SessionControllerClient::GetAddUserSessionPolicy()); |
367 } | 388 } |
368 | 389 |
369 TEST_F(SessionControllerClientTest, SendUserSession) { | 390 TEST_F(SessionControllerClientTest, SendUserSession) { |
370 // Create an object to test and connect it to our test interface. | 391 // Create an object to test and connect it to our test interface. |
371 SessionControllerClient client; | 392 SessionControllerClient client; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 "child@test.com")); | 443 "child@test.com")); |
423 session_manager_.SetSessionState(SessionState::ACTIVE); | 444 session_manager_.SetSessionState(SessionState::ACTIVE); |
424 SessionControllerClient::FlushForTesting(); | 445 SessionControllerClient::FlushForTesting(); |
425 | 446 |
426 // The session controller received session info and user session. | 447 // The session controller received session info and user session. |
427 EXPECT_LT(0u, session_controller.last_user_session()->session_id); | 448 EXPECT_LT(0u, session_controller.last_user_session()->session_id); |
428 EXPECT_EQ(user_manager::USER_TYPE_SUPERVISED, | 449 EXPECT_EQ(user_manager::USER_TYPE_SUPERVISED, |
429 session_controller.last_user_session()->type); | 450 session_controller.last_user_session()->type); |
430 | 451 |
431 // Simulate profile creation after login. | 452 // Simulate profile creation after login. |
432 CreateTestingProfile(user); | 453 TestingProfile* user_profile = CreateTestingProfile(user); |
433 user_profile_->SetSupervisedUserId("child-id"); | 454 user_profile->SetSupervisedUserId("child-id"); |
434 | 455 |
435 // Simulate supervised user custodians. | 456 // Simulate supervised user custodians. |
436 PrefService* prefs = user_profile_->GetPrefs(); | 457 PrefService* prefs = user_profile->GetPrefs(); |
437 prefs->SetString(prefs::kSupervisedUserCustodianEmail, "parent1@test.com"); | 458 prefs->SetString(prefs::kSupervisedUserCustodianEmail, "parent1@test.com"); |
438 prefs->SetString(prefs::kSupervisedUserSecondCustodianEmail, | 459 prefs->SetString(prefs::kSupervisedUserSecondCustodianEmail, |
439 "parent2@test.com"); | 460 "parent2@test.com"); |
440 | 461 |
441 // Simulate the notification that the profile is ready. | 462 // Simulate the notification that the profile is ready. |
442 client.OnLoginUserProfilePrepared(user_profile_); | 463 client.OnLoginUserProfilePrepared(user_profile); |
443 base::RunLoop().RunUntilIdle(); // For PostTask and mojo interface. | 464 base::RunLoop().RunUntilIdle(); // For PostTask and mojo interface. |
444 | 465 |
445 // The custodians were sent over the mojo interface. | 466 // The custodians were sent over the mojo interface. |
446 EXPECT_EQ("parent1@test.com", | 467 EXPECT_EQ("parent1@test.com", |
447 session_controller.last_user_session()->custodian_email); | 468 session_controller.last_user_session()->custodian_email); |
448 EXPECT_EQ("parent2@test.com", | 469 EXPECT_EQ("parent2@test.com", |
449 session_controller.last_user_session()->second_custodian_email); | 470 session_controller.last_user_session()->second_custodian_email); |
450 | 471 |
451 // Simulate an update to the custodian information. | 472 // Simulate an update to the custodian information. |
452 prefs->SetString(prefs::kSupervisedUserCustodianEmail, "parent3@test.com"); | 473 prefs->SetString(prefs::kSupervisedUserCustodianEmail, "parent3@test.com"); |
453 client.OnCustodianInfoChanged(); | 474 client.OnCustodianInfoChanged(); |
454 SessionControllerClient::FlushForTesting(); | 475 SessionControllerClient::FlushForTesting(); |
455 | 476 |
456 // The updated custodian was sent over the mojo interface. | 477 // The updated custodian was sent over the mojo interface. |
457 EXPECT_EQ("parent3@test.com", | 478 EXPECT_EQ("parent3@test.com", |
458 session_controller.last_user_session()->custodian_email); | 479 session_controller.last_user_session()->custodian_email); |
459 } | 480 } |
| 481 |
| 482 TEST_F(SessionControllerClientTest, UserPrefsChange) { |
| 483 // Create an object to test and connect it to our test interface. |
| 484 SessionControllerClient client; |
| 485 TestSessionController session_controller; |
| 486 client.session_controller_ = session_controller.CreateInterfacePtrAndBind(); |
| 487 client.Init(); |
| 488 SessionControllerClient::FlushForTesting(); |
| 489 |
| 490 // Simulate login. |
| 491 const AccountId account_id(AccountId::FromUserEmail("user@test.com")); |
| 492 const user_manager::User* user = user_manager()->AddUser(account_id); |
| 493 session_manager_.CreateSession( |
| 494 account_id, chromeos::ProfileHelper::GetUserIdHashByUserIdForTesting( |
| 495 "user@test.com")); |
| 496 session_manager_.SetSessionState(SessionState::ACTIVE); |
| 497 SessionControllerClient::FlushForTesting(); |
| 498 |
| 499 // Simulate the notification that the profile is ready. |
| 500 TestingProfile* const user_profile = CreateTestingProfile(user); |
| 501 client.OnLoginUserProfilePrepared(user_profile); |
| 502 |
| 503 // Manipulate user prefs and verify SessionController is updated. |
| 504 PrefService* const user_prefs = user_profile->GetPrefs(); |
| 505 |
| 506 user_prefs->SetBoolean(prefs::kAllowScreenLock, true); |
| 507 SessionControllerClient::FlushForTesting(); |
| 508 EXPECT_TRUE(session_controller.last_session_info()->can_lock_screen); |
| 509 user_prefs->SetBoolean(prefs::kAllowScreenLock, false); |
| 510 SessionControllerClient::FlushForTesting(); |
| 511 EXPECT_FALSE(session_controller.last_session_info()->can_lock_screen); |
| 512 |
| 513 user_prefs->SetBoolean(prefs::kEnableAutoScreenLock, true); |
| 514 SessionControllerClient::FlushForTesting(); |
| 515 EXPECT_TRUE( |
| 516 session_controller.last_session_info()->should_lock_screen_automatically); |
| 517 user_prefs->SetBoolean(prefs::kEnableAutoScreenLock, false); |
| 518 SessionControllerClient::FlushForTesting(); |
| 519 EXPECT_FALSE( |
| 520 session_controller.last_session_info()->should_lock_screen_automatically); |
| 521 } |
OLD | NEW |