| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| 11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
| 12 #include "base/location.h" | 12 #include "base/location.h" |
| 13 #include "base/memory/ref_counted.h" | |
| 14 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
| 15 #include "chrome/browser/chromeos/cros/cros_mock.h" | 14 #include "chrome/browser/chromeos/cros/cros_mock.h" |
| 16 #include "chrome/browser/chromeos/cros/mock_network_library.h" | 15 #include "chrome/browser/chromeos/cros/mock_network_library.h" |
| 17 #include "chrome/browser/chromeos/login/authenticator.h" | 16 #include "chrome/browser/chromeos/login/authenticator.h" |
| 18 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 17 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 19 #include "chrome/browser/chromeos/login/helper.h" | 18 #include "chrome/browser/chromeos/login/helper.h" |
| 20 #include "chrome/browser/chromeos/login/login_status_consumer.h" | |
| 21 #include "chrome/browser/chromeos/login/mock_authenticator.h" | 19 #include "chrome/browser/chromeos/login/mock_authenticator.h" |
| 22 #include "chrome/browser/chromeos/login/mock_login_display.h" | 20 #include "chrome/browser/chromeos/login/mock_login_display.h" |
| 23 #include "chrome/browser/chromeos/login/mock_login_display_host.h" | 21 #include "chrome/browser/chromeos/login/mock_login_display_host.h" |
| 24 #include "chrome/browser/chromeos/login/mock_login_utils.h" | 22 #include "chrome/browser/chromeos/login/mock_login_utils.h" |
| 25 #include "chrome/browser/chromeos/login/mock_url_fetchers.h" | 23 #include "chrome/browser/chromeos/login/mock_url_fetchers.h" |
| 26 #include "chrome/browser/chromeos/login/mock_user_manager.h" | 24 #include "chrome/browser/chromeos/login/mock_user_manager.h" |
| 27 #include "chrome/browser/chromeos/login/user_manager.h" | 25 #include "chrome/browser/chromeos/login/user_manager.h" |
| 28 #include "chrome/browser/chromeos/login/wizard_controller.h" | 26 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 27 #include "chrome/browser/chromeos/policy/device_local_account.h" |
| 29 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" | 28 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" |
| 30 #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" | 29 #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" |
| 31 #include "chrome/browser/chromeos/settings/cros_settings.h" | 30 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 32 #include "chrome/browser/chromeos/settings/cros_settings_names.h" | 31 #include "chrome/browser/chromeos/settings/cros_settings_names.h" |
| 33 #include "chrome/browser/policy/browser_policy_connector.h" | 32 #include "chrome/browser/policy/browser_policy_connector.h" |
| 34 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" | 33 #include "chrome/browser/policy/cloud/cloud_policy_constants.h" |
| 35 #include "chrome/browser/policy/cloud/cloud_policy_core.h" | 34 #include "chrome/browser/policy/cloud/cloud_policy_core.h" |
| 36 #include "chrome/browser/policy/cloud/cloud_policy_store.h" | 35 #include "chrome/browser/policy/cloud/cloud_policy_store.h" |
| 37 #include "chrome/browser/policy/cloud/mock_cloud_policy_store.h" | 36 #include "chrome/browser/policy/cloud/mock_cloud_policy_store.h" |
| 38 #include "chrome/browser/policy/cloud/policy_builder.h" | 37 #include "chrome/browser/policy/cloud/policy_builder.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 66 namespace em = enterprise_management; | 65 namespace em = enterprise_management; |
| 67 | 66 |
| 68 namespace chromeos { | 67 namespace chromeos { |
| 69 | 68 |
| 70 namespace { | 69 namespace { |
| 71 | 70 |
| 72 const char kUsername[] = "test_user@gmail.com"; | 71 const char kUsername[] = "test_user@gmail.com"; |
| 73 const char kNewUsername[] = "test_new_user@gmail.com"; | 72 const char kNewUsername[] = "test_new_user@gmail.com"; |
| 74 const char kPassword[] = "test_password"; | 73 const char kPassword[] = "test_password"; |
| 75 | 74 |
| 76 const char kAutoLoginUsername[] = "public_session_user@localhost"; | 75 const char kPublicSessionAccountId[] = "public_session_user@localhost"; |
| 77 const int kAutoLoginNoDelay = 0; | 76 const int kAutoLoginNoDelay = 0; |
| 78 const int kAutoLoginShortDelay = 1; | 77 const int kAutoLoginShortDelay = 1; |
| 79 const int kAutoLoginLongDelay = 10000; | 78 const int kAutoLoginLongDelay = 10000; |
| 80 | 79 |
| 81 scoped_refptr<Authenticator> CreateAuthenticator( | |
| 82 LoginStatusConsumer* consumer) { | |
| 83 return new MockAuthenticator(consumer, kUsername, kPassword); | |
| 84 } | |
| 85 | 80 |
| 86 scoped_refptr<Authenticator> CreateAuthenticatorNewUser( | 81 ACTION_P2(CreateAuthenticator, username, password) { |
| 87 LoginStatusConsumer* consumer) { | 82 return new MockAuthenticator(arg0, username, password); |
| 88 return new MockAuthenticator(consumer, kNewUsername, kPassword); | |
| 89 } | |
| 90 | |
| 91 scoped_refptr<Authenticator> CreateAuthenticatorForPublicSession( | |
| 92 LoginStatusConsumer* consumer) { | |
| 93 return new MockAuthenticator(consumer, kAutoLoginUsername, ""); | |
| 94 } | 83 } |
| 95 | 84 |
| 96 // Observes a specific notification type and quits the message loop once a | 85 // Observes a specific notification type and quits the message loop once a |
| 97 // condition holds. | 86 // condition holds. |
| 98 class NotificationWatcher : public content::NotificationObserver { | 87 class NotificationWatcher : public content::NotificationObserver { |
| 99 public: | 88 public: |
| 100 // Callback invoked on notifications. Should return true when the condition | 89 // Callback invoked on notifications. Should return true when the condition |
| 101 // that the caller is waiting for is satisfied. | 90 // that the caller is waiting for is satisfied. |
| 102 typedef base::Callback<bool(void)> ConditionTestCallback; | 91 typedef base::Callback<bool(void)> ConditionTestCallback; |
| 103 | 92 |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerTest); | 288 DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerTest); |
| 300 }; | 289 }; |
| 301 | 290 |
| 302 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, ExistingUserLogin) { | 291 IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, ExistingUserLogin) { |
| 303 // This is disabled twice: once right after signin but before checking for | 292 // This is disabled twice: once right after signin but before checking for |
| 304 // auto-enrollment, and again after doing an ownership status check. | 293 // auto-enrollment, and again after doing an ownership status check. |
| 305 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) | 294 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
| 306 .Times(2); | 295 .Times(2); |
| 307 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 296 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
| 308 .Times(1) | 297 .Times(1) |
| 309 .WillOnce(WithArg<0>(Invoke(CreateAuthenticator))); | 298 .WillOnce(WithArg<0>(CreateAuthenticator(kUsername, kPassword))); |
| 310 EXPECT_CALL(*mock_login_utils_, | 299 EXPECT_CALL(*mock_login_utils_, |
| 311 PrepareProfile(UserContext(kUsername, kPassword, "", kUsername), | 300 PrepareProfile(UserContext(kUsername, kPassword, "", kUsername), |
| 312 _, _, _, _)) | 301 _, _, _, _)) |
| 313 .Times(1) | 302 .Times(1) |
| 314 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, | 303 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, |
| 315 &base::Callback<void(void)>::Run)); | 304 &base::Callback<void(void)>::Run)); |
| 316 EXPECT_CALL(*mock_login_utils_, | 305 EXPECT_CALL(*mock_login_utils_, |
| 317 DoBrowserLaunch(testing_profile_.get(), | 306 DoBrowserLaunch(testing_profile_.get(), |
| 318 mock_login_display_host_.get())) | 307 mock_login_display_host_.get())) |
| 319 .Times(1); | 308 .Times(1); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 EXPECT_CALL(*mock_login_display_host_, | 354 EXPECT_CALL(*mock_login_display_host_, |
| 366 StartWizardPtr(WizardController::kEnrollmentScreenName, | 355 StartWizardPtr(WizardController::kEnrollmentScreenName, |
| 367 _)) | 356 _)) |
| 368 .Times(0); | 357 .Times(0); |
| 369 EXPECT_CALL(*mock_login_display_host_, | 358 EXPECT_CALL(*mock_login_display_host_, |
| 370 StartWizardPtr(WizardController::kTermsOfServiceScreenName, | 359 StartWizardPtr(WizardController::kTermsOfServiceScreenName, |
| 371 NULL)) | 360 NULL)) |
| 372 .Times(1); | 361 .Times(1); |
| 373 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 362 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
| 374 .Times(1) | 363 .Times(1) |
| 375 .WillOnce(WithArg<0>(Invoke(CreateAuthenticatorNewUser))); | 364 .WillOnce(WithArg<0>(CreateAuthenticator(kNewUsername, kPassword))); |
| 376 EXPECT_CALL(*mock_login_utils_, | 365 EXPECT_CALL(*mock_login_utils_, |
| 377 PrepareProfile(UserContext(kNewUsername, | 366 PrepareProfile(UserContext(kNewUsername, |
| 378 kPassword, | 367 kPassword, |
| 379 std::string(), | 368 std::string(), |
| 380 kNewUsername), | 369 kNewUsername), |
| 381 _, _, _, _)) | 370 _, _, _, _)) |
| 382 .Times(1) | 371 .Times(1) |
| 383 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, | 372 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, |
| 384 &base::Callback<void(void)>::Run)); | 373 &base::Callback<void(void)>::Run)); |
| 385 EXPECT_CALL(*mock_login_display_, OnLoginSuccess(kNewUsername)) | 374 EXPECT_CALL(*mock_login_display_, OnLoginSuccess(kNewUsername)) |
| (...skipping 23 matching lines...) Expand all Loading... |
| 409 content::RunAllPendingInMessageLoop(); | 398 content::RunAllPendingInMessageLoop(); |
| 410 } | 399 } |
| 411 | 400 |
| 412 MATCHER_P(HasDetails, expected, "") { | 401 MATCHER_P(HasDetails, expected, "") { |
| 413 return expected == *content::Details<const std::string>(arg).ptr(); | 402 return expected == *content::Details<const std::string>(arg).ptr(); |
| 414 } | 403 } |
| 415 | 404 |
| 416 class ExistingUserControllerPublicSessionTest | 405 class ExistingUserControllerPublicSessionTest |
| 417 : public ExistingUserControllerTest { | 406 : public ExistingUserControllerTest { |
| 418 protected: | 407 protected: |
| 419 ExistingUserControllerPublicSessionTest() { | 408 ExistingUserControllerPublicSessionTest() |
| 409 : public_session_user_id_(policy::GenerateDeviceLocalAccountUserId( |
| 410 kPublicSessionAccountId, |
| 411 policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION)) { |
| 420 } | 412 } |
| 421 | 413 |
| 422 virtual void SetUpOnMainThread() OVERRIDE { | 414 virtual void SetUpOnMainThread() OVERRIDE { |
| 423 ExistingUserControllerTest::SetUpOnMainThread(); | 415 ExistingUserControllerTest::SetUpOnMainThread(); |
| 424 | 416 |
| 425 // Wait for the public session user to be created. | 417 // Wait for the public session user to be created. |
| 426 if (!chromeos::UserManager::Get()->IsKnownUser(kAutoLoginUsername)) { | 418 if (!chromeos::UserManager::Get()->IsKnownUser(public_session_user_id_)) { |
| 427 NotificationWatcher( | 419 NotificationWatcher( |
| 428 chrome::NOTIFICATION_USER_LIST_CHANGED, | 420 chrome::NOTIFICATION_USER_LIST_CHANGED, |
| 429 base::Bind(&chromeos::UserManager::IsKnownUser, | 421 base::Bind(&chromeos::UserManager::IsKnownUser, |
| 430 base::Unretained(chromeos::UserManager::Get()), | 422 base::Unretained(chromeos::UserManager::Get()), |
| 431 kAutoLoginUsername)).Run(); | 423 public_session_user_id_)).Run(); |
| 432 } | 424 } |
| 433 | 425 |
| 434 // Wait for the device local account policy to be installed. | 426 // Wait for the device local account policy to be installed. |
| 435 policy::CloudPolicyStore* store = TestingBrowserProcess::GetGlobal()-> | 427 policy::CloudPolicyStore* store = TestingBrowserProcess::GetGlobal()-> |
| 436 browser_policy_connector()->GetDeviceLocalAccountPolicyService()-> | 428 browser_policy_connector()->GetDeviceLocalAccountPolicyService()-> |
| 437 GetBrokerForAccount(kAutoLoginUsername)->core()->store(); | 429 GetBrokerForUser(public_session_user_id_)->core()->store(); |
| 438 if (!store->has_policy()) { | 430 if (!store->has_policy()) { |
| 439 policy::MockCloudPolicyStoreObserver observer; | 431 policy::MockCloudPolicyStoreObserver observer; |
| 440 | 432 |
| 441 base::RunLoop loop; | 433 base::RunLoop loop; |
| 442 store->AddObserver(&observer); | 434 store->AddObserver(&observer); |
| 443 EXPECT_CALL(observer, OnStoreLoaded(store)) | 435 EXPECT_CALL(observer, OnStoreLoaded(store)) |
| 444 .Times(1) | 436 .Times(1) |
| 445 .WillOnce(InvokeWithoutArgs(&loop, &base::RunLoop::Quit)); | 437 .WillOnce(InvokeWithoutArgs(&loop, &base::RunLoop::Quit)); |
| 446 loop.Run(); | 438 loop.Run(); |
| 447 store->RemoveObserver(&observer); | 439 store->RemoveObserver(&observer); |
| 448 } | 440 } |
| 449 } | 441 } |
| 450 | 442 |
| 451 virtual void SetUpSessionManager() OVERRIDE { | 443 virtual void SetUpSessionManager() OVERRIDE { |
| 452 InstallOwnerKey(); | 444 InstallOwnerKey(); |
| 453 | 445 |
| 454 // Setup the device policy. | 446 // Setup the device policy. |
| 455 em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); | 447 em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); |
| 456 em::DeviceLocalAccountInfoProto* account = | 448 em::DeviceLocalAccountInfoProto* account = |
| 457 proto.mutable_device_local_accounts()->add_account(); | 449 proto.mutable_device_local_accounts()->add_account(); |
| 458 account->set_account_id(kAutoLoginUsername); | 450 account->set_account_id(kPublicSessionAccountId); |
| 459 account->set_type( | 451 account->set_type( |
| 460 em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_PUBLIC_SESSION); | 452 em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_PUBLIC_SESSION); |
| 461 RefreshDevicePolicy(); | 453 RefreshDevicePolicy(); |
| 462 | 454 |
| 463 // Setup the device local account policy. | 455 // Setup the device local account policy. |
| 464 policy::UserPolicyBuilder device_local_account_policy; | 456 policy::UserPolicyBuilder device_local_account_policy; |
| 465 device_local_account_policy.policy_data().set_username(kAutoLoginUsername); | 457 device_local_account_policy.policy_data().set_username( |
| 458 kPublicSessionAccountId); |
| 466 device_local_account_policy.policy_data().set_policy_type( | 459 device_local_account_policy.policy_data().set_policy_type( |
| 467 policy::dm_protocol::kChromePublicAccountPolicyType); | 460 policy::dm_protocol::kChromePublicAccountPolicyType); |
| 468 device_local_account_policy.policy_data().set_settings_entity_id( | 461 device_local_account_policy.policy_data().set_settings_entity_id( |
| 469 kAutoLoginUsername); | 462 kPublicSessionAccountId); |
| 470 device_local_account_policy.Build(); | 463 device_local_account_policy.Build(); |
| 471 session_manager_client()->set_device_local_account_policy( | 464 session_manager_client()->set_device_local_account_policy( |
| 472 kAutoLoginUsername, | 465 kPublicSessionAccountId, |
| 473 device_local_account_policy.GetBlob()); | 466 device_local_account_policy.GetBlob()); |
| 474 } | 467 } |
| 475 | 468 |
| 476 virtual void SetUpLoginDisplay() OVERRIDE { | 469 virtual void SetUpLoginDisplay() OVERRIDE { |
| 477 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) | 470 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) |
| 478 .Times(1) | 471 .Times(1) |
| 479 .WillOnce(Return(mock_login_display_)); | 472 .WillOnce(Return(mock_login_display_)); |
| 480 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) | 473 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) |
| 481 .Times(AnyNumber()) | 474 .Times(AnyNumber()) |
| 482 .WillRepeatedly(ReturnNull()); | 475 .WillRepeatedly(ReturnNull()); |
| 483 EXPECT_CALL(*mock_login_display_host_.get(), OnPreferencesChanged()) | 476 EXPECT_CALL(*mock_login_display_host_.get(), OnPreferencesChanged()) |
| 484 .Times(AnyNumber()); | 477 .Times(AnyNumber()); |
| 485 EXPECT_CALL(*mock_login_display_, Init(_, _, _, _)) | 478 EXPECT_CALL(*mock_login_display_, Init(_, _, _, _)) |
| 486 .Times(AnyNumber()); | 479 .Times(AnyNumber()); |
| 487 } | 480 } |
| 488 | 481 |
| 489 virtual void SetUpUserManager() OVERRIDE { | 482 virtual void SetUpUserManager() OVERRIDE { |
| 490 } | 483 } |
| 491 | 484 |
| 492 void ExpectSuccessfulLogin(const std::string& username, | 485 void ExpectSuccessfulLogin(const std::string& username, |
| 493 const std::string& password, | 486 const std::string& password) { |
| 494 scoped_refptr<Authenticator> create_authenticator( | |
| 495 LoginStatusConsumer* consumer)) { | |
| 496 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) | 487 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
| 497 .Times(AnyNumber()); | 488 .Times(AnyNumber()); |
| 498 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 489 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
| 499 .Times(1) | 490 .Times(1) |
| 500 .WillOnce(WithArg<0>(Invoke(create_authenticator))); | 491 .WillOnce(WithArg<0>(CreateAuthenticator(username, password))); |
| 501 EXPECT_CALL(*mock_login_utils_, | 492 EXPECT_CALL(*mock_login_utils_, |
| 502 PrepareProfile(UserContext(username, password, "", username), | 493 PrepareProfile(UserContext(username, password, "", username), |
| 503 _, _, _, _)) | 494 _, _, _, _)) |
| 504 .Times(1) | 495 .Times(1) |
| 505 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, | 496 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, |
| 506 &base::Callback<void(void)>::Run)); | 497 &base::Callback<void(void)>::Run)); |
| 507 EXPECT_CALL(*mock_login_utils_, | 498 EXPECT_CALL(*mock_login_utils_, |
| 508 DoBrowserLaunch(testing_profile_.get(), | 499 DoBrowserLaunch(testing_profile_.get(), |
| 509 mock_login_display_host_.get())) | 500 mock_login_display_host_.get())) |
| 510 .Times(1); | 501 .Times(1); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 } | 568 } |
| 578 | 569 |
| 579 void ConfigureAutoLogin() { | 570 void ConfigureAutoLogin() { |
| 580 existing_user_controller()->ConfigurePublicSessionAutoLogin(); | 571 existing_user_controller()->ConfigurePublicSessionAutoLogin(); |
| 581 } | 572 } |
| 582 | 573 |
| 583 void FireAutoLogin() { | 574 void FireAutoLogin() { |
| 584 existing_user_controller()->OnPublicSessionAutoLoginTimerFire(); | 575 existing_user_controller()->OnPublicSessionAutoLoginTimerFire(); |
| 585 } | 576 } |
| 586 | 577 |
| 578 const std::string public_session_user_id_; |
| 579 |
| 587 private: | 580 private: |
| 588 DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerPublicSessionTest); | 581 DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerPublicSessionTest); |
| 589 }; | 582 }; |
| 590 | 583 |
| 591 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 584 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 592 ConfigureAutoLoginUsingPolicy) { | 585 ConfigureAutoLoginUsingPolicy) { |
| 593 existing_user_controller()->OnSigninScreenReady(); | 586 existing_user_controller()->OnSigninScreenReady(); |
| 594 EXPECT_EQ("", auto_login_username()); | 587 EXPECT_EQ("", auto_login_username()); |
| 595 EXPECT_EQ(0, auto_login_delay()); | 588 EXPECT_EQ(0, auto_login_delay()); |
| 596 EXPECT_FALSE(auto_login_timer()); | 589 EXPECT_FALSE(auto_login_timer()); |
| 597 | 590 |
| 598 // Set the policy. | 591 // Set the policy. |
| 599 SetAutoLoginPolicy(kAutoLoginUsername, kAutoLoginLongDelay); | 592 SetAutoLoginPolicy(kPublicSessionAccountId, kAutoLoginLongDelay); |
| 600 EXPECT_EQ(kAutoLoginUsername, auto_login_username()); | 593 EXPECT_EQ(public_session_user_id_, auto_login_username()); |
| 601 EXPECT_EQ(kAutoLoginLongDelay, auto_login_delay()); | 594 EXPECT_EQ(kAutoLoginLongDelay, auto_login_delay()); |
| 602 ASSERT_TRUE(auto_login_timer()); | 595 ASSERT_TRUE(auto_login_timer()); |
| 603 EXPECT_TRUE(auto_login_timer()->IsRunning()); | 596 EXPECT_TRUE(auto_login_timer()->IsRunning()); |
| 604 | 597 |
| 605 // Unset the policy. | 598 // Unset the policy. |
| 606 SetAutoLoginPolicy("", 0); | 599 SetAutoLoginPolicy("", 0); |
| 607 EXPECT_EQ("", auto_login_username()); | 600 EXPECT_EQ("", auto_login_username()); |
| 608 EXPECT_EQ(0, auto_login_delay()); | 601 EXPECT_EQ(0, auto_login_delay()); |
| 609 ASSERT_TRUE(auto_login_timer()); | 602 ASSERT_TRUE(auto_login_timer()); |
| 610 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 603 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 611 } | 604 } |
| 612 | 605 |
| 613 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 606 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 614 AutoLoginNoDelay) { | 607 AutoLoginNoDelay) { |
| 615 // Set up mocks to check login success. | 608 // Set up mocks to check login success. |
| 616 ExpectSuccessfulLogin(kAutoLoginUsername, "", | 609 ExpectSuccessfulLogin(public_session_user_id_, ""); |
| 617 CreateAuthenticatorForPublicSession); | |
| 618 existing_user_controller()->OnSigninScreenReady(); | 610 existing_user_controller()->OnSigninScreenReady(); |
| 619 | 611 |
| 620 // Start auto-login and wait for login tasks to complete. | 612 // Start auto-login and wait for login tasks to complete. |
| 621 SetAutoLoginPolicy(kAutoLoginUsername, kAutoLoginNoDelay); | 613 SetAutoLoginPolicy(kPublicSessionAccountId, kAutoLoginNoDelay); |
| 622 content::RunAllPendingInMessageLoop(); | 614 content::RunAllPendingInMessageLoop(); |
| 623 } | 615 } |
| 624 | 616 |
| 625 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 617 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 626 AutoLoginShortDelay) { | 618 AutoLoginShortDelay) { |
| 627 // Set up mocks to check login success. | 619 // Set up mocks to check login success. |
| 628 ExpectSuccessfulLogin(kAutoLoginUsername, "", | 620 ExpectSuccessfulLogin(public_session_user_id_, ""); |
| 629 CreateAuthenticatorForPublicSession); | |
| 630 existing_user_controller()->OnSigninScreenReady(); | 621 existing_user_controller()->OnSigninScreenReady(); |
| 631 SetAutoLoginPolicy(kAutoLoginUsername, kAutoLoginShortDelay); | 622 SetAutoLoginPolicy(kPublicSessionAccountId, kAutoLoginShortDelay); |
| 632 ASSERT_TRUE(auto_login_timer()); | 623 ASSERT_TRUE(auto_login_timer()); |
| 633 // Don't assert that timer is running: with the short delay sometimes | 624 // Don't assert that timer is running: with the short delay sometimes |
| 634 // the trigger happens before the assert. We've already tested that | 625 // the trigger happens before the assert. We've already tested that |
| 635 // the timer starts when it should. | 626 // the timer starts when it should. |
| 636 | 627 |
| 637 // Wait for the timer to fire. | 628 // Wait for the timer to fire. |
| 638 base::RunLoop runner; | 629 base::RunLoop runner; |
| 639 base::OneShotTimer<base::RunLoop> timer; | 630 base::OneShotTimer<base::RunLoop> timer; |
| 640 timer.Start(FROM_HERE, | 631 timer.Start(FROM_HERE, |
| 641 base::TimeDelta::FromMilliseconds(kAutoLoginShortDelay + 1), | 632 base::TimeDelta::FromMilliseconds(kAutoLoginShortDelay + 1), |
| 642 runner.QuitClosure()); | 633 runner.QuitClosure()); |
| 643 runner.Run(); | 634 runner.Run(); |
| 644 | 635 |
| 645 // Wait for login tasks to complete. | 636 // Wait for login tasks to complete. |
| 646 content::RunAllPendingInMessageLoop(); | 637 content::RunAllPendingInMessageLoop(); |
| 647 } | 638 } |
| 648 | 639 |
| 649 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 640 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 650 LoginStopsAutoLogin) { | 641 LoginStopsAutoLogin) { |
| 651 // Set up mocks to check login success. | 642 // Set up mocks to check login success. |
| 652 ExpectSuccessfulLogin(kUsername, kPassword, CreateAuthenticator); | 643 ExpectSuccessfulLogin(kUsername, kPassword); |
| 653 | 644 |
| 654 existing_user_controller()->OnSigninScreenReady(); | 645 existing_user_controller()->OnSigninScreenReady(); |
| 655 SetAutoLoginPolicy(kAutoLoginUsername, kAutoLoginLongDelay); | 646 SetAutoLoginPolicy(kPublicSessionAccountId, kAutoLoginLongDelay); |
| 656 ASSERT_TRUE(auto_login_timer()); | 647 ASSERT_TRUE(auto_login_timer()); |
| 657 | 648 |
| 658 // Login and check that it stopped the timer. | 649 // Login and check that it stopped the timer. |
| 659 existing_user_controller()->Login(UserContext(kUsername, kPassword, "")); | 650 existing_user_controller()->Login(UserContext(kUsername, kPassword, "")); |
| 660 EXPECT_TRUE(is_login_in_progress()); | 651 EXPECT_TRUE(is_login_in_progress()); |
| 661 ASSERT_TRUE(auto_login_timer()); | 652 ASSERT_TRUE(auto_login_timer()); |
| 662 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 653 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 663 | 654 |
| 664 // Wait for login tasks to complete. | 655 // Wait for login tasks to complete. |
| 665 content::RunAllPendingInMessageLoop(); | 656 content::RunAllPendingInMessageLoop(); |
| 666 | 657 |
| 667 // Timer should still be stopped after login completes. | 658 // Timer should still be stopped after login completes. |
| 668 ASSERT_TRUE(auto_login_timer()); | 659 ASSERT_TRUE(auto_login_timer()); |
| 669 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 660 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 670 } | 661 } |
| 671 | 662 |
| 672 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 663 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 673 GuestModeLoginStopsAutoLogin) { | 664 GuestModeLoginStopsAutoLogin) { |
| 674 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) | 665 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
| 675 .Times(1); | 666 .Times(1); |
| 676 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 667 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
| 677 .Times(1) | 668 .Times(1) |
| 678 .WillOnce(WithArg<0>(Invoke(CreateAuthenticator))); | 669 .WillOnce(WithArg<0>(CreateAuthenticator(kUsername, kPassword))); |
| 679 EXPECT_CALL(*mock_login_utils_, CompleteOffTheRecordLogin(_)) | 670 EXPECT_CALL(*mock_login_utils_, CompleteOffTheRecordLogin(_)) |
| 680 .Times(1); | 671 .Times(1); |
| 681 | 672 |
| 682 existing_user_controller()->OnSigninScreenReady(); | 673 existing_user_controller()->OnSigninScreenReady(); |
| 683 SetAutoLoginPolicy(kAutoLoginUsername, kAutoLoginLongDelay); | 674 SetAutoLoginPolicy(kPublicSessionAccountId, kAutoLoginLongDelay); |
| 684 ASSERT_TRUE(auto_login_timer()); | 675 ASSERT_TRUE(auto_login_timer()); |
| 685 | 676 |
| 686 // Login and check that it stopped the timer. | 677 // Login and check that it stopped the timer. |
| 687 existing_user_controller()->LoginAsGuest(); | 678 existing_user_controller()->LoginAsGuest(); |
| 688 EXPECT_TRUE(is_login_in_progress()); | 679 EXPECT_TRUE(is_login_in_progress()); |
| 689 ASSERT_TRUE(auto_login_timer()); | 680 ASSERT_TRUE(auto_login_timer()); |
| 690 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 681 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 691 | 682 |
| 692 // Wait for login tasks to complete. | 683 // Wait for login tasks to complete. |
| 693 content::RunAllPendingInMessageLoop(); | 684 content::RunAllPendingInMessageLoop(); |
| 694 | 685 |
| 695 // Timer should still be stopped after login completes. | 686 // Timer should still be stopped after login completes. |
| 696 ASSERT_TRUE(auto_login_timer()); | 687 ASSERT_TRUE(auto_login_timer()); |
| 697 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 688 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 698 } | 689 } |
| 699 | 690 |
| 700 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 691 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 701 CompleteLoginStopsAutoLogin) { | 692 CompleteLoginStopsAutoLogin) { |
| 702 // Set up mocks to check login success. | 693 // Set up mocks to check login success. |
| 703 ExpectSuccessfulLogin(kUsername, kPassword, CreateAuthenticator); | 694 ExpectSuccessfulLogin(kUsername, kPassword); |
| 704 EXPECT_CALL(*mock_login_display_host_, OnCompleteLogin()) | 695 EXPECT_CALL(*mock_login_display_host_, OnCompleteLogin()) |
| 705 .Times(1); | 696 .Times(1); |
| 706 | 697 |
| 707 existing_user_controller()->OnSigninScreenReady(); | 698 existing_user_controller()->OnSigninScreenReady(); |
| 708 SetAutoLoginPolicy(kAutoLoginUsername, kAutoLoginLongDelay); | 699 SetAutoLoginPolicy(kPublicSessionAccountId, kAutoLoginLongDelay); |
| 709 ASSERT_TRUE(auto_login_timer()); | 700 ASSERT_TRUE(auto_login_timer()); |
| 710 | 701 |
| 711 // Check that login completes and stops the timer. | 702 // Check that login completes and stops the timer. |
| 712 existing_user_controller()->CompleteLogin( | 703 existing_user_controller()->CompleteLogin( |
| 713 UserContext(kUsername, kPassword, "")); | 704 UserContext(kUsername, kPassword, "")); |
| 714 ASSERT_TRUE(auto_login_timer()); | 705 ASSERT_TRUE(auto_login_timer()); |
| 715 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 706 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 716 | 707 |
| 717 // Wait for login tasks to complete. | 708 // Wait for login tasks to complete. |
| 718 content::RunAllPendingInMessageLoop(); | 709 content::RunAllPendingInMessageLoop(); |
| 719 | 710 |
| 720 // Timer should still be stopped after login completes. | 711 // Timer should still be stopped after login completes. |
| 721 ASSERT_TRUE(auto_login_timer()); | 712 ASSERT_TRUE(auto_login_timer()); |
| 722 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 713 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 723 } | 714 } |
| 724 | 715 |
| 725 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 716 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 726 PublicSessionLoginStopsAutoLogin) { | 717 PublicSessionLoginStopsAutoLogin) { |
| 727 // Set up mocks to check login success. | 718 // Set up mocks to check login success. |
| 728 ExpectSuccessfulLogin(kAutoLoginUsername, "", | 719 ExpectSuccessfulLogin(public_session_user_id_, ""); |
| 729 CreateAuthenticatorForPublicSession); | |
| 730 existing_user_controller()->OnSigninScreenReady(); | 720 existing_user_controller()->OnSigninScreenReady(); |
| 731 SetAutoLoginPolicy(kAutoLoginUsername, kAutoLoginLongDelay); | 721 SetAutoLoginPolicy(kPublicSessionAccountId, kAutoLoginLongDelay); |
| 732 ASSERT_TRUE(auto_login_timer()); | 722 ASSERT_TRUE(auto_login_timer()); |
| 733 | 723 |
| 734 // Login and check that it stopped the timer. | 724 // Login and check that it stopped the timer. |
| 735 existing_user_controller()->LoginAsPublicAccount(kAutoLoginUsername); | 725 existing_user_controller()->LoginAsPublicAccount(public_session_user_id_); |
| 736 EXPECT_TRUE(is_login_in_progress()); | 726 EXPECT_TRUE(is_login_in_progress()); |
| 737 ASSERT_TRUE(auto_login_timer()); | 727 ASSERT_TRUE(auto_login_timer()); |
| 738 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 728 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 739 | 729 |
| 740 // Wait for login tasks to complete. | 730 // Wait for login tasks to complete. |
| 741 content::RunAllPendingInMessageLoop(); | 731 content::RunAllPendingInMessageLoop(); |
| 742 | 732 |
| 743 // Timer should still be stopped after login completes. | 733 // Timer should still be stopped after login completes. |
| 744 ASSERT_TRUE(auto_login_timer()); | 734 ASSERT_TRUE(auto_login_timer()); |
| 745 EXPECT_FALSE(auto_login_timer()->IsRunning()); | 735 EXPECT_FALSE(auto_login_timer()->IsRunning()); |
| 746 } | 736 } |
| 747 | 737 |
| 748 } // namespace chromeos | 738 } // namespace chromeos |
| OLD | NEW |