| 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 "chrome/browser/profiles/profile_manager.h" | 5 #include "chrome/browser/profiles/profile_manager.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 | 390 |
| 391 return last_used_profile_dir.AppendASCII(chrome::kInitialProfile); | 391 return last_used_profile_dir.AppendASCII(chrome::kInitialProfile); |
| 392 } | 392 } |
| 393 | 393 |
| 394 std::vector<Profile*> ProfileManager::GetLastOpenedProfiles( | 394 std::vector<Profile*> ProfileManager::GetLastOpenedProfiles( |
| 395 const base::FilePath& user_data_dir) { | 395 const base::FilePath& user_data_dir) { |
| 396 PrefService* local_state = g_browser_process->local_state(); | 396 PrefService* local_state = g_browser_process->local_state(); |
| 397 DCHECK(local_state); | 397 DCHECK(local_state); |
| 398 | 398 |
| 399 std::vector<Profile*> to_return; | 399 std::vector<Profile*> to_return; |
| 400 if (local_state->HasPrefPath(prefs::kProfilesLastActive)) { | 400 if (local_state->HasPrefPath(prefs::kProfilesLastActive) && |
| 401 const ListValue* profile_list = | 401 local_state->GetList(prefs::kProfilesLastActive)) { |
| 402 local_state->GetList(prefs::kProfilesLastActive); | 402 // Make a copy because the list might change in the calls to GetProfile. |
| 403 if (profile_list) { | 403 scoped_ptr<base::ListValue> profile_list( |
| 404 ListValue::const_iterator it; | 404 local_state->GetList(prefs::kProfilesLastActive)->DeepCopy()); |
| 405 std::string profile; | 405 base::ListValue::const_iterator it; |
| 406 for (it = profile_list->begin(); it != profile_list->end(); ++it) { | 406 std::string profile; |
| 407 if (!(*it)->GetAsString(&profile) || profile.empty()) { | 407 for (it = profile_list->begin(); it != profile_list->end(); ++it) { |
| 408 LOG(WARNING) << "Invalid entry in " << prefs::kProfilesLastActive; | 408 if (!(*it)->GetAsString(&profile) || profile.empty()) { |
| 409 continue; | 409 LOG(WARNING) << "Invalid entry in " << prefs::kProfilesLastActive; |
| 410 } | 410 continue; |
| 411 to_return.push_back(GetProfile(user_data_dir.AppendASCII(profile))); | |
| 412 } | 411 } |
| 412 to_return.push_back(GetProfile(user_data_dir.AppendASCII(profile))); |
| 413 } | 413 } |
| 414 } | 414 } |
| 415 return to_return; | 415 return to_return; |
| 416 } | 416 } |
| 417 | 417 |
| 418 Profile* ProfileManager::GetDefaultProfile( | 418 Profile* ProfileManager::GetDefaultProfile( |
| 419 const base::FilePath& user_data_dir) { | 419 const base::FilePath& user_data_dir) { |
| 420 #if defined(OS_CHROMEOS) | 420 #if defined(OS_CHROMEOS) |
| 421 base::FilePath default_profile_dir(user_data_dir); | 421 base::FilePath default_profile_dir(user_data_dir); |
| 422 if (logged_in_) { | 422 if (logged_in_) { |
| (...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1250 ProfileManager::ProfileInfo::ProfileInfo( | 1250 ProfileManager::ProfileInfo::ProfileInfo( |
| 1251 Profile* profile, | 1251 Profile* profile, |
| 1252 bool created) | 1252 bool created) |
| 1253 : profile(profile), | 1253 : profile(profile), |
| 1254 created(created) { | 1254 created(created) { |
| 1255 } | 1255 } |
| 1256 | 1256 |
| 1257 ProfileManager::ProfileInfo::~ProfileInfo() { | 1257 ProfileManager::ProfileInfo::~ProfileInfo() { |
| 1258 ProfileDestroyer::DestroyProfileWhenAppropriate(profile.release()); | 1258 ProfileDestroyer::DestroyProfileWhenAppropriate(profile.release()); |
| 1259 } | 1259 } |
| OLD | NEW |