Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: chrome/browser/profiles/profile_manager.cc

Issue 1113333003: Don't create a new profile when cleaning up stale ephemeral profiles. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: fix? Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/profiles/profile_manager.cc
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index e2d2cc1cb85530ec4436bfe0169bf0aa87f6f62d..4c472a92e23b4c826cfd5b4667d1658483ce022b 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -645,6 +645,7 @@ ProfileShortcutManager* ProfileManager::profile_shortcut_manager() {
void ProfileManager::ScheduleProfileForDeletion(
const base::FilePath& profile_dir,
+ bool suppress_profile_creation,
const CreateCallback& callback) {
DCHECK(profiles::IsMultipleProfilesEnabled());
@@ -675,32 +676,35 @@ void ProfileManager::ScheduleProfileForDeletion(
}
}
- base::FilePath new_path;
- if (last_non_supervised_profile_path.empty()) {
+ base::FilePath new_path = last_non_supervised_profile_path;
+ if (new_path.empty()) {
// If we are using --new-avatar-menu, then assign the default
// placeholder avatar and name. Otherwise, use random ones.
- bool is_new_avatar_menu = switches::IsNewAvatarMenu();
- int avatar_index = profiles::GetPlaceholderAvatarIndex();
- base::string16 new_avatar_url = is_new_avatar_menu ?
- base::UTF8ToUTF16(profiles::GetDefaultAvatarIconUrl(avatar_index)) :
- base::string16();
- base::string16 new_profile_name = is_new_avatar_menu ?
- cache.ChooseNameForNewProfile(avatar_index) : base::string16();
+ base::string16 new_avatar_url;
+ base::string16 new_profile_name;
+ if (switches::IsNewAvatarMenu()) {
+ int avatar_index = profiles::GetPlaceholderAvatarIndex();
+ new_avatar_url =
+ base::UTF8ToUTF16(profiles::GetDefaultAvatarIconUrl(avatar_index));
+ new_profile_name = cache.ChooseNameForNewProfile(avatar_index);
+ }
new_path = GenerateNextProfileDirectoryPath();
- CreateProfileAsync(new_path,
- base::Bind(&ProfileManager::OnNewActiveProfileLoaded,
- base::Unretained(this),
- profile_dir,
- new_path,
- callback),
- new_profile_name,
- new_avatar_url,
- std::string());
-
- ProfileMetrics::LogProfileAddNewUser(
- ProfileMetrics::ADD_NEW_USER_LAST_DELETED);
- return;
+ if (!suppress_profile_creation) {
+ CreateProfileAsync(new_path,
+ base::Bind(&ProfileManager::OnNewActiveProfileLoaded,
+ base::Unretained(this),
+ profile_dir,
+ new_path,
+ callback),
+ new_profile_name,
+ new_avatar_url,
+ std::string());
+
+ ProfileMetrics::LogProfileAddNewUser(
+ ProfileMetrics::ADD_NEW_USER_LAST_DELETED);
+ return;
+ }
}
#if defined(OS_MACOSX)
@@ -709,8 +713,10 @@ void ProfileManager::ScheduleProfileForDeletion(
// profile has been loaded, we must pre-load a next one.
const std::string last_used_profile =
g_browser_process->local_state()->GetString(prefs::kProfileLastUsed);
- if (last_used_profile == profile_dir.BaseName().MaybeAsASCII() ||
- last_used_profile == GetGuestProfilePath().BaseName().MaybeAsASCII()) {
+ if ((last_used_profile == profile_dir.BaseName().MaybeAsASCII() ||
+ last_used_profile == GetGuestProfilePath().BaseName().MaybeAsASCII()) &&
+ !suppress_profile_creation) {
+ DCHECK(!last_non_supervised_profile_path.empty());
CreateProfileAsync(last_non_supervised_profile_path,
base::Bind(&ProfileManager::OnNewActiveProfileLoaded,
base::Unretained(this),
@@ -724,18 +730,7 @@ void ProfileManager::ScheduleProfileForDeletion(
}
#endif // defined(OS_MACOSX)
- FinishDeletingProfile(profile_dir, last_non_supervised_profile_path);
-}
-
-// static
-void ProfileManager::CleanUpStaleProfiles(
- const std::vector<base::FilePath>& profile_paths) {
- DCHECK_CURRENTLY_ON(BrowserThread::FILE);
-
- for (std::vector<base::FilePath>::const_iterator it = profile_paths.begin();
- it != profile_paths.end(); ++it) {
- NukeProfileFromDisk(*it);
- }
+ FinishDeletingProfile(profile_dir, new_path);
}
void ProfileManager::AutoloadProfiles() {
@@ -1377,7 +1372,8 @@ void ProfileManager::BrowserListObserver::OnBrowserRemoved(
if (profile->GetPrefs()->GetBoolean(prefs::kForceEphemeralProfiles) &&
!IsProfileMarkedForDeletion(path)) {
g_browser_process->profile_manager()->ScheduleProfileForDeletion(
- path, ProfileManager::CreateCallback());
+ path, false /* suppress_profile_creation */,
+ ProfileManager::CreateCallback());
}
}
@@ -1418,7 +1414,9 @@ void ProfileManager::OnNewActiveProfileLoaded(
// If the profile we tried to load as the next active profile has been
// deleted, then retry deleting this profile to redo the logic to load
// the next available profile.
- ScheduleProfileForDeletion(profile_to_delete_path, original_callback);
+ ScheduleProfileForDeletion(profile_to_delete_path,
+ false /* suppress_profile_creation */,
+ original_callback);
return;
}

Powered by Google App Engine
This is Rietveld 408576698