From 0adc4aecec45e195b0f6cbcdb1625839846482bc Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Tue, 24 Sep 2019 12:37:44 +0200 Subject: Added fix for rhbz#1754460 --- firefox.spec | 7 ++- rhbz-1754460.patch | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 rhbz-1754460.patch diff --git a/firefox.spec b/firefox.spec index abf3618..b7d4337 100644 --- a/firefox.spec +++ b/firefox.spec @@ -94,7 +94,7 @@ ExcludeArch: ppc64le Summary: Mozilla Firefox Web browser Name: firefox Version: 69.0.1 -Release: 3%{?pre_tag}%{?dist} +Release: 4%{?pre_tag}%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz @@ -141,6 +141,7 @@ Patch224: mozilla-1170092.patch #ARM run-time patch Patch226: rhbz-1354671.patch Patch227: firefox-locale-debug.patch +Patch228: rhbz-1754460.patch # Upstream patches Patch402: mozilla-1196777.patch @@ -366,6 +367,7 @@ This package contains results of tests executed during build. %patch226 -p1 -b .1354671 %endif %patch227 -p1 -b .locale-debug +%patch228 -p1 -b .rhbz-1754460 %patch402 -p1 -b .1196777 #%patch413 -p1 -b .1353817 @@ -981,6 +983,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Tue Sep 24 2019 Martin Stransky - 69.0.1-4 +- Added fix for rhbz#1754460 + * Thu Sep 19 2019 Martin Stransky - 69.0.1-3 - Updated cache-missing strategy for Wayland image cache. diff --git a/rhbz-1754460.patch b/rhbz-1754460.patch new file mode 100644 index 0000000..cdfc236 --- /dev/null +++ b/rhbz-1754460.patch @@ -0,0 +1,127 @@ +diff --git a/toolkit/components/enterprisepolicies/EnterprisePolicies.js b/toolkit/components/enterprisepolicies/EnterprisePolicies.js +--- a/toolkit/components/enterprisepolicies/EnterprisePolicies.js ++++ b/toolkit/components/enterprisepolicies/EnterprisePolicies.js +@@ -447,21 +447,28 @@ class JSONPoliciesProvider { + + get failed() { + return this._failed; + } + + _getConfigurationFile() { + let configFile = null; + try { +- configFile = Services.dirsvc.get("XREAppDist", Ci.nsIFile); ++ configFile = Services.dirsvc.get("XREAppDistUser", Ci.nsIFile); + configFile.append(POLICIES_FILENAME); +- } catch (ex) { +- // Getting the correct directory will fail in xpcshell tests. This should +- // be handled the same way as if the configFile simply does not exist. ++ } catch (ex) {} ++ ++ if (!configFile) { ++ try { ++ configFile = Services.dirsvc.get("XREAppDist", Ci.nsIFile); ++ configFile.append(POLICIES_FILENAME); ++ } catch (ex) { ++ // Getting the correct directory will fail in xpcshell tests. This should ++ // be handled the same way as if the configFile simply does not exist. ++ } + } + + let alternatePath = Services.prefs.getStringPref(PREF_ALTERNATE_PATH, ""); + + // Check if we are in automation *before* we use the synchronous + // nsIFile.exists() function or allow the config file to be overriden + // An alternate policy path can also be used in Nightly builds (for + // testing purposes), but the Background Update Agent will be unable to +diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp +--- a/toolkit/xre/nsXREDirProvider.cpp ++++ b/toolkit/xre/nsXREDirProvider.cpp +@@ -40,16 +40,17 @@ + #include "mozilla/dom/ScriptSettings.h" + + #include "mozilla/AutoRestore.h" + #include "mozilla/Components.h" + #include "mozilla/Services.h" + #include "mozilla/Omnijar.h" + #include "mozilla/Preferences.h" + #include "mozilla/Telemetry.h" ++#include "nsPrintfCString.h" + + #include + + #ifdef XP_WIN + # include + # include + # include "WinUtils.h" + #endif +@@ -98,17 +99,17 @@ static already_AddRefed CreateP + nsXREDirProvider* gDirServiceProvider = nullptr; + nsIFile* gDataDirHomeLocal = nullptr; + nsIFile* gDataDirHome = nullptr; + nsCOMPtr gDataDirProfileLocal = nullptr; + nsCOMPtr gDataDirProfile = nullptr; + + // These are required to allow nsXREDirProvider to be usable in xpcshell tests. + // where gAppData is null. +-#if defined(XP_MACOSX) || defined(XP_WIN) ++#if defined(XP_MACOSX) || defined(XP_WIN) || defined(XP_UNIX) + static const char* GetAppName() { + if (gAppData) { + return gAppData->name; + } + return nullptr; + } + #endif + +@@ -456,16 +457,23 @@ nsXREDirProvider::GetFile(const char* aP + else if (!strcmp(aProperty, XRE_USER_SYS_EXTENSION_DIR)) { + #ifdef ENABLE_SYSTEM_EXTENSION_DIRS + return GetSysUserExtensionsDirectory(aFile); + #else + return NS_ERROR_FAILURE; + #endif + } else if (!strcmp(aProperty, XRE_USER_SYS_EXTENSION_DEV_DIR)) { + return GetSysUserExtensionsDevDirectory(aFile); ++ } else if (!strcmp(aProperty, XRE_APP_DISTRIBUTION_USER_DIR)) { ++# ifndef MOZ_WIDGET_GTK ++ return NS_ERROR_FAILURE; ++# endif ++ return NS_NewNativeLocalFile( ++ nsPrintfCString("/run/user/%d/%s/", getuid(), GetAppName()), ++ false, aFile); + } else if (!strcmp(aProperty, XRE_APP_DISTRIBUTION_DIR)) { + bool persistent = false; + rv = GetFile(NS_GRE_DIR, &persistent, getter_AddRefs(file)); + if (NS_SUCCEEDED(rv)) + rv = file->AppendNative(NS_LITERAL_CSTRING("distribution")); + } else if (!strcmp(aProperty, XRE_APP_FEATURES_DIR)) { + rv = GetAppDir()->Clone(getter_AddRefs(file)); + if (NS_SUCCEEDED(rv)) +diff --git a/xpcom/build/nsXULAppAPI.h b/xpcom/build/nsXULAppAPI.h +--- a/xpcom/build/nsXULAppAPI.h ++++ b/xpcom/build/nsXULAppAPI.h +@@ -137,16 +137,23 @@ + + /** + * A directory service key which specifies the location for app dir add-ons. + * Should be a synonym for XCurProcD everywhere except in tests. + */ + #define XRE_ADDON_APP_DIR "XREAddonAppDir" + + /** ++ * A directory service key which specifies the distribution specific files for ++ * the application unique for each user. ++ * It's located at /run/user/$PID// ++ */ ++#define XRE_APP_DISTRIBUTION_USER_DIR "XREAppDistUser" ++ ++/** + * A directory service key which provides the update directory. Callers should + * fall back to appDir. + * Windows: If vendor name exists: + * ProgramData\\updates\ + * + * + * If vendor name doesn't exist, but product name exists: + * ProgramData\\updates\ -- cgit