| 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 <string> | 5 #include <string> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 : mock_login_display_(NULL), mock_user_manager_(NULL) {} | 120 : mock_login_display_(NULL), mock_user_manager_(NULL) {} |
| 121 | 121 |
| 122 ExistingUserController* existing_user_controller() { | 122 ExistingUserController* existing_user_controller() { |
| 123 return ExistingUserController::current_controller(); | 123 return ExistingUserController::current_controller(); |
| 124 } | 124 } |
| 125 | 125 |
| 126 const ExistingUserController* existing_user_controller() const { | 126 const ExistingUserController* existing_user_controller() const { |
| 127 return ExistingUserController::current_controller(); | 127 return ExistingUserController::current_controller(); |
| 128 } | 128 } |
| 129 | 129 |
| 130 virtual void SetUpInProcessBrowserTestFixture() override { | 130 void SetUpInProcessBrowserTestFixture() override { |
| 131 SetUpSessionManager(); | 131 SetUpSessionManager(); |
| 132 | 132 |
| 133 DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture(); | 133 DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture(); |
| 134 | 134 |
| 135 mock_login_utils_ = new MockLoginUtils(); | 135 mock_login_utils_ = new MockLoginUtils(); |
| 136 LoginUtils::Set(mock_login_utils_); | 136 LoginUtils::Set(mock_login_utils_); |
| 137 EXPECT_CALL(*mock_login_utils_, DelegateDeleted(_)) | 137 EXPECT_CALL(*mock_login_utils_, DelegateDeleted(_)) |
| 138 .Times(1); | 138 .Times(1); |
| 139 | 139 |
| 140 mock_login_display_host_.reset(new MockLoginDisplayHost()); | 140 mock_login_display_host_.reset(new MockLoginDisplayHost()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 151 .WillOnce(Return(mock_login_display_)); | 151 .WillOnce(Return(mock_login_display_)); |
| 152 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) | 152 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) |
| 153 .Times(1) | 153 .Times(1) |
| 154 .WillOnce(ReturnNull()); | 154 .WillOnce(ReturnNull()); |
| 155 EXPECT_CALL(*mock_login_display_host_.get(), OnPreferencesChanged()) | 155 EXPECT_CALL(*mock_login_display_host_.get(), OnPreferencesChanged()) |
| 156 .Times(1); | 156 .Times(1); |
| 157 EXPECT_CALL(*mock_login_display_, Init(_, false, true, true)) | 157 EXPECT_CALL(*mock_login_display_, Init(_, false, true, true)) |
| 158 .Times(1); | 158 .Times(1); |
| 159 } | 159 } |
| 160 | 160 |
| 161 virtual void SetUpCommandLine(base::CommandLine* command_line) override { | 161 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 162 command_line->AppendSwitch(switches::kLoginManager); | 162 command_line->AppendSwitch(switches::kLoginManager); |
| 163 } | 163 } |
| 164 | 164 |
| 165 virtual void SetUpUserManager() { | 165 virtual void SetUpUserManager() { |
| 166 // Replace the UserManager singleton with a mock. | 166 // Replace the UserManager singleton with a mock. |
| 167 mock_user_manager_ = new MockUserManager; | 167 mock_user_manager_ = new MockUserManager; |
| 168 user_manager_enabler_.reset( | 168 user_manager_enabler_.reset( |
| 169 new ScopedUserManagerEnabler(mock_user_manager_)); | 169 new ScopedUserManagerEnabler(mock_user_manager_)); |
| 170 EXPECT_CALL(*mock_user_manager_, IsKnownUser(kUsername)) | 170 EXPECT_CALL(*mock_user_manager_, IsKnownUser(kUsername)) |
| 171 .Times(AnyNumber()) | 171 .Times(AnyNumber()) |
| (...skipping 16 matching lines...) Expand all Loading... |
| 188 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) | 188 EXPECT_CALL(*mock_user_manager_, IsCurrentUserNew()) |
| 189 .Times(AnyNumber()) | 189 .Times(AnyNumber()) |
| 190 .WillRepeatedly(Return(false)); | 190 .WillRepeatedly(Return(false)); |
| 191 EXPECT_CALL(*mock_user_manager_, Shutdown()) | 191 EXPECT_CALL(*mock_user_manager_, Shutdown()) |
| 192 .Times(1); | 192 .Times(1); |
| 193 EXPECT_CALL(*mock_user_manager_, FindUser(_)) | 193 EXPECT_CALL(*mock_user_manager_, FindUser(_)) |
| 194 .Times(AnyNumber()) | 194 .Times(AnyNumber()) |
| 195 .WillRepeatedly(ReturnNull()); | 195 .WillRepeatedly(ReturnNull()); |
| 196 } | 196 } |
| 197 | 197 |
| 198 virtual void SetUpOnMainThread() override { | 198 void SetUpOnMainThread() override { |
| 199 testing_profile_.reset(new TestingProfile()); | 199 testing_profile_.reset(new TestingProfile()); |
| 200 SetUpUserManager(); | 200 SetUpUserManager(); |
| 201 existing_user_controller_.reset( | 201 existing_user_controller_.reset( |
| 202 new ExistingUserController(mock_login_display_host_.get())); | 202 new ExistingUserController(mock_login_display_host_.get())); |
| 203 ASSERT_EQ(existing_user_controller(), existing_user_controller_.get()); | 203 ASSERT_EQ(existing_user_controller(), existing_user_controller_.get()); |
| 204 existing_user_controller_->Init(user_manager::UserList()); | 204 existing_user_controller_->Init(user_manager::UserList()); |
| 205 profile_prepared_cb_ = | 205 profile_prepared_cb_ = |
| 206 base::Bind(&ExistingUserController::OnProfilePrepared, | 206 base::Bind(&ExistingUserController::OnProfilePrepared, |
| 207 base::Unretained(existing_user_controller()), | 207 base::Unretained(existing_user_controller()), |
| 208 testing_profile_.get(), | 208 testing_profile_.get(), |
| 209 false); | 209 false); |
| 210 } | 210 } |
| 211 | 211 |
| 212 virtual void TearDownOnMainThread() override { | 212 void TearDownOnMainThread() override { |
| 213 // ExistingUserController must be deleted before the thread is cleaned up: | 213 // ExistingUserController must be deleted before the thread is cleaned up: |
| 214 // If there is an outstanding login attempt when ExistingUserController is | 214 // If there is an outstanding login attempt when ExistingUserController is |
| 215 // deleted, its LoginPerformer instance will be deleted, which in turn | 215 // deleted, its LoginPerformer instance will be deleted, which in turn |
| 216 // deletes its OnlineAttemptHost instance. However, OnlineAttemptHost must | 216 // deletes its OnlineAttemptHost instance. However, OnlineAttemptHost must |
| 217 // be deleted on the UI thread. | 217 // be deleted on the UI thread. |
| 218 existing_user_controller_.reset(); | 218 existing_user_controller_.reset(); |
| 219 DevicePolicyCrosBrowserTest::InProcessBrowserTest::TearDownOnMainThread(); | 219 DevicePolicyCrosBrowserTest::InProcessBrowserTest::TearDownOnMainThread(); |
| 220 testing_profile_.reset(NULL); | 220 testing_profile_.reset(NULL); |
| 221 user_manager_enabler_.reset(); | 221 user_manager_enabler_.reset(); |
| 222 } | 222 } |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 | 373 |
| 374 class ExistingUserControllerPublicSessionTest | 374 class ExistingUserControllerPublicSessionTest |
| 375 : public ExistingUserControllerTest { | 375 : public ExistingUserControllerTest { |
| 376 protected: | 376 protected: |
| 377 ExistingUserControllerPublicSessionTest() | 377 ExistingUserControllerPublicSessionTest() |
| 378 : public_session_user_id_(policy::GenerateDeviceLocalAccountUserId( | 378 : public_session_user_id_(policy::GenerateDeviceLocalAccountUserId( |
| 379 kPublicSessionAccountId, | 379 kPublicSessionAccountId, |
| 380 policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION)) { | 380 policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION)) { |
| 381 } | 381 } |
| 382 | 382 |
| 383 virtual void SetUpOnMainThread() override { | 383 void SetUpOnMainThread() override { |
| 384 ExistingUserControllerTest::SetUpOnMainThread(); | 384 ExistingUserControllerTest::SetUpOnMainThread(); |
| 385 | 385 |
| 386 // Wait for the public session user to be created. | 386 // Wait for the public session user to be created. |
| 387 if (!user_manager::UserManager::Get()->IsKnownUser( | 387 if (!user_manager::UserManager::Get()->IsKnownUser( |
| 388 public_session_user_id_)) { | 388 public_session_user_id_)) { |
| 389 content::WindowedNotificationObserver( | 389 content::WindowedNotificationObserver( |
| 390 chrome::NOTIFICATION_USER_LIST_CHANGED, | 390 chrome::NOTIFICATION_USER_LIST_CHANGED, |
| 391 base::Bind(&user_manager::UserManager::IsKnownUser, | 391 base::Bind(&user_manager::UserManager::IsKnownUser, |
| 392 base::Unretained(user_manager::UserManager::Get()), | 392 base::Unretained(user_manager::UserManager::Get()), |
| 393 public_session_user_id_)).Wait(); | 393 public_session_user_id_)).Wait(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 408 base::RunLoop loop; | 408 base::RunLoop loop; |
| 409 store->AddObserver(&observer); | 409 store->AddObserver(&observer); |
| 410 EXPECT_CALL(observer, OnStoreLoaded(store)) | 410 EXPECT_CALL(observer, OnStoreLoaded(store)) |
| 411 .Times(1) | 411 .Times(1) |
| 412 .WillOnce(InvokeWithoutArgs(&loop, &base::RunLoop::Quit)); | 412 .WillOnce(InvokeWithoutArgs(&loop, &base::RunLoop::Quit)); |
| 413 loop.Run(); | 413 loop.Run(); |
| 414 store->RemoveObserver(&observer); | 414 store->RemoveObserver(&observer); |
| 415 } | 415 } |
| 416 } | 416 } |
| 417 | 417 |
| 418 virtual void SetUpSessionManager() override { | 418 void SetUpSessionManager() override { |
| 419 InstallOwnerKey(); | 419 InstallOwnerKey(); |
| 420 | 420 |
| 421 // Setup the device policy. | 421 // Setup the device policy. |
| 422 em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); | 422 em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); |
| 423 em::DeviceLocalAccountInfoProto* account = | 423 em::DeviceLocalAccountInfoProto* account = |
| 424 proto.mutable_device_local_accounts()->add_account(); | 424 proto.mutable_device_local_accounts()->add_account(); |
| 425 account->set_account_id(kPublicSessionAccountId); | 425 account->set_account_id(kPublicSessionAccountId); |
| 426 account->set_type( | 426 account->set_type( |
| 427 em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_PUBLIC_SESSION); | 427 em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_PUBLIC_SESSION); |
| 428 RefreshDevicePolicy(); | 428 RefreshDevicePolicy(); |
| 429 | 429 |
| 430 // Setup the device local account policy. | 430 // Setup the device local account policy. |
| 431 policy::UserPolicyBuilder device_local_account_policy; | 431 policy::UserPolicyBuilder device_local_account_policy; |
| 432 device_local_account_policy.policy_data().set_username( | 432 device_local_account_policy.policy_data().set_username( |
| 433 kPublicSessionAccountId); | 433 kPublicSessionAccountId); |
| 434 device_local_account_policy.policy_data().set_policy_type( | 434 device_local_account_policy.policy_data().set_policy_type( |
| 435 policy::dm_protocol::kChromePublicAccountPolicyType); | 435 policy::dm_protocol::kChromePublicAccountPolicyType); |
| 436 device_local_account_policy.policy_data().set_settings_entity_id( | 436 device_local_account_policy.policy_data().set_settings_entity_id( |
| 437 kPublicSessionAccountId); | 437 kPublicSessionAccountId); |
| 438 device_local_account_policy.Build(); | 438 device_local_account_policy.Build(); |
| 439 session_manager_client()->set_device_local_account_policy( | 439 session_manager_client()->set_device_local_account_policy( |
| 440 kPublicSessionAccountId, | 440 kPublicSessionAccountId, |
| 441 device_local_account_policy.GetBlob()); | 441 device_local_account_policy.GetBlob()); |
| 442 } | 442 } |
| 443 | 443 |
| 444 virtual void SetUpLoginDisplay() override { | 444 void SetUpLoginDisplay() override { |
| 445 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) | 445 EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_)) |
| 446 .Times(1) | 446 .Times(1) |
| 447 .WillOnce(Return(mock_login_display_)); | 447 .WillOnce(Return(mock_login_display_)); |
| 448 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) | 448 EXPECT_CALL(*mock_login_display_host_.get(), GetNativeWindow()) |
| 449 .Times(AnyNumber()) | 449 .Times(AnyNumber()) |
| 450 .WillRepeatedly(ReturnNull()); | 450 .WillRepeatedly(ReturnNull()); |
| 451 EXPECT_CALL(*mock_login_display_host_.get(), OnPreferencesChanged()) | 451 EXPECT_CALL(*mock_login_display_host_.get(), OnPreferencesChanged()) |
| 452 .Times(AnyNumber()); | 452 .Times(AnyNumber()); |
| 453 EXPECT_CALL(*mock_login_display_, Init(_, _, _, _)) | 453 EXPECT_CALL(*mock_login_display_, Init(_, _, _, _)) |
| 454 .Times(AnyNumber()); | 454 .Times(AnyNumber()); |
| 455 } | 455 } |
| 456 | 456 |
| 457 virtual void SetUpUserManager() override { | 457 void SetUpUserManager() override {} |
| 458 } | |
| 459 | 458 |
| 460 void ExpectSuccessfulLogin(const UserContext& user_context) { | 459 void ExpectSuccessfulLogin(const UserContext& user_context) { |
| 461 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) | 460 EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)) |
| 462 .Times(AnyNumber()); | 461 .Times(AnyNumber()); |
| 463 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) | 462 EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_)) |
| 464 .Times(1) | 463 .Times(1) |
| 465 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); | 464 .WillOnce(WithArg<0>(CreateAuthenticator(user_context))); |
| 466 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) | 465 EXPECT_CALL(*mock_login_utils_, PrepareProfile(user_context, _, _, _)) |
| 467 .Times(1) | 466 .Times(1) |
| 468 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, | 467 .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_, |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 // First run propagates public accounts and stores them in Local State. | 746 // First run propagates public accounts and stores them in Local State. |
| 748 } | 747 } |
| 749 | 748 |
| 750 // See http://crbug.com/393704; flaky. | 749 // See http://crbug.com/393704; flaky. |
| 751 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, | 750 IN_PROC_BROWSER_TEST_F(ExistingUserControllerPublicSessionTest, |
| 752 DISABLED_TestLoadingPublicUsersFromLocalState) { | 751 DISABLED_TestLoadingPublicUsersFromLocalState) { |
| 753 // Second run loads list of public accounts from Local State. | 752 // Second run loads list of public accounts from Local State. |
| 754 } | 753 } |
| 755 | 754 |
| 756 } // namespace chromeos | 755 } // namespace chromeos |
| OLD | NEW |