diff --git a/toolkit/components/extensions/NativeManifests.sys.mjs b/toolkit/components/extensions/NativeManifests.sys.mjs index 59313e821f..f3a7caa057 100644 --- a/toolkit/components/extensions/NativeManifests.sys.mjs +++ b/toolkit/components/extensions/NativeManifests.sys.mjs @@ -40,6 +40,8 @@ let dirs = [ Services.dirsvc.get("XREUserNativeManifests", Ci.nsIFile).path, Services.dirsvc.get("XRESysNativeManifests", Ci.nsIFile).path, + Services.dirsvc.get("XREMozUserNativeManifests", Ci.nsIFile).path, + Services.dirsvc.get("XREMozSysNativeManifests", Ci.nsIFile).path, ]; this._lookup = (type, name, context) => this._tryPaths(type, name, dirs, context); diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp index 9c94cb8808..af2dbdbf3f 100644 --- a/toolkit/xre/nsXREDirProvider.cpp +++ b/toolkit/xre/nsXREDirProvider.cpp @@ -278,23 +278,25 @@ * On Linux this is /usr/{lib,lib64}/mozilla * (for 32- and 64-bit systems respsectively) */ -static nsresult GetSystemParentDirectory(nsIFile** aFile) { +static nsresult GetSystemParentDirectory(nsIFile** aFile, + nsCString aName = "LibreWolf"_ns) { nsresult rv; nsCOMPtr localDir; # if defined(XP_MACOSX) rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType, getter_AddRefs(localDir)); if (NS_SUCCEEDED(rv)) { - rv = localDir->AppendNative("Mozilla"_ns); + rv = localDir->AppendNative(aName); } # else - constexpr auto dirname = + ToLowerCase(aName); + nsCString dirname = # ifdef HAVE_USR_LIB64_DIR - "/usr/lib64/mozilla"_ns + "/usr/lib64/"_ns + aName # elif defined(__OpenBSD__) || defined(__FreeBSD__) - "/usr/local/lib/mozilla"_ns + "/usr/local/lib/"_ns + aName # else - "/usr/lib/mozilla"_ns + "/usr/lib/"_ns + aName # endif ; rv = NS_NewNativeLocalFile(dirname, getter_AddRefs(localDir)); @@ -362,10 +364,20 @@ #if defined(XP_UNIX) || defined(XP_MACOSX) else if (!strcmp(aProperty, XRE_SYS_NATIVE_MANIFESTS)) { rv = ::GetSystemParentDirectory(getter_AddRefs(file)); + } else if (!strcmp(aProperty, XRE_MOZ_SYS_NATIVE_MANIFESTS)) { + rv = ::GetSystemParentDirectory(getter_AddRefs(file), "Mozilla"_ns); } else if (!strcmp(aProperty, XRE_USER_NATIVE_MANIFESTS)) { rv = GetUserDataDirectoryHome(getter_AddRefs(file), false); NS_ENSURE_SUCCESS(rv, rv); # if defined(XP_MACOSX) + rv = file->AppendNative("LibreWolf"_ns); +# else // defined(XP_MACOSX) + rv = file->AppendNative(".librewolf"_ns); +# endif // defined(XP_MACOSX) + } else if (!strcmp(aProperty, XRE_MOZ_USER_NATIVE_MANIFESTS)) { + rv = GetUserDataDirectoryHome(getter_AddRefs(file), false); + NS_ENSURE_SUCCESS(rv, rv); +# if defined(XP_MACOSX) rv = file->AppendNative("Mozilla"_ns); # else // defined(XP_MACOSX) rv = file->AppendNative(".mozilla"_ns); @@ -398,9 +410,10 @@ else if (!strcmp(aProperty, XRE_SYS_SHARE_EXTENSION_PARENT_DIR)) { # ifdef ENABLE_SYSTEM_EXTENSION_DIRS # if defined(__OpenBSD__) || defined(__FreeBSD__) - static const char* const sysLExtDir = "/usr/local/share/mozilla/extensions"; + static const char* const sysLExtDir = + "/usr/local/share/librewolf/extensions"; # else - static const char* const sysLExtDir = "/usr/share/mozilla/extensions"; + static const char* const sysLExtDir = "/usr/share/librewolf/extensions"; # endif rv = NS_NewNativeLocalFile(nsDependentCString(sysLExtDir), getter_AddRefs(file)); @@ -926,13 +939,7 @@ } appDirPath = Substring(appDirPath, 1, dotIndex - 1); - bool hasVendor = GetAppVendor() && strlen(GetAppVendor()) != 0; - if (hasVendor || GetAppName()) { - if (NS_FAILED(localDir->AppendNative( - nsDependentCString(hasVendor ? GetAppVendor() : GetAppName())))) { - return NS_ERROR_FAILURE; - } - } else if (NS_FAILED(localDir->AppendNative("Mozilla"_ns))) { + if (NS_FAILED(localDir->AppendNative("LibreWolf"_ns))) { return NS_ERROR_FAILURE; } @@ -1192,7 +1199,7 @@ #if defined(XP_MACOSX) || defined(XP_WIN) - static const char* const sXR = "Mozilla"; + static const char* const sXR = "LibreWolf"; rv = aFile->AppendNative(nsDependentCString(sXR)); NS_ENSURE_SUCCESS(rv, rv); @@ -1202,7 +1209,7 @@ #elif defined(XP_UNIX) - static const char* const sXR = ".mozilla"; + static const char* const sXR = ".librewolf"; rv = aFile->AppendNative(nsDependentCString(sXR)); NS_ENSURE_SUCCESS(rv, rv); @@ -1253,10 +1260,6 @@ if (!profile.IsEmpty()) { rv = AppendProfileString(aFile, profile.get()); } else { - if (!vendor.IsEmpty()) { - rv = aFile->AppendNative(vendor); - NS_ENSURE_SUCCESS(rv, rv); - } rv = aFile->AppendNative(appName); } NS_ENSURE_SUCCESS(rv, rv); @@ -1288,16 +1291,6 @@ rv = AppendProfileString(aFile, folder.BeginReading()); } else { - if (!vendor.IsEmpty()) { - folder.Append(vendor); - ToLowerCase(folder); - - rv = aFile->AppendNative(folder); - NS_ENSURE_SUCCESS(rv, rv); - - folder.Truncate(); - } - // This can be the case in tests. if (!appName.IsEmpty()) { folder.Append(appName); diff --git a/xpcom/build/nsXULAppAPI.h b/xpcom/build/nsXULAppAPI.h index 28a2a68c63..b0917fb9b8 100644 --- a/xpcom/build/nsXULAppAPI.h +++ b/xpcom/build/nsXULAppAPI.h @@ -116,6 +116,8 @@ */ # define XRE_SYS_NATIVE_MANIFESTS "XRESysNativeManifests" # define XRE_USER_NATIVE_MANIFESTS "XREUserNativeManifests" +# define XRE_MOZ_SYS_NATIVE_MANIFESTS "XREMozSysNativeManifests" +# define XRE_MOZ_USER_NATIVE_MANIFESTS "XREMozUserNativeManifests" #endif /**