- Mozilla Thunderbird 68.1.0

add-on is required for this account type. IMAP still exists as
    alternative.
  * several bugfixes
  MFSA 2019-30
  * CVE-2019-11739 (bmo#1571481)
    Covert Content Attack on S/MIME encryption using a crafted
    multipart/alternative message
  * CVE-2019-11746 (bmo#1564449)
    Use-after-free while manipulating video
  * CVE-2019-11744 (bmo#1562033)
    XSS by breaking out of title and textarea elements using innerHTML
  * CVE-2019-11742 (bmo#1559715)
    Same-origin policy violation with SVG filters and canvas to steal
  * CVE-2019-11752 (bmo#1501152)
    Use-after-free while extracting a key value in IndexedDB
  * CVE-2019-11743 (bmo#1560495)
    Cross-origin access to unload event attributes
  * CVE-2019-11740 (bmo#1563133,bmo#1573160)
    Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox
    ESR 60.9, Thunderbird 68.1, and Thunderbird 60.9
- removed upstreamed fix-build-after-y2038-changes-in-glibc.patch
- added thunderbird-locale-build.patch to fix locale build

- Add -L flag to the stat call for checking file size of %{SOURCE4}.
- Add fix-missing-return-warning.patch to silence a compiler warning.

- Mozilla Thunderbird 68.0
  * based on Firefox ESR 68
  * File link attachments can now be linked to again instead of

OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaThunderbird?expand=0&rev=483
This commit is contained in:
Wolfgang Rosenauer 2019-09-13 20:15:12 +00:00 committed by Git OBS Bridge
parent b26a281145
commit 08fe2a30d3
24 changed files with 757 additions and 936 deletions

View File

@ -1,26 +1,69 @@
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Sep 6 12:09:27 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org> Tue Sep 10 07:33:52 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
- Mozilla Thunderbird 60.9.0 - Mozilla Thunderbird 68.1.0
* Offer to configure Exchange accounts for Office365. A third-party * Offer to configure Exchange accounts for Office365. A third-party
add-on is required for this account type. IMAP still exists as alternative. add-on is required for this account type. IMAP still exists as
MFSA 2019-27 alternative.
* Use-after-free while manipulating video * several bugfixes
CVE-2019-11746 (bmo#1564449) MFSA 2019-30
* XSS by breaking out of title and textarea elements using innerHTML * CVE-2019-11739 (bmo#1571481)
CVE-2019-11744 (bmo#1562033) Covert Content Attack on S/MIME encryption using a crafted
* Same-origin policy violation with SVG filters and canvas to steal multipart/alternative message
* CVE-2019-11746 (bmo#1564449)
Use-after-free while manipulating video
* CVE-2019-11744 (bmo#1562033)
XSS by breaking out of title and textarea elements using innerHTML
* CVE-2019-11742 (bmo#1559715)
Same-origin policy violation with SVG filters and canvas to steal
cross-origin images cross-origin images
CVE-2019-11742 (bmo#1559715) * CVE-2019-11752 (bmo#1501152)
* Use-after-free while extracting a key value in IndexedDB Use-after-free while extracting a key value in IndexedDB
CVE-2019-11752 (bmo#1501152) * CVE-2019-11743 (bmo#1560495)
* Sandbox escape through Firefox Sync Cross-origin access to unload event attributes
CVE-2019-9812 (bmo#1538008, bmo#1538015) * CVE-2019-11740 (bmo#1563133,bmo#1573160)
* Cross-origin access to unload event attributes Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox
CVE-2019-11743 (bmo#1560495) ESR 60.9, Thunderbird 68.1, and Thunderbird 60.9
Navigation-Timing Level 2 specification - removed upstreamed fix-build-after-y2038-changes-in-glibc.patch
* Memory safety bugs fixed in Firefox 69, Firefox ESR 68.1, and Firefox ESR 60.9 - added thunderbird-locale-build.patch to fix locale build
CVE-2019-11740 (bmo#1563133, bmo#1573160)
-------------------------------------------------------------------
Fri Aug 30 07:25:15 UTC 2019 - Manfred Hollstein <manfred.h@gmx.net>
- Add -L flag to the stat call for checking file size of %{SOURCE4}.
- Add fix-missing-return-warning.patch to silence a compiler warning.
-------------------------------------------------------------------
Wed Aug 28 12:27:34 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
- Mozilla Thunderbird 68.0
* based on Firefox ESR 68
* File link attachments can now be linked to again instead of
uploading them again
* Mark all folders of an account as read
* Run filters periodically. Improved filter logging
* OAuth2 authentication for Yandex
* Language packs can now be selected in the Advanced Options.
Preference intl.multilingual.enabled needs to be set (and possily
also extensions.langpacks.signatures.required needs to be set to false)
* Added a policy engine that allows customized Thunderbird deployments
in enterprise environments, using Windows Group Policy or a
cross-platform JSON file
* TCP keepalive for IMAP protocol
* Full Unicode support for MAPI interfaces: New support for MAPISendMailW
* Calendar: Time zone data can now include past and future changes.
All known time zone changes from 2018 to 2022 are included.
* Chat: In each conversation an individual spellcheck language can
be selected now
- removed obsolete patches
* mozilla-bmo1463035.patch
* mozilla-i586-domPrefs.patch
* mozilla-bmo1464766.patch
* mozilla-bmo1519629.patch
* mozilla-i586-DecoderDoctorLogger.patch
* mozilla-bmo1375074.patch
- added fix-build-after-y2038-changes-in-glibc.patch to fix build
in Tumbleweed (patch already upstream for next release)
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Aug 1 11:12:05 UTC 2019 - Tristan Miller <psychonaut@nothingisreal.com> Thu Aug 1 11:12:05 UTC 2019 - Tristan Miller <psychonaut@nothingisreal.com>

View File

@ -17,15 +17,44 @@
# #
%define mainversion 60.9.0 # changed with every update
%define major 68
%define mainver %major.1.0
%define version_postfix %{nil}
%define update_channel release %define update_channel release
%define releasedate 20190902145622 %define releasedate 20190909201201
%define source_prefix thunderbird-%{mainver}
# always build with GCC as SUSE Security Team requires that
# TODO: Deactivate this as the next step
%define clang_build 1
# PIE, full relro
%define build_hardened 1
%bcond_without mozilla_tb_kde4 %bcond_without mozilla_tb_kde4
%bcond_with mozilla_tb_valgrind %bcond_with mozilla_tb_valgrind
%bcond_without mozilla_tb_optimize_for_size %bcond_without mozilla_tb_optimize_for_size
Name: MozillaThunderbird # general build definitions
%define progname thunderbird
%define pkgname MozillaThunderbird
%define appname Thunderbird
%define progdir %{_prefix}/%_lib/%{progname}
%define gnome_dir %{_prefix}
%define desktop_file_name %{progname}
%define __provides_exclude ^lib.*\\.so.*$
%define __requires_exclude ^(libmoz.*|liblgpllibs.*|libxul.*|libldap.*|libldif.*|libprldap.*)$
%define localize 1
%ifarch %ix86 x86_64
%define crashreporter 1
%else
%define crashreporter 0
%endif
%define has_system_cairo 0
Name: %{pkgname}
BuildRequires: Mesa-devel BuildRequires: Mesa-devel
BuildRequires: alsa-devel BuildRequires: alsa-devel
BuildRequires: autoconf213 BuildRequires: autoconf213
@ -36,21 +65,22 @@ BuildRequires: gcc7-c++
%else %else
BuildRequires: gcc-c++ BuildRequires: gcc-c++
%endif %endif
BuildRequires: cargo BuildRequires: cargo >= 1.34
#BuildRequires: hunspell-devel #BuildRequires: hunspell-devel
BuildRequires: libXcomposite-devel BuildRequires: libXcomposite-devel
BuildRequires: libcurl-devel BuildRequires: libcurl-devel
BuildRequires: libidl-devel BuildRequires: libidl-devel
BuildRequires: libnotify-devel BuildRequires: libnotify-devel
BuildRequires: memory-constraints BuildRequires: memory-constraints
BuildRequires: mozilla-nspr-devel >= 4.19 BuildRequires: mozilla-nspr-devel >= 4.21
BuildRequires: mozilla-nss-devel >= 3.36.8 BuildRequires: mozilla-nss-devel >= 3.44.1
BuildRequires: python BuildRequires: nasm >= 2.13
BuildRequires: nodejs >= 8.11
BuildRequires: python-devel
BuildRequires: python2-xml BuildRequires: python2-xml
BuildRequires: rust >= 1.24 BuildRequires: python3 >= 3.5
%if 0%{?suse_version} <= 1500 BuildRequires: rust >= 1.34
BuildRequires: rust-std BuildRequires: rust-cbindgen >= 0.8.7
%endif
BuildRequires: startup-notification-devel BuildRequires: startup-notification-devel
BuildRequires: unzip BuildRequires: unzip
BuildRequires: update-desktop-files BuildRequires: update-desktop-files
@ -84,7 +114,7 @@ BuildRequires: clang4-devel
# therefore the Packman version is required # therefore the Packman version is required
# minimum version of libavcodec is 53 # minimum version of libavcodec is 53
Recommends: libavcodec-full >= 0.10.16 Recommends: libavcodec-full >= 0.10.16
Version: %{mainversion} Version: %{mainver}
Release: 0 Release: 0
Provides: MozillaThunderbird-devel = %version Provides: MozillaThunderbird-devel = %version
Obsoletes: MozillaThunderbird-devel < %version Obsoletes: MozillaThunderbird-devel < %version
@ -101,7 +131,7 @@ Summary: An integrated email, news feeds, chat, and newsgroups client
License: MPL-2.0 License: MPL-2.0
Group: Productivity/Networking/Email/Clients Group: Productivity/Networking/Email/Clients
Url: https://www.thunderbird.net/ Url: https://www.thunderbird.net/
Source: http://ftp.mozilla.org/pub/thunderbird/releases/%{version}/source/thunderbird-%{version}.source.tar.xz Source: http://ftp.mozilla.org/pub/%{progname}/releases/%{version}%{version_postfix}/source/%{progname}-%{version}%{version_postfix}.source.tar.xz
Source1: thunderbird.desktop Source1: thunderbird.desktop
Source3: mozilla.sh.in Source3: mozilla.sh.in
Source4: l10n-%{version}.tar.xz Source4: l10n-%{version}.tar.xz
@ -114,15 +144,11 @@ Source12: kde.js
Source13: https://ftp.mozilla.org/pub/thunderbird/releases/%{version}/source/thunderbird-%{version}.source.tar.xz.asc Source13: https://ftp.mozilla.org/pub/thunderbird/releases/%{version}/source/thunderbird-%{version}.source.tar.xz.asc
Source14: http://ftp.mozilla.org/pub/thunderbird/releases/%{version}/KEY#/%{name}.keyring Source14: http://ftp.mozilla.org/pub/thunderbird/releases/%{version}/KEY#/%{name}.keyring
# Gecko/Toolkit # Gecko/Toolkit
Patch2: mozilla-nongnome-proxies.patch Patch1: mozilla-nongnome-proxies.patch
Patch3: mozilla-kde.patch Patch2: mozilla-kde.patch
Patch6: mozilla-aarch64-startup-crash.patch Patch3: mozilla-aarch64-startup-crash.patch
Patch7: mozilla-bmo1375074.patch Patch4: fix-missing-return-warning.patch
Patch8: mozilla-bmo1464766.patch Patch5: thunderbird-locale-build.patch
Patch9: mozilla-i586-DecoderDoctorLogger.patch
Patch10: mozilla-i586-domPrefs.patch
Patch11: mozilla-bmo1463035.patch
Patch12: mozilla-bmo1519629.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: coreutils fileutils textutils /bin/sh PreReq: coreutils fileutils textutils /bin/sh
Recommends: libcanberra0 Recommends: libcanberra0
@ -137,17 +163,13 @@ ExcludeArch: ppc ppc64 s390 s390x
%define crashreporter 1 %define crashreporter 1
%endif %endif
%define has_system_cairo 0 %define has_system_cairo 0
%define localize 1
### build options end ### build options end
%define __provides_exclude ^lib.*\\.so.*$ %define __provides_exclude ^lib.*\\.so.*$
%define __requires_exclude ^(libmoz.*|liblgpllibs.*|libxul.*|libldap.*|libldif.*|libprldap.*)$ %define __requires_exclude ^(libmoz.*|liblgpllibs.*|libxul.*|libldap.*|libldif.*|libprldap.*)$
Requires: mozilla-nspr >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nspr) Requires: mozilla-nspr >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nspr)
Requires: mozilla-nss >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nss) Requires: mozilla-nss >= %(rpm -q --queryformat '%%{VERSION}' mozilla-nss)
Conflicts: thunderbird-esr Conflicts: thunderbird-esr
%define progname thunderbird
%define progdir %{_prefix}/%_lib/thunderbird
%define libgssapi libgssapi_krb5.so.2 %define libgssapi libgssapi_krb5.so.2
%define desktop_file_name thunderbird
%description %description
Thunderbird is a free, open-source, cross-platform application for Thunderbird is a free, open-source, cross-platform application for
@ -158,32 +180,31 @@ yet easy to use.
%if %localize %if %localize
%package translations-common %package translations-common
Summary: Common translations for MozillaThunderbird Summary: Common translations for %{appname}
Group: System/Localization Group: System/Localization
Provides: locale(%{name}:ar;ca;cs;da;de;el;en_GB;es_AR;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)
PreReq: %{name} = %{mainversion} Requires: %{name} = %{version}
Obsoletes: %{name}-translations < %{version}-%{release} Obsoletes: %{name}-translations < %{version}-%{release}
%description translations-common %description translations-common
This package contains several optional languages for the user interface This package contains several common languages for the user interface
of MozillaThunderbird. of %{appname}.
%package translations-other %package translations-other
Summary: Extra translations for MozillaThunderbird Summary: Extra translations for %{appname}
Group: System/Localization Group: System/Localization
Provides: locale(%{name}:ast;be;bg;bn_BD;br;et;eu;fy_NL;ga_IE;gd;gl;he;hr;hy_AM;id;is;lt;nn_NO;pa_IN;rm;ro;si;sk;sl;sq;sr;ta_LK;tr;uk;vi) Provides: locale(%{name}:ast;be;bg;bn_BD;br;et;eu;fy_NL;ga_IE;gd;gl;he;hr;hy_AM;id;is;lt;nn_NO;pa_IN;rm;ro;si;sk;sl;sq;sr;ta_LK;tr;uk;vi)
PreReq: %{name} = %{mainversion} Requires: %{name} = %{version}
Obsoletes: %{name}-translations < %{version}-%{release} Obsoletes: %{name}-translations < %{version}-%{release}
%description translations-other %description translations-other
This package contains several optional languages for the user interface This package contains rarely used languages for the user interface
of MozillaThunderbird. of %{appname}.
%endif %endif
%if %crashreporter %if %crashreporter
%package buildsymbols %package buildsymbols
Summary: Breakpad buildsymbols for %{name} Summary: Breakpad buildsymbols for %{appname}
Group: Development/Debug Group: Development/Debug
%description buildsymbols %description buildsymbols
@ -192,23 +213,30 @@ symbols meant for upload to Mozilla's crash collector database.
%endif %endif
%prep %prep
%setup -n thunderbird-%{version} -q -b 4 -b 11 %if %localize
# xulrunner patches # If generated incorrectly, the tarball will be ~270B in
%patch2 -p1 # size, so 1MB seems like good enough limit to check.
MINSIZE=1048576
if (( $(stat -Lc%s "%{SOURCE4}") < MINSIZE)); then
echo "Translations tarball %{SOURCE7} not generated properly."
exit 1
fi
%setup -q -n %{source_prefix} -b 4 -b 11
%else
%setup -q -n %{source_prefix}
%endif
%patch1 -p1
%if %{with mozilla_tb_kde4} %if %{with mozilla_tb_kde4}
%patch2 -p1
%endif
%patch3 -p1 %patch3 -p1
%endif %patch4 -p1
%patch6 -p1 %patch5 -p1
%patch7 -p1
%patch8 -p1
%ifarch %ix86
%patch9 -p1
%patch10 -p1
%endif
%patch11 -p1
%patch12 -p1
%build %build
#
# Limit RAM usage to avoid OOM
%define _lto_cflags %{nil} %define _lto_cflags %{nil}
# 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")"
@ -223,6 +251,7 @@ if test "$kdehelperversion" != %{kde_helper_version}; then
exit 1 exit 1
fi fi
%endif %endif
export SUSE_ASNEEDED=0 export SUSE_ASNEEDED=0
export MOZ_BUILD_DATE=%{releasedate} export MOZ_BUILD_DATE=%{releasedate}
export MOZILLA_OFFICIAL=1 export MOZILLA_OFFICIAL=1
@ -232,33 +261,34 @@ export MOZ_ESR=1
%endif %endif
%if 0%{?suse_version} <= 1320 %if 0%{?suse_version} <= 1320
export CC=gcc-7 export CC=gcc-7
%else
%if 0%{?clang_build} == 0
export CC=gcc
export CXX=g++
%endif %endif
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
%if 0%{?suse_version} > 1320
export CFLAGS="$CFLAGS -fno-delete-null-pointer-checks"
%endif %endif
%ifarch ppc64 ppc64le %ifarch %arm %ix86
export CFLAGS="$CFLAGS -mminimal-toc"
%endif
%ifarch %arm
export CFLAGS="${CFLAGS/-g / }"
%endif
%ifarch %ix86 %arm
# Limit RAM usage during link # Limit RAM usage during link
export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
%endif %endif
%if 0%{?build_hardened}
export LDFLAGS="${LDFLAGS} -fPIC -Wl,-z,relro,-z,now"
%endif
%ifarch ppc64 ppc64le
%if 0%{?clang_build} == 0
export CFLAGS="$CFLAGS -mminimal-toc"
%endif
%endif
export CXXFLAGS="$CFLAGS" export CXXFLAGS="$CFLAGS"
%ifarch %{arm} %ifarch %{arm} aarch64
export RUSTFLAGS="-Cdebuginfo=0" export RUSTFLAGS="-Cdebuginfo=0"
%endif %endif
export MOZCONFIG=$RPM_BUILD_DIR/mozconfig export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
%limit_build -m 2000
# -g might be part of RPM_OPT_FLAGS, depending on the debuginfo setting in prj config # -g might be part of RPM_OPT_FLAGS, depending on the debuginfo setting in prj config
# gcc lacks a an explicit -noop, so use something similar to make sure -g # gcc lacks a an explicit -noop, so use something similar to make sure -g
# is not forced into CFLAGS # is not forced into CFLAGS
export MOZ_DEBUG_FLAGS="-pipe" export MOZ_DEBUG_FLAGS="-pipe"
#
# Limit RAM usage to avoid OOM
%limit_build -m 1500
cat << EOF > $MOZCONFIG cat << EOF > $MOZCONFIG
mk_add_options MOZILLA_OFFICIAL=1 mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1 mk_add_options BUILD_OFFICIAL=1
@ -279,30 +309,23 @@ ac_add_options --includedir=%{_includedir}
ac_add_options --disable-tests ac_add_options --disable-tests
ac_add_options --disable-debug ac_add_options --disable-debug
ac_add_options --enable-alsa ac_add_options --enable-alsa
# gcc7 (boo#104105)
%if 0%{?suse_version} > 1320
ac_add_options --enable-optimize="-g -O2"
%endif
%ifarch %ix86 %arm
%if 0%{?suse_version} > 1230
#ac_add_options --disable-optimize
%endif
%endif
%ifarch %arm
ac_add_options --disable-elf-hack
%endif
%ifarch x86_64
%if 0%{?suse_version} >= 1550
ac_add_options --disable-elf-hack
%endif
%endif
ac_add_options --enable-default-toolkit=cairo-gtk3 ac_add_options --enable-default-toolkit=cairo-gtk3
%if 0%{?suse_version} >= 1550 %if 0%{?suse_version} >= 1550
ac_add_options --disable-gconf ac_add_options --disable-gconf
%endif %endif
# bmo#1441155 - Disable the generation of Rust debug symbols on Linux32
%ifarch %ix86 %arm
ac_add_options --disable-debug-symbols
%else
ac_add_options --enable-debug-symbols
%endif
%if 0%{?suse_version} > 1549
%ifnarch aarch64 ppc64 ppc64le s390x
ac_add_options --disable-elf-hack
%endif
%endif
ac_add_options --with-system-nspr ac_add_options --with-system-nspr
ac_add_options --with-system-nss ac_add_options --with-system-nss
ac_add_options --with-system-jpeg
ac_add_options --with-system-zlib ac_add_options --with-system-zlib
ac_add_options --with-l10n-base=$RPM_BUILD_DIR/l10n ac_add_options --with-l10n-base=$RPM_BUILD_DIR/l10n
ac_add_options --disable-updater ac_add_options --disable-updater
@ -330,8 +353,8 @@ cd $RPM_BUILD_DIR/obj
make -C comm/mail/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0 make -C comm/mail/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
# 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/thunderbird/* \ cp -rf $RPM_BUILD_DIR/obj/dist/thunderbird/* %{buildroot}%{progdir}
%{buildroot}%{progdir} install -m 644 %{SOURCE13} %{buildroot}%{progdir}/defaults/pref/
%if %{with mozilla_tb_kde4} %if %{with mozilla_tb_kde4}
# install kde.js # install kde.js
install -m 644 %{SOURCE12} %{buildroot}%{progdir}/defaults/pref/kde.js install -m 644 %{SOURCE12} %{buildroot}%{progdir}/defaults/pref/kde.js
@ -341,25 +364,26 @@ echo 'pref("browser.preferences.instantApply", true);' > %{buildroot}%{progdir}/
%endif %endif
# build additional locales # build additional locales
%if %localize %if %localize
mkdir -p %{buildroot}%{progdir}/extensions/
truncate -s 0 %{_tmppath}/translations.{common,other} truncate -s 0 %{_tmppath}/translations.{common,other}
sed -r '/^(ja-JP-mac|en-US|$)/d;s/ .*$//' $RPM_BUILD_DIR/thunderbird-%{version}/comm/mail/locales/shipped-locales \ sed -r '/^(ja-JP-mac|en-US|$)/d;s/ .*$//' $RPM_BUILD_DIR/%{source_prefix}/comm/mail/locales/shipped-locales \
| xargs -n 1 -I {} /bin/sh -c ' | xargs -n 1 -I {} /bin/sh -c '
locale=$1 locale=$1
pushd $RPM_BUILD_DIR/compare-locales pushd $RPM_BUILD_DIR/compare-locales
PYTHONPATH=lib \ PYTHONPATH=lib \
scripts/compare-locales -m ../l10n-merged/$locale \ scripts/compare-locales -m ../l10n-merged/$locale \
../thunderbird-%{version}/comm/mail/locales/l10n.ini ../l10n $locale ../%{source_prefix}/comm/mail/locales/l10n.ini ../l10n $locale
popd popd
LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \ LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \
make -C comm/mail/locales langpack-$locale make -C comm/mail/locales langpack-$locale
cp -rL dist/xpi-stage/locale-$locale \ cp -rL dist/xpi-stage/locale-$locale \
%{buildroot}%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org %{buildroot}%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org
# remove prefs and profile defaults from langpack # remove prefs and profile defaults from langpack
rm -rf %{buildroot}%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org/defaults rm -rf %{buildroot}%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org/defaults
# check against the fixed common list and sort into the right filelist # check against the fixed common list and sort into the right filelist
_matched=0 _matched=0
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 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 [ "$_match" = "$locale" ] && _matched=1
done done
[ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other [ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
echo %{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org \ echo %{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org \
@ -375,7 +399,7 @@ s:%%PROFILE:.thunderbird:g" \
%{SOURCE3} > %{buildroot}%{progdir}/%{progname}.sh %{SOURCE3} > %{buildroot}%{progdir}/%{progname}.sh
chmod 755 %{buildroot}%{progdir}/%{progname}.sh chmod 755 %{buildroot}%{progdir}/%{progname}.sh
ln -sf ../..%{progdir}/%{progname}.sh %{buildroot}%{_bindir}/%{progname} ln -sf ../..%{progdir}/%{progname}.sh %{buildroot}%{_bindir}/%{progname}
# freedesktop definition # desktop file
mkdir -p %{buildroot}%{_datadir}/applications mkdir -p %{buildroot}%{_datadir}/applications
install -m 644 %{SOURCE1} \ install -m 644 %{SOURCE1} \
%{buildroot}%{_datadir}/applications/%{desktop_file_name}.desktop %{buildroot}%{_datadir}/applications/%{desktop_file_name}.desktop
@ -425,7 +449,7 @@ rm -f %{buildroot}%{progdir}/nspr-config
%fdupes %{buildroot}%{_libdir}/mozilla %fdupes %{buildroot}%{_libdir}/mozilla
%fdupes %{buildroot}%{_datadir} %fdupes %{buildroot}%{_datadir}
%if %crashreporter %if %crashreporter
SYMBOLS_NAME="thunderbird-%{mainversion}-%{release}.%{_arch}-%{suse_version}-symbols" SYMBOLS_NAME="thunderbird-%{version}-%{release}.%{_arch}-%{suse_version}-symbols"
make buildsymbols \ make buildsymbols \
SYMBOL_INDEX_NAME="$SYMBOLS_NAME.txt" \ SYMBOL_INDEX_NAME="$SYMBOLS_NAME.txt" \
SYMBOL_ARCHIVE_BASENAME="$SYMBOLS_NAME" SYMBOL_ARCHIVE_BASENAME="$SYMBOLS_NAME"
@ -477,11 +501,8 @@ exit 0
%endif %endif
%dir %{progdir}/chrome/ %dir %{progdir}/chrome/
%{progdir}/chrome/icons/ %{progdir}/chrome/icons/
%dir %{progdir}/dictionaries/
%{progdir}/distribution/ %{progdir}/distribution/
%{progdir}/defaults/ %{progdir}/defaults/
%dir %{progdir}/extensions/
%{progdir}/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
%{progdir}/features/ %{progdir}/features/
%{progdir}/isp/ %{progdir}/isp/
%{_datadir}/appdata/ %{_datadir}/appdata/
@ -492,9 +513,11 @@ exit 0
%if %localize %if %localize
%files translations-common -f %{_tmppath}/translations.common %files translations-common -f %{_tmppath}/translations.common
%defattr(-,root,root) %defattr(-,root,root)
%dir %{progdir}/extensions/
%files translations-other -f %{_tmppath}/translations.other %files translations-other -f %{_tmppath}/translations.other
%defattr(-,root,root) %defattr(-,root,root)
%dir %{progdir}/extensions/
%endif %endif
%if %crashreporter %if %crashreporter

View File

@ -5,20 +5,41 @@
<size unit="G">24</size> <size unit="G">24</size>
</disk> </disk>
<memory> <memory>
<size unit="G">8</size> <size unit="G">9</size>
</memory> </memory>
</hardware> </hardware>
<overwrite> <overwrite>
<conditions> <conditions>
<arch>armv6l</arch> <arch>armv6l</arch>
<arch>armv7l</arch> <arch>armv7l</arch>
</conditions>
<hardware>
<disk>
<size unit="G">12</size>
</disk>
<memory>
<size unit="G">5</size>
</memory>
</hardware>
</overwrite>
<overwrite>
<conditions>
<arch>aarch64</arch> <arch>aarch64</arch>
</conditions> </conditions>
<hardware> <hardware>
<memory> <memory>
<size unit="G">9</size> <size unit="G">12</size>
</memory>
</hardware>
</overwrite>
<overwrite>
<conditions>
<arch>x86_64</arch>
</conditions>
<hardware>
<memory>
<size unit="G">16</size>
</memory> </memory>
</hardware> </hardware>
</overwrite> </overwrite>
</constraints> </constraints>

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:54f7cb6e3d25e9133320a7b031b2821e4dc514fa3d6c32b76f79cca0ca1e82f5 oid sha256:74bff7abaceafcb71628e1be0dede58249467fe36a71bde992ab6e5a350db739
size 28512 size 28500

View File

@ -1,16 +1,127 @@
#!/bin/bash #!/bin/bash
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" CHANNEL="esr60"
BRANCH="releases/comm-$CHANNEL" VERSION="60.7.0"
RELEASE_TAG="7df22fd675a09804bc39fe54614ca7a68ffdcd68" VERSION_SUFFIX="esr"
MOZ_RELEASE_TAG="887a438d43fa73e603704d02ea6756ea4e69eb1d" FF_RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded
VERSION="60.9.0" TB_RELEASE_TAG="" # Only relevant for Thunderbird
VERSION_SUFFIX="" PREV_VERSION="60.6.3" # Prev. version only needed for locales (leave empty to force l10n-generation)
LOCALE_FILE="thunderbird-$VERSION/comm/mail/locales/l10n-changesets.json" 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
}
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 9 downwards
# try to find the latest one that exists (assuming there are no more than 9 builds).
# Error only if not even the first one exists
for BUILD_ID in $(seq 9 -1 0); do
FINAL_URL="${URL_TO_CHECK}-build${BUILD_ID}.json"
if wget --quiet --spider "$FINAL_URL"; then
LAST_FOUND="$FINAL_URL"
break
fi
done
if [ "$LAST_FOUND" != "" ]; then
echo "$LAST_FOUND"
return 0
else
echo "Error: Could not find locales-file (json) for Firefox $TMP_VERSION !" 1>&2
return 1
fi
}
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 # check required tools
test -x /usr/bin/hg || ( echo "hg missing: execute zypper in mercurial"; exit 5 ) check_for_binary /usr/bin/hg "mercurial"
test -x /usr/bin/jq || ( echo "jq missing: execute zypper in jq"; exit 5 ) check_for_binary /usr/bin/jq "jq"
which python > /dev/null || exit 1
# use parallel compression, if available # use parallel compression, if available
compression='-J' compression='-J'
@ -19,86 +130,142 @@ if (($? != 127)); then
compression='-Ipixz' compression='-Ipixz'
fi fi
# we might have an upstream archive already and can skip the checkout if [ -z ${SKIP_LOCALES+x} ]; then
if [ -e thunderbird-$VERSION$VERSION_SUFFIX.source.tar.xz ]; then # TODO: Thunderbird has usually "default" as locale entry.
echo "skip thunderbird checkout and use available archive" # There we probably need to double-check Firefox-locals
# still need to extract the locale information from the archive # For now, just download every time for Thunderbird
echo "extract locale list" if [ "$PRODUCT" = "firefox" ] && [ "$PREV_VERSION" != "" ] && locales_unchanged; then
tar -xf thunderbird-$VERSION$VERSION_SUFFIX.source.tar.xz $LOCALE_FILE printf "%-40s: Did not change. Skipping.\n" "locales"
# remove non-free untar licenced code from distributed tarball LOCALES_CHANGED=0
#xz -d -v thunderbird-$VERSION$VERSION_SUFFIX.source.tar.xz && \ else
#tar -v --wildcards --delete -f thunderbird-$VERSION$VERSION_SUFFIX.source.tar \ printf "%-40s: Need to download.\n" "locales"
# "thunderbird-${VERSION}/comm/other-licenses/7zstub" \ LOCALES_CHANGED=1
# "thunderbird-${VERSION}/other-licenses/7zstub" \ fi
#&& \
#xz -9 -v thunderbird-$VERSION$VERSION_SUFFIX.source.tar
else else
if [ -d thunderbird-$VERSION ]; then printf "%-40s: User forced skip (SKIP_LOCALES set)\n" "locales"
pushd thunderbird-$VERSION 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 $SOURCE_TARBALL ]; then
if [ -z ${SKIP_LOCALES+x} ] && [ $LOCALES_CHANGED -ne 0 ]; 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 $PRODUCT-$VERSION ]; then
pushd $PRODUCT-$VERSION || exit 1
_repourl=$(hg paths) _repourl=$(hg paths)
case "$_repourl" in case "$_repourl" in
*$BRANCH*) *$BRANCH*)
echo "updating previous tree" echo "updating previous tree"
hg pull hg pull
popd popd || exit 1
;; ;;
* ) * )
echo "removing obsolete tree" echo "removing obsolete tree"
popd popd || exit 1
rm -rf thunderbird-$VERSION rm -rf $PRODUCT-$VERSION
;; ;;
esac esac
fi fi
if [ ! -d thunderbird-$VERSION ]; then if [ ! -d $PRODUCT-$VERSION ]; then
echo "cloning new $BRANCH..." echo "cloning new $BRANCH..."
hg clone http://hg.mozilla.org/releases/mozilla-$CHANNEL thunderbird-$VERSION hg clone http://hg.mozilla.org/$BRANCH $PRODUCT-$VERSION
hg clone http://hg.mozilla.org/releases/comm-$CHANNEL thunderbird-$VERSION/comm if [ "$PRODUCT" = "thunderbird" ]; then
hg clone http://hg.mozilla.org/releases/comm-$CHANNEL thunderbird-$VERSION/comm
fi
fi fi
pushd thunderbird-$VERSION pushd $PRODUCT-$VERSION || exit 1
hg update --check $MOZ_RELEASE_TAG hg update --check $FF_RELEASE_TAG
pushd comm [ "$FF_RELEASE_TAG" == "default" ] || hg update -r $FF_RELEASE_TAG
hg update --check $RELEASE_TAG # get repo and source stamp
popd echo -n "REV=" > ../source-stamp.txt
popd 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
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..." echo "creating archive..."
rm -rf thunderbird-${VERSION}/{,comm/}other-licenses/7zstub tar $compression -cf $PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS $PRODUCT-$VERSION
tar $compression -cf thunderbird-$VERSION.source.tar.xz --exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=CVS thunderbird-${VERSION}
fi fi
# l10n if [ ! -z ${SKIP_LOCALES+x} ]; then
# http://l10n.mozilla.org/dashboard/?tree=tb30x -> shipped-locales echo "Skipping locales-creation."
echo "fetching locales..." exit 0
test ! -d l10n && mkdir l10n fi
jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' $LOCALE_FILE | \
while read locale changeset ; do if [ $LOCALES_CHANGED -ne 0 ]; then
case $locale in # l10n
ja-JP-mac|en-US) echo "fetching locales..."
;; test ! -d l10n && mkdir l10n
*) jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' $LOCALE_FILE | \
echo "reading changeset information for $locale" while read locale changeset ; do
echo "fetching $locale changeset $changeset ..." case $locale in
#( ja-JP-mac|en-US)
if [ -d l10n/$locale/.hg ]; then ;;
(cd l10n/$locale; hg pull) *)
else echo "reading changeset information for $locale"
hg clone http://hg.mozilla.org/l10n-central/$locale l10n/$locale echo "fetching $locale changeset $changeset ..."
fi if [ -d "l10n/$locale/.hg" ]; then
[ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $changeset pushd "l10n/$locale" || exit 1
#) & hg pull
;; popd || exit 1
esac else
done hg clone "http://hg.mozilla.org/l10n-central/$locale" "l10n/$locale"
wait fi
echo "creating l10n archive..." [ "$FF_RELEASE_TAG" == "default" ] || hg -R "l10n/$locale" up -C -r "$changeset"
tar $compression -cf l10n-$VERSION.tar.xz \ ;;
--exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=browser \ esac
--exclude=suite \ 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 l10n
elif [ -f "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" ]; then
# Locales did not change, but the old tar-ball is in this directory
# Simply rename it:
echo "Moving l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz to l10n-$VERSION$VERSION_SUFFIX.tar.xz"
mv "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" "l10n-$VERSION$VERSION_SUFFIX.tar.xz"
fi
# compare-locales # compare-locales
echo "creating compare-locales" echo "creating compare-locales"
if [ -d compare-locales/.hg ]; then if [ -d compare-locales/.hg ]; then
(cd compare-locales; hg pull) pushd compare-locales || exit 1
hg pull
popd || exit 1
else else
hg clone http://hg.mozilla.org/build/compare-locales hg clone http://hg.mozilla.org/build/compare-locales
fi fi

View File

@ -0,0 +1,10 @@
diff -rup thunderbird-68.0.orig/media/libcubeb/src/cubeb_utils.cpp thunderbird-68.0/media/libcubeb/src/cubeb_utils.cpp
--- thunderbird-68.0.orig/media/libcubeb/src/cubeb_utils.cpp 2019-08-26 23:32:14.000000000 +0200
+++ thunderbird-68.0/media/libcubeb/src/cubeb_utils.cpp 2019-08-30 09:22:26.213301561 +0200
@@ -20,4 +20,6 @@ size_t cubeb_sample_size(cubeb_sample_fo
// should never happen as all cases are handled above.
assert(false);
}
+ // silence the compiler here:
+ return 0;
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ddc34550e843aab7beb40c8461451d4fbfe3bcedb832892ff11081f71abe4f2d
size 27532252

3
l10n-68.1.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c541911ac4b533acbdde32928dd825716bec8c64d74a66f0537fd1ad2d95af68
size 28439160

View File

@ -1,24 +1,22 @@
# HG changeset patch # HG changeset patch
# Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10 # User msirringhaus@suse.de
# Parent 85c2e07d2a9ec3e45f55d0e482c7b663626bfc8a # Date 1558442998 -7200
Bug 991344 - Rpi3: Firefox crashes after a few seconds of usage # 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 diff -r 835641be7eb9 -r 386083b58d85 netwerk/base/nsIOService.cpp
--- a/netwerk/base/nsIOService.cpp --- a/netwerk/base/nsIOService.cpp Fri Feb 26 16:20:09 2016 +0000
+++ b/netwerk/base/nsIOService.cpp +++ b/netwerk/base/nsIOService.cpp Tue May 21 14:49:58 2019 +0200
@@ -874,18 +874,23 @@ nsresult nsIOService::NewChannelFromURIW @@ -1000,7 +1000,13 @@
u"Http channel implementation "
"doesn't support nsIUploadChannel2. An extension has "
"supplied a non-functional http protocol handler. This will "
"break behavior and in future releases not work at all.");
}
gHasWarnedUploadChannel2 = true;
} }
} }
-
+#if defined(__aarch64__) +#if defined(__aarch64__)
+ if (result) { + if (result) {
+ channel.forget(result); + channel.forget(result);
+ } + }
+#else +#else
channel.forget(result); channel.forget(result);
@ -26,8 +24,3 @@ diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
return NS_OK; return NS_OK;
} }
NS_IMETHODIMP
nsIOService::NewChannelFromURIWithProxyFlags2(
nsIURI *aURI, nsIURI *aProxyURI, uint32_t aProxyFlags,
nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags,

View File

@ -1,95 +0,0 @@
# HG changeset patch
# User Lars T Hansen <lhansen@mozilla.com>
# Date 1519822672 -3600
# Node ID 800abe66894d6b07b24bccecbf6a65e2261076f6
# Parent 6fbe9ec020d822b1deef5b0afe76b905b82308a1
Bug 1375074 - Save and restore non-volatile x28 on ARM64 for generated unboxed object constructor. r=sstangl
diff --git a/js/src/jit-test/tests/bug1375074.js b/js/src/jit-test/tests/bug1375074.js
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/tests/bug1375074.js
@@ -0,0 +1,18 @@
+// This forces the VM to start creating unboxed objects and thus stresses a
+// particular path into generated code for a specialized unboxed object
+// constructor.
+
+var K = 2000; // 2000 should be plenty
+var s = "[";
+var i;
+for ( i=0; i < K-1; i++ )
+ s = s + `{"i":${i}},`;
+s += `{"i":${i}}]`;
+var v = JSON.parse(s);
+
+assertEq(v.length == K, true);
+
+for ( i=0; i < K; i++) {
+ assertEq(v[i] instanceof Object, true);
+ assertEq(v[i].i, i);
+}
diff --git a/js/src/vm/UnboxedObject.cpp b/js/src/vm/UnboxedObject.cpp
--- a/js/src/vm/UnboxedObject.cpp
+++ b/js/src/vm/UnboxedObject.cpp
@@ -81,18 +81,25 @@ static const uintptr_t CLEAR_CONSTRUCTOR
masm.loadPtr(Address(masm.getStackPointer(), sizeof(void*)), propertiesReg);
masm.loadPtr(Address(masm.getStackPointer(), 2 * sizeof(void*)), newKindReg);
#else
propertiesReg = IntArgReg0;
newKindReg = IntArgReg1;
#endif
#ifdef JS_CODEGEN_ARM64
- // ARM64 communicates stack address via sp, but uses a pseudo-sp for
- // addressing.
+ // ARM64 communicates stack address via sp, but uses a pseudo-sp (PSP) for
+ // addressing. The register we use for PSP may however also be used by
+ // calling code, and it is nonvolatile, so save it. Do this as a special
+ // case first because the generic save/restore code needs the PSP to be
+ // initialized already.
+ MOZ_ASSERT(PseudoStackPointer64.Is(masm.GetStackPointer64()));
+ masm.Str(PseudoStackPointer64, vixl::MemOperand(sp, -16, vixl::PreIndex));
+
+ // Initialize the PSP from the SP.
masm.initStackPtr();
#endif
MOZ_ASSERT(propertiesReg.volatile_());
MOZ_ASSERT(newKindReg.volatile_());
AllocatableGeneralRegisterSet regs(GeneralRegisterSet::All());
regs.take(propertiesReg);
@@ -234,17 +241,32 @@ static const uintptr_t CLEAR_CONSTRUCTOR
masm.bind(&done);
if (object != ReturnReg) masm.movePtr(object, ReturnReg);
// Restore non-volatile registers which were saved on entry.
if (ScratchDoubleReg.volatile_()) masm.pop(ScratchDoubleReg);
masm.PopRegsInMask(savedNonVolatileRegisters);
+#ifdef JS_CODEGEN_ARM64
+ // Now restore the value that was in the PSP register on entry, and return.
+
+ // Obtain the correct SP from the PSP.
+ masm.Mov(sp, PseudoStackPointer64);
+
+ // Restore the saved value of the PSP register, this value is whatever the
+ // caller had saved in it, not any actual SP value, and it must not be
+ // overwritten subsequently.
+ masm.Ldr(PseudoStackPointer64, vixl::MemOperand(sp, 16, vixl::PostIndex));
+
+ // Perform a plain Ret(), as abiret() will move SP <- PSP and that is wrong.
+ masm.Ret(vixl::lr);
+#else
masm.abiret();
+#endif
masm.bind(&failureStoreOther);
// There was a failure while storing a value which cannot be stored at all
// in the unboxed object. Initialize the object so it is safe for GC and
// return null.
masm.initUnboxedObjectContents(object, templateObject);

View File

@ -1,121 +0,0 @@
# HG changeset patch
# User Mike Hommey <mh+mozilla@glandium.org>
# Date 1526871862 -32400
# Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43
# Parent 3075b562ca9b07ae037c427db6fdbc0ed1ad29a4
Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons
For some reason, GNU as is not happy with the assembly generated after
bug 1238661 anymore on Debian armel.
OTOH, as mentioned in bug 1238661 comment 4, we actually don't need this
workaround anymore, so let's just kill it.
diff --git a/mfbt/LinuxSignal.h b/mfbt/LinuxSignal.h
deleted file mode 100644
--- a/mfbt/LinuxSignal.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef mozilla_LinuxSignal_h
-#define mozilla_LinuxSignal_h
-
-namespace mozilla {
-
-#if defined(__arm__)
-
-// Some (old) Linux kernels on ARM have a bug where a signal handler
-// can be called without clearing the IT bits in CPSR first. The result
-// is that the first few instructions of the handler could be skipped,
-// ultimately resulting in crashes. To workaround this bug, the handler
-// on ARM is a trampoline that starts with enough NOP instructions, so
-// that even if the IT bits are not cleared, only the NOP instructions
-// will be skipped over.
-
-template <void (*H)(int, siginfo_t*, void*)>
-__attribute__((naked)) void SignalTrampoline(int aSignal, siginfo_t* aInfo,
- void* aContext) {
- asm volatile("nop; nop; nop; nop" : : : "memory");
-
- asm volatile("b %0" : : "X"(H) : "memory");
-}
-
-#define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline<h>)
-
-#else // __arm__
-
-#define MOZ_SIGNAL_TRAMPOLINE(h) (h)
-
-#endif // __arm__
-
-} // namespace mozilla
-
-#endif // mozilla_LinuxSignal_h
diff --git a/mfbt/moz.build b/mfbt/moz.build
--- a/mfbt/moz.build
+++ b/mfbt/moz.build
@@ -115,20 +115,16 @@ EXPORTS["double-conversion"] = [
LOCAL_INCLUDES += [
'/mfbt/double-conversion',
]
if CONFIG['OS_ARCH'] == 'WINNT':
EXPORTS.mozilla += [
'WindowsVersion.h',
]
-elif CONFIG['OS_ARCH'] == 'Linux':
- EXPORTS.mozilla += [
- 'LinuxSignal.h',
- ]
UNIFIED_SOURCES += [
'Assertions.cpp',
'ChaosMode.cpp',
'double-conversion/double-conversion/bignum-dtoa.cc',
'double-conversion/double-conversion/bignum.cc',
'double-conversion/double-conversion/cached-powers.cc',
'double-conversion/double-conversion/diy-fp.cc',
diff --git a/tools/profiler/core/platform-linux-android.cpp b/tools/profiler/core/platform-linux-android.cpp
--- a/tools/profiler/core/platform-linux-android.cpp
+++ b/tools/profiler/core/platform-linux-android.cpp
@@ -55,17 +55,16 @@
#ifdef __GLIBC__
#include <execinfo.h> // backtrace, backtrace_symbols
#endif // def __GLIBC__
#include <strings.h> // index
#include <errno.h>
#include <stdarg.h>
#include "prenv.h"
-#include "mozilla/LinuxSignal.h"
#include "mozilla/PodOperations.h"
#include "mozilla/DebugOnly.h"
#include <string.h>
#include <list>
using namespace mozilla;
@@ -248,17 +247,17 @@ Sampler::Sampler(PSLockRef aLock)
// NOTE: We don't initialize LUL here, instead initializing it in
// SamplerThread's constructor. This is because with the
// profiler_suspend_and_sample_thread entry point, we want to be able to
// sample without waiting for LUL to be initialized.
// Request profiling signals.
struct sigaction sa;
- sa.sa_sigaction = MOZ_SIGNAL_TRAMPOLINE(SigprofHandler);
+ sa.sa_sigaction = SigprofHandler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART | SA_SIGINFO;
if (sigaction(SIGPROF, &sa, &mOldSigprofHandler) != 0) {
MOZ_CRASH("Error installing SIGPROF handler in the profiler");
}
}
void Sampler::Disable(PSLockRef aLock) {

View File

@ -1,140 +0,0 @@
# HG changeset patch
# User Mike Hommey <mh+mozilla@glandium.org>
# Date 1527491713 -32400
# Node ID c28becad0c10b906454d7e424f9a9402799ea8dd
# Parent 906f5be6219677928f03318adb1d5e4eed96333c
Bug 1464766 - Allow to relax the addon signature requirements. r?rhelmer
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1254,16 +1254,19 @@ pref("print.print_via_parent", true);
pref("print.print_via_parent", false);
#endif
// Pref used by the spellchecker extension to control the
// maximum number of misspelled words that will be underlined
// in a document.
pref("extensions.spellcheck.inline.max-misspellings", 500);
+// Add-on manager scoped allowing unsigned addons. None by default.
+pref("extensions.unsignedScopes", 12, locked);
+
// Prefs used by libeditor. Prefs specific to seamonkey composer
// belong in comm-central/editor/ui/composer.js
pref("editor.use_custom_colors", false);
pref("editor.singleLine.pasteNewlines", 2);
pref("editor.use_css", false);
pref("editor.css.default_length_unit", "px");
pref("editor.resizing.preserve_ratio", true);
diff --git a/toolkit/mozapps/extensions/content/extensions.js b/toolkit/mozapps/extensions/content/extensions.js
--- a/toolkit/mozapps/extensions/content/extensions.js
+++ b/toolkit/mozapps/extensions/content/extensions.js
@@ -47,16 +47,17 @@ XPCOMUtils.defineLazyPreferenceGetter(th
const PREF_DISCOVERURL = "extensions.webservice.discoverURL";
const PREF_DISCOVER_ENABLED = "extensions.getAddons.showPane";
const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
const PREF_GETADDONS_CACHE_ID_ENABLED = "extensions.%ID%.getAddons.cache.enabled";
const PREF_UI_TYPE_HIDDEN = "extensions.ui.%TYPE%.hidden";
const PREF_UI_LASTCATEGORY = "extensions.ui.lastCategory";
const PREF_LEGACY_EXCEPTIONS = "extensions.legacy.exceptions";
const PREF_LEGACY_ENABLED = "extensions.legacy.enabled";
+const PREF_UNSIGNED_SCOPES = "extensions.unsignedScopes";
const LOADING_MSG_DELAY = 100;
const UPDATES_RECENT_TIMESPAN = 2 * 24 * 3600000; // 2 days (in milliseconds)
const UPDATES_RELEASENOTES_TRANSFORMFILE = "chrome://mozapps/content/extensions/updateinfo.xsl";
const XMLURI_PARSE_ERROR = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
@@ -229,19 +230,21 @@ function loadView(aViewId) {
function isCorrectlySigned(aAddon) {
// Add-ons without an "isCorrectlySigned" property are correctly signed as
// they aren't the correct type for signing.
return aAddon.isCorrectlySigned !== false;
}
function isDisabledUnsigned(addon) {
- let signingRequired = (addon.type == "locale") ?
- AddonSettings.LANGPACKS_REQUIRE_SIGNING :
- AddonSettings.REQUIRE_SIGNING;
+ let unsignedScopes = Services.prefs.getIntPref(PREF_UNSIGNED_SCOPES, 0);
+ let signingRequired = !(addon.scope & unsignedScopes) &&
+ ((addon.type == "locale") ?
+ AddonSettings.LANGPACKS_REQUIRE_SIGNING :
+ AddonSettings.REQUIRE_SIGNING);
return signingRequired && !isCorrectlySigned(addon);
}
function isLegacyExtension(addon) {
let legacy = false;
if (addon.type == "extension" && !addon.isWebExtension) {
legacy = true;
}
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -67,16 +67,17 @@ const PREF_XPI_STATE =
const PREF_BLOCKLIST_ITEM_URL = "extensions.blocklist.itemURL";
const PREF_BOOTSTRAP_ADDONS = "extensions.bootstrappedAddons";
const PREF_PENDING_OPERATIONS = "extensions.pendingOperations";
const PREF_SKIN_SWITCHPENDING = "extensions.dss.switchPending";
const PREF_SKIN_TO_SELECT = "extensions.lastSelectedSkin";
const PREF_GENERAL_SKINS_SELECTEDSKIN = "general.skins.selectedSkin";
const PREF_EM_EXTENSION_FORMAT = "extensions.";
const PREF_EM_ENABLED_SCOPES = "extensions.enabledScopes";
+const PREF_EM_UNSIGNED_SCOPES = "extensions.unsignedScopes";
const PREF_EM_STARTUP_SCAN_SCOPES = "extensions.startupScanScopes";
const PREF_EM_SHOW_MISMATCH_UI = "extensions.showMismatchUI";
const PREF_XPI_ENABLED = "xpinstall.enabled";
const PREF_XPI_WHITELIST_REQUIRED = "xpinstall.whitelist.required";
const PREF_XPI_DIRECT_WHITELISTED = "xpinstall.whitelist.directRequest";
const PREF_XPI_FILE_WHITELISTED = "xpinstall.whitelist.fileRequest";
// xpinstall.signatures.required only supported in dev builds
const PREF_XPI_SIGNATURES_REQUIRED = "xpinstall.signatures.required";
@@ -803,17 +804,19 @@ function isDisabledLegacy(addon) {
* The add-on to check
* @return true if the add-on should not be appDisabled
*/
function isUsableAddon(aAddon) {
// Hack to ensure the default theme is always usable
if (aAddon.type == "theme" && aAddon.internalName == XPIProvider.defaultSkin)
return true;
- if (mustSign(aAddon.type) && !aAddon.isCorrectlySigned) {
+ let unsignedScopes = Services.prefs.getIntPref(PREF_EM_UNSIGNED_SCOPES, 0);
+ if (!(aAddon._installLocation.scope & unsignedScopes) &&
+ mustSign(aAddon.type) && !aAddon.isCorrectlySigned) {
logger.warn(`Add-on ${aAddon.id} is not correctly signed.`);
if (Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)) {
logger.warn(`Preference ${PREF_XPI_SIGNATURES_DEV_ROOT} is set.`);
}
return false;
}
if (aAddon.blocklistState == nsIBlocklistService.STATE_BLOCKED) {
diff --git a/toolkit/mozapps/extensions/internal/XPIProviderUtils.js b/toolkit/mozapps/extensions/internal/XPIProviderUtils.js
--- a/toolkit/mozapps/extensions/internal/XPIProviderUtils.js
+++ b/toolkit/mozapps/extensions/internal/XPIProviderUtils.js
@@ -39,16 +39,17 @@ var logger = Log.repository.getLogger(LO
const KEY_PROFILEDIR = "ProfD";
const FILE_JSON_DB = "extensions.json";
// The last version of DB_SCHEMA implemented in SQLITE
const LAST_SQLITE_DB_SCHEMA = 14;
const PREF_DB_SCHEMA = "extensions.databaseSchema";
const PREF_PENDING_OPERATIONS = "extensions.pendingOperations";
const PREF_EM_AUTO_DISABLED_SCOPES = "extensions.autoDisableScopes";
+const PREF_EM_UNSIGNED_SCOPES = "extensions.unsignedScopes";
const KEY_APP_SYSTEM_ADDONS = "app-system-addons";
const KEY_APP_SYSTEM_DEFAULTS = "app-system-defaults";
const KEY_APP_GLOBAL = "app-global";
const KEY_APP_TEMPORARY = "app-temporary";
// Properties to save in JSON file
const PROP_JSON_FIELDS = ["id", "syncGUID", "location", "version", "type",

View File

@ -1,66 +0,0 @@
# HG changeset patch
# Parent ba0e794338a92e82d4b19e9fb012c848302b7dbd
diff --git a/servo/components/style/lib.rs b/servo/components/style/lib.rs
--- a/servo/components/style/lib.rs
+++ b/servo/components/style/lib.rs
@@ -18,17 +18,17 @@
//! [recalc_style_at]: traversal/fn.recalc_style_at.html
//!
//! Major dependencies are the [cssparser][cssparser] and [selectors][selectors]
//! crates.
//!
//! [cssparser]: ../cssparser/index.html
//! [selectors]: ../selectors/index.html
-#![deny(missing_docs)]
+//#![deny(missing_docs)]
extern crate app_units;
extern crate arrayvec;
extern crate atomic_refcell;
#[macro_use]
extern crate bitflags;
#[allow(unused_extern_crates)] extern crate byteorder;
#[cfg(feature = "gecko")] #[macro_use] #[no_link] extern crate cfg_if;
@@ -143,17 +143,17 @@ pub mod values;
#[cfg(feature = "servo")] pub use html5ever::Prefix;
#[cfg(feature = "servo")] pub use html5ever::LocalName;
#[cfg(feature = "servo")] pub use html5ever::Namespace;
/// The CSS properties supported by the style system.
/// Generated from the properties.mako.rs template by build.rs
#[macro_use]
#[allow(unsafe_code)]
-#[deny(missing_docs)]
+//#[deny(missing_docs)]
pub mod properties {
include!(concat!(env!("OUT_DIR"), "/properties.rs"));
}
// uses a macro from properties
#[cfg(feature = "servo")] #[allow(unsafe_code)] pub mod servo;
#[cfg(feature = "gecko")]
diff --git a/servo/components/style_traits/lib.rs b/servo/components/style_traits/lib.rs
--- a/servo/components/style_traits/lib.rs
+++ b/servo/components/style_traits/lib.rs
@@ -4,17 +4,17 @@
//! This module contains shared types and messages for use by devtools/script.
//! The traits are here instead of in script so that the devtools crate can be
//! modified independently of the rest of Servo.
#![crate_name = "style_traits"]
#![crate_type = "rlib"]
-#![deny(unsafe_code, missing_docs)]
+#![deny(unsafe_code)]
extern crate app_units;
#[macro_use] extern crate bitflags;
#[macro_use] extern crate cssparser;
extern crate euclid;
extern crate malloc_size_of;
#[macro_use] extern crate malloc_size_of_derive;
extern crate selectors;

View File

@ -1,26 +0,0 @@
# HG changeset patch
# Parent f3fe334a20e8a63266eb06c5d298ad793cefc015
Mozilla Bug#1447070 - DecoderDoctorLogger.h must be included in MediaKeySession.h
to fix non-unified build error for i586 target.
diff --git a/dom/media/eme/MediaKeySession.h b/dom/media/eme/MediaKeySession.h
--- a/dom/media/eme/MediaKeySession.h
+++ b/dom/media/eme/MediaKeySession.h
@@ -2,16 +2,17 @@
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_dom_MediaKeySession_h
#define mozilla_dom_MediaKeySession_h
+#include "DecoderDoctorLogger.h"
#include "mozilla/Attributes.h"
#include "mozilla/ErrorResult.h"
#include "nsCycleCollectionParticipant.h"
#include "mozilla/DOMEventTargetHelper.h"
#include "nsCOMPtr.h"
#include "mozilla/dom/TypedArray.h"
#include "mozilla/Mutex.h"
#include "mozilla/dom/Date.h"

View File

@ -1,27 +0,0 @@
# HG changeset patch
# User Andrea Marchesini <amarchesini@mozilla.com>
# Parent fab938f4757d8487a87fbf911200ff0317612746
Mozilla Bug#1447409 - DOMPrefs.h must be included in WorkerScope, r=qdot
To fix 32bit build error for i586 target.
diff --git a/dom/workers/WorkerScope.h b/dom/workers/WorkerScope.h
--- a/dom/workers/WorkerScope.h
+++ b/dom/workers/WorkerScope.h
@@ -4,16 +4,17 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_dom_workerscope_h__
#define mozilla_dom_workerscope_h__
#include "mozilla/dom/WorkerCommon.h"
#include "mozilla/DOMEventTargetHelper.h"
+#include "mozilla/dom/DOMPrefs.h"
#include "mozilla/dom/Headers.h"
#include "mozilla/dom/RequestBinding.h"
#include "nsWeakReference.h"
#include "mozilla/dom/ImageBitmapSource.h"
#ifdef XP_WIN
#undef PostMessage
#endif

View File

@ -1,5 +1,9 @@
# HG changeset patch # HG changeset patch
# Parent 58a0b60e25e7160c9877299a37a2f10660888e9a # User msirringhaus@suse.de
# Date 1559294891 -7200
# Fri May 31 11:28:11 2019 +0200
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
# Parent 93495ad6fa0fe292eadcbfef14e0e27273528497
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>
@ -9,7 +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
@@ -76,16 +76,17 @@ @@ -81,16 +81,17 @@
#include "nsXPCOMCID.h" #include "nsXPCOMCID.h"
#include "nsXPCOM.h" #include "nsXPCOM.h"
#include "nsXULAppAPI.h" #include "nsXULAppAPI.h"
@ -20,14 +24,14 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
#include "prlink.h" #include "prlink.h"
+#include "nsKDEUtils.h" +#include "nsKDEUtils.h"
#ifdef XP_WIN #ifdef MOZ_MEMORY
#include "windows.h" # include "mozmemory.h"
#endif #endif
using namespace mozilla; #ifdef XP_WIN
# include "windows.h"
#ifdef DEBUG #endif
@@ -3519,25 +3520,37 @@ static nsresult pref_ReadPrefFromJar(nsZ @@ -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)
@ -37,10 +41,10 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
#elif defined(XP_UNIX) #elif defined(XP_UNIX)
"unix.js" "unix.js"
+ , "" // placeholder for KDE (empty is otherwise harmless) + , "" // placeholder for KDE (empty is otherwise harmless)
#if defined(_AIX) # if defined(_AIX)
, ,
"aix.js" "aix.js"
#endif # endif
#elif defined(XP_BEOS) #elif defined(XP_BEOS)
"beos.js" "beos.js"
#endif #endif
@ -65,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.
@@ -3585,17 +3598,17 @@ static nsresult pref_ReadPrefFromJar(nsZ @@ -4573,17 +4586,17 @@ static nsresult pref_ReadDefaultPrefs(co
} }
nsCOMPtr<nsIFile> path = do_QueryInterface(elem); nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@ -79,39 +83,39 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
} }
} }
#ifdef MOZ_WIDGET_ANDROID if (XRE_IsParentProcess()) {
// Set up the correct default for toolkit.telemetry.enabled. If this build SetupTelemetryPref();
// has MOZ_TELEMETRY_ON_BY_DEFAULT *or* we're on the beta channel, telemetry }
// is on by default, otherwise not. This is necessary so that beta users who
// are testing final release builds don't flipflop defaults. NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID, nullptr,
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
--- a/modules/libpref/moz.build --- a/modules/libpref/moz.build
+++ b/modules/libpref/moz.build +++ b/modules/libpref/moz.build
@@ -27,16 +27,20 @@ XPIDL_MODULE = 'pref' @@ -31,16 +31,20 @@ EXPORTS.mozilla += [
EXPORTS.mozilla += [ 'StaticPrefs.h',
'Preferences.h',
] ]
UNIFIED_SOURCES += [ UNIFIED_SOURCES += [
'Preferences.cpp', 'Preferences.cpp',
'SharedPrefMap.cpp',
] ]
+LOCAL_INCLUDES += [ +LOCAL_INCLUDES += [
+ '/toolkit/xre' + '/toolkit/xre'
+] +]
+ +
XPCOM_MANIFESTS += [
'components.conf',
]
include('/ipc/chromium/chromium-config.mozbuild') include('/ipc/chromium/chromium-config.mozbuild')
FINAL_LIBRARY = 'xul' FINAL_LIBRARY = 'xul'
DEFINES['OS_ARCH'] = CONFIG['OS_ARCH']
DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT']
if CONFIG['MOZ_ENABLE_WEBRENDER']:
DEFINES['MOZ_ENABLE_WEBRENDER'] = True
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
@@ -220,16 +220,17 @@ class Flags(OrderedDict): @@ -223,16 +223,17 @@ class Flags(OrderedDict):
'contentaccessible': Flag, 'contentaccessible': Flag,
'os': StringFlag, 'os': StringFlag,
'osversion': VersionFlag, 'osversion': VersionFlag,
@ -132,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
@@ -34,16 +34,17 @@ class ManifestEntry(object): @@ -39,16 +39,17 @@ class ManifestEntry(object):
'platformversion', 'platformversion',
'os', 'os',
'osversion', 'osversion',
@ -153,7 +157,7 @@ diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpac
diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
--- a/toolkit/components/downloads/moz.build --- a/toolkit/components/downloads/moz.build
+++ b/toolkit/components/downloads/moz.build +++ b/toolkit/components/downloads/moz.build
@@ -41,10 +41,14 @@ EXTRA_JS_MODULES += [ @@ -41,10 +41,14 @@ XPCOM_MANIFESTS += [
if CONFIG['MOZ_PLACES']: if CONFIG['MOZ_PLACES']:
EXTRA_JS_MODULES += [ EXTRA_JS_MODULES += [
@ -167,34 +171,34 @@ diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloa
+] +]
+ +
with Files('**'): with Files('**'):
BUG_COMPONENT = ('Toolkit', 'Download Manager') BUG_COMPONENT = ('Toolkit', 'Downloads API')
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
--- a/toolkit/content/jar.mn --- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn +++ b/toolkit/content/jar.mn
@@ -69,16 +69,18 @@ toolkit.jar: @@ -63,16 +63,18 @@ toolkit.jar:
content/global/bindings/checkbox.xml (widgets/checkbox.xml) content/global/widgets.css
content/global/bindings/colorpicker.xml (widgets/colorpicker.xml) 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/datekeeper.js (widgets/datekeeper.js)
content/global/bindings/datepicker.js (widgets/datepicker.js) content/global/bindings/datepicker.js (widgets/datepicker.js)
content/global/bindings/datetimepopup.xml (widgets/datetimepopup.xml)
content/global/bindings/datetimebox.xml (widgets/datetimebox.xml)
content/global/bindings/datetimebox.css (widgets/datetimebox.css) content/global/bindings/datetimebox.css (widgets/datetimebox.css)
* content/global/bindings/dialog.xml (widgets/dialog.xml) * content/global/bindings/dialog.xml (widgets/dialog.xml)
+* content/global/bindings/dialog-kde.xml (widgets/dialog-kde.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 +% override chrome://global/content/bindings/dialog.xml chrome://global/content/bindings/dialog-kde.xml desktop=kde
content/global/bindings/editor.xml (widgets/editor.xml)
content/global/bindings/filefield.xml (widgets/filefield.xml)
* content/global/bindings/findbar.xml (widgets/findbar.xml)
content/global/bindings/general.xml (widgets/general.xml) content/global/bindings/general.xml (widgets/general.xml)
content/global/bindings/groupbox.xml (widgets/groupbox.xml) content/global/bindings/popup.xml (widgets/popup.xml)
content/global/bindings/listbox.xml (widgets/listbox.xml) content/global/bindings/richlistbox.xml (widgets/richlistbox.xml)
content/global/bindings/menu.xml (widgets/menu.xml) content/global/bindings/scrollbox.xml (widgets/scrollbox.xml)
content/global/bindings/menulist.xml (widgets/menulist.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 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
new file mode 100644 new file mode 100644
--- /dev/null --- /dev/null
+++ b/toolkit/content/widgets/dialog-kde.xml +++ b/toolkit/content/widgets/dialog-kde.xml
@@ -0,0 +1,478 @@ @@ -0,0 +1,499 @@
+<?xml version="1.0"?> +<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public +<!-- 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 + - License, v. 2.0. If a copy of the MPL was not distributed with this
@ -211,9 +215,6 @@ new file mode 100644
+ xmlns:xbl="http://www.mozilla.org/xbl"> + xmlns:xbl="http://www.mozilla.org/xbl">
+ +
+ <binding id="dialog"> + <binding id="dialog">
+ <resources>
+ <stylesheet src="chrome://global/skin/dialog.css"/>
+ </resources>
+ <content> + <content>
+ <xul:vbox class="box-inherit dialog-content-box" flex="1"> + <xul:vbox class="box-inherit dialog-content-box" flex="1">
+ <children/> + <children/>
@ -269,6 +270,11 @@ new file mode 100644
+ event.preventDefault(); + event.preventDefault();
+ })</field> + })</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" + <property name="buttons"
+ onget="return this.getAttribute('buttons');" + onget="return this.getAttribute('buttons');"
+ onset="this._configureButtons(val); return val;"/> + onset="this._configureButtons(val); return val;"/>
@ -368,16 +374,32 @@ new file mode 100644
+ this._configureButtons(this.buttons); + this._configureButtons(this.buttons);
+ +
+ // listen for when window is closed via native close buttons + // listen for when window is closed via native close buttons
+ window.addEventListener("close", this._closeHandler); + window.addEventListener("close", this);
+ +
+ // for things that we need to initialize after onload fires + // for things that we need to initialize after onload fires
+ window.addEventListener("load", this.postLoadInit); + window.addEventListener("load", this);
+ +
+ window.moveToAlertPosition = this.moveToAlertPosition; + window.moveToAlertPosition = this.moveToAlertPosition;
+ window.centerWindowOnScreen = this.centerWindowOnScreen; + window.centerWindowOnScreen = this.centerWindowOnScreen;
+ ]]> + ]]>
+ </constructor> + </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"> + <method name="postLoadInit">
+ <parameter name="aEvent"/> + <parameter name="aEvent"/>
+ <body> + <body>
@ -425,6 +447,12 @@ new file mode 100644
+ +
+ // Give focus after onload completes, see bug 103197. + // Give focus after onload completes, see bug 103197.
+ setTimeout(focusInit, 0); + setTimeout(focusInit, 0);
+
+ if (this._l10nButtons.length) {
+ document.l10n.translateElements(this._l10nButtons).then(() => {
+ window.sizeToContent();
+ });
+ }
+ ]]> + ]]>
+ </body> + </body>
+ </method> + </method>
@ -471,6 +499,10 @@ new file mode 100644
+ buttons.help = document.getAnonymousElementByAttribute(this, "dlgtype", "help"); + buttons.help = document.getAnonymousElementByAttribute(this, "dlgtype", "help");
+ buttons.disclosure = document.getAnonymousElementByAttribute(this, "dlgtype", "disclosure"); + buttons.disclosure = document.getAnonymousElementByAttribute(this, "dlgtype", "disclosure");
+ +
+ for (let button in buttons) {
+ customElements.upgrade(buttons[button]);
+ }
+
+ // look for any overriding explicit button elements + // look for any overriding explicit button elements
+ var exBtns = this.getElementsByAttribute("dlgtype", "*"); + var exBtns = this.getElementsByAttribute("dlgtype", "*");
+ var dlgtype; + var dlgtype;
@ -493,6 +525,9 @@ new file mode 100644
+ button.setAttribute("label", this.getAttribute("buttonlabel" + dlgtype)); + button.setAttribute("label", this.getAttribute("buttonlabel" + dlgtype));
+ if (this.hasAttribute("buttonaccesskey" + dlgtype)) + if (this.hasAttribute("buttonaccesskey" + dlgtype))
+ button.setAttribute("accesskey", this.getAttribute("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") { + } else if (dlgtype != "extra1" && dlgtype != "extra2") {
+ button.setAttribute("label", this.mStrBundle.GetStringFromName("button-" + dlgtype)); + button.setAttribute("label", this.mStrBundle.GetStringFromName("button-" + dlgtype));
+ var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype); + var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype);
@ -619,19 +654,7 @@ new file mode 100644
+ event.initEvent("dialog" + aDlgType, true, true); + event.initEvent("dialog" + aDlgType, true, true);
+ +
+ // handle dom event handlers + // handle dom event handlers
+ var noCancel = this.dispatchEvent(event); + return 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;
+ ]]> + ]]>
+ </body> + </body>
+ </method> + </method>
@ -665,7 +688,9 @@ new file mode 100644
+ <handler event="focus" phase="capturing"> + <handler event="focus" phase="capturing">
+ var btn = this.getButton(this.defaultButton); + var btn = this.getButton(this.defaultButton);
+ if (btn) + if (btn)
+ btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Ci.nsIDOMXULButtonElement)); + btn.setAttribute("default", event.originalTarget == btn ||
+ !(event.originalTarget.localName == "button" ||
+ event.originalTarget.localName == "toolbarbutton"));
+ </handler> + </handler>
+#endif +#endif
+ </handlers> + </handlers>
@ -673,64 +698,32 @@ new file mode 100644
+ </binding> + </binding>
+ +
+</bindings> +</bindings>
diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
--- a/toolkit/mozapps/downloads/nsHelperAppDlg.js --- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
+++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js +++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
@@ -627,17 +627,17 @@ nsUnknownContentTypeDialog.prototype = { @@ -1204,36 +1204,66 @@ nsUnknownContentTypeDialog.prototype = {
else params.handlerApp &&
typeString = mimeInfo.MIMEType; params.handlerApp.executable &&
} params.handlerApp.executable.isFile()
// When the length is unknown, contentLength would be -1 ) {
if (this.mLauncher.contentLength >= 0) {
let [size, unit] = DownloadUtils.
convertByteUnits(this.mLauncher.contentLength);
type.value = this.dialogElement("strings")
- .getFormattedString("orderedFileSizeWithType",
+ .getFormattedString("orderedFileSizeWithType",
[typeString, size, unit]);
}
else {
type.value = typeString;
}
},
// Returns true if opening the default application makes sense.
@@ -801,17 +801,17 @@ nsUnknownContentTypeDialog.prototype = {
switch (this.dialogElement("openHandler").selectedIndex) {
case 0:
// No app need be specified in this case.
ok = true;
break;
case 1:
// only enable the OK button if we have a default app to use or if
// the user chose an app....
- ok = this.chosenApp || /\S/.test(this.dialogElement("otherHandler").getAttribute("path"));
+ ok = this.chosenApp || /\S/.test(this.dialogElement("otherHandler").getAttribute("path"));
break;
}
}
// Enable Ok button if ok to press.
this.mDialog.document.documentElement.getButton("accept").disabled = !ok;
},
@@ -1066,30 +1066,60 @@ nsUnknownContentTypeDialog.prototype = {
if (params.handlerApp &&
params.handlerApp.executable &&
params.handlerApp.executable.isFile()) {
// Remember the file they chose to run. // Remember the file they chose to run.
this.chosenApp = params.handlerApp; this.chosenApp = params.handlerApp;
} }
} else if ("@mozilla.org/applicationchooser;1" in Cc) { } else if ("@mozilla.org/applicationchooser;1" in Cc) {
- var nsIApplicationChooser = Ci.nsIApplicationChooser; - var nsIApplicationChooser = Ci.nsIApplicationChooser;
- var appChooser = Cc["@mozilla.org/applicationchooser;1"] - var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance(
- .createInstance(nsIApplicationChooser); - nsIApplicationChooser
- appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); - );
- appChooser.init(
- this.mDialog,
- this.dialogElement("strings").getString("chooseAppFilePickerTitle")
- );
- var contentTypeDialogObj = this; - var contentTypeDialogObj = this;
- let appChooserCallback = function appChooserCallback_done(aResult) { - let appChooserCallback = function appChooserCallback_done(aResult) {
- if (aResult) { - if (aResult) {
- contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp); - contentTypeDialogObj.chosenApp = aResult.QueryInterface(
- Ci.nsILocalHandlerApp
- );
- } - }
- contentTypeDialogObj.finishChooseApp(); - contentTypeDialogObj.finishChooseApp();
- }; - };
@ -767,13 +760,19 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl
+ }); + });
+ } else { + } else {
+ var nsIApplicationChooser = Ci.nsIApplicationChooser; + var nsIApplicationChooser = Ci.nsIApplicationChooser;
+ var appChooser = Cc["@mozilla.org/applicationchooser;1"] + var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance(
+ .createInstance(nsIApplicationChooser); + nsIApplicationChooser
+ appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); + );
+ appChooser.init(
+ this.mDialog,
+ this.dialogElement("strings").getString("chooseAppFilePickerTitle")
+ );
+ var contentTypeDialogObj = this; + var contentTypeDialogObj = this;
+ let appChooserCallback = function appChooserCallback_done(aResult) { + let appChooserCallback = function appChooserCallback_done(aResult) {
+ if (aResult) { + if (aResult) {
+ contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp); + contentTypeDialogObj.chosenApp = aResult.QueryInterface(
+ Ci.nsILocalHandlerApp
+ );
+ } + }
+ contentTypeDialogObj.finishChooseApp(); + contentTypeDialogObj.finishChooseApp();
+ }; + };
@ -783,16 +782,16 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl
+ } + }
} else { } else {
var nsIFilePicker = Ci.nsIFilePicker; var nsIFilePicker = Ci.nsIFilePicker;
var fp = Cc["@mozilla.org/filepicker;1"] var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
.createInstance(nsIFilePicker); fp.init(
fp.init(this.mDialog, this.mDialog,
this.dialogElement("strings").getString("chooseAppFilePickerTitle"), this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
nsIFilePicker.modeOpen); nsIFilePicker.modeOpen
);
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
@@ -15,16 +15,17 @@ @@ -14,16 +14,17 @@
#include "nsPrintfCString.h" #include "nsPrintfCString.h"
#include "nsNetCID.h" #include "nsNetCID.h"
#include "nsNetUtil.h" #include "nsNetUtil.h"
@ -803,23 +802,24 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
#include "nsIURI.h" #include "nsIURI.h"
+#include "nsKDEUtils.h" +#include "nsKDEUtils.h"
using namespace mozilla;
class nsUnixSystemProxySettings final : public nsISystemProxySettings { class nsUnixSystemProxySettings final : public nsISystemProxySettings {
public: public:
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSISYSTEMPROXYSETTINGS NS_DECL_NSISYSTEMPROXYSETTINGS
nsUnixSystemProxySettings() : mSchemeProxySettings(4) {} @@ -37,16 +38,18 @@ class nsUnixSystemProxySettings final :
nsresult Init(); nsCOMPtr<nsIGSettingsCollection> mProxySettings;
@@ -42,16 +43,17 @@ class nsUnixSystemProxySettings final : nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
nsACString& aResult); mSchemeProxySettings;
nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost,
int32_t aPort, nsACString& aResult);
nsresult GetProxyFromGSettings(const nsACString& aScheme, nsresult GetProxyFromGSettings(const nsACString& aScheme,
const nsACString& aHost, int32_t aPort, const nsACString& aHost, int32_t aPort,
nsACString& aResult); nsACString& aResult);
nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
nsACString& aResult); nsACString& aResult);
+ nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult); + nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost,
+ PRInt32 aPort, nsACString& aResult);
}; };
NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings) NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
@ -828,7 +828,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) { nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
// dbus prevents us from being threadsafe, but this routine should not block // dbus prevents us from being threadsafe, but this routine should not block
// anyhow // anyhow
@@ -488,16 +490,19 @@ nsresult nsUnixSystemProxySettings::GetP @@ -382,21 +385,50 @@ nsresult nsUnixSystemProxySettings::GetP
return NS_OK; return NS_OK;
} }
@ -844,20 +844,10 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult); nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
if (NS_SUCCEEDED(rv)) return rv; if (NS_SUCCEEDED(rv)) return rv;
} }
if (mGConf) return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult); return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
} }
@@ -521,8 +526,34 @@ static const mozilla::Module::CIDEntry k
static const mozilla::Module::ContractIDEntry kUnixProxyContracts[] = {
{NS_SYSTEMPROXYSETTINGS_CONTRACTID, &kNS_UNIXSYSTEMPROXYSERVICE_CID},
{nullptr}};
static const mozilla::Module kUnixProxyModule = {
mozilla::Module::kVersion, kUnixProxyCIDs, kUnixProxyContracts};
NSMODULE_DEFN(nsUnixProxyModule) = &kUnixProxyModule;
+
+nsresult +nsresult
+nsUnixSystemProxySettings::GetProxyFromKDE(const nsACString& aScheme, +nsUnixSystemProxySettings::GetProxyFromKDE(const nsACString& aScheme,
+ const nsACString& aHost, + const nsACString& aHost,
@ -883,10 +873,16 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
+ return NS_OK; + return NS_OK;
+} +}
+ +
+
NS_IMPL_COMPONENT_FACTORY(nsUnixSystemProxySettings) {
auto result = MakeRefPtr<nsUnixSystemProxySettings>();
result->Init();
return result.forget().downcast<nsISupports>();
}
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
--- a/toolkit/xre/moz.build --- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build +++ b/toolkit/xre/moz.build
@@ -65,17 +65,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co @@ -83,17 +83,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
'../components/printingui', '../components/printingui',
] ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
@ -905,7 +901,7 @@ diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
'nsNativeAppSupportDefault.cpp', 'nsNativeAppSupportDefault.cpp',
] ]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3': if CONFIG['MOZ_HAS_REMOTE']:
diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
new file mode 100644 new file mode 100644
--- /dev/null --- /dev/null
@ -954,7 +950,7 @@ new file mode 100644
+ Display* dpy = XOpenDisplay( NULL ); + Display* dpy = XOpenDisplay( NULL );
+ if( dpy == NULL ) + if( dpy == NULL )
+ return false; + 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; + bool kde = false;
+ if( kde_full_session != None ) + if( kde_full_session != None )
+ { + {
@ -1311,7 +1307,8 @@ new file mode 100644
diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandler/HandlerServiceParent.cpp diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandler/HandlerServiceParent.cpp
--- a/uriloader/exthandler/HandlerServiceParent.cpp --- a/uriloader/exthandler/HandlerServiceParent.cpp
+++ b/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 "mozilla/Logging.h"
#include "HandlerServiceParent.h" #include "HandlerServiceParent.h"
#include "nsIHandlerService.h" #include "nsIHandlerService.h"
@ -1319,8 +1316,8 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle
#include "ContentHandlerService.h" #include "ContentHandlerService.h"
#include "nsStringEnumerator.h" #include "nsStringEnumerator.h"
#ifdef MOZ_WIDGET_GTK #ifdef MOZ_WIDGET_GTK
-#include "unix/nsGNOMERegistry.h" -# include "unix/nsGNOMERegistry.h"
+#include "unix/nsCommonRegistry.h" +# include "unix/nsCommonRegistry.h"
#endif #endif
using mozilla::dom::ContentHandlerService; using mozilla::dom::ContentHandlerService;
@ -1329,13 +1326,13 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle
using mozilla::dom::RemoteHandlerApp; using mozilla::dom::RemoteHandlerApp;
namespace { namespace {
@@ -245,17 +245,17 @@ mozilla::ipc::IPCResult HandlerServicePa @@ -282,17 +282,17 @@ mozilla::ipc::IPCResult HandlerServicePa
handlerSvc->Exists(info, exists); mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocolOS(
return IPC_OK();
}
mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocol(
const nsCString& aProtocolScheme, bool* aHandlerExists) { const nsCString& aProtocolScheme, bool* aHandlerExists) {
if (aProtocolScheme.Length() > MAX_SCHEME_LENGTH) {
*aHandlerExists = false;
return IPC_OK();
}
#ifdef MOZ_WIDGET_GTK #ifdef MOZ_WIDGET_GTK
// Check the GNOME registry for a protocol handler // Check the GNOME registry for a protocol handler
- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get()); - *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
@ -1346,12 +1343,31 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle
return IPC_OK(); 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 diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
--- a/uriloader/exthandler/moz.build --- a/uriloader/exthandler/moz.build
+++ b/uriloader/exthandler/moz.build +++ b/uriloader/exthandler/moz.build
@@ -77,17 +77,19 @@ else: @@ -83,17 +83,19 @@ else:
SOURCES += [ SOURCES += [
osdir + '/nsOSHelperAppService.cpp', osdir + '/nsOSHelperAppService.cpp',
] ]
@ -1368,10 +1384,10 @@ diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
UNIFIED_SOURCES += [ UNIFIED_SOURCES += [
'android/nsAndroidHandlerApp.cpp', 'android/nsAndroidHandlerApp.cpp',
'android/nsExternalSharingAppService.cpp',
'android/nsExternalURLHandlerService.cpp', 'android/nsExternalURLHandlerService.cpp',
'android/nsMIMEInfoAndroid.cpp', 'android/nsMIMEInfoAndroid.cpp',
@@ -124,16 +126,17 @@ include('/ipc/chromium/chromium-config.m ]
@@ -133,16 +135,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul' FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [ LOCAL_INCLUDES += [
@ -1629,19 +1645,19 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
#include "nsIIOService.h" #include "nsIIOService.h"
#include "nsAutoPtr.h" #include "nsAutoPtr.h"
#ifdef MOZ_ENABLE_DBUS #ifdef MOZ_ENABLE_DBUS
#include "nsDBusHandlerApp.h" # include "nsDBusHandlerApp.h"
#endif #endif
+#if defined(XP_UNIX) && !defined(XP_MACOSX) +#if defined(XP_UNIX) && !defined(XP_MACOSX)
+#include "nsKDEUtils.h" +#include "nsKDEUtils.h"
+#endif +#endif
nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI *aURI) { nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI* aURI) {
- return nsGNOMERegistry::LoadURL(aURI); - return nsGNOMERegistry::LoadURL(aURI);
+ return nsCommonRegistry::LoadURL(aURI); + return nsCommonRegistry::LoadURL(aURI);
} }
NS_IMETHODIMP NS_IMETHODIMP
nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) { nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) {
// if mDefaultApplication is set, it means the application has been set from // 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 // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
// give the GNOME answer. // give the GNOME answer.
@ -1716,8 +1732,8 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
#include "nsOSHelperAppService.h" #include "nsOSHelperAppService.h"
#include "nsMIMEInfoUnix.h" #include "nsMIMEInfoUnix.h"
#ifdef MOZ_WIDGET_GTK #ifdef MOZ_WIDGET_GTK
-#include "nsGNOMERegistry.h" -# include "nsGNOMERegistry.h"
+#include "nsCommonRegistry.h" +# include "nsCommonRegistry.h"
#endif #endif
#include "nsISupports.h" #include "nsISupports.h"
#include "nsString.h" #include "nsString.h"
@ -1726,7 +1742,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
#include "nsIURL.h" #include "nsIURL.h"
#include "nsIFileStreams.h" #include "nsIFileStreams.h"
#include "nsILineInputStream.h" #include "nsILineInputStream.h"
@@ -1040,17 +1040,17 @@ nsresult nsOSHelperAppService::GetHandle @@ -1025,17 +1025,17 @@ nsresult nsOSHelperAppService::GetHandle
nsresult nsOSHelperAppService::OSProtocolHandlerExists( nsresult nsOSHelperAppService::OSProtocolHandlerExists(
const char* aProtocolScheme, bool* aHandlerExists) { const char* aProtocolScheme, bool* aHandlerExists) {
@ -1745,7 +1761,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
nsCOMPtr<nsIHandlerService> handlerSvc = nsCOMPtr<nsIHandlerService> handlerSvc =
do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv); do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv) && handlerSvc) { if (NS_SUCCEEDED(rv) && handlerSvc) {
@@ -1060,17 +1060,17 @@ nsresult nsOSHelperAppService::OSProtoco @@ -1045,17 +1045,17 @@ nsresult nsOSHelperAppService::OSProtoco
} }
return rv; return rv;
@ -1764,7 +1780,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
nsresult nsOSHelperAppService::GetFileTokenForPath( nsresult nsOSHelperAppService::GetFileTokenForPath(
const char16_t* platformAppPath, nsIFile** aFile) { const char16_t* platformAppPath, nsIFile** aFile) {
@@ -1151,17 +1151,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel @@ -1136,17 +1136,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
nsresult rv = nsresult rv =
LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType, LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
minorType, mime_types_description, true); minorType, mime_types_description, true);
@ -1783,7 +1799,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType, rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
minorType, mime_types_description, false); minorType, mime_types_description, false);
@@ -1263,17 +1263,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel @@ -1248,17 +1248,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
// Now look up our extensions // Now look up our extensions
nsAutoString extensions, mime_types_description; nsAutoString extensions, mime_types_description;
@ -1805,12 +1821,12 @@ 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
@@ -121,16 +121,17 @@ else: @@ -124,16 +124,17 @@ include('/ipc/chromium/chromium-config.m
include('/ipc/chromium/chromium-config.mozbuild')
FINAL_LIBRARY = 'xul' FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [ LOCAL_INCLUDES += [
'/layout/base',
'/layout/generic', '/layout/generic',
'/layout/xul', '/layout/xul',
'/other-licenses/atk-1.0', '/other-licenses/atk-1.0',
@ -1860,14 +1876,14 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
// bug 1184009 // bug 1184009
#define MAX_PREVIEW_SOURCE_SIZE 4096 #define MAX_PREVIEW_SOURCE_SIZE 4096
nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr; nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
@@ -225,17 +227,19 @@ nsFilePicker::AppendFilters(int32_t aFil @@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
mAllowURLs = !!(aFilterMask & filterAllowURLs); mAllowURLs = !!(aFilterMask & filterAllowURLs);
return nsBaseFilePicker::AppendFilters(aFilterMask); return nsBaseFilePicker::AppendFilters(aFilterMask);
} }
NS_IMETHODIMP NS_IMETHODIMP
nsFilePicker::AppendFilter(const nsAString &aTitle, const nsAString &aFilter) { nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter) {
if (aFilter.EqualsLiteral("..apps")) { if (aFilter.EqualsLiteral("..apps")) {
// No platform specific thing we can do here, really.... // No platform specific thing we can do here, really....
- return NS_OK; - return NS_OK;
@ -1882,12 +1898,12 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
mFilters.AppendElement(filter); mFilters.AppendElement(filter);
mFilterNames.AppendElement(name); mFilterNames.AppendElement(name);
@@ -335,16 +339,39 @@ nsresult nsFilePicker::Show(int16_t *aRe @@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
return NS_OK; return NS_OK;
} }
NS_IMETHODIMP NS_IMETHODIMP
nsFilePicker::Open(nsIFilePickerShownCallback *aCallback) { nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) {
// Can't show two dialogs concurrently with the same filepicker // Can't show two dialogs concurrently with the same filepicker
if (mRunning) return NS_ERROR_NOT_AVAILABLE; if (mRunning) return NS_ERROR_NOT_AVAILABLE;
@ -1917,13 +1933,12 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
nsCString title; nsCString title;
title.Adopt(ToNewUTF8String(mTitle)); title.Adopt(ToNewUTF8String(mTitle));
GtkWindow *parent_widget = GtkWindow* parent_widget =
GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
GtkFileChooserAction action = GetGtkFileChooserAction(mMode); GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
@@ -572,8 +599,233 @@ void nsFilePicker::Done(GtkWidget *file_ @@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos
if (mCallback) {
mCallback->Done(result); mCallback->Done(result);
mCallback = nullptr; mCallback = nullptr;
} else { } else {
@ -1931,7 +1946,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
} }
NS_RELEASE_THIS(); NS_RELEASE_THIS();
} }
+
+nsCString nsFilePicker::kdeMakeFilter( int index ) +nsCString nsFilePicker::kdeMakeFilter( int index )
+ { + {
+ nsCString buf = mFilters[ index ]; + nsCString buf = mFilters[ index ];
@ -2156,10 +2171,18 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
+ return NS_OK; + return NS_OK;
+ } + }
+ +
// All below functions available as of GTK 3.20+
void* nsFilePicker::GtkFileChooserNew(const gchar* title, GtkWindow* parent,
GtkFileChooserAction action,
const gchar* accept_label) {
static auto sGtkFileChooserNativeNewPtr =
(void* (*)(const gchar*, GtkWindow*, GtkFileChooserAction, const gchar*,
const gchar*))dlsym(RTLD_DEFAULT,
"gtk_file_chooser_native_new");
diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
--- a/widget/gtk/nsFilePicker.h --- a/widget/gtk/nsFilePicker.h
+++ b/widget/gtk/nsFilePicker.h +++ b/widget/gtk/nsFilePicker.h
@@ -67,14 +67,20 @@ class nsFilePicker : public nsBaseFilePi @@ -67,16 +67,22 @@ class nsFilePicker : public nsBaseFilePi
nsString mDefaultExtension; nsString mDefaultExtension;
nsTArray<nsCString> mFilters; nsTArray<nsCString> mFilters;
@ -2174,12 +2197,14 @@ diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
+ NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn); + NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
+ nsCString kdeMakeFilter( int index ); + nsCString kdeMakeFilter( int index );
+ +
#ifdef MOZ_WIDGET_GTK void* GtkFileChooserNew(const gchar* title, GtkWindow* parent,
GtkFileChooserWidget* mFileChooserDelegate; GtkFileChooserAction action,
#endif const gchar* accept_label);
}; void GtkFileChooserShow(void* file_chooser);
void GtkFileChooserDestroy(void* file_chooser);
void GtkFileChooserSetModal(void* file_chooser, GtkWindow* parent_widget,
gboolean modal);
#endif
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
--- a/xpcom/components/ManifestParser.cpp --- a/xpcom/components/ManifestParser.cpp
+++ b/xpcom/components/ManifestParser.cpp +++ b/xpcom/components/ManifestParser.cpp
@ -2200,8 +2225,8 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
const char* directive; const char* directive;
int argc; int argc;
// Binary components are only allowed for APP locations. bool ischrome;
@@ -418,16 +419,17 @@ void ParseManifest(NSLocationType aType, @@ -393,16 +394,17 @@ void ParseManifest(NSLocationType aType,
NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled"); NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired"); NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
NS_NAMED_LITERAL_STRING(kApplication, "application"); NS_NAMED_LITERAL_STRING(kApplication, "application");
@ -2219,7 +2244,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
NS_NAMED_LITERAL_STRING(kMain, "main"); NS_NAMED_LITERAL_STRING(kMain, "main");
NS_NAMED_LITERAL_STRING(kContent, "content"); NS_NAMED_LITERAL_STRING(kContent, "content");
@@ -473,39 +475,44 @@ void ParseManifest(NSLocationType aType, @@ -448,39 +450,44 @@ void ParseManifest(NSLocationType aType,
CopyUTF8toUTF16(s, abi); CopyUTF8toUTF16(s, abi);
abi.Insert(char16_t('_'), 0); abi.Insert(char16_t('_'), 0);
abi.Insert(osTarget, 0); abi.Insert(osTarget, 0);
@ -2230,15 +2255,15 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
nsAutoString osVersion; nsAutoString osVersion;
+ nsAutoString desktop; + nsAutoString desktop;
#if defined(XP_WIN) #if defined(XP_WIN)
#pragma warning(push) # pragma warning(push)
#pragma warning(disable : 4996) // VC12+ deprecates GetVersionEx # pragma warning(disable : 4996) // VC12+ deprecates GetVersionEx
OSVERSIONINFO info = {sizeof(OSVERSIONINFO)}; OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};
if (GetVersionEx(&info)) { if (GetVersionEx(&info)) {
nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion, nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
info.dwMinorVersion); info.dwMinorVersion);
} }
+ desktop = NS_LITERAL_STRING("win"); + desktop = NS_LITERAL_STRING("win");
#pragma warning(pop) # pragma warning(pop)
#elif defined(MOZ_WIDGET_COCOA) #elif defined(MOZ_WIDGET_COCOA)
SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor(); SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor();
SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor(); SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor();
@ -2264,7 +2289,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
process = kMain; process = kMain;
} }
@@ -608,25 +615,27 @@ void ParseManifest(NSLocationType aType, @@ -567,25 +574,27 @@ void ParseManifest(NSLocationType aType,
TriState stOsVersion = eUnspecified; TriState stOsVersion = eUnspecified;
TriState stOs = eUnspecified; TriState stOs = eUnspecified;
TriState stABI = eUnspecified; TriState stABI = eUnspecified;
@ -2292,7 +2317,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
continue; continue;
} }
@@ -663,17 +672,17 @@ void ParseManifest(NSLocationType aType, @@ -622,17 +631,17 @@ void ParseManifest(NSLocationType aType,
} }
LogMessageWithContext( LogMessageWithContext(
@ -2314,42 +2339,46 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
--- a/xpcom/components/moz.build --- a/xpcom/components/moz.build
+++ b/xpcom/components/moz.build +++ b/xpcom/components/moz.build
@@ -44,12 +44,13 @@ FINAL_LIBRARY = 'xul' @@ -66,16 +66,17 @@ LOCAL_INCLUDES += [
LOCAL_INCLUDES += [
'!..', '!..',
'../base', '../base',
'../build', '../build',
'../ds', '../ds',
'../reflect/xptinfo',
'/chrome', '/chrome',
'/js/xpconnect/loader',
'/layout/build',
'/modules/libjar', '/modules/libjar',
+ '/toolkit/xre' + '/toolkit/xre',
] ]
if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
CXXFLAGS += CONFIG['TK_CFLAGS'] CXXFLAGS += CONFIG['TK_CFLAGS']
if CONFIG['MOZ_LAYOUT_DEBUGGER']:
DEFINES['MOZ_LAYOUT_DEBUGGER'] = True
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
--- a/xpcom/io/nsLocalFileUnix.cpp --- a/xpcom/io/nsLocalFileUnix.cpp
+++ b/xpcom/io/nsLocalFileUnix.cpp +++ b/xpcom/io/nsLocalFileUnix.cpp
@@ -47,16 +47,17 @@ @@ -47,16 +47,17 @@
#include "prproces.h" #include "prproces.h"
#include "nsIDirectoryEnumerator.h" #include "nsIDirectoryEnumerator.h"
#include "nsISimpleEnumerator.h" #include "nsSimpleEnumerator.h"
#include "private/pprio.h" #include "private/pprio.h"
#include "prlink.h" #include "prlink.h"
#ifdef MOZ_WIDGET_GTK #ifdef MOZ_WIDGET_GTK
#include "nsIGIOService.h" # include "nsIGIOService.h"
+#include "nsKDEUtils.h" +# include "nsKDEUtils.h"
#endif #endif
#ifdef MOZ_WIDGET_COCOA #ifdef MOZ_WIDGET_COCOA
#include <Carbon/Carbon.h> # include <Carbon/Carbon.h>
#include "CocoaFileUtils.h" # include "CocoaFileUtils.h"
#include "prmem.h" # include "prmem.h"
#include "plbase64.h" # include "plbase64.h"
@@ -1901,62 +1902,77 @@ nsLocalFile::SetPersistentDescriptor(con @@ -1902,62 +1903,77 @@ nsLocalFile::SetPersistentDescriptor(con
NS_IMETHODIMP NS_IMETHODIMP
nsLocalFile::Reveal() { nsLocalFile::Reveal() {

View File

@ -1,47 +1,35 @@
From: Wolfgang Rosenauer # HG changeset patch
Subject: Do not use gconf for proxy settings if not running within Gnome # 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 Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
=================================================================== ===================================================================
RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v
retrieving revision 1.1 retrieving revision 1.1
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp diff -r 4c434d19d03d -r 6bcf2dfebc1e toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/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 +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp Tue May 21 14:48:35 2019 +0200
@@ -55,24 +55,27 @@ NS_IMETHODIMP @@ -55,11 +55,14 @@
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
// dbus prevents us from being threadsafe, but this routine should not block
// anyhow
*aMainThreadOnly = true;
return NS_OK;
} }
nsresult nsUnixSystemProxySettings::Init() { void nsUnixSystemProxySettings::Init() {
- mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); - mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
- if (mGSettings) { - if (mGSettings) {
- mGSettings->GetCollectionForSchema( - mGSettings->GetCollectionForSchema(
- NS_LITERAL_CSTRING("org.gnome.system.proxy"), - NS_LITERAL_CSTRING("org.gnome.system.proxy"),
- getter_AddRefs(mProxySettings)); - 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"); + const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
+ if (sessionType && !strcmp(sessionType, "gnome")) { + if (sessionType && !strcmp(sessionType, "gnome")) {
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID); + mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+ if (mGSettings) { + if (mGSettings) {
+ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"), + mGSettings->GetCollectionForSchema(
+ getter_AddRefs(mProxySettings)); + NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+ } + getter_AddRefs(mProxySettings));
+ if (!mProxySettings) {
+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ } + }
} }
return NS_OK;
} }
bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) {
nsAutoCString mode;
return NS_SUCCEEDED(mGConf->GetString(

View File

@ -10,6 +10,7 @@ pref("print.print_edge_left", 16); // 1/100 of an inch
pref("print.print_edge_right", 16); // 1/100 of an inch pref("print.print_edge_right", 16); // 1/100 of an inch
pref("print.print_edge_bottom", 14); // 1/100 of an inch pref("print.print_edge_bottom", 14); // 1/100 of an inch
pref("intl.locale.requested", ""); pref("intl.locale.requested", "");
pref("intl.multilingual.enabled", true);
// do not disable system-global or app-global extensions // do not disable system-global or app-global extensions
pref("extensions.autoDisableScopes", 3); pref("extensions.autoDisableScopes", 3);

10
tar_stamps Normal file
View File

@ -0,0 +1,10 @@
PRODUCT="thunderbird"
CHANNEL="esr68"
VERSION="68.1.0"
VERSION_SUFFIX=""
FF_RELEASE_TAG="0efe7ab505b59f1986ebedc0c114a7d24fd93168"
TB_RELEASE_TAG="9317dad8cb7fd80a47cb3b40253c73127f776535"
PREV_VERSION=""
PREV_VERSION_SUFFIX=""
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8818180658aeb8853de4cf381700e32907b361f0958bcce78f1590c6962d2d86
size 286400364

View File

@ -1,17 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)
iQIcBAABCAAGBQJdbtvuAAoJEPGmZo+7fVcuHQgQAIzta3TWhspqaHixVAruX078
ory1MSnV81dc96IQPB5qBk/wgHPv3H0SFMxbmvdSr2NSWzbVj/W6oxRJ+rZ0JlyS
1nLqTqQrXwoSoI4er/uNAAwhbmSAgVSLx1ImTk6sIgNeofaTrS0dTo5PlFJPgosg
SmK9EjwupoWirysN1cjTbH8DxJcgYYd+S4nkdbbJY8UTruYRjrbol4fOCzvNmYB6
2og4ZOSivsAq0m6eDbjiQvMW3dJZw5mOW0sGCs4OF8Qi16Jaa8FjCjNGRwE1e5jg
IYOS/tgON1fdfTVE4I0YlGPHqx1PH1OLeO9WjcNyW+3HMwZs2A0YrOA7I+0x8RIf
oQ4vJSKBugNF9Z0kHh3qBUD5sJt9y/++YffxzgK3Z9sqmPkyzj//R6wzk81sA2xx
Lpeb6an08+MKvgT/EoLtZ/1isnbQVTu1/hwQVr9KNWLsbxvb4vl5oteRgZpUM1Fa
9Au6Nr/CxtWV1prmOPVwfDaC5j9ca2afJWiW4VSBiY0KUXl/rvn0VXD8P7SmcqgT
J5gh9MghSdDjb8YLM5/RGaGgvEVe6nf289N5BkOfUW5uGFPpXxaLvszatTqm9kAP
ciwqNECbAeo7sdrPIS79//eR2hHlOa2Lp4WWdDcFEgHD/cCsMjdZ04Q2qf0GYmgP
/33tvnMsRIa6invZ6ONt
=q4oW
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:de0e5c7d1d5576f451e386e4779f155b7af97621a4e22caac0c6dee3c9d76eef
size 333332920

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEECXsxMHeuYqAvhNpN8aZmj7t9Vy4FAl125ZoACgkQ8aZmj7t9
Vy70YBAAm1wopZ2gjKfBXWbfxASnWP+9+WIKa/o62qpJTybDbPGiopMXp/v8fBX5
WIIftd7cacl3WQHVWmlaFLwJl6vGo7Zro7AHXkxZ+z28kaokh5HtN5/qwcq6C5Gg
2lFMcDGWCKx3qqgRynruEEPCSmQt7JTFEpmGxuCJNYDRbSF01yIsGC6DXi9H/uQr
di+YD/iEcdinjSUyZ7vCpBgelgFxF1+kp0DpcBS/1YK/U1Sl4MYfoE8P4SoXETJY
t2AVa8t10UlV+B0SMtShK0EN/M5A1H2YCnZsQVsWJRRxDQPbW9TsWpv8GSKbg2uQ
sY+uUwHUxB6uqfwMFW1b7i1yfY+vuiXIw/X0DzLSbGqXvfAj0q3Xce5DiMNttuQM
JtSrX2p3hdBe9L+xmRuB+2WZHgidPDOh40ICdPCmQnBeVMXWfiMaXZjrGkd7+2TE
2dVIFk4SF3fI13b26wgyPEKh/EkodOtaMsd80b64NzogHB3Ouz1t30nvLdtQq5r7
j4hh38Pmw2l53WbGXuk40EF6EuLlkRnXyUsftew1b/2CdzQzfW8lvUwyEqHhTJgk
I+JVfONgj2z2f/yVvDnMdfTTvSsflWCXzoWjx4MCuKHbxPQK60KIZk9nkTVLO9cL
nqZFUgvYzuwkll1JsdaH5HE5WF/p/36EnZT3ngToVGlheQLjZCg=
=03dy
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,12 @@
diff --git a/comm/mail/locales/l10n.ini b/comm/mail/locales/l10n.ini
index eac6bfa..8700472 100644
--- a/comm/mail/locales/l10n.ini
+++ b/comm/mail/locales/l10n.ini
@@ -13,5 +13,5 @@ dirs = mail
# include toolkit from mozilla.
# Don't specify which, use l10n-central.ini and friends if you're
# not working on a local check-out
-toolkit = mozilla/toolkit/locales/l10n.ini
-devtools_client = mozilla/devtools/client/locales/l10n.ini
+toolkit = ../toolkit/locales/l10n.ini
+devtools_client = ../devtools/client/locales/l10n.ini