| Index: chrome/browser/profiles/profile_manager.cc
|
| diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
|
| index a6d1554ae94d2e4e0bd171984f3a52babbd02852..92717cac8db82d656c9516b15d86744b63658f8e 100644
|
| --- a/chrome/browser/profiles/profile_manager.cc
|
| +++ b/chrome/browser/profiles/profile_manager.cc
|
| @@ -962,7 +962,9 @@ void ProfileManager::AddProfileToCache(Profile* profile) {
|
| if (profile->GetPath().DirName() != cache.GetUserDataDir())
|
| return;
|
|
|
| - if (cache.GetIndexOfProfileWithPath(profile->GetPath()) != std::string::npos)
|
| + // If the profile is already in the cache, there's nothing to do.
|
| + ProfileInfoEntry entry;
|
| + if (cache.GetInfoForProfile(profile->GetPath(), &entry))
|
| return;
|
|
|
| string16 username = UTF8ToUTF16(profile->GetPrefs()->GetString(
|
| @@ -999,16 +1001,12 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
|
| profile_name = l10n_util::GetStringUTF8(IDS_PROFILES_GUEST_PROFILE_NAME);
|
| avatar_index = 0;
|
| } else {
|
| - size_t profile_cache_index =
|
| - cache.GetIndexOfProfileWithPath(profile->GetPath());
|
| + ProfileInfoEntry entry;
|
| // If the cache has an entry for this profile, use the cache data.
|
| - if (profile_cache_index != std::string::npos) {
|
| - avatar_index =
|
| - cache.GetAvatarIconIndexOfProfileAtIndex(profile_cache_index);
|
| - profile_name =
|
| - UTF16ToUTF8(cache.GetNameOfProfileAtIndex(profile_cache_index));
|
| - managed_user_id =
|
| - cache.GetManagedUserIdOfProfileAtIndex(profile_cache_index);
|
| + if (cache.GetInfoForProfile(profile->GetPath(), &entry)) {
|
| + avatar_index = entry.icon_index();
|
| + profile_name = UTF16ToUTF8(entry.GetDisplayName());
|
| + managed_user_id = entry.managed_user_id();
|
| } else if (profile->GetPath() ==
|
| profiles::GetDefaultProfileDir(cache.GetUserDataDir())) {
|
| avatar_index = 0;
|
| @@ -1066,10 +1064,12 @@ void ProfileManager::ScheduleProfileForDeletion(
|
| // Update the last used profile pref before closing browser windows. This
|
| // way the correct last used profile is set for any notification observers.
|
| base::FilePath last_non_managed_profile_path;
|
| - for (size_t i = 0; i < cache.GetNumberOfProfiles(); ++i) {
|
| - base::FilePath cur_path = cache.GetPathOfProfileAtIndex(i);
|
| + const std::vector<ProfileInfoEntry> entries(cache.GetProfilesSortedByName());
|
| + for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin();
|
| + it != entries.end(); ++it) {
|
| + base::FilePath cur_path = it->path();
|
| // Make sure that this profile is not pending deletion.
|
| - if (cur_path != profile_dir && !cache.ProfileIsManagedAtIndex(i) &&
|
| + if (cur_path != profile_dir && !it->IsManaged() &&
|
| !IsProfileMarkedForDeletion(cur_path)) {
|
| last_non_managed_profile_path = cur_path;
|
| break;
|
| @@ -1173,13 +1173,14 @@ void ProfileManager::AutoloadProfiles() {
|
| }
|
|
|
| ProfileInfoCache& cache = GetProfileInfoCache();
|
| - size_t number_of_profiles = cache.GetNumberOfProfiles();
|
| - for (size_t p = 0; p < number_of_profiles; ++p) {
|
| - if (cache.GetBackgroundStatusOfProfileAtIndex(p)) {
|
| + const std::vector<ProfileInfoEntry> entries(cache.GetProfilesSortedByName());
|
| + for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin();
|
| + it != entries.end(); ++it) {
|
| + if (it->is_running_background_apps()) {
|
| // If status is true, that profile is running background apps. By calling
|
| // GetProfile, we automatically cause the profile to be loaded which will
|
| // register it with the BackgroundModeManager.
|
| - GetProfile(cache.GetPathOfProfileAtIndex(p));
|
| + GetProfile(it->path());
|
| }
|
| }
|
| }
|
|
|