[tbb-commits] [Git][tpo/applications/tor-browser][tor-browser-128.4.0esr-14.5-1] 3 commits: fixup! Bug 14631: Improve profile access error messages.
morgan (@morgan)
git at gitlab.torproject.org
Tue Oct 29 20:46:36 UTC 2024
morgan pushed to branch tor-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
1f0bfac8 by Henry Wilkes at 2024-10-29T20:11:45+00:00
fixup! Bug 14631: Improve profile access error messages.
Bug 42739: Revert patch for "Improve profile access error messages."
- - - - -
8cef0b28 by Henry Wilkes at 2024-10-29T20:11:45+00:00
fixup! Add TorStrings module for localization
Bug 42739: Drop profile access error strings.
- - - - -
50cede2a by Henry Wilkes at 2024-10-29T20:11:45+00:00
Bug 42739: Use the brand name for profile error messages.
Some messages in profileSelection.properties use gAppData->name as
variable inputs. However, gAppData->name is still "Firefox" for our
base-browser builds, rather than the user-facing browser name. We swap
these instances with the displayed brand name instead.
- - - - -
6 changed files:
- toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
- toolkit/profile/nsToolkitProfileService.cpp
- toolkit/profile/nsToolkitProfileService.h
- − toolkit/torbutton/chrome/locale/en-US/torbutton.properties
- toolkit/xre/ProfileReset.cpp
- toolkit/xre/nsAppRunner.cpp
Changes:
=====================================
toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
=====================================
@@ -12,11 +12,6 @@ restartMessageUnlocker=%S is already running, but is not responding. The old %S
restartMessageNoUnlockerMac=A copy of %S is already open. Only one copy of %S can be open at a time.
restartMessageUnlockerMac=A copy of %S is already open. The running copy of %S will quit in order to open this one.
-# LOCALIZATION NOTE (profileProblemTitle, profileReadOnly, profileReadOnlyMac, profileAccessDenied): Messages displayed when the browser profile cannot be accessed or written to. %S is the application name.
-profileProblemTitle=%S Profile Problem
-profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
-profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
-profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
# Profile manager
# LOCALIZATION NOTE (profileTooltip): First %S is the profile name, second %S is the path to the profile folder.
profileTooltip=Profile: ‘%S’ — Path: ‘%S’
=====================================
toolkit/profile/nsToolkitProfileService.cpp
=====================================
@@ -1261,10 +1261,9 @@ nsToolkitProfileService::SelectStartupProfile(
}
bool wasDefault;
- ProfileStatus profileStatus;
nsresult rv =
SelectStartupProfile(&argc, argv.get(), aIsResetting, aRootDir, aLocalDir,
- aProfile, aDidCreate, &wasDefault, profileStatus);
+ aProfile, aDidCreate, &wasDefault);
// Since we were called outside of the normal startup path complete any
// startup tasks.
@@ -1299,8 +1298,7 @@ static void SaltProfileName(nsACString& aName);
nsresult nsToolkitProfileService::SelectStartupProfile(
int* aArgc, char* aArgv[], bool aIsResetting, nsIFile** aRootDir,
nsIFile** aLocalDir, nsIToolkitProfile** aProfile, bool* aDidCreate,
- bool* aWasDefaultSelection, ProfileStatus& aProfileStatus) {
- aProfileStatus = PROFILE_STATUS_OK;
+ bool* aWasDefaultSelection) {
if (mStartupProfileSelected) {
return NS_ERROR_ALREADY_INITIALIZED;
}
@@ -1393,13 +1391,6 @@ nsresult nsToolkitProfileService::SelectStartupProfile(
rv = XRE_GetFileFromPath(arg, getter_AddRefs(lf));
NS_ENSURE_SUCCESS(rv, rv);
- aProfileStatus = CheckProfileWriteAccess(lf);
- if (PROFILE_STATUS_OK != aProfileStatus) {
- NS_ADDREF(*aRootDir = lf);
- NS_ADDREF(*aLocalDir = lf);
- return NS_ERROR_FAILURE;
- }
-
// Make sure that the profile path exists and it's a directory.
bool exists;
rv = lf->Exists(&exists);
@@ -2259,47 +2250,3 @@ nsresult XRE_GetFileFromPath(const char* aPath, nsIFile** aResult) {
# error Platform-specific logic needed here.
#endif
}
-
-// Check for write permission to the profile directory by trying to create a
-// new file (after ensuring that no file with the same name exists).
-ProfileStatus nsToolkitProfileService::CheckProfileWriteAccess(
- nsIFile* aProfileDir) {
-#if defined(XP_UNIX)
- constexpr auto writeTestFileName = u".parentwritetest"_ns;
-#else
- constexpr auto writeTestFileName = u"parent.writetest"_ns;
-#endif
-
- nsCOMPtr<nsIFile> writeTestFile;
- nsresult rv = aProfileDir->Clone(getter_AddRefs(writeTestFile));
- if (NS_SUCCEEDED(rv)) rv = writeTestFile->Append(writeTestFileName);
-
- if (NS_SUCCEEDED(rv)) {
- bool doesExist = false;
- rv = writeTestFile->Exists(&doesExist);
- if (NS_SUCCEEDED(rv) && doesExist) rv = writeTestFile->Remove(true);
- }
-
- if (NS_SUCCEEDED(rv)) {
- rv = writeTestFile->Create(nsIFile::NORMAL_FILE_TYPE, 0666);
- (void)writeTestFile->Remove(true);
- }
-
- ProfileStatus status =
- NS_SUCCEEDED(rv) ? PROFILE_STATUS_OK : PROFILE_STATUS_OTHER_ERROR;
- if (NS_ERROR_FILE_ACCESS_DENIED == rv)
- status = PROFILE_STATUS_ACCESS_DENIED;
- else if (NS_ERROR_FILE_READ_ONLY == rv)
- status = PROFILE_STATUS_READ_ONLY;
-
- return status;
-}
-
-ProfileStatus nsToolkitProfileService::CheckProfileWriteAccess(
- nsIToolkitProfile* aProfile) {
- nsCOMPtr<nsIFile> profileDir;
- nsresult rv = aProfile->GetRootDir(getter_AddRefs(profileDir));
- if (NS_FAILED(rv)) return PROFILE_STATUS_OTHER_ERROR;
-
- return CheckProfileWriteAccess(profileDir);
-}
=====================================
toolkit/profile/nsToolkitProfileService.h
=====================================
@@ -17,14 +17,6 @@
#include "nsProfileLock.h"
#include "nsINIParser.h"
-enum ProfileStatus {
- PROFILE_STATUS_OK,
- PROFILE_STATUS_ACCESS_DENIED,
- PROFILE_STATUS_READ_ONLY,
- PROFILE_STATUS_IS_LOCKED,
- PROFILE_STATUS_OTHER_ERROR
-};
-
class nsToolkitProfile final
: public nsIToolkitProfile,
public mozilla::LinkedListElement<RefPtr<nsToolkitProfile>> {
@@ -81,13 +73,10 @@ class nsToolkitProfileService final : public nsIToolkitProfileService {
nsresult SelectStartupProfile(int* aArgc, char* aArgv[], bool aIsResetting,
nsIFile** aRootDir, nsIFile** aLocalDir,
nsIToolkitProfile** aProfile, bool* aDidCreate,
- bool* aWasDefaultSelection,
- ProfileStatus& aProfileStatus);
+ bool* aWasDefaultSelection);
nsresult CreateResetProfile(nsIToolkitProfile** aNewProfile);
nsresult ApplyResetProfile(nsIToolkitProfile* aOldProfile);
void CompleteStartup();
- static ProfileStatus CheckProfileWriteAccess(nsIToolkitProfile* aProfile);
- static ProfileStatus CheckProfileWriteAccess(nsIFile* aProfileDir);
private:
friend class nsToolkitProfile;
=====================================
toolkit/torbutton/chrome/locale/en-US/torbutton.properties deleted
=====================================
@@ -1,11 +0,0 @@
-# Copyright (c) 2022, The Tor Project, Inc.
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# Profile/startup error messages.
-# LOCALIZATION NOTE: %S is the application name.
-profileProblemTitle=%S Profile Problem
-profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
-profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
-profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
=====================================
toolkit/xre/ProfileReset.cpp
=====================================
@@ -23,8 +23,8 @@
using namespace mozilla;
-extern const XREAppData* gAppData;
-
+static const char kBrandProperties[] =
+ "chrome://branding/locale/brand.properties";
static const char kProfileProperties[] =
"chrome://mozapps/locale/profile/profileSelection.properties";
@@ -49,12 +49,21 @@ nsresult ProfileResetCleanup(nsToolkitProfileService* aService,
mozilla::components::StringBundle::Service();
if (!sbs) return NS_ERROR_FAILURE;
+ nsCOMPtr<nsIStringBundle> brandBundle;
+ Unused << sbs->CreateBundle(kBrandProperties, getter_AddRefs(brandBundle));
+ if (!brandBundle) return NS_ERROR_FAILURE;
+
nsCOMPtr<nsIStringBundle> sb;
Unused << sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
if (!sb) return NS_ERROR_FAILURE;
- NS_ConvertUTF8toUTF16 appName(gAppData->name);
- AutoTArray<nsString, 2> params = {appName, appName};
+ nsAutoString appName;
+ rv = brandBundle->GetStringFromName("brandShortName", appName);
+ if (NS_FAILED(rv)) return rv;
+
+ AutoTArray<nsString, 2> params;
+ params.AppendElement(appName);
+ params.AppendElement(appName);
nsAutoString resetBackupDirectoryName;
=====================================
toolkit/xre/nsAppRunner.cpp
=====================================
@@ -2599,91 +2599,8 @@ nsresult LaunchChild(bool aBlankCommandLine, bool aTryExec) {
return NS_ERROR_LAUNCHED_CHILD_PROCESS;
}
-static nsresult GetOverrideStringBundleForLocale(nsIStringBundleService* aSBS,
- const char* aTorbuttonURI,
- const char* aLocale,
- nsIStringBundle** aResult) {
- NS_ENSURE_ARG(aSBS);
- NS_ENSURE_ARG(aTorbuttonURI);
- NS_ENSURE_ARG(aLocale);
- NS_ENSURE_ARG(aResult);
-
- const char* kFormatStr =
- "jar:%s!/chrome/torbutton/locale/%s/torbutton.properties";
- nsPrintfCString strBundleURL(kFormatStr, aTorbuttonURI, aLocale);
- nsresult rv = aSBS->CreateBundle(strBundleURL.get(), aResult);
- NS_ENSURE_SUCCESS(rv, rv);
-
- // To ensure that we have a valid string bundle, try to retrieve a string
- // that we know exists.
- nsAutoString val;
- rv = (*aResult)->GetStringFromName("profileProblemTitle", val);
- if (!NS_SUCCEEDED(rv)) *aResult = nullptr; // No good. Discard it.
-
- return rv;
-}
-
-static void GetOverrideStringBundle(nsIStringBundleService* aSBS,
- nsIStringBundle** aResult) {
- if (!aSBS || !aResult) return;
-
- *aResult = nullptr;
-
- // Build Torbutton file URI string by starting from GREDir.
- RefPtr<nsXREDirProvider> dirProvider = nsXREDirProvider::GetSingleton();
- if (!dirProvider) return;
-
- nsCOMPtr<nsIFile> greDir = dirProvider->GetGREDir();
- if (!greDir) return;
-
- // Create file URI, extract as string, and append omni.ja relative path.
- nsCOMPtr<nsIURI> uri;
- nsAutoCString uriString;
- if (NS_FAILED(NS_NewFileURI(getter_AddRefs(uri), greDir)) ||
- NS_FAILED(uri->GetSpec(uriString))) {
- return;
- }
-
- uriString.Append("omni.ja");
-
- nsAutoCString userAgentLocale;
- if (!NS_SUCCEEDED(
- Preferences::GetCString("intl.locale.requested", userAgentLocale))) {
- return;
- }
-
- nsresult rv = GetOverrideStringBundleForLocale(
- aSBS, uriString.get(), userAgentLocale.get(), aResult);
- if (NS_FAILED(rv)) {
- // Try again using base locale, e.g., "en" vs. "en-US".
- int16_t offset = userAgentLocale.FindChar('-', 1);
- if (offset > 0) {
- nsAutoCString shortLocale(Substring(userAgentLocale, 0, offset));
- rv = GetOverrideStringBundleForLocale(aSBS, uriString.get(),
- shortLocale.get(), aResult);
- }
- }
-}
-
-static nsresult GetFormattedString(nsIStringBundle* aOverrideBundle,
- nsIStringBundle* aMainBundle,
- const char* aName,
- const nsTArray<nsString>& aParams,
- nsAString& aResult) {
- NS_ENSURE_ARG(aName);
-
- nsresult rv = NS_ERROR_FAILURE;
- if (aOverrideBundle) {
- rv = aOverrideBundle->FormatStringFromName(aName, aParams, aResult);
- }
-
- // If string was not found in override bundle, use main (browser) bundle.
- if (NS_FAILED(rv) && aMainBundle)
- rv = aMainBundle->FormatStringFromName(aName, aParams, aResult);
-
- return rv;
-}
-
+static const char kBrandProperties[] =
+ "chrome://branding/locale/brand.properties";
static const char kProfileProperties[] =
"chrome://mozapps/locale/profile/profileSelection.properties";
@@ -2753,12 +2670,20 @@ static nsresult ProfileMissingDialog(nsINativeAppSupport* aNative) {
mozilla::components::StringBundle::Service();
NS_ENSURE_TRUE(sbs, NS_ERROR_FAILURE);
+ nsCOMPtr<nsIStringBundle> brandBundle;
+ sbs->CreateBundle(kBrandProperties, getter_AddRefs(brandBundle));
+ NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
nsCOMPtr<nsIStringBundle> sb;
sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
- NS_ConvertUTF8toUTF16 appName(MOZ_APP_DISPLAYNAME);
- AutoTArray<nsString, 2> params = {appName, appName};
+ nsAutoString appName;
+ rv = brandBundle->GetStringFromName("brandShortName", appName);
+ NS_ENSURE_SUCCESS(rv, NS_ERROR_ABORT);
+
+ AutoTArray<nsString, 2> params;
+ params.AppendElement(appName);
+ params.AppendElement(appName);
// profileMissing
nsAutoString missingMessage;
@@ -2782,12 +2707,11 @@ static nsresult ProfileMissingDialog(nsINativeAppSupport* aNative) {
// If aUnlocker is NULL, it is also OK for the following arguments to be NULL:
// aProfileDir, aProfileLocalDir, aResult.
-static ReturnAbortOnError ProfileErrorDialog(nsIFile* aProfileDir,
- nsIFile* aProfileLocalDir,
- ProfileStatus aStatus,
- nsIProfileUnlocker* aUnlocker,
- nsINativeAppSupport* aNative,
- nsIProfileLock** aResult) {
+static ReturnAbortOnError ProfileLockedDialog(nsIFile* aProfileDir,
+ nsIFile* aProfileLocalDir,
+ nsIProfileUnlocker* aUnlocker,
+ nsINativeAppSupport* aNative,
+ nsIProfileLock** aResult) {
nsresult rv;
if (aProfileDir) {
@@ -2821,43 +2745,37 @@ static ReturnAbortOnError ProfileErrorDialog(nsIFile* aProfileDir,
mozilla::components::StringBundle::Service();
NS_ENSURE_TRUE(sbs, NS_ERROR_FAILURE);
+ nsCOMPtr<nsIStringBundle> brandBundle;
+ sbs->CreateBundle(kBrandProperties, getter_AddRefs(brandBundle));
+ NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
nsCOMPtr<nsIStringBundle> sb;
sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
- nsCOMPtr<nsIStringBundle> overrideSB;
- GetOverrideStringBundle(sbs, getter_AddRefs(overrideSB));
+ nsAutoString appName;
+ rv = brandBundle->GetStringFromName("brandShortName", appName);
+ NS_ENSURE_SUCCESS(rv, NS_ERROR_ABORT);
- NS_ConvertUTF8toUTF16 appName(MOZ_APP_DISPLAYNAME);
- AutoTArray<nsString, 3> params = {appName, appName, appName};
+ AutoTArray<nsString, 3> params;
+ params.AppendElement(appName);
+ params.AppendElement(appName);
+ params.AppendElement(appName);
nsAutoString killMessage;
#ifndef XP_MACOSX
- static const char kRestartUnlocker[] = "restartMessageUnlocker";
- static const char kRestartNoUnlocker[] = "restartMessageNoUnlocker2";
- static const char kReadOnly[] = "profileReadOnly";
+ rv = sb->FormatStringFromName(
+ aUnlocker ? "restartMessageUnlocker" : "restartMessageNoUnlocker2",
+ params, killMessage);
#else
- static const char kRestartUnlocker[] = "restartMessageUnlockerMac";
- static const char kRestartNoUnlocker[] = "restartMessageNoUnlockerMac";
- static const char kReadOnly[] = "profileReadOnlyMac";
-#endif
- static const char kAccessDenied[] = "profileAccessDenied";
-
- const char* errorKey = aUnlocker ? kRestartUnlocker : kRestartNoUnlocker;
- if (PROFILE_STATUS_READ_ONLY == aStatus)
- errorKey = kReadOnly;
- else if (PROFILE_STATUS_ACCESS_DENIED == aStatus)
- errorKey = kAccessDenied;
- rv = GetFormattedString(overrideSB, sb, errorKey, params, killMessage);
+ rv = sb->FormatStringFromName(
+ aUnlocker ? "restartMessageUnlockerMac" : "restartMessageNoUnlockerMac",
+ params, killMessage);
+#endif
NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
- const char* titleKey = ((PROFILE_STATUS_READ_ONLY == aStatus) ||
- (PROFILE_STATUS_ACCESS_DENIED == aStatus))
- ? "profileProblemTitle"
- : "restartTitle";
params.SetLength(1);
nsAutoString killTitle;
- rv = sb->FormatStringFromName(titleKey, params, killTitle);
+ rv = sb->FormatStringFromName("restartTitle", params, killTitle);
NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
#ifdef MOZ_BACKGROUNDTASKS
@@ -3028,24 +2946,6 @@ static ReturnAbortOnError ShowProfileManager(
return LaunchChild(false, true);
}
-#ifdef XP_MACOSX
-static ProfileStatus CheckTorBrowserDataWriteAccess() {
- // Check whether we can write to the directory that will contain
- // TorBrowser-Data.
- RefPtr<nsXREDirProvider> singleton = nsXREDirProvider::GetSingleton();
- if (!singleton) {
- return PROFILE_STATUS_OTHER_ERROR;
- }
- nsCOMPtr<nsIFile> tbDataDir;
- nsresult rv = singleton->GetTorBrowserUserDataDir(getter_AddRefs(tbDataDir));
- NS_ENSURE_SUCCESS(rv, PROFILE_STATUS_OTHER_ERROR);
- nsCOMPtr<nsIFile> tbDataDirParent;
- rv = tbDataDir->GetParent(getter_AddRefs(tbDataDirParent));
- NS_ENSURE_SUCCESS(rv, PROFILE_STATUS_OTHER_ERROR);
- return nsToolkitProfileService::CheckProfileWriteAccess(tbDataDirParent);
-}
-#endif
-
static bool gDoMigration = false;
static bool gDoProfileReset = false;
static nsCOMPtr<nsIToolkitProfile> gResetOldProfile;
@@ -3053,13 +2953,6 @@ static nsCOMPtr<nsIToolkitProfile> gResetOldProfile;
static nsresult LockProfile(nsINativeAppSupport* aNative, nsIFile* aRootDir,
nsIFile* aLocalDir, nsIToolkitProfile* aProfile,
nsIProfileLock** aResult) {
- ProfileStatus status =
- (aProfile ? nsToolkitProfileService::CheckProfileWriteAccess(aProfile)
- : nsToolkitProfileService::CheckProfileWriteAccess(aRootDir));
- if (PROFILE_STATUS_OK != status)
- return ProfileErrorDialog(aRootDir, aLocalDir, status, nullptr, aNative,
- aResult);
-
// If you close Firefox and very quickly reopen it, the old Firefox may
// still be closing down. Rather than immediately showing the
// "Firefox is running but is not responding" message, we spend a few
@@ -3086,8 +2979,7 @@ static nsresult LockProfile(nsINativeAppSupport* aNative, nsIFile* aRootDir,
} while (TimeStamp::Now() - start <
TimeDuration::FromSeconds(kLockRetrySeconds));
- return ProfileErrorDialog(aRootDir, aLocalDir, PROFILE_STATUS_IS_LOCKED,
- unlocker, aNative, aResult);
+ return ProfileLockedDialog(aRootDir, aLocalDir, unlocker, aNative, aResult);
}
// Pick a profile. We need to end up with a profile root dir, local dir and
@@ -3102,8 +2994,7 @@ static nsresult LockProfile(nsINativeAppSupport* aNative, nsIFile* aRootDir,
static nsresult SelectProfile(nsToolkitProfileService* aProfileSvc,
nsINativeAppSupport* aNative, nsIFile** aRootDir,
nsIFile** aLocalDir, nsIToolkitProfile** aProfile,
- bool* aWasDefaultSelection,
- nsIProfileLock** aResult) {
+ bool* aWasDefaultSelection) {
StartupTimeline::Record(StartupTimeline::SELECT_PROFILE);
nsresult rv;
@@ -3141,14 +3032,9 @@ static nsresult SelectProfile(nsToolkitProfileService* aProfileSvc,
// Ask the profile manager to select the profile directories to use.
bool didCreate = false;
- ProfileStatus profileStatus = PROFILE_STATUS_OK;
- rv = aProfileSvc->SelectStartupProfile(
- &gArgc, gArgv, gDoProfileReset, aRootDir, aLocalDir, aProfile, &didCreate,
- aWasDefaultSelection, profileStatus);
- if (PROFILE_STATUS_OK != profileStatus) {
- return ProfileErrorDialog(*aRootDir, *aLocalDir, profileStatus, nullptr,
- aNative, aResult);
- }
+ rv = aProfileSvc->SelectStartupProfile(&gArgc, gArgv, gDoProfileReset,
+ aRootDir, aLocalDir, aProfile,
+ &didCreate, aWasDefaultSelection);
if (rv == NS_ERROR_SHOW_PROFILE_MANAGER) {
return ShowProfileManager(aProfileSvc, aNative);
@@ -5062,19 +4948,6 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
mProfileSvc = NS_GetToolkitProfileService();
if (!mProfileSvc) {
-#ifdef XP_MACOSX
- // NS_NewToolkitProfileService() returns a generic NS_ERROR_FAILURE error
- // if creation of the TorBrowser-Data directory fails due to access denied
- // or because of a read-only disk volume. Do an extra check here to detect
- // these errors so we can display an informative error message.
- ProfileStatus status = CheckTorBrowserDataWriteAccess();
- if ((PROFILE_STATUS_ACCESS_DENIED == status) ||
- (PROFILE_STATUS_READ_ONLY == status)) {
- ProfileErrorDialog(nullptr, nullptr, status, nullptr, mNativeApp,
- nullptr);
- return 1;
- }
-#endif
// We failed to choose or create profile - notify user and quit
ProfileMissingDialog(mNativeApp);
return 1;
@@ -5084,7 +4957,7 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
nsCOMPtr<nsIToolkitProfile> profile;
rv = SelectProfile(mProfileSvc, mNativeApp, getter_AddRefs(mProfD),
getter_AddRefs(mProfLD), getter_AddRefs(profile),
- &wasDefaultSelection, getter_AddRefs(mProfileLock));
+ &wasDefaultSelection);
if (rv == NS_ERROR_LAUNCHED_CHILD_PROCESS || rv == NS_ERROR_ABORT) {
*aExitFlag = true;
return 0;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/464b5a9ba3bd287ecd18c921eb87ba57d7c2eac3...50cede2acdc7be01648dcd0e560a7726e3e3d140
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/464b5a9ba3bd287ecd18c921eb87ba57d7c2eac3...50cede2acdc7be01648dcd0e560a7726e3e3d140
You're receiving this email because of your account on gitlab.torproject.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tbb-commits/attachments/20241029/be2b1183/attachment-0001.htm>
More information about the tbb-commits
mailing list