94 lines
3.5 KiB
Diff
94 lines
3.5 KiB
Diff
diff --git a/extensions/pref/autoconfig/test/unit/test_autoconfig_custom_path.js b/extensions/pref/autoconfig/test/unit/test_autoconfig_custom_path.js
|
|
--- a/extensions/pref/autoconfig/test/unit/test_autoconfig_custom_path.js
|
|
+++ b/extensions/pref/autoconfig/test/unit/test_autoconfig_custom_path.js
|
|
@@ -9,10 +9,13 @@
|
|
let testDirName = do_get_cwd().clone();
|
|
Services.env.set("MOZ_SYSTEM_CONFIG_DIR", testDirName.path);
|
|
|
|
updateAppInfo();
|
|
|
|
+ try {
|
|
+ Services.dirsvc.undefine("SysConfD");
|
|
+ } catch (e) {}
|
|
let customSysConfD = Services.dirsvc.get("SysConfD", Ci.nsIFile);
|
|
let parent = customSysConfD.parent;
|
|
let child = customSysConfD.leafName;
|
|
notEqual("/etc", parent.path, "SysConfD is not in /etc");
|
|
equal("xpcshell", child, "SysConfD is xpcshell");
|
|
diff --git a/extensions/pref/autoconfig/test/unit/test_autoconfig_default_path.js b/extensions/pref/autoconfig/test/unit/test_autoconfig_default_path.js
|
|
--- a/extensions/pref/autoconfig/test/unit/test_autoconfig_default_path.js
|
|
+++ b/extensions/pref/autoconfig/test/unit/test_autoconfig_default_path.js
|
|
@@ -6,8 +6,11 @@
|
|
);
|
|
|
|
function run_test() {
|
|
updateAppInfo();
|
|
|
|
+ try {
|
|
+ Services.dirsvc.undefine("SysConfD");
|
|
+ } catch (e) {}
|
|
let defaultSysConfD = Services.dirsvc.get("SysConfD", Ci.nsIFile);
|
|
equal("/etc/xpcshell", defaultSysConfD.path, "SysConfD is in /etc");
|
|
}
|
|
diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
|
--- a/modules/libpref/Preferences.cpp
|
|
+++ b/modules/libpref/Preferences.cpp
|
|
@@ -4917,27 +4917,10 @@
|
|
ArrayLength(specialFiles));
|
|
if (NS_FAILED(rv)) {
|
|
NS_WARNING("Error parsing application default preferences.");
|
|
}
|
|
|
|
-#if defined(MOZ_WIDGET_GTK)
|
|
- // Under Flatpak/Snap package, load /etc/firefox/defaults/pref/*.js.
|
|
- if (mozilla::widget::IsRunningUnderFlatpakOrSnap()) {
|
|
- nsCOMPtr<nsIFile> defaultSnapPrefDir;
|
|
- rv = NS_GetSpecialDirectory(NS_OS_SYSTEM_CONFIG_DIR,
|
|
- getter_AddRefs(defaultSnapPrefDir));
|
|
- NS_ENSURE_SUCCESS(rv, rv);
|
|
- defaultSnapPrefDir->AppendNative("defaults"_ns);
|
|
- defaultSnapPrefDir->AppendNative("pref"_ns);
|
|
-
|
|
- rv = pref_LoadPrefsInDir(defaultSnapPrefDir, nullptr, 0);
|
|
- if (NS_FAILED(rv)) {
|
|
- NS_WARNING("Error parsing application default preferences under Snap.");
|
|
- }
|
|
- }
|
|
-#endif
|
|
-
|
|
// Load jar:$app/omni.jar!/defaults/preferences/*.js
|
|
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
|
|
RefPtr<nsZipArchive> appJarReader = Omnijar::GetReader(Omnijar::APP);
|
|
|
|
// GetReader(Omnijar::APP) returns null when `$app == $gre`, in
|
|
@@ -5006,10 +4989,28 @@
|
|
// Do we care if a file provided by this process fails to load?
|
|
pref_LoadPrefsInDir(path, nullptr, 0);
|
|
}
|
|
}
|
|
|
|
+#if defined(MOZ_WIDGET_GTK)
|
|
+ // To ensure the system-wide preferences are not overwritten by
|
|
+ // firefox/browser/defauts/preferences/*.js we need to load
|
|
+ // the /etc/firefox/defaults/pref/*.js settings as last.
|
|
+ // Under Flatpak, the NS_OS_SYSTEM_CONFIG_DIR points to /app/etc/firefox
|
|
+ nsCOMPtr<nsIFile> defaultSystemPrefDir;
|
|
+ rv = NS_GetSpecialDirectory(NS_OS_SYSTEM_CONFIG_DIR,
|
|
+ getter_AddRefs(defaultSystemPrefDir));
|
|
+ NS_ENSURE_SUCCESS(rv, rv);
|
|
+ defaultSystemPrefDir->AppendNative("defaults"_ns);
|
|
+ defaultSystemPrefDir->AppendNative("pref"_ns);
|
|
+
|
|
+ rv = pref_LoadPrefsInDir(defaultSystemPrefDir, nullptr, 0);
|
|
+ if (NS_FAILED(rv)) {
|
|
+ NS_WARNING("Error parsing application default preferences.");
|
|
+ }
|
|
+#endif
|
|
+
|
|
if (XRE_IsParentProcess()) {
|
|
SetupTelemetryPref();
|
|
}
|
|
|
|
if (aIsStartup) {
|
|
|