merge from release branch
authorWolfgang Rosenauer <wr@rosenauer.org>
Sun, 17 Mar 2019 10:00:10 +0100
changeset 1088 84cdfb476431
parent 1074 4b99400f6d17 (current diff)
parent 1087 5fab52cd743d (diff)
child 1113 8e9195853a32
merge from release branch
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/create-tar.sh
MozillaFirefox/mozilla-reduce-files-per-UnifiedBindings.patch
mozilla-reduce-files-per-UnifiedBindings.patch
--- a/MozillaFirefox/MozillaFirefox.changes	Mon Oct 22 11:26:41 2018 +0200
+++ b/MozillaFirefox/MozillaFirefox.changes	Sun Mar 17 10:00:10 2019 +0100
@@ -1,14 +1,282 @@
 -------------------------------------------------------------------
-Sun Oct 21 07:24:17 UTC 2018 - wr@rosenauer.org
-
-- update to Firefox 63.0b14
+Tue Mar  5 10:17:01 UTC 2019 - Stephan Kulow <coolo@suse.com>
+
+- Do not hardcode nodejs8 but leave the prefer to the distribution
+  (Tumbleweed staging wants to switch to nodejs10)
+
+-------------------------------------------------------------------
+Fri Feb 15 13:45:57 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
+
+- Update _constraints to avoid 'no space left' error seen on aarch64
+
+-------------------------------------------------------------------
+Wed Feb 13 07:17:28 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
+
+- Mozilla Firefox 65.0.1
+  * Fixed accidental requests to addons.mozilla.org when an addon
+    recommendation doorhanger is shown (bmo#1526387)
+  * Improved playback of interactive Netflix videos (bmo#1524500)
+  * Fixed incorrect sizing of the "Clear Recent History" window in
+    some situations (bmo#1523696)
+  * Fixed audio & video delays while making WebRTC calls
+    (bmo#1521577, bmo#1523817)
+  * Fixed video sizing problems during some WebRTC calls (bmo#1520200)
+  * Fixed looping CONNECT requests when using WebSockets over HTTP/2
+    from behind a proxy server (bmo#1523427)
+  * Fixed the "Enter" key not working on password entry fields for
+    certain Linux distributions (bmo#1523635)
+  MFSA 2019-04 (bsc#1125330)
+  * CVE-2018-18356 bmo#1525817
+    Use-after-free in Skia
+  * CVE-2019-5785 bmo#1525433
+    Integer overflow in Skia
+  * CVE-2018-18511 bmo#1526218
+    Cross-origin theft of images with ImageBitmapRenderingContext
+
+-------------------------------------------------------------------
+Wed Feb 13 06:12:43 UTC 2019 - Martin Liška <mliska@suse.cz>
+
+- Enable LTO only for latest new toolchain (boo#1125038) for x86_64
+  (with increased memory constraints)
+
+-------------------------------------------------------------------
+Sat Jan 26 22:37:01 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
+
+- Mozilla Firefox 65.0
+  * Enhanced tracking protection
+  * allow switching of UI locales within preferences
+  * support for the WebP image format
+  * "top"-like about:performance
+  MFSA 2019-01 (bsc#1122983)
+  * CVE-2018-18500 bmo#1510114
+    Use-after-free parsing HTML5 stream
+  * CVE-2018-18503 bmo#1509442
+    Memory corruption with Audio Buffer
+  * CVE-2018-18504 bmo#1496413
+    Memory corruption and out-of-bounds read of texture client
+  * CVE-2018-18505 bmo#1497749
+    Privilege escalation through IPC channel messages
+  * CVE-2018-18506 bmo#1503393
+    Proxy Auto-Configuration file can define localhost access to be proxied
+  * CVE-2018-18502 bmo#1499426 bmo#1480090 bmo#1472990 bmo#1514762
+    bmo#1501482 bmo#1505887 bmo#1508102 bmo#1508618 bmo#1511580
+    bmo#1493497 bmo#1510145 bmo#1516289 bmo#1506798 bmo#1512758
+    Memory safety bugs fixed in Firefox 65
+  * CVE-2018-18501 bmo#1512450 bmo#1517542 bmo#1513201 bmo#1460619
+    bmo#1502871 bmo#1516738 bmo#1516514
+    Memory safety bugs fixed in Firefox 65 and Firefox ESR 60.5
+- requires
+  NSS 3.41
+  rust/carge 1.30
+  rust-cbindgen 0.6.7
+- rebased patches
+- remove workaround for build memory consumption on i586; other
+  mitigations meanwhile introduced (mainly parallelity) will be
+  sufficient
+  mozilla-reduce-files-per-UnifiedBindings.patch
+
+-------------------------------------------------------------------
+Tue Jan 15 14:32:03 UTC 2019 - Martin Liška <mliska@suse.cz>
+
+- Increase disk constraint.
+
+-------------------------------------------------------------------
+Mon Jan 14 12:12:12 UTC 2019 - Martin Liška <mliska@suse.cz>
+
+- Remove -v from mach build in order to work-around bmo#1500436.
+
+-------------------------------------------------------------------
+Fri Jan 11 15:07:14 UTC 2019 - Martin Liška <mliska@suse.cz>
+
+- Set %clang_build to false on all architectures
+- Do not use -fno-delete-null-pointer-checks and -fno-strict-aliasing:
+  it should not be needed anymore
+- Do not overwrite enable-optimize and when possible
+  enable --enable-debug-symbols.
+- Add -v to mach in order to make build verbose.
+
+-------------------------------------------------------------------
+Wed Jan  9 22:40:14 UTC 2019 - astieger@suse.com
+
+- Mozilla Firefox 64.0.2:
+  * Update the Japanese translation for missing strings (bmo#1513259)
+  * Properly restore column sizes in developer tools inspector (bmo#1503175)
+  * Fixed video stuttering on Youtube (bmo#1513511)
+  * Fix updates for some lightweight themes (bmo#1508777)
+
+-------------------------------------------------------------------
+Tue Dec 18 14:46:41 UTC 2018 - Guillaume GARDET <guillaume.gardet@opensuse.org>
+
+- Enable build_hardened for all architectures
+- Switch back aarch64 to clang as '-fPIC' fixes bmo#1513605
+- Remove obolete '--enable-pie' as -pie is always enabled for
+  gcc and clang
+
+-------------------------------------------------------------------
+Wed Dec 12 17:33:29 UTC 2018 - Guillaume GARDET <guillaume.gardet@opensuse.org>
+
+- Switch aarch64 builds back to gcc, not clang (bmo#1513605)
+- Switch %arm builds back to gcc, not clang to avoid OOM
+- Fix build flags when clang is not used
+- Fix flags for clang ppc64 builds
+
+-------------------------------------------------------------------
+Tue Dec 11 08:45:56 UTC 2018 - Wolfgang Rosenauer <wr@rosenauer.org>
+
+- update to Firefox 64.0
+  * Better recommendations: You may see suggestions in regular browsing
+    mode for new and relevant Firefox features, services, and extensions
+    based on how you use the web (for US users only)
+  * Enhanced tab management: You can now select multiple tabs from the
+    tab bar and close, move, bookmark, or pin them quickly and easily
+  * Easier performance management: The new Task Manager page found at
+    about:performance lets you see how much energy each open tab consumes
+    and provides access to close tabs to conserve power
+  * Improved performance for Mac and Linux users, by enabling link time
+    optimization (Clang LTO).
+  * Added option to remove add-ons using the context menu on their
+    toolbar buttons
+  * RSS feed preview and live bookmarks are available only via add-ons
+  * TLS certificates issued by Symantec are no longer trusted by Firefox.
+    Website operators are strongly encouraged to replace any remaining
+    Symantec TLS certificates as soon as possible
+  MFSA 2018-29 (bsc#1119105)
+  * CVE-2018-12407 bmo#1505973
+    Buffer overflow with ANGLE library when using VertexBuffer11 module
+  * CVE-2018-17466 bmo#1488295
+    Buffer overflow and out-of-bounds read in ANGLE library with
+    TextureStorage11
+  * CVE-2018-18492 bmo#1499861
+    Use-after-free with select element
+  * CVE-2018-18493 bmo#1504452
+    Buffer overflow in accelerated 2D canvas with Skia
+  * CVE-2018-18494 bmo#1487964
+    Same-origin policy violation using location attribute and
+    performance.getEntries to steal cross-origin URLs
+  * CVE-2018-18495 bmo#1427585
+    WebExtension content scripts can be loaded in about: pages
+  * CVE-2018-18496 bmo#1422231 (Windows only)
+    Embedded feed preview page can be abused for clickjacking
+  * CVE-2018-18497 bmo#1488180
+    WebExtensions can load arbitrary URLs through pipe separators
+  * CVE-2018-18498 bmo#1500011
+    Integer overflow when calculating buffer sizes for images
+  * CVE-2018-12406 bmo#1456947 bmo#1475669 bmo#1504816 bmo#1502886
+    bmo#1500064 bmo#1500310 bmo#1500696 bmo#1498765 bmo#1499198 bmo#1434490
+    bmo#1481745 bmo#1458129
+    Memory safety bugs fixed in Firefox 64
+  * CVE-2018-12405 bmo#1494752 bmo#1503326 bmo#1505181 bmo#1500759
+    bmo#1504365 bmo#1506640 bmo#1503082 bmo#1502013 bmo#1510471
+    Memory safety bugs fixed in Firefox 64 and Firefox ESR 60.4
+- requires
+  * rust/cargo >= 1.29
+  * mozilla-nss >= 3.40.1
+  * rust-cbindgen >= 0.6.4
+- rebased patches
+- removed obsolete patch
+  * mozilla-bmo1491289.patch
+- now uses clang primarily for compilation
+
+-------------------------------------------------------------------
+Wed Nov 28 11:07:18 UTC 2018 - Guillaume GARDET <guillaume.gardet@opensuse.org>
+
+- Remove --disable-elf-hack when not available: on aarch64 and ppc64*
+
+-------------------------------------------------------------------
+Mon Nov 26 09:46:02 UTC 2018 - Guillaume GARDET <guillaume.gardet@opensuse.org>
+
+- Clean-up %arm build
+
+-------------------------------------------------------------------
+Sun Nov 18 11:01:21 UTC 2018 - manfred.h@gmx.net
+
+- update to Firefox 63.0.3
+  * Games using WebGL (created in Unity) get stuck after very short
+    time of gameplay (bmo#1502748)
+  * Slow page loading for some users with specific proxy configurations
+    (bmo#1495024)
+  * Disable HTTP response throttling by default for causing bugs with
+    videos in background tabs (bmo#1503354)
+  * Opening magnet links no longer works (bmo#1498934)
+  * Crash fixes (bmo#1498510, bmo#1503424)
+- removed mozilla-newer-cbindgen.patch; no longer needed
+
+-------------------------------------------------------------------
+Thu Nov  8 14:59:13 UTC 2018 - wr@rosenauer.org
+
+- update to Firefox 63.0.1
+  * Snippets are not loaded due to missing element (bmo#1503047)
+  * Print preview always shows 30& scale when it is actually
+    Shrink To Fit (bmo#1501952)
+  * Dialog displayed when closing multiple windows shows unreplaced
+    %1$S placeholder in Japanese and potentially other locales
+    (bmo#1500823)
+
+-------------------------------------------------------------------
+Mon Oct 29 14:07:51 UTC 2018 - wr@rosenauer.org
+
+- update to Firefox 63.0
   * WebExtensions now run in their own process on Linux
   * The Ctrl+Tab shortcut now displays thumbnail previews of your
     tabs and cycles through tabs in recently used order. This new
     default behavior is activated only in new profiles and can be
     changed in preferences.
   * Added support for Web Components custom elements and shadow DOM
+  MFSA 2018-26 (bsc#1112852)
+  * CVE-2018-12391 (bmo#1478843) (Android-only)
+    HTTP Live Stream audio data is accessible cross-origin
+  * CVE-2018-12392 (bmo#1492823)
+    Crash with nested event loops
+  * CVE-2018-12393 (bmo#1495011) (only affects non-64-bit archs)
+    Integer overflow during Unicode conversion while loading JavaScript
+  * CVE-2018-12395 (bmo#1467523)
+    WebExtension bypass of domain restrictions through header rewriting
+  * CVE-2018-12396 (bmo#1483602)
+    WebExtension content scripts can execute in disallowed contexts
+  * CVE-2018-12397 (bmo#1487478)
+    Missing warning prompt when WebExtension requests local file access
+  * CVE-2018-12398 (bmo#1460538, bmo#1488061)
+    CSP bypass through stylesheet injection in resource URIs
+  * CVE-2018-12399 (bmo#1490276)
+    Spoofing of protocol registration notification bar
+  * CVE-2018-12400 (bmo#1448305) (Android only)
+    Favicons are cached in private browsing mode on Firefox for Android
+  * CVE-2018-12401 (bmo#1422456)
+    DOS attack through special resource URI parsing
+  * CVE-2018-12402 (bmo#1469916)
+    SameSite cookies leak when pages are explicitly saved
+  * CVE-2018-12403 (bmo#1484753)
+    Mixed content warning is not displayed when HTTPS page loads a favicon over HTTP
+  * CVE-2018-12388 (bmo#1472639, bmo#1485698, bmo#1301547, bmo#1471427,
+    bmo#1379411, bmo#1482122, bmo#1486314, bmo#1487167)
+    Memory safety bugs fixed in Firefox 63
+  * CVE-2018-12390 (bmo#1487098, bmo#1487660, bmo#1490234, bmo#1496159,
+    bmo#1443748, bmo#1496340, bmo#1483905, bmo#1493347, bmo#1488803,
+    bmo#1498701, bmo#1498482, bmo#1442010, bmo#1495245, bmo#1483699,
+    bmo#1469486, bmo#1484905, bmo#1490561, bmo#1492524, bmo#1481844)
+    Memory safety bugs fixed in Firefox 63 and Firefox ESR 60.3
 - requires NSPR 4.20, NSS 3.39 and Rust 1.28
+- latest rust does not provide rust-std so stop requiring it
+- requires rust-cbindgen >= 0.6.2 to build
+- requires nodejs >= 8.11 to build
+- added mozilla-bmo1491289.patch to fix system NSS build (bmo#1491289)
+- added mozilla-cubeb-noreturn.patch to fix non-return function
+- added mozilla-newer-cbindgen.patch to fix build with cbindgen 0.6.7
+- disable elfhack for TW and newer due to build errors
+- removed obsolete patches
+  * mozilla-no-return.patch
+  * mozilla-no-stdcxx-check.patch
+
+-------------------------------------------------------------------
+Thu Oct 25 14:39:04 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Update _constraints for armv6/7
+
+-------------------------------------------------------------------
+Thu Oct 25 08:50:24 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Add patch to fix build on armv7:
+  * mozilla-bmo1463035.patch
 
 -------------------------------------------------------------------
 Tue Oct  2 21:28:31 UTC 2018 - astieger@suse.com
--- a/MozillaFirefox/MozillaFirefox.spec	Mon Oct 22 11:26:41 2018 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec	Sun Mar 17 10:00:10 2019 +0100
@@ -1,8 +1,8 @@
 #
 # spec file for package MozillaFirefox
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
-#               2006-2018 Wolfgang Rosenauer
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+#               2006-2019 Wolfgang Rosenauer
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -13,21 +13,24 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 # changed with every update
-%define major          62
-%define mainver        %major.99
-%define orig_version   63.0
-%define orig_suffix    b14
+%define major          65
+%define mainver        %major.0.1
+%define orig_version   65.0.1
+%define orig_suffix    %{nil}
 %define update_channel beta
 %define branding       1
-%define releasedate    20181011200118
+%define releasedate    20190211233335
 %define source_prefix  firefox-%{orig_version}
 
-# PIE, full relro (x86_64 for now)
+# always build with GCC as SUSE Security Team requires that
+%define clang_build 0
+
+# PIE, full relro
 %define build_hardened 1
 
 # Firefox only supports i686
@@ -66,7 +69,7 @@
 %else
 BuildRequires:  gcc-c++
 %endif
-BuildRequires:  cargo
+BuildRequires:  cargo >= 1.30
 BuildRequires:  libXcomposite-devel
 BuildRequires:  libcurl-devel
 BuildRequires:  libidl-devel
@@ -75,12 +78,13 @@
 BuildRequires:  libproxy-devel
 BuildRequires:  makeinfo
 BuildRequires:  mozilla-nspr-devel >= 4.20
-BuildRequires:  mozilla-nss-devel >= 3.39
+BuildRequires:  mozilla-nss-devel >= 3.41
+BuildRequires:  nodejs >= 8.11
 BuildRequires:  python-devel
 BuildRequires:  python2-xml
 BuildRequires:  python3 >= 3.5
-BuildRequires:  rust >= 1.28
-BuildRequires:  rust-std
+BuildRequires:  rust >= 1.30
+BuildRequires:  rust-cbindgen >= 0.6.7
 BuildRequires:  startup-notification-devel
 BuildRequires:  unzip
 BuildRequires:  update-desktop-files
@@ -155,9 +159,10 @@
 Patch2:         mozilla-kde.patch
 Patch3:         mozilla-ntlm-full-path.patch
 Patch4:         mozilla-openaes-decl.patch
-Patch6:         mozilla-reduce-files-per-UnifiedBindings.patch
 Patch7:         mozilla-aarch64-startup-crash.patch
 Patch8:         mozilla-bmo256180.patch
+Patch9:         mozilla-bmo1463035.patch
+Patch10:        mozilla-cubeb-noreturn.patch
 # Firefox/browser
 Patch101:       firefox-kde.patch
 Patch102:       firefox-branded-icons.patch
@@ -261,11 +266,10 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
-%ifarch %ix86
-%patch6 -p1
-%endif
 %patch7 -p1
 %patch8 -p1
+%patch9 -p1
+%patch10 -p1
 # Firefox
 %patch101 -p1
 %patch102 -p1
@@ -293,31 +297,25 @@
 export MOZ_TELEMETRY_REPORTING=1
 %if 0%{?suse_version} <= 1320
 export CC=gcc-7
+%else
+%if 0%{?clang_build} == 0
+export CC=gcc
+export CXX=g++
 %endif
-export CFLAGS="%{optflags} -fno-strict-aliasing"
-# boo#986541: add -fno-delete-null-pointer-checks for gcc6
-%if 0%{?suse_version} > 1320
-export CFLAGS="$CFLAGS -fno-delete-null-pointer-checks"
-%endif
-%ifarch %arm
-export CFLAGS="${CFLAGS/-g / }"
 %endif
 %ifarch %arm %ix86
 # Limit RAM usage during link
 export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
 %endif
 %if 0%{?build_hardened}
-%ifarch x86_64
-export LDFLAGS="${LDFLAGS} -Wl,-z,relro,-z,now"
-%endif
+export LDFLAGS="${LDFLAGS} -fPIC -Wl,-z,relro,-z,now"
 %endif
 %ifarch ppc64 ppc64le
+%if 0%{?clang_build} == 0
 export CFLAGS="$CFLAGS -mminimal-toc"
 %endif
+%endif
 export CXXFLAGS="$CFLAGS"
-%ifarch %{arm}
-export RUSTFLAGS="-Cdebuginfo=0"
-%endif
 export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
 %limit_build -m 1500
 cat << EOF > $MOZCONFIG
@@ -334,24 +332,16 @@
 %if 0%{?suse_version} >= 1550
 ac_add_options --disable-gconf
 %endif
-%if 0%{?build_hardened}
-ac_add_options --enable-pie
-%endif
-# gcc7 (boo#104105)
-%if 0%{?suse_version} > 1320
-ac_add_options --enable-optimize="-g -O2"
+# bmo#1441155 - Disable the generation of Rust debug symbols on Linux32
+%ifarch %ix86 %arm
+ac_add_options --disable-debug-symbols
+%else
+ac_add_options --enable-debug-symbols
 %endif
-%ifarch %arm
-%if 0%{?suse_version} > 1230
-ac_add_options --disable-optimize
-%endif
+%if 0%{?suse_version} > 1549
+%ifnarch aarch64 ppc64 ppc64le
+ac_add_options --disable-elf-hack
 %endif
-# bmo#1441155 - Disable the generation of Rust debug symbols on Linux32
-%ifarch %ix86
-ac_add_options --disable-debug-symbols
-%endif
-%ifarch %arm
-ac_add_options --disable-elf-hack
 %endif
 ac_add_options --with-system-nspr
 ac_add_options --with-system-nss
@@ -390,6 +380,12 @@
 %ifarch aarch64 %arm s390x
 ac_add_options --disable-webrtc
 %endif
+%ifarch x86_64
+# LTO needs newer toolchain stack only (at least GCC 8.2.1 (r268506)
+%if 0%{?suse_version} > 1500
+ac_add_options --enable-lto
+%endif
+%endif
 EOF
 ./mach build
 
--- a/MozillaFirefox/_constraints	Mon Oct 22 11:26:41 2018 +0200
+++ b/MozillaFirefox/_constraints	Sun Mar 17 10:00:10 2019 +0100
@@ -2,25 +2,16 @@
 <constraints>
   <hardware>
     <disk>
-      <size unit="G">16</size>
+      <size unit="G">22</size>
     </disk>
     <memory>
-      <size unit="G">12</size>
+      <size unit="G">8</size>
     </memory>
   </hardware>
   <overwrite>
     <conditions>
       <arch>armv6l</arch>
       <arch>armv7l</arch>
-    </conditions>
-    <hardware>
-      <memory>
-        <size unit="M">2600</size>
-      </memory>
-    </hardware>
-  </overwrite>
-  <overwrite>
-    <conditions>
       <arch>aarch64</arch>
     </conditions>
     <hardware>
@@ -29,4 +20,14 @@
       </memory>
     </hardware>
   </overwrite>
+  <overwrite>
+    <conditions>
+      <arch>x86_64</arch>
+    </conditions>
+    <hardware>
+      <memory>
+        <size unit="G">16</size>
+      </memory>
+    </hardware>
+  </overwrite>
 </constraints>
--- a/MozillaFirefox/create-tar.sh	Mon Oct 22 11:26:41 2018 +0200
+++ b/MozillaFirefox/create-tar.sh	Sun Mar 17 10:00:10 2019 +0100
@@ -7,9 +7,9 @@
 
 CHANNEL="beta"
 BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="FIREFOX_63_0b14_RELEASE"
-VERSION="63.0"
-VERSION_SUFFIX="b14"
+RELEASE_TAG="1ea7b51ef5bb91bdc34fb7406fd4d35ed7961363"
+VERSION="65.0.1"
+VERSION_SUFFIX=""
 LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json"
 
 # check required tools
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-bmo1463035.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -0,0 +1,1 @@
+../mozilla-bmo1463035.patch
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-cubeb-noreturn.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -0,0 +1,1 @@
+../mozilla-cubeb-noreturn.patch
\ No newline at end of file
--- a/MozillaFirefox/mozilla-reduce-files-per-UnifiedBindings.patch	Mon Oct 22 11:26:41 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-reduce-files-per-UnifiedBindings.patch
\ No newline at end of file
--- a/MozillaFirefox/source-stamp.txt	Mon Oct 22 11:26:41 2018 +0200
+++ b/MozillaFirefox/source-stamp.txt	Sun Mar 17 10:00:10 2019 +0100
@@ -1,2 +1,2 @@
-REV=91955baf362b
-REPO=http://hg.mozilla.org/releases/mozilla-beta
+REV=1ea7b51ef5bb
+REPO=http://hg.mozilla.org/releases/mozilla-release
--- a/firefox-kde.patch	Mon Oct 22 11:26:41 2018 +0200
+++ b/firefox-kde.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -1,11 +1,11 @@
 # HG changeset patch
-# Parent  fdf78810e83396d10418791fbe32bed6bfe1558b
+# Parent  693f0baece29cc958a7d91b89fd12e3b89a502e3
 
 diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
 new file mode 100644
 --- /dev/null
 +++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,1317 @@
+@@ -0,0 +1,1395 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -19,6 +19,12 @@
 +     both "content" and "skin" packages, which bug 1385444 will unify later. -->
 +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
 +
++<!-- While these stylesheets are defined in Toolkit, they are only used in the
++     main browser window, so we can load them here. Bug 1474241 is on file to
++     consider moving these widgets to the "browser" folder. -->
++<?xml-stylesheet href="chrome://global/content/tabprompts.css" type="text/css"?>
++<?xml-stylesheet href="chrome://global/skin/tabprompts.css" type="text/css"?>
++
 +<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
 +<?xml-stylesheet href="chrome://browser/content/tabbrowser.css" type="text/css"?>
 +<?xml-stylesheet href="chrome://browser/content/downloads/downloads.css" type="text/css"?>
@@ -72,7 +78,12 @@
 +        fullscreenbutton="true"
 +        sizemode="normal"
 +        retargetdocumentfocus="urlbar"
-+        persist="screenX screenY width height sizemode">
++        persist="screenX screenY width height sizemode"
++#ifdef BROWSER_XHTML
++        hidden="true"
++        mozpersist=""
++#endif
++        >
 +
 +# All JS files which are needed by browser.xul and other top level windows to
 +# support MacOS specific features *must* go into the global-scripts.inc file so
@@ -85,14 +96,34 @@
 +#endif
 +>
 +  Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-captivePortal.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-compacttheme.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-contentblocking.js", this);
++#ifdef MOZ_DATA_REPORTING
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-data-submission-info-bar.js", this);
++#endif
++#ifndef MOZILLA_OFFICIAL
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-development-helpers.js", this);
++#endif
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-media.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-pageActions.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-plugins.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-sidebar.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/browser-tabsintitlebar.js", this);
 +  Services.scriptloader.loadSubScript("chrome://browser/content/tabbrowser.js", this);
++  Services.scriptloader.loadSubScript("chrome://browser/content/search/searchbar.js", this);
 +
 +  window.onload = gBrowserInit.onLoad.bind(gBrowserInit);
 +  window.onunload = gBrowserInit.onUnload.bind(gBrowserInit);
 +  window.onclose = WindowIsClosing;
++
 +#ifdef BROWSER_XHTML
-+  window.addEventListener("DOMContentLoaded",
-+    gBrowserInit.onBeforeInitialXULLayout.bind(gBrowserInit), { once: true });
++  window.addEventListener("readystatechange", () => {
++    // We initially hide the window to prevent layouts during parse. This lets us
++    // avoid accidental XBL construction and better match browser.xul (see Bug 1497975).
++    gBrowserInit.onBeforeInitialXULLayout();
++    document.documentElement.removeAttribute("hidden");
++  }, { once: true, capture: true });
 +#else
 +  window.addEventListener("MozBeforeInitialXULLayout",
 +    gBrowserInit.onBeforeInitialXULLayout.bind(gBrowserInit), { once: true });
@@ -116,13 +147,12 @@
 +               onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;">
 +      <menuitem id="context_reloadTab" label="&reloadTab.label;" accesskey="&reloadTab.accesskey;"
 +                oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/>
-+      <menuitem id="context_reloadSelectedTabs" label="&reloadSelectedTabs.label;" hidden="true"
-+                accesskey="&reloadSelectedTabs.accesskey;"
++      <menuitem id="context_reloadSelectedTabs" label="&reloadTabs.label;" hidden="true"
++                accesskey="&reloadTabs.accesskey;"
 +                oncommand="gBrowser.reloadMultiSelectedTabs();"/>
 +      <menuitem id="context_toggleMuteTab" oncommand="TabContextMenu.contextTab.toggleMuteAudio();"/>
 +      <menuitem id="context_toggleMuteSelectedTabs" hidden="true"
 +                oncommand="gBrowser.toggleMuteAudioOnMultiSelectedTabs(TabContextMenu.contextTab);"/>
-+      <menuseparator/>
 +      <menuitem id="context_pinTab" label="&pinTab.label;"
 +                accesskey="&pinTab.accesskey;"
 +                oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
@@ -138,6 +168,21 @@
 +      <menuitem id="context_duplicateTab" label="&duplicateTab.label;"
 +                accesskey="&duplicateTab.accesskey;"
 +                oncommand="duplicateTabIn(TabContextMenu.contextTab, 'tab');"/>
++      <menuitem id="context_duplicateTabs" label="&duplicateTabs.label;"
++                accesskey="&duplicateTabs.accesskey;"
++                oncommand="TabContextMenu.duplicateSelectedTabs();"/>
++      <menuseparator/>
++      <menuitem id="context_selectAllTabs" label="&selectAllTabs.label;" accesskey="&selectAllTabs.accesskey;"
++                oncommand="gBrowser.selectAllTabs();"/>
++      <menuitem id="context_bookmarkSelectedTabs"
++                hidden="true"
++                label="&bookmarkSelectedTabs.label;"
++                accesskey="&bookmarkSelectedTabs.accesskey;"
++                oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"/>
++      <menuitem id="context_bookmarkTab"
++                label="&bookmarkTab.label;"
++                accesskey="&bookmarkTab.accesskey;"
++                oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.getUniquePages([TabContextMenu.contextTab]));"/>
 +      <menu id="context_reopenInContainer"
 +            label="&reopenInContainer.label;"
 +            accesskey="&reopenInContainer.accesskey;"
@@ -145,43 +190,46 @@
 +        <menupopup oncommand="TabContextMenu.reopenInContainer(event);"
 +                   onpopupshowing="TabContextMenu.createReopenInContainerMenu(event);"/>
 +      </menu>
-+      <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
-+                accesskey="&moveToNewWindow.accesskey;"
-+                tbattr="tabbrowser-multiple"
-+                oncommand="gBrowser.replaceTabsWithWindow(TabContextMenu.contextTab);"/>
-+      <menuseparator id="context_sendTabToDevice_separator" class="sync-ui-item"/>
-+      <menu id="context_sendTabToDevice" label="&sendTabToDevice.label;"
-+            class="sync-ui-item"
-+            accesskey="&sendTabToDevice.accesskey;">
++      <menu id="context_moveTabOptions"
++            multiselectcontextlabel="&moveSelectedTabOptions.label;"
++            multiselectcontextaccesskey="&moveSelectedTabOptions.accesskey;"
++            nonmultiselectcontextlabel="&moveTabOptions.label;"
++            nonmultiselectcontextaccesskey="&moveTabOptions.accesskey;">
++        <menupopup id="moveTabOptionsMenu">
++          <menuitem id="context_moveToStart"
++                    label="&moveToStart.label;"
++                    accesskey="&moveToStart.accesskey;"
++                    tbattr="tabbrowser-multiple"
++                    oncommand="gBrowser.moveTabsToStart(TabContextMenu.contextTab);"/>
++          <menuitem id="context_moveToEnd"
++                    label="&moveToEnd.label;"
++                    accesskey="&moveToEnd.accesskey;"
++                    tbattr="tabbrowser-multiple"
++                    oncommand="gBrowser.moveTabsToEnd(TabContextMenu.contextTab);"/>
++          <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
++                    accesskey="&moveToNewWindow.accesskey;"
++                    tbattr="tabbrowser-multiple"
++                    oncommand="gBrowser.replaceTabsWithWindow(TabContextMenu.contextTab);"/>
++        </menupopup>
++      </menu>
++      <menu id="context_sendTabToDevice"
++            class="sync-ui-item">
 +        <menupopup id="context_sendTabToDevicePopupMenu"
-+                   onpopupshowing="gSync.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle);"/>
++                   onpopupshowing="gSync.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle, TabContextMenu.contextTab.multiselected);"/>
 +      </menu>
 +      <menuseparator/>
-+      <menuitem id="context_reloadAllTabs" label="&reloadAllTabs.label;" accesskey="&reloadAllTabs.accesskey;"
-+                tbattr="tabbrowser-multiple-visible"
-+                oncommand="gBrowser.reloadAllTabs();"/>
-+       <menuitem id="context_bookmarkSelectedTabs"
-+                hidden="true"
-+                label="&bookmarkSelectedTabs.label;"
-+                accesskey="&bookmarkSelectedTabs.accesskey;"
-+                oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"/>
-+      <menuitem id="context_bookmarkAllTabs"
-+                label="&bookmarkAllTabs.label;"
-+                accesskey="&bookmarkAllTabs.accesskey;"
-+                command="Browser:BookmarkAllTabs"/>
 +      <menuitem id="context_closeTabsToTheEnd" label="&closeTabsToTheEnd.label;" accesskey="&closeTabsToTheEnd.accesskey;"
 +                oncommand="gBrowser.removeTabsToTheEndFrom(TabContextMenu.contextTab, {animate: true});"/>
 +      <menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
 +                oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
-+      <menuseparator/>
 +      <menuitem id="context_undoCloseTab"
 +                label="&undoCloseTab.label;"
 +                accesskey="&undoCloseTab.accesskey;"
 +                observes="History:UndoCloseTab"/>
 +      <menuitem id="context_closeTab" label="&closeTab.label;" accesskey="&closeTab.accesskey;"
 +                oncommand="gBrowser.removeTab(TabContextMenu.contextTab, { animate: true });"/>
-+      <menuitem id="context_closeSelectedTabs" label="&closeSelectedTabs.label;"
-+                hidden="true" accesskey="&closeSelectedTabs.accesskey;"
++      <menuitem id="context_closeSelectedTabs" label="&closeTabs.label;"
++                hidden="true" accesskey="&closeTabs.accesskey;"
 +                oncommand="gBrowser.removeMultiSelectedTabs();"/>
 +    </menupopup>
 +
@@ -222,8 +270,27 @@
 +           level="parent"
 +           overflowpadding="15" />
 +
-+   <!-- for date/time picker. consumeoutsideclicks is set to never, so that
-+        clicks on the anchored input box are never consumed. -->
++    <!-- for url bar autocomplete -->
++    <panel id="urlbar-results"
++           role="group"
++           noautofocus="true"
++           hidden="true"
++           flip="none"
++           level="parent">
++      <html:div class="urlbarView-body-outer">
++        <html:div class="urlbarView-body-inner">
++          <!-- TODO: add search suggestions notification -->
++          <html:div class="urlbarView-results"/>
++        </html:div>
++      </html:div>
++      <hbox class="search-one-offs"
++            compact="true"
++            includecurrentengine="true"
++            disabletab="true"/>
++    </panel>
++
++    <!-- for date/time picker. consumeoutsideclicks is set to never, so that
++         clicks on the anchored input box are never consumed. -->
 +    <panel id="DateTimePickerPanel"
 +           type="arrow"
 +           hidden="true"
@@ -277,6 +344,7 @@
 +                  oncommand="StarUI.onShowForNewBookmarksCheckboxCommand();"/>
 +      </vbox>
 +      <hbox id="editBookmarkPanelBottomButtons"
++            class="panel-footer"
 +            style="min-width: &editBookmark.panel.width;;">
 +#ifdef XP_UNIX
 +        <button id="editBookmarkPanelDoneButton"
@@ -374,43 +442,60 @@
 +    </panel>
 +
 +    <menupopup id="toolbar-context-menu"
-+               onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator')); UpdateDownloadsAutoHide(this); UpdateManageExtension(this)">
-+      <menuitem oncommand="openAboutAddonsForContextAction(this.parentElement)"
++               onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator')); ToolbarContextMenu.updateDownloadsAutoHide(this); ToolbarContextMenu.updateExtension(this)">
++      <menuitem oncommand="ToolbarContextMenu.openAboutAddonsForContextAction(this.parentElement)"
 +                accesskey="&customizeMenu.manageExtension.accesskey;"
 +                label="&customizeMenu.manageExtension.label;"
 +                contexttype="toolbaritem"
 +                class="customize-context-manageExtension"/>
++      <menuitem oncommand="ToolbarContextMenu.removeExtensionForContextAction(this.parentElement)"
++                accesskey="&customizeMenu.removeExtension.accesskey;"
++                label="&customizeMenu.removeExtension.label;"
++                contexttype="toolbaritem"
++                class="customize-context-removeExtension"/>
 +      <menuseparator/>
 +      <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
 +                accesskey="&customizeMenu.pinToOverflowMenu.accesskey;"
 +                label="&customizeMenu.pinToOverflowMenu.label;"
 +                contexttype="toolbaritem"
 +                class="customize-context-moveToPanel"/>
-+      <menuitem oncommand="onDownloadsAutoHideChange(event)"
++      <menuitem id="toolbar-context-autohide-downloads-button"
++                oncommand="ToolbarContextMenu.onDownloadsAutoHideChange(event);"
 +                type="checkbox"
 +                accesskey="&customizeMenu.autoHideDownloadsButton.accesskey;"
 +                label="&customizeMenu.autoHideDownloadsButton.label;"
-+                contexttype="toolbaritem"
-+                class="customize-context-autoHide"/>
++                contexttype="toolbaritem"/>
 +      <menuitem oncommand="gCustomizeMode.removeFromArea(document.popupNode)"
 +                accesskey="&customizeMenu.removeFromToolbar.accesskey;"
 +                label="&customizeMenu.removeFromToolbar.label;"
 +                contexttype="toolbaritem"
 +                class="customize-context-removeFromToolbar"/>
-+      <menuitem id="toolbar-context-reloadAllTabs"
-+                class="toolbaritem-tabsmenu"
++      <menuitem id="toolbar-context-reloadSelectedTab"
++                contexttype="tabbar"
++                oncommand="gBrowser.reloadMultiSelectedTabs();"
++                label="&toolbarContextMenu.reloadSelectedTab.label;"
++                accesskey="&toolbarContextMenu.reloadSelectedTab.accesskey;"/>
++      <menuitem id="toolbar-context-reloadSelectedTabs"
++                contexttype="tabbar"
++                oncommand="gBrowser.reloadMultiSelectedTabs();"
++                label="&toolbarContextMenu.reloadSelectedTabs.label;"
++                accesskey="&toolbarContextMenu.reloadSelectedTabs.accesskey;"/>
++      <menuitem id="toolbar-context-bookmarkSelectedTab"
 +                contexttype="tabbar"
-+                oncommand="gBrowser.reloadAllTabs();"
-+                label="&toolbarContextMenu.reloadAllTabs.label;"
-+                accesskey="&toolbarContextMenu.reloadAllTabs.accesskey;"/>
-+      <menuitem id="toolbar-context-bookmarkAllTabs"
-+                class="toolbaritem-tabsmenu"
++                oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
++                label="&toolbarContextMenu.bookmarkSelectedTab.label;"
++                accesskey="&toolbarContextMenu.bookmarkSelectedTab.accesskey;"/>
++      <menuitem id="toolbar-context-bookmarkSelectedTabs"
 +                contexttype="tabbar"
-+                command="Browser:BookmarkAllTabs"
-+                label="&toolbarContextMenu.bookmarkAllTabs.label;"
-+                accesskey="&toolbarContextMenu.bookmarkAllTabs.accesskey;"/>
++                oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
++                label="&toolbarContextMenu.bookmarkSelectedTabs.label;"
++                accesskey="&toolbarContextMenu.bookmarkSelectedTabs.accesskey;"/>
++      <menuitem id="toolbar-context-selectAllTabs"
++                contexttype="tabbar"
++                oncommand="gBrowser.selectAllTabs();"
++                label="&toolbarContextMenu.selectAllTabs.label;"
++                accesskey="&toolbarContextMenu.selectAllTabs.accesskey;"/>
 +      <menuitem id="toolbar-context-undoCloseTab"
-+                class="toolbaritem-tabsmenu"
 +                contexttype="tabbar"
 +                label="&toolbarContextMenu.undoCloseTab.label;"
 +                accesskey="&toolbarContextMenu.undoCloseTab.accesskey;"
@@ -496,7 +581,6 @@
 +           noautofocus="true"
 +           copyURL-title="&pageAction.copyLink.label;"
 +           emailLink-title="&emailPageCmd.label;"
-+           sendToDevice-title="&pageAction.sendTabToDevice.label;"
 +           sendToDevice-notReadyTitle="&sendToDevice.syncNotReady.label;"
 +           shareURL-title="&pageAction.shareUrl.label;"
 +           shareMore-label="&pageAction.shareMore.label;">
@@ -534,10 +618,10 @@
 +                label="&pageAction.removeFromUrlbar.label;"
 +                oncommand="BrowserPageActions.togglePinningForContextAction();"/>
 +      <menuitem class="pageActionContextMenuItem extensionUnpinned"
-+                label="&pageAction.allowInUrlbar.label;"
++                label="&pageAction.addToUrlbar.label;"
 +                oncommand="BrowserPageActions.togglePinningForContextAction();"/>
 +      <menuitem class="pageActionContextMenuItem extensionPinned"
-+                label="&pageAction.disallowInUrlbar.label;"
++                label="&pageAction.removeFromUrlbar.label;"
 +                oncommand="BrowserPageActions.togglePinningForContextAction();"/>
 +      <menuseparator class="pageActionContextMenuItem extensionPinned extensionUnpinned"/>
 +      <menuitem class="pageActionContextMenuItem extensionPinned extensionUnpinned"
@@ -550,20 +634,20 @@
 +    <tooltip id="tabbrowser-tab-tooltip" onpopupshowing="gBrowser.createTooltip(event);"/>
 +
 +    <tooltip id="back-button-tooltip">
-+      <label class="tooltip-label" value="&backButton.tooltip;"/>
++      <description class="tooltip-label" value="&backButton.tooltip;"/>
 +#ifdef XP_MACOSX
-+      <label class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
++      <description class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
 +#else
-+      <label class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
++      <description class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
 +#endif
 +    </tooltip>
 +
 +    <tooltip id="forward-button-tooltip">
-+      <label class="tooltip-label" value="&forwardButton.tooltip;"/>
++      <description class="tooltip-label" value="&forwardButton.tooltip;"/>
 +#ifdef XP_MACOSX
-+      <label class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
++      <description class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
 +#else
-+      <label class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
++      <description class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
 +#endif
 +    </tooltip>
 +
@@ -655,110 +739,101 @@
 +  </popupset>
 +  <box id="appMenu-viewCache" hidden="true"/>
 +
-+<vbox id="titlebar">
-+  <hbox id="titlebar-content">
-+    <spacer id="titlebar-spacer" flex="1"/>
-+    <hbox id="titlebar-buttonbox-container">
-+      <hbox id="titlebar-buttonbox" class="titlebar-color">
-+        <toolbarbutton class="titlebar-button" id="titlebar-min" oncommand="window.minimize();"/>
-+        <toolbarbutton class="titlebar-button" id="titlebar-max" oncommand="onTitlebarMaxClick();"/>
-+        <toolbarbutton class="titlebar-button" id="titlebar-close" command="cmd_closeWindow"/>
-+      </hbox>
-+    </hbox>
-+#ifdef XP_MACOSX
-+    <!-- OS X does not natively support RTL for its titlebar items, so we prevent this secondary
-+         buttonbox from reversing order in RTL by forcing an LTR direction. -->
-+    <hbox id="titlebar-secondary-buttonbox" dir="ltr">
-+      <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;" aria-live="polite"/>
-+      <hbox class="private-browsing-indicator"/>
-+      <hbox id="titlebar-fullscreen-button"/>
-+    </hbox>
++  <toolbox id="navigator-toolbox">
++
++    <vbox id="titlebar">
++      <!-- Menu -->
++      <toolbar type="menubar" id="toolbar-menubar"
++               class="browser-toolbar chromeclass-menubar titlebar-color"
++               customizable="true"
++               mode="icons"
++#ifdef MENUBAR_CAN_AUTOHIDE
++               toolbarname="&menubarCmd.label;"
++               accesskey="&menubarCmd.accesskey;"
++               autohide="true"
 +#endif
-+  </hbox>
-+</vbox>
-+
-+  <toolbox id="navigator-toolbox">
-+    <!-- Menu -->
-+    <toolbar type="menubar" id="toolbar-menubar"
-+             class="browser-toolbar chromeclass-menubar titlebar-color"
-+             customizable="true"
-+             mode="icons"
-+#ifdef MENUBAR_CAN_AUTOHIDE
-+             toolbarname="&menubarCmd.label;"
-+             accesskey="&menubarCmd.accesskey;"
-+             autohide="true"
-+#endif
-+             context="toolbar-context-menu">
-+      <toolbaritem id="menubar-items" align="center">
++               context="toolbar-context-menu">
++        <toolbaritem id="menubar-items" align="center">
 +# The entire main menubar is placed into browser-menubar.inc, so that it can be
 +# shared with other top level windows in macWindow.inc.xul.
 +#include browser-menubar.inc
-+      </toolbaritem>
++        </toolbaritem>
++        <spacer flex="1" skipintoolbarset="true" ordinal="1000"/>
++#include titlebar-items.inc.xul
++      </toolbar>
++
++      <toolbar id="TabsToolbar"
++               class="browser-toolbar titlebar-color"
++               fullscreentoolbar="true"
++               customizable="true"
++               customizationtarget="TabsToolbar-customization-target"
++               mode="icons"
++               aria-label="&tabsToolbar.label;"
++               context="toolbar-context-menu"
++               flex="1">
++        <vbox flex="1" class="toolbar-items">
++          <spacer flex="1000"/>
++
++          <hbox id="TabsToolbar-customization-target" flex="1">
++            <hbox class="titlebar-spacer" type="pre-tabs"
++                  skipintoolbarset="true"/>
++
++            <tabs id="tabbrowser-tabs"
++                  flex="1"
++                  setfocus="false"
++                  tooltip="tabbrowser-tab-tooltip"
++                  stopwatchid="FX_TAB_CLICK_MS">
++              <tab class="tabbrowser-tab" selected="true" visuallyselected="true" fadein="true"/>
++            </tabs>
++
++            <toolbarbutton id="new-tab-button"
++                           class="toolbarbutton-1 chromeclass-toolbar-additional"
++                           label="&tabCmd.label;"
++                           command="cmd_newNavigatorTab"
++                           onclick="checkForMiddleClick(this, event);"
++                           tooltip="dynamic-shortcut-tooltip"
++                           ondrop="newTabButtonObserver.onDrop(event)"
++                           ondragover="newTabButtonObserver.onDragOver(event)"
++                           ondragenter="newTabButtonObserver.onDragOver(event)"
++                           ondragexit="newTabButtonObserver.onDragExit(event)"
++                           cui-areatype="toolbar"
++                           removable="true"/>
++
++            <toolbarbutton id="alltabs-button"
++                           class="toolbarbutton-1 chromeclass-toolbar-additional tabs-alltabs-button badged-button"
++                           oncommand="gTabsPanel.showAllTabsPanel();"
++                           label="&listAllTabs.label;"
++                           tooltiptext="&listAllTabs.label;"
++                           removable="false"/>
++
++            <hbox class="titlebar-spacer" type="post-tabs"
++                  ordinal="1000"
++                  skipintoolbarset="true"/>
++          </hbox>
++        </vbox>
 +
 +#ifndef XP_MACOSX
-+      <hbox class="titlebar-placeholder" type="caption-buttons" ordinal="1000"
-+            skipintoolbarset="true"/>
++        <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;"
++                ordinal="1000"
++                aria-live="polite" skipintoolbarset="true"/>
++        <hbox class="private-browsing-indicator" skipintoolbarset="true"
++              ordinal="1000"/>
 +#endif
-+    </toolbar>
-+
-+    <toolbar id="TabsToolbar"
-+             class="browser-toolbar titlebar-color"
-+             fullscreentoolbar="true"
-+             customizable="true"
-+             mode="icons"
-+             aria-label="&tabsToolbar.label;"
-+             context="toolbar-context-menu">
-+      <hbox class="titlebar-placeholder" type="pre-tabs"
-+            skipintoolbarset="true"/>
-+
-+      <tabs id="tabbrowser-tabs"
-+            flex="1"
-+            setfocus="false"
-+            tooltip="tabbrowser-tab-tooltip"
-+            stopwatchid="FX_TAB_CLICK_MS">
-+        <tab class="tabbrowser-tab" selected="true" visuallyselected="true" fadein="true"/>
-+      </tabs>
 +
-+      <toolbarbutton id="new-tab-button"
-+                     class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     label="&tabCmd.label;"
-+                     command="cmd_newNavigatorTab"
-+                     onclick="checkForMiddleClick(this, event);"
-+                     tooltip="dynamic-shortcut-tooltip"
-+                     ondrop="newTabButtonObserver.onDrop(event)"
-+                     ondragover="newTabButtonObserver.onDragOver(event)"
-+                     ondragenter="newTabButtonObserver.onDragOver(event)"
-+                     ondragexit="newTabButtonObserver.onDragExit(event)"
-+                     cui-areatype="toolbar"
-+                     removable="true"/>
-+
-+      <toolbarbutton id="alltabs-button"
-+                     class="toolbarbutton-1 chromeclass-toolbar-additional tabs-alltabs-button badged-button"
-+                     oncommand="gTabsPanel.showAllTabsPanel();"
-+                     label="&listAllTabs.label;"
-+                     tooltiptext="&listAllTabs.label;"
-+                     removable="false"/>
-+
-+      <hbox class="titlebar-placeholder" type="post-tabs"
-+            ordinal="1000"
-+            skipintoolbarset="true"/>
-+
-+      <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;"
-+              ordinal="1000"
-+              aria-live="polite" skipintoolbarset="true"/>
-+      <hbox class="private-browsing-indicator" skipintoolbarset="true"
-+            ordinal="1000"/>
-+      <hbox class="titlebar-placeholder" type="caption-buttons"
-+#ifndef XP_MACOSX
-+            ordinal="1000"
-+#endif
-+            skipintoolbarset="true"/>
++#include titlebar-items.inc.xul
 +
 +#ifdef XP_MACOSX
-+      <hbox class="titlebar-placeholder" type="fullscreen-button"
-+            skipintoolbarset="true"/>
++        <!-- OS X does not natively support RTL for its titlebar items, so we prevent this secondary
++             buttonbox from reversing order in RTL by forcing an LTR direction. -->
++        <hbox id="titlebar-secondary-buttonbox" dir="ltr">
++          <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;" aria-live="polite"/>
++          <hbox class="private-browsing-indicator"/>
++          <hbox id="titlebar-fullscreen-button"/>
++        </hbox>
 +#endif
-+    </toolbar>
++      </toolbar>
++
++    </vbox>
 +
 +    <toolbar id="nav-bar"
 +             class="browser-toolbar"
@@ -817,7 +892,7 @@
 +                       ondrop="homeButtonObserver.onDrop(event)"
 +                       ondragexit="homeButtonObserver.onDragExit(event)"
 +                       key="goHome"
-+                       onclick="BrowserGoHome(event);"
++                       onclick="BrowserHome(event);"
 +                       cui-areatype="toolbar"
 +                       tooltiptext="&homeButton.defaultPage.tooltip;"/>
 +        <toolbarspring cui-areatype="toolbar" class="chromeclass-toolbar-additional"/>
@@ -926,6 +1001,8 @@
 +                         tooltiptext="&urlbar.midiNotificationAnchor.tooltip;"/>
 +                  <image id="webauthn-notification-icon" class="notification-anchor-icon" role="button"
 +                         tooltiptext="&urlbar.webAuthnAnchor.tooltip;"/>
++                  <image id="storage-access-notification-icon" class="notification-anchor-icon storage-access-icon" role="button"
++                         tooltiptext="&urlbar.storageAccessAnchor.tooltip;"/>
 +                </box>
 +                <image id="connection-icon"/>
 +                <image id="extension-icon"/>
@@ -1064,6 +1141,10 @@
 +                       tooltiptext="&fullScreenClose.tooltip;"
 +                       oncommand="BrowserTryToCloseWindow();"/>
 +      </hbox>
++
++      <box id="library-animatable-box" class="toolbarbutton-animatable-box">
++        <image class="toolbarbutton-animatable-image"/>
++      </box>
 +    </toolbar>
 +
 +    <toolbar id="PersonalToolbar"
@@ -1245,9 +1326,6 @@
 +        <searchbar id="searchbar" flex="1"/>
 +      </toolbaritem>
 +    </toolbarpalette>
-+    <box id="library-animatable-box" class="toolbarbutton-animatable-box">
-+      <image class="toolbarbutton-animatable-image"/>
-+    </box>
 +  </toolbox>
 +
 +  <hbox id="fullscr-toggler" hidden="true"/>
@@ -1276,7 +1354,7 @@
 +
 +      <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" hidden="true"/>
 +      <vbox id="appcontent" flex="1">
-+        <notificationbox id="high-priority-global-notificationbox" notificationside="top"/>
++        <!-- gHighPriorityNotificationBox will be added here lazily. -->
 +        <tabbox id="tabbrowser-tabbox"
 +                flex="1" tabcontainer="tabbrowser-tabs">
 +          <tabpanels id="tabbrowser-tabpanels"
@@ -1319,7 +1397,7 @@
 +  </html:div>
 +
 +  <vbox id="browser-bottombox" layer="true">
-+    <notificationbox id="global-notificationbox" notificationside="bottom"/>
++    <!-- gNotificationBox will be added here lazily. -->
 +  </vbox>
 +
 +</window>
@@ -1367,7 +1445,7 @@
  
  #if defined(XP_WIN)
  #include "nsIEHistoryEnumerator.h"
-@@ -34,18 +34,16 @@ using namespace mozilla::browser;
+@@ -33,18 +33,16 @@ using namespace mozilla::browser;
  
  /////////////////////////////////////////////////////////////////////////////
  
@@ -1386,11 +1464,11 @@
  
  #if defined(XP_WIN)
  NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEHistoryEnumerator)
-@@ -70,17 +68,17 @@ NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID)
- NS_DEFINE_NAMED_CID(NS_MACATTRIBUTIONSERVICE_CID);
+@@ -67,17 +65,17 @@ NS_DEFINE_NAMED_CID(NS_MACATTRIBUTIONSER
  #endif
  
  static const mozilla::Module::CIDEntry kBrowserCIDs[] = {
+     // clang-format off
      { &kNS_BROWSERDIRECTORYPROVIDER_CID, false, nullptr, DirectoryProviderConstructor },
  #if defined(XP_WIN)
      { &kNS_SHELLSERVICE_CID, false, nullptr, nsWindowsShellServiceConstructor },
@@ -1398,17 +1476,17 @@
 -    { &kNS_SHELLSERVICE_CID, false, nullptr, nsGNOMEShellServiceConstructor },
 +    { &kNS_SHELLSERVICE_CID, false, nullptr, nsUnixShellServiceConstructor },
  #endif
-     { &kNS_FEEDSNIFFER_CID, false, nullptr, nsFeedSnifferConstructor },
      { &kNS_BROWSER_ABOUT_REDIRECTOR_CID, false, nullptr, AboutRedirector::Create },
  #if defined(XP_WIN)
      { &kNS_WINIEHISTORYENUMERATOR_CID, false, nullptr, nsIEHistoryEnumeratorConstructor },
  #elif defined(XP_MACOSX)
      { &kNS_SHELLSERVICE_CID, false, nullptr, nsMacShellServiceConstructor },
  #endif
+ #if defined(MOZ_WIDGET_COCOA)
 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
-@@ -327,16 +327,23 @@ var gMainPane = {
+@@ -289,16 +289,23 @@ var gMainPane = {
            this._backoffIndex++ : backoffTimes.length - 1]);
        };
  
@@ -1432,7 +1510,7 @@
      performanceSettingsLink.setAttribute("href", performanceSettingsUrl);
  
      this.updateDefaultPerformanceSettingsPref();
-@@ -962,16 +969,27 @@ var gMainPane = {
+@@ -1012,16 +1019,27 @@ var gMainPane = {
        // Reset exponential backoff delay time in order to do visual update in pollForDefaultBrowser.
        this._backoffIndex = 0;
  
@@ -1486,7 +1564,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/browser/components/shell/nsKDEShellService.cpp
-@@ -0,0 +1,204 @@
+@@ -0,0 +1,153 @@
 +/* -*- 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
@@ -1640,57 +1718,6 @@
 +    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +}
 +
-+NS_IMETHODIMP
-+nsKDEShellService::GetDefaultFeedReader(nsIFile** _retval)
-+{
-+    *_retval = nullptr;
-+
-+    nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
-+    if( !command )
-+        return NS_ERROR_FAILURE;
-+
-+    nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
-+    if( !str )
-+        return NS_ERROR_FAILURE;
-+
-+    str->SetData( NS_LITERAL_CSTRING( "GETDEFAULTFEEDREADER" ));
-+    command->AppendElement( str );
-+
-+    nsCOMPtr<nsIArray> output;
-+    if( !nsKDEUtils::command( command, getter_AddRefs( output ) ) )
-+        return NS_ERROR_FAILURE;
-+
-+    PRUint32 length;
-+    output->GetLength( &length );
-+    if( length != 1 )
-+        return NS_ERROR_FAILURE;
-+
-+    nsCOMPtr<nsISupportsCString> resstr = do_QueryElementAt( output, 0 );
-+    if( !resstr )
-+        return NS_ERROR_FAILURE;
-+
-+    nsAutoCString path;
-+    resstr->GetData( path );
-+    if (path.IsEmpty())
-+        return NS_ERROR_FAILURE;
-+
-+    nsresult rv;
-+    nsCOMPtr<nsIFile> defaultReader =
-+        do_CreateInstance("@mozilla.org/file/local;1", &rv);
-+    NS_ENSURE_SUCCESS(rv, rv);
-+
-+    rv = defaultReader->InitWithNativePath(path);
-+    NS_ENSURE_SUCCESS(rv, rv);
-+
-+    bool exists;
-+    rv = defaultReader->Exists(&exists);
-+    NS_ENSURE_SUCCESS(rv, rv);
-+    if (!exists)
-+        return NS_ERROR_FAILURE;
-+
-+    NS_ADDREF(*_retval = defaultReader);
-+    return NS_OK;
-+}
 diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h
 new file mode 100644
 --- /dev/null
@@ -1776,7 +1803,7 @@
 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
 --- a/browser/installer/package-manifest.in
 +++ b/browser/installer/package-manifest.in
-@@ -462,16 +462,18 @@
+@@ -451,16 +451,18 @@
  @RESPATH@/browser/defaults/settings/pinning
  @RESPATH@/browser/defaults/settings/main
  
--- a/mozilla-aarch64-startup-crash.patch	Mon Oct 22 11:26:41 2018 +0200
+++ b/mozilla-aarch64-startup-crash.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -1,32 +1,32 @@
 # HG changeset patch
 # Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10
-# Parent  07236b512cd930e3fc7a94fed549431ccaa51c90
+# Parent  7b5f6b68a8963228f738b803177f937481e19745
 Bug 991344 - Rpi3: Firefox crashes after a few seconds of usage
 
 diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
 --- a/netwerk/base/nsIOService.cpp
 +++ b/netwerk/base/nsIOService.cpp
-@@ -923,17 +923,23 @@ nsIOService::NewChannelFromURIWithProxyF
-                     "doesn't support nsIUploadChannel2. An extension has "
-                     "supplied a non-functional http protocol handler. This will "
-                     "break behavior and in future releases not work at all.");
-             }
-             gHasWarnedUploadChannel2 = true;
-         }
+@@ -842,17 +842,23 @@ nsresult nsIOService::NewChannelFromURIW
+             "doesn't support nsIUploadChannel2. An extension has "
+             "supplied a non-functional http protocol handler. This will "
+             "break behavior and in future releases not work at all.");
+       }
+       gHasWarnedUploadChannel2 = true;
      }
+   }
  
 +#if defined(__aarch64__)
-+    if (result) {
-+        channel.forget(result);
-+    }
++  if (result) {
++      channel.forget(result);
++  }
 +#else
-     channel.forget(result);
+   channel.forget(result);
 +#endif
-     return NS_OK;
+   return NS_OK;
  }
  
  NS_IMETHODIMP
- nsIOService::NewChannelFromURIWithProxyFlags2(nsIURI* aURI,
-                                               nsIURI* aProxyURI,
-                                               uint32_t aProxyFlags,
-                                               nsINode* aLoadingNode,
+ nsIOService::NewChannelFromURIWithProxyFlags2(
+     nsIURI *aURI, nsIURI *aProxyURI, uint32_t aProxyFlags,
+     nsINode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
+     nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-bmo1463035.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -0,0 +1,121 @@
+
+# HG changeset patch
+# User Mike Hommey <mh+mozilla@glandium.org>
+# Date 1526871862 -32400
+# Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43
+# Parent  25ab6bab437517a8a182f1ab77898ae13b26a696
+Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons
+
+For some reason, GNU as is not happy with the assembly generated after
+bug 1238661 anymore on Debian armel.
+
+OTOH, as mentioned in bug 1238661 comment 4, we actually don't need this
+workaround anymore, so let's just kill it.
+
+diff --git a/mfbt/LinuxSignal.h b/mfbt/LinuxSignal.h
+deleted file mode 100644
+--- a/mfbt/LinuxSignal.h
++++ /dev/null
+@@ -1,38 +0,0 @@
+-/* 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/. */
+-
+-#ifndef mozilla_LinuxSignal_h
+-#define mozilla_LinuxSignal_h
+-
+-namespace mozilla {
+-
+-#if defined(__arm__)
+-
+-// Some (old) Linux kernels on ARM have a bug where a signal handler
+-// can be called without clearing the IT bits in CPSR first. The result
+-// is that the first few instructions of the handler could be skipped,
+-// ultimately resulting in crashes. To workaround this bug, the handler
+-// on ARM is a trampoline that starts with enough NOP instructions, so
+-// that even if the IT bits are not cleared, only the NOP instructions
+-// will be skipped over.
+-
+-template <void (*H)(int, siginfo_t*, void*)>
+-__attribute__((naked)) void SignalTrampoline(int aSignal, siginfo_t* aInfo,
+-                                             void* aContext) {
+-  asm volatile("nop; nop; nop; nop" : : : "memory");
+-
+-  asm volatile("b %0" : : "X"(H) : "memory");
+-}
+-
+-#define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline<h>)
+-
+-#else  // __arm__
+-
+-#define MOZ_SIGNAL_TRAMPOLINE(h) (h)
+-
+-#endif  // __arm__
+-
+-}  // namespace mozilla
+-
+-#endif  // mozilla_LinuxSignal_h
+diff --git a/mfbt/moz.build b/mfbt/moz.build
+--- a/mfbt/moz.build
++++ b/mfbt/moz.build
+@@ -124,20 +124,16 @@ EXPORTS["double-conversion"] = [
+ LOCAL_INCLUDES += [
+     '/mfbt/double-conversion',
+ ]
+ 
+ if CONFIG['OS_ARCH'] == 'WINNT':
+     EXPORTS.mozilla += [
+         'WindowsVersion.h',
+     ]
+-elif CONFIG['OS_ARCH'] == 'Linux':
+-    EXPORTS.mozilla += [
+-        'LinuxSignal.h',
+-    ]
+ 
+ UNIFIED_SOURCES += [
+     'Assertions.cpp',
+     'ChaosMode.cpp',
+     'double-conversion/double-conversion/bignum-dtoa.cc',
+     'double-conversion/double-conversion/bignum.cc',
+     'double-conversion/double-conversion/cached-powers.cc',
+     'double-conversion/double-conversion/diy-fp.cc',
+diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/core/platform-linux-android.cpp
+--- a/tools/profiler/core/platform-linux-android.cpp
++++ b/tools/profiler/core/platform-linux-android.cpp
+@@ -55,17 +55,16 @@
+ #ifdef __GLIBC__
+ #include <execinfo.h>  // backtrace, backtrace_symbols
+ #endif                 // def __GLIBC__
+ #include <strings.h>   // index
+ #include <errno.h>
+ #include <stdarg.h>
+ 
+ #include "prenv.h"
+-#include "mozilla/LinuxSignal.h"
+ #include "mozilla/PodOperations.h"
+ #include "mozilla/DebugOnly.h"
+ 
+ #include <string.h>
+ #include <list>
+ 
+ using namespace mozilla;
+ 
+@@ -248,17 +247,17 @@ Sampler::Sampler(PSLockRef aLock)
+ 
+   // NOTE: We don't initialize LUL here, instead initializing it in
+   // SamplerThread's constructor. This is because with the
+   // profiler_suspend_and_sample_thread entry point, we want to be able to
+   // sample without waiting for LUL to be initialized.
+ 
+   // Request profiling signals.
+   struct sigaction sa;
+-  sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
++  sa.sa_sigaction = SigprofHandler;
+   sigemptyset(&sa.sa_mask);
+   sa.sa_flags = SA_RESTART | SA_SIGINFO;
+   if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
+     MOZ_CRASH("Error installing SIGPROF handler in the profiler");
+   }
+ }
+ 
+ void Sampler::Disable(PSLockRef aLock) {
--- a/mozilla-bmo256180.patch	Mon Oct 22 11:26:41 2018 +0200
+++ b/mozilla-bmo256180.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -1,11 +1,25 @@
---- a/layout/generic/nsIFrame.h.old	2016-07-11 13:41:39.688276559 +0200
-+++ b/layout/generic/nsIFrame.h	2016-07-11 13:42:12.791406976 +0200
-@@ -13,7 +13,7 @@
+# HG changeset patch
+# Parent  8d4f57b44373d51f0e151eeaadf9fe293bcdfb7c
+
+diff --git a/layout/generic/nsIFrame.h b/layout/generic/nsIFrame.h
+--- a/layout/generic/nsIFrame.h
++++ b/layout/generic/nsIFrame.h
+@@ -8,17 +8,17 @@
+ 
+ #ifndef nsIFrame_h___
+ #define nsIFrame_h___
+ 
+ #ifndef MOZILLA_INTERNAL_API
  #error This header/class should only be used within Mozilla code. It should not be used by extensions.
  #endif
  
 -#define MAX_REFLOW_DEPTH 200
 +#define MAX_REFLOW_DEPTH 1000
  
- /* nsIFrame is in the process of being deCOMtaminated, i.e., this file is eventually
-    going to be eliminated, and all callers will use nsFrame instead.  At the moment
+ /* nsIFrame is in the process of being deCOMtaminated, i.e., this file is
+    eventually going to be eliminated, and all callers will use nsFrame instead.
+    At the moment we're midway through this process, so you will see inlined
+    functions and member variables in this file.  -dwh */
+ 
+ #include <algorithm>
+ #include <stdio.h>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-cubeb-noreturn.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -0,0 +1,18 @@
+# HG changeset patch
+# User Wolfgang Rosenauer <wr@rosenauer.org>
+# Parent  a9d61a2614b01b1e0ca37d00a6b11b2571868f86
+
+diff --git a/media/libcubeb/src/cubeb_utils.cpp b/media/libcubeb/src/cubeb_utils.cpp
+--- a/media/libcubeb/src/cubeb_utils.cpp
++++ b/media/libcubeb/src/cubeb_utils.cpp
+@@ -15,9 +15,10 @@ size_t cubeb_sample_size(cubeb_sample_fo
+       return sizeof(int16_t);
+     case CUBEB_SAMPLE_FLOAT32LE:
+     case CUBEB_SAMPLE_FLOAT32BE:
+       return sizeof(float);
+     default:
+       // should never happen as all cases are handled above.
+       assert(false);
+   }
++  return 0;
+ }
--- a/mozilla-kde.patch	Mon Oct 22 11:26:41 2018 +0200
+++ b/mozilla-kde.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  06a62125ffbb15e88dacb486169d8e6a9595bd78
+# Parent  ff3da33eabc1d8760ec41a87afbaf44ded300ede
 Description: Add KDE integration to Firefox (toolkit parts)
 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
 Author: Lubos Lunak <lunak@suse.com>
@@ -9,7 +9,7 @@
 diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
 --- a/modules/libpref/Preferences.cpp
 +++ b/modules/libpref/Preferences.cpp
-@@ -80,16 +80,17 @@
+@@ -81,16 +81,17 @@
  #include "nsXPCOMCID.h"
  #include "nsXPCOM.h"
  #include "nsXULAppAPI.h"
@@ -27,7 +27,7 @@
  #ifdef XP_WIN
  #include "windows.h"
  #endif
-@@ -4932,25 +4933,37 @@ Preferences::InitInitialObjects(bool aIs
+@@ -4466,25 +4467,37 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
    // application pref files for backwards compatibility.
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -57,15 +57,15 @@
 +    }
 +  }
 +
-   rv = pref_LoadPrefsInDir(
-     defaultPrefDir, specialFiles, ArrayLength(specialFiles));
+   rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles,
+                            ArrayLength(specialFiles));
    if (NS_FAILED(rv)) {
      NS_WARNING("Error parsing application default preferences.");
    }
  
    // Load jar:$app/omni.jar!/defaults/preferences/*.js
    // or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4999,17 +5012,17 @@ Preferences::InitInitialObjects(bool aIs
+@@ -4532,17 +4545,17 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
        }
  
        nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@@ -83,7 +83,7 @@
      SetupTelemetryPref();
    }
  
-   NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
+   NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID, nullptr,
 diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
 --- a/modules/libpref/moz.build
 +++ b/modules/libpref/moz.build
@@ -171,9 +171,9 @@
 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
 --- a/toolkit/content/jar.mn
 +++ b/toolkit/content/jar.mn
-@@ -70,16 +70,18 @@ toolkit.jar:
+@@ -67,16 +67,18 @@ toolkit.jar:
+    content/global/bindings/calendar.js         (widgets/calendar.js)
     content/global/bindings/checkbox.xml        (widgets/checkbox.xml)
-    content/global/bindings/colorpicker.xml     (widgets/colorpicker.xml)
     content/global/bindings/datekeeper.js       (widgets/datekeeper.js)
     content/global/bindings/datepicker.js       (widgets/datepicker.js)
     content/global/bindings/datetimepopup.xml   (widgets/datetimepopup.xml)
@@ -182,19 +182,19 @@
  *  content/global/bindings/dialog.xml          (widgets/dialog.xml)
 +*  content/global/bindings/dialog-kde.xml      (widgets/dialog-kde.xml)
 +% override chrome://global/content/bindings/dialog.xml chrome://global/content/bindings/dialog-kde.xml desktop=kde
- *  content/global/bindings/findbar.xml         (widgets/findbar.xml)
     content/global/bindings/general.xml         (widgets/general.xml)
-    content/global/bindings/groupbox.xml        (widgets/groupbox.xml)
     content/global/bindings/menu.xml            (widgets/menu.xml)
     content/global/bindings/menulist.xml        (widgets/menulist.xml)
     content/global/bindings/notification.xml    (widgets/notification.xml)
     content/global/bindings/numberbox.xml       (widgets/numberbox.xml)
     content/global/bindings/popup.xml           (widgets/popup.xml)
+    content/global/bindings/radio.xml           (widgets/radio.xml)
+    content/global/bindings/richlistbox.xml     (widgets/richlistbox.xml)
 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/content/widgets/dialog-kde.xml
-@@ -0,0 +1,475 @@
+@@ -0,0 +1,477 @@
 +<?xml version="1.0"?>
 +<!-- 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
@@ -495,6 +495,8 @@
 +                var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype);
 +                if (accessKey)
 +                  button.setAttribute("accesskey", accessKey);
++              } else if (this.hasAttribute("buttonid" + dlgtype)) {
++                document.l10n.setAttributes(button, this.getAttribute("buttonid" + dlgtype));
 +              }
 +            }
 +            // allow specifying alternate icons in the dialog header
@@ -763,57 +765,58 @@
 +#include "nsKDEUtils.h"
  
  class nsUnixSystemProxySettings final : public nsISystemProxySettings {
- public:
+  public:
    NS_DECL_ISUPPORTS
    NS_DECL_NSISYSTEMPROXYSETTINGS
  
-   nsUnixSystemProxySettings()
-     : mSchemeProxySettings(4)
-@@ -39,16 +40,17 @@ private:
-   nsCOMPtr<nsIGSettingsService> mGSettings;
-   nsCOMPtr<nsIGSettingsCollection> mProxySettings;
-   nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection> mSchemeProxySettings;
-   bool IsProxyMode(const char* aMode);
-   nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType, nsACString& aResult);
-   nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost, int32_t aPort, nsACString& aResult);
-   nsresult GetProxyFromGSettings(const nsACString& aScheme, const nsACString& aHost, int32_t aPort, nsACString& aResult);
-   nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
-+  nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
+   nsUnixSystemProxySettings() : mSchemeProxySettings(4) {}
+   nsresult Init();
+@@ -42,16 +43,18 @@ class nsUnixSystemProxySettings final : 
+                                    nsACString& aResult);
+   nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost,
+                              int32_t aPort, nsACString& aResult);
+   nsresult GetProxyFromGSettings(const nsACString& aScheme,
+                                  const nsACString& aHost, int32_t aPort,
+                                  nsACString& aResult);
+   nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
+                                        nsACString& aResult);
++  nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost,
++                           PRInt32 aPort, nsACString& aResult);
  };
  
  NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
  
  NS_IMETHODIMP
- nsUnixSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
- {
-   // dbus prevents us from being threadsafe, but this routine should not block anyhow
-@@ -505,16 +507,19 @@ nsUnixSystemProxySettings::GetProxyFromG
+ nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
+   // dbus prevents us from being threadsafe, but this routine should not block
+   // anyhow
+@@ -488,16 +491,19 @@ nsresult nsUnixSystemProxySettings::GetP
+   return NS_OK;
+ }
  
- nsresult
- nsUnixSystemProxySettings::GetProxyForURI(const nsACString & aSpec,
-                                           const nsACString & aScheme,
-                                           const nsACString & aHost,
-                                           const int32_t      aPort,
-                                           nsACString & aResult)
- {
+ nsresult nsUnixSystemProxySettings::GetProxyForURI(const nsACString& aSpec,
+                                                    const nsACString& aScheme,
+                                                    const nsACString& aHost,
+                                                    const int32_t aPort,
+                                                    nsACString& aResult) {
 +  if (nsKDEUtils::kdeSupport())
 +    return GetProxyFromKDE(aScheme, aHost, aPort, aResult);
 +
    if (mProxySettings) {
      nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
-     if (NS_SUCCEEDED(rv))
-       return rv;
+     if (NS_SUCCEEDED(rv)) return rv;
    }
-   if (mGConf)
-     return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
+   if (mGConf) return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
  
-@@ -540,8 +545,34 @@ static const mozilla::Module::ContractID
+   return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
+ }
+@@ -521,8 +527,34 @@ static const mozilla::Module::CIDEntry k
+ static const mozilla::Module::ContractIDEntry kUnixProxyContracts[] = {
+     {NS_SYSTEMPROXYSETTINGS_CONTRACTID, &kNS_UNIXSYSTEMPROXYSERVICE_CID},
+     {nullptr}};
  
  static const mozilla::Module kUnixProxyModule = {
-   mozilla::Module::kVersion,
-   kUnixProxyCIDs,
-   kUnixProxyContracts
- };
+     mozilla::Module::kVersion, kUnixProxyCIDs, kUnixProxyContracts};
  
  NSMODULE_DEFN(nsUnixProxyModule) = &kUnixProxyModule;
 +
@@ -845,7 +848,7 @@
 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
 --- a/toolkit/xre/moz.build
 +++ b/toolkit/xre/moz.build
-@@ -67,17 +67,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+@@ -73,17 +73,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
          '../components/printingui',
      ]
  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
@@ -1282,19 +1285,19 @@
 +#include "unix/nsCommonRegistry.h"
  #endif
  
- using mozilla::dom::HandlerInfo;
+ using mozilla::dom::ContentHandlerService;
  using mozilla::dom::HandlerApp;
- using mozilla::dom::ContentHandlerService;
+ using mozilla::dom::HandlerInfo;
  using mozilla::dom::RemoteHandlerApp;
  
  namespace {
-@@ -265,17 +265,17 @@ HandlerServiceParent::RecvExists(const H
+@@ -246,17 +246,17 @@ mozilla::ipc::IPCResult HandlerServicePa
+   handlerSvc->Exists(info, exists);
+   return IPC_OK();
  }
  
- mozilla::ipc::IPCResult
- HandlerServiceParent::RecvExistsForProtocol(const nsCString& aProtocolScheme,
-                                             bool* aHandlerExists)
- {
+ mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocol(
+     const nsCString& aProtocolScheme, bool* aHandlerExists) {
  #ifdef MOZ_WIDGET_GTK
    // Check the GNOME registry for a protocol handler
 -  *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
@@ -1305,8 +1308,8 @@
    return IPC_OK();
  }
  
- mozilla::ipc::IPCResult
- HandlerServiceParent::RecvGetTypeFromExtension(const nsCString& aFileExtension,
+ mozilla::ipc::IPCResult HandlerServiceParent::RecvGetTypeFromExtension(
+     const nsCString& aFileExtension, nsCString* type) {
 diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
 --- a/uriloader/exthandler/moz.build
 +++ b/uriloader/exthandler/moz.build
@@ -1573,7 +1576,7 @@
 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
 --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
-@@ -1,50 +1,53 @@
+@@ -1,47 +1,50 @@
  /* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*-
   *
   * This Source Code Form is subject to the terms of the Mozilla Public
@@ -1594,21 +1597,17 @@
 +#include "nsKDEUtils.h"
 +#endif
  
- nsresult
- nsMIMEInfoUnix::LoadUriInternal(nsIURI * aURI)
- {
+ nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI *aURI) {
 -  return nsGNOMERegistry::LoadURL(aURI);
 +  return nsCommonRegistry::LoadURL(aURI);
  }
  
  NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval)
- {
+ nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) {
    // if mDefaultApplication is set, it means the application has been set from
    // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
    // give the GNOME answer.
-   if (mDefaultApplication)
-     return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
+   if (mDefaultApplication) return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
  
    *_retval = false;
  
@@ -1616,8 +1615,9 @@
 -    *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get());
 +    *_retval = nsCommonRegistry::HandlerExists(mSchemeOrType.get());
    } else {
--    RefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType);
-+    RefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromType(mSchemeOrType);
+     RefPtr<nsMIMEInfoBase> mimeInfo =
+-        nsGNOMERegistry::GetFromType(mSchemeOrType);
++        nsCommonRegistry::GetFromType(mSchemeOrType);
      if (!mimeInfo) {
        nsAutoCString ext;
        nsresult rv = GetPrimaryExtension(ext);
@@ -1626,17 +1626,17 @@
 +        mimeInfo = nsCommonRegistry::GetFromExtension(ext);
        }
      }
-     if (mimeInfo)
-       *_retval = true;
+     if (mimeInfo) *_retval = true;
    }
  
-   if (*_retval)
-     return NS_OK;
-@@ -59,16 +62,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
+   if (*_retval) return NS_OK;
+ 
+   return NS_OK;
+@@ -51,16 +54,33 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi
+   // if mDefaultApplication is set, it means the application has been set from
    // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
    // give the GNOME answer.
-   if (mDefaultApplication)
-     return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
+   if (mDefaultApplication) return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
  
    nsAutoCString nativePath;
    aFile->GetNativePath(nativePath);
@@ -1665,7 +1665,7 @@
  
    // nsGIOMimeApp->Launch wants a URI string instead of local file
    nsresult rv;
-   nsCOMPtr<nsIIOService> ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv);
+   nsCOMPtr<nsIIOService> ioservice =
 diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
 --- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
 +++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
@@ -1688,10 +1688,10 @@
  #include "nsIURL.h"
  #include "nsIFileStreams.h"
  #include "nsILineInputStream.h"
-@@ -1125,17 +1125,17 @@ nsOSHelperAppService::GetHandlerAndDescr
+@@ -1031,17 +1031,17 @@ nsresult nsOSHelperAppService::GetHandle
  
- nsresult nsOSHelperAppService::OSProtocolHandlerExists(const char * aProtocolScheme, bool * aHandlerExists)
- {
+ nsresult nsOSHelperAppService::OSProtocolHandlerExists(
+     const char* aProtocolScheme, bool* aHandlerExists) {
    nsresult rv = NS_OK;
  
    if (!XRE_IsContentProcess()) {
@@ -1704,17 +1704,17 @@
  #endif
    } else {
      *aHandlerExists = false;
-     nsCOMPtr<nsIHandlerService> handlerSvc = do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
+     nsCOMPtr<nsIHandlerService> handlerSvc =
+         do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
      if (NS_SUCCEEDED(rv) && handlerSvc) {
-       rv = handlerSvc->ExistsForProtocol(nsCString(aProtocolScheme), aHandlerExists);
-@@ -1143,17 +1143,17 @@ nsresult nsOSHelperAppService::OSProtoco
+@@ -1051,17 +1051,17 @@ nsresult nsOSHelperAppService::OSProtoco
    }
  
    return rv;
  }
  
- NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(const nsACString& aScheme, nsAString& _retval)
- {
+ NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(
+     const nsACString& aScheme, nsAString& _retval) {
  #ifdef MOZ_WIDGET_GTK
 -  nsGNOMERegistry::GetAppDescForScheme(aScheme, _retval);
 +  nsCommonRegistry::GetAppDescForScheme(aScheme, _retval);
@@ -1724,32 +1724,32 @@
  #endif
  }
  
- nsresult nsOSHelperAppService::GetFileTokenForPath(const char16_t * platformAppPath, nsIFile ** aFile)
- {
-@@ -1240,17 +1240,17 @@ nsOSHelperAppService::GetFromExtension(c
-                                          mime_types_description,
-                                          true);
+ nsresult nsOSHelperAppService::GetFileTokenForPath(
+     const char16_t* platformAppPath, nsIFile** aFile) {
+@@ -1142,17 +1142,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+   nsresult rv =
+       LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
+                                minorType, mime_types_description, true);
  
    if (NS_FAILED(rv) || majorType.IsEmpty()) {
- 
  #ifdef MOZ_WIDGET_GTK
      LOG(("Looking in GNOME registry\n"));
      RefPtr<nsMIMEInfoBase> gnomeInfo =
--      nsGNOMERegistry::GetFromExtension(aFileExt);
-+      nsCommonRegistry::GetFromExtension(aFileExt);
+-        nsGNOMERegistry::GetFromExtension(aFileExt);
++        nsCommonRegistry::GetFromExtension(aFileExt);
      if (gnomeInfo) {
        LOG(("Got MIMEInfo from GNOME registry\n"));
        return gnomeInfo.forget();
      }
  #endif
  
-     rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt),
-                                   majorType,
-@@ -1361,17 +1361,17 @@ nsOSHelperAppService::GetFromType(const 
+     rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
+                                   minorType, mime_types_description, false);
+@@ -1254,17 +1254,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+ 
+   // Now look up our extensions
    nsAutoString extensions, mime_types_description;
-   LookUpExtensionsAndDescription(majorType,
-                                  minorType,
-                                  extensions,
+   LookUpExtensionsAndDescription(majorType, minorType, extensions,
                                   mime_types_description);
  
  #ifdef MOZ_WIDGET_GTK
@@ -1757,17 +1757,17 @@
 -    RefPtr<nsMIMEInfoBase> gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
 +    RefPtr<nsMIMEInfoBase> gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
      if (gnomeInfo) {
-       LOG(("Got MIMEInfo from GNOME registry without extensions; setting them "
-            "to %s\n", NS_LossyConvertUTF16toASCII(extensions).get()));
+       LOG(
+           ("Got MIMEInfo from GNOME registry without extensions; setting them "
+            "to %s\n",
+            NS_LossyConvertUTF16toASCII(extensions).get()));
  
        NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?");
        gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions));
-       return gnomeInfo.forget();
-     }
 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
 --- a/widget/gtk/moz.build
 +++ b/widget/gtk/moz.build
-@@ -123,16 +123,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -116,16 +116,17 @@ include('/ipc/chromium/chromium-config.m
  
  FINAL_LIBRARY = 'xul'
  
@@ -1823,13 +1823,13 @@
  #define MAX_PREVIEW_SOURCE_SIZE 4096
  
  nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
-@@ -246,17 +248,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+   mAllowURLs = !!(aFilterMask & filterAllowURLs);
    return nsBaseFilePicker::AppendFilters(aFilterMask);
  }
  
  NS_IMETHODIMP
- nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter)
- {
+ nsFilePicker::AppendFilter(const nsAString &aTitle, const nsAString &aFilter) {
    if (aFilter.EqualsLiteral("..apps")) {
      // No platform specific thing we can do here, really....
 -    return NS_OK;
@@ -1844,14 +1844,14 @@
  
    mFilters.AppendElement(filter);
    mFilterNames.AppendElement(name);
-@@ -371,16 +375,39 @@ nsFilePicker::Show(int16_t *aReturn)
+@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t *aRe
+   return NS_OK;
+ }
  
  NS_IMETHODIMP
- nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
- {
+ nsFilePicker::Open(nsIFilePickerShownCallback *aCallback) {
    // Can't show two dialogs concurrently with the same filepicker
-   if (mRunning)
-     return NS_ERROR_NOT_AVAILABLE;
+   if (mRunning) return NS_ERROR_NOT_AVAILABLE;
  
 +  // KDE file picker is not handled via callback
 +  if( nsKDEUtils::kdeSupport()) {
@@ -1880,12 +1880,11 @@
    title.Adopt(ToNewUTF8String(mTitle));
  
    GtkWindow *parent_widget =
-     GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
+       GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
  
    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
  
-@@ -608,8 +635,233 @@ nsFilePicker::Done(GtkWidget* file_choos
-   if (mCallback) {
+@@ -571,16 +598,240 @@ void nsFilePicker::Done(void *file_choos
      mCallback->Done(result);
      mCallback = nullptr;
    } else {
@@ -1893,7 +1892,7 @@
    }
    NS_RELEASE_THIS();
  }
-+
+ 
 +nsCString nsFilePicker::kdeMakeFilter( int index )
 +    {
 +    nsCString buf = mFilters[ index ];
@@ -2118,16 +2117,24 @@
 +    return NS_OK;
 +    }
 +
+ // All below functions available as of GTK 3.20+
+ void *nsFilePicker::GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+                                       GtkFileChooserAction action,
+                                       const gchar *accept_label) {
+   static auto sGtkFileChooserNativeNewPtr =
+       (void *(*)(const gchar *, GtkWindow *, GtkFileChooserAction,
+                  const gchar *,
+                  const gchar *))dlsym(RTLD_DEFAULT,
 diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
 --- a/widget/gtk/nsFilePicker.h
 +++ b/widget/gtk/nsFilePicker.h
-@@ -69,14 +69,20 @@ protected:
-   nsString  mDefaultExtension;
+@@ -67,16 +67,22 @@ class nsFilePicker : public nsBaseFilePi
+   nsString mDefaultExtension;
  
    nsTArray<nsCString> mFilters;
    nsTArray<nsCString> mFilterNames;
  
- private:
+  private:
    static nsIFile *mPrevDisplayDirectory;
  
 +  bool kdeRunning();
@@ -2136,12 +2143,14 @@
 +  NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
 +  nsCString kdeMakeFilter( int index );
 +
- #ifdef MOZ_WIDGET_GTK
-   GtkFileChooserWidget *mFileChooserDelegate;
- #endif
- };
+   void *GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+                           GtkFileChooserAction action,
+                           const gchar *accept_label);
+   void GtkFileChooserShow(void *file_chooser);
+   void GtkFileChooserDestroy(void *file_chooser);
+   void GtkFileChooserSetModal(void *file_chooser, GtkWindow *parent_widget,
+                               gboolean modal);
  
- #endif
 diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
 --- a/xpcom/components/ManifestParser.cpp
 +++ b/xpcom/components/ManifestParser.cpp
@@ -2158,12 +2167,12 @@
  
  using namespace mozilla;
  
- struct ManifestDirective
- {
+ struct ManifestDirective {
    const char* directive;
    int argc;
  
-@@ -419,16 +420,17 @@ ParseManifest(NSLocationType aType, File
+   bool ischrome;
+@@ -392,16 +393,17 @@ void ParseManifest(NSLocationType aType,
    NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
    NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
    NS_NAMED_LITERAL_STRING(kApplication, "application");
@@ -2181,7 +2190,7 @@
    NS_NAMED_LITERAL_STRING(kMain, "main");
    NS_NAMED_LITERAL_STRING(kContent, "content");
  
-@@ -474,44 +476,49 @@ ParseManifest(NSLocationType aType, File
+@@ -447,39 +449,44 @@ void ParseManifest(NSLocationType aType,
          CopyUTF8toUTF16(s, abi);
          abi.Insert(char16_t('_'), 0);
          abi.Insert(osTarget, 0);
@@ -2193,11 +2202,10 @@
 +  nsAutoString desktop;
  #if defined(XP_WIN)
  #pragma warning(push)
- #pragma warning(disable:4996) // VC12+ deprecates GetVersionEx
-   OSVERSIONINFO info = { sizeof(OSVERSIONINFO) };
+ #pragma warning(disable : 4996)  // VC12+ deprecates GetVersionEx
+   OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};
    if (GetVersionEx(&info)) {
-     nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
-                               info.dwMajorVersion,
+     nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
                                info.dwMinorVersion);
    }
 +  desktop = NS_LITERAL_STRING("win");
@@ -2205,21 +2213,17 @@
  #elif defined(MOZ_WIDGET_COCOA)
    SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor();
    SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor();
-   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
-                             majorVersion,
-                             minorVersion);
+   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", majorVersion, minorVersion);
 +  desktop = NS_LITERAL_STRING("macosx");
  #elif defined(MOZ_WIDGET_GTK)
-   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
-                             gtk_major_version,
+   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", gtk_major_version,
                              gtk_minor_version);
 +  desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
  #elif defined(MOZ_WIDGET_ANDROID)
    bool isTablet = false;
    if (mozilla::AndroidBridge::Bridge()) {
-     mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION",
-                                                            "RELEASE",
-                                                            osVersion);
+     mozilla::AndroidBridge::Bridge()->GetStaticStringField(
+         "android/os/Build$VERSION", "RELEASE", osVersion);
      isTablet = java::GeckoAppShell::IsTablet();
    }
 +  desktop = NS_LITERAL_STRING("android");
@@ -2231,7 +2235,7 @@
      process = kMain;
    }
  
-@@ -598,25 +605,27 @@ ParseManifest(NSLocationType aType, File
+@@ -566,25 +573,27 @@ void ParseManifest(NSLocationType aType,
      TriState stOsVersion = eUnspecified;
      TriState stOs = eUnspecified;
      TriState stABI = eUnspecified;
@@ -2254,40 +2258,41 @@
            CheckStringFlag(kProcess, wtoken, process, stProcess) ||
            CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
            CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
-           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion)) {
+           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion,
+                            stGeckoVersion)) {
          continue;
        }
  
- #if defined(MOZ_WIDGET_ANDROID)
-@@ -661,16 +670,17 @@ ParseManifest(NSLocationType aType, File
+@@ -621,17 +630,17 @@ void ParseManifest(NSLocationType aType,
+       }
+ 
+       LogMessageWithContext(
+           aFile, line, "Unrecognized chrome manifest modifier '%s'.", token);
+       ok = false;
      }
  
-     if (!ok ||
-         stApp == eBad ||
-         stAppVersion == eBad ||
-         stGeckoVersion == eBad ||
-         stOs == eBad ||
-         stOsVersion == eBad ||
-+        stDesktop == eBad ||
+     if (!ok || stApp == eBad || stAppVersion == eBad ||
+-        stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad ||
++        stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad || stDesktop == eBad ||
  #ifdef MOZ_WIDGET_ANDROID
          stTablet == eBad ||
  #endif
-         stABI == eBad ||
-         stProcess == eBad) {
+         stABI == eBad || stProcess == eBad) {
        continue;
      }
  
+     if (directive->regfunc) {
 diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
 --- a/xpcom/components/moz.build
 +++ b/xpcom/components/moz.build
-@@ -43,12 +43,13 @@ FINAL_LIBRARY = 'xul'
- 
- LOCAL_INCLUDES += [
+@@ -44,12 +44,13 @@ LOCAL_INCLUDES += [
      '!..',
      '../base',
      '../build',
      '../ds',
      '/chrome',
+     '/js/xpconnect/loader',
+     '/layout/build',
      '/modules/libjar',
 +    '/toolkit/xre',
  ]
@@ -2315,10 +2320,10 @@
  #include "prmem.h"
  #include "plbase64.h"
  
-@@ -2007,63 +2008,78 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1902,62 +1903,77 @@ nsLocalFile::SetPersistentDescriptor(con
+ 
  NS_IMETHODIMP
- nsLocalFile::Reveal()
- {
+ nsLocalFile::Reveal() {
    if (!FilePreferences::IsAllowedPath(mPath)) {
      return NS_ERROR_FILE_ACCESS_DENIED;
    }
@@ -2379,8 +2384,7 @@
  }
  
  NS_IMETHODIMP
- nsLocalFile::Launch()
- {
+ nsLocalFile::Launch() {
    if (!FilePreferences::IsAllowedPath(mPath)) {
      return NS_ERROR_FILE_ACCESS_DENIED;
    }
--- a/mozilla-nongnome-proxies.patch	Mon Oct 22 11:26:41 2018 +0200
+++ b/mozilla-nongnome-proxies.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -9,19 +9,20 @@
 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
-@@ -54,23 +54,27 @@ nsUnixSystemProxySettings::GetMainThread
-   // dbus prevents us from being threadsafe, but this routine should not block anyhow
+@@ -55,24 +55,27 @@ NS_IMETHODIMP
+ nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
+   // dbus prevents us from being threadsafe, but this routine should not block
+   // anyhow
    *aMainThreadOnly = true;
    return NS_OK;
  }
  
- nsresult
- nsUnixSystemProxySettings::Init()
- {
+ nsresult nsUnixSystemProxySettings::Init() {
 -  mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
 -  if (mGSettings) {
--    mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
--                                       getter_AddRefs(mProxySettings));
+-    mGSettings->GetCollectionForSchema(
+-        NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+-        getter_AddRefs(mProxySettings));
 -  }
 -  if (!mProxySettings) {
 -    mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
@@ -41,6 +42,6 @@
    return NS_OK;
  }
  
- bool
- nsUnixSystemProxySettings::IsProxyMode(const char* aMode)
- {
+ bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) {
+   nsAutoCString mode;
+   return NS_SUCCEEDED(mGConf->GetString(
--- a/mozilla-ntlm-full-path.patch	Mon Oct 22 11:26:41 2018 +0200
+++ b/mozilla-ntlm-full-path.patch	Sun Mar 17 10:00:10 2019 +0100
@@ -1,28 +1,28 @@
 # HG changeset patch
 # User Petr Cerny <pcerny@novell.com>
 # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6
-# Parent  46dd9332e67440fb779e99a694a2bf0edf5c203e
+# Parent  6ab277cf616dc2748e9855101100a97a6cec10a6
 Bug 634334 - call to the ntlm_auth helper fails
 
 diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
 --- a/extensions/auth/nsAuthSambaNTLM.cpp
 +++ b/extensions/auth/nsAuthSambaNTLM.cpp
-@@ -170,17 +170,17 @@ static uint8_t* ExtractMessage(const nsA
- nsresult
- nsAuthSambaNTLM::SpawnNTLMAuthHelper()
- {
-     const char* username = PR_GetEnv("USER");
-     if (!username)
-         return NS_ERROR_FAILURE;
+@@ -156,17 +156,17 @@ static uint8_t* ExtractMessage(const nsA
+   *aLen = (length / 4) * 3 - numEquals;
+   return reinterpret_cast<uint8_t*>(PL_Base64Decode(s, length, nullptr));
+ }
+ 
+ nsresult nsAuthSambaNTLM::SpawnNTLMAuthHelper() {
+   const char* username = PR_GetEnv("USER");
+   if (!username) return NS_ERROR_FAILURE;
  
-     const char* const args[] = {
--        "ntlm_auth",
-+        "/usr/bin/ntlm_auth",
-         "--helper-protocol", "ntlmssp-client-1",
-         "--use-cached-creds",
-         "--username", username,
-         nullptr
-     };
+-  const char* const args[] = {"ntlm_auth",
++  const char* const args[] = {"/usr/bin/ntlm_auth",
+                               "--helper-protocol",
+                               "ntlmssp-client-1",
+                               "--use-cached-creds",
+                               "--username",
+                               username,
+                               nullptr};
  
-     bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, &mFromChildFD, &mToChildFD);
-     if (!isOK)
+   bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID,
--- a/mozilla-reduce-files-per-UnifiedBindings.patch	Mon Oct 22 11:26:41 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-From: Andreas Stieger <astieger@suse.com>
-Date: Fri, 26 Feb 2016 16:20:09 +0000
-Subject: For UnifiedBindings*.cpp files, reduce number of files per unified file
-Upstream: no
-
-home/abuild/rpmbuild/BUILD/obj/dom/bindings/UnifiedBindings16.cpp
-[ 1589s] UnifiedBindings17.o
-[ 1612s] [ 1567.621989] Out of memory: Kill process 19849 (cc1plus) score 170 or sacrifice child
-[ 1612s] [ 1567.625099] Killed process 19849 (cc1plus) total-vm:905704kB, anon-rss:102500kB, file-rss:156kB
-[ 1616s] {standard input}: Assembler messages:
-[ 1616s] {standard input}:316015: Warning: end of file not at end of a line; newline inserted
-[ 1635s] {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
-[ 1636s] c++: internal compiler error: Killed (program cc1plus)
-[ 1636s] Please submit a full bug report,
-
-diff --git a/python/mozbuild/mozbuild/frontend/data.py b/python/mozbuild/mozbuild/frontend/data.py
---- a/python/mozbuild/mozbuild/frontend/data.py
-+++ b/python/mozbuild/mozbuild/frontend/data.py
-@@ -310,17 +310,17 @@ class WebIDLCollection(ContextDerived):
-     @property
-     def unified_source_mapping(self):
-         # Bindings are compiled in unified mode to speed up compilation and
-         # to reduce linker memory size. Note that test bindings are separated
-         # from regular ones so tests bindings aren't shipped.
-         return list(group_unified_files(self.all_regular_cpp_basenames(),
-                                         unified_prefix='UnifiedBindings',
-                                         unified_suffix='cpp',
--                                        files_per_unified_file=32))
-+                                        files_per_unified_file=16))
- 
-     def all_source_files(self):
-         from mozwebidlcodegen import WebIDLCodegenManager
-         return (sorted(list(WebIDLCodegenManager.GLOBAL_DEFINE_FILES)) +
-                 sorted(set(p for p, _ in self.unified_source_mapping)))
- 
- 
- class IPDLCollection(ContextDerived):
--- a/series	Mon Oct 22 11:26:41 2018 +0200
+++ b/series	Sun Mar 17 10:00:10 2019 +0100
@@ -3,10 +3,10 @@
 mozilla-kde.patch
 mozilla-ntlm-full-path.patch
 mozilla-openaes-decl.patch
-#mozilla-no-stdcxx-check.patch
-mozilla-reduce-files-per-UnifiedBindings.patch
 mozilla-aarch64-startup-crash.patch
 mozilla-bmo256180.patch
+mozilla-bmo1463035.patch
+mozilla-cubeb-noreturn.patch
 
 # Firefox patches
 firefox-kde.patch