Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: chrome/browser/ui/ash/session_controller_client_unittest.cc

Issue 2873453003: cros: Update ash when prefs related to lock are changed (Closed)
Patch Set: fix nits Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/ash/session_controller_client.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/ash/session_controller_client.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698