Firefox 73.0 firefox73
authorWolfgang Rosenauer <wr@rosenauer.org>
Wed, 19 Feb 2020 22:51:20 +0100
branchfirefox73
changeset 1121 004e4b1efb26
parent 1120 6168af2507a2
child 1122 a9cd24eaa361
Firefox 73.0
MozillaFirefox/MozillaFirefox.changes
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/mozilla-bmo1601707.patch
MozillaFirefox/tar_stamps
firefox-kde.patch
mozilla-bmo1504834-part1.patch
mozilla-bmo1601707.patch
mozilla-kde.patch
series
--- a/MozillaFirefox/MozillaFirefox.changes	Sun Feb 09 08:35:05 2020 +0100
+++ b/MozillaFirefox/MozillaFirefox.changes	Wed Feb 19 22:51:20 2020 +0100
@@ -1,4 +1,50 @@
 -------------------------------------------------------------------
+Sun Feb  9 07:45:00 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
+
+- Mozilla Firefox 73.0
+  * Added support for setting a default zoom level applicable for all
+    web content
+  * High-contrast mode has been updated to allow background images
+  * Improved audio quality when playing back audio at a faster or
+    slower speed
+  * Added NextDNS as alternative option for DNS over HTTPS
+  MFSA 2020-05 (bsc#1163368)
+  * CVE-2020-6796 (bmo#1610426)
+    Missing bounds check on shared memory read in the parent process
+  * CVE-2020-6797 (bmo#1596668) (MacOS X only)
+    Extensions granted downloads.open permission could open arbitrary
+    applications on Mac OSX
+  * CVE-2020-6798 (bmo#1602944)
+    Incorrect parsing of template tag could result in JavaScript injection
+  * CVE-2020-6799 (bmo#1606596) (Windows only)
+    Arbitrary code execution when opening pdf links from other
+    applications, when Firefox is configured as default pdf reader
+  * CVE-2020-6800 (bmo#1595786,bmo#1596706,bmo#1598543,bmo#1604851,
+    bmo#1608580,bmo#1608785,bmo#1605777)
+    Memory safety bugs fixed in Firefox 73 and Firefox ESR 68.5
+  * CVE-2020-6801 (bmo#1601024,bmo#1601712,bmo#1604836,bmo#1606492)
+    Memory safety bugs fixed in Firefox 73
+- updated requirements
+  * rust >= 1.39
+  * NSS >= 3.49.2
+  * rust-cbindgen >= 0.12.0
+- rebased patches
+- removed obsolete patch
+  * mozilla-bmo1601707.patch
+- switched to cairo-gtk3-wayland build
+  (to fully enable wayland MOZ_ENABLE_WAYLAND=1 needs to be set)
+- disabled elfhack due to failing packager
+  https://github.com/openSUSE/firefox-maintenance/issues/28
+- disabled PGO due to build failure
+  https://github.com/openSUSE/firefox-maintenance/issues/29
+
+-------------------------------------------------------------------
+Tue Jan 28 07:30:16 UTC 2020 - Stasiek Michalski <stasiek@michalski.cc>
+
+- Use a symbolic icon from branding internals
+- Pixmaps no longer required for the desktops
+
+-------------------------------------------------------------------
 Wed Jan 22 10:30:21 UTC 2020 - Wolfgang Rosenauer <wr@rosenauer.org>
 
 - Mozilla Firefox 72.0.2
--- a/MozillaFirefox/MozillaFirefox.spec	Sun Feb 09 08:35:05 2020 +0100
+++ b/MozillaFirefox/MozillaFirefox.spec	Wed Feb 19 22:51:20 2020 +0100
@@ -2,7 +2,7 @@
 # spec file for package MozillaFirefox
 #
 # Copyright (c) 2020 SUSE LLC
-#               2006-2019 Wolfgang Rosenauer <wr@rosenauer.org>
+#               2006-2020 Wolfgang Rosenauer <wr@rosenauer.org>
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,14 +18,17 @@
 
 
 # changed with every update
-%define major          72
-%define mainver        %major.0.2
-%define orig_version   72.0.2
+%define major          73
+%define mainver        %major.0
+%define orig_version   73.0
 %define orig_suffix    %{nil}
 %define update_channel release
 %define branding       1
 %define devpkg         1
 
+# disable for FF73 for now as it fails for unknown reason
+%define do_profiling   0
+
 # always build with GCC as SUSE Security Team requires that
 %define clang_build 0
 
@@ -72,7 +75,7 @@
 %else
 BuildRequires:  gcc-c++
 %endif
-BuildRequires:  cargo >= 1.37
+BuildRequires:  cargo >= 1.39
 BuildRequires:  libXcomposite-devel
 BuildRequires:  libcurl-devel
 BuildRequires:  libidl-devel
@@ -81,14 +84,14 @@
 BuildRequires:  libproxy-devel
 BuildRequires:  makeinfo
 BuildRequires:  mozilla-nspr-devel >= 4.24
-BuildRequires:  mozilla-nss-devel >= 3.48
+BuildRequires:  mozilla-nss-devel >= 3.49.2
 BuildRequires:  nasm >= 2.13
 BuildRequires:  nodejs8 >= 8.11
 BuildRequires:  python-devel
 BuildRequires:  python2-xml
 BuildRequires:  python3 >= 3.5
-BuildRequires:  rust >= 1.37
-BuildRequires:  rust-cbindgen >= 0.9.1
+BuildRequires:  rust >= 1.39
+BuildRequires:  rust-cbindgen >= 0.12.0
 BuildRequires:  startup-notification-devel
 BuildRequires:  unzip
 BuildRequires:  update-desktop-files
@@ -183,7 +186,6 @@
 Patch20:        mozilla-fix-top-level-asm.patch
 Patch21:        mozilla-bmo1504834-part4.patch
 Patch22:        mozilla-bmo849632.patch
-Patch23:        mozilla-bmo1601707.patch
 # Firefox/browser
 Patch101:       firefox-kde.patch
 Patch102:       firefox-branded-icons.patch
@@ -319,7 +321,6 @@
 %patch20 -p1
 %patch21 -p1
 %patch22 -p1
-%patch23 -p1
 # Firefox
 %patch101 -p1
 %patch102 -p1
@@ -399,7 +400,7 @@
 ac_add_options --libdir=%{_libdir}
 ac_add_options --includedir=%{_includedir}
 ac_add_options --enable-release
-ac_add_options --enable-default-toolkit=cairo-gtk3
+ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
 %if 0%{?suse_version} >= 1550
 ac_add_options --disable-gconf
 %endif
@@ -409,11 +410,12 @@
 %else
 ac_add_options --enable-debug-symbols
 %endif
-%if 0%{?suse_version} > 1549
+# building with elf-hack started to fail everywhere with FF73
+#%if 0%{?suse_version} > 1549
 %ifnarch aarch64 ppc64 ppc64le s390x
 ac_add_options --disable-elf-hack
 %endif
-%endif
+#%endif
 ac_add_options --with-system-nspr
 ac_add_options --with-system-nss
 %if %{localize}
@@ -576,10 +578,11 @@
 #
 mkdir -p %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_appid}
 mkdir -p %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_appid}
-mkdir -p %{buildroot}/usr/share/pixmaps/
-ln -sf %{progdir}/browser/chrome/icons/default/default128.png %{buildroot}/usr/share/pixmaps/%{progname}.png
-ln -sf %{progdir}/browser/chrome/icons/default/default128.png %{buildroot}/usr/share/pixmaps/%{progname}-gnome.png
 %if %branding
+# Install symbolic icon for GNOME
+mkdir -p %{buildroot}%{gnome_dir}/share/icons/hicolor/symbolic/apps/
+cp %{_builddir}/%{srcname}-%{orig_version}/browser/branding/official/content/identity-icons-brand.svg \
+   %{buildroot}%{gnome_dir}/share/icons/hicolor/symbolic/apps/%{progname}-symbolic.svg
 for size in 16 22 24 32 48 64 128 256; do
 %else
 for size in 16 32 48; do
@@ -664,7 +667,6 @@
 %{progdir}/browser/features/
 %{progdir}/browser/chrome/icons
 %{progdir}/browser/blocklist.xml
-%{progdir}/browser/chrome.manifest
 %{progdir}/browser/omni.ja
 %dir %{progdir}/distribution/
 %{progdir}/distribution/extensions/
@@ -676,7 +678,6 @@
 %{progdir}/%{progname}
 %{progdir}/%{progname}-bin
 %{progdir}/application.ini
-%{progdir}/chrome.manifest
 %{progdir}/dependentlibs.list
 %{progdir}/*.so
 %{progdir}/omni.ja
@@ -693,7 +694,6 @@
 %endif
 %{_datadir}/applications/%{desktop_file_name}.desktop
 %{_datadir}/mime/packages/%{progname}.xml
-%{_datadir}/pixmaps/firefox*
 %dir %{_datadir}/mozilla
 %dir %{_datadir}/mozilla/extensions
 %dir %{_datadir}/mozilla/extensions/%{firefox_appid}
--- a/MozillaFirefox/mozilla-bmo1601707.patch	Sun Feb 09 08:35:05 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-bmo1601707.patch
\ No newline at end of file
--- a/MozillaFirefox/tar_stamps	Sun Feb 09 08:35:05 2020 +0100
+++ b/MozillaFirefox/tar_stamps	Wed Feb 19 22:51:20 2020 +0100
@@ -1,11 +1,11 @@
 PRODUCT="firefox"
 CHANNEL="release"
-VERSION="72.0.2"
+VERSION="73.0"
 VERSION_SUFFIX=""
-PREV_VERSION="72.0.1"
+PREV_VERSION="73.0"
 PREV_VERSION_SUFFIX=""
 #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
 
 RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-release"
-RELEASE_TAG="25e0edbb0a613c3bf794c93ba3aa0985d29d5ef4"
-RELEASE_TIMESTAMP="20200117190643"
+RELEASE_TAG="816e7f29478180f322fb4731df776d3b7854f0f8"
+RELEASE_TIMESTAMP="20200207195153"
--- a/firefox-kde.patch	Sun Feb 09 08:35:05 2020 +0100
+++ b/firefox-kde.patch	Wed Feb 19 22:51:20 2020 +0100
@@ -3,7 +3,7 @@
 # Date 1559300151 -7200
 #      Fri May 31 12:55:51 2019 +0200
 # Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec
-# Parent  4faaad3619f286bd6077754d8e59d339a5142b80
+# Parent  1143a0e4b2eefa83f74fc484c547d7790ca455a1
 How to apply this patch:
 1. Import and apply it
 2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
@@ -14,7 +14,7 @@
 diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
 --- a/browser/components/preferences/in-content/main.js
 +++ b/browser/components/preferences/in-content/main.js
-@@ -341,16 +341,23 @@ var gMainPane = {
+@@ -329,16 +329,23 @@ var gMainPane = {
          }, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]);
        };
  
@@ -38,7 +38,7 @@
      );
      let performanceSettingsUrl =
        Services.urlFormatter.formatURLPref("app.support.baseURL") +
-@@ -1199,16 +1206,27 @@ var gMainPane = {
+@@ -1283,16 +1290,27 @@ var gMainPane = {
        this._backoffIndex = 0;
  
        let shellSvc = getShellService();
@@ -82,12 +82,12 @@
 +        'nsUnixShellService.cpp',
      ]
  elif CONFIG['OS_ARCH'] == 'WINNT':
+     XPIDL_SOURCES += [
+         'nsIWindowsShellService.idl',
+     ]
      SOURCES += [
          'nsWindowsShellService.cpp',
      ]
-     LOCAL_INCLUDES += [
-         '../../../other-licenses/nsis/Contrib/CityHash/cityhash',
-     ]
 diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
 new file mode 100644
 --- /dev/null
--- a/mozilla-bmo1504834-part1.patch	Sun Feb 09 08:35:05 2020 +0100
+++ b/mozilla-bmo1504834-part1.patch	Wed Feb 19 22:51:20 2020 +0100
@@ -1,11 +1,16 @@
 # HG changeset patch
-# Parent  83da7ee18178639b2a89d5e21f78e190e4e72d7e
+# Parent  9db312f823881c04c5c16a7623df08cf6aef371d
 Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834
 
-diff -r 83da7ee18178 gfx/2d/DrawTargetSkia.cpp
---- a/gfx/2d/DrawTargetSkia.cpp	Mon Jul 22 00:00:00 2019 +0200
-+++ b/gfx/2d/DrawTargetSkia.cpp	Wed Jan 08 12:17:44 2020 +0100
-@@ -136,8 +136,7 @@
+diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
+--- a/gfx/2d/DrawTargetSkia.cpp
++++ b/gfx/2d/DrawTargetSkia.cpp
+@@ -131,18 +131,17 @@ static IntRect CalculateSurfaceBounds(co
+   Rect sampledBounds = inverse.TransformBounds(*aBounds);
+   if (!sampledBounds.ToIntRect(&bounds)) {
+     return surfaceBounds;
+   }
+ 
    return surfaceBounds.Intersect(bounds);
  }
  
@@ -15,17 +20,27 @@
  
  static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
                               const int32_t aStride, SurfaceFormat aFormat) {
-diff -r 83da7ee18178 gfx/2d/Types.h
---- a/gfx/2d/Types.h	Mon Jul 22 00:00:00 2019 +0200
-+++ b/gfx/2d/Types.h	Wed Jan 08 12:17:44 2020 +0100
-@@ -86,15 +86,8 @@
+   if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) {
+     return true;
+   }
+   // We should've initialized the data to be opaque already
+   // On debug builds, verify that this is actually true.
+diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h
+--- a/gfx/2d/Types.h
++++ b/gfx/2d/Types.h
+@@ -82,25 +82,18 @@ enum class SurfaceFormat : int8_t {
+   Depth,
+ 
+   // This represents the unknown format.
+   UNKNOWN,
+ 
  // The following values are endian-independent synonyms. The _UINT32 suffix
  // indicates that the name reflects the layout when viewed as a uint32_t
  // value.
--#if MOZ_LITTLE_ENDIAN
+-#if MOZ_LITTLE_ENDIAN()
    A8R8G8B8_UINT32 = B8G8R8A8,  // 0xAARRGGBB
    X8R8G8B8_UINT32 = B8G8R8X8,  // 0x00RRGGBB
--#elif MOZ_BIG_ENDIAN
+-#elif MOZ_BIG_ENDIAN()
 -  A8R8G8B8_UINT32 = A8R8G8B8,  // 0xAARRGGBB
 -  X8R8G8B8_UINT32 = X8R8G8B8,  // 0x00RRGGBB
 -#else
@@ -34,10 +49,20 @@
  
    // The following values are OS and endian-independent synonyms.
    //
-diff -r 83da7ee18178 gfx/skia/skia/third_party/skcms/skcms.cc
---- a/gfx/skia/skia/third_party/skcms/skcms.cc	Mon Jul 22 00:00:00 2019 +0200
-+++ b/gfx/skia/skia/third_party/skcms/skcms.cc	Wed Jan 08 12:17:44 2020 +0100
-@@ -30,6 +30,8 @@
+   // TODO(aosmond): When everything blocking bug 1581828 has been resolved, we
+   // can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms.
+   OS_RGBA = A8R8G8B8_UINT32,
+   OS_RGBX = X8R8G8B8_UINT32
+ };
+diff --git a/gfx/skia/skia/third_party/skcms/skcms.cc b/gfx/skia/skia/third_party/skcms/skcms.cc
+--- a/gfx/skia/skia/third_party/skcms/skcms.cc
++++ b/gfx/skia/skia/third_party/skcms/skcms.cc
+@@ -25,16 +25,18 @@
+         // it'd be a lot slower.  But we want all those headers included so we
+         // can use their features after runtime checks later.
+         #include <smmintrin.h>
+         #include <avxintrin.h>
+         #include <avx2intrin.h>
          #include <avx512fintrin.h>
          #include <avx512dqintrin.h>
      #endif
@@ -46,7 +71,17 @@
  #endif
  
  // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
-@@ -280,20 +282,28 @@
+ // We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit.
+ //
+ // Please do not use sizeof() directly, and size_t only when required.
+ // (We have no way of enforcing these requests...)
+ #define SAFE_SIZEOF(x) ((uint64_t)sizeof(x))
+@@ -275,30 +277,38 @@ enum {
+     skcms_Signature_sf32 = 0x73663332,
+     // XYZ is also a PCS signature, so it's defined in skcms.h
+     // skcms_Signature_XYZ = 0x58595A20,
+ };
+ 
  static uint16_t read_big_u16(const uint8_t* ptr) {
      uint16_t be;
      memcpy(&be, ptr, sizeof(be));
@@ -79,3 +114,8 @@
  #endif
  }
  
+ static int32_t read_big_i32(const uint8_t* ptr) {
+     return (int32_t)read_big_u32(ptr);
+ }
+ 
+ static float read_big_fixed(const uint8_t* ptr) {
--- a/mozilla-bmo1601707.patch	Sun Feb 09 08:35:05 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-# HG changeset patch
-# Parent  862430a659a4f1fcbbbbfcf1cba98eb7e31035dc
-
-diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp
---- a/dom/indexedDB/ActorsParent.cpp
-+++ b/dom/indexedDB/ActorsParent.cpp
-@@ -24612,19 +24612,19 @@ nsresult ObjectStoreAddOrPutRequestOp::D
-     }
-   }
- 
-   // The "|| keyUnset" here is mostly a debugging tool. If a key isn't
-   // specified we should never have a collision and so it shouldn't matter
-   // if we allow overwrite or not. By not allowing overwrite we raise
-   // detectable errors rather than corrupting data.
-   DatabaseConnection::CachedStatement stmt;
--  const auto& optReplaceDirective = (!mOverwrite || keyUnset)
--                                        ? NS_LITERAL_CSTRING("")
--                                        : NS_LITERAL_CSTRING("OR REPLACE ");
-+  const auto optReplaceDirective = (!mOverwrite || keyUnset)
-+                                       ? NS_LITERAL_CSTRING("")
-+                                       : NS_LITERAL_CSTRING("OR REPLACE ");
-   rv = aConnection->GetCachedStatement(
-       NS_LITERAL_CSTRING("INSERT ") + optReplaceDirective +
-           NS_LITERAL_CSTRING("INTO object_data "
-                              "(object_store_id, key, file_ids, data) "
-                              "VALUES (:") +
-           kStmtParamNameObjectStoreId + NS_LITERAL_CSTRING(", :") +
-           kStmtParamNameKey + NS_LITERAL_CSTRING(", :") +
-           kStmtParamNameFileIds + NS_LITERAL_CSTRING(", :") +
-@@ -26452,19 +26452,19 @@ nsresult Cursor::OpenOp::DoIndexDatabase
-   MOZ_ASSERT(mCursor->mType == OpenCursorParams::TIndexOpenCursorParams);
-   MOZ_ASSERT(mCursor->mObjectStoreId);
-   MOZ_ASSERT(mCursor->mIndexId);
- 
-   AUTO_PROFILER_LABEL("Cursor::OpenOp::DoIndexDatabaseWork", DOM);
- 
-   const bool usingKeyRange = mOptionalKeyRange.isSome();
- 
--  const auto& indexTable = mCursor->mUniqueIndex
--                               ? NS_LITERAL_CSTRING("unique_index_data")
--                               : NS_LITERAL_CSTRING("index_data");
-+  const auto indexTable = mCursor->mUniqueIndex
-+                              ? NS_LITERAL_CSTRING("unique_index_data")
-+                              : NS_LITERAL_CSTRING("index_data");
- 
-   // The result of MakeColumnPairSelectionList is stored in a local variable,
-   // since inlining it into the next statement causes a crash on some Mac OS X
-   // builds (see https://bugzilla.mozilla.org/show_bug.cgi?id=1168606#c110).
-   const auto columnPairSelectionList = MakeColumnPairSelectionList(
-       NS_LITERAL_CSTRING("index_table.value"),
-       NS_LITERAL_CSTRING("index_table.value_locale"), kColumnNameAliasSortKey,
-       mCursor->IsLocaleAware());
-@@ -26558,19 +26558,19 @@ nsresult Cursor::OpenOp::DoIndexKeyDatab
-   MOZ_ASSERT(mCursor->mType == OpenCursorParams::TIndexOpenKeyCursorParams);
-   MOZ_ASSERT(mCursor->mObjectStoreId);
-   MOZ_ASSERT(mCursor->mIndexId);
- 
-   AUTO_PROFILER_LABEL("Cursor::OpenOp::DoIndexKeyDatabaseWork", DOM);
- 
-   const bool usingKeyRange = mOptionalKeyRange.isSome();
- 
--  const auto& table = mCursor->mUniqueIndex
--                          ? NS_LITERAL_CSTRING("unique_index_data")
--                          : NS_LITERAL_CSTRING("index_data");
-+  const auto table = mCursor->mUniqueIndex
-+                         ? NS_LITERAL_CSTRING("unique_index_data")
-+                         : NS_LITERAL_CSTRING("index_data");
- 
-   // The result of MakeColumnPairSelectionList is stored in a local variable,
-   // since inlining it into the next statement causes a crash on some Mac OS X
-   // builds (see https://bugzilla.mozilla.org/show_bug.cgi?id=1168606#c110).
-   const auto columnPairSelectionList = MakeColumnPairSelectionList(
-       NS_LITERAL_CSTRING("value"), NS_LITERAL_CSTRING("value_locale"),
-       kColumnNameAliasSortKey, mCursor->IsLocaleAware());
-   const nsCString sortColumnAlias = NS_LITERAL_CSTRING("SELECT ") +
--- a/mozilla-kde.patch	Sun Feb 09 08:35:05 2020 +0100
+++ b/mozilla-kde.patch	Wed Feb 19 22:51:20 2020 +0100
@@ -3,7 +3,7 @@
 # Date 1559294891 -7200
 #      Fri May 31 11:28:11 2019 +0200
 # Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
-# Parent  52a515e07938d75f7c33e7b724845ce6dc315c0c
+# Parent  48866e4a200fb5299b94af4d9841e38336cff9f4
 Description: Add KDE integration to Firefox (toolkit parts)
 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
 Author: Lubos Lunak <lunak@suse.com>
@@ -13,7 +13,7 @@
 diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
 --- a/modules/libpref/Preferences.cpp
 +++ b/modules/libpref/Preferences.cpp
-@@ -88,16 +88,17 @@
+@@ -84,16 +84,17 @@
  #include "nsXPCOM.h"
  #include "nsXULAppAPI.h"
  #include "nsZipArchive.h"
@@ -31,7 +31,7 @@
  #ifdef MOZ_MEMORY
  #  include "mozmemory.h"
  #endif
-@@ -4543,25 +4544,37 @@ nsresult Preferences::InitInitialObjects
+@@ -4539,25 +4540,37 @@ nsresult Preferences::InitInitialObjects
    // application pref files for backwards compatibility.
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -69,7 +69,7 @@
  
    // Load jar:$app/omni.jar!/defaults/preferences/*.js
    // or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4607,17 +4620,17 @@ nsresult Preferences::InitInitialObjects
+@@ -4603,17 +4616,17 @@ nsresult Preferences::InitInitialObjects
        }
  
        nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@@ -136,7 +136,7 @@
 diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
 --- a/python/mozbuild/mozpack/chrome/manifest.py
 +++ b/python/mozbuild/mozpack/chrome/manifest.py
-@@ -36,16 +36,17 @@ class ManifestEntry(object):
+@@ -37,16 +37,17 @@ class ManifestEntry(object):
          'platformversion',
          'os',
          'osversion',
@@ -175,7 +175,7 @@
 diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
 --- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
 +++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
-@@ -1199,36 +1199,66 @@ nsUnknownContentTypeDialog.prototype = {
+@@ -1195,36 +1195,66 @@ nsUnknownContentTypeDialog.prototype = {
          params.handlerApp &&
          params.handlerApp.executable &&
          params.handlerApp.executable.isFile()
@@ -265,7 +265,7 @@
 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -14,16 +14,17 @@
+@@ -13,16 +13,17 @@
  #include "nsPrintfCString.h"
  #include "nsNetCID.h"
  #include "nsNetUtil.h"
@@ -283,7 +283,7 @@
    NS_DECL_ISUPPORTS
    NS_DECL_NSISYSTEMPROXYSETTINGS
  
-@@ -37,16 +38,18 @@ class nsUnixSystemProxySettings final : 
+@@ -36,16 +37,18 @@ class nsUnixSystemProxySettings final : 
    nsCOMPtr<nsIGSettingsCollection> mProxySettings;
    nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
        mSchemeProxySettings;
@@ -302,7 +302,7 @@
  nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
    // dbus prevents us from being threadsafe, but this routine should not block
    // anyhow
-@@ -381,21 +384,50 @@ nsresult nsUnixSystemProxySettings::GetP
+@@ -380,21 +383,50 @@ nsresult nsUnixSystemProxySettings::GetP
    return NS_OK;
  }
  
@@ -356,7 +356,7 @@
 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
 --- a/toolkit/xre/moz.build
 +++ b/toolkit/xre/moz.build
-@@ -87,17 +87,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+@@ -88,17 +88,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
          '../components/printingui',
      ]
  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
@@ -1213,10 +1213,10 @@
  #include "nsString.h"
  #include "nsReadableUtils.h"
  #include "nsUnicharUtils.h"
- #include "nsIURL.h"
  #include "nsIFileStreams.h"
  #include "nsILineInputStream.h"
-@@ -1025,17 +1025,17 @@ nsresult nsOSHelperAppService::GetHandle
+ #include "nsIFile.h"
+@@ -1024,17 +1024,17 @@ nsresult nsOSHelperAppService::GetHandle
  
  nsresult nsOSHelperAppService::OSProtocolHandlerExists(
      const char* aProtocolScheme, bool* aHandlerExists) {
@@ -1235,7 +1235,7 @@
      nsCOMPtr<nsIHandlerService> handlerSvc =
          do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
      if (NS_SUCCEEDED(rv) && handlerSvc) {
-@@ -1045,17 +1045,17 @@ nsresult nsOSHelperAppService::OSProtoco
+@@ -1044,17 +1044,17 @@ nsresult nsOSHelperAppService::OSProtoco
    }
  
    return rv;
@@ -1254,7 +1254,7 @@
  
  NS_IMETHODIMP nsOSHelperAppService::IsCurrentAppOSDefaultForProtocol(
      const nsACString& aScheme, bool* _retval) {
-@@ -1142,17 +1142,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+@@ -1141,17 +1141,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
    nsresult rv =
        LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
                                 minorType, mime_types_description, true);
@@ -1273,7 +1273,7 @@
  
      rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
                                    minorType, mime_types_description, false);
-@@ -1254,17 +1254,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+@@ -1253,17 +1253,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
  
    // Now look up our extensions
    nsAutoString extensions, mime_types_description;
@@ -1295,7 +1295,7 @@
 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
 --- a/widget/gtk/moz.build
 +++ b/widget/gtk/moz.build
-@@ -127,16 +127,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -128,16 +128,17 @@ include('/ipc/chromium/chromium-config.m
  
  FINAL_LIBRARY = 'xul'
  
@@ -1316,25 +1316,24 @@
 diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
 --- a/widget/gtk/nsFilePicker.cpp
 +++ b/widget/gtk/nsFilePicker.cpp
-@@ -4,16 +4,17 @@
+@@ -1,15 +1,16 @@
+ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+ /* 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/. */
  
- #include "mozilla/Types.h"
+ #include <dlfcn.h>
+ #include <gtk/gtk.h>
++#include <gdk/gdkx.h>
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <unistd.h>
  
- #include <gtk/gtk.h>
-+#include <gdk/gdkx.h>
- 
+ #include "mozilla/Types.h"
  #include "nsGtkUtils.h"
  #include "nsIFileURL.h"
  #include "nsIGIOService.h"
- #include "nsIURI.h"
- #include "nsIWidget.h"
- #include "nsIFile.h"
- #include "nsIStringBundle.h"
-@@ -21,16 +22,17 @@
+@@ -20,16 +21,17 @@
  #include "nsArrayEnumerator.h"
  #include "nsMemory.h"
  #include "nsEnumeratorUtils.h"
@@ -1352,7 +1351,7 @@
  #define MAX_PREVIEW_SOURCE_SIZE 4096
  
  nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
-@@ -228,17 +230,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
    mAllowURLs = !!(aFilterMask & filterAllowURLs);
    return nsBaseFilePicker::AppendFilters(aFilterMask);
  }
@@ -1373,7 +1372,7 @@
  
    mFilters.AppendElement(filter);
    mFilterNames.AppendElement(name);
-@@ -338,16 +342,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
+@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
    return NS_OK;
  }
  
@@ -1413,7 +1412,7 @@
  
    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
  
-@@ -573,16 +600,240 @@ void nsFilePicker::Done(void* file_choos
+@@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos
      mCallback->Done(result);
      mCallback = nullptr;
    } else {
@@ -1835,7 +1834,7 @@
 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
 --- a/xpcom/io/nsLocalFileUnix.cpp
 +++ b/xpcom/io/nsLocalFileUnix.cpp
-@@ -47,16 +47,17 @@
+@@ -46,16 +46,17 @@
  #include "prproces.h"
  #include "nsIDirectoryEnumerator.h"
  #include "nsSimpleEnumerator.h"
@@ -1853,7 +1852,7 @@
  #  include "prmem.h"
  #  include "plbase64.h"
  
-@@ -1902,62 +1903,77 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1904,62 +1905,77 @@ nsLocalFile::SetPersistentDescriptor(con
  
  NS_IMETHODIMP
  nsLocalFile::Reveal() {
--- a/series	Sun Feb 09 08:35:05 2020 +0100
+++ b/series	Wed Feb 19 22:51:20 2020 +0100
@@ -21,7 +21,6 @@
 mozilla-fix-top-level-asm.patch
 mozilla-bmo1504834-part4.patch
 mozilla-bmo849632.patch
-mozilla-bmo1601707.patch
 
 # Firefox patches
 firefox-kde.patch