forked from pool/MozillaFirefox
Accepting request 730473 from mozilla:Factory
- Mozilla Firefox 69.0 * Enhanced Tracking Protection (ETP) for stronger privacy protections * Block Autoplay feature is enhanced to give users the option to block any video * Users in the US or using the en-US browser, can get a new “New Tab” page experience connecting to the best of Pocket's content. * Support for the Web Authentication HmacSecret extension via Windows Hello introduced. * Support for receiving multiple video codecs with this release makes it easier for WebRTC conferencing services to mix video from different clients. MFSA 2019-25 (boo#1149324) * CVE-2019-11741 (bmo#1539595) Isolate addons.mozilla.org and accounts.firefox.com * CVE-2019-5849 (bmo#1555838) Out-of-bounds read in Skia * CVE-2019-11737 (bmo#1388015) Content security policy directives ignore port and path if host is a wildcard * CVE-2019-11734 (bmo#1352875,bmo#1536227,bmo#1557208,bmo#1560641) Memory safety bugs fixed in Firefox 69 * CVE-2019-11735 (bmo#1561404,bmo#1561484,bmo#1568047,bmo#1561912, bmo#1565744,bmo#1568858,bmo#1570358) Memory safety bugs fixed in Firefox 69 and Firefox ESR 68.1 * CVE-2019-11740 (bmo#1563133,bmo#1573160) Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox ESR 60.9 - requires * rust/cargo >= 1.35 * rust-cbindgen >= 0.9.0 * mozilla-nss >= 3.45 - rebased patches OBS-URL: https://build.opensuse.org/request/show/730473 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/MozillaFirefox?expand=0&rev=295
This commit is contained in:
commit
2176e2a590
@ -1,3 +1,50 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 5 13:02:39 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
|
- Mozilla Firefox 69.0
|
||||||
|
* Enhanced Tracking Protection (ETP) for stronger privacy protections
|
||||||
|
* Block Autoplay feature is enhanced to give users the option to block
|
||||||
|
any video
|
||||||
|
* Users in the US or using the en-US browser, can get a new “New Tab”
|
||||||
|
page experience connecting to the best of Pocket's content.
|
||||||
|
* Support for the Web Authentication HmacSecret extension via
|
||||||
|
Windows Hello introduced.
|
||||||
|
* Support for receiving multiple video codecs with this release makes
|
||||||
|
it easier for WebRTC conferencing services to mix video from
|
||||||
|
different clients.
|
||||||
|
MFSA 2019-25 (boo#1149324)
|
||||||
|
* CVE-2019-11741 (bmo#1539595)
|
||||||
|
Isolate addons.mozilla.org and accounts.firefox.com
|
||||||
|
* CVE-2019-5849 (bmo#1555838)
|
||||||
|
Out-of-bounds read in Skia
|
||||||
|
* CVE-2019-11737 (bmo#1388015)
|
||||||
|
Content security policy directives ignore port and path if host is a wildcard
|
||||||
|
* CVE-2019-11734 (bmo#1352875,bmo#1536227,bmo#1557208,bmo#1560641)
|
||||||
|
Memory safety bugs fixed in Firefox 69
|
||||||
|
* CVE-2019-11735 (bmo#1561404,bmo#1561484,bmo#1568047,bmo#1561912,
|
||||||
|
bmo#1565744,bmo#1568858,bmo#1570358)
|
||||||
|
Memory safety bugs fixed in Firefox 69 and Firefox ESR 68.1
|
||||||
|
* CVE-2019-11740 (bmo#1563133,bmo#1573160)
|
||||||
|
Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox ESR 60.9
|
||||||
|
- requires
|
||||||
|
* rust/cargo >= 1.35
|
||||||
|
* rust-cbindgen >= 0.9.0
|
||||||
|
* mozilla-nss >= 3.45
|
||||||
|
- rebased patches
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 4 15:38:40 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
|
- added a bunch of patches mainly for big endian platforms
|
||||||
|
* mozilla-bmo1504834-part1.patch
|
||||||
|
* mozilla-bmo1504834-part2.patch
|
||||||
|
* mozilla-bmo1504834-part3.patch
|
||||||
|
* mozilla-bmo1511604.patch
|
||||||
|
* mozilla-bmo1554971.patch
|
||||||
|
* mozilla-bmo1573381.patch
|
||||||
|
* mozilla-nestegg-big-endian.patch
|
||||||
|
* mozilla-bmo1512162.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Aug 30 20:49:11 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
Fri Aug 30 20:49:11 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
|
||||||
|
@ -18,13 +18,13 @@
|
|||||||
|
|
||||||
|
|
||||||
# changed with every update
|
# changed with every update
|
||||||
%define major 68
|
%define major 69
|
||||||
%define mainver %major.1.0
|
%define mainver %major.0
|
||||||
%define orig_version 68.1.0
|
%define orig_version 69.0
|
||||||
%define orig_suffix esr
|
%define orig_suffix %{nil}
|
||||||
%define update_channel esr68
|
%define update_channel release
|
||||||
%define branding 1
|
%define branding 1
|
||||||
%define releasedate 20190826132627
|
%define releasedate 20190827005903
|
||||||
%define source_prefix firefox-%{orig_version}
|
%define source_prefix firefox-%{orig_version}
|
||||||
|
|
||||||
# always build with GCC as SUSE Security Team requires that
|
# always build with GCC as SUSE Security Team requires that
|
||||||
@ -33,6 +33,8 @@
|
|||||||
# PIE, full relro
|
# PIE, full relro
|
||||||
%define build_hardened 1
|
%define build_hardened 1
|
||||||
|
|
||||||
|
%bcond_with only_print_mozconfig
|
||||||
|
|
||||||
# Firefox only supports i686
|
# Firefox only supports i686
|
||||||
%ifarch %ix86
|
%ifarch %ix86
|
||||||
ExclusiveArch: i586 i686
|
ExclusiveArch: i586 i686
|
||||||
@ -70,7 +72,7 @@ BuildRequires: gcc7-c++
|
|||||||
%else
|
%else
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: cargo >= 1.34
|
BuildRequires: cargo >= 1.35
|
||||||
BuildRequires: libXcomposite-devel
|
BuildRequires: libXcomposite-devel
|
||||||
BuildRequires: libcurl-devel
|
BuildRequires: libcurl-devel
|
||||||
BuildRequires: libidl-devel
|
BuildRequires: libidl-devel
|
||||||
@ -79,14 +81,14 @@ BuildRequires: libnotify-devel
|
|||||||
BuildRequires: libproxy-devel
|
BuildRequires: libproxy-devel
|
||||||
BuildRequires: makeinfo
|
BuildRequires: makeinfo
|
||||||
BuildRequires: mozilla-nspr-devel >= 4.21
|
BuildRequires: mozilla-nspr-devel >= 4.21
|
||||||
BuildRequires: mozilla-nss-devel >= 3.44.1
|
BuildRequires: mozilla-nss-devel >= 3.45
|
||||||
BuildRequires: nasm >= 2.13
|
BuildRequires: nasm >= 2.13
|
||||||
BuildRequires: nodejs >= 8.11
|
BuildRequires: nodejs8 >= 8.11
|
||||||
BuildRequires: python-devel
|
BuildRequires: python-devel
|
||||||
BuildRequires: python2-xml
|
BuildRequires: python2-xml
|
||||||
BuildRequires: python3 >= 3.5
|
BuildRequires: python3 >= 3.5
|
||||||
BuildRequires: rust >= 1.34
|
BuildRequires: rust >= 1.35
|
||||||
BuildRequires: rust-cbindgen >= 0.8.7
|
BuildRequires: rust-cbindgen >= 0.9.0
|
||||||
BuildRequires: startup-notification-devel
|
BuildRequires: startup-notification-devel
|
||||||
BuildRequires: unzip
|
BuildRequires: unzip
|
||||||
BuildRequires: update-desktop-files
|
BuildRequires: update-desktop-files
|
||||||
@ -134,7 +136,8 @@ Summary: Mozilla %{appname} Web Browser
|
|||||||
License: MPL-2.0
|
License: MPL-2.0
|
||||||
Group: Productivity/Networking/Web/Browsers
|
Group: Productivity/Networking/Web/Browsers
|
||||||
Url: http://www.mozilla.org/
|
Url: http://www.mozilla.org/
|
||||||
Source: http://ftp.mozilla.org/pub/firefox/releases/%{version}%{orig_suffix}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz
|
%if !%{with only_print_mozconfig}
|
||||||
|
Source: http://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{orig_suffix}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz
|
||||||
Source1: MozillaFirefox.desktop
|
Source1: MozillaFirefox.desktop
|
||||||
Source2: MozillaFirefox-rpmlintrc
|
Source2: MozillaFirefox-rpmlintrc
|
||||||
Source3: mozilla.sh.in
|
Source3: mozilla.sh.in
|
||||||
@ -157,7 +160,7 @@ Source16: MozillaFirefox.changes
|
|||||||
Source18: mozilla-api-key
|
Source18: mozilla-api-key
|
||||||
Source19: google-api-key
|
Source19: google-api-key
|
||||||
Source20: https://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{orig_suffix}/source/%{progname}-%{orig_version}%{orig_suffix}.source.tar.xz.asc
|
Source20: https://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{orig_suffix}/source/%{progname}-%{orig_version}%{orig_suffix}.source.tar.xz.asc
|
||||||
Source21: mozilla.keyring
|
Source21: https://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{orig_suffix}/KEY#/mozilla.keyring
|
||||||
# Gecko/Toolkit
|
# Gecko/Toolkit
|
||||||
Patch1: mozilla-nongnome-proxies.patch
|
Patch1: mozilla-nongnome-proxies.patch
|
||||||
Patch2: mozilla-kde.patch
|
Patch2: mozilla-kde.patch
|
||||||
@ -174,10 +177,19 @@ Patch12: mozilla-reduce-rust-debuginfo.patch
|
|||||||
Patch13: mozilla-ppc-altivec_static_inline.patch
|
Patch13: mozilla-ppc-altivec_static_inline.patch
|
||||||
Patch14: mozilla-bmo1005535.patch
|
Patch14: mozilla-bmo1005535.patch
|
||||||
Patch15: mozilla-bmo1568145.patch
|
Patch15: mozilla-bmo1568145.patch
|
||||||
|
Patch16: mozilla-bmo1573381.patch
|
||||||
|
Patch17: mozilla-bmo1504834-part1.patch
|
||||||
|
Patch18: mozilla-bmo1504834-part2.patch
|
||||||
|
Patch19: mozilla-bmo1504834-part3.patch
|
||||||
|
Patch20: mozilla-bmo1511604.patch
|
||||||
|
Patch21: mozilla-bmo1554971.patch
|
||||||
|
Patch22: mozilla-nestegg-big-endian.patch
|
||||||
|
Patch23: mozilla-bmo1512162.patch
|
||||||
# Firefox/browser
|
# Firefox/browser
|
||||||
Patch101: firefox-kde.patch
|
Patch101: firefox-kde.patch
|
||||||
Patch102: firefox-branded-icons.patch
|
Patch102: firefox-branded-icons.patch
|
||||||
Patch103: firefox-add-kde.js-in-order-to-survive-PGO-build.patch
|
Patch103: firefox-add-kde.js-in-order-to-survive-PGO-build.patch
|
||||||
|
%endif # only_print_mozconfig
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
Requires(post): coreutils shared-mime-info desktop-file-utils
|
Requires(post): coreutils shared-mime-info desktop-file-utils
|
||||||
Requires(postun): shared-mime-info desktop-file-utils
|
Requires(postun): shared-mime-info desktop-file-utils
|
||||||
@ -267,13 +279,14 @@ This subpackage contains the Breakpad created and compatible debugging
|
|||||||
symbols meant for upload to Mozilla's crash collector database.
|
symbols meant for upload to Mozilla's crash collector database.
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if !%{with only_print_mozconfig}
|
||||||
%prep
|
%prep
|
||||||
%if %localize
|
%if %localize
|
||||||
|
|
||||||
# If generated incorrectly, the tarball will be ~270B in
|
# If generated incorrectly, the tarball will be ~270B in
|
||||||
# size, so 1MB seems like good enough limit to check.
|
# size, so 1MB seems like good enough limit to check.
|
||||||
MINSIZE=1048576
|
MINSIZE=1048576
|
||||||
if (( $(stat -c%s "%{SOURCE7}") < MINSIZE)); then
|
if (( $(stat -Lc%s "%{SOURCE7}") < MINSIZE)); then
|
||||||
echo "Translations tarball %{SOURCE7} not generated properly."
|
echo "Translations tarball %{SOURCE7} not generated properly."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -293,19 +306,29 @@ cd $RPM_BUILD_DIR/%{source_prefix}
|
|||||||
%patch8 -p1
|
%patch8 -p1
|
||||||
%patch9 -p1
|
%patch9 -p1
|
||||||
%patch10 -p1
|
%patch10 -p1
|
||||||
%ifarch s390x
|
%ifarch s390x ppc64
|
||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
%patch14 -p1
|
%patch14 -p1
|
||||||
%patch15 -p1
|
%patch15 -p1
|
||||||
|
%patch16 -p1
|
||||||
|
%patch17 -p1
|
||||||
|
%patch18 -p1
|
||||||
|
%patch19 -p1
|
||||||
|
%patch20 -p1
|
||||||
|
%patch21 -p1
|
||||||
|
%patch22 -p1
|
||||||
|
%patch23 -p1
|
||||||
# Firefox
|
# Firefox
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
%patch102 -p1
|
%patch102 -p1
|
||||||
%patch103 -p1
|
%patch103 -p1
|
||||||
|
%endif # only_print_mozconfig
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
%if !%{with only_print_mozconfig}
|
||||||
# no need to add build time to binaries
|
# no need to add build time to binaries
|
||||||
modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")"
|
modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")"
|
||||||
DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
|
DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
|
||||||
@ -318,6 +341,8 @@ if test "$kdehelperversion" != %{kde_helper_version}; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
source %{SOURCE5}
|
source %{SOURCE5}
|
||||||
|
%endif # only_print_mozconfig
|
||||||
|
|
||||||
export MOZ_SOURCE_CHANGESET=$REV
|
export MOZ_SOURCE_CHANGESET=$REV
|
||||||
export SOURCE_REPO=$REPO
|
export SOURCE_REPO=$REPO
|
||||||
export source_repo=$REPO
|
export source_repo=$REPO
|
||||||
@ -348,8 +373,18 @@ export CFLAGS="$CFLAGS -mminimal-toc"
|
|||||||
%endif
|
%endif
|
||||||
export CXXFLAGS="$CFLAGS"
|
export CXXFLAGS="$CFLAGS"
|
||||||
export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
|
export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
|
||||||
|
%if %{with only_print_mozconfig}
|
||||||
|
echo "export CC=$CC"
|
||||||
|
echo "export CXX=$CXX"
|
||||||
|
echo "export CFLAGS=\"$CFLAGS\""
|
||||||
|
echo "export LDFLAGS=\"$LDFLAGS\""
|
||||||
|
echo "export RUSTFLAGS=\"$RUSTFLAGS\""
|
||||||
|
echo ""
|
||||||
|
cat << EOF
|
||||||
|
%else
|
||||||
%limit_build -m 2000
|
%limit_build -m 2000
|
||||||
cat << EOF > $MOZCONFIG
|
cat << EOF > $MOZCONFIG
|
||||||
|
%endif
|
||||||
mk_add_options MOZILLA_OFFICIAL=1
|
mk_add_options MOZILLA_OFFICIAL=1
|
||||||
mk_add_options BUILD_OFFICIAL=1
|
mk_add_options BUILD_OFFICIAL=1
|
||||||
mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs}
|
mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs}
|
||||||
@ -413,7 +448,7 @@ ac_add_options --with-arch=armv7-a
|
|||||||
ac_add_options --disable-webrtc
|
ac_add_options --disable-webrtc
|
||||||
%endif
|
%endif
|
||||||
# mitigation/workaround for bmo#1512162
|
# mitigation/workaround for bmo#1512162
|
||||||
%ifarch ppc64le
|
%ifarch ppc64le s390x
|
||||||
ac_add_options --enable-optimize="-O1"
|
ac_add_options --enable-optimize="-O1"
|
||||||
%endif
|
%endif
|
||||||
%ifarch x86_64
|
%ifarch x86_64
|
||||||
@ -424,7 +459,19 @@ ac_add_options MOZ_PGO=1
|
|||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
EOF
|
EOF
|
||||||
|
%if !%{with only_print_mozconfig}
|
||||||
|
%ifarch ppc64 s390x s390
|
||||||
|
# NOTE: Currently, system-icu is too old, so we can't build with that,
|
||||||
|
# but have to generate the .dat-file freshly. This seems to be a
|
||||||
|
# less fragile approach anyways.
|
||||||
|
# ac_add_options --with-system-icu
|
||||||
|
echo "Generate big endian version of config/external/icu/data/icud58l.dat"
|
||||||
|
./mach python intl/icu_sources_data.py .
|
||||||
|
ls -l config/external/icu/data
|
||||||
|
rm -f config/external/icu/data/icudt*l.dat
|
||||||
|
%endif
|
||||||
xvfb-run --server-args="-screen 0 1920x1080x24" ./mach build
|
xvfb-run --server-args="-screen 0 1920x1080x24" ./mach build
|
||||||
|
%endif # only_print_mozconfig
|
||||||
|
|
||||||
%install
|
%install
|
||||||
cd $RPM_BUILD_DIR/obj
|
cd $RPM_BUILD_DIR/obj
|
||||||
@ -440,7 +487,7 @@ make -C browser/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
|
|||||||
grep amazondotcom dist/firefox/browser/omni.ja
|
grep amazondotcom dist/firefox/browser/omni.ja
|
||||||
# copy tree into RPM_BUILD_ROOT
|
# copy tree into RPM_BUILD_ROOT
|
||||||
mkdir -p %{buildroot}%{progdir}
|
mkdir -p %{buildroot}%{progdir}
|
||||||
cp -rf $RPM_BUILD_DIR/obj/dist/firefox/* %{buildroot}%{progdir}
|
cp -rf $RPM_BUILD_DIR/obj/dist/%{progname}/* %{buildroot}%{progdir}
|
||||||
mkdir -p %{buildroot}%{progdir}/distribution/extensions
|
mkdir -p %{buildroot}%{progdir}/distribution/extensions
|
||||||
mkdir -p %{buildroot}%{progdir}/browser/defaults/preferences/
|
mkdir -p %{buildroot}%{progdir}/browser/defaults/preferences/
|
||||||
# install gre prefs
|
# install gre prefs
|
||||||
@ -448,7 +495,7 @@ install -m 644 %{SOURCE13} %{buildroot}%{progdir}/defaults/pref/
|
|||||||
# install browser prefs
|
# install browser prefs
|
||||||
install -m 644 %{SOURCE6} %{buildroot}%{progdir}/browser/defaults/preferences/kde.js
|
install -m 644 %{SOURCE6} %{buildroot}%{progdir}/browser/defaults/preferences/kde.js
|
||||||
install -m 644 %{SOURCE9} %{buildroot}%{progdir}/browser/defaults/preferences/firefox.js
|
install -m 644 %{SOURCE9} %{buildroot}%{progdir}/browser/defaults/preferences/firefox.js
|
||||||
# install additional locales
|
# build additional locales
|
||||||
%if %localize
|
%if %localize
|
||||||
mkdir -p %{buildroot}%{progdir}/browser/extensions
|
mkdir -p %{buildroot}%{progdir}/browser/extensions
|
||||||
truncate -s 0 %{_tmppath}/translations.{common,other}
|
truncate -s 0 %{_tmppath}/translations.{common,other}
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:892b06ef50e2a0f3db6ecefacd620186362913304b932ecb16c888a0243c497c
|
oid sha256:44a9b1a9e51539cafb46606e87127153fd7a3dc74cf2c0b283e2f09a7a856ef0
|
||||||
size 28536
|
size 28512
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac
|
|
||||||
size 312155752
|
|
@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl1kD6oACgkQ8aZmj7t9
|
|
||||||
Vy7zgw//daumocgMPaRkjqsbwsa2PkgdNGv1Doyx3ryKUvAVI0FQYJC2RW5/y++W
|
|
||||||
Fv92d8ib4Mh8nsmykR4L7jAN+ovdF3mzY0EyoRpC41aWaC0Uw9lLnDVk9s/U46Y3
|
|
||||||
8IPKEzfNVS4vKETIYviArOLU8AXa/3GT9PtVLZ+VhzMOqe4qnYJTW93s06y0VXUE
|
|
||||||
r7Bzfe+dwUxLzVtc3d5HfuOmiKYRRjhI1U+Tx8p+DVY7gXhES4r/BmT/bbvNYpdh
|
|
||||||
i0HzWRH53J7//wiV18WKPxX1UqTYIVMwEhHZZ9+MA11LN2HTLKPmNL/wnh+zx6Wg
|
|
||||||
arVJQYIIdH7CvNt0/ewJmsFgUmU9inSUd/zJ+7Absq3eDDBwYvsiNNexW+cpgDIe
|
|
||||||
axWgtQBkp0m73gZ8wzcYO7lI4KhbfraWwBiSubIrZRSuJAbyowKVees/hRtFFeI2
|
|
||||||
Uhzefr+Cn9RS6vGm7DKme36c6VOZGP7kRO8u+sNrxu4NeOakoG4J7pwFbCnLAVO2
|
|
||||||
vT0a4xScznXQ9inqrYRdnUiUQv2PLOLCC8uullaPvyd99LPmhbgYaVrii/8S4Ozo
|
|
||||||
zU95mzbBUbvMPg3OrLNbcszRHeLV9EK0if/+GGr6fSVNrEmShqsFpbceSsbrGg0+
|
|
||||||
tOWi7PM4iHhlzaFt2TVLV4+xfQWoH7kBW2qNA0dmGjYP1poh1WE=
|
|
||||||
=Q1b3
|
|
||||||
-----END PGP SIGNATURE-----
|
|
3
firefox-69.0.source.tar.xz
Normal file
3
firefox-69.0.source.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:413c3febdfeb69eade818824eecbdb11eaeda71de229573810afd641ba741ec5
|
||||||
|
size 323421020
|
16
firefox-69.0.source.tar.xz.asc
Normal file
16
firefox-69.0.source.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl1kibYACgkQ8aZmj7t9
|
||||||
|
Vy6Euw//cjIyG2xR7OOj62l4vrCI4r57c2QC7RcC/7rOHcTVxJK7uOvsCsq1HxK8
|
||||||
|
GO85ThQlTj3S0xEmfM3cln09I8H1ZTigP534wgE8jEMdnIJgjYmRIEY96gzWKIz/
|
||||||
|
eMFCIqbCr0wAYumpYNX7+HbSRmJfis0BcDES2TFD265euzplMJiw3d3uMcSc3nZv
|
||||||
|
aM/ysnmH6fDDhcGXLrNAbkHZF3snUyc0Hg/LUMLjYBo2M0rpjx5t3CeeQbKL+GO5
|
||||||
|
KswvhK39j70a4FuVlrTRdLrSpDV5PYzzcAlFAql07xuNE6gAq2xqhrk+NcUXarP4
|
||||||
|
sIMD0f8I2Grjp/iAKcN4YoKKbKCf/lMpDWUA2h1p+T+qPnGveFE8OcZkXLhoQXo1
|
||||||
|
SYWWxZ/Hecnmp8fW9uVDNlfPAuYGQrU9HDaiZ+ghsn+8EMrUkzrjNjTChlDRqNgt
|
||||||
|
7EcsONvKwreWiP0hsij6ECBItf4oPeRjSzbOaQWShF+nmWldKeJeOdDm1MHi7vjb
|
||||||
|
WxUval0iaozTQV2WGofV0YPqu3UBKjDwHnDRx9YPZLMpHhFgYkoathwFLATGm8Q8
|
||||||
|
sq82A8Ys5wjNjcd6kToS/Dze5fDZr7EsKg7JbD8qVYI8LXHem8Ps7nzN4FmLcyJ+
|
||||||
|
PI2aFEyQ559aMw/Ov9iDZ2YSDxoLLbcX1QYvF2IXeWvwqz99zUc=
|
||||||
|
=x/W8
|
||||||
|
-----END PGP SIGNATURE-----
|
1402
firefox-kde.patch
1402
firefox-kde.patch
File diff suppressed because it is too large
Load Diff
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:043dc60ede681bba9c691fde2481af55858a106b527fe133803482061c3d81ec
|
|
||||||
size 49123892
|
|
3
l10n-69.0.tar.xz
Normal file
3
l10n-69.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:94ed316b02468915dc9ab4418c449fc1e24b0afbac5228929b1b718b997a1554
|
||||||
|
size 49091652
|
@ -3,7 +3,7 @@
|
|||||||
# User Mike Hommey <mh+mozilla@glandium.org>
|
# User Mike Hommey <mh+mozilla@glandium.org>
|
||||||
# Date 1526871862 -32400
|
# Date 1526871862 -32400
|
||||||
# Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43
|
# Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43
|
||||||
# Parent fc741a5ea37dbe145e0ca5f85e5dfb100f3c9091
|
# Parent 5dc1d2186f44dd6ccfc4b28b9e1ed859cffc63bb
|
||||||
Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons
|
Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons
|
||||||
|
|
||||||
For some reason, GNU as is not happy with the assembly generated after
|
For some reason, GNU as is not happy with the assembly generated after
|
||||||
@ -36,6 +36,46 @@ diff --git a/mfbt/moz.build b/mfbt/moz.build
|
|||||||
'double-conversion/double-conversion/bignum.cc',
|
'double-conversion/double-conversion/bignum.cc',
|
||||||
'double-conversion/double-conversion/cached-powers.cc',
|
'double-conversion/double-conversion/cached-powers.cc',
|
||||||
'double-conversion/double-conversion/diy-fp.cc',
|
'double-conversion/double-conversion/diy-fp.cc',
|
||||||
|
diff --git a/mozglue/baseprofiler/core/platform-linux-android.cpp b/mozglue/baseprofiler/core/platform-linux-android.cpp
|
||||||
|
--- a/mozglue/baseprofiler/core/platform-linux-android.cpp
|
||||||
|
+++ b/mozglue/baseprofiler/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;
|
||||||
|
|
||||||
|
@@ -266,17 +265,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) {
|
||||||
diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/core/platform-linux-android.cpp
|
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
|
--- a/tools/profiler/core/platform-linux-android.cpp
|
||||||
+++ b/tools/profiler/core/platform-linux-android.cpp
|
+++ b/tools/profiler/core/platform-linux-android.cpp
|
||||||
@ -57,7 +97,7 @@ diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/cor
|
|||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
|
|
||||||
@@ -248,17 +247,17 @@ Sampler::Sampler(PSLockRef aLock)
|
@@ -257,17 +256,17 @@ Sampler::Sampler(PSLockRef aLock)
|
||||||
|
|
||||||
// NOTE: We don't initialize LUL here, instead initializing it in
|
// NOTE: We don't initialize LUL here, instead initializing it in
|
||||||
// SamplerThread's constructor. This is because with the
|
// SamplerThread's constructor. This is because with the
|
||||||
|
81
mozilla-bmo1504834-part1.patch
Normal file
81
mozilla-bmo1504834-part1.patch
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 051b75a600dfbf7503c3485cebfd34d4eb29be96
|
||||||
|
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834
|
||||||
|
|
||||||
|
diff -r 051b75a600df gfx/2d/DrawTargetSkia.cpp
|
||||||
|
--- a/gfx/2d/DrawTargetSkia.cpp Fri Jul 05 12:42:44 2019 +0200
|
||||||
|
+++ b/gfx/2d/DrawTargetSkia.cpp Mon Jul 08 10:59:30 2019 +0200
|
||||||
|
@@ -138,8 +138,7 @@
|
||||||
|
return surfaceBounds.Intersect(bounds);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static const int kARGBAlphaOffset =
|
||||||
|
- SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
|
||||||
|
+static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
|
||||||
|
|
||||||
|
static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize,
|
||||||
|
const int32_t aStride, SurfaceFormat aFormat) {
|
||||||
|
diff -r 051b75a600df gfx/2d/Types.h
|
||||||
|
--- a/gfx/2d/Types.h Fri Jul 05 12:42:44 2019 +0200
|
||||||
|
+++ b/gfx/2d/Types.h Mon Jul 08 10:59:30 2019 +0200
|
||||||
|
@@ -85,15 +85,8 @@
|
||||||
|
// The following values are endian-independent synonyms. The _UINT32 suffix
|
||||||
|
// indicates that the name reflects the layout when viewed as a uint32_t
|
||||||
|
// value.
|
||||||
|
-#if MOZ_LITTLE_ENDIAN
|
||||||
|
A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB
|
||||||
|
X8R8G8B8_UINT32 = B8G8R8X8 // 0x00RRGGBB
|
||||||
|
-#elif MOZ_BIG_ENDIAN
|
||||||
|
- A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB
|
||||||
|
- X8R8G8B8_UINT32 = X8R8G8B8 // 0x00RRGGBB
|
||||||
|
-#else
|
||||||
|
-# error "bad endianness"
|
||||||
|
-#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline int BytesPerPixel(SurfaceFormat aFormat) {
|
||||||
|
diff -r 051b75a600df gfx/skia/skia/third_party/skcms/skcms.cc
|
||||||
|
--- a/gfx/skia/skia/third_party/skcms/skcms.cc Fri Jul 05 12:42:44 2019 +0200
|
||||||
|
+++ b/gfx/skia/skia/third_party/skcms/skcms.cc Mon Jul 08 10:59:30 2019 +0200
|
||||||
|
@@ -17,6 +17,8 @@
|
||||||
|
#include <arm_neon.h>
|
||||||
|
#elif defined(__SSE__)
|
||||||
|
#include <immintrin.h>
|
||||||
|
+#else
|
||||||
|
+ #define SKCMS_PORTABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others.
|
||||||
|
@@ -124,20 +126,28 @@
|
||||||
|
static uint16_t read_big_u16(const uint8_t* ptr) {
|
||||||
|
uint16_t be;
|
||||||
|
memcpy(&be, ptr, sizeof(be));
|
||||||
|
-#if defined(_MSC_VER)
|
||||||
|
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
+ return be;
|
||||||
|
+#else
|
||||||
|
+ #if defined(_MSC_VER)
|
||||||
|
return _byteswap_ushort(be);
|
||||||
|
-#else
|
||||||
|
+ #else
|
||||||
|
return __builtin_bswap16(be);
|
||||||
|
+ #endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32_t read_big_u32(const uint8_t* ptr) {
|
||||||
|
uint32_t be;
|
||||||
|
memcpy(&be, ptr, sizeof(be));
|
||||||
|
-#if defined(_MSC_VER)
|
||||||
|
+#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__
|
||||||
|
+ return be;
|
||||||
|
+#else
|
||||||
|
+ #if defined(_MSC_VER)
|
||||||
|
return _byteswap_ulong(be);
|
||||||
|
-#else
|
||||||
|
+ #else
|
||||||
|
return __builtin_bswap32(be);
|
||||||
|
+ #endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
112
mozilla-bmo1504834-part2.patch
Normal file
112
mozilla-bmo1504834-part2.patch
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 6fa4b62427433e8f445d05c557e5db096667d880
|
||||||
|
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 --git a/gfx/2d/ConvolutionFilter.cpp b/gfx/2d/ConvolutionFilter.cpp
|
||||||
|
--- a/gfx/2d/ConvolutionFilter.cpp
|
||||||
|
+++ b/gfx/2d/ConvolutionFilter.cpp
|
||||||
|
@@ -30,32 +30,79 @@ bool ConvolutionFilter::GetFilterOffsetA
|
||||||
|
int32_t* aResultLength) {
|
||||||
|
if (aRowIndex >= mFilter->numValues()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mFilter->FilterForValue(aRowIndex, aResultOffset, aResultLength);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void ByteSwapArray(uint8_t *u8Array, int32_t size) {
|
||||||
|
+ uint32_t *array = reinterpret_cast<uint32_t*>(u8Array);
|
||||||
|
+ for (int pxl = 0; pxl < size; ++pxl) {
|
||||||
|
+ // Use an endian swap to move the bytes, i.e. BGRA -> ARGB.
|
||||||
|
+ uint32_t rgba = array[pxl];
|
||||||
|
+ array[pxl] = NativeEndian::swapToLittleEndian(rgba);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst,
|
||||||
|
bool aHasAlpha) {
|
||||||
|
+#if MOZ_BIG_ENDIAN
|
||||||
|
+ int outputSize = mFilter->numValues();
|
||||||
|
+
|
||||||
|
+ // Input size isn't handed in, so we have to calculate it quickly
|
||||||
|
+ int inputSize = 0;
|
||||||
|
+ for (int xx = 0; xx < outputSize; ++xx) {
|
||||||
|
+ // Get the filter that determines the current output pixel.
|
||||||
|
+ int filterOffset, filterLength;
|
||||||
|
+ mFilter->FilterForValue(xx, &filterOffset, &filterLength);
|
||||||
|
+ inputSize = std::max(inputSize, filterOffset + filterLength);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ByteSwapArray((uint8_t*)aSrc, inputSize);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha);
|
||||||
|
+
|
||||||
|
+#if MOZ_BIG_ENDIAN
|
||||||
|
+ ByteSwapArray((uint8_t*)aSrc, inputSize);
|
||||||
|
+ ByteSwapArray(aDst, outputSize);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst,
|
||||||
|
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);
|
||||||
|
+
|
||||||
|
+#if MOZ_BIG_ENDIAN
|
||||||
|
+ for (int filterY = 0; filterY < filterLength; filterY++) {
|
||||||
|
+ // Skia only knows LE, so we have to swizzle the input
|
||||||
|
+ ByteSwapArray(aSrc[filterY], aRowSize);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst,
|
||||||
|
aHasAlpha);
|
||||||
|
+
|
||||||
|
+#if MOZ_BIG_ENDIAN
|
||||||
|
+ // After skia is finished, we swizzle back to BE, in case
|
||||||
|
+ // the input is used again somewhere else
|
||||||
|
+ for (int filterY = 0; filterY < filterLength; filterY++) {
|
||||||
|
+ ByteSwapArray(aSrc[filterY], aRowSize);
|
||||||
|
+ }
|
||||||
|
+ // The destination array as well
|
||||||
|
+ ByteSwapArray(aDst, aRowSize);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ConvolutionFilter::ComputeResizeFactor is derived from Skia's
|
||||||
|
* 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__) || \
|
||||||
|
- defined(__s390__) || \
|
||||||
|
+ defined(__s390__) || defined(__s390x__) || \
|
||||||
|
(defined(__sh__) && defined(__BIG_ENDIAN__)) || \
|
||||||
|
(defined(__ia64) && defined(__BIG_ENDIAN__))
|
||||||
|
#define SK_CPU_BENDIAN
|
||||||
|
#else
|
||||||
|
#define SK_CPU_LENDIAN
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
44
mozilla-bmo1504834-part3.patch
Normal file
44
mozilla-bmo1504834-part3.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent aecb4600e5da17443b224c79eee178c1d8e155e3
|
||||||
|
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 @@
|
||||||
|
AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; }
|
||||||
|
AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; }
|
||||||
|
|
||||||
|
+ // On Big endian the commented out variant doesn't work,
|
||||||
|
+ // and honestly, I have no idea why it exists in the first place.
|
||||||
|
+ // The reason its broken is, I think, that it defaults to the double-variant of ToBits()
|
||||||
|
+ // which gets a 64-bit integer, and FromBits returns 32-bit,
|
||||||
|
+ // cutting off the wrong half again.
|
||||||
|
+ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles).
|
||||||
|
+ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system)
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; }
|
||||||
|
+#else
|
||||||
|
AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); }
|
||||||
|
+#endif
|
||||||
|
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 @@
|
||||||
|
// ~~~>
|
||||||
|
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
|
||||||
|
// c = 0*aa + d(1-1*aa) = d(1-aa)
|
||||||
|
+
|
||||||
|
+ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0
|
||||||
|
+#ifdef SK_CPU_BENDIAN
|
||||||
|
+ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0))
|
||||||
|
+#else
|
||||||
|
return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255))
|
||||||
|
+#endif
|
||||||
|
+ d.approxMulDiv255(aa.inv());
|
||||||
|
};
|
||||||
|
while (h --> 0) {
|
76
mozilla-bmo1511604.patch
Normal file
76
mozilla-bmo1511604.patch
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User A. Wilcox <AWilcox@Wilcox-Tech.com>
|
||||||
|
# Date 1543674229 0
|
||||||
|
# Sat Dec 01 14:23:49 2018 +0000
|
||||||
|
# Node ID 0309ff19e46b126c527e633518d7de8570442114
|
||||||
|
# Parent ba2c9b0542c95cc5ee26c264e8338fc9ba94c958
|
||||||
|
Bug 1511604 - Swizzle YCbCr->RGB data on big-endian machines
|
||||||
|
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1511604
|
||||||
|
|
||||||
|
This is very closely related to mozilla-bmo1504834
|
||||||
|
|
||||||
|
Again, input for skia is swizzled to LE, as skia only understands LE.
|
||||||
|
|
||||||
|
diff --git a/gfx/ycbcr/YCbCrUtils.cpp b/gfx/ycbcr/YCbCrUtils.cpp
|
||||||
|
--- a/gfx/ycbcr/YCbCrUtils.cpp
|
||||||
|
+++ b/gfx/ycbcr/YCbCrUtils.cpp
|
||||||
|
@@ -1,14 +1,16 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
+#include "mozilla/EndianUtils.h"
|
||||||
|
#include "gfx2DGlue.h"
|
||||||
|
+#include "mozilla/gfx/Swizzle.h"
|
||||||
|
|
||||||
|
#include "YCbCrUtils.h"
|
||||||
|
#include "yuv_convert.h"
|
||||||
|
#include "ycbcr_to_rgb565.h"
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace gfx {
|
||||||
|
|
||||||
|
@@ -231,16 +233,23 @@ ConvertYCbCrToRGB(const layers::PlanarYC
|
||||||
|
srcData.mPicSize.width,
|
||||||
|
srcData.mPicSize.height,
|
||||||
|
srcData.mYStride,
|
||||||
|
srcData.mCbCrStride,
|
||||||
|
aStride,
|
||||||
|
yuvtype,
|
||||||
|
srcData.mYUVColorSpace);
|
||||||
|
}
|
||||||
|
+#if MOZ_BIG_ENDIAN
|
||||||
|
+ // libyuv makes endian-correct result, which needs to be swapped to BGRX
|
||||||
|
+ if (aDestFormat != SurfaceFormat::R5G6B5_UINT16)
|
||||||
|
+ gfx::SwizzleData(aDestBuffer, aStride, gfx::SurfaceFormat::X8R8G8B8,
|
||||||
|
+ aDestBuffer, aStride, gfx::SurfaceFormat::B8G8R8X8,
|
||||||
|
+ srcData.mPicSize);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ConvertYCbCrAToARGB(const uint8_t* aSrcY,
|
||||||
|
const uint8_t* aSrcU,
|
||||||
|
const uint8_t* aSrcV,
|
||||||
|
const uint8_t* aSrcA,
|
||||||
|
int aSrcStrideYA, int aSrcStrideUV,
|
||||||
|
@@ -252,12 +261,18 @@ ConvertYCbCrAToARGB(const uint8_t* aSrcY
|
||||||
|
aSrcV,
|
||||||
|
aSrcA,
|
||||||
|
aDstARGB,
|
||||||
|
aWidth,
|
||||||
|
aHeight,
|
||||||
|
aSrcStrideYA,
|
||||||
|
aSrcStrideUV,
|
||||||
|
aDstStrideARGB);
|
||||||
|
+#if MOZ_BIG_ENDIAN
|
||||||
|
+ // libyuv makes endian-correct result, which needs to be swapped to BGRA
|
||||||
|
+ gfx::SwizzleData(aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::A8R8G8B8,
|
||||||
|
+ aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::B8G8R8A8,
|
||||||
|
+ IntSize(aWidth, aHeight));
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace gfx
|
||||||
|
} // namespace mozilla
|
34
mozilla-bmo1512162.patch
Normal file
34
mozilla-bmo1512162.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent e5858dc7ab007042436496f7cfb9a5abf10f5082
|
||||||
|
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 @@
|
||||||
|
MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
|
||||||
|
MutableHandleValue srcp) const;
|
||||||
|
|
||||||
|
- MOZ_ALWAYS_INLINE bool GatherAndConvertResults();
|
||||||
|
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||||
|
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||||
|
+ MOZ_ALWAYS_INLINE
|
||||||
|
+#endif
|
||||||
|
+ bool GatherAndConvertResults();
|
||||||
|
|
||||||
|
MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
|
||||||
|
|
||||||
|
@@ -1139,7 +1143,11 @@
|
||||||
|
|
||||||
|
~CallMethodHelper();
|
||||||
|
|
||||||
|
- MOZ_ALWAYS_INLINE bool Call();
|
||||||
|
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||||
|
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||||
|
+ MOZ_ALWAYS_INLINE
|
||||||
|
+#endif
|
||||||
|
+ bool Call();
|
||||||
|
|
||||||
|
// Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
|
||||||
|
void trace(JSTracer* aTrc);
|
22
mozilla-bmo1554971.patch
Normal file
22
mozilla-bmo1554971.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent a25cebecb02d5460b8ad757fe9cb4a9c8d1d7658
|
||||||
|
Eliminate startup error message:
|
||||||
|
JavaScript error: , line 0: Error: Type error for platformInfo value (Error processing arch: Invalid enumeration value "s390x") for runtime.getPlatformInfo.
|
||||||
|
|
||||||
|
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 @@
|
||||||
|
{
|
||||||
|
"id": "PlatformArch",
|
||||||
|
"type": "string",
|
||||||
|
- "enum": ["arm", "x86-32", "x86-64"],
|
||||||
|
+ "enum": ["arm", "x86-32", "x86-64", "s390x", "aarch64", "ppc64le"],
|
||||||
|
"allowedContexts": ["content", "devtools"],
|
||||||
|
"description": "The machine's processor architecture."
|
||||||
|
},
|
22
mozilla-bmo1573381.patch
Normal file
22
mozilla-bmo1573381.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 45680ce4ca06795cbca1ea5a9ae8a7a11ab95cf1
|
||||||
|
The code tries to find a codec in a list of codecs. For this it searches for a given prefix.
|
||||||
|
But the prefix is of type char16_t, which means 2 bytes per character instead of 1, as was compared here.
|
||||||
|
On big endian this created some false positives, as the order of bytes is different and some characters only
|
||||||
|
occupy "the first" byte, having the second null'ed out.
|
||||||
|
Noticed because of gtest: MediaMIMETypes.MediaCodecs
|
||||||
|
|
||||||
|
Upstream bugreport: https://bugzilla.mozilla.org/show_bug.cgi?id=1573381
|
||||||
|
|
||||||
|
diff -r 45680ce4ca06 -r 381102061fcc dom/media/MediaMIMETypes.cpp
|
||||||
|
--- a/dom/media/MediaMIMETypes.cpp Mon Aug 05 09:28:53 2019 +0200
|
||||||
|
+++ b/dom/media/MediaMIMETypes.cpp Tue Aug 13 07:51:27 2019 +0200
|
||||||
|
@@ -87,7 +87,7 @@
|
||||||
|
const size_t prefixLength = aCodecPrefix.Length();
|
||||||
|
for (const auto& myCodec : Range()) {
|
||||||
|
if (myCodec.Length() >= prefixLength &&
|
||||||
|
- memcmp(myCodec.Data(), aCodecPrefix.Data(), prefixLength) == 0) {
|
||||||
|
+ memcmp(myCodec.Data(), aCodecPrefix.Data(), prefixLength * sizeof(char16_t)) == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,7 @@
|
|||||||
# Date 1559294891 -7200
|
# Date 1559294891 -7200
|
||||||
# Fri May 31 11:28:11 2019 +0200
|
# Fri May 31 11:28:11 2019 +0200
|
||||||
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
|
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
|
||||||
# Parent 93495ad6fa0fe292eadcbfef14e0e27273528497
|
# Parent 85e4798b74da9c377f84cf8f5dd59a7f952d92eb
|
||||||
Description: Add KDE integration to Firefox (toolkit parts)
|
Description: Add KDE integration to Firefox (toolkit parts)
|
||||||
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
|
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
|
||||||
Author: Lubos Lunak <lunak@suse.com>
|
Author: Lubos Lunak <lunak@suse.com>
|
||||||
@ -13,8 +13,7 @@ Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
|
|||||||
diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
||||||
--- a/modules/libpref/Preferences.cpp
|
--- a/modules/libpref/Preferences.cpp
|
||||||
+++ b/modules/libpref/Preferences.cpp
|
+++ b/modules/libpref/Preferences.cpp
|
||||||
@@ -81,16 +81,17 @@
|
@@ -83,16 +83,17 @@
|
||||||
#include "nsXPCOMCID.h"
|
|
||||||
#include "nsXPCOM.h"
|
#include "nsXPCOM.h"
|
||||||
#include "nsXULAppAPI.h"
|
#include "nsXULAppAPI.h"
|
||||||
#include "nsZipArchive.h"
|
#include "nsZipArchive.h"
|
||||||
@ -22,16 +21,17 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
|||||||
#include "PLDHashTable.h"
|
#include "PLDHashTable.h"
|
||||||
#include "plstr.h"
|
#include "plstr.h"
|
||||||
#include "prlink.h"
|
#include "prlink.h"
|
||||||
|
#include "xpcpublic.h"
|
||||||
+#include "nsKDEUtils.h"
|
+#include "nsKDEUtils.h"
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
# include <map>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MOZ_MEMORY
|
#ifdef MOZ_MEMORY
|
||||||
# include "mozmemory.h"
|
# include "mozmemory.h"
|
||||||
#endif
|
#endif
|
||||||
|
@@ -4623,25 +4624,37 @@ Result<Ok, const char*> Preferences::Ini
|
||||||
#ifdef XP_WIN
|
|
||||||
# include "windows.h"
|
|
||||||
#endif
|
|
||||||
@@ -4507,25 +4508,37 @@ static nsresult pref_ReadDefaultPrefs(co
|
|
||||||
// application pref files for backwards compatibility.
|
// application pref files for backwards compatibility.
|
||||||
static const char* specialFiles[] = {
|
static const char* specialFiles[] = {
|
||||||
#if defined(XP_MACOSX)
|
#if defined(XP_MACOSX)
|
||||||
@ -69,7 +69,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
|
|||||||
|
|
||||||
// Load jar:$app/omni.jar!/defaults/preferences/*.js
|
// Load jar:$app/omni.jar!/defaults/preferences/*.js
|
||||||
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
|
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
|
||||||
@@ -4573,17 +4586,17 @@ static nsresult pref_ReadDefaultPrefs(co
|
@@ -4688,17 +4701,17 @@ Result<Ok, const char*> Preferences::Ini
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
|
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
|
||||||
@ -115,7 +115,7 @@ diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
|
|||||||
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
|
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
|
||||||
--- a/python/mozbuild/mozpack/chrome/flags.py
|
--- a/python/mozbuild/mozpack/chrome/flags.py
|
||||||
+++ b/python/mozbuild/mozpack/chrome/flags.py
|
+++ b/python/mozbuild/mozpack/chrome/flags.py
|
||||||
@@ -223,16 +223,17 @@ class Flags(OrderedDict):
|
@@ -227,16 +227,17 @@ class Flags(OrderedDict):
|
||||||
'contentaccessible': Flag,
|
'contentaccessible': Flag,
|
||||||
'os': StringFlag,
|
'os': StringFlag,
|
||||||
'osversion': VersionFlag,
|
'osversion': VersionFlag,
|
||||||
@ -136,7 +136,7 @@ diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/c
|
|||||||
diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
|
diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
|
||||||
--- a/python/mozbuild/mozpack/chrome/manifest.py
|
--- a/python/mozbuild/mozpack/chrome/manifest.py
|
||||||
+++ b/python/mozbuild/mozpack/chrome/manifest.py
|
+++ b/python/mozbuild/mozpack/chrome/manifest.py
|
||||||
@@ -39,16 +39,17 @@ class ManifestEntry(object):
|
@@ -36,16 +36,17 @@ class ManifestEntry(object):
|
||||||
'platformversion',
|
'platformversion',
|
||||||
'os',
|
'os',
|
||||||
'osversion',
|
'osversion',
|
||||||
@ -172,532 +172,6 @@ diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloa
|
|||||||
+
|
+
|
||||||
with Files('**'):
|
with Files('**'):
|
||||||
BUG_COMPONENT = ('Toolkit', 'Downloads API')
|
BUG_COMPONENT = ('Toolkit', 'Downloads API')
|
||||||
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
|
|
||||||
--- a/toolkit/content/jar.mn
|
|
||||||
+++ b/toolkit/content/jar.mn
|
|
||||||
@@ -63,16 +63,18 @@ toolkit.jar:
|
|
||||||
content/global/widgets.css
|
|
||||||
content/global/bindings/autocomplete.xml (widgets/autocomplete.xml)
|
|
||||||
content/global/bindings/button.xml (widgets/button.xml)
|
|
||||||
content/global/bindings/calendar.js (widgets/calendar.js)
|
|
||||||
content/global/bindings/datekeeper.js (widgets/datekeeper.js)
|
|
||||||
content/global/bindings/datepicker.js (widgets/datepicker.js)
|
|
||||||
content/global/bindings/datetimebox.css (widgets/datetimebox.css)
|
|
||||||
* 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/general.xml (widgets/general.xml)
|
|
||||||
content/global/bindings/popup.xml (widgets/popup.xml)
|
|
||||||
content/global/bindings/richlistbox.xml (widgets/richlistbox.xml)
|
|
||||||
content/global/bindings/scrollbox.xml (widgets/scrollbox.xml)
|
|
||||||
content/global/bindings/spinner.js (widgets/spinner.js)
|
|
||||||
content/global/bindings/tabbox.xml (widgets/tabbox.xml)
|
|
||||||
* content/global/bindings/textbox.xml (widgets/textbox.xml)
|
|
||||||
content/global/bindings/timekeeper.js (widgets/timekeeper.js)
|
|
||||||
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,499 @@
|
|
||||||
+<?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
|
|
||||||
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
|
||||||
+
|
|
||||||
+<!DOCTYPE bindings [
|
|
||||||
+ <!ENTITY % globalKeysDTD SYSTEM "chrome://global/locale/globalKeys.dtd">
|
|
||||||
+ %globalKeysDTD;
|
|
||||||
+]>
|
|
||||||
+
|
|
||||||
+<bindings id="dialogBindings"
|
|
||||||
+ xmlns="http://www.mozilla.org/xbl"
|
|
||||||
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
||||||
+ xmlns:xbl="http://www.mozilla.org/xbl">
|
|
||||||
+
|
|
||||||
+ <binding id="dialog">
|
|
||||||
+ <content>
|
|
||||||
+ <xul:vbox class="box-inherit dialog-content-box" flex="1">
|
|
||||||
+ <children/>
|
|
||||||
+ </xul:vbox>
|
|
||||||
+
|
|
||||||
+ <xul:hbox class="dialog-button-box" anonid="buttons"
|
|
||||||
+ xbl:inherits="pack=buttonpack,align=buttonalign,dir=buttondir,orient=buttonorient"
|
|
||||||
+#ifdef XP_UNIX_GNOME
|
|
||||||
+ >
|
|
||||||
+ <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="help" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:spacer anonid="spacer" flex="1"/>
|
|
||||||
+ <xul:button dlgtype="cancel" class="dialog-button"/>
|
|
||||||
+ <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
|
|
||||||
+#elif XP_UNIX
|
|
||||||
+ >
|
|
||||||
+ <xul:button dlgtype="help" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:spacer anonid="spacer" flex="1"/>
|
|
||||||
+ <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
|
|
||||||
+ <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="cancel" class="dialog-button"/>
|
|
||||||
+ <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
|
|
||||||
+#else
|
|
||||||
+ pack="end">
|
|
||||||
+ <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:spacer anonid="spacer" flex="1" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
|
|
||||||
+ <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="cancel" class="dialog-button"/>
|
|
||||||
+ <xul:button dlgtype="help" class="dialog-button" hidden="true"/>
|
|
||||||
+ <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
|
|
||||||
+#endif
|
|
||||||
+ </xul:hbox>
|
|
||||||
+
|
|
||||||
+ <xul:keyset>
|
|
||||||
+ <xul:key phase="capturing" oncommand="document.documentElement.openHelp(event)"
|
|
||||||
+#ifdef XP_MACOSX
|
|
||||||
+ key="&openHelpMac.commandkey;" modifiers="accel"/>
|
|
||||||
+#else
|
|
||||||
+ keycode="&openHelp.commandkey;"/>
|
|
||||||
+#endif
|
|
||||||
+ </xul:keyset>
|
|
||||||
+
|
|
||||||
+ </content>
|
|
||||||
+
|
|
||||||
+ <implementation>
|
|
||||||
+ <field name="_mStrBundle">null</field>
|
|
||||||
+ <field name="_closeHandler">(function(event) {
|
|
||||||
+ if (!document.documentElement.cancelDialog())
|
|
||||||
+ event.preventDefault();
|
|
||||||
+ })</field>
|
|
||||||
+
|
|
||||||
+ <!-- Gets populated by elements that are passed to document.l10n.setAttributes
|
|
||||||
+ to localize the dialog buttons. Needed to properly size the dialog after
|
|
||||||
+ the asynchronous translation. -->
|
|
||||||
+ <field name="_l10nButtons">[]</field>
|
|
||||||
+
|
|
||||||
+ <property name="buttons"
|
|
||||||
+ onget="return this.getAttribute('buttons');"
|
|
||||||
+ onset="this._configureButtons(val); return val;"/>
|
|
||||||
+
|
|
||||||
+ <property name="defaultButton">
|
|
||||||
+ <getter>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ if (this.hasAttribute("defaultButton"))
|
|
||||||
+ return this.getAttribute("defaultButton");
|
|
||||||
+ return "accept"; // default to the accept button
|
|
||||||
+ ]]>
|
|
||||||
+ </getter>
|
|
||||||
+ <setter>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ this._setDefaultButton(val);
|
|
||||||
+ return val;
|
|
||||||
+ ]]>
|
|
||||||
+ </setter>
|
|
||||||
+ </property>
|
|
||||||
+
|
|
||||||
+ <method name="acceptDialog">
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ return this._doButtonCommand("accept");
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="cancelDialog">
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ return this._doButtonCommand("cancel");
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="getButton">
|
|
||||||
+ <parameter name="aDlgType"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ return this._buttons[aDlgType];
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="moveToAlertPosition">
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ // hack. we need this so the window has something like its final size
|
|
||||||
+ if (window.outerWidth == 1) {
|
|
||||||
+ dump("Trying to position a sizeless window; caller should have called sizeToContent() or sizeTo(). See bug 75649.\n");
|
|
||||||
+ sizeToContent();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (opener) {
|
|
||||||
+ var xOffset = (opener.outerWidth - window.outerWidth) / 2;
|
|
||||||
+ var yOffset = opener.outerHeight / 5;
|
|
||||||
+
|
|
||||||
+ var newX = opener.screenX + xOffset;
|
|
||||||
+ var newY = opener.screenY + yOffset;
|
|
||||||
+ } else {
|
|
||||||
+ newX = (screen.availWidth - window.outerWidth) / 2;
|
|
||||||
+ newY = (screen.availHeight - window.outerHeight) / 2;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // ensure the window is fully onscreen (if smaller than the screen)
|
|
||||||
+ if (newX < screen.availLeft)
|
|
||||||
+ newX = screen.availLeft + 20;
|
|
||||||
+ if ((newX + window.outerWidth) > (screen.availLeft + screen.availWidth))
|
|
||||||
+ newX = (screen.availLeft + screen.availWidth) - window.outerWidth - 20;
|
|
||||||
+
|
|
||||||
+ if (newY < screen.availTop)
|
|
||||||
+ newY = screen.availTop + 20;
|
|
||||||
+ if ((newY + window.outerHeight) > (screen.availTop + screen.availHeight))
|
|
||||||
+ newY = (screen.availTop + screen.availHeight) - window.outerHeight - 60;
|
|
||||||
+
|
|
||||||
+ window.moveTo( newX, newY );
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="centerWindowOnScreen">
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ var xOffset = screen.availWidth / 2 - window.outerWidth / 2;
|
|
||||||
+ var yOffset = screen.availHeight / 2 - window.outerHeight / 2;
|
|
||||||
+
|
|
||||||
+ xOffset = xOffset > 0 ? xOffset : 0;
|
|
||||||
+ yOffset = yOffset > 0 ? yOffset : 0;
|
|
||||||
+ window.moveTo(xOffset, yOffset);
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <constructor>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ this._configureButtons(this.buttons);
|
|
||||||
+
|
|
||||||
+ // listen for when window is closed via native close buttons
|
|
||||||
+ window.addEventListener("close", this);
|
|
||||||
+
|
|
||||||
+ // for things that we need to initialize after onload fires
|
|
||||||
+ window.addEventListener("load", this);
|
|
||||||
+
|
|
||||||
+ window.moveToAlertPosition = this.moveToAlertPosition;
|
|
||||||
+ window.centerWindowOnScreen = this.centerWindowOnScreen;
|
|
||||||
+ ]]>
|
|
||||||
+ </constructor>
|
|
||||||
+
|
|
||||||
+ <method name="handleEvent">
|
|
||||||
+ <parameter name="aEvent"/>
|
|
||||||
+ <body><![CDATA[
|
|
||||||
+ switch (aEvent.type) {
|
|
||||||
+ case "close": {
|
|
||||||
+ this._closeHandler(aEvent);
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ case "load": {
|
|
||||||
+ this.postLoadInit(aEvent);
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ ]]></body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="postLoadInit">
|
|
||||||
+ <parameter name="aEvent"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ function focusInit() {
|
|
||||||
+ const dialog = document.documentElement;
|
|
||||||
+ const defaultButton = dialog.getButton(dialog.defaultButton);
|
|
||||||
+ // give focus to the first focusable element in the dialog
|
|
||||||
+ if (!document.commandDispatcher.focusedElement) {
|
|
||||||
+ document.commandDispatcher.advanceFocusIntoSubtree(dialog);
|
|
||||||
+
|
|
||||||
+ var focusedElt = document.commandDispatcher.focusedElement;
|
|
||||||
+ if (focusedElt) {
|
|
||||||
+ var initialFocusedElt = focusedElt;
|
|
||||||
+ while (focusedElt.localName == "tab" ||
|
|
||||||
+ focusedElt.getAttribute("noinitialfocus") == "true") {
|
|
||||||
+ document.commandDispatcher.advanceFocusIntoSubtree(focusedElt);
|
|
||||||
+ focusedElt = document.commandDispatcher.focusedElement;
|
|
||||||
+ if (focusedElt == initialFocusedElt) {
|
|
||||||
+ if (focusedElt.getAttribute("noinitialfocus") == "true") {
|
|
||||||
+ focusedElt.blur();
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (initialFocusedElt.localName == "tab") {
|
|
||||||
+ if (focusedElt.hasAttribute("dlgtype")) {
|
|
||||||
+ // We don't want to focus on anonymous OK, Cancel, etc. buttons,
|
|
||||||
+ // so return focus to the tab itself
|
|
||||||
+ initialFocusedElt.focus();
|
|
||||||
+ }
|
|
||||||
+ } else if (!/Mac/.test(navigator.platform) &&
|
|
||||||
+ focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) {
|
|
||||||
+ defaultButton.focus();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ try {
|
|
||||||
+ if (defaultButton)
|
|
||||||
+ window.notifyDefaultButtonLoaded(defaultButton);
|
|
||||||
+ } catch (e) { }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Give focus after onload completes, see bug 103197.
|
|
||||||
+ setTimeout(focusInit, 0);
|
|
||||||
+
|
|
||||||
+ if (this._l10nButtons.length) {
|
|
||||||
+ document.l10n.translateElements(this._l10nButtons).then(() => {
|
|
||||||
+ window.sizeToContent();
|
|
||||||
+ });
|
|
||||||
+ }
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="openHelp">
|
|
||||||
+ <parameter name="event"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ var helpButton = document.documentElement.getButton("help");
|
|
||||||
+ if (helpButton.disabled || helpButton.hidden)
|
|
||||||
+ return;
|
|
||||||
+ this._fireButtonEvent("help");
|
|
||||||
+ event.stopPropagation();
|
|
||||||
+ event.preventDefault();
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <property name="mStrBundle">
|
|
||||||
+ <getter>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ if (!this._mStrBundle) {
|
|
||||||
+ // need to create string bundle manually instead of using <xul:stringbundle/>
|
|
||||||
+ // see bug 63370 for details
|
|
||||||
+ this._mStrBundle = Cc["@mozilla.org/intl/stringbundle;1"]
|
|
||||||
+ .getService(Ci.nsIStringBundleService)
|
|
||||||
+ .createBundle("chrome://global/locale/dialog.properties");
|
|
||||||
+ }
|
|
||||||
+ return this._mStrBundle;
|
|
||||||
+ ]]></getter>
|
|
||||||
+ </property>
|
|
||||||
+
|
|
||||||
+ <method name="_configureButtons">
|
|
||||||
+ <parameter name="aButtons"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ // by default, get all the anonymous button elements
|
|
||||||
+ var buttons = {};
|
|
||||||
+ this._buttons = buttons;
|
|
||||||
+ buttons.accept = document.getAnonymousElementByAttribute(this, "dlgtype", "accept");
|
|
||||||
+ buttons.cancel = document.getAnonymousElementByAttribute(this, "dlgtype", "cancel");
|
|
||||||
+ buttons.extra1 = document.getAnonymousElementByAttribute(this, "dlgtype", "extra1");
|
|
||||||
+ buttons.extra2 = document.getAnonymousElementByAttribute(this, "dlgtype", "extra2");
|
|
||||||
+ buttons.help = document.getAnonymousElementByAttribute(this, "dlgtype", "help");
|
|
||||||
+ buttons.disclosure = document.getAnonymousElementByAttribute(this, "dlgtype", "disclosure");
|
|
||||||
+
|
|
||||||
+ for (let button in buttons) {
|
|
||||||
+ customElements.upgrade(buttons[button]);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // look for any overriding explicit button elements
|
|
||||||
+ var exBtns = this.getElementsByAttribute("dlgtype", "*");
|
|
||||||
+ var dlgtype;
|
|
||||||
+ var i;
|
|
||||||
+ for (i = 0; i < exBtns.length; ++i) {
|
|
||||||
+ dlgtype = exBtns[i].getAttribute("dlgtype");
|
|
||||||
+ buttons[dlgtype].hidden = true; // hide the anonymous button
|
|
||||||
+ buttons[dlgtype] = exBtns[i];
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // add the label and oncommand handler to each button
|
|
||||||
+ for (dlgtype in buttons) {
|
|
||||||
+ var button = buttons[dlgtype];
|
|
||||||
+ button.addEventListener("command", this._handleButtonCommand, true);
|
|
||||||
+
|
|
||||||
+ // don't override custom labels with pre-defined labels on explicit buttons
|
|
||||||
+ if (!button.hasAttribute("label")) {
|
|
||||||
+ // dialog attributes override the default labels in dialog.properties
|
|
||||||
+ if (this.hasAttribute("buttonlabel" + dlgtype)) {
|
|
||||||
+ button.setAttribute("label", this.getAttribute("buttonlabel" + dlgtype));
|
|
||||||
+ if (this.hasAttribute("buttonaccesskey" + dlgtype))
|
|
||||||
+ button.setAttribute("accesskey", this.getAttribute("buttonaccesskey" + dlgtype));
|
|
||||||
+ } else if (this.hasAttribute("buttonid" + dlgtype)) {
|
|
||||||
+ document.l10n.setAttributes(button, this.getAttribute("buttonid" + dlgtype));
|
|
||||||
+ this._l10nButtons.push(button);
|
|
||||||
+ } else if (dlgtype != "extra1" && dlgtype != "extra2") {
|
|
||||||
+ button.setAttribute("label", this.mStrBundle.GetStringFromName("button-" + dlgtype));
|
|
||||||
+ var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype);
|
|
||||||
+ if (accessKey)
|
|
||||||
+ button.setAttribute("accesskey", accessKey);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ // allow specifying alternate icons in the dialog header
|
|
||||||
+ if (!button.hasAttribute("icon")) {
|
|
||||||
+ // if there's an icon specified, use that
|
|
||||||
+ if (this.hasAttribute("buttonicon" + dlgtype))
|
|
||||||
+ button.setAttribute("icon", this.getAttribute("buttonicon" + dlgtype));
|
|
||||||
+ // otherwise set defaults
|
|
||||||
+ else
|
|
||||||
+ switch (dlgtype) {
|
|
||||||
+ case "accept":
|
|
||||||
+ button.setAttribute("icon", "accept");
|
|
||||||
+ break;
|
|
||||||
+ case "cancel":
|
|
||||||
+ button.setAttribute("icon", "cancel");
|
|
||||||
+ break;
|
|
||||||
+ case "disclosure":
|
|
||||||
+ button.setAttribute("icon", "properties");
|
|
||||||
+ break;
|
|
||||||
+ case "help":
|
|
||||||
+ button.setAttribute("icon", "help");
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // ensure that hitting enter triggers the default button command
|
|
||||||
+ this.defaultButton = this.defaultButton;
|
|
||||||
+
|
|
||||||
+ // if there is a special button configuration, use it
|
|
||||||
+ if (aButtons) {
|
|
||||||
+ // expect a comma delimited list of dlgtype values
|
|
||||||
+ var list = aButtons.split(",");
|
|
||||||
+
|
|
||||||
+ // mark shown dlgtypes as true
|
|
||||||
+ var shown = { accept: false, cancel: false, help: false,
|
|
||||||
+ disclosure: false, extra1: false, extra2: false };
|
|
||||||
+ for (i = 0; i < list.length; ++i)
|
|
||||||
+ shown[list[i].replace(/ /g, "")] = true;
|
|
||||||
+
|
|
||||||
+ // hide/show the buttons we want
|
|
||||||
+ for (dlgtype in buttons)
|
|
||||||
+ buttons[dlgtype].hidden = !shown[dlgtype];
|
|
||||||
+
|
|
||||||
+ // show the spacer on Windows only when the extra2 button is present
|
|
||||||
+ if (/Win/.test(navigator.platform)) {
|
|
||||||
+ var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer");
|
|
||||||
+ spacer.removeAttribute("hidden");
|
|
||||||
+ spacer.setAttribute("flex", shown.extra2 ? "1" : "0");
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="_setDefaultButton">
|
|
||||||
+ <parameter name="aNewDefault"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ // remove the default attribute from the previous default button, if any
|
|
||||||
+ var oldDefaultButton = this.getButton(this.defaultButton);
|
|
||||||
+ if (oldDefaultButton)
|
|
||||||
+ oldDefaultButton.removeAttribute("default");
|
|
||||||
+
|
|
||||||
+ var newDefaultButton = this.getButton(aNewDefault);
|
|
||||||
+ if (newDefaultButton) {
|
|
||||||
+ this.setAttribute("defaultButton", aNewDefault);
|
|
||||||
+ newDefaultButton.setAttribute("default", "true");
|
|
||||||
+ } else {
|
|
||||||
+ this.setAttribute("defaultButton", "none");
|
|
||||||
+ if (aNewDefault != "none")
|
|
||||||
+ dump("invalid new default button: " + aNewDefault + ", assuming: none\n");
|
|
||||||
+ }
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="_handleButtonCommand">
|
|
||||||
+ <parameter name="aEvent"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ return document.documentElement._doButtonCommand(
|
|
||||||
+ aEvent.target.getAttribute("dlgtype"));
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="_doButtonCommand">
|
|
||||||
+ <parameter name="aDlgType"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ var button = this.getButton(aDlgType);
|
|
||||||
+ if (!button.disabled) {
|
|
||||||
+ var noCancel = this._fireButtonEvent(aDlgType);
|
|
||||||
+ if (noCancel) {
|
|
||||||
+ if (aDlgType == "accept" || aDlgType == "cancel") {
|
|
||||||
+ var closingEvent = new CustomEvent("dialogclosing", {
|
|
||||||
+ bubbles: true,
|
|
||||||
+ detail: { button: aDlgType },
|
|
||||||
+ });
|
|
||||||
+ this.dispatchEvent(closingEvent);
|
|
||||||
+ window.close();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return noCancel;
|
|
||||||
+ }
|
|
||||||
+ return true;
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="_fireButtonEvent">
|
|
||||||
+ <parameter name="aDlgType"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ var event = document.createEvent("Events");
|
|
||||||
+ event.initEvent("dialog" + aDlgType, true, true);
|
|
||||||
+
|
|
||||||
+ // handle dom event handlers
|
|
||||||
+ return this.dispatchEvent(event);
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ <method name="_hitEnter">
|
|
||||||
+ <parameter name="evt"/>
|
|
||||||
+ <body>
|
|
||||||
+ <![CDATA[
|
|
||||||
+ if (evt.defaultPrevented)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ var btn = this.getButton(this.defaultButton);
|
|
||||||
+ if (btn)
|
|
||||||
+ this._doButtonCommand(this.defaultButton);
|
|
||||||
+ ]]>
|
|
||||||
+ </body>
|
|
||||||
+ </method>
|
|
||||||
+
|
|
||||||
+ </implementation>
|
|
||||||
+
|
|
||||||
+ <handlers>
|
|
||||||
+ <handler event="keypress" keycode="VK_RETURN"
|
|
||||||
+ group="system" action="this._hitEnter(event);"/>
|
|
||||||
+ <handler event="keypress" keycode="VK_ESCAPE" group="system">
|
|
||||||
+ if (!event.defaultPrevented)
|
|
||||||
+ this.cancelDialog();
|
|
||||||
+ </handler>
|
|
||||||
+#ifdef XP_MACOSX
|
|
||||||
+ <handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/>
|
|
||||||
+#else
|
|
||||||
+ <handler event="focus" phase="capturing">
|
|
||||||
+ var btn = this.getButton(this.defaultButton);
|
|
||||||
+ if (btn)
|
|
||||||
+ btn.setAttribute("default", event.originalTarget == btn ||
|
|
||||||
+ !(event.originalTarget.localName == "button" ||
|
|
||||||
+ event.originalTarget.localName == "toolbarbutton"));
|
|
||||||
+ </handler>
|
|
||||||
+#endif
|
|
||||||
+ </handlers>
|
|
||||||
+
|
|
||||||
+ </binding>
|
|
||||||
+
|
|
||||||
+</bindings>
|
|
||||||
diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
||||||
--- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
--- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
||||||
+++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
+++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
|
||||||
@ -1821,7 +1295,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
|
|||||||
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
||||||
--- a/widget/gtk/moz.build
|
--- a/widget/gtk/moz.build
|
||||||
+++ b/widget/gtk/moz.build
|
+++ b/widget/gtk/moz.build
|
||||||
@@ -124,16 +124,17 @@ include('/ipc/chromium/chromium-config.m
|
@@ -126,16 +126,17 @@ include('/ipc/chromium/chromium-config.m
|
||||||
|
|
||||||
FINAL_LIBRARY = 'xul'
|
FINAL_LIBRARY = 'xul'
|
||||||
|
|
||||||
@ -1842,7 +1316,7 @@ diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
|||||||
diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
||||||
--- a/widget/gtk/nsFilePicker.cpp
|
--- a/widget/gtk/nsFilePicker.cpp
|
||||||
+++ b/widget/gtk/nsFilePicker.cpp
|
+++ b/widget/gtk/nsFilePicker.cpp
|
||||||
@@ -4,32 +4,34 @@
|
@@ -4,16 +4,17 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
#include "mozilla/Types.h"
|
#include "mozilla/Types.h"
|
||||||
@ -1855,11 +1329,12 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
|||||||
|
|
||||||
#include "nsGtkUtils.h"
|
#include "nsGtkUtils.h"
|
||||||
#include "nsIFileURL.h"
|
#include "nsIFileURL.h"
|
||||||
|
#include "nsIGIOService.h"
|
||||||
#include "nsIURI.h"
|
#include "nsIURI.h"
|
||||||
#include "nsIWidget.h"
|
#include "nsIWidget.h"
|
||||||
#include "nsIFile.h"
|
#include "nsIFile.h"
|
||||||
#include "nsIStringBundle.h"
|
#include "nsIStringBundle.h"
|
||||||
|
@@ -21,16 +22,17 @@
|
||||||
#include "nsArrayEnumerator.h"
|
#include "nsArrayEnumerator.h"
|
||||||
#include "nsMemory.h"
|
#include "nsMemory.h"
|
||||||
#include "nsEnumeratorUtils.h"
|
#include "nsEnumeratorUtils.h"
|
||||||
@ -1877,7 +1352,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
|||||||
#define MAX_PREVIEW_SOURCE_SIZE 4096
|
#define MAX_PREVIEW_SOURCE_SIZE 4096
|
||||||
|
|
||||||
nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
|
nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
|
||||||
@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
|
@@ -228,17 +230,19 @@ nsFilePicker::AppendFilters(int32_t aFil
|
||||||
mAllowURLs = !!(aFilterMask & filterAllowURLs);
|
mAllowURLs = !!(aFilterMask & filterAllowURLs);
|
||||||
return nsBaseFilePicker::AppendFilters(aFilterMask);
|
return nsBaseFilePicker::AppendFilters(aFilterMask);
|
||||||
}
|
}
|
||||||
@ -1898,7 +1373,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
|||||||
|
|
||||||
mFilters.AppendElement(filter);
|
mFilters.AppendElement(filter);
|
||||||
mFilterNames.AppendElement(name);
|
mFilterNames.AppendElement(name);
|
||||||
@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
|
@@ -338,16 +342,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1938,7 +1413,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
|
|||||||
|
|
||||||
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
|
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
|
||||||
|
|
||||||
@@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos
|
@@ -573,16 +600,240 @@ void nsFilePicker::Done(void* file_choos
|
||||||
mCallback->Done(result);
|
mCallback->Done(result);
|
||||||
mCallback = nullptr;
|
mCallback = nullptr;
|
||||||
} else {
|
} else {
|
||||||
|
38
mozilla-nestegg-big-endian.patch
Normal file
38
mozilla-nestegg-big-endian.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 381102061fccdec40efda75c7423a766f68201ba
|
||||||
|
Bug-behavior: Youtube-videos using VP9 and opus as audio-codec started loading but did not play
|
||||||
|
Reason: While parsing the audio-stream, the sampling frequency (short rate) was wrongly parsed by
|
||||||
|
nestegg, returning 0 all the time. This led to the audio-track reporting that it neither had
|
||||||
|
valid video nor audio. Which led to an endless-loop in the video state machine.
|
||||||
|
Solution: Correct parsing of rate in nestegg, which is a float and cuts of bytes.
|
||||||
|
Link: https://github.com/kinetiknz/nestegg/issues/64
|
||||||
|
|
||||||
|
diff -r 381102061fcc -r 8da4be020b1e media/libnestegg/src/nestegg.c
|
||||||
|
--- a/media/libnestegg/src/nestegg.c Tue Aug 13 07:51:27 2019 +0200
|
||||||
|
+++ b/media/libnestegg/src/nestegg.c Tue Aug 20 07:59:54 2019 +0200
|
||||||
|
@@ -768,7 +768,15 @@
|
||||||
|
{
|
||||||
|
union {
|
||||||
|
uint64_t u;
|
||||||
|
- float f;
|
||||||
|
+ struct {
|
||||||
|
+#if __FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
+ uint32_t _pad;
|
||||||
|
+ float f;
|
||||||
|
+#else
|
||||||
|
+ float f;
|
||||||
|
+ uint32_t _pad;
|
||||||
|
+#endif
|
||||||
|
+ } f;
|
||||||
|
double d;
|
||||||
|
} value;
|
||||||
|
int r;
|
||||||
|
@@ -780,7 +788,7 @@
|
||||||
|
if (r != 1)
|
||||||
|
return r;
|
||||||
|
if (length == 4)
|
||||||
|
- *val = value.f;
|
||||||
|
+ *val = value.f.f;
|
||||||
|
else
|
||||||
|
*val = value.d;
|
||||||
|
return 1;
|
@ -3,13 +3,18 @@
|
|||||||
# Date 1558452418 -7200
|
# Date 1558452418 -7200
|
||||||
# Tue May 21 17:26:58 2019 +0200
|
# Tue May 21 17:26:58 2019 +0200
|
||||||
# Node ID 6cd963b6c82ea6629aaf4050851789b78f310338
|
# Node ID 6cd963b6c82ea6629aaf4050851789b78f310338
|
||||||
# Parent 602e92722e765a3c238d3b96b26c0c8063b5eeb4
|
# Parent 010a35335b4e45e222b9efdbda24fd1963202ecf
|
||||||
imported patch mozilla-ppc-altivec_static_inline.patch
|
imported patch mozilla-ppc-altivec_static_inline.patch
|
||||||
|
|
||||||
diff -r 602e92722e76 -r 6cd963b6c82e gfx/qcms/transform-altivec.c
|
diff --git a/gfx/qcms/transform-altivec.cpp b/gfx/qcms/transform-altivec.cpp
|
||||||
--- a/gfx/qcms/transform-altivec.c Tue May 21 17:26:48 2019 +0200
|
--- a/gfx/qcms/transform-altivec.cpp
|
||||||
+++ b/gfx/qcms/transform-altivec.c Tue May 21 17:26:58 2019 +0200
|
+++ b/gfx/qcms/transform-altivec.cpp
|
||||||
@@ -30,7 +30,7 @@
|
@@ -25,17 +25,17 @@
|
||||||
|
|
||||||
|
#include "qcmsint.h"
|
||||||
|
|
||||||
|
#define FLOATSCALE (float)(PRECACHE_OUTPUT_SIZE)
|
||||||
|
#define CLAMPMAXVAL (((float) (PRECACHE_OUTPUT_SIZE - 1)) / PRECACHE_OUTPUT_SIZE)
|
||||||
static const ALIGN float floatScaleX4 = FLOATSCALE;
|
static const ALIGN float floatScaleX4 = FLOATSCALE;
|
||||||
static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
|
static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
|
||||||
|
|
||||||
@ -18,3 +23,8 @@ diff -r 602e92722e76 -r 6cd963b6c82e gfx/qcms/transform-altivec.c
|
|||||||
{
|
{
|
||||||
vector float data = vec_lde(0, dataPtr);
|
vector float data = vec_lde(0, dataPtr);
|
||||||
vector unsigned char moveToStart = vec_lvsl(0, dataPtr);
|
vector unsigned char moveToStart = vec_lvsl(0, dataPtr);
|
||||||
|
return vec_perm(data, data, moveToStart);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <size_t kRIndex, size_t kGIndex, size_t kBIndex, size_t kAIndex = NO_A_INDEX>
|
||||||
|
static void qcms_transform_data_template_lut_altivec(const qcms_transform *transform,
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
REV=380fedbb18002297f1b233bd9c09764e59ddaa86
|
REV=cce4622026ab8e0130a0afc03f829f9b19ca38c2
|
||||||
REPO=http://hg.mozilla.org/releases/mozilla-esr68
|
REPO=http://hg.mozilla.org/releases/mozilla-release
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
PRODUCT="firefox"
|
PRODUCT="firefox"
|
||||||
CHANNEL="esr68"
|
CHANNEL="release"
|
||||||
VERSION="68.1.0"
|
VERSION="69.0"
|
||||||
VERSION_SUFFIX="esr"
|
VERSION_SUFFIX=""
|
||||||
FF_RELEASE_TAG="380fedbb18002297f1b233bd9c09764e59ddaa86"
|
FF_RELEASE_TAG="cce4622026ab8e0130a0afc03f829f9b19ca38c2"
|
||||||
TB_RELEASE_TAG=""
|
TB_RELEASE_TAG=""
|
||||||
PREV_VERSION=""
|
PREV_VERSION=""
|
||||||
PREV_VERSION_SUFFIX=""
|
PREV_VERSION_SUFFIX=""
|
||||||
|
Loading…
Reference in New Issue
Block a user