| 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 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 } | 195 } |
| 196 | 196 |
| 197 TEST_F(ProfileManagerTest, DefaultProfileDir) { | 197 TEST_F(ProfileManagerTest, DefaultProfileDir) { |
| 198 base::FilePath expected_default = | 198 base::FilePath expected_default = |
| 199 base::FilePath().AppendASCII(chrome::kInitialProfile); | 199 base::FilePath().AppendASCII(chrome::kInitialProfile); |
| 200 EXPECT_EQ( | 200 EXPECT_EQ( |
| 201 expected_default.value(), | 201 expected_default.value(), |
| 202 g_browser_process->profile_manager()->GetInitialProfileDir().value()); | 202 g_browser_process->profile_manager()->GetInitialProfileDir().value()); |
| 203 } | 203 } |
| 204 | 204 |
| 205 MATCHER(NotFail, "Profile creation failure status is not reported.") { |
| 206 return arg == Profile::CREATE_STATUS_CREATED || |
| 207 arg == Profile::CREATE_STATUS_INITIALIZED; |
| 208 } |
| 209 |
| 210 MATCHER(SameNotNull, "The same non-NULL value for all calls.") { |
| 211 if (!g_created_profile) |
| 212 g_created_profile = arg; |
| 213 return arg != NULL && arg == g_created_profile; |
| 214 } |
| 215 |
| 205 #if defined(OS_CHROMEOS) | 216 #if defined(OS_CHROMEOS) |
| 206 | 217 |
| 207 // This functionality only exists on Chrome OS. | 218 // This functionality only exists on Chrome OS. |
| 208 TEST_F(ProfileManagerTest, LoggedInProfileDir) { | 219 TEST_F(ProfileManagerTest, LoggedInProfileDir) { |
| 209 base::FilePath expected_default = | 220 base::FilePath expected_default = |
| 210 base::FilePath().AppendASCII(chrome::kInitialProfile); | 221 base::FilePath().AppendASCII(chrome::kInitialProfile); |
| 211 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 222 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 212 EXPECT_EQ(expected_default.value(), | 223 EXPECT_EQ(expected_default.value(), |
| 213 profile_manager->GetInitialProfileDir().value()); | 224 profile_manager->GetInitialProfileDir().value()); |
| 214 | 225 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 225 content::NotificationService::AllSources(), | 236 content::NotificationService::AllSources(), |
| 226 content::Details<const user_manager::User>(active_user)); | 237 content::Details<const user_manager::User>(active_user)); |
| 227 base::FilePath expected_logged_in( | 238 base::FilePath expected_logged_in( |
| 228 chromeos::ProfileHelper::GetUserProfileDir(active_user->username_hash())); | 239 chromeos::ProfileHelper::GetUserProfileDir(active_user->username_hash())); |
| 229 EXPECT_EQ(expected_logged_in.value(), | 240 EXPECT_EQ(expected_logged_in.value(), |
| 230 profile_manager->GetInitialProfileDir().value()); | 241 profile_manager->GetInitialProfileDir().value()); |
| 231 VLOG(1) << temp_dir_.path().Append( | 242 VLOG(1) << temp_dir_.path().Append( |
| 232 profile_manager->GetInitialProfileDir()).value(); | 243 profile_manager->GetInitialProfileDir()).value(); |
| 233 } | 244 } |
| 234 | 245 |
| 246 // Switching the user should switch also the last used user. |
| 247 TEST_F(ProfileManagerTest, ActiveProfileChanged) { |
| 248 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 249 ASSERT_TRUE(profile_manager); |
| 250 |
| 251 // Create and load two profiles. |
| 252 const std::string user_name1 = "user1@example.com"; |
| 253 base::FilePath dest_path1 = temp_dir_.path().AppendASCII(user_name1); |
| 254 |
| 255 MockObserver mock_observer; |
| 256 EXPECT_CALL(mock_observer, OnProfileCreated( |
| 257 testing::NotNull(), NotFail())).Times(testing::AtLeast(2)); |
| 258 |
| 259 CreateProfileAsync(profile_manager, user_name1, false, &mock_observer); |
| 260 base::RunLoop().RunUntilIdle(); |
| 261 |
| 262 chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager(); |
| 263 chromeos::ScopedUserManagerEnabler enabler(user_manager); |
| 264 |
| 265 PrefService* local_state = g_browser_process->local_state(); |
| 266 local_state->SetString(prefs::kProfileLastUsed, ""); |
| 267 |
| 268 const user_manager::User* active_user = user_manager->AddUser(user_name1); |
| 269 user_manager->LoginUser(user_name1); |
| 270 |
| 271 // None of the calls above should have changed the last user. |
| 272 EXPECT_EQ("", local_state->GetString(prefs::kProfileLastUsed)); |
| 273 |
| 274 // The FakeUserManager will not switch the user either. |
| 275 user_manager->SwitchActiveUser(user_name1); |
| 276 EXPECT_EQ("", local_state->GetString(prefs::kProfileLastUsed)); |
| 277 |
| 278 // After triggering the LOGIN_USER_CHANGED observer call ourselves, the user |
| 279 // has changed. |
| 280 profile_manager->Observe( |
| 281 chrome::NOTIFICATION_LOGIN_USER_CHANGED, |
| 282 content::NotificationService::AllSources(), |
| 283 content::Details<const user_manager::User>(active_user)); |
| 284 EXPECT_EQ("u-" + user_name1 + "-hash", |
| 285 local_state->GetString(prefs::kProfileLastUsed)); |
| 286 } |
| 287 |
| 235 #endif | 288 #endif |
| 236 | 289 |
| 237 TEST_F(ProfileManagerTest, CreateAndUseTwoProfiles) { | 290 TEST_F(ProfileManagerTest, CreateAndUseTwoProfiles) { |
| 238 base::FilePath dest_path1 = temp_dir_.path(); | 291 base::FilePath dest_path1 = temp_dir_.path(); |
| 239 dest_path1 = dest_path1.Append(FILE_PATH_LITERAL("New Profile 1")); | 292 dest_path1 = dest_path1.Append(FILE_PATH_LITERAL("New Profile 1")); |
| 240 | 293 |
| 241 base::FilePath dest_path2 = temp_dir_.path(); | 294 base::FilePath dest_path2 = temp_dir_.path(); |
| 242 dest_path2 = dest_path2.Append(FILE_PATH_LITERAL("New Profile 2")); | 295 dest_path2 = dest_path2.Append(FILE_PATH_LITERAL("New Profile 2")); |
| 243 | 296 |
| 244 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 297 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 266 | 319 |
| 267 // Make sure any pending tasks run before we destroy the profiles. | 320 // Make sure any pending tasks run before we destroy the profiles. |
| 268 base::RunLoop().RunUntilIdle(); | 321 base::RunLoop().RunUntilIdle(); |
| 269 | 322 |
| 270 TestingBrowserProcess::GetGlobal()->SetProfileManager(NULL); | 323 TestingBrowserProcess::GetGlobal()->SetProfileManager(NULL); |
| 271 | 324 |
| 272 // Make sure history cleans up correctly. | 325 // Make sure history cleans up correctly. |
| 273 base::RunLoop().RunUntilIdle(); | 326 base::RunLoop().RunUntilIdle(); |
| 274 } | 327 } |
| 275 | 328 |
| 276 MATCHER(NotFail, "Profile creation failure status is not reported.") { | |
| 277 return arg == Profile::CREATE_STATUS_CREATED || | |
| 278 arg == Profile::CREATE_STATUS_INITIALIZED; | |
| 279 } | |
| 280 | |
| 281 MATCHER(SameNotNull, "The same non-NULL value for all calls.") { | |
| 282 if (!g_created_profile) | |
| 283 g_created_profile = arg; | |
| 284 return arg != NULL && arg == g_created_profile; | |
| 285 } | |
| 286 | |
| 287 TEST_F(ProfileManagerTest, CreateProfileAsyncMultipleRequests) { | 329 TEST_F(ProfileManagerTest, CreateProfileAsyncMultipleRequests) { |
| 288 g_created_profile = NULL; | 330 g_created_profile = NULL; |
| 289 | 331 |
| 290 MockObserver mock_observer1; | 332 MockObserver mock_observer1; |
| 291 EXPECT_CALL(mock_observer1, OnProfileCreated( | 333 EXPECT_CALL(mock_observer1, OnProfileCreated( |
| 292 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); | 334 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); |
| 293 MockObserver mock_observer2; | 335 MockObserver mock_observer2; |
| 294 EXPECT_CALL(mock_observer2, OnProfileCreated( | 336 EXPECT_CALL(mock_observer2, OnProfileCreated( |
| 295 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); | 337 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); |
| 296 MockObserver mock_observer3; | 338 MockObserver mock_observer3; |
| (...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1237 dest_path2.BaseName().MaybeAsASCII()); | 1279 dest_path2.BaseName().MaybeAsASCII()); |
| 1238 profile_manager->ScheduleProfileForDeletion(dest_path2, | 1280 profile_manager->ScheduleProfileForDeletion(dest_path2, |
| 1239 ProfileManager::CreateCallback()); | 1281 ProfileManager::CreateCallback()); |
| 1240 // Spin the message loop so that all the callbacks can finish running. | 1282 // Spin the message loop so that all the callbacks can finish running. |
| 1241 base::RunLoop().RunUntilIdle(); | 1283 base::RunLoop().RunUntilIdle(); |
| 1242 | 1284 |
| 1243 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); | 1285 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); |
| 1244 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); | 1286 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); |
| 1245 } | 1287 } |
| 1246 #endif // !defined(OS_MACOSX) | 1288 #endif // !defined(OS_MACOSX) |
| OLD | NEW |