From 2008d15ed812c9c85b829d7d61656efa0047cc0c Mon Sep 17 00:00:00 2001 From: Jan Horak Date: Fri, 3 Jan 2020 20:20:59 +0100 Subject: [PATCH] Update to 72.0 --- .gitignore | 2 + D53011-remote-content-disappear-fix.diff | 98 ------------ D53965-dropdown-missing-on-multimonitor.diff | 97 ------------ build-aarch64-skia.patch | 41 +++-- firefox-wayland-cache-missing.patch | 21 --- firefox.spec | 24 ++- mozilla-1583466.patch | 156 ------------------- mozilla-1593408.patch | 76 --------- sources | 4 +- 9 files changed, 33 insertions(+), 486 deletions(-) delete mode 100644 D53011-remote-content-disappear-fix.diff delete mode 100644 D53965-dropdown-missing-on-multimonitor.diff delete mode 100644 firefox-wayland-cache-missing.patch delete mode 100644 mozilla-1583466.patch delete mode 100644 mozilla-1593408.patch diff --git a/.gitignore b/.gitignore index bf5cd1e..b8062ca 100644 --- a/.gitignore +++ b/.gitignore @@ -374,3 +374,5 @@ firefox-3.6.4.source.tar.bz2 /firefox-71.0.source.tar.xz /firefox-langpacks-71.0-20191126.tar.xz /firefox-langpacks-71.0-20191202.tar.xz +/firefox-72.0.source.tar.xz +/firefox-langpacks-72.0-20200103.tar.xz diff --git a/D53011-remote-content-disappear-fix.diff b/D53011-remote-content-disappear-fix.diff deleted file mode 100644 index f7c9f38..0000000 --- a/D53011-remote-content-disappear-fix.diff +++ /dev/null @@ -1,98 +0,0 @@ -diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h ---- a/widget/gtk/nsWindow.h -+++ b/widget/gtk/nsWindow.h -@@ -401,6 +401,8 @@ - #ifdef MOZ_WAYLAND - virtual nsresult GetScreenRect(LayoutDeviceIntRect* aRect) override; - #endif -+ bool IsRemoteContent() { return HasRemoteContent(); } -+ static void HideWaylandOpenedPopups(); - - protected: - virtual ~nsWindow(); -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -1165,6 +1165,14 @@ - } - } - -+void nsWindow::HideWaylandOpenedPopups() { -+ while (gVisibleWaylandPopupWindows) { -+ nsWindow* window = -+ static_cast(gVisibleWaylandPopupWindows->data); -+ window->HideWaylandWindow(); -+ } -+} -+ - // Hide popup nsWindows which are no longer in the nsXULPopupManager widget - // chain list. - void nsWindow::CleanupWaylandPopups() { -@@ -1218,7 +1226,10 @@ - // popup needs to have an unique parent. - GtkWidget* nsWindow::ConfigureWaylandPopupWindows() { - MOZ_ASSERT(this->mWindowType == eWindowType_popup); -- LOG(("nsWindow::ConfigureWaylandPopupWindows [%p]\n", (void*)this)); -+ LOG( -+ ("nsWindow::ConfigureWaylandPopupWindows [%p], frame %p hasRemoteContent " -+ "%d\n", -+ (void*)this, this->GetFrame(), this->HasRemoteContent())); - #if DEBUG - if (this->GetFrame() && this->GetFrame()->GetContent()->GetID()) { - nsCString nodeId; -@@ -1245,14 +1256,14 @@ - // gVisibleWaylandPopupWindows which were not yet been hidden. - CleanupWaylandPopups(); - // Since the popups are shown by unknown order it can happen that child -- // popup is shown before parent popup. The -+ // popup is shown before parent popup. - // We look for the current window parent in nsXULPopupManager since it - // always has correct popup hierarchy while gVisibleWaylandPopupWindows may - // not. - nsXULPopupManager* pm = nsXULPopupManager::GetInstance(); - AutoTArray widgetChain; - pm->GetSubmenuWidgetChain(&widgetChain); -- for (unsigned long i = 0; i < widgetChain.Length(); i++) { -+ for (unsigned long i = 0; i < widgetChain.Length() - 1; i++) { - unsigned long parentIndex = i + 1; - if (widgetChain.Length() > parentIndex && widgetChain[i] == this) { - nsWindow* parentWindow = -@@ -1264,6 +1275,29 @@ - } - } - } else { -+ // Panels usually ends there -+ if (gVisibleWaylandPopupWindows && HasRemoteContent()) { -+ // If the new panel is remote content, we need to close all other popups -+ // before to keep the correct hierarchy because the remote content popup -+ // can replace the overflow-widget panel. -+ HideWaylandOpenedPopups(); -+ } else if (gVisibleWaylandPopupWindows) { -+ // If there is any remote content panel currently opened, close all -+ // opened popups to keep the correct hierarchy. -+ GList* popupList = gVisibleWaylandPopupWindows; -+ while (popupList) { -+ nsWindow* waylandWnd = static_cast(popupList->data); -+ LOG((" Checking [%p] IsRemoteContent %d\n", popupList->data, -+ waylandWnd->IsRemoteContent())); -+ if (waylandWnd->IsRemoteContent()) { -+ // close all popups including remote content before showing our panel -+ // Most likely returning from addon panel to overflow-widget. -+ HideWaylandOpenedPopups(); -+ break; -+ } -+ popupList = popupList->next; -+ } -+ } - // For popups in panels use the last opened popup window as parent, - // panels are not stored in nsXULPopupManager. - if (gVisibleWaylandPopupWindows) { -@@ -4380,6 +4414,7 @@ - void nsWindow::HideWaylandWindow() { - #ifdef MOZ_WAYLAND - if (mWindowType == eWindowType_popup) { -+ LOG(("nsWindow::HideWaylandWindow: popup [%p]\n", this)); - GList* foundWindow = g_list_find(gVisibleWaylandPopupWindows, this); - if (foundWindow) { - gVisibleWaylandPopupWindows = - diff --git a/D53965-dropdown-missing-on-multimonitor.diff b/D53965-dropdown-missing-on-multimonitor.diff deleted file mode 100644 index d974e74..0000000 --- a/D53965-dropdown-missing-on-multimonitor.diff +++ /dev/null @@ -1,97 +0,0 @@ -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -1295,13 +1295,12 @@ - GdkWindow* window, const GdkRectangle* flipped_rect, - const GdkRectangle* final_rect, gboolean flipped_x, gboolean flipped_y, - void* aWindow) { -- LOG(("%s [%p] flipped_x %d flipped_y %d\n", __FUNCTION__, aWindow, flipped_x, -- flipped_y)); -- -- LOG(("%s [%p] flipped %d %d w:%d h:%d\n", __FUNCTION__, aWindow, -- flipped_rect->x, flipped_rect->y, flipped_rect->width, -- flipped_rect->height)); -- LOG(("%s [%p] final %d %d w:%d h:%d\n", __FUNCTION__, aWindow, final_rect->x, -+ LOG(("NativeMoveResizeWaylandPopupCallback [%p] flipped_x %d flipped_y %d\n", -+ aWindow, flipped_x, flipped_y)); -+ -+ LOG((" flipped_rect x: %d y: %d width: %d height: %d\n", flipped_rect->x, -+ flipped_rect->y, flipped_rect->width, flipped_rect->height)); -+ LOG((" final_rect x: %d y: %d width: %d height: %d\n", final_rect->x, - final_rect->y, final_rect->width, final_rect->height)); - } - #endif -@@ -1312,12 +1311,13 @@ - static auto sGdkWindowMoveToRect = (void (*)( - GdkWindow*, const GdkRectangle*, GdkGravity, GdkGravity, GdkAnchorHints, - gint, gint))dlsym(RTLD_DEFAULT, "gdk_window_move_to_rect"); -+ LOG(("nsWindow::NativeMoveResizeWaylandPopup [%p]\n", (void*)this)); - - // Compositor may be confused by windows with width/height = 0 - // and positioning such windows leads to Bug 1555866. - if (!AreBoundsSane()) { -- LOG(("nsWindow::NativeMoveResizeWaylandPopup [%p] Bounds are not sane\n", -- (void*)this)); -+ LOG((" Bounds are not sane (width: %d height: %d)\n", mBounds.width, -+ mBounds.height)); - return; - } - -@@ -1331,15 +1331,14 @@ - // - gdk_window_move_to_rect() is not available - // - the widget doesn't have a valid GdkWindow - if (!sGdkWindowMoveToRect || !gdkWindow) { -- LOG(("nsWindow::NativeMoveResizeWaylandPopup [%p] use gtk_window_move()\n", -- (void*)this)); -+ LOG((" use gtk_window_move(%d, %d)\n", aPosition->x, aPosition->y)); - gtk_window_move(GTK_WINDOW(mShell), aPosition->x, aPosition->y); - return; - } - - GtkWidget* parentWindow = ConfigureWaylandPopupWindows(); -- LOG(("nsWindow::NativeMoveResizeWaylandPopup [%p] Set popup parent %p\n", -- (void*)this, parentWindow)); -+ LOG(("nsWindow::NativeMoveResizeWaylandPopup: Set popup parent %p\n", -+ parentWindow)); - - int x_parent, y_parent; - gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(parentWindow)), -@@ -1351,12 +1350,6 @@ - rect.height = aSize->height; - } - -- LOG(("%s [%p] request position %d,%d\n", __FUNCTION__, (void*)this, -- aPosition->x, aPosition->y)); -- if (aSize) { -- LOG((" request size %d,%d\n", aSize->width, aSize->height)); -- } -- LOG((" request result %d %d\n", rect.x, rect.y)); - #ifdef DEBUG - if (!g_signal_handler_find( - gdkWindow, G_SIGNAL_MATCH_FUNC, 0, 0, nullptr, -@@ -1389,10 +1382,8 @@ - HideWaylandWindow(); - } - -- LOG( -- ("nsWindow::NativeMoveResizeWaylandPopup [%p]: requested rect: x%d y%d " -- "w%d h%d\n", -- this, rect.x, rect.y, rect.width, rect.height)); -+ LOG((" requested rect: x: %d y: %d width: %d height: %d\n", rect.x, rect.y, -+ rect.width, rect.height)); - if (aSize) { - LOG((" aSize: x%d y%d w%d h%d\n", aSize->x, aSize->y, aSize->width, - aSize->height)); -@@ -7348,8 +7339,9 @@ - if (monitor) { - GdkRectangle workArea; - s_gdk_monitor_get_workarea(monitor, &workArea); -- aRect->x = workArea.x; -- aRect->y = workArea.y; -+ // The monitor offset won't help us in Wayland, because we can't get the -+ // absolute position of our window. -+ aRect->x = aRect->y = 0; - aRect->width = workArea.width; - aRect->height = workArea.height; - LOG((" workarea for [%p], monitor %p: x%d y%d w%d h%d\n", this, monitor, - diff --git a/build-aarch64-skia.patch b/build-aarch64-skia.patch index a00ee70..a63e3e8 100644 --- a/build-aarch64-skia.patch +++ b/build-aarch64-skia.patch @@ -1,6 +1,6 @@ -diff -up firefox-68.0/gfx/skia/skia/include/private/SkHalf.h.old firefox-68.0/gfx/skia/skia/include/private/SkHalf.h ---- firefox-68.0/gfx/skia/skia/include/private/SkHalf.h.old 2019-07-11 12:33:40.471936951 +0200 -+++ firefox-68.0/gfx/skia/skia/include/private/SkHalf.h 2019-07-11 12:33:50.527913736 +0200 +diff -up firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia firefox-72.0/gfx/skia/skia/include/private/SkHalf.h +--- firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia 2020-01-02 22:33:02.000000000 +0100 ++++ firefox-72.0/gfx/skia/skia/include/private/SkHalf.h 2020-01-03 09:00:37.537296105 +0100 @@ -40,7 +40,7 @@ static inline Sk4h SkFloatToHalf_finite_ static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) { @@ -19,28 +19,27 @@ diff -up firefox-68.0/gfx/skia/skia/include/private/SkHalf.h.old firefox-68.0/gf float32x4_t vec = fs.fVec; asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec) : [vec] "+w" (vec)); // +w: read-write NEON register - -diff -up firefox-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.old firefox-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h ---- firefox-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.old 2019-07-11 12:39:08.694166900 +0200 -+++ firefox-68.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2019-07-11 12:39:21.572136328 +0200 -@@ -830,7 +830,7 @@ SI F from_half(U16 h) { +diff -up firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h +--- firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 ++++ firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2020-01-03 10:11:41.259219508 +0100 +@@ -1087,7 +1087,7 @@ SI F from_half(U16 h) { } SI U16 to_half(F f) { --#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. -+#if 0 // defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. +-#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ ++#if 0 //defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ + && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. return vcvt_f16_f32(f); - #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) -diff -up firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.old firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h ---- firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.old 2019-07-11 12:38:45.285222428 +0200 -+++ firefox-68.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2019-07-11 12:38:57.414193679 +0200 -@@ -163,7 +163,7 @@ SI F F_from_Half(U16 half) { - __attribute__((no_sanitize("unsigned-integer-overflow"))) - #endif +diff -up firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h +--- firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100 ++++ firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2020-01-03 10:11:53.513250979 +0100 +@@ -183,8 +183,6 @@ SI F F_from_Half(U16 half) { SI U16 Half_from_F(F f) { --#if defined(USING_NEON_F16C) -+#if 0 // defined(USING_NEON_F16C) - return (U16)vcvt_f16_f32(f); - #elif defined(__AVX512F__) + #if defined(USING_NEON_FP16) + return bit_pun(f); +-#elif defined(USING_NEON_F16C) +- return (U16)vcvt_f16_f32(f); + #elif defined(USING_AVX512F) return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION ); + #elif defined(USING_AVX_F16C) diff --git a/firefox-wayland-cache-missing.patch b/firefox-wayland-cache-missing.patch deleted file mode 100644 index 8d665b5..0000000 --- a/firefox-wayland-cache-missing.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up firefox-69.0.1/widget/gtk/WindowSurfaceWayland.cpp.old firefox-69.0.1/widget/gtk/WindowSurfaceWayland.cpp ---- firefox-69.0.1/widget/gtk/WindowSurfaceWayland.cpp.old 2019-09-19 15:05:13.586437024 +0200 -+++ firefox-69.0.1/widget/gtk/WindowSurfaceWayland.cpp 2019-09-19 15:09:39.649079248 +0200 -@@ -836,8 +836,15 @@ already_AddRefed Window - mBufferScreenRect = lockedScreenRect; - } - -- mDrawToWaylandBufferDirectly = -- (windowRedraw || mRenderingCacheMode != CACHE_ALL); -+ if (mRenderingCacheMode == CACHE_ALL) { -+ mDrawToWaylandBufferDirectly = windowRedraw; -+ } else if (mRenderingCacheMode == CACHE_MISSING) { -+ mDrawToWaylandBufferDirectly = windowRedraw || -+ ((lockSize.width*3 > lockedScreenRect.width && -+ lockSize.height*3 > lockedScreenRect.height)); -+ } else { -+ mDrawToWaylandBufferDirectly = true; -+ } - - if (mDrawToWaylandBufferDirectly) { - LOGWAYLAND((" Direct drawing\n")); diff --git a/firefox.spec b/firefox.spec index b70eb0e..e33e429 100644 --- a/firefox.spec +++ b/firefox.spec @@ -101,13 +101,13 @@ ExcludeArch: s390x Summary: Mozilla Firefox Web browser Name: firefox -Version: 71.0 -Release: 17%{?pre_tag}%{?dist} +Version: 72.0 +Release: 1%{?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 %if %{with langpacks} -Source1: firefox-langpacks-%{version}%{?pre_version}-20191202.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20200103.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source10: firefox-mozconfig @@ -152,7 +152,6 @@ Patch224: mozilla-1170092.patch #ARM run-time patch Patch226: rhbz-1354671.patch Patch227: firefox-locale-debug.patch -Patch228: mozilla-1583466.patch Patch239: mozilla-gnome-shell-search-provider.patch Patch240: mozilla-gnome-shell-search-provider-icons.patch Patch241: kiosk-workaround.patch @@ -165,14 +164,10 @@ Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch Patch417: bug1375074-save-restore-x28.patch Patch419: mozilla-1568569.patch Patch422: mozilla-1580174-webrtc-popup.patch -Patch424: D53011-remote-content-disappear-fix.diff -Patch425: D53965-dropdown-missing-on-multimonitor.diff Patch426: mozilla-1603112-accept-lang.patch # Wayland specific upstream patches Patch574: firefox-pipewire.patch -Patch590: firefox-wayland-cache-missing.patch -Patch591: mozilla-1593408.patch # PGO/LTO patches Patch600: pgo.patch @@ -341,7 +336,7 @@ This package contains results of tests executed during build. %if 0%{?big_endian} %patch26 -p1 -b .icu %endif -%patch46 -p1 -b .nss-version +#%patch46 -p1 -b .nss-version # Fedora patches %patch215 -p1 -b .addons @@ -353,13 +348,13 @@ This package contains results of tests executed during build. %patch226 -p1 -b .1354671 %endif %patch227 -p1 -b .locale-debug -%patch228 -p1 -b .mozilla-1583466 %patch239 -p1 -b .gnome-shell-search-provider %patch240 -p1 -b .gnome-shell-search-provider-icons # Workaround for kiosk mode # https://bugzilla.mozilla.org/show_bug.cgi?id=1594738 #%patch241 -p1 -b .kiosk-workaround -%patch242 -p1 -b .mozilla-1601707 +# Cannot be applied at the moment, lot of hunk failures +#%patch242 -p1 -b .mozilla-1601707 %patch402 -p1 -b .1196777 %ifarch %{arm} @@ -368,16 +363,12 @@ This package contains results of tests executed during build. %patch419 -p1 -b .1568569 # overflow widgets broken -%patch424 -p1 -b .D53011 # dropdown missing on multimonitor -%patch425 -p1 -b .D53965 # fix for wrong intl.accept_lang when using non en-us langpack %patch426 -p1 -b .1603112-accept-lang # Wayland specific upstream patches %patch574 -p1 -b .firefox-pipewire -%patch590 -p1 -b .cache-missing -%patch591 -p1 -b .mozilla-1593408 # PGO patches %patch600 -p1 -b .pgo @@ -941,6 +932,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Fri Jan 03 2020 Jan Horak - 72.0-1 +- Update to 72.0 build3 + * Wed Dec 18 2019 Jan Horak - 71.0-17 - Fix for wrong intl.accept_lang when using non en-us langpack diff --git a/mozilla-1583466.patch b/mozilla-1583466.patch deleted file mode 100644 index a4c05a9..0000000 --- a/mozilla-1583466.patch +++ /dev/null @@ -1,156 +0,0 @@ -changeset: 496943:24592798daf4 -tag: tip -parent: 496931:ca257801d86f -user: Martin Stransky -date: Tue Sep 24 12:54:11 2019 +0200 -files: toolkit/components/enterprisepolicies/EnterprisePolicies.js toolkit/xre/nsXREDirProvider.cpp xpcom/build/nsXULAppAPI.h -description: -Bug 1583466 - [Linux] Allow to Load policies per user from system on Linux/Gtk, r=mkaply - -When browser.policies.perUserPath is set, load browser policy per user -from /run/user/$UID/appname/ directory instead of the default firefox/distribution -dir. - -Differential Revision: https://phabricator.services.mozilla.com/D46921 - - -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 -@@ -18,16 +18,19 @@ XPCOMUtils.defineLazyModuleGetters(this, - JsonSchemaValidator: - "resource://gre/modules/components-utils/JsonSchemaValidator.jsm", - }); - - // This is the file that will be searched for in the - // ${InstallDir}/distribution folder. - const POLICIES_FILENAME = "policies.json"; - -+// When true browser policy is loaded per-user from -+// /run/usr/$UID/appname -+const PREF_PER_USER_DIR = "browser.policies.perUserDir"; - // For easy testing, modify the helpers/sample.json file, - // and set PREF_ALTERNATE_PATH in firefox.js as: - // /your/repo/browser/components/enterprisepolicies/helpers/sample.json - const PREF_ALTERNATE_PATH = "browser.policies.alternatePath"; - // For testing, we may want to set PREF_ALTERNATE_PATH to point to a file - // relative to the test root directory. In order to enable this, the string - // below may be placed at the beginning of that preference value and it will - // be replaced with the path to the test root directory. -@@ -450,17 +453,22 @@ class JSONPoliciesProvider { - - get failed() { - return this._failed; - } - - _getConfigurationFile() { - let configFile = null; - try { -- configFile = Services.dirsvc.get("XREAppDist", Ci.nsIFile); -+ let perUserPath = Services.prefs.getBoolPref(PREF_PER_USER_DIR, false); -+ if (perUserPath) { -+ configFile = Services.dirsvc.get("XREAppDistUser", Ci.nsIFile); -+ } else { -+ 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, ""); - -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,24 @@ 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)) { -+#ifdef MOZ_WIDGET_GTK -+ nsPrintfCString path("/run/user/%d/%s/", getuid(), GetAppName()); -+ ToLowerCase(path); -+ return NS_NewNativeLocalFile(path, false, aFile); -+#else -+ return NS_ERROR_FAILURE; -+#endif - } 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\ - diff --git a/mozilla-1593408.patch b/mozilla-1593408.patch deleted file mode 100644 index 4d9c7ee..0000000 --- a/mozilla-1593408.patch +++ /dev/null @@ -1,76 +0,0 @@ -diff -up firefox-71.0/widget/gtk/mozcontainer.cpp.mozilla-1593408 firefox-71.0/widget/gtk/mozcontainer.cpp ---- firefox-71.0/widget/gtk/mozcontainer.cpp.mozilla-1593408 2019-11-26 01:02:30.000000000 +0100 -+++ firefox-71.0/widget/gtk/mozcontainer.cpp 2019-11-28 11:29:58.522095531 +0100 -@@ -76,6 +76,10 @@ static void moz_container_allocate_child - MozContainerChild* child); - static MozContainerChild* moz_container_get_child(MozContainer* container, - GtkWidget* child); -+#ifdef MOZ_WAYLAND -+static wl_surface* moz_container_get_gtk_container_surface( -+ MozContainer* container); -+#endif - - /* public methods */ - -@@ -158,6 +162,22 @@ void moz_container_move(MozContainer* co - container->subsurface_dx = dx; - container->subsurface_dy = dy; - container->surface_position_update = true; -+ -+ // Wayland subsurface is not created yet. -+ if (!container->subsurface) { -+ return; -+ } -+ -+ // wl_subsurface_set_position is actually property of parent surface -+ // which is effective when parent surface is commited. -+ wl_surface* parent_surface = -+ moz_container_get_gtk_container_surface(container); -+ if (parent_surface) { -+ wl_subsurface_set_position(container->subsurface, container->subsurface_dx, -+ container->subsurface_dy); -+ wl_surface_commit(parent_surface); -+ container->surface_position_update = false; -+ } - } - - void moz_container_scale_update(MozContainer* container) { -@@ -620,18 +640,9 @@ struct wl_surface* moz_container_get_wl_ - (void*)container->surface)); - } - -- // wl_subsurface_set_position is actually property of parent surface -- // which is effective when parent surface is commited. - if (container->surface_position_update) { -- wl_surface* parent_surface = -- moz_container_get_gtk_container_surface(container); -- if (parent_surface) { -- wl_subsurface_set_position(container->subsurface, -- container->subsurface_dx, -- container->subsurface_dy); -- wl_surface_commit(parent_surface); -- container->surface_position_update = true; -- } -+ moz_container_move(container, container->subsurface_dx, -+ container->subsurface_dy); - } - - return container->surface; -@@ -641,12 +652,12 @@ struct wl_egl_window* moz_container_get_ - LOGWAYLAND(("%s [%p] eglwindow %p\n", __FUNCTION__, (void*)container, - (void*)container->eglwindow)); - -- if (!container->eglwindow) { -- wl_surface* surface = moz_container_get_wl_surface(container); -- if (!surface) { -- return nullptr; -- } -+ wl_surface* surface = moz_container_get_wl_surface(container); -+ if (!surface) { -+ return nullptr; -+ } - -+ if (!container->eglwindow) { - GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container)); - gint scale = moz_container_get_scale(container); - container->eglwindow = diff --git a/sources b/sources index f41d7a7..a823c79 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ +SHA512 (firefox-72.0.source.tar.xz) = 77f55c4fb366c7050de32e82a98e16c566ffa8003ba48e6e5d734d08437a6badeaf63a5948224c18d89ff8c2b6ae6a64aad2a63e319a0a0cc0918c53165c0a46 +SHA512 (firefox-langpacks-72.0-20200103.tar.xz) = e86c7848051154e033232d3d3766db07f328c2f71c4151898a8631c4834b04682ae051bb582e1d8aeaceebf37e90904e129045ee3d6aba3fd7619e400cf87dce SHA512 (cbindgen-vendor.tar.xz) = 88afa0bc6af525cbb46bc75578b90419b28b95b396d5002fbf299a78a173681b840096ff83ef6e48553d1a5e0aa04e79383ab4d09bf431f3b864fcbacc7de46d -SHA512 (firefox-71.0.source.tar.xz) = 2f60bb7513dc2e730d8d558faad30367e12d27cb24b630aaebeb0473d0a202a3d4838b253d631722d57fb26f54145e296a710ec1714d3ba27dd71c6c1c52e920 -SHA512 (firefox-langpacks-71.0-20191202.tar.xz) = 9b632263539c65bfb31c51704b8e8c87cc8e9cfb33a5f0764ad2d55206069ec272df009b13c5242633f62808a5cddc34a7a9c1ecdbd2c03fbe473adc83e12c79