mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 01:08:39 +09:00
Bug 1122124: Fix default profile setting after reset, keep profile name
Native in moebius https://github.com/MoonchildProductions/moebius/pull/184
This commit is contained in:
parent
b1b8733094
commit
6fe6d192e6
1 changed files with 25 additions and 14 deletions
|
|
@ -1887,17 +1887,20 @@ ShowProfileManager(nsIToolkitProfileService* aProfileSvc,
|
|||
}
|
||||
|
||||
/**
|
||||
* Set the currently running profile as the default/selected one.
|
||||
* Get the currently running profile using its root directory.
|
||||
*
|
||||
* @param aProfileSvc The profile service
|
||||
* @param aCurrentProfileRoot The root directory of the current profile.
|
||||
* @return an error if aCurrentProfileRoot is not found or the profile could not
|
||||
* be set as the default.
|
||||
* @param aProfile Out-param that returns the profile object.
|
||||
* @return an error if aCurrentProfileRoot is not found
|
||||
*/
|
||||
static nsresult
|
||||
SetCurrentProfileAsDefault(nsIToolkitProfileService* aProfileSvc,
|
||||
nsIFile* aCurrentProfileRoot)
|
||||
GetCurrentProfile(nsIToolkitProfileService* aProfileSvc,
|
||||
nsIFile* aCurrentProfileRoot,
|
||||
nsIToolkitProfile** aProfile)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aProfileSvc);
|
||||
NS_ENSURE_ARG_POINTER(aProfile);
|
||||
|
||||
nsCOMPtr<nsISimpleEnumerator> profiles;
|
||||
nsresult rv = aProfileSvc->GetProfiles(getter_AddRefs(profiles));
|
||||
|
|
@ -1913,7 +1916,8 @@ SetCurrentProfileAsDefault(nsIToolkitProfileService* aProfileSvc,
|
|||
profile->GetRootDir(getter_AddRefs(profileRoot));
|
||||
profileRoot->Equals(aCurrentProfileRoot, &foundMatchingProfile);
|
||||
if (foundMatchingProfile) {
|
||||
return aProfileSvc->SetSelectedProfile(profile);
|
||||
profile.forget(aProfile);
|
||||
return NS_OK;
|
||||
}
|
||||
rv = profiles->GetNext(getter_AddRefs(supports));
|
||||
}
|
||||
|
|
@ -3753,15 +3757,22 @@ XREMain::XRE_mainRun()
|
|||
nsresult backupCreated = ProfileResetCleanup(profileBeingReset);
|
||||
if (NS_FAILED(backupCreated)) NS_WARNING("Could not cleanup the profile that was reset");
|
||||
|
||||
// Set the new profile as the default after we're done cleaning up the old profile,
|
||||
// iff that profile was already the default
|
||||
if (profileWasSelected) {
|
||||
// this is actually "broken" - see bug 1122124
|
||||
rv = SetCurrentProfileAsDefault(mProfileSvc, mProfD);
|
||||
if (NS_FAILED(rv)) NS_WARNING("Could not set current profile as the default");
|
||||
nsCOMPtr<nsIToolkitProfile> newProfile;
|
||||
rv = GetCurrentProfile(mProfileSvc, mProfD, getter_AddRefs(newProfile));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
newProfile->SetName(gResetOldProfileName);
|
||||
// Set the new profile as the default after we're done cleaning up the old profile,
|
||||
// iff that profile was already the default
|
||||
if (profileWasSelected) {
|
||||
rv = mProfileSvc->SetDefaultProfile(newProfile);
|
||||
if (NS_FAILED(rv)) NS_WARNING("Could not set current profile as the default");
|
||||
}
|
||||
} else {
|
||||
NS_WARNING("Could not find current profile to set as default / change name.");
|
||||
}
|
||||
// Need to write out the fact that the profile has been removed and potentially
|
||||
// that the selected/default profile changed.
|
||||
|
||||
// Need to write out the fact that the profile has been removed, the new profile
|
||||
// renamed, and potentially that the selected/default profile changed.
|
||||
mProfileSvc->Flush();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue