moebius#205: Fix: The profile - resetting (the custom profile name)

https://github.com/MoonchildProductions/moebius/pull/205
This commit is contained in:
janekptacijarabaci 2018-04-19 19:49:01 +02:00 committed by Roy Tam
commit 6a0f3e8f3f
6 changed files with 696 additions and 28 deletions

View file

@ -31,13 +31,19 @@ static const char kProfileProperties[] =
* Creates a new profile with a timestamp in the name to use for profile reset.
*/
nsresult
CreateResetProfile(nsIToolkitProfileService* aProfileSvc, nsIToolkitProfile* *aNewProfile)
CreateResetProfile(nsIToolkitProfileService* aProfileSvc, const nsACString& aOldProfileName, nsIToolkitProfile* *aNewProfile)
{
MOZ_ASSERT(aProfileSvc, "NULL profile service");
nsCOMPtr<nsIToolkitProfile> newProfile;
// Make the new profile "default-" + the time in seconds since epoch for uniqueness.
nsAutoCString newProfileName("default-");
// Make the new profile the old profile (or "default-") + the time in seconds since epoch for uniqueness.
nsAutoCString newProfileName;
if (!aOldProfileName.IsEmpty()) {
newProfileName.Assign(aOldProfileName);
newProfileName.Append("-");
} else {
newProfileName.Assign("default-");
}
newProfileName.Append(nsPrintfCString("%lld", PR_Now() / 1000));
nsresult rv = aProfileSvc->CreateProfile(nullptr, // choose a default dir for us
newProfileName,

View file

@ -11,6 +11,7 @@ static bool gProfileResetCleanupCompleted = false;
static const char kResetProgressURL[] = "chrome://global/content/resetProfileProgress.xul";
nsresult CreateResetProfile(nsIToolkitProfileService* aProfileSvc,
const nsACString& aOldProfileName,
nsIToolkitProfile* *aNewProfile);
nsresult ProfileResetCleanup(nsIToolkitProfile* aOldProfile);

View file

@ -2005,7 +2005,7 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
if (gDoProfileReset) {
// If we're resetting a profile, create a new one and use it to startup.
nsCOMPtr<nsIToolkitProfile> newProfile;
rv = CreateResetProfile(aProfileSvc, getter_AddRefs(newProfile));
rv = CreateResetProfile(aProfileSvc, gResetOldProfileName, getter_AddRefs(newProfile));
if (NS_SUCCEEDED(rv)) {
rv = newProfile->GetRootDir(getter_AddRefs(lf));
NS_ENSURE_SUCCESS(rv, rv);
@ -2151,20 +2151,20 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
return ProfileLockedDialog(profile, unlocker, aNative, &tempProfileLock);
}
nsCOMPtr<nsIToolkitProfile> newProfile;
rv = CreateResetProfile(aProfileSvc, getter_AddRefs(newProfile));
if (NS_FAILED(rv)) {
NS_WARNING("Failed to create a profile to reset to.");
gDoProfileReset = false;
} else {
nsresult gotName = profile->GetName(gResetOldProfileName);
if (NS_SUCCEEDED(gotName)) {
profile = newProfile;
} else {
NS_WARNING("Failed to get the name of the profile we're resetting, so aborting reset.");
gResetOldProfileName.Truncate(0);
nsresult gotName = profile->GetName(gResetOldProfileName);
if (NS_SUCCEEDED(gotName)) {
nsCOMPtr<nsIToolkitProfile> newProfile;
rv = CreateResetProfile(aProfileSvc, gResetOldProfileName, getter_AddRefs(newProfile));
if (NS_FAILED(rv)) {
NS_WARNING("Failed to create a profile to reset to.");
gDoProfileReset = false;
} else {
profile = newProfile;
}
} else {
NS_WARNING("Failed to get the name of the profile we're resetting, so aborting reset.");
gResetOldProfileName.Truncate(0);
gDoProfileReset = false;
}
}
@ -2259,20 +2259,22 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
return ProfileLockedDialog(profile, unlocker, aNative, &tempProfileLock);
}
nsCOMPtr<nsIToolkitProfile> newProfile;
rv = CreateResetProfile(aProfileSvc, getter_AddRefs(newProfile));
if (NS_FAILED(rv)) {
NS_WARNING("Failed to create a profile to reset to.");
gDoProfileReset = false;
} else {
nsresult gotName = profile->GetName(gResetOldProfileName);
if (NS_SUCCEEDED(gotName)) {
profile = newProfile;
} else {
NS_WARNING("Failed to get the name of the profile we're resetting, so aborting reset.");
gResetOldProfileName.Truncate(0);
nsresult gotName = profile->GetName(gResetOldProfileName);
if (NS_SUCCEEDED(gotName)) {
nsCOMPtr<nsIToolkitProfile> newProfile;
rv = CreateResetProfile(aProfileSvc, gResetOldProfileName, getter_AddRefs(newProfile));
if (NS_FAILED(rv)) {
NS_WARNING("Failed to create a profile to reset to.");
gDoProfileReset = false;
}
else {
profile = newProfile;
}
}
else {
NS_WARNING("Failed to get the name of the profile we're resetting, so aborting reset.");
gResetOldProfileName.Truncate(0);
gDoProfileReset = false;
}
}