From a9628fa6aed2340ced857f11825da1956d7da17dd6cb321b5ba4948ce85a2464 Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Thu, 12 Mar 2020 19:14:24 +0000 Subject: [PATCH 1/3] - Mozilla Firefox 74.0 * https://www.mozilla.org/en-US/firefox/74.0/releasenotes/ MFSA 2020-08 (bsc#1166238) * CVE-2020-6805 (bmo#1610880) Use-after-free when removing data about origins * CVE-2020-6806 (bmo#1612308) BodyStream::OnInputStreamReady was missing protections against state confusion * CVE-2020-6807 (bmo#1614971) Use-after-free in cubeb during stream destruction * CVE-2020-6808 (bmo#1247968) URL Spoofing via javascript: URL * CVE-2020-6809 (bmo#1420296) Web Extensions with the all-urls permission could access local files * CVE-2020-6810 (bmo#1432856) Focusing a popup while in fullscreen could have obscured the fullscreen notification * CVE-2020-6811 (bmo#1607742) Devtools' 'Copy as cURL' feature did not fully escape website-controlled data, potentially leading to command injection * CVE-2019-20503 (bmo#1613765) Out of bounds reads in sctp_load_addresses_from_init * CVE-2020-6812 (bmo#1616661) The names of AirPods with personally identifiable information were exposed to websites with camera or microphone permission * CVE-2020-6813 (bmo#1605814) @import statements in CSS could bypass the Content Security Policy nonce feature * CVE-2020-6814 (bmo#1592078,bmo#1604847,bmo#1608256,bmo#1612636, OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=809 --- MozillaFirefox.changes | 47 +++++++ MozillaFirefox.spec | 22 +-- firefox-73.0.1.source.tar.xz | 3 - firefox-73.0.1.source.tar.xz.asc | 16 --- firefox-74.0.source.tar.xz | 3 + firefox-74.0.source.tar.xz.asc | 16 +++ firefox-branded-icons.patch | 4 +- firefox-kde.patch | 6 +- l10n-73.0.1.tar.xz | 3 - l10n-74.0.tar.xz | 3 + mozilla-aarch64-startup-crash.patch | 20 ++- mozilla-bmo1005535.patch | 20 ++- mozilla-bmo1463035.patch | 4 +- mozilla-bmo1504834-part1.patch | 6 +- mozilla-bmo1504834-part2.patch | 44 ++++-- mozilla-bmo1504834-part3.patch | 38 ++++-- mozilla-bmo1504834-part4.patch | 24 +++- mozilla-bmo1512162.patch | 32 ++++- mozilla-bmo1554971.patch | 20 ++- mozilla-bmo1568145.patch | 25 +++- mozilla-bmo1609538.patch | 127 ++++++++++++++++++ mozilla-bmo1610814.patch | 46 ------- mozilla-bmo849632.patch | 22 ++- mozilla-cubeb-noreturn.patch | 18 --- ...wasm-emulate-arm-unaligned-fp-access.patch | 20 ++- mozilla-fix-aarch64-libopus.patch | 2 +- mozilla-kde.patch | 8 +- mozilla-nongnome-proxies.patch | 20 ++- mozilla-ntlm-full-path.patch | 2 +- mozilla-ppc-altivec_static_inline.patch | 2 +- mozilla-reduce-rust-debuginfo.patch | 6 +- mozilla-s390-bigendian.patch | 20 ++- mozilla-s390-context.patch | 32 ++++- tar_stamps | 8 +- 34 files changed, 490 insertions(+), 199 deletions(-) delete mode 100644 firefox-73.0.1.source.tar.xz delete mode 100644 firefox-73.0.1.source.tar.xz.asc create mode 100644 firefox-74.0.source.tar.xz create mode 100644 firefox-74.0.source.tar.xz.asc delete mode 100644 l10n-73.0.1.tar.xz create mode 100644 l10n-74.0.tar.xz create mode 100644 mozilla-bmo1609538.patch delete mode 100644 mozilla-bmo1610814.patch delete mode 100644 mozilla-cubeb-noreturn.patch diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index 4d2274d..a118975 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -1,3 +1,50 @@ +------------------------------------------------------------------- +Sat Mar 7 08:51:06 UTC 2020 - Wolfgang Rosenauer + +- Mozilla Firefox 74.0 + * https://www.mozilla.org/en-US/firefox/74.0/releasenotes/ + MFSA 2020-08 (bsc#1166238) + * CVE-2020-6805 (bmo#1610880) + Use-after-free when removing data about origins + * CVE-2020-6806 (bmo#1612308) + BodyStream::OnInputStreamReady was missing protections against + state confusion + * CVE-2020-6807 (bmo#1614971) + Use-after-free in cubeb during stream destruction + * CVE-2020-6808 (bmo#1247968) + URL Spoofing via javascript: URL + * CVE-2020-6809 (bmo#1420296) + Web Extensions with the all-urls permission could access local + files + * CVE-2020-6810 (bmo#1432856) + Focusing a popup while in fullscreen could have obscured the + fullscreen notification + * CVE-2020-6811 (bmo#1607742) + Devtools' 'Copy as cURL' feature did not fully escape + website-controlled data, potentially leading to command injection + * CVE-2019-20503 (bmo#1613765) + Out of bounds reads in sctp_load_addresses_from_init + * CVE-2020-6812 (bmo#1616661) + The names of AirPods with personally identifiable information + were exposed to websites with camera or microphone permission + * CVE-2020-6813 (bmo#1605814) + @import statements in CSS could bypass the Content Security + Policy nonce feature + * CVE-2020-6814 (bmo#1592078,bmo#1604847,bmo#1608256,bmo#1612636, + bmo#1614339) + Memory safety bugs fixed in Firefox 74 and Firefox ESR 68.6 + * CVE-2020-6815 (bmo#1181957,bmo#1557732,bmo#1557739,bmo#1611457, + bmo#1612431) + Memory and script safety bugs fixed in Firefox 74 +- requires + * NSPR 4.25 + * NSS 3.50 + * rust-cbindgen 0.13.0 +- removed obsolete patches + mozilla-bmo1610814.patch + mozilla-cubeb-noreturn.patch +- add mozilla-bmo1609538.patch to fix wayland issues with mutter 3.36 + ------------------------------------------------------------------- Wed Feb 26 08:12:00 UTC 2020 - Wolfgang Rosenauer diff --git a/MozillaFirefox.spec b/MozillaFirefox.spec index b35095f..f14498f 100644 --- a/MozillaFirefox.spec +++ b/MozillaFirefox.spec @@ -18,9 +18,9 @@ # changed with every update -%define major 73 -%define mainver %major.0.1 -%define orig_version 73.0.1 +%define major 74 +%define mainver %major.0 +%define orig_version 74.0 %define orig_suffix %{nil} %define update_channel release %define branding 1 @@ -83,15 +83,15 @@ BuildRequires: libiw-devel BuildRequires: libnotify-devel BuildRequires: libproxy-devel BuildRequires: makeinfo -BuildRequires: mozilla-nspr-devel >= 4.24 -BuildRequires: mozilla-nss-devel >= 3.49.2 +BuildRequires: mozilla-nspr-devel >= 4.25 +BuildRequires: mozilla-nss-devel >= 3.50 BuildRequires: nasm >= 2.13 BuildRequires: nodejs8 >= 8.11 BuildRequires: python-devel BuildRequires: python2-xml BuildRequires: python3 >= 3.5 BuildRequires: rust >= 1.39 -BuildRequires: rust-cbindgen >= 0.12.0 +BuildRequires: rust-cbindgen >= 0.13.0 BuildRequires: startup-notification-devel BuildRequires: unzip BuildRequires: update-desktop-files @@ -169,7 +169,6 @@ Patch2: mozilla-kde.patch Patch3: mozilla-ntlm-full-path.patch Patch4: mozilla-aarch64-startup-crash.patch Patch5: mozilla-bmo1463035.patch -Patch6: mozilla-cubeb-noreturn.patch Patch7: mozilla-fix-aarch64-libopus.patch Patch8: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch Patch9: mozilla-s390-context.patch @@ -186,7 +185,7 @@ Patch19: mozilla-bmo1512162.patch Patch20: mozilla-fix-top-level-asm.patch Patch21: mozilla-bmo1504834-part4.patch Patch22: mozilla-bmo849632.patch -Patch23: mozilla-bmo1610814.patch +Patch23: mozilla-bmo1609538.patch # Firefox/browser Patch101: firefox-kde.patch Patch102: firefox-branded-icons.patch @@ -303,7 +302,6 @@ cd $RPM_BUILD_DIR/%{srcname}-%{orig_version} %patch3 -p1 %patch4 -p1 %patch5 -p1 -%patch6 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p1 @@ -327,14 +325,8 @@ cd $RPM_BUILD_DIR/%{srcname}-%{orig_version} %patch101 -p1 %patch102 -p1 %endif # only_print_mozconfig -# Save config.sub to restore it (for aarch64/ppc64le) later, as it is checked with a checksum -cp ./third_party/rust/backtrace-sys/src/libbacktrace/config.sub ./third_party/rust/backtrace-sys/src/libbacktrace/config.sub.save -cp ./third_party/rust/backtrace-sys/src/libbacktrace/config.guess ./third_party/rust/backtrace-sys/src/libbacktrace/config.guess.save %build -# Restore config.sub file -mv ./third_party/rust/backtrace-sys/src/libbacktrace/config.sub.save ./third_party/rust/backtrace-sys/src/libbacktrace/config.sub -mv ./third_party/rust/backtrace-sys/src/libbacktrace/config.guess.save ./third_party/rust/backtrace-sys/src/libbacktrace/config.guess %if !%{with only_print_mozconfig} # no need to add build time to binaries modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")" diff --git a/firefox-73.0.1.source.tar.xz b/firefox-73.0.1.source.tar.xz deleted file mode 100644 index e589f26..0000000 --- a/firefox-73.0.1.source.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:53415180e74da60fc91700ce1ff33bf5b6f51e65353017a98270899a08e0c3d2 -size 326596084 diff --git a/firefox-73.0.1.source.tar.xz.asc b/firefox-73.0.1.source.tar.xz.asc deleted file mode 100644 index 7007312..0000000 --- a/firefox-73.0.1.source.tar.xz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl5K6J0ACgkQ8aZmj7t9 -Vy7/lhAAo44llSfwisveJn+KWZDQklbeuamHqcCW8E8hBvGmwd5nruKdipVQxuXY -0G/gRi2G365dn179JqY8F0AoYVJMrQ5AeO5CjxSsxb0AkQESlx2GGrTunglLpFNn -C32LRYo9jjKorxXfoJ6hf2u7ObZb0PPilcAOJUXHAcsSc3/cbRAm/TBgkfgM2JRZ -pbMaCy49IjWcbSKYsT+w7UEcDV9pb3pLTYDibhUVq8BWFjgmnrv1CwylEAkNbgFr -5Z6IQ8DSpylruvez98gBWnl6ao6LtiOxSx+t572v94QTHjBB4RJr7n4Q057hp802 -AbLmBbczF4Dru0NdufBszOZyuPArzLN5e77XtdVcocW2gygUTrXGI5ch0/DTd/0t -m2oZ6AykaZhMXUMkkKxd+1nXPv0RGl6TzduDDzyr9x0gUrjNCrehVOLNfBwlo8Wa -u2fSwO1CIQ6Umep6TNjMhnpTLPYhoudZTAATaqgz4ykMQhEQARIhnMw+DOMB9vk3 -ekZARU/bKWH4M6QeJxDfTvdLSv41YJzUWCuLfhDDMZ+egS+9Qa5KGvUaLdJdPLvq -RqlMmoyfW8K+ZTMViyBoiC6ezGQTRkQdXHiiIVG2t9IHkqGuodKpCmtX1eoYWBrd -ths+kKz3n+BdG454A8FlQ4NfttatDVl5oytn228Z1O1uIo4+lIA= -=JftP ------END PGP SIGNATURE----- diff --git a/firefox-74.0.source.tar.xz b/firefox-74.0.source.tar.xz new file mode 100644 index 0000000..ad8d11f --- /dev/null +++ b/firefox-74.0.source.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74589c2836d7c30134636823c3caefbcaed0ea7c3abb2def9e3ddd9f86d9440a +size 320001124 diff --git a/firefox-74.0.source.tar.xz.asc b/firefox-74.0.source.tar.xz.asc new file mode 100644 index 0000000..53b6d42 --- /dev/null +++ b/firefox-74.0.source.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl5mQjEACgkQ8aZmj7t9 +Vy6NdA/+MovzK1fMaGFt2GsRghoFywbvaN7f4Enc5mmCW1NZ3BEMsxuK/sv1ttfN +qEGkssF+taAwo2N7M7MUhD17CsXZiR7cLMhRlFW30PFXWB568F93tH8dounxfYKD +g+WTsjWK8McQHA3hvx0vpcbGT/K6vEK+AGY+g1kvy70H8Zcd6AzgdDpHK4I6uP9S +I8cPuAYaUgkQn+Woi5ejTUR8yCXSWxmc99UvmCjsPd/cCI3hvH4JaGbyGTqz+nQL +XDNC7JIMN9xx98oLHf/r4ZGKgSrT98QFShKNvbNdXUSuZrf8y9df/fWnQY8WMPxm +FuhLVJ2yXalmbkt5k3OVA8TjYan7nbOEav/y4C2blmQKFlu1XQb0KfbZdhrP7Xt0 +Y5auzUHXNPvHlSodkcyK0fHsY3IyF86Rxpj0NVEIbylTcqKLdixEkQzFv6gxV1hG +COc03+A7qMbFEGqu78bo16X8U3Eo+qLUx4cNbBdbmr5hceqWcoy0MDN8md6HQJXn +7gGGT5z2RC+l9R0imRDxmf96GvuIN7MGlWC3TU3WQSyAxv0H8tVPThx8oa9Z87Fb +YS1Zxp90W5USGYkqTSnPGlsopf1mGccJR01Rw3StR5oTB7CxsHdmlWrpeoVVeR5D +GiONh0/dAl3TJdfanVuvwZLdcyN/Tiw0bJi2mccmKRCLcsxGykQ= +=tfW0 +-----END PGP SIGNATURE----- diff --git a/firefox-branded-icons.patch b/firefox-branded-icons.patch index 5885a82..d580010 100644 --- a/firefox-branded-icons.patch +++ b/firefox-branded-icons.patch @@ -1,6 +1,6 @@ # HG changeset patch # Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de -# Parent 127964dc93cc35715852bc811dcc67016d918628 +# Parent 91064bb25b378c1fdcc2d99a89aeaf5e821b1689 diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild --- a/browser/branding/branding-common.mozbuild @@ -24,7 +24,7 @@ diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/brandi 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 -@@ -246,20 +246,23 @@ +@@ -249,20 +249,23 @@ @RESPATH@/browser/chrome/pdfjs.manifest @RESPATH@/browser/chrome/pdfjs/* @RESPATH@/chrome/toolkit@JAREXT@ diff --git a/firefox-kde.patch b/firefox-kde.patch index a244035..5ee4a33 100644 --- a/firefox-kde.patch +++ b/firefox-kde.patch @@ -3,7 +3,7 @@ # Date 1559300151 -7200 # Fri May 31 12:55:51 2019 +0200 # Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec -# Parent 1143a0e4b2eefa83f74fc484c547d7790ca455a1 +# Parent 5db49d25901f390e985c8e4bb5e0ec0b22cadeec How to apply this patch: 1. Import and apply it 2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul @@ -14,7 +14,7 @@ How to apply this patch: 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 -@@ -329,16 +329,23 @@ var gMainPane = { +@@ -333,16 +333,23 @@ var gMainPane = { }, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]); }; @@ -38,7 +38,7 @@ diff --git a/browser/components/preferences/in-content/main.js b/browser/compone ); let performanceSettingsUrl = Services.urlFormatter.formatURLPref("app.support.baseURL") + -@@ -1283,16 +1290,27 @@ var gMainPane = { +@@ -1296,16 +1303,27 @@ var gMainPane = { this._backoffIndex = 0; let shellSvc = getShellService(); diff --git a/l10n-73.0.1.tar.xz b/l10n-73.0.1.tar.xz deleted file mode 100644 index bfd7553..0000000 --- a/l10n-73.0.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f39f1ea6f6dbc7dafb05a744f622648c6ea1115e33aed2f15238321992026736 -size 51248012 diff --git a/l10n-74.0.tar.xz b/l10n-74.0.tar.xz new file mode 100644 index 0000000..6c1293c --- /dev/null +++ b/l10n-74.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:316eaf6b977d188816230e2928e6943848fb44d9b545203a5871ebb89fa42885 +size 51400288 diff --git a/mozilla-aarch64-startup-crash.patch b/mozilla-aarch64-startup-crash.patch index 9d15cc1..79fd320 100644 --- a/mozilla-aarch64-startup-crash.patch +++ b/mozilla-aarch64-startup-crash.patch @@ -3,14 +3,19 @@ # Date 1558442998 -7200 # Tue May 21 14:49:58 2019 +0200 # Node ID 386083b58d8558141901d796ec6919a4aba7ad3a -# Parent 835641be7eb9408aa1eff0d38b37f6c523d2ef98 +# Parent a30a9b9aae5740f096a16118ed9e4bc45d3d1c35 bsc#991344 - Rpi3: Firefox crashes after a few seconds of usage bmo#1302554 - ARM/AARCH64: Firefox crashes on NULL nsIChannel** result pointer in nsIOService::NewChannelFromURIWithProxyFlagsInternal() -diff -r 835641be7eb9 -r 386083b58d85 netwerk/base/nsIOService.cpp ---- a/netwerk/base/nsIOService.cpp Fri Feb 26 16:20:09 2016 +0000 -+++ b/netwerk/base/nsIOService.cpp Tue May 21 14:49:58 2019 +0200 -@@ -1000,7 +1000,13 @@ +diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp +--- a/netwerk/base/nsIOService.cpp ++++ b/netwerk/base/nsIOService.cpp +@@ -1032,17 +1032,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; } } @@ -24,3 +29,8 @@ diff -r 835641be7eb9 -r 386083b58d85 netwerk/base/nsIOService.cpp return NS_OK; } + NS_IMETHODIMP + nsIOService::NewChannelFromURIWithProxyFlags( + nsIURI* aURI, nsIURI* aProxyURI, uint32_t aProxyFlags, + nsINode* aLoadingNode, nsIPrincipal* aLoadingPrincipal, + nsIPrincipal* aTriggeringPrincipal, uint32_t aSecurityFlags, diff --git a/mozilla-bmo1005535.patch b/mozilla-bmo1005535.patch index 8731d8c..f5813b4 100644 --- a/mozilla-bmo1005535.patch +++ b/mozilla-bmo1005535.patch @@ -3,13 +3,18 @@ # Date 1558451540 -7200 # Tue May 21 17:12:20 2019 +0200 # Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad -# Parent 0b9b94a6526d4f1aa6e23b95c1f5f7c0bef841a7 +# Parent c0fdccc716e80a6d289c94f5d507ae141c62a3bf Bug 1005535 - Get skia GPU building on big endian. -diff -r 0b9b94a6526d gfx/skia/skia/src/gpu/GrColor.h ---- a/gfx/skia/skia/src/gpu/GrColor.h Tue May 21 17:26:58 2019 +0200 -+++ b/gfx/skia/skia/src/gpu/GrColor.h Wed Jan 08 12:14:52 2020 +0100 -@@ -64,7 +64,7 @@ +diff --git a/gfx/skia/skia/src/gpu/GrColor.h b/gfx/skia/skia/src/gpu/GrColor.h +--- a/gfx/skia/skia/src/gpu/GrColor.h ++++ b/gfx/skia/skia/src/gpu/GrColor.h +@@ -59,17 +59,17 @@ static inline GrColor GrColorPackRGBA(un + #define GrColorUnpackG(color) (((color) >> GrColor_SHIFT_G) & 0xFF) + #define GrColorUnpackB(color) (((color) >> GrColor_SHIFT_B) & 0xFF) + #define GrColorUnpackA(color) (((color) >> GrColor_SHIFT_A) & 0xFF) + + /** * Since premultiplied means that alpha >= color, we construct a color with * each component==255 and alpha == 0 to be "illegal" */ @@ -18,3 +23,8 @@ diff -r 0b9b94a6526d gfx/skia/skia/src/gpu/GrColor.h /** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */ static inline float GrNormalizeByteToFloat(uint8_t value) { + static const float ONE_OVER_255 = 1.f / 255.f; + return value * ONE_OVER_255; + } + + /** Used to pick vertex attribute types. */ diff --git a/mozilla-bmo1463035.patch b/mozilla-bmo1463035.patch index 4642b9a..ab5438e 100644 --- a/mozilla-bmo1463035.patch +++ b/mozilla-bmo1463035.patch @@ -3,7 +3,7 @@ # User Mike Hommey # Date 1526871862 -32400 # Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43 -# Parent c2f46e526e92a1706d445f8e38a68bf90aee06f3 +# Parent 71b9d492b739602dbfe713fd4de3205e9d485f18 Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons For some reason, GNU as is not happy with the assembly generated after @@ -15,7 +15,7 @@ workaround anymore, so let's just kill it. diff --git a/mfbt/moz.build b/mfbt/moz.build --- a/mfbt/moz.build +++ b/mfbt/moz.build -@@ -132,20 +132,16 @@ EXPORTS["double-conversion"] = [ +@@ -131,20 +131,16 @@ EXPORTS["double-conversion"] = [ LOCAL_INCLUDES += [ '/mfbt/double-conversion', ] diff --git a/mozilla-bmo1504834-part1.patch b/mozilla-bmo1504834-part1.patch index 1faba92..1ebdbfc 100644 --- a/mozilla-bmo1504834-part1.patch +++ b/mozilla-bmo1504834-part1.patch @@ -1,11 +1,11 @@ # HG changeset patch -# Parent 9db312f823881c04c5c16a7623df08cf6aef371d +# Parent b5471d23321d16a0bacc25b7afd27d2e16adba1a Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp -@@ -131,18 +131,17 @@ static IntRect CalculateSurfaceBounds(co +@@ -130,18 +130,17 @@ static IntRect CalculateSurfaceBounds(co Rect sampledBounds = inverse.TransformBounds(*aBounds); if (!sampledBounds.ToIntRect(&bounds)) { return surfaceBounds; @@ -28,7 +28,7 @@ diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h --- a/gfx/2d/Types.h +++ b/gfx/2d/Types.h -@@ -82,25 +82,18 @@ enum class SurfaceFormat : int8_t { +@@ -84,25 +84,18 @@ enum class SurfaceFormat : int8_t { Depth, // This represents the unknown format. diff --git a/mozilla-bmo1504834-part2.patch b/mozilla-bmo1504834-part2.patch index 9fe1b56..4d25a1f 100644 --- a/mozilla-bmo1504834-part2.patch +++ b/mozilla-bmo1504834-part2.patch @@ -1,14 +1,19 @@ # HG changeset patch -# Parent 0e579dcbf7328dda4512cbdafc9b42acec4935ea +# Parent 9319844dca3133fa8bd7107079f1d1ddc5c0bf70 Skia does not support big endian. The places to fix are too numerous and upstream (skia, not Mozilla) has no interest in maintaining big endian. So here we try to swizzle the input for skia, so that skia always works on LE, and when it comes out again, we transform back to BE. -diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp ---- a/gfx/2d/ConvolutionFilter.cpp Wed Jan 08 12:17:44 2020 +0100 -+++ b/gfx/2d/ConvolutionFilter.cpp Wed Jan 08 12:17:49 2020 +0100 -@@ -35,9 +35,38 @@ +diff --git a/gfx/2d/ConvolutionFilter.cpp b/gfx/2d/ConvolutionFilter.cpp +--- a/gfx/2d/ConvolutionFilter.cpp ++++ b/gfx/2d/ConvolutionFilter.cpp +@@ -29,32 +29,79 @@ bool ConvolutionFilter::GetFilterOffsetA + int32_t* aResultLength) { + if (aRowIndex >= mFilter->numValues()) { + return false; + } + mFilter->FilterForValue(aRowIndex, aResultOffset, aResultLength); return true; } @@ -47,7 +52,11 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp } void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst, -@@ -49,8 +78,26 @@ + int32_t aRowIndex, int32_t aRowSize, + bool aHasAlpha) { + MOZ_ASSERT(aRowIndex < mFilter->numValues()); + + int32_t filterOffset; int32_t filterLength; auto filterValues = mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength); @@ -74,10 +83,20 @@ diff -r 0e579dcbf732 gfx/2d/ConvolutionFilter.cpp } /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's -diff -r 0e579dcbf732 gfx/skia/skia/include/core/SkPreConfig.h ---- a/gfx/skia/skia/include/core/SkPreConfig.h Wed Jan 08 12:17:44 2020 +0100 -+++ b/gfx/skia/skia/include/core/SkPreConfig.h Wed Jan 08 12:17:49 2020 +0100 -@@ -73,7 +73,7 @@ + * SkBitmapScaler/SkResizeFilter::computeFactors. It is governed by Skia's + * BSD-style license (see gfx/skia/LICENSE) and the following copyright: + * Copyright (c) 2015 Google Inc. + */ + bool ConvolutionFilter::ComputeResizeFilter(ResizeMethod aResizeMethod, +diff --git a/gfx/skia/skia/include/core/SkPreConfig.h b/gfx/skia/skia/include/core/SkPreConfig.h +--- a/gfx/skia/skia/include/core/SkPreConfig.h ++++ b/gfx/skia/skia/include/core/SkPreConfig.h +@@ -68,17 +68,17 @@ + #define SK_CPU_BENDIAN + #elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + #define SK_CPU_LENDIAN + #elif defined(__sparc) || defined(__sparc__) || \ + defined(_POWER) || defined(__powerpc__) || \ defined(__ppc__) || defined(__hppa) || \ defined(__PPC__) || defined(__PPC64__) || \ defined(_MIPSEB) || defined(__ARMEB__) || \ @@ -86,3 +105,8 @@ diff -r 0e579dcbf732 gfx/skia/skia/include/core/SkPreConfig.h (defined(__sh__) && defined(__BIG_ENDIAN__)) || \ (defined(__ia64) && defined(__BIG_ENDIAN__)) #define SK_CPU_BENDIAN + #else + #define SK_CPU_LENDIAN + #endif + #endif + diff --git a/mozilla-bmo1504834-part3.patch b/mozilla-bmo1504834-part3.patch index c623e81..6c203f7 100644 --- a/mozilla-bmo1504834-part3.patch +++ b/mozilla-bmo1504834-part3.patch @@ -1,12 +1,17 @@ # HG changeset patch -# Parent aecb4600e5da17443b224c79eee178c1d8e155e3 +# Parent d1d66f7e4d0e7fd45e91e4fcee07555e72046d48 For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white). -diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h ---- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200 -+++ b/gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200 -@@ -238,7 +238,18 @@ +diff --git a/gfx/skia/skia/include/private/SkNx.h b/gfx/skia/skia/include/private/SkNx.h +--- a/gfx/skia/skia/include/private/SkNx.h ++++ b/gfx/skia/skia/include/private/SkNx.h +@@ -233,17 +233,28 @@ struct SkNx<1,T> { + AI SkNx operator<<(int bits) const { return fVal << bits; } + AI SkNx operator>>(int bits) const { return fVal >> bits; } + + AI SkNx operator+(const SkNx& y) const { return fVal + y.fVal; } + AI SkNx operator-(const SkNx& y) const { return fVal - y.fVal; } AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; } AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; } @@ -25,10 +30,20 @@ diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); } AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); } -diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h ---- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200 -+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200 -@@ -203,7 +203,13 @@ + AI SkNx operator==(const SkNx& y) const { return FromBits(fVal == y.fVal ? ~0 : 0); } + AI SkNx operator!=(const SkNx& y) const { return FromBits(fVal != y.fVal ? ~0 : 0); } + AI SkNx operator<=(const SkNx& y) const { return FromBits(fVal <= y.fVal ? ~0 : 0); } + AI SkNx operator>=(const SkNx& y) const { return FromBits(fVal >= y.fVal ? ~0 : 0); } + AI SkNx operator< (const SkNx& y) const { return FromBits(fVal < y.fVal ? ~0 : 0); } +diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h +--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h ++++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h +@@ -198,17 +198,23 @@ namespace SK_OPTS_NS { + const SkAlpha* mask, size_t maskRB, + int w, int h) { + auto fn = [](const Sk4px& d, const Sk4px& aa) { + // = (s + d(1-sa))aa + d(1-aa) + // = s*aa + d(1-sa*aa) // ~~~> // a = 1*aa + d(1-1*aa) = aa + d(1-aa) // c = 0*aa + d(1-1*aa) = d(1-aa) @@ -42,3 +57,8 @@ diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h + d.approxMulDiv255(aa.inv()); }; while (h --> 0) { + Sk4px::MapDstAlpha(w, dst, mask, fn); + dst += dstRB / sizeof(*dst); + mask += maskRB / sizeof(*mask); + } + } diff --git a/mozilla-bmo1504834-part4.patch b/mozilla-bmo1504834-part4.patch index 6bc8c2b..9fb32f1 100644 --- a/mozilla-bmo1504834-part4.patch +++ b/mozilla-bmo1504834-part4.patch @@ -1,19 +1,24 @@ # HG changeset patch -# Parent 46ea866ca3acb8bb5e1709ceb799b9c94f591dec +# Parent 883d2c7fec80b9714ccfefa461a02f5b09e3ee09 Problem description: Tab-titles that are too long to fit into a tab get faded out. - On big endian this is broken and instead of fading out, the + On big endian this is broken and instead of fading out, the tab gets white and the font transparent, leading to an unreadable tab-title Solution: This is not a real solution, but a hack. The real solution would have been to byte-swap the correct buffer, but I could not find it. So the next best thing is to deactivate the fading-effect. Now all tab-titles - are readable, albeit not as pretty to look at as they could be. + are readable, albeit not as pretty to look at as they could be. Side-effects: I have not yet found an unwanted side-effect. -diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp ---- a/gfx/2d/DrawTargetSkia.cpp Tue Oct 22 12:27:22 2019 +0200 -+++ b/gfx/2d/DrawTargetSkia.cpp Thu Oct 31 09:11:56 2019 +0100 -@@ -1861,6 +1861,14 @@ +diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp +--- a/gfx/2d/DrawTargetSkia.cpp ++++ b/gfx/2d/DrawTargetSkia.cpp +@@ -1856,16 +1856,24 @@ void DrawTargetSkia::PushLayerWithBlend( + } + + SkCanvas::SaveLayerRec saveRec( + aBounds.IsEmpty() ? nullptr : &bounds, &paint, nullptr, clipImage.get(), + &clipMatrix, SkCanvas::kPreserveLCDText_SaveLayerFlag | (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0)); @@ -28,3 +33,8 @@ diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp mCanvas->saveLayer(saveRec); SetPermitSubpixelAA(aOpaque); + + #ifdef MOZ_WIDGET_COCOA + CGContextRelease(mCG); + mCG = nullptr; + #endif diff --git a/mozilla-bmo1512162.patch b/mozilla-bmo1512162.patch index c5d18a7..c3a8cbf 100644 --- a/mozilla-bmo1512162.patch +++ b/mozilla-bmo1512162.patch @@ -1,12 +1,17 @@ # HG changeset patch -# Parent e5858dc7ab007042436496f7cfb9a5abf10f5082 +# Parent e42a036a5533ea6a60ebc22fd2a150c384d42fda This fixes a broken build for gcc < 9 on ppc64le. This patch can be removed for newer gcc-versions. -diff -r e5858dc7ab00 -r 5d3469aabe61 js/xpconnect/src/XPCWrappedNative.cpp ---- a/js/xpconnect/src/XPCWrappedNative.cpp Thu Nov 29 10:07:29 2018 +0100 -+++ b/js/xpconnect/src/XPCWrappedNative.cpp Tue Sep 10 12:42:13 2019 +0200 -@@ -1092,7 +1092,11 @@ +diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp +--- a/js/xpconnect/src/XPCWrappedNative.cpp ++++ b/js/xpconnect/src/XPCWrappedNative.cpp +@@ -1080,17 +1080,21 @@ class MOZ_STACK_CLASS CallMethodHelper f + uint32_t* result); + + MOZ_ALWAYS_INLINE bool GetInterfaceTypeFromParam(const nsXPTType& type, + nsID* result) const; + MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, MutableHandleValue srcp) const; @@ -19,7 +24,17 @@ diff -r e5858dc7ab00 -r 5d3469aabe61 js/xpconnect/src/XPCWrappedNative.cpp MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); -@@ -1139,7 +1143,11 @@ + nsXPTCVariant* GetDispatchParam(uint8_t paramIndex) { + if (paramIndex >= mJSContextIndex) { + paramIndex += 1; + } + if (paramIndex >= mOptArgcIndex) { +@@ -1127,17 +1131,21 @@ class MOZ_STACK_CLASS CallMethodHelper f + + { + // Success checked later. + mIFaceInfo->GetMethodInfo(mVTableIndex, &mMethodInfo); + } ~CallMethodHelper(); @@ -32,3 +47,8 @@ diff -r e5858dc7ab00 -r 5d3469aabe61 js/xpconnect/src/XPCWrappedNative.cpp // Trace implementation so we can put our CallMethodHelper in a Rooted. void trace(JSTracer* aTrc); + }; + + // static + bool XPCWrappedNative::CallMethod(XPCCallContext& ccx, + CallMode mode /*= CALL_METHOD */) { diff --git a/mozilla-bmo1554971.patch b/mozilla-bmo1554971.patch index e6e3042..d299b13 100644 --- a/mozilla-bmo1554971.patch +++ b/mozilla-bmo1554971.patch @@ -1,5 +1,5 @@ # HG changeset patch -# Parent a25cebecb02d5460b8ad757fe9cb4a9c8d1d7658 +# Parent 38d48db62539afe61d542c9d21e32d57d4b00a73 Eliminate startup error message: JavaScript error: , line 0: Error: Type error for platformInfo value (Error processing arch: Invalid enumeration value "s390x") for runtime.getPlatformInfo. @@ -8,10 +8,15 @@ Reported here: https://bugzilla.mozilla.org/show_bug.cgi?id=1554971 Uncertain if this is causing real problems or not. Also uncertain if the fix actually fixes anything. No response from upstream yet. -diff -r a25cebecb02d -r 378b81b00e73 toolkit/components/extensions/schemas/runtime.json ---- a/toolkit/components/extensions/schemas/runtime.json Fri Jul 05 12:42:44 2019 +0200 -+++ b/toolkit/components/extensions/schemas/runtime.json Fri Jul 19 13:19:30 2019 +0200 -@@ -64,7 +64,7 @@ +diff --git a/toolkit/components/extensions/schemas/runtime.json b/toolkit/components/extensions/schemas/runtime.json +--- a/toolkit/components/extensions/schemas/runtime.json ++++ b/toolkit/components/extensions/schemas/runtime.json +@@ -59,17 +59,17 @@ + "type": "string", + "allowedContexts": ["content", "devtools"], + "description": "The operating system the browser is running on.", + "enum": ["mac", "win", "android", "cros", "linux", "openbsd"] + }, { "id": "PlatformArch", "type": "string", @@ -20,3 +25,8 @@ diff -r a25cebecb02d -r 378b81b00e73 toolkit/components/extensions/schemas/runti "allowedContexts": ["content", "devtools"], "description": "The machine's processor architecture." }, + { + "id": "PlatformInfo", + "type": "object", + "allowedContexts": ["content", "devtools"], + "description": "An object containing information about the current platform.", diff --git a/mozilla-bmo1568145.patch b/mozilla-bmo1568145.patch index 9d3e750..d40ec68 100644 --- a/mozilla-bmo1568145.patch +++ b/mozilla-bmo1568145.patch @@ -8,10 +8,14 @@ and https://reproducible-builds.org/specs/source-date-epoch/ for the definition of this variable. diff --git a/python/mozbuild/mozbuild/action/langpack_manifest.py b/python/mozbuild/mozbuild/action/langpack_manifest.py -index 6f72697..d4cca96 100644 --- a/python/mozbuild/mozbuild/action/langpack_manifest.py +++ b/python/mozbuild/mozbuild/action/langpack_manifest.py -@@ -16,6 +16,7 @@ import os +@@ -11,16 +11,17 @@ + from __future__ import absolute_import, print_function + + import argparse + import sys + import os import json import io import datetime @@ -19,7 +23,17 @@ index 6f72697..d4cca96 100644 import requests import mozversioncontrol import mozpack.path as mozpath -@@ -100,7 +101,7 @@ def get_timestamp_for_locale(path): + from mozpack.chrome.manifest import ( + Manifest, + ManifestLocale, + parse_manifest, + ) +@@ -94,17 +95,17 @@ def get_dt_from_hg(path): + # ts == "20170914215617" + ### + def get_timestamp_for_locale(path): + dt = None + if os.path.isdir(os.path.join(path, '.hg')): dt = get_dt_from_hg(path) if dt is None: @@ -28,3 +42,8 @@ index 6f72697..d4cca96 100644 dt = dt.replace(microsecond=0) return dt.strftime("%Y%m%d%H%M%S") + + + ### + # Parses multiple defines files into a single key-value pair object. + # diff --git a/mozilla-bmo1609538.patch b/mozilla-bmo1609538.patch new file mode 100644 index 0000000..dc8aeb8 --- /dev/null +++ b/mozilla-bmo1609538.patch @@ -0,0 +1,127 @@ +diff --git a/widget/gtk/mozcontainer.h b/widget/gtk/mozcontainer.h +--- a/widget/gtk/mozcontainer.h ++++ b/widget/gtk/mozcontainer.h +@@ -82,6 +82,7 @@ + int frame_callback_handler_surface_id; + gboolean opaque_region_needs_update; + gboolean opaque_region_subtract_corners; ++ gboolean opaque_region_fullscreen; + gboolean surface_position_needs_update; + gboolean surface_needs_clear; + gboolean ready_to_draw; +@@ -118,7 +119,8 @@ + MozContainer* container, const std::function& initial_draw_cb); + wl_surface* moz_gtk_widget_get_wl_surface(GtkWidget* aWidget); + void moz_container_update_opaque_region(MozContainer* container, +- bool aSubtractCorners); ++ bool aSubtractCorners, ++ bool aFullScreen); + void moz_container_set_accelerated(MozContainer* container); + #endif + +diff --git a/widget/gtk/mozcontainer.cpp b/widget/gtk/mozcontainer.cpp +--- a/widget/gtk/mozcontainer.cpp ++++ b/widget/gtk/mozcontainer.cpp +@@ -164,13 +164,15 @@ + + // wl_subsurface_set_position is actually property of parent surface + // which is effective when parent surface is commited. +- wl_surface* parent_surface = +- moz_gtk_widget_get_wl_surface(GTK_WIDGET(container)); +- if (parent_surface) { +- wl_subsurface_set_position(container->subsurface, container->subsurface_dx, +- container->subsurface_dy); +- wl_surface_commit(parent_surface); +- container->surface_position_needs_update = false; ++ wl_subsurface_set_position(container->subsurface, container->subsurface_dx, ++ container->subsurface_dy); ++ container->surface_position_needs_update = false; ++ ++ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container)); ++ if (window) { ++ GdkRectangle rect = (GdkRectangle){0, 0, gdk_window_get_width(window), ++ gdk_window_get_height(window)}; ++ gdk_window_invalidate_rect(window, &rect, false); + } + } + +@@ -222,6 +224,7 @@ + container->ready_to_draw = gfxPlatformGtk::GetPlatform()->IsX11Display(); + container->opaque_region_needs_update = false; + container->opaque_region_subtract_corners = false; ++ container->opaque_region_fullscreen = false; + container->surface_needs_clear = true; + container->subsurface_dx = 0; + container->subsurface_dy = 0; +@@ -579,12 +582,17 @@ + GtkAllocation allocation; + gtk_widget_get_allocation(GTK_WIDGET(container), &allocation); + +- // Set region to mozcontainer which does not have any offset +- wl_region* region = +- CreateOpaqueRegionWayland(0, 0, allocation.width, allocation.height, +- container->opaque_region_subtract_corners); +- wl_surface_set_opaque_region(container->surface, region); +- wl_region_destroy(region); ++ // Set region to mozcontainer for normal state only ++ if (!container->opaque_region_fullscreen) { ++ wl_region* region = ++ CreateOpaqueRegionWayland(0, 0, allocation.width, allocation.height, ++ container->opaque_region_subtract_corners); ++ wl_surface_set_opaque_region(container->surface, region); ++ wl_region_destroy(region); ++ } else { ++ wl_surface_set_opaque_region(container->surface, nullptr); ++ } ++ + container->opaque_region_needs_update = false; + } + +@@ -677,9 +685,11 @@ + } + + void moz_container_update_opaque_region(MozContainer* container, +- bool aSubtractCorners) { ++ bool aSubtractCorners, ++ bool aFullScreen) { + container->opaque_region_needs_update = true; + container->opaque_region_subtract_corners = aSubtractCorners; ++ container->opaque_region_fullscreen = aFullScreen; + + // When GL compositor / WebRender is used, + // moz_container_get_wl_egl_window() is called only once when window +diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -4941,17 +4941,24 @@ + return; + } + +- wl_region* region = +- CreateOpaqueRegionWayland(x, y, width, height, aSubtractCorners); +- wl_surface_set_opaque_region(surface, region); +- wl_region_destroy(region); +- ++ // Set opaque region to toplevel window only in fullscreen mode. ++ bool fullScreen = mSizeState != nsSizeMode_Normal && !mIsTiled; ++ if (fullScreen) { ++ wl_region* region = ++ CreateOpaqueRegionWayland(x, y, width, height, aSubtractCorners); ++ wl_surface_set_opaque_region(surface, region); ++ wl_region_destroy(region); ++ } else { ++ wl_surface_set_opaque_region(surface, nullptr); ++ } ++ ++ // TODO -> create a function for it + GdkWindow* window = gtk_widget_get_window(mShell); + if (window) { + gdk_window_invalidate_rect(window, &rect, false); + } + +- moz_container_update_opaque_region(mContainer, aSubtractCorners); ++ moz_container_update_opaque_region(mContainer, aSubtractCorners, fullScreen); + } + #endif + + diff --git a/mozilla-bmo1610814.patch b/mozilla-bmo1610814.patch deleted file mode 100644 index 7bba079..0000000 --- a/mozilla-bmo1610814.patch +++ /dev/null @@ -1,46 +0,0 @@ - -# HG changeset patch -# User Andrew Osmond -# Date 1579706360 0 -# Node ID b3d8b08265b800165d684281d19ac845a8ff9a66 -# Parent 50c371b37a9fcd994a5866db73bd0d078e19f95d -Bug 1610814 - Fix NEON compile error with gcc and RGB unpacking. r=lsalzman - -This patch makes us use the correct intrinsic for loading a uint8x16 -register. It is not entirely clear why clang accepts this without -complaint but beyond the types, it should be equivalent. - -Differential Revision: https://phabricator.services.mozilla.com/D60667 - -diff --git a/gfx/2d/SwizzleNEON.cpp b/gfx/2d/SwizzleNEON.cpp ---- a/gfx/2d/SwizzleNEON.cpp -+++ b/gfx/2d/SwizzleNEON.cpp -@@ -407,25 +407,25 @@ void UnpackRowRGB24_NEON(const uint8_t* - } - - uint8x16_t alpha = vreinterpretq_u8_u32(vdupq_n_u32(0xFF000000)); - - // Process all 4-pixel chunks as one vector. - src -= 4 * 3; - dst -= 4 * 4; - while (src >= aSrc) { -- uint8x16_t px = vld1q_u16(reinterpret_cast(src)); -+ uint8x16_t px = vld1q_u8(src); - // G2R2B1G1 R1B0G0R0 -> X1R1G1B1 X0R0G0B0 - uint8x8_t pxlo = vtbl1_u8(vget_low_u8(px), masklo); - // B3G3R3B2 G2R2B1G1 -> X3R3G3B3 X2R2G2B2 - uint8x8_t pxhi = - vtbl1_u8(vext_u8(vget_low_u8(px), vget_high_u8(px), 4), maskhi); - px = vcombine_u8(pxlo, pxhi); - px = vorrq_u8(px, alpha); -- vst1q_u16(reinterpret_cast(dst), px); -+ vst1q_u8(dst, px); - src -= 4 * 3; - dst -= 4 * 4; - } - } - - // Force instantiation of swizzle variants here. - template void UnpackRowRGB24_NEON(const uint8_t*, uint8_t*, int32_t); - template void UnpackRowRGB24_NEON(const uint8_t*, uint8_t*, int32_t); - diff --git a/mozilla-bmo849632.patch b/mozilla-bmo849632.patch index 76380b5..49d23a6 100644 --- a/mozilla-bmo849632.patch +++ b/mozilla-bmo849632.patch @@ -1,12 +1,20 @@ +# HG changeset patch +# Parent 3de59fe1b8708c01e134ce698c4232b8a854f617 Problem: webGL sites are displayed in the wrong color (usually blue-ish) Solution: Problem is with skia once again. Output of webgl seems endian-correct, but skia only knows how to deal with little endian. So we swizzle the output of webgl after reading it from readpixels() Note: This does not fix all webGL sites, but is a step in the right direction -diff -r 6b017d3e9733 gfx/gl/GLContext.h ---- a/gfx/gl/GLContext.h Mon Sep 09 10:04:05 2019 +0200 -+++ b/gfx/gl/GLContext.h Wed Nov 13 17:13:04 2019 +0100 -@@ -1551,6 +1551,13 @@ + +diff --git a/gfx/gl/GLContext.h b/gfx/gl/GLContext.h +--- a/gfx/gl/GLContext.h ++++ b/gfx/gl/GLContext.h +@@ -1548,16 +1548,23 @@ class GLContext : public GenericAtomicRe + AFTER_GL_CALL; + } + + void raw_fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLvoid* pixels) { BEFORE_GL_CALL; mSymbols.fReadPixels(x, y, width, height, format, type, pixels); OnSyncCall(); @@ -20,4 +28,8 @@ diff -r 6b017d3e9733 gfx/gl/GLContext.h AFTER_GL_CALL; mHeavyGLCallsSinceLastFlush = true; } - + + void fReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLvoid* pixels); + + public: diff --git a/mozilla-cubeb-noreturn.patch b/mozilla-cubeb-noreturn.patch deleted file mode 100644 index 7c02cd7..0000000 --- a/mozilla-cubeb-noreturn.patch +++ /dev/null @@ -1,18 +0,0 @@ -# HG changeset patch -# User Wolfgang Rosenauer -# 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; - } diff --git a/mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch b/mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch index 2103134..48ec934 100644 --- a/mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch +++ b/mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch @@ -1,6 +1,15 @@ ---- a/js/src/wasm/WasmSignalHandlers.cpp 2019-05-16 11:25:13.260881532 +0200 -+++ b/js/src/wasm/WasmSignalHandlers.cpp 2019-05-16 11:24:35.164589301 +0200 -@@ -243,7 +243,7 @@ using mozilla::DebugOnly; +# HG changeset patch +# Parent 9bc02ee6567ae3f1dad1f8578e650c0a1faa0179 + +diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp +--- a/js/src/wasm/WasmSignalHandlers.cpp ++++ b/js/src/wasm/WasmSignalHandlers.cpp +@@ -240,17 +240,17 @@ using mozilla::DebugOnly; + // Those definitions are however not present in the headers of every Linux + // distro - Raspbian is known to be a problem, for example. However those + // distros are tier-3 platforms. + // + // If you run into compile problems on a tier-3 platform, you can disable the // emulation here. #if defined(__linux__) && defined(__arm__) @@ -9,3 +18,8 @@ #endif #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + # include + #endif + + #if defined(ANDROID) + // Not all versions of the Android NDK define ucontext_t or mcontext_t. diff --git a/mozilla-fix-aarch64-libopus.patch b/mozilla-fix-aarch64-libopus.patch index 8d3f42f..f6f8da7 100644 --- a/mozilla-fix-aarch64-libopus.patch +++ b/mozilla-fix-aarch64-libopus.patch @@ -1,5 +1,5 @@ # HG changeset patch -# Parent 1317782cd47f1d1f2410712a1dd283b305393eae +# Parent 2640f2f68373b7bec776bb11d3b3fb75c72a8adb diff --git a/media/libopus/silk/arm/arm_silk_map.c b/media/libopus/silk/arm/arm_silk_map.c --- a/media/libopus/silk/arm/arm_silk_map.c diff --git a/mozilla-kde.patch b/mozilla-kde.patch index 151e1de..f114698 100644 --- a/mozilla-kde.patch +++ b/mozilla-kde.patch @@ -3,7 +3,7 @@ # Date 1559294891 -7200 # Fri May 31 11:28:11 2019 +0200 # Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112 -# Parent 48866e4a200fb5299b94af4d9841e38336cff9f4 +# Parent d942febc5733911d795d1cec027fb4f3c0a6e53b Description: Add KDE integration to Firefox (toolkit parts) Author: Wolfgang Rosenauer Author: Lubos Lunak @@ -91,7 +91,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build --- a/modules/libpref/moz.build +++ b/modules/libpref/moz.build -@@ -113,16 +113,20 @@ EXPORTS.mozilla += [ +@@ -114,16 +114,20 @@ EXPORTS.mozilla += [ ] EXPORTS.mozilla += sorted(['!' + g for g in gen_h]) @@ -157,7 +157,7 @@ diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpac diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build --- a/toolkit/components/downloads/moz.build +++ b/toolkit/components/downloads/moz.build -@@ -41,10 +41,14 @@ XPCOM_MANIFESTS += [ +@@ -46,10 +46,14 @@ XPCOM_MANIFESTS += [ if CONFIG['MOZ_PLACES']: EXTRA_JS_MODULES += [ @@ -175,7 +175,7 @@ diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloa diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm --- a/toolkit/mozapps/downloads/HelperAppDlg.jsm +++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm -@@ -1195,36 +1195,66 @@ nsUnknownContentTypeDialog.prototype = { +@@ -1209,36 +1209,66 @@ nsUnknownContentTypeDialog.prototype = { params.handlerApp && params.handlerApp.executable && params.handlerApp.executable.isFile() diff --git a/mozilla-nongnome-proxies.patch b/mozilla-nongnome-proxies.patch index 6b75515..7a077df 100644 --- a/mozilla-nongnome-proxies.patch +++ b/mozilla-nongnome-proxies.patch @@ -3,17 +3,22 @@ # Date 1558442915 -7200 # Tue May 21 14:48:35 2019 +0200 # Node ID 6bcf2dfebc1ea2aa34e5cc61152709fc8e409dc5 -# Parent 4c434d19d03d5461e54fa22dfb82eaed4cd6631b +# Parent dc1684693eed684bdafeff0ad78d4f6d288fcae1 Do not use gconf for proxy settings if not running within Gnome Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp =================================================================== RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v retrieving revision 1.1 -diff -r 4c434d19d03d -r 6bcf2dfebc1e toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp ---- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp Wed Jun 12 17:43:18 2019 +0000 -+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp Tue May 21 14:48:35 2019 +0200 -@@ -55,11 +55,14 @@ +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 +@@ -49,21 +49,24 @@ NS_IMETHODIMP + nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) { + // dbus prevents us from being threadsafe, but this routine should not block + // anyhow + *aMainThreadOnly = true; + return NS_OK; } void nsUnixSystemProxySettings::Init() { @@ -33,3 +38,8 @@ diff -r 4c434d19d03d -r 6bcf2dfebc1e toolkit/system/unixproxy/nsUnixSystemProxyS } } + nsresult nsUnixSystemProxySettings::GetPACURI(nsACString& aResult) { + if (mProxySettings) { + nsCString proxyMode; + // Check if mode is auto + nsresult rv = diff --git a/mozilla-ntlm-full-path.patch b/mozilla-ntlm-full-path.patch index aa36c98..cd5dc7d 100644 --- a/mozilla-ntlm-full-path.patch +++ b/mozilla-ntlm-full-path.patch @@ -1,7 +1,7 @@ # HG changeset patch # User Petr Cerny # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6 -# Parent 6ab277cf616dc2748e9855101100a97a6cec10a6 +# Parent 2361c5db1e70e358b2158325e07fa15bb4569c2c Bug 634334 - call to the ntlm_auth helper fails diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp diff --git a/mozilla-ppc-altivec_static_inline.patch b/mozilla-ppc-altivec_static_inline.patch index c0d7987..1bc497d 100644 --- a/mozilla-ppc-altivec_static_inline.patch +++ b/mozilla-ppc-altivec_static_inline.patch @@ -3,7 +3,7 @@ # Date 1558452418 -7200 # Tue May 21 17:26:58 2019 +0200 # Node ID 6cd963b6c82ea6629aaf4050851789b78f310338 -# Parent 010a35335b4e45e222b9efdbda24fd1963202ecf +# Parent 74d44a14979d4ed1431d8291e20775339a5a6510 imported patch mozilla-ppc-altivec_static_inline.patch diff --git a/gfx/qcms/transform-altivec.cpp b/gfx/qcms/transform-altivec.cpp diff --git a/mozilla-reduce-rust-debuginfo.patch b/mozilla-reduce-rust-debuginfo.patch index 3148cb2..e713c7b 100644 --- a/mozilla-reduce-rust-debuginfo.patch +++ b/mozilla-reduce-rust-debuginfo.patch @@ -3,7 +3,7 @@ # Date 1560754926 -7200 # Mon Jun 17 09:02:06 2019 +0200 # Node ID 428161c3b9599083e1b8710eda1760f1f707ab11 -# Parent fa1cf8b9cb4efdf89fe19e543fb54272b726a353 +# Parent 83625bab561d09fb68aa2c71cea7cbafd9ec09b4 #Description: reduce the rust debuginfo level on selected architectures where # compiling with debuginfo=2 causes the OOM killer to interrupt the build on # launchpad builders. Initially this was only on 32 bit architectures, but with @@ -12,7 +12,7 @@ diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure -@@ -1861,18 +1861,18 @@ imply_option('RUSTC_OPT_LEVEL', '2', whe +@@ -1823,18 +1823,18 @@ imply_option('RUSTC_OPT_LEVEL', '2', whe @depends('RUSTC_OPT_LEVEL', moz_optimize) def rustc_opt_level(opt_level_option, moz_optimize): if opt_level_option: @@ -33,7 +33,7 @@ diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolc # optimization level. Since Cargo only supports 2 profiles, we're in # a bit of a bind. # -@@ -1885,16 +1885,18 @@ def rust_compile_flags(opt_level, debug_ +@@ -1847,16 +1847,18 @@ def rust_compile_flags(opt_level, debug_ # opt-level=0 implies -C debug-assertions, which may not be desired # unless Rust debugging is enabled. diff --git a/mozilla-s390-bigendian.patch b/mozilla-s390-bigendian.patch index a776bfa..acfeaf1 100644 --- a/mozilla-s390-bigendian.patch +++ b/mozilla-s390-bigendian.patch @@ -3,13 +3,18 @@ # Date 1558452126 -7200 # Tue May 21 17:22:06 2019 +0200 # Node ID a3cc550d25e3a04d906f516928cbcbe50efd585e -# Parent 433beec63e6b5f409683af20a0c1ab137cc7bfad +# Parent ae49126f2a63ba1de250ad02ffe39379295660f3 [mq]: mozilla-s390-bigendian.patch -diff -r 433beec63e6b -r a3cc550d25e3 build/autoconf/icu.m4 ---- a/build/autoconf/icu.m4 Tue May 21 17:12:20 2019 +0200 -+++ b/build/autoconf/icu.m4 Tue May 21 17:22:06 2019 +0200 -@@ -78,7 +78,7 @@ +diff --git a/build/autoconf/icu.m4 b/build/autoconf/icu.m4 +--- a/build/autoconf/icu.m4 ++++ b/build/autoconf/icu.m4 +@@ -63,17 +63,17 @@ if test -n "$USE_ICU"; then + if test x"$version" = x; then + AC_MSG_ERROR([cannot determine icu version number from uvernum.h header file $lineno]) + fi + MOZ_ICU_VERSION="$version" + # TODO: the l is actually endian-dependent # We could make this set as 'l' or 'b' for little or big, respectively, # but we'd need to check in a big-endian version of the file. @@ -18,3 +23,8 @@ diff -r 433beec63e6b -r a3cc550d25e3 build/autoconf/icu.m4 fi AC_SUBST(MOZ_ICU_VERSION) + AC_SUBST(JS_HAS_INTL_API) + AC_SUBST(USE_ICU) + AC_SUBST(ICU_DATA_FILE) + + if test -n "$USE_ICU"; then diff --git a/mozilla-s390-context.patch b/mozilla-s390-context.patch index 357cf9e..1a38737 100644 --- a/mozilla-s390-context.patch +++ b/mozilla-s390-context.patch @@ -3,13 +3,18 @@ # Date 1558452408 -7200 # Tue May 21 17:26:48 2019 +0200 # Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4 -# Parent a3cc550d25e3a04d906f516928cbcbe50efd585e +# Parent cb0089687ab899846b8229c3741261d50101340e [mq]: mozilla-s390-context.patch -diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp ---- a/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:22:06 2019 +0200 -+++ b/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:26:48 2019 +0200 -@@ -154,6 +154,10 @@ +diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp +--- a/js/src/wasm/WasmSignalHandlers.cpp ++++ b/js/src/wasm/WasmSignalHandlers.cpp +@@ -150,16 +150,20 @@ using mozilla::DebugOnly; + # define FP_sig(p) ((p)->uc_mcontext.mc_fp) + # define SP_sig(p) ((p)->uc_mcontext.mc_i7) + # endif + # if defined(__linux__) && (defined(__ppc64__) || defined(__PPC64__) || \ + defined(__ppc64le__) || defined(__PPC64LE__)) # define R01_sig(p) ((p)->uc_mcontext.gp_regs[1]) # define R32_sig(p) ((p)->uc_mcontext.gp_regs[32]) # endif @@ -20,7 +25,17 @@ diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp #elif defined(__NetBSD__) # define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP]) # define EBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EBP]) -@@ -385,8 +389,13 @@ + # define ESP_sig(p) ((p)->uc_mcontext.__gregs[_REG_ESP]) + # define RIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RIP]) + # define RSP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSP]) + # define RBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBP]) + # define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11]) +@@ -381,18 +385,23 @@ struct macos_arm_context { + # define FP_sig(p) RFP_sig(p) + # define SP_sig(p) RSP_sig(p) + # define LR_sig(p) R31_sig(p) + #elif defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || \ + defined(__PPC64LE__) # define PC_sig(p) R32_sig(p) # define SP_sig(p) R01_sig(p) # define FP_sig(p) R01_sig(p) @@ -34,3 +49,8 @@ diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp static void SetContextPC(CONTEXT* context, uint8_t* pc) { #ifdef PC_sig *reinterpret_cast(&PC_sig(context)) = pc; + #else + MOZ_CRASH(); + #endif + } + diff --git a/tar_stamps b/tar_stamps index 0ed792d..393ab60 100644 --- a/tar_stamps +++ b/tar_stamps @@ -1,11 +1,11 @@ PRODUCT="firefox" CHANNEL="release" -VERSION="73.0.1" +VERSION="74.0" VERSION_SUFFIX="" -PREV_VERSION="73.0" +PREV_VERSION="73.0.1" PREV_VERSION_SUFFIX="" #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-release" -RELEASE_TAG="5b0905233e5d29d9fbad98c1380030387cda5dd9" -RELEASE_TIMESTAMP="20200217142647" +RELEASE_TAG="c6e493873ba543907dadabb42b64208a3679d43d" +RELEASE_TIMESTAMP="20200309095159" From aafd1faf85bdab3f0a47d9be63dbaaad4478b3f8cd7a98558f6191c9c36bced5 Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Thu, 12 Mar 2020 19:15:11 +0000 Subject: [PATCH 2/3] (bmo#1609538, boo#1166471) OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=810 --- MozillaFirefox.changes | 1 + 1 file changed, 1 insertion(+) diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index a118975..914c8cc 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -44,6 +44,7 @@ Sat Mar 7 08:51:06 UTC 2020 - Wolfgang Rosenauer mozilla-bmo1610814.patch mozilla-cubeb-noreturn.patch - add mozilla-bmo1609538.patch to fix wayland issues with mutter 3.36 + (bmo#1609538, boo#1166471) ------------------------------------------------------------------- Wed Feb 26 08:12:00 UTC 2020 - Wolfgang Rosenauer From cc93ded0ebd2e651afd0fca7c32cb87dcb87ffbeeec2486ea2f590940eb2ee55 Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Thu, 12 Mar 2020 22:08:39 +0000 Subject: [PATCH 3/3] OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=811 --- mozilla-bmo1609538.patch | 126 +++++++++++++++++++++++++++++---------- 1 file changed, 95 insertions(+), 31 deletions(-) diff --git a/mozilla-bmo1609538.patch b/mozilla-bmo1609538.patch index dc8aeb8..dbe571c 100644 --- a/mozilla-bmo1609538.patch +++ b/mozilla-bmo1609538.patch @@ -1,28 +1,15 @@ -diff --git a/widget/gtk/mozcontainer.h b/widget/gtk/mozcontainer.h ---- a/widget/gtk/mozcontainer.h -+++ b/widget/gtk/mozcontainer.h -@@ -82,6 +82,7 @@ - int frame_callback_handler_surface_id; - gboolean opaque_region_needs_update; - gboolean opaque_region_subtract_corners; -+ gboolean opaque_region_fullscreen; - gboolean surface_position_needs_update; - gboolean surface_needs_clear; - gboolean ready_to_draw; -@@ -118,7 +119,8 @@ - MozContainer* container, const std::function& initial_draw_cb); - wl_surface* moz_gtk_widget_get_wl_surface(GtkWidget* aWidget); - void moz_container_update_opaque_region(MozContainer* container, -- bool aSubtractCorners); -+ bool aSubtractCorners, -+ bool aFullScreen); - void moz_container_set_accelerated(MozContainer* container); - #endif - +# HG changeset patch +# Parent 047fa9d20b78759029e87c48f0d64f819e889e4c + diff --git a/widget/gtk/mozcontainer.cpp b/widget/gtk/mozcontainer.cpp --- a/widget/gtk/mozcontainer.cpp +++ b/widget/gtk/mozcontainer.cpp -@@ -164,13 +164,15 @@ +@@ -159,23 +159,25 @@ void moz_container_move(MozContainer* co + + // Wayland subsurface is not created yet. + if (!container->subsurface) { + return; + } // wl_subsurface_set_position is actually property of parent surface // which is effective when parent surface is commited. @@ -45,7 +32,17 @@ diff --git a/widget/gtk/mozcontainer.cpp b/widget/gtk/mozcontainer.cpp } } -@@ -222,6 +224,7 @@ + // This is called from layout/compositor code only with + // size equal to GL rendering context. Otherwise there are + // rendering artifacts as wl_egl_window size does not match + // GL rendering pipeline setup. + void moz_container_egl_window_set_size(MozContainer* container, int width, +@@ -217,16 +219,17 @@ void moz_container_init(MozContainer* co + container->subsurface = nullptr; + container->eglwindow = nullptr; + container->frame_callback_handler = nullptr; + container->frame_callback_handler_surface_id = -1; + // We can draw to x11 window any time. container->ready_to_draw = gfxPlatformGtk::GetPlatform()->IsX11Display(); container->opaque_region_needs_update = false; container->opaque_region_subtract_corners = false; @@ -53,7 +50,17 @@ diff --git a/widget/gtk/mozcontainer.cpp b/widget/gtk/mozcontainer.cpp container->surface_needs_clear = true; container->subsurface_dx = 0; container->subsurface_dy = 0; -@@ -579,12 +582,17 @@ + container->surface_position_needs_update = 0; + container->initial_draw_cbs.clear(); + #endif + + LOG(("%s [%p]\n", __FUNCTION__, (void*)container)); +@@ -569,22 +572,26 @@ static void moz_container_add(GtkContain + moz_container_put(MOZ_CONTAINER(container), widget, 0, 0); + } + + #ifdef MOZ_WAYLAND + static void moz_container_set_opaque_region(MozContainer* container) { GtkAllocation allocation; gtk_widget_get_allocation(GTK_WIDGET(container), &allocation); @@ -73,11 +80,20 @@ diff --git a/widget/gtk/mozcontainer.cpp b/widget/gtk/mozcontainer.cpp + } else { + wl_surface_set_opaque_region(container->surface, nullptr); + } -+ - container->opaque_region_needs_update = false; } -@@ -677,9 +685,11 @@ + struct wl_surface* moz_container_get_wl_surface(MozContainer* container) { + LOGWAYLAND(("%s [%p] surface %p ready_to_draw %d\n", __FUNCTION__, + (void*)container, (void*)container->surface, + container->ready_to_draw)); + + if (!container->surface) { +@@ -670,17 +677,19 @@ gboolean moz_container_has_wl_egl_window + + gboolean moz_container_surface_needs_clear(MozContainer* container) { + int ret = container->surface_needs_clear; + container->surface_needs_clear = false; + return ret; } void moz_container_update_opaque_region(MozContainer* container, @@ -87,13 +103,57 @@ diff --git a/widget/gtk/mozcontainer.cpp b/widget/gtk/mozcontainer.cpp container->opaque_region_needs_update = true; container->opaque_region_subtract_corners = aSubtractCorners; + container->opaque_region_fullscreen = aFullScreen; + } + #endif - // When GL compositor / WebRender is used, - // moz_container_get_wl_egl_window() is called only once when window + void moz_container_force_default_visual(MozContainer* container) { + container->force_default_visual = true; + } +diff --git a/widget/gtk/mozcontainer.h b/widget/gtk/mozcontainer.h +--- a/widget/gtk/mozcontainer.h ++++ b/widget/gtk/mozcontainer.h +@@ -77,16 +77,17 @@ struct _MozContainer { + struct wl_surface* surface; + struct wl_subsurface* subsurface; + int subsurface_dx, subsurface_dy; + struct wl_egl_window* eglwindow; + struct wl_callback* frame_callback_handler; + int frame_callback_handler_surface_id; + gboolean opaque_region_needs_update; + gboolean opaque_region_subtract_corners; ++ gboolean opaque_region_fullscreen; + gboolean surface_position_needs_update; + gboolean surface_needs_clear; + gboolean ready_to_draw; + std::vector> initial_draw_cbs; + #endif + gboolean force_default_visual; + }; + +@@ -112,12 +113,13 @@ void moz_container_move_resize(MozContai + void moz_container_egl_window_set_size(MozContainer* container, int width, + int height); + void moz_container_scale_changed(MozContainer* container, + GtkAllocation* aAllocation); + void moz_container_add_initial_draw_callback( + MozContainer* container, const std::function& initial_draw_cb); + wl_surface* moz_gtk_widget_get_wl_surface(GtkWidget* aWidget); + void moz_container_update_opaque_region(MozContainer* container, +- bool aSubtractCorners); ++ bool aSubtractCorners, ++ bool aFullScreen); + #endif + + #endif /* __MOZ_CONTAINER_H__ */ diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp --- a/widget/gtk/nsWindow.cpp +++ b/widget/gtk/nsWindow.cpp -@@ -4941,17 +4941,24 @@ +@@ -4860,27 +4860,34 @@ void nsWindow::UpdateTopLevelOpaqueRegio + int width = DevicePixelsToGdkCoordRoundDown(mBounds.width); + int height = DevicePixelsToGdkCoordRoundDown(mBounds.height); + + GdkRectangle rect = {x, y, width, height}; + if (!mToplevelOpaqueRegionState.NeedsUpdate(rect, aSubtractCorners)) { return; } @@ -124,4 +184,8 @@ diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp } #endif - + static void GdkWindowSetOpaqueRegion(GdkWindow* aGdkWindow, + cairo_region_t* aRegion) { + // Available as of GTK 3.10+ + static auto sGdkWindowSetOpaqueRegion = + (void (*)(GdkWindow*, cairo_region_t*))dlsym(