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 "ash/session/session_state_delegate.h" | 5 #include "ash/session/session_state_delegate.h" |
6 #include "ash/shell.h" | 6 #include "ash/shell.h" |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
8 #include "chrome/browser/chromeos/login/login_display_host_impl.h" | 8 #include "chrome/browser/chromeos/login/login_display_host_impl.h" |
9 #include "chrome/browser/chromeos/login/login_manager_test.h" | 9 #include "chrome/browser/chromeos/login/login_manager_test_helper.h" |
10 #include "chrome/browser/chromeos/login/multi_profile_user_controller.h" | 10 #include "chrome/browser/chromeos/login/multi_profile_user_controller.h" |
11 #include "chrome/browser/chromeos/login/startup_utils.h" | 11 #include "chrome/browser/chromeos/login/startup_utils.h" |
12 #include "chrome/browser/chromeos/login/user_adding_screen.h" | 12 #include "chrome/browser/chromeos/login/user_adding_screen.h" |
13 #include "chrome/browser/chromeos/login/user_manager.h" | 13 #include "chrome/browser/chromeos/login/user_manager.h" |
14 #include "chrome/common/chrome_switches.h" | 14 #include "chrome/common/chrome_switches.h" |
15 #include "chrome/common/pref_names.h" | 15 #include "chrome/common/pref_names.h" |
16 #include "chrome/test/base/in_process_browser_test.h" | 16 #include "chrome/test/base/in_process_browser_test.h" |
17 #include "content/public/test/test_utils.h" | 17 #include "content/public/test/test_utils.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
19 | 19 |
20 using namespace testing; | 20 using namespace testing; |
21 | 21 |
22 namespace { | 22 namespace { |
23 | 23 |
24 const char* kTestUsers[] = {"test-user1@gmail.com", | 24 const char* kTestUsers[] = {"test-user1@gmail.com", |
25 "test-user2@gmail.com", | 25 "test-user2@gmail.com", |
26 "test-user3@gmail.com"}; | 26 "test-user3@gmail.com"}; |
27 | 27 |
28 } // anonymous namespace | 28 } // anonymous namespace |
29 | 29 |
30 namespace chromeos { | 30 namespace chromeos { |
31 | 31 |
32 class UserAddingScreenTest : public LoginManagerTest, | 32 class UserAddingScreenTest : public InProcessBrowserTest, |
33 public UserAddingScreen::Observer { | 33 public UserAddingScreen::Observer { |
34 public: | 34 public: |
35 UserAddingScreenTest() : LoginManagerTest(false), | 35 UserAddingScreenTest() |
36 user_adding_started_(0), | 36 : login_manager_test_helper_(new LoginManagerTestHelper), |
37 user_adding_finished_(0) { | 37 user_adding_started_(0), |
| 38 user_adding_finished_(0) { |
| 39 set_exit_when_last_browser_closes(false); |
| 40 } |
| 41 |
| 42 virtual void SetUpOnMainThread() OVERRIDE { |
| 43 login_manager_test_helper_->SetUp(); |
38 } | 44 } |
39 | 45 |
40 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 46 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
41 LoginManagerTest::SetUpCommandLine(command_line); | 47 login_manager_test_helper_->SetUpCommandLine(command_line); |
42 command_line->AppendSwitch(::switches::kMultiProfiles); | 48 command_line->AppendSwitch(::switches::kMultiProfiles); |
43 } | 49 } |
44 | 50 |
45 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 51 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { |
46 LoginManagerTest::SetUpInProcessBrowserTestFixture(); | 52 login_manager_test_helper_->SetUpLoginUtils(false); |
47 UserAddingScreen::Get()->AddObserver(this); | 53 UserAddingScreen::Get()->AddObserver(this); |
48 } | 54 } |
49 | 55 |
| 56 virtual void CleanUpOnMainThread() OVERRIDE { |
| 57 login_manager_test_helper_->CleanUp(); |
| 58 } |
| 59 |
50 virtual void OnUserAddingFinished() OVERRIDE { ++user_adding_finished_; } | 60 virtual void OnUserAddingFinished() OVERRIDE { ++user_adding_finished_; } |
51 | 61 |
52 virtual void OnUserAddingStarted() OVERRIDE { ++user_adding_started_; } | 62 virtual void OnUserAddingStarted() OVERRIDE { ++user_adding_started_; } |
53 | 63 |
54 void SetUserCanLock(User* user, bool can_lock) { | 64 void SetUserCanLock(User* user, bool can_lock) { |
55 user->set_can_lock(can_lock); | 65 user->set_can_lock(can_lock); |
56 } | 66 } |
57 | 67 |
58 int user_adding_started() { return user_adding_started_; } | 68 int user_adding_started() { return user_adding_started_; } |
59 | 69 |
60 int user_adding_finished() { return user_adding_finished_; } | 70 int user_adding_finished() { return user_adding_finished_; } |
61 | 71 |
| 72 protected: |
| 73 scoped_ptr<LoginManagerTestHelper> login_manager_test_helper_; |
| 74 |
62 private: | 75 private: |
63 int user_adding_started_; | 76 int user_adding_started_; |
64 int user_adding_finished_; | 77 int user_adding_finished_; |
65 | 78 |
66 DISALLOW_COPY_AND_ASSIGN(UserAddingScreenTest); | 79 DISALLOW_COPY_AND_ASSIGN(UserAddingScreenTest); |
67 }; | 80 }; |
68 | 81 |
69 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, PRE_CancelAdding) { | 82 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, PRE_CancelAdding) { |
70 RegisterUser(kTestUsers[0]); | 83 login_manager_test_helper_->RegisterUser(kTestUsers[0]); |
71 RegisterUser(kTestUsers[1]); | 84 login_manager_test_helper_->RegisterUser(kTestUsers[1]); |
72 RegisterUser(kTestUsers[2]); | 85 login_manager_test_helper_->RegisterUser(kTestUsers[2]); |
73 StartupUtils::MarkOobeCompleted(); | 86 StartupUtils::MarkOobeCompleted(); |
74 } | 87 } |
75 | 88 |
76 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, CancelAdding) { | 89 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, CancelAdding) { |
77 EXPECT_CALL(login_utils(), DoBrowserLaunch(_, _)).Times(1); | 90 EXPECT_CALL(login_manager_test_helper_->login_utils(), |
| 91 DoBrowserLaunch(_, _)).Times(1); |
78 EXPECT_EQ(3u, UserManager::Get()->GetUsers().size()); | 92 EXPECT_EQ(3u, UserManager::Get()->GetUsers().size()); |
79 EXPECT_EQ(0u, UserManager::Get()->GetLoggedInUsers().size()); | 93 EXPECT_EQ(0u, UserManager::Get()->GetLoggedInUsers().size()); |
80 | 94 |
81 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_PRIMARY, | 95 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_PRIMARY, |
82 ash::Shell::GetInstance()->session_state_delegate()-> | 96 ash::Shell::GetInstance()->session_state_delegate()-> |
83 GetSessionState()); | 97 GetSessionState()); |
84 | 98 |
85 LoginUser(kTestUsers[0]); | 99 login_manager_test_helper_->LogInUser(kTestUsers[0]); |
86 EXPECT_EQ(1u, UserManager::Get()->GetLoggedInUsers().size()); | 100 EXPECT_EQ(1u, UserManager::Get()->GetLoggedInUsers().size()); |
87 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, | 101 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, |
88 ash::Shell::GetInstance()->session_state_delegate()-> | 102 ash::Shell::GetInstance()->session_state_delegate()-> |
89 GetSessionState()); | 103 GetSessionState()); |
90 | 104 |
91 UserAddingScreen::Get()->Start(); | 105 UserAddingScreen::Get()->Start(); |
92 content::RunAllPendingInMessageLoop(); | 106 content::RunAllPendingInMessageLoop(); |
93 EXPECT_EQ(1, user_adding_started()); | 107 EXPECT_EQ(1, user_adding_started()); |
94 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_SECONDARY, | 108 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_SECONDARY, |
95 ash::Shell::GetInstance()->session_state_delegate()-> | 109 ash::Shell::GetInstance()->session_state_delegate()-> |
96 GetSessionState()); | 110 GetSessionState()); |
97 | 111 |
98 UserAddingScreen::Get()->Cancel(); | 112 UserAddingScreen::Get()->Cancel(); |
99 content::RunAllPendingInMessageLoop(); | 113 content::RunAllPendingInMessageLoop(); |
100 EXPECT_EQ(1, user_adding_finished()); | 114 EXPECT_EQ(1, user_adding_finished()); |
101 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, | 115 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, |
102 ash::Shell::GetInstance()->session_state_delegate()-> | 116 ash::Shell::GetInstance()->session_state_delegate()-> |
103 GetSessionState()); | 117 GetSessionState()); |
104 | 118 |
105 EXPECT_TRUE(LoginDisplayHostImpl::default_host() == NULL); | 119 EXPECT_TRUE(LoginDisplayHostImpl::default_host() == NULL); |
106 EXPECT_EQ(1u, UserManager::Get()->GetLoggedInUsers().size()); | 120 EXPECT_EQ(1u, UserManager::Get()->GetLoggedInUsers().size()); |
107 EXPECT_EQ(kTestUsers[0], UserManager::Get()->GetActiveUser()->email()); | 121 EXPECT_EQ(kTestUsers[0], UserManager::Get()->GetActiveUser()->email()); |
108 } | 122 } |
109 | 123 |
110 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, PRE_AddingSeveralUsers) { | 124 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, PRE_AddingSeveralUsers) { |
111 RegisterUser(kTestUsers[0]); | 125 login_manager_test_helper_->RegisterUser(kTestUsers[0]); |
112 RegisterUser(kTestUsers[1]); | 126 login_manager_test_helper_->RegisterUser(kTestUsers[1]); |
113 RegisterUser(kTestUsers[2]); | 127 login_manager_test_helper_->RegisterUser(kTestUsers[2]); |
114 StartupUtils::MarkOobeCompleted(); | 128 StartupUtils::MarkOobeCompleted(); |
115 } | 129 } |
116 | 130 |
117 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, AddingSeveralUsers) { | 131 IN_PROC_BROWSER_TEST_F(UserAddingScreenTest, AddingSeveralUsers) { |
118 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_PRIMARY, | 132 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_PRIMARY, |
119 ash::Shell::GetInstance()->session_state_delegate()-> | 133 ash::Shell::GetInstance()->session_state_delegate()-> |
120 GetSessionState()); | 134 GetSessionState()); |
121 EXPECT_CALL(login_utils(), DoBrowserLaunch(_, _)).Times(3); | 135 EXPECT_CALL(login_manager_test_helper_->login_utils(), |
122 LoginUser(kTestUsers[0]); | 136 DoBrowserLaunch(_, _)).Times(3); |
| 137 login_manager_test_helper_->LogInUser(kTestUsers[0]); |
123 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, | 138 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, |
124 ash::Shell::GetInstance()->session_state_delegate()-> | 139 ash::Shell::GetInstance()->session_state_delegate()-> |
125 GetSessionState()); | 140 GetSessionState()); |
126 | 141 |
127 UserManager* user_manager = UserManager::Get(); | 142 UserManager* user_manager = UserManager::Get(); |
128 | 143 |
129 for (int i = 1; i < 3; ++i) { | 144 for (int i = 1; i < 3; ++i) { |
130 UserAddingScreen::Get()->Start(); | 145 UserAddingScreen::Get()->Start(); |
131 content::RunAllPendingInMessageLoop(); | 146 content::RunAllPendingInMessageLoop(); |
132 EXPECT_EQ(i, user_adding_started()); | 147 EXPECT_EQ(i, user_adding_started()); |
133 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_SECONDARY, | 148 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_LOGIN_SECONDARY, |
134 ash::Shell::GetInstance()->session_state_delegate()-> | 149 ash::Shell::GetInstance()->session_state_delegate()-> |
135 GetSessionState()); | 150 GetSessionState()); |
136 AddUser(kTestUsers[i]); | 151 login_manager_test_helper_->AddUser(kTestUsers[i]); |
137 EXPECT_EQ(i, user_adding_finished()); | 152 EXPECT_EQ(i, user_adding_finished()); |
138 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, | 153 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, |
139 ash::Shell::GetInstance()->session_state_delegate()-> | 154 ash::Shell::GetInstance()->session_state_delegate()-> |
140 GetSessionState()); | 155 GetSessionState()); |
141 EXPECT_TRUE(LoginDisplayHostImpl::default_host() == NULL); | 156 EXPECT_TRUE(LoginDisplayHostImpl::default_host() == NULL); |
142 ASSERT_EQ(unsigned(i + 1), user_manager->GetLoggedInUsers().size()); | 157 ASSERT_EQ(unsigned(i + 1), user_manager->GetLoggedInUsers().size()); |
143 } | 158 } |
144 | 159 |
145 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, | 160 EXPECT_EQ(ash::SessionStateDelegate::SESSION_STATE_ACTIVE, |
146 ash::Shell::GetInstance()->session_state_delegate()-> | 161 ash::Shell::GetInstance()->session_state_delegate()-> |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 // not be listed on screen lock. | 222 // not be listed on screen lock. |
208 prefs3->SetString(prefs::kMultiProfileUserBehavior, | 223 prefs3->SetString(prefs::kMultiProfileUserBehavior, |
209 MultiProfileUserController::kBehaviorNotAllowed); | 224 MultiProfileUserController::kBehaviorNotAllowed); |
210 unlock_users = user_manager->GetUnlockUsers(); | 225 unlock_users = user_manager->GetUnlockUsers(); |
211 ASSERT_EQ(2UL, unlock_users.size()); | 226 ASSERT_EQ(2UL, unlock_users.size()); |
212 for (int i = 0; i < 2; ++i) | 227 for (int i = 0; i < 2; ++i) |
213 EXPECT_EQ(kTestUsers[i], unlock_users[i]->email()); | 228 EXPECT_EQ(kTestUsers[i], unlock_users[i]->email()); |
214 } | 229 } |
215 | 230 |
216 } // namespace chromeos | 231 } // namespace chromeos |
OLD | NEW |