--- a/MozillaFirefox/MozillaFirefox.changes Mon Jul 08 12:56:52 2019 +0200
+++ b/MozillaFirefox/MozillaFirefox.changes Wed Jul 10 08:14:34 2019 +0200
@@ -1,4 +1,79 @@
-------------------------------------------------------------------
+Mon Jul 8 13:30:35 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
+
+- Mozilla Firefox 68.0
+ * Dark mode in reader view
+ * Improved extension security and discovery
+ * Cryptomining and fingerprinting protections are added to strict
+ content blocking settings in Privacy & Security preferences
+ * Camera and microphone access now require an HTTPS connection
+ MFSA 2019-21 (bsc#1140868)
+ * CVE-2019-9811 (bmo#1538007, bmo#1539598, bmo#1563327)
+ Sandbox escape via installation of malicious languagepack
+ * CVE-2019-11711 (bmo#1552541)
+ Script injection within domain through inner window reuse
+ * CVE-2019-11712 (bmo#1543804)
+ Cross-origin POST requests can be made with NPAPI plugins by
+ following 308 redirects
+ * CVE-2019-11713 (bmo#1528481)
+ Use-after-free with HTTP/2 cached stream
+ * CVE-2019-11714 (bmo#1542593)
+ NeckoChild can trigger crash when accessed off of main thread
+ * CVE-2019-11729 (bmo#1515342)
+ Empty or malformed p256-ECDH public keys may trigger a segmentation fault
+ * CVE-2019-11715 (bmo#1555523)
+ HTML parsing error can contribute to content XSS
+ * CVE-2019-11716 (bmo#1552632)
+ globalThis not enumerable until accessed
+ * CVE-2019-11717 (bmo#1548306)
+ Caret character improperly escaped in origins
+ * CVE-2019-11718 (bmo#1408349)
+ Activity Stream writes unsanitized content to innerHTML
+ * CVE-2019-11719 (bmo#1540541)
+ Out-of-bounds read when importing curve25519 private key
+ * CVE-2019-11720 (bmo#1556230)
+ Character encoding XSS vulnerability
+ * CVE-2019-11721 (bmo#1256009)
+ Domain spoofing through unicode latin 'kra' character
+ * CVE-2019-11730 (bmo#1558299)
+ Same-origin policy treats all files in a directory as having the
+ same-origin
+ * CVE-2019-11723 (bmo#1528335)
+ Cookie leakage during add-on fetching across private browsing boundaries
+ * CVE-2019-11724 (bmo#1512511)
+ Retired site input.mozilla.org has remote troubleshooting permissions
+ * CVE-2019-11725 (bmo#1483510)
+ Websocket resources bypass safebrowsing protections
+ * CVE-2019-11727 (bmo#1552208)
+ PKCS#1 v1.5 signatures can be used for TLS 1.3
+ * CVE-2019-11728 (bmo#1552993)
+ Port scanning through Alt-Svc header
+ * CVE-2019-11710 (bmo#1549768, bmo#1548611, bmo#1533842, bmo#1537692,
+ bmo#1540590, bmo#1551907, bmo#1510345, bmo#1535482, bmo#1535848,
+ bmo#1547472, bmo#1547760, bmo#1507696, bmo#1544180)
+ Memory safety bugs fixed in Firefox 68
+ * CVE-2019-11709 (bmo#1547266, bmo#1540759, bmo#1548822, bmo#1550498
+ bmo#1515052, bmo#1539219, bmo#1547757, bmo#1550498, bmo#1533522)
+ Memory safety bugs fixed in Firefox 68 and Firefox ESR 60.8
+- requires
+ * NSS 3.44.1
+ * rust/cargo 1.34
+ * rust-cbindgen 0.8.7
+- rebased patches
+ * mozilla-aarch64-startup-crash.patch
+ * mozilla-kde.patch
+ * mozilla-nongnome-proxies.patch
+ * firefox-kde.patch
+- use new create-tar.sh and add tar_stamps for package definitions
+- added patches imported from SLE flavour
+ * mozilla-gcc-internal-compiler-error.patch
+ * mozilla-bmo1005535.patch
+ * mozilla-ppc-altivec_static_inline.patch
+ * mozilla-reduce-rust-debuginfo.patch
+ * mozilla-s390-bigendian.patch
+ * mozilla-s390-context.patch
+
+-------------------------------------------------------------------
Mon Jul 2 14:15:17 UTC 2019 - Martin Liška <mliska@suse.cz>
- Enable PGO for x86_64.
--- a/MozillaFirefox/MozillaFirefox.spec Mon Jul 08 12:56:52 2019 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec Wed Jul 10 08:14:34 2019 +0200
@@ -2,7 +2,7 @@
# spec file for package MozillaFirefox
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
-# 2006-2019 Wolfgang Rosenauer
+# 2006-2019 Wolfgang Rosenauer <wr@rosenauer.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,13 +18,13 @@
# changed with every update
-%define major 67
-%define mainver %major.0.4
-%define orig_version 67.0.4
+%define major 68
+%define mainver %major.0
+%define orig_version 68.0
%define orig_suffix %{nil}
%define update_channel release
%define branding 1
-%define releasedate 20190619235627
+%define releasedate 20190705220548
%define source_prefix firefox-%{orig_version}
# always build with GCC as SUSE Security Team requires that
@@ -70,7 +70,7 @@
%else
BuildRequires: gcc-c++
%endif
-BuildRequires: cargo >= 1.32
+BuildRequires: cargo >= 1.34
BuildRequires: libXcomposite-devel
BuildRequires: libcurl-devel
BuildRequires: libidl-devel
@@ -79,14 +79,14 @@
BuildRequires: libproxy-devel
BuildRequires: makeinfo
BuildRequires: mozilla-nspr-devel >= 4.21
-BuildRequires: mozilla-nss-devel >= 3.43
+BuildRequires: mozilla-nss-devel >= 3.44.1
BuildRequires: nasm >= 2.13
BuildRequires: nodejs >= 8.11
BuildRequires: python-devel
BuildRequires: python2-xml
BuildRequires: python3 >= 3.5
-BuildRequires: rust >= 1.32
-BuildRequires: rust-cbindgen >= 0.8.2
+BuildRequires: rust >= 1.34
+BuildRequires: rust-cbindgen >= 0.8.7
BuildRequires: startup-notification-devel
BuildRequires: unzip
BuildRequires: update-desktop-files
@@ -95,7 +95,7 @@
BuildRequires: yasm
BuildRequires: zip
%if 0%{?suse_version} < 1550
-BuildRequires: pkgconfig(gconf-2.0)
+BuildRequires: pkgconfig(gconf-2.0) >= 1.2.1
%endif
BuildRequires: pkgconfig(gdk-x11-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.22
@@ -138,6 +138,7 @@
Source1: MozillaFirefox.desktop
Source2: MozillaFirefox-rpmlintrc
Source3: mozilla.sh.in
+Source4: tar_stamps
Source5: source-stamp.txt
Source6: kde.js
Source7: l10n-%{orig_version}%{orig_suffix}.tar.xz
@@ -147,7 +148,7 @@
Source11: firefox.1
Source12: mozilla-get-app-id
Source13: spellcheck.js
-Source14: create-tar.sh
+Source14: https://github.com/openSUSE/firefox-scripts/raw/master/create-tar.sh
Source15: firefox-appdata.xml
Source16: MozillaFirefox.changes
# Set up API keys, see http://www.chromium.org/developers/how-tos/api-keys
@@ -155,18 +156,24 @@
# please get your own set of keys.
Source18: mozilla-api-key
Source19: google-api-key
-Source20: http://ftp.mozilla.org/pub/firefox/releases/%{version}/source/firefox-%{orig_version}%{orig_suffix}.source.tar.xz.asc
+Source20: https://ftp.mozilla.org/pub/%{progname}/releases/%{version}/source/%{progname}-%{orig_version}%{orig_suffix}.source.tar.xz.asc
Source21: mozilla.keyring
# Gecko/Toolkit
Patch1: mozilla-nongnome-proxies.patch
Patch2: mozilla-kde.patch
Patch3: mozilla-ntlm-full-path.patch
Patch4: mozilla-openaes-decl.patch
-Patch7: mozilla-aarch64-startup-crash.patch
-Patch9: mozilla-bmo1463035.patch
-Patch10: mozilla-cubeb-noreturn.patch
-Patch11: mozilla-fix-aarch64-libopus.patch
-Patch12: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch
+Patch5: mozilla-aarch64-startup-crash.patch
+Patch6: mozilla-bmo1463035.patch
+Patch7: mozilla-cubeb-noreturn.patch
+Patch8: mozilla-fix-aarch64-libopus.patch
+Patch9: mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch
+Patch10: mozilla-gcc-internal-compiler-error.patch
+Patch11: mozilla-s390-context.patch
+Patch12: mozilla-s390-bigendian.patch
+Patch13: mozilla-reduce-rust-debuginfo.patch
+Patch14: mozilla-ppc-altivec_static_inline.patch
+Patch15: mozilla-bmo1005535.patch
# Firefox/browser
Patch101: firefox-kde.patch
Patch102: firefox-branded-icons.patch
@@ -209,7 +216,7 @@
%package translations-common
Summary: Common translations for %{appname}
Group: System/Localization
-Provides: locale(%{name}:ar;ca;cs;da;de;en_GB;el;es_AR;es_CL;es_ES;fi;fr;hu;it;ja;ko;nb_NO;nl;pl;pt_BR;pt_PT;ru;sv_SE;zh_CN;zh_TW)
+Provides: locale(%{name}:ar;ca;cs;da;de;el;en_GB;es_AR;es_CL;es_ES;fi;fr;hu;it;ja;ko;nb_NO;nl;pl;pt_BR;pt_PT;ru;sv_SE;zh_CN;zh_TW)
Requires: %{name} = %{version}
Obsoletes: %{name}-translations < %{version}-%{release}
@@ -262,6 +269,15 @@
%prep
%if %localize
+
+# If generated incorrectly, the tarball will be ~270B in
+# size, so 1MB seems like good enough limit to check.
+MINSIZE=1048576
+if (( $(stat -c%s "%{SOURCE7}") < MINSIZE)); then
+ echo "Translations tarball %{SOURCE7} not generated properly."
+ exit 1
+fi
+
%setup -q -n %{source_prefix} -b 7 -b 10
%else
%setup -q -n %{source_prefix}
@@ -271,11 +287,19 @@
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
+%patch6 -p1
%patch7 -p1
+%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
+%ifarch s390x
%patch12 -p1
+%endif
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
# Firefox
%patch101 -p1
%patch102 -p1
@@ -283,7 +307,7 @@
%build
# no need to add build time to binaries
-modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/MozillaFirefox.changes")"
+modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")"
DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
TIME="\"$(date -d "${modified}" "+%%R")\""
find . -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} +
@@ -441,7 +465,7 @@
rm -rf %{buildroot}%{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org/hyphenation
# check against the fixed common list and sort into the right filelist
_matched=0
- for _match in ar ca cs da de en-GB el es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
+ for _match in ar ca cs da de el en-GB es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
[ "$_match" = "$locale" ] && _matched=1
done
[ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
--- a/MozillaFirefox/create-tar.sh Mon Jul 08 12:56:52 2019 +0200
+++ b/MozillaFirefox/create-tar.sh Wed Jul 10 08:14:34 2019 +0200
@@ -1,20 +1,124 @@
#!/bin/bash
-# TODO
-# http://ftp.mozilla.org/pub/firefox/candidates/48.0-candidates/build2/linux-x86_64/en-US/firefox-48.0.json
-# "moz_source_stamp": "c1de04f39fa956cfce83f6065b0e709369215ed5"
-# http://ftp.mozilla.org/pub/firefox/candidates/48.0-candidates/build2/l10n_changesets.txt
+function print_usage_and_exit() {
+ echo "Usage: create-tar.sh tar_stamp"
+ echo ""
+ echo "Where tar_stamp should look like this:"
+ echo ""
+ cat << EOF
+# Node ID: 64ee63facd4ff96b3e8590cff559d7e97ac6b061
+PRODUCT="firefox" # "firefox" or "thunderbird"
+CHANNEL="esr60"
+VERSION="60.7.0"
+VERSION_SUFFIX="esr"
+FF_RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded
+TB_RELEASE_TAG="" # Only relevant for Thunderbird
+PREV_VERSION="60.6.3" # Prev. version only needed for locales (leave empty to force l10n-generation)
+PREV_VERSION_SUFFIX="esr"
+#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
+EOF
+
+exit 1
+}
+
+if [ $# -ne 1 ]; then
+ print_usage_and_exit
+fi
+
+# Sourcing the given tar_stamp-file to have the variables available
+source "$1" || print_usage_and_exit
+
+# Internal variables
+BRANCH="releases/mozilla-$CHANNEL"
+if [ "$PRODUCT" = "firefox" ]; then
+ LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json"
+else
+ LOCALE_FILE="thunderbird-$VERSION/comm/mail/locales/l10n-changesets.json"
+fi
+
+SOURCE_TARBALL="$PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz"
+FTP_URL="https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source"
+# Make first letter of PRODCUT upper case
+PRODUCT_CAP="${PRODUCT^}"
+LOCALES_URL="https://product-details.mozilla.org/1.0/l10n/$PRODUCT_CAP"
+# Exit script on CTRL+C
+trap "exit" INT
+
+function check_tarball_source () {
+ TARBALL=$1
+ # Print out what is going to be done:
+ if [ -e $TARBALL ]; then
+ echo "Reuse existing file"
+ elif wget --spider $FTP_URL/$TARBALL 2> /dev/null; then
+ echo "Download file"
+ else
+ echo "Mercurial checkout"
+ fi
+}
-CHANNEL="release"
-BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="ea5154beddff08b919697e3bed6f38cfe3a3d82f"
-VERSION="67.0.4"
-VERSION_SUFFIX=""
-LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json"
+function ask_cont_abort_question() {
+ while true; do
+ read -p "$1 [(c)ontinue/(a)bort] " ca
+ case $ca in
+ [Cc]* ) return 0 ;;
+ [Aa]* ) return 1 ;;
+ * ) echo "Please answer c or a.";;
+ esac
+ done
+}
+
+function check_for_binary() {
+ if ! test -x $1; then
+ echo "$1 is missing: execute zypper in $2"
+ exit 5
+ fi
+}
+
+function locales_get() {
+ TMP_VERSION="$1"
+ URL_TO_CHECK="${LOCALES_URL}-${TMP_VERSION}"
+
+ LAST_FOUND=""
+ # Unfortunately, locales-files are not associated to releases, but to builds.
+ # And since we don't know which build was the final build, we go from 1 to
+ # the last we find and try to find the latest one that exists.
+ # Error only if not even the first one exists
+ for BUILD_ID in $(seq 1 9); do
+ FINAL_URL="${URL_TO_CHECK}-build${BUILD_ID}.json"
+ if wget --quiet --spider "$FINAL_URL"; then
+ LAST_FOUND="$FINAL_URL"
+ elif [ $BUILD_ID -gt 1 ]; then
+ echo "$LAST_FOUND"
+ return 0
+ else
+ echo "Error: Could not find locales-file (json) for Firefox $TMP_VERSION !" 1>&2
+ return 1
+ fi
+ done
+}
+
+function locales_parse() {
+ URL="$1"
+ curl -s "$URL" | python -c "import json; import sys; \
+ print('\n'.join(['{} {}'.format(key, value['changeset']) \
+ for key, value in sorted(json.load(sys.stdin)['locales'].items())]));"
+}
+
+function locales_unchanged() {
+ # If no json-file for one of the versions can be found, we say "they changed"
+ prev_url=$(locales_get "$PREV_VERSION$PREV_VERSION_SUFFIX") || return 1
+ curr_url=$(locales_get "$VERSION$VERSION_SUFFIX") || return 1
+
+ prev_content=$(locales_parse "$prev_url") || exit 1
+ curr_content=$(locales_parse "$curr_url") || exit 1
+
+ diff -y --suppress-common-lines -d <(echo "$prev_content") <(echo "$curr_content")
+}
# check required tools
-test -x /usr/bin/hg || ( echo "hg missing: execute zypper in mercurial"; exit 5 )
-test -x /usr/bin/jq || ( echo "jq missing: execute zypper in jq"; exit 5 )
+check_for_binary /usr/bin/hg "mercurial"
+check_for_binary /usr/bin/jq "jq"
+which python > /dev/null || exit 1
# use parallel compression, if available
compression='-J'
@@ -23,69 +127,139 @@
compression='-Ipixz'
fi
+if [ -z ${SKIP_LOCALES+x} ]; then
+ # TODO: Thunderbird has usually "default" as locale entry.
+ # There we probably need to double-check Firefox-locals
+ # For now, just download every time for Thunderbird
+ if [ "$PRODUCT" = "firefox" ] && [ "$PREV_VERSION" != "" ] && locales_unchanged; then
+ printf "%-40s: Did not change. Skipping.\n" "locales"
+ LOCALES_CHANGED=0
+ else
+ printf "%-40s: Need to download.\n" "locales"
+ LOCALES_CHANGED=1
+ fi
+else
+ printf "%-40s: User forced skip (SKIP_LOCALES set)\n" "locales"
+fi
+
+# Check what is going to be done and ask for consent
+for ff in $SOURCE_TARBALL $SOURCE_TARBALL.asc; do
+ printf "%-40s: %s\n" $ff "$(check_tarball_source $ff)"
+done
+
+$(ask_cont_abort_question "Is this ok?") || exit 0
+
+# Try to download tar-ball from officiall mozilla-mirror
+if [ ! -e $SOURCE_TARBALL ]; then
+ wget https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source/$SOURCE_TARBALL
+fi
+# including signature
+if [ ! -e $SOURCE_TARBALL.asc ]; then
+ wget https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source/$SOURCE_TARBALL.asc
+fi
+
# we might have an upstream archive already and can skip the checkout
-if [ -e firefox-$VERSION$VERSION_SUFFIX.source.tar.xz ]; then
- echo "skip firefox checkout and use available archive"
- # still need to extract the locale information from the archive
- echo "extract locale changesets"
- tar -xf firefox-$VERSION$VERSION_SUFFIX.source.tar.xz $LOCALE_FILE
+if [ -e $SOURCE_TARBALL ]; then
+ if [ -z ${SKIP_LOCALES+x} ]; then
+ # still need to extract the locale information from the archive
+ echo "extract locale changesets"
+ tar -xf $SOURCE_TARBALL $LOCALE_FILE
+ fi
else
+ # We are working on a version that is not yet published on the mozilla mirror
+ # so we have to actually check out the repo
+
# mozilla
- if [ -d firefox-$VERSION ]; then
- pushd firefox-$VERSION
+ if [ -d $PRODUCT-$VERSION ]; then
+ pushd $PRODUCT-$VERSION || exit 1
_repourl=$(hg paths)
case "$_repourl" in
*$BRANCH*)
echo "updating previous tree"
hg pull
- popd
+ popd || exit 1
;;
* )
echo "removing obsolete tree"
- popd
- rm -rf firefox-$VERSION
+ popd || exit 1
+ rm -rf $PRODUCT-$VERSION
;;
esac
fi
- if [ ! -d firefox-$VERSION ]; then
+ if [ ! -d $PRODUCT-$VERSION ]; then
echo "cloning new $BRANCH..."
- hg clone http://hg.mozilla.org/$BRANCH firefox-$VERSION
+ hg clone http://hg.mozilla.org/$BRANCH $PRODUCT-$VERSION
+ if [ "$PRODUCT" = "thunderbird" ]; then
+ hg clone http://hg.mozilla.org/releases/comm-$CHANNEL thunderbird-$VERSION/comm
+ fi
fi
- pushd firefox-$VERSION
- hg update --check
- [ "$RELEASE_TAG" == "default" ] || hg update -r $RELEASE_TAG
+ pushd $PRODUCT-$VERSION || exit 1
+ hg update --check $FF_RELEASE_TAG
+ [ "$FF_RELEASE_TAG" == "default" ] || hg update -r $FF_RELEASE_TAG
# get repo and source stamp
echo -n "REV=" > ../source-stamp.txt
hg -R . parent --template="{node|short}\n" >> ../source-stamp.txt
echo -n "REPO=" >> ../source-stamp.txt
hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" >> ../source-stamp.txt
- popd
+
+ if [ "$PRODUCT" = "thunderbird" ]; then
+ pushd comm || exit 1
+ hg update --check $TB_RELEASE_TAG
+ popd || exit 1
+ rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub
+ fi
+ popd || exit 1
echo "creating archive..."
- tar $compression -cf firefox-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS firefox-$VERSION
+ tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION
+fi
+
+if [ ! -z ${SKIP_LOCALES+x} ]; then
+ echo "Skipping locales-creation."
+ exit 0
fi
-# l10n
-echo "fetching locales..."
-test ! -d l10n && mkdir l10n
-jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' $LOCALE_FILE | \
- while read locale changeset ; do
- case $locale in
- ja-JP-mac|en-US)
- ;;
- *)
- echo "reading changeset information for $locale"
- echo "fetching $locale changeset $changeset ..."
- hg clone http://hg.mozilla.org/l10n-central/$locale l10n/$locale
- [ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $changeset
- ;;
- esac
- done
-echo "creating l10n archive..."
-tar $compression -cf l10n-$VERSION$VERSION_SUFFIX.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg l10n
+if [ $LOCALES_CHANGED -ne 0 ]; then
+ # l10n
+ echo "fetching locales..."
+ test ! -d l10n && mkdir l10n
+ jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' $LOCALE_FILE | \
+ while read locale changeset ; do
+ case $locale in
+ ja-JP-mac|en-US)
+ ;;
+ *)
+ echo "reading changeset information for $locale"
+ echo "fetching $locale changeset $changeset ..."
+ if [ -d "l10n/$locale/.hg" ]; then
+ pushd "l10n/$locale" || exit 1
+ hg pull
+ popd || exit 1
+ else
+ hg clone "http://hg.mozilla.org/l10n-central/$locale" "l10n/$locale"
+ fi
+ [ "$FF_RELEASE_TAG" == "default" ] || hg -R "l10n/$locale" up -C -r "$changeset"
+ ;;
+ esac
+ done
+ echo "creating l10n archive..."
+if [ "$PRODUCT" = "thunderbird" ]; then
+ TB_TAR_FLAGS="--exclude=browser --exclude=suite"
+fi
+ tar $compression -cf l10n-$VERSION$VERSION_SUFFIX.tar.xz \
+ --exclude=.hgtags --exclude=.hgignore --exclude=.hg \
+ $TB_TAR_FLAGS \
+ l10n
+fi
# compare-locales
echo "creating compare-locales"
-hg clone http://hg.mozilla.org/build/compare-locales
+if [ -d compare-locales/.hg ]; then
+ pushd compare-locales || exit 1
+ hg pull
+ popd || exit 1
+else
+ hg clone http://hg.mozilla.org/build/compare-locales
+fi
tar $compression -cf compare-locales.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg compare-locales
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-bmo1005535.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,1 @@
+../mozilla-bmo1005535.patch
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-gcc-internal-compiler-error.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,1 @@
+../mozilla-gcc-internal-compiler-error.patch
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-ppc-altivec_static_inline.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,1 @@
+../mozilla-ppc-altivec_static_inline.patch
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-reduce-rust-debuginfo.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,1 @@
+../mozilla-reduce-rust-debuginfo.patch
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-s390-bigendian.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,1 @@
+../mozilla-s390-bigendian.patch
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-s390-context.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,1 @@
+../mozilla-s390-context.patch
\ No newline at end of file
--- a/MozillaFirefox/source-stamp.txt Mon Jul 08 12:56:52 2019 +0200
+++ b/MozillaFirefox/source-stamp.txt Wed Jul 10 08:14:34 2019 +0200
@@ -1,2 +1,2 @@
-REV=ea5154beddff08b919697e3bed6f38cfe3a3d82f
+REV=353628fec415324ca6aa333ab6c47d447ecc128e
REPO=http://hg.mozilla.org/releases/mozilla-release
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/tar_stamps Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,10 @@
+PRODUCT="firefox"
+CHANNEL="release"
+VERSION="68.0"
+VERSION_SUFFIX=""
+FF_RELEASE_TAG="353628fec415324ca6aa333ab6c47d447ecc128e"
+TB_RELEASE_TAG=""
+PREV_VERSION=""
+PREV_VERSION_SUFFIX=""
+#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
+
--- a/firefox-kde.patch Mon Jul 08 12:56:52 2019 +0200
+++ b/firefox-kde.patch Wed Jul 10 08:14:34 2019 +0200
@@ -1,11 +1,20 @@
# HG changeset patch
-# Parent 18632e53d0b0c4c03f254ca2dbbeac8f48ec6f5c
+# User msirringhaus@suse.de
+# Date 1559300151 -7200
+# Fri May 31 12:55:51 2019 +0200
+# Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec
+# Parent 428161c3b9599083e1b8710eda1760f1f707ab11
+How to apply this patch:
+1. Import and apply it
+2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
+3. Find editBookmarkPanelDoneButton
+4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style)
+5. hg qrefresh
-diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
-new file mode 100644
---- /dev/null
-+++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,1404 @@
+diff -r 428161c3b959 -r 54d41b0033b8 browser/base/content/browser-kde.xul
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/browser/base/content/browser-kde.xul Fri May 31 12:55:51 2019 +0200
+@@ -0,0 +1,1375 @@
+#filter substitution
+<?xml version="1.0"?>
+# -*- Mode: HTML -*-
@@ -37,7 +46,6 @@
+<?xml-stylesheet href="chrome://browser/skin/searchbar.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/places/tree-icons.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/skin/compacttheme.css" type="text/css" alternate="yes" title="Light/Dark"?>
+
+# All DTD information is stored in a separate file so that it can be shared by
+# hiddenWindow.xul.
@@ -89,10 +97,9 @@
+# that they can be shared with macWindow.inc.xul.
+#include global-scripts.inc
+
-+<script type="application/javascript">
++<script>
+ Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", this);
+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-captivePortal.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-compacttheme.js", this);
+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-contentblocking.js", this);
+#ifdef MOZ_DATA_REPORTING
+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-data-submission-info-bar.js", this);
@@ -133,69 +140,52 @@
+ <menupopup id="tabContextMenu"
+ onpopupshowing="if (event.target == this) TabContextMenu.updateContextMenu(this);"
+ onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;">
-+ <menuitem id="context_reloadTab" label="&reloadTab.label;" accesskey="&reloadTab.accesskey;"
++ <menuitem id="context_reloadTab" data-lazy-l10n-id="reload-tab"
+ oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_reloadSelectedTabs" label="&reloadTabs.label;" hidden="true"
-+ accesskey="&reloadTabs.accesskey;"
++ <menuitem id="context_reloadSelectedTabs" data-lazy-l10n-id="reload-tabs" hidden="true"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"/>
+ <menuitem id="context_toggleMuteTab" oncommand="TabContextMenu.contextTab.toggleMuteAudio();"/>
+ <menuitem id="context_toggleMuteSelectedTabs" hidden="true"
+ oncommand="gBrowser.toggleMuteAudioOnMultiSelectedTabs(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_pinTab" label="&pinTab.label;"
-+ accesskey="&pinTab.accesskey;"
++ <menuitem id="context_pinTab" data-lazy-l10n-id="pin-tab"
+ oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_unpinTab" label="&unpinTab.label;" hidden="true"
-+ accesskey="&unpinTab.accesskey;"
++ <menuitem id="context_unpinTab" data-lazy-l10n-id="unpin-tab" hidden="true"
+ oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_pinSelectedTabs" label="&pinSelectedTabs.label;" hidden="true"
-+ accesskey="&pinSelectedTabs.accesskey;"
++ <menuitem id="context_pinSelectedTabs" data-lazy-l10n-id="pin-selected-tabs" hidden="true"
+ oncommand="gBrowser.pinMultiSelectedTabs();"/>
-+ <menuitem id="context_unpinSelectedTabs" label="&unpinSelectedTabs.label;" hidden="true"
-+ accesskey="&unpinSelectedTabs.accesskey;"
++ <menuitem id="context_unpinSelectedTabs" data-lazy-l10n-id="unpin-selected-tabs" hidden="true"
+ oncommand="gBrowser.unpinMultiSelectedTabs();"/>
-+ <menuitem id="context_duplicateTab" label="&duplicateTab.label;"
-+ accesskey="&duplicateTab.accesskey;"
++ <menuitem id="context_duplicateTab" data-lazy-l10n-id="duplicate-tab"
+ oncommand="duplicateTabIn(TabContextMenu.contextTab, 'tab');"/>
-+ <menuitem id="context_duplicateTabs" label="&duplicateTabs.label;"
-+ accesskey="&duplicateTabs.accesskey;"
++ <menuitem id="context_duplicateTabs" data-lazy-l10n-id="duplicate-tabs"
+ oncommand="TabContextMenu.duplicateSelectedTabs();"/>
+ <menuseparator/>
-+ <menuitem id="context_selectAllTabs" label="&selectAllTabs.label;" accesskey="&selectAllTabs.accesskey;"
++ <menuitem id="context_selectAllTabs" data-lazy-l10n-id="select-all-tabs"
+ oncommand="gBrowser.selectAllTabs();"/>
+ <menuitem id="context_bookmarkSelectedTabs"
+ hidden="true"
-+ label="&bookmarkSelectedTabs.label;"
-+ accesskey="&bookmarkSelectedTabs.accesskey;"
++ data-lazy-l10n-id="bookmark-selected-tabs"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"/>
+ <menuitem id="context_bookmarkTab"
-+ label="&bookmarkTab.label;"
-+ accesskey="&bookmarkTab.accesskey;"
++ data-lazy-l10n-id="bookmark-tab"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.getUniquePages([TabContextMenu.contextTab]));"/>
+ <menu id="context_reopenInContainer"
-+ label="&reopenInContainer.label;"
-+ accesskey="&reopenInContainer.accesskey;"
++ data-lazy-l10n-id="reopen-in-container"
+ hidden="true">
+ <menupopup oncommand="TabContextMenu.reopenInContainer(event);"
+ onpopupshowing="TabContextMenu.createReopenInContainerMenu(event);"/>
+ </menu>
-+ <menu id="context_moveTabOptions"
-+ multiselectcontextlabel="&moveSelectedTabOptions.label;"
-+ multiselectcontextaccesskey="&moveSelectedTabOptions.accesskey;"
-+ nonmultiselectcontextlabel="&moveTabOptions.label;"
-+ nonmultiselectcontextaccesskey="&moveTabOptions.accesskey;">
++ <menu id="context_moveTabOptions">
+ <menupopup id="moveTabOptionsMenu">
+ <menuitem id="context_moveToStart"
-+ label="&moveToStart.label;"
-+ accesskey="&moveToStart.accesskey;"
++ data-lazy-l10n-id="move-to-start"
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.moveTabsToStart(TabContextMenu.contextTab);"/>
+ <menuitem id="context_moveToEnd"
-+ label="&moveToEnd.label;"
-+ accesskey="&moveToEnd.accesskey;"
++ data-lazy-l10n-id="move-to-end"
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.moveTabsToEnd(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
-+ accesskey="&moveToNewWindow.accesskey;"
++ <menuitem id="context_openTabInWindow" data-lazy-l10n-id="move-to-new-window"
+ tbattr="tabbrowser-multiple"
+ oncommand="gBrowser.replaceTabsWithWindow(TabContextMenu.contextTab);"/>
+ </menupopup>
@@ -206,18 +196,17 @@
+ onpopupshowing="gSync.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle, TabContextMenu.contextTab.multiselected);"/>
+ </menu>
+ <menuseparator/>
-+ <menuitem id="context_closeTabsToTheEnd" label="&closeTabsToTheEnd.label;" accesskey="&closeTabsToTheEnd.accesskey;"
++ <menuitem id="context_closeTabsToTheEnd" data-lazy-l10n-id="close-tabs-to-the-end"
+ oncommand="gBrowser.removeTabsToTheEndFrom(TabContextMenu.contextTab, {animate: true});"/>
-+ <menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
++ <menuitem id="context_closeOtherTabs" data-lazy-l10n-id="close-other-tabs"
+ oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
+ <menuitem id="context_undoCloseTab"
-+ label="&undoCloseTab.label;"
-+ accesskey="&undoCloseTab.accesskey;"
++ data-lazy-l10n-id="undo-close-tab"
+ observes="History:UndoCloseTab"/>
-+ <menuitem id="context_closeTab" label="&closeTab.label;" accesskey="&closeTab.accesskey;"
++ <menuitem id="context_closeTab" data-lazy-l10n-id="close-tab"
+ oncommand="gBrowser.removeTab(TabContextMenu.contextTab, { animate: true });"/>
-+ <menuitem id="context_closeSelectedTabs" label="&closeTabs.label;"
-+ hidden="true" accesskey="&closeTabs.accesskey;"
++ <menuitem id="context_closeSelectedTabs" data-lazy-l10n-id="close-tabs"
++ hidden="true"
+ oncommand="gBrowser.removeMultiSelectedTabs();"/>
+ </menupopup>
+
@@ -301,11 +290,17 @@
+ aria-labelledby="editBookmarkPanelTitle">
+ <box class="panel-header">
+ <label id="editBookmarkPanelTitle"/>
++ <toolbarbutton id="editBookmarkPanelInfoButton" oncommand="StarUI.toggleRecommendation();" >
++ <image/>
++ </toolbarbutton>
+ </box>
-+ <html:div id="editBookmarkPanelFaviconContainer">
-+ <html:img id="editBookmarkPanelFavicon"/>
++ <html:div id="editBookmarkPanelInfoArea">
++ <html:div id="editBookmarkPanelRecommendation"></html:div>
++ <html:div id="editBookmarkPanelFaviconContainer">
++ <html:img id="editBookmarkPanelFavicon"/>
++ </html:div>
++ <html:div id="editBookmarkPanelImage"></html:div>
+ </html:div>
-+ <box id="editBookmarkPanelImage"/>
+#include ../../components/places/content/editBookmarkPanel.inc.xul
+ <vbox id="editBookmarkPanelBottomContent"
+ flex="1">
@@ -424,6 +419,11 @@
+ label="&customizeMenu.removeExtension.label;"
+ contexttype="toolbaritem"
+ class="customize-context-removeExtension"/>
++ <menuitem oncommand="ToolbarContextMenu.reportExtensionForContextAction(this.parentElement, 'toolbar_context_menu')"
++ accesskey="&customizeMenu.reportExtension.accesskey;"
++ label="&customizeMenu.reportExtension.label;"
++ contexttype="toolbaritem"
++ class="customize-context-reportExtension"/>
+ <menuseparator/>
+ <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
+ accesskey="&customizeMenu.pinToOverflowMenu.accesskey;"
@@ -444,32 +444,26 @@
+ <menuitem id="toolbar-context-reloadSelectedTab"
+ contexttype="tabbar"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"
-+ label="&toolbarContextMenu.reloadSelectedTab.label;"
-+ accesskey="&toolbarContextMenu.reloadSelectedTab.accesskey;"/>
++ data-lazy-l10n-id="toolbar-context-menu-reload-selected-tab"/>
+ <menuitem id="toolbar-context-reloadSelectedTabs"
+ contexttype="tabbar"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"
-+ label="&toolbarContextMenu.reloadSelectedTabs.label;"
-+ accesskey="&toolbarContextMenu.reloadSelectedTabs.accesskey;"/>
++ data-lazy-l10n-id="toolbar-context-menu-reload-selected-tabs"/>
+ <menuitem id="toolbar-context-bookmarkSelectedTab"
+ contexttype="tabbar"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
-+ label="&toolbarContextMenu.bookmarkSelectedTab.label;"
-+ accesskey="&toolbarContextMenu.bookmarkSelectedTab.accesskey;"/>
++ data-lazy-l10n-id="toolbar-context-menu-bookmark-selected-tab"/>
+ <menuitem id="toolbar-context-bookmarkSelectedTabs"
+ contexttype="tabbar"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
-+ label="&toolbarContextMenu.bookmarkSelectedTabs.label;"
-+ accesskey="&toolbarContextMenu.bookmarkSelectedTabs.accesskey;"/>
++ data-lazy-l10n-id="toolbar-context-menu-bookmark-selected-tabs"/>
+ <menuitem id="toolbar-context-selectAllTabs"
+ contexttype="tabbar"
+ oncommand="gBrowser.selectAllTabs();"
-+ label="&toolbarContextMenu.selectAllTabs.label;"
-+ accesskey="&toolbarContextMenu.selectAllTabs.accesskey;"/>
++ data-lazy-l10n-id="toolbar-context-menu-select-all-tabs"/>
+ <menuitem id="toolbar-context-undoCloseTab"
+ contexttype="tabbar"
-+ label="&toolbarContextMenu.undoCloseTab.label;"
-+ accesskey="&toolbarContextMenu.undoCloseTab.accesskey;"
++ data-lazy-l10n-id="toolbar-context-menu-undo-close-tab"
+ observes="History:UndoCloseTab"/>
+ <menuseparator/>
+ <menuseparator id="viewToolbarsMenuSeparator"/>
@@ -631,7 +625,8 @@
+#include popup-notifications.inc
+
+#include ../../components/customizableui/content/panelUI.inc.xul
-+#include ../../components/controlcenter/content/panel.inc.xul
++#include ../../components/controlcenter/content/identityPanel.inc.xul
++#include ../../components/controlcenter/content/protectionsPanel.inc.xul
+#include ../../components/downloads/content/downloadsPanel.inc.xul
+#include browser-allTabsMenu.inc.xul
+
@@ -645,31 +640,23 @@
+ onpopupshowing="UpdateDynamicShortcutTooltipText(this);"/>
+
+ <menupopup id="SyncedTabsSidebarContext">
-+ <menuitem label="&syncedTabs.context.open.label;"
-+ accesskey="&syncedTabs.context.open.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-open"
+ id="syncedTabsOpenSelected" where="current"/>
-+ <menuitem label="&syncedTabs.context.openInNewTab.label;"
-+ accesskey="&syncedTabs.context.openInNewTab.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-tab"
+ id="syncedTabsOpenSelectedInTab" where="tab"/>
-+ <menuitem label="&syncedTabs.context.openInNewWindow.label;"
-+ accesskey="&syncedTabs.context.openInNewWindow.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-window"
+ id="syncedTabsOpenSelectedInWindow" where="window"/>
-+ <menuitem label="&syncedTabs.context.openInNewPrivateWindow.label;"
-+ accesskey="&syncedTabs.context.openInNewPrivateWindow.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-private-window"
+ id="syncedTabsOpenSelectedInPrivateWindow" where="window" private="true"/>
+ <menuseparator/>
-+ <menuitem label="&syncedTabs.context.bookmarkSingleTab.label;"
-+ accesskey="&syncedTabs.context.bookmarkSingleTab.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-bookmark-single-tab"
+ id="syncedTabsBookmarkSelected"/>
-+ <menuitem label="&syncedTabs.context.copy.label;"
-+ accesskey="&syncedTabs.context.copy.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-copy"
+ id="syncedTabsCopySelected"/>
+ <menuseparator/>
-+ <menuitem label="&syncedTabs.context.openAllInTabs.label;"
-+ accesskey="&syncedTabs.context.openAllInTabs.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-open-all-in-tabs"
+ id="syncedTabsOpenAllInTabs"/>
-+ <menuitem label="&syncedTabs.context.managedevices.label;"
-+ accesskey="&syncedTabs.context.managedevices.accesskey;"
++ <menuitem data-lazy-l10n-id="synced-tabs-context-manage-devices"
+ id="syncedTabsManageDevices"
+ oncommand="gSync.openDevicesManagementPage('syncedtabs-sidebar');"/>
+ <menuitem label="&syncSyncNowItem.label;"
@@ -704,7 +691,7 @@
+ id="syncedTabsRefreshFilter"/>
+ </menupopup>
+
-+ <hbox id="statuspanel" inactive="true" layer="true">
++ <hbox id="statuspanel" inactive="true" renderroot="content">
+ <hbox id="statuspanel-inner">
+ <label id="statuspanel-label"
+ role="status"
@@ -876,16 +863,6 @@
+ placeholder="&urlbar.placeholder2;"
+ defaultPlaceholder="&urlbar.placeholder2;"
+ focused="true"
-+ type="autocomplete"
-+ quantumbar="false"
-+ autocompletesearch="unifiedcomplete"
-+ autocompletesearchparam="enable-actions"
-+ autocompletepopup="PopupAutoCompleteRichResult"
-+ completeselectedindex="true"
-+ tabscrolling="true"
-+ newlines="stripsurroundingwhitespace"
-+ ontextentered="this.handleCommand(param);"
-+ ontextreverted="return this.handleRevert();"
+ pageproxystate="invalid">
+ <!-- Use onclick instead of normal popup= syntax since the popup
+ code fires onmousedown, and hence eats our favicon drag events. -->
@@ -928,6 +905,8 @@
+ tooltiptext="&urlbar.flashPluginBlocked.tooltip;"/>
+ <image data-permission-id="midi" class="blocked-permission-icon midi-icon" role="button"
+ tooltiptext="&urlbar.midiBlocked.tooltip;"/>
++ <image data-permission-id="install" class="blocked-permission-icon install-icon" role="button"
++ tooltiptext="&urlbar.installBlocked.tooltip;"/>
+ </box>
+ <box id="notification-popup-box"
+ hidden="true"
@@ -1339,7 +1318,7 @@
+
+ <hbox id="fullscr-toggler" hidden="true"/>
+
-+ <deck id="content-deck" flex="1">
++ <deck id="content-deck" flex="1" renderroot="content">
+ <hbox flex="1" id="browser">
+ <vbox id="browser-border-start" hidden="true" layer="true"/>
+ <vbox id="sidebar-box" hidden="true" class="chromeclass-extrachrome">
@@ -1372,10 +1351,12 @@
+ </vbox>
+ <vbox id="browser-border-end" hidden="true" layer="true"/>
+ </hbox>
++ <box id="customization-container" flex="1" hidden="true"><![CDATA[
+#include ../../components/customizableui/content/customizeMode.inc.xul
++ ]]></box>
+ </deck>
+
-+ <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true">
++ <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true" renderroot="content">
+ <html:div class="pointerlockfswarning-domain-text">
+ &fullscreenWarning.beforeDomain.label;
+ <html:span class="pointerlockfswarning-domain"/>
@@ -1394,7 +1375,7 @@
+ </html:button>
+ </html:div>
+
-+ <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true">
++ <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true" renderroot="content">
+ <html:div class="pointerlockfswarning-domain-text">
+ &pointerlockWarning.beforeDomain.label;
+ <html:span class="pointerlockfswarning-domain"/>
@@ -1405,42 +1386,26 @@
+ </html:div>
+ </html:div>
+
-+ <vbox id="browser-bottombox" layer="true">
++ <vbox id="browser-bottombox" layer="true" renderroot="content">
+ <!-- gNotificationBox will be added here lazily. -->
+ </vbox>
-+
+</window>
-diff --git a/browser/base/jar.mn b/browser/base/jar.mn
---- a/browser/base/jar.mn
-+++ b/browser/base/jar.mn
-@@ -28,16 +28,18 @@ browser.jar:
- content/browser/aboutTabCrashed.js (content/aboutTabCrashed.js)
- content/browser/aboutTabCrashed.xhtml (content/aboutTabCrashed.xhtml)
- * content/browser/browser.css (content/browser.css)
- content/browser/browser.js (content/browser.js)
- #ifdef MOZ_BROWSER_XHTML
- * content/browser/browser.xhtml (content/browser.xhtml)
+diff -r 428161c3b959 -r 54d41b0033b8 browser/base/jar.mn
+--- a/browser/base/jar.mn Mon Jun 17 09:02:06 2019 +0200
++++ b/browser/base/jar.mn Fri May 31 12:55:51 2019 +0200
+@@ -33,6 +33,8 @@
+ #else
+ * content/browser/browser.xul (content/browser.xul)
#endif
- * content/browser/browser.xul (content/browser.xul)
+* content/browser/browser-kde.xul (content/browser-kde.xul)
+% override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
content/browser/browser-addons.js (content/browser-addons.js)
content/browser/browser-allTabsMenu.js (content/browser-allTabsMenu.js)
content/browser/browser-captivePortal.js (content/browser-captivePortal.js)
- content/browser/browser-ctrlTab.js (content/browser-ctrlTab.js)
- content/browser/browser-customization.js (content/browser-customization.js)
- content/browser/browser-data-submission-info-bar.js (content/browser-data-submission-info-bar.js)
- content/browser/browser-compacttheme.js (content/browser-compacttheme.js)
- content/browser/browser-contentblocking.js (content/browser-contentblocking.js)
-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
-@@ -288,16 +288,23 @@ var gMainPane = {
- this._backoffIndex++ : backoffTimes.length - 1]);
- };
-
- window.setTimeout(() => {
- window.requestIdleCallback(pollForDefaultBrowser);
+diff -r 428161c3b959 -r 54d41b0033b8 browser/components/preferences/in-content/main.js
+--- a/browser/components/preferences/in-content/main.js Mon Jun 17 09:02:06 2019 +0200
++++ b/browser/components/preferences/in-content/main.js Fri May 31 12:55:51 2019 +0200
+@@ -294,6 +294,13 @@
}, backoffTimes[this._backoffIndex]);
}
@@ -1454,17 +1419,7 @@
this.initBrowserContainers();
this.buildContentProcessCountMenuList();
- let performanceSettingsLink = document.getElementById("performanceSettingsLearnMore");
- let performanceSettingsUrl = Services.urlFormatter.formatURLPref("app.support.baseURL") + "performance";
- performanceSettingsLink.setAttribute("href", performanceSettingsUrl);
-
- this.updateDefaultPerformanceSettingsPref();
-@@ -1025,16 +1032,27 @@ var gMainPane = {
- // Reset exponential backoff delay time in order to do visual update in pollForDefaultBrowser.
- this._backoffIndex = 0;
-
- let shellSvc = getShellService();
- if (!shellSvc)
+@@ -983,6 +990,17 @@
return;
try {
shellSvc.setDefaultBrowser(true, false);
@@ -1482,20 +1437,10 @@
} catch (ex) {
Cu.reportError(ex);
return;
- }
-
- let selectedIndex = shellSvc.isDefaultBrowser(false, true) ? 1 : 0;
- document.getElementById("setDefaultPane").selectedIndex = selectedIndex;
- }
-diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
---- a/browser/components/shell/moz.build
-+++ b/browser/components/shell/moz.build
-@@ -29,16 +29,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
- ]
- elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
- XPIDL_SOURCES += [
- 'nsIGNOMEShellService.idl',
- ]
+diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/moz.build
+--- a/browser/components/shell/moz.build Mon Jun 17 09:02:06 2019 +0200
++++ b/browser/components/shell/moz.build Fri May 31 12:55:51 2019 +0200
+@@ -33,6 +33,8 @@
SOURCES += [
'nsGNOMEShellService.cpp',
@@ -1504,15 +1449,9 @@
]
elif CONFIG['OS_ARCH'] == 'WINNT':
SOURCES += [
- 'nsWindowsShellService.cpp',
- ]
- LOCAL_INCLUDES += [
- '../../../other-licenses/nsis/Contrib/CityHash/cityhash',
- ]
-diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsKDEShellService.cpp
+diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsKDEShellService.cpp
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/browser/components/shell/nsKDEShellService.cpp Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,150 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@@ -1664,10 +1603,9 @@
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
+}
+
-diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsKDEShellService.h
+diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsKDEShellService.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/browser/components/shell/nsKDEShellService.h Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,32 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@@ -1701,10 +1639,9 @@
+};
+
+#endif // nskdeshellservice_h____
-diff --git a/browser/components/shell/nsUnixShellService.cpp b/browser/components/shell/nsUnixShellService.cpp
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsUnixShellService.cpp
+diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsUnixShellService.cpp
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/browser/components/shell/nsUnixShellService.cpp Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,22 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@@ -1728,10 +1665,9 @@
+ return nsKDEShellServiceConstructor( aOuter, aIID, aResult );
+ return nsGNOMEShellServiceConstructor( aOuter, aIID, aResult );
+}
-diff --git a/browser/components/shell/nsUnixShellService.h b/browser/components/shell/nsUnixShellService.h
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsUnixShellService.h
+diff -r 428161c3b959 -r 54d41b0033b8 browser/components/shell/nsUnixShellService.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/browser/components/shell/nsUnixShellService.h Fri May 31 12:55:51 2019 +0200
@@ -0,0 +1,15 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
@@ -1748,15 +1684,10 @@
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
+
+#endif // nsunixshellservice_h____
-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
-@@ -286,16 +286,18 @@
- @RESPATH@/browser/defaults/settings/pinning
- @RESPATH@/browser/defaults/settings/main
-
- ; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)
- ; Technically this is an app pref file, but we are keeping it in the original
+diff -r 428161c3b959 -r 54d41b0033b8 browser/installer/package-manifest.in
+--- a/browser/installer/package-manifest.in Mon Jun 17 09:02:06 2019 +0200
++++ b/browser/installer/package-manifest.in Fri May 31 12:55:51 2019 +0200
+@@ -299,6 +299,8 @@
; gre location for now.
@RESPATH@/defaults/pref/channel-prefs.js
@@ -1765,8 +1696,3 @@
; Services (gre) prefs
@RESPATH@/defaults/pref/services-sync.js
- ; [Layout Engine Resources]
- ; Style Sheets, Graphics and other Resources used by the layout engine.
- @RESPATH@/res/EditorOverride.css
- @RESPATH@/res/contenteditable.css
- @RESPATH@/res/designmode.css
--- a/mozilla-aarch64-startup-crash.patch Mon Jul 08 12:56:52 2019 +0200
+++ b/mozilla-aarch64-startup-crash.patch Wed Jul 10 08:14:34 2019 +0200
@@ -1,23 +1,22 @@
# HG changeset patch
-# Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10
-# Parent 6dd2311796da4e15115fd04b181313ae62754317
-Bug 991344 - Rpi3: Firefox crashes after a few seconds of usage
+# User msirringhaus@suse.de
+# Date 1558442998 -7200
+# Tue May 21 14:49:58 2019 +0200
+# Node ID 386083b58d8558141901d796ec6919a4aba7ad3a
+# Parent 835641be7eb9408aa1eff0d38b37f6c523d2ef98
+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 --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
---- a/netwerk/base/nsIOService.cpp
-+++ b/netwerk/base/nsIOService.cpp
-@@ -975,17 +975,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;
+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 @@
}
}
+#if defined(__aarch64__)
+ if (result) {
-+ channel.forget(result);
++ channel.forget(result);
+ }
+#else
channel.forget(result);
@@ -25,8 +24,3 @@
return NS_OK;
}
- NS_IMETHODIMP
- nsIOService::NewChannelFromURIWithProxyFlags(
- nsIURI *aURI, nsIURI *aProxyURI, uint32_t aProxyFlags,
- nsINode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
- nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-bmo1005535.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User Steve Singer <steve@ssinger.info>
+# Date 1558451540 -7200
+# Tue May 21 17:12:20 2019 +0200
+# Node ID 433beec63e6b5f409683af20a0c1ab137cc7bfad
+# Parent 42c99b59a87b904063bad3193f10c51d068d2eac
+Bug 1005535 - Get skia GPU building on big endian.
+
+diff -r 42c99b59a87b -r 433beec63e6b gfx/skia/skia/include/private/GrColor.h
+--- a/gfx/skia/skia/include/private/GrColor.h Wed Jun 05 08:48:08 2019 +0200
++++ b/gfx/skia/skia/include/private/GrColor.h Tue May 21 17:12:20 2019 +0200
+@@ -63,7 +63,7 @@
+ * Since premultiplied means that alpha >= color, we construct a color with
+ * each component==255 and alpha == 0 to be "illegal"
+ */
+-#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A))
++#define GrColor_ILLEGAL ((uint32_t)(~(0xFF << GrColor_SHIFT_A)))
+
+ /** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */
+ static inline float GrNormalizeByteToFloat(uint8_t value) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-gcc-internal-compiler-error.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,29 @@
+# HG changeset patch
+# User Wolfgang Rosenauer <wr@rosenauer.org>
+# Parent 88217eaa8804fc699c02411b1b5377ef7eb5d2db
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90756
+https://bugzilla.mozilla.org/show_bug.cgi?id=1562886
+
+diff --git a/gfx/skia/skia/third_party/skcms/src/Transform_inl.h b/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
+--- a/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
++++ b/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
+@@ -554,17 +554,18 @@ SI void sample_clut_16(const skcms_A2B*
+ *r = cast<F>((rgb >> 0) & 0xffff) * (1/65535.0f);
+ *g = cast<F>((rgb >> 16) & 0xffff) * (1/65535.0f);
+ *b = cast<F>((rgb >> 32) & 0xffff) * (1/65535.0f);
+ #endif
+ }
+
+ // GCC 7.2.0 hits an internal compiler error with -finline-functions (or -O3)
+ // when targeting MIPS 64, I think attempting to inline clut() into exec_ops().
+-#if 1 && defined(__GNUC__) && !defined(__clang__) && defined(__mips64)
++// s390x and i*86 also hit this with GCC 7.4 and -O2
++#if 1 && defined(__GNUC__) && !defined(__clang__) && ( defined(__mips64) || defined(__s390x__) || defined( __i586__ ) || defined( __i486__ ) || defined( __i386__ ))
+ #define MAYBE_NOINLINE __attribute__((noinline))
+ #else
+ #define MAYBE_NOINLINE
+ #endif
+
+ MAYBE_NOINLINE
+ static void clut(const skcms_A2B* a2b, F* r, F* g, F* b, F a) {
+ const int dim = (int)a2b->input_channels;
--- a/mozilla-kde.patch Mon Jul 08 12:56:52 2019 +0200
+++ b/mozilla-kde.patch Wed Jul 10 08:14:34 2019 +0200
@@ -1,5 +1,9 @@
# HG changeset patch
-# Parent cafacdb0b7c50666e5dcc927684a23e8733206a5
+# User msirringhaus@suse.de
+# Date 1559294891 -7200
+# Fri May 31 11:28:11 2019 +0200
+# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
+# Parent f11c2d7239c0caa4dc74272716d9e30ced1a1ca3
Description: Add KDE integration to Firefox (toolkit parts)
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
Author: Lubos Lunak <lunak@suse.com>
@@ -27,7 +31,7 @@
#ifdef XP_WIN
# include "windows.h"
#endif
-@@ -4493,25 +4494,37 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
+@@ -4507,25 +4508,37 @@ static nsresult pref_ReadDefaultPrefs(co
// application pref files for backwards compatibility.
static const char* specialFiles[] = {
#if defined(XP_MACOSX)
@@ -65,7 +69,7 @@
// Load jar:$app/omni.jar!/defaults/preferences/*.js
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4559,17 +4572,17 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
+@@ -4573,17 +4586,17 @@ static nsresult pref_ReadDefaultPrefs(co
}
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@@ -183,18 +187,18 @@
+* 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/menu.xml (widgets/menu.xml)
content/global/bindings/popup.xml (widgets/popup.xml)
- content/global/bindings/radio.xml (widgets/radio.xml)
content/global/bindings/richlistbox.xml (widgets/richlistbox.xml)
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,507 @@
+@@ -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
@@ -495,6 +499,10 @@
+ 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;
@@ -646,19 +654,7 @@
+ event.initEvent("dialog" + aDlgType, true, true);
+
+ // handle dom event handlers
-+ var noCancel = this.dispatchEvent(event);
-+
-+ // handle any xml attribute event handlers
-+ var handler = this.getAttribute("ondialog" + aDlgType);
-+ if (handler != "") {
-+ var fn = new Function("event", handler);
-+ var returned = fn(event);
-+ // eslint-disable-next-line mozilla/no-compare-against-boolean-literals
-+ if (returned == false)
-+ noCancel = false;
-+ }
-+
-+ return noCancel;
++ return this.dispatchEvent(event);
+ ]]>
+ </body>
+ </method>
@@ -705,7 +701,7 @@
diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
--- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
+++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
-@@ -1030,30 +1030,60 @@ nsUnknownContentTypeDialog.prototype = {
+@@ -1042,30 +1042,60 @@ nsUnknownContentTypeDialog.prototype = {
if (params.handlerApp &&
params.handlerApp.executable &&
@@ -783,7 +779,7 @@
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -15,16 +15,17 @@
+@@ -14,16 +14,17 @@
#include "nsPrintfCString.h"
#include "nsNetCID.h"
#include "nsNetUtil.h"
@@ -801,10 +797,10 @@
NS_DECL_ISUPPORTS
NS_DECL_NSISYSTEMPROXYSETTINGS
-@@ -44,16 +45,18 @@ class nsUnixSystemProxySettings final :
- nsACString& aResult);
- nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost,
- int32_t aPort, nsACString& aResult);
+@@ -37,16 +38,18 @@ class nsUnixSystemProxySettings final :
+ nsCOMPtr<nsIGSettingsCollection> mProxySettings;
+ nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
+ mSchemeProxySettings;
nsresult GetProxyFromGSettings(const nsACString& aScheme,
const nsACString& aHost, int32_t aPort,
nsACString& aResult);
@@ -820,7 +816,7 @@
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
// dbus prevents us from being threadsafe, but this routine should not block
// anyhow
-@@ -487,22 +490,51 @@ nsresult nsUnixSystemProxySettings::GetP
+@@ -382,21 +385,50 @@ nsresult nsUnixSystemProxySettings::GetP
return NS_OK;
}
@@ -836,7 +832,6 @@
nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
if (NS_SUCCEEDED(rv)) return rv;
}
- if (mGConf) return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
}
@@ -943,7 +938,7 @@
+ Display* dpy = XOpenDisplay( NULL );
+ if( dpy == NULL )
+ return false;
-+ Atom kde_full_session = XInternAtom( dpy, "KDE_FULL_SESSION", True );
++ Atom kde_full_session = XInternAtom( dpy, "KDE_FULL_SESSION", true );
+ bool kde = false;
+ if( kde_full_session != None )
+ {
@@ -1300,7 +1295,8 @@
diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandler/HandlerServiceParent.cpp
--- a/uriloader/exthandler/HandlerServiceParent.cpp
+++ b/uriloader/exthandler/HandlerServiceParent.cpp
-@@ -1,16 +1,16 @@
+@@ -1,17 +1,17 @@
+ #include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/Logging.h"
#include "HandlerServiceParent.h"
#include "nsIHandlerService.h"
@@ -1318,13 +1314,13 @@
using mozilla::dom::RemoteHandlerApp;
namespace {
-@@ -246,17 +246,17 @@ mozilla::ipc::IPCResult HandlerServicePa
- handlerSvc->Exists(info, exists);
- return IPC_OK();
- }
-
- mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocol(
+@@ -282,17 +282,17 @@ mozilla::ipc::IPCResult HandlerServicePa
+ mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocolOS(
const nsCString& aProtocolScheme, bool* aHandlerExists) {
+ if (aProtocolScheme.Length() > MAX_SCHEME_LENGTH) {
+ *aHandlerExists = false;
+ return IPC_OK();
+ }
#ifdef MOZ_WIDGET_GTK
// Check the GNOME registry for a protocol handler
- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
@@ -1335,12 +1331,31 @@
return IPC_OK();
}
- mozilla::ipc::IPCResult HandlerServiceParent::RecvGetTypeFromExtension(
- const nsCString& aFileExtension, nsCString* type) {
+ /*
+ * Check if a handler exists for the provided protocol. Check the datastore
+@@ -311,17 +311,17 @@ mozilla::ipc::IPCResult HandlerServicePa
+ nsCOMPtr<nsIExternalProtocolService> protoSvc =
+ do_GetService(NS_EXTERNALPROTOCOLSERVICE_CONTRACTID, &rv);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ *aHandlerExists = false;
+ return IPC_OK();
+ }
+ rv = protoSvc->ExternalProtocolHandlerExists(aProtocolScheme.get(),
+ aHandlerExists);
+-
++##
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ *aHandlerExists = false;
+ }
+ #else
+ MOZ_RELEASE_ASSERT(false, "No implementation on this platform.");
+ *aHandlerExists = false;
+ #endif
+ return IPC_OK();
diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
--- a/uriloader/exthandler/moz.build
+++ b/uriloader/exthandler/moz.build
-@@ -80,17 +80,19 @@ else:
+@@ -83,17 +83,19 @@ else:
SOURCES += [
osdir + '/nsOSHelperAppService.cpp',
]
@@ -1360,7 +1375,7 @@
'android/nsExternalURLHandlerService.cpp',
'android/nsMIMEInfoAndroid.cpp',
]
-@@ -130,16 +132,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -133,16 +135,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
@@ -1624,13 +1639,13 @@
+#include "nsKDEUtils.h"
+#endif
- nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI *aURI) {
+ nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI* aURI) {
- return nsGNOMERegistry::LoadURL(aURI);
+ return nsCommonRegistry::LoadURL(aURI);
}
NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) {
+ nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) {
// if mDefaultApplication is set, it means the application has been set from
// either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
// give the GNOME answer.
@@ -1794,7 +1809,7 @@
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
-@@ -121,16 +121,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -124,16 +124,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul'
@@ -1849,14 +1864,14 @@
// bug 1184009
#define MAX_PREVIEW_SOURCE_SIZE 4096
- nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
+ nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
mAllowURLs = !!(aFilterMask & filterAllowURLs);
return nsBaseFilePicker::AppendFilters(aFilterMask);
}
NS_IMETHODIMP
- nsFilePicker::AppendFilter(const nsAString &aTitle, const nsAString &aFilter) {
+ nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter) {
if (aFilter.EqualsLiteral("..apps")) {
// No platform specific thing we can do here, really....
- return NS_OK;
@@ -1871,12 +1886,12 @@
mFilters.AppendElement(filter);
mFilterNames.AppendElement(name);
-@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t *aRe
+@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
return NS_OK;
}
NS_IMETHODIMP
- nsFilePicker::Open(nsIFilePickerShownCallback *aCallback) {
+ nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) {
// Can't show two dialogs concurrently with the same filepicker
if (mRunning) return NS_ERROR_NOT_AVAILABLE;
@@ -1906,12 +1921,12 @@
nsCString title;
title.Adopt(ToNewUTF8String(mTitle));
- GtkWindow *parent_widget =
+ GtkWindow* parent_widget =
GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
-@@ -572,16 +599,240 @@ void nsFilePicker::Done(void *file_choos
+@@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos
mCallback->Done(result);
mCallback = nullptr;
} else {
@@ -2145,13 +2160,13 @@
+ }
+
// All below functions available as of GTK 3.20+
- void *nsFilePicker::GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+ void* nsFilePicker::GtkFileChooserNew(const gchar* title, GtkWindow* parent,
GtkFileChooserAction action,
- const gchar *accept_label) {
+ const gchar* accept_label) {
static auto sGtkFileChooserNativeNewPtr =
- (void *(*)(const gchar *, GtkWindow *, GtkFileChooserAction,
- const gchar *,
- const gchar *))dlsym(RTLD_DEFAULT,
+ (void* (*)(const gchar*, GtkWindow*, GtkFileChooserAction, const gchar*,
+ const gchar*))dlsym(RTLD_DEFAULT,
+ "gtk_file_chooser_native_new");
diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
--- a/widget/gtk/nsFilePicker.h
+++ b/widget/gtk/nsFilePicker.h
@@ -2162,7 +2177,7 @@
nsTArray<nsCString> mFilterNames;
private:
- static nsIFile *mPrevDisplayDirectory;
+ static nsIFile* mPrevDisplayDirectory;
+ bool kdeRunning();
+ bool getKdeRunning();
@@ -2170,12 +2185,12 @@
+ NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
+ nsCString kdeMakeFilter( int index );
+
- void *GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+ void* GtkFileChooserNew(const gchar* title, GtkWindow* parent,
GtkFileChooserAction action,
- const gchar *accept_label);
- void GtkFileChooserShow(void *file_chooser);
- void GtkFileChooserDestroy(void *file_chooser);
- void GtkFileChooserSetModal(void *file_chooser, GtkWindow *parent_widget,
+ const gchar* accept_label);
+ void GtkFileChooserShow(void* file_chooser);
+ void GtkFileChooserDestroy(void* file_chooser);
+ void GtkFileChooserSetModal(void* file_chooser, GtkWindow* parent_widget,
gboolean modal);
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
@@ -2199,7 +2214,7 @@
int argc;
bool ischrome;
-@@ -392,16 +393,17 @@ void ParseManifest(NSLocationType aType,
+@@ -393,16 +394,17 @@ void ParseManifest(NSLocationType aType,
NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
NS_NAMED_LITERAL_STRING(kApplication, "application");
@@ -2217,7 +2232,7 @@
NS_NAMED_LITERAL_STRING(kMain, "main");
NS_NAMED_LITERAL_STRING(kContent, "content");
-@@ -447,39 +449,44 @@ void ParseManifest(NSLocationType aType,
+@@ -448,39 +450,44 @@ void ParseManifest(NSLocationType aType,
CopyUTF8toUTF16(s, abi);
abi.Insert(char16_t('_'), 0);
abi.Insert(osTarget, 0);
@@ -2262,7 +2277,7 @@
process = kMain;
}
-@@ -566,25 +573,27 @@ void ParseManifest(NSLocationType aType,
+@@ -567,25 +574,27 @@ void ParseManifest(NSLocationType aType,
TriState stOsVersion = eUnspecified;
TriState stOs = eUnspecified;
TriState stABI = eUnspecified;
@@ -2290,7 +2305,7 @@
continue;
}
-@@ -621,17 +630,17 @@ void ParseManifest(NSLocationType aType,
+@@ -622,17 +631,17 @@ void ParseManifest(NSLocationType aType,
}
LogMessageWithContext(
@@ -2312,7 +2327,7 @@
diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
--- a/xpcom/components/moz.build
+++ b/xpcom/components/moz.build
-@@ -66,14 +66,15 @@ LOCAL_INCLUDES += [
+@@ -66,16 +66,17 @@ LOCAL_INCLUDES += [
'!..',
'../base',
'../build',
@@ -2327,7 +2342,9 @@
if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
CXXFLAGS += CONFIG['TK_CFLAGS']
- include('/ipc/chromium/chromium-config.mozbuild')
+ if CONFIG['MOZ_LAYOUT_DEBUGGER']:
+ DEFINES['MOZ_LAYOUT_DEBUGGER'] = True
+
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
--- a/xpcom/io/nsLocalFileUnix.cpp
+++ b/xpcom/io/nsLocalFileUnix.cpp
--- a/mozilla-nongnome-proxies.patch Mon Jul 08 12:56:52 2019 +0200
+++ b/mozilla-nongnome-proxies.patch Wed Jul 10 08:14:34 2019 +0200
@@ -1,20 +1,19 @@
-From: Wolfgang Rosenauer
-Subject: Do not use gconf for proxy settings if not running within Gnome
-
+# HG changeset patch
+# User Wolfgang Rosenauer
+# Date 1558442915 -7200
+# Tue May 21 14:48:35 2019 +0200
+# Node ID 6bcf2dfebc1ea2aa34e5cc61152709fc8e409dc5
+# Parent 4c434d19d03d5461e54fa22dfb82eaed4cd6631b
+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 --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
-@@ -57,24 +57,27 @@ NS_IMETHODIMP
- nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
- // dbus prevents us from being threadsafe, but this routine should not block
- // anyhow
- *aMainThreadOnly = true;
- return NS_OK;
+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 @@
}
void nsUnixSystemProxySettings::Init() {
@@ -23,25 +22,14 @@
- mGSettings->GetCollectionForSchema(
- NS_LITERAL_CSTRING("org.gnome.system.proxy"),
- getter_AddRefs(mProxySettings));
-- }
-- if (!mProxySettings) {
-- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
-+ // only use GSettings if that is a GNOME session
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
+ if (sessionType && !strcmp(sessionType, "gnome")) {
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+ if (mGSettings) {
-+ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
-+ getter_AddRefs(mProxySettings));
-+ }
-+ if (!mProxySettings) {
-+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
++ mGSettings->GetCollectionForSchema(
++ NS_LITERAL_CSTRING("org.gnome.system.proxy"),
++ getter_AddRefs(mProxySettings));
+ }
}
}
- bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) {
- nsAutoCString mode;
- return NS_SUCCEEDED(mGConf->GetString(
- NS_LITERAL_CSTRING("/system/proxy/mode"), mode)) &&
- mode.EqualsASCII(aMode);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-ppc-altivec_static_inline.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1558452418 -7200
+# Tue May 21 17:26:58 2019 +0200
+# Node ID 6cd963b6c82ea6629aaf4050851789b78f310338
+# Parent 602e92722e765a3c238d3b96b26c0c8063b5eeb4
+imported patch mozilla-ppc-altivec_static_inline.patch
+
+diff -r 602e92722e76 -r 6cd963b6c82e gfx/qcms/transform-altivec.c
+--- a/gfx/qcms/transform-altivec.c Tue May 21 17:26:48 2019 +0200
++++ b/gfx/qcms/transform-altivec.c Tue May 21 17:26:58 2019 +0200
+@@ -30,7 +30,7 @@
+ static const ALIGN float floatScaleX4 = FLOATSCALE;
+ static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
+
+-inline vector float load_aligned_float(float *dataPtr)
++static inline vector float load_aligned_float(float *dataPtr)
+ {
+ vector float data = vec_lde(0, dataPtr);
+ vector unsigned char moveToStart = vec_lvsl(0, dataPtr);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-reduce-rust-debuginfo.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,34 @@
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1560754926 -7200
+# Mon Jun 17 09:02:06 2019 +0200
+# Node ID 428161c3b9599083e1b8710eda1760f1f707ab11
+# Parent 6cd963b6c82ea6629aaf4050851789b78f310338
+#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
+# firefox 63 it started happening frequently on arm64 and ppc64el too.
+
+diff -r 6cd963b6c82e -r 428161c3b959 build/moz.configure/toolchain.configure
+--- a/build/moz.configure/toolchain.configure Tue May 21 17:26:58 2019 +0200
++++ b/build/moz.configure/toolchain.configure Mon Jun 17 09:02:06 2019 +0200
+@@ -1865,8 +1865,8 @@
+ return '1' if moz_optimize.optimize else '0'
+
+
+-@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols')
+-def rust_compile_flags(opt_level, debug_rust, debug_symbols):
++@depends(rustc_opt_level, debug_rust, '--enable-debug-symbols', host)
++def rust_compile_flags(opt_level, debug_rust, debug_symbols, host):
+ # Cargo currently supports only two interesting profiles for building:
+ # development and release. Those map (roughly) to --enable-debug and
+ # --disable-debug in Gecko, respectively.
+@@ -1889,6 +1889,8 @@
+
+ if debug_symbols:
+ debug_info = '2'
++ if host.bitness == 32 or host.cpu == 'aarch64' or host.cpu == 'ppc64':
++ debug_info = '1'
+
+ opts = []
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-s390-bigendian.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1558452126 -7200
+# Tue May 21 17:22:06 2019 +0200
+# Node ID a3cc550d25e3a04d906f516928cbcbe50efd585e
+# Parent 433beec63e6b5f409683af20a0c1ab137cc7bfad
+[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 @@
+ # 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.
+- ICU_DATA_FILE="icudt${version}l.dat"
++ ICU_DATA_FILE="icudt${version}b.dat"
+ fi
+
+ AC_SUBST(MOZ_ICU_VERSION)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-s390-context.patch Wed Jul 10 08:14:34 2019 +0200
@@ -0,0 +1,36 @@
+# HG changeset patch
+# User msirringhaus@suse.de
+# Date 1558452408 -7200
+# Tue May 21 17:26:48 2019 +0200
+# Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4
+# Parent a3cc550d25e3a04d906f516928cbcbe50efd585e
+[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 @@
+ # define R01_sig(p) ((p)->uc_mcontext.gp_regs[1])
+ # define R32_sig(p) ((p)->uc_mcontext.gp_regs[32])
+ # endif
++# if defined(__linux__) && defined(__s390x__)
++# define GR_sig(p,x) ((p)->uc_mcontext.gregs[x])
++# define PSWa_sig(p) ((p)->uc_mcontext.psw.addr)
++# endif
+ #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 PC_sig(p) R32_sig(p)
+ # define SP_sig(p) R01_sig(p)
+ # define FP_sig(p) R01_sig(p)
++#elif defined(__s390x__)
++# define PC_sig(p) PSWa_sig(p)
++# define SP_sig(p) GR_sig(p, 15)
++# define FP_sig(p) GR_sig(p, 11)
+ #endif
+
++
+ static void SetContextPC(CONTEXT* context, uint8_t* pc) {
+ #ifdef PC_sig
+ *reinterpret_cast<uint8_t**>(&PC_sig(context)) = pc;
--- a/series Mon Jul 08 12:56:52 2019 +0200
+++ b/series Wed Jul 10 08:14:34 2019 +0200
@@ -8,6 +8,12 @@
mozilla-cubeb-noreturn.patch
mozilla-fix-aarch64-libopus.patch
mozilla-disable-wasm-emulate-arm-unaligned-fp-access.patch
+mozilla-gcc-internal-compiler-error.patch
+mozilla-s390-context.patch
+mozilla-s390-bigendian.patch
+mozilla-reduce-rust-debuginfo.patch
+mozilla-ppc-altivec_static_inline.patch
+mozilla-bmo1005535.patch
# Firefox patches
firefox-kde.patch