1
0
Wolfgang Rosenauer 2011-06-28 18:42:13 +00:00 committed by Git OBS Bridge
parent 4bf1d83352
commit 9896e68dce
25 changed files with 2206 additions and 503 deletions

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Sat Jun 25 08:31:05 UTC 2011 - wr@rosenauer.org
- update to version 5.0
- new enigmail cvs snapshot
- improved logic for the launcher command
- enable gio usage (instead of gnomevfs) for 11.4 and newer
- build dump_syms dynamic to build on 12.1 and above
-------------------------------------------------------------------
Mon Jun 20 09:36:22 UTC 2011 - wr@rosenauer.org

View File

@ -20,16 +20,14 @@
Name: MozillaThunderbird
BuildRequires: autoconf213 fdupes gcc-c++ hunspell-devel libcurl-devel libgnomeui-devel libidl-devel libnotify-devel python startup-notification-devel unzip update-desktop-files zip
BuildRequires: autoconf213 fdupes gcc-c++ hunspell-devel libcurl-devel libgnomeui-devel libidl-devel libnotify-devel python startup-notification-devel unzip update-desktop-files Mesa-devel yasm zip
BuildRequires: mozilla-nss-devel >= 3.12.8
%if %suse_version > 1100
BuildRequires: nss-shared-helper-devel
%endif
License: MPLv1.1 or GPLv2+ or LGPLv2+
%define mainversion 3.1.11
%define mainversion 5.0
Version: %{mainversion}
Release: 1
%define releasedate 2011061600
%define releasedate 2011062400
Provides: thunderbird = %{version}
Summary: The Stand-Alone Mozilla Mail Component
Url: http://www.mozilla.org/products/thunderbird/
@ -43,27 +41,30 @@ Source4: l10n-%{version}.tar.bz2
Source6: suse-default-prefs.js
Source7: find-external-requires.sh
Source8: MozillaThunderbird-rpmlintrc
Source9: enigmail-1.1.2.tar.bz2
Source9: enigmail-1.1.99.tar.bz2
Source10: create-tar.sh
Patch1: mozilla-dump_syms-static.patch
Patch2: thunderbird-appname.patch
Patch4: tb-ssldap.patch
Patch5: tb-develdirs.patch
Patch9: mozilla-shared-nss-db.patch
Patch10: mozilla-gdk-pixbuf.patch
Patch11: thunderbird-shared-nss-db.patch
Patch13: mozilla-xsmp.patch
Patch14: mozilla-gcc46.patch
Source11: compare-locales.tar.bz2
# Gecko/Toolkit
Patch1: mozilla-shared-nss-db.patch
Patch2: mozilla-cairo-lcd.patch
Patch3: mozilla-language.patch
Patch4: mozilla-gio.patch
Patch5: mozilla-cairo-return.patch
Patch6: mozilla-dump_syms-static.patch
# Thunderbird/mail
Patch10: tb-ssldap.patch
Patch11: tb-develdirs.patch
Patch12: thunderbird-shared-nss-db.patch
Patch13: thunderbird-gio.patch
#enigmail
Patch20: enigmail-cz-CZ-fix.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: coreutils fileutils textutils /bin/sh
### build options
%define build_enigmail 1
%define crashreporter 1
%define has_system_cairo 0
%if %suse_version > 1110
%define has_system_cairo 1
%endif
%define localize 1
%define localize 1
### build options end
%define _use_internal_dependency_generator 0
%define __find_requires sh %{SOURCE7}
@ -86,7 +87,7 @@ written using the XUL user interface language and designed to be
cross-platform. It is a stand-alone application instead of part of the
Mozilla application suite.
%if %localize
%package translations-common
License: MPLv1.1 or GPLv2+ or LGPLv2+
Summary: Common translations for MozillaThunderbird
@ -111,7 +112,7 @@ Obsoletes: %{name}-translations < %{version}-%{release}
%description translations-other
This package contains several optional languages for the user interface
of MozillaThunderbird.
%endif
%package devel
License: MPLv1.1 or GPLv2+ or LGPLv2+
@ -126,7 +127,6 @@ Software Development Kit to build plugins/extensions against Thunderbird.
%if %crashreporter
%package buildsymbols
License: MPLv1.1 or GPLv2+ or LGPLv2+
Summary: Breakpad buildsymbols for %{name}
@ -138,9 +138,8 @@ symbols meant for upload to Mozilla's crash collector database.
%endif
%if %build_enigmail
%package -n enigmail
Version: 1.1.2
Version: 1.1.99
Release: 7
License: MPLv1.1 or GPLv2+
Summary: OpenPGP addon for Thunderbird and SeaMonkey
@ -159,25 +158,35 @@ This package contains the Enigmail OpenPGP Addon for Thunderbird and SeaMonkey.
%prep
%if %build_enigmail
%setup -n thunderbird -q -b 4 -b 9
%setup -n thunderbird -q -b 4 -b 11 -b 9
%else
%setup -n thunderbird -q -b 4
%setup -n thunderbird -q -b 4 -b 11
%endif
# xulrunner patches
pushd mozilla
%patch1 -p1
%patch9 -p1
%patch10 -p1
%patch13 -p1
%patch14 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
popd
# comm-central patches
%patch2 -p1
%patch4 -p1
%patch5
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
pushd ../enigmail
%patch20 -p1
popd
%build
# no need to add build time to binaries
modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{name}.changes")"
DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
TIME="\"$(date -d "${modified}" "+%%R")\""
find . -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} +
#
export SUSE_ASNEEDED=0
export MOZ_BUILD_DATE=%{releasedate}
export MOZILLA_OFFICIAL=1
@ -194,6 +203,7 @@ mk_add_options MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZ_MILESTONE_RELEASE=1
mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs}
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj
ac_add_options --enable-application=mail
ac_add_options --prefix=%{_prefix}
ac_add_options --libdir=%{progdir}
@ -201,25 +211,26 @@ ac_add_options --includedir=%{_includedir}
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-jpeg
ac_add_options --with-system-zlib
ac_add_options --with-l10n-base=../l10n
ac_add_options --with-l10n-base=$RPM_BUILD_DIR/l10n
ac_add_options --disable-updater
#ac_add_options --with-system-png # no apng support
%if %suse_version > 1030
ac_add_options --enable-system-hunspell
%endif
ac_add_options --enable-ldap-experimental
ac_add_options --disable-installer
ac_add_options --disable-mochitest
ac_add_options --enable-startup-notification
ac_add_options --enable-official-branding
ac_add_options --disable-necko-wifi
EOF
%if %suse_version > 1130
cat << EOF >> $MOZCONFIG
ac_add_options --disable-gnomevfs
ac_add_options --enable-gio
EOF
%endif
%if %has_system_cairo
cat << EOF >> $MOZCONFIG
ac_add_options --enable-system-cairo
@ -235,40 +246,55 @@ make -f client.mk build
### enigmail build
%if %build_enigmail
cp -r $RPM_BUILD_DIR/enigmail $RPM_BUILD_DIR/thunderbird/mailnews/extensions/
(cd $RPM_BUILD_DIR/thunderbird/mailnews/extensions/enigmail; ./makemake -r; make; make xpi)
pushd $RPM_BUILD_DIR/thunderbird/mailnews/extensions/enigmail
./makemake -r -o '../../../../obj'
popd
pushd $RPM_BUILD_DIR/obj/mailnews/extensions/enigmail
make MOZ_CHROME_FILE_FORMAT=jar
make xpi
popd
%endif
%install
cd ../obj
make -C mail/installer STRIP=/bin/true
# copy tree into RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{progdir}
cp -rf $RPM_BUILD_DIR/thunderbird/mozilla/dist/thunderbird/* \
cp -rf $RPM_BUILD_DIR/obj/mozilla/dist/thunderbird/* \
$RPM_BUILD_ROOT%{progdir}
# build additional locales
%if %localize
%if 0%{?SOURCE5:1}
cp %SOURCE5 mail/locales/shipped-locales
cp %SOURCE5 ../thunderbird/mail/locales/shipped-locales
%endif
rm -f %{_tmppath}/translations.*
for locale in $(awk '{ print $1; }' mail/locales/shipped-locales); do
touch %{_tmppath}/translations.{common,other}
for locale in $(awk '{ print $1; }' ../thunderbird/mail/locales/all-locales); do
case $locale in
ja-JP-mac|en-US)
ja-JP-mac|en-US|ta-LK)
# locales not to be included in translations package
;;
*)
make -C mail/locales libs-$locale || continue
cp mozilla/dist/xpi-stage/locale-$locale/chrome/$locale.jar \
$RPM_BUILD_ROOT%{progdir}/chrome
cp mozilla/dist/xpi-stage/locale-$locale/chrome/$locale.manifest \
$RPM_BUILD_ROOT%{progdir}/chrome
pushd $RPM_BUILD_DIR/compare-locales
PYTHONPATH=lib \
scripts/compare-locales -m ../l10n-merged/$locale \
../thunderbird/mail/locales/l10n.ini ../l10n $locale
popd
LOCALE_MERGEDIR=$RPM_BUILD_DIR/l10n-merged/$locale \
make -C mail/locales langpack-$locale || continue
cp -r mozilla/dist/xpi-stage/locale-$locale \
$RPM_BUILD_ROOT%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org
# remove prefs and profile defaults from langpack
rm -rf $RPM_BUILD_ROOT%{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org/defaults
# check against the fixed common list and sort into the right filelist
_matched=0
for _match in ar ca cs da de en-GB es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
[ "$_match" = "$locale" ] && _matched=1
done
[ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
echo %{progdir}/chrome/$locale.jar >> %{_tmppath}/translations.$_l10ntarget
echo %{progdir}/chrome/$locale.manifest >> %{_tmppath}/translations.$_l10ntarget
echo %{progdir}/extensions/langpack-$locale@thunderbird.mozilla.org \
>> %{_tmppath}/translations.$_l10ntarget
esac
done
%endif
@ -356,6 +382,7 @@ done
# excluded files
rm -f $RPM_BUILD_ROOT%{progdir}/thunderbird
rm -f $RPM_BUILD_ROOT%{progdir}/removed-files
rm -f $RPM_BUILD_ROOT%{progdir}/precomplete
rm -f $RPM_BUILD_ROOT%{progdir}/updater
rm -f $RPM_BUILD_ROOT%{progdir}/updater.ini
rm -f $RPM_BUILD_ROOT%{progdir}/update.locale
@ -418,18 +445,13 @@ exit 0
%dir %{progdir}
%{progdir}/application.ini
%{progdir}/blocklist.xml
%{progdir}/res/
%{progdir}/chrome.manifest
%{progdir}/README.txt
%{progdir}/libldap60.so
%{progdir}/libprldap60.so
%{progdir}/libssldap60.so
%{progdir}/libldif60.so
%{progdir}/libsqlite3.so
%{progdir}/libmozjs.so
%{progdir}/libxpcom_core.so
%{progdir}/libxpcom.so
%{progdir}/*.so
%{progdir}/mozilla-xremote-client
%{progdir}/omni.jar
%{progdir}/platform.ini
%{progdir}/plugin-container
%{progdir}/run-mozilla.sh
%{progdir}/thunderbird-bin
# crashreporter files
@ -439,28 +461,18 @@ exit 0
%{progdir}/Throbber-small.gif
%endif
%{progdir}/components/
%{progdir}/modules/
%dir %{progdir}/chrome/
%{progdir}/chrome/classic.*
%{progdir}/chrome/comm.*
%{progdir}/chrome/en-US.*
%{progdir}/chrome/gloda.*
%{progdir}/chrome/messenger.*
%{progdir}/chrome/newsblog.*
%{progdir}/chrome/pippki.*
%{progdir}/chrome/toolkit.*
%{progdir}/chrome/icons/
%dir %{progdir}/dictionaries/
%{progdir}/defaults/
%{progdir}/greprefs/
%{progdir}/extensions/
%dir %{progdir}/extensions/
%{progdir}/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
%{progdir}/isp/
%{_datadir}/applications/%{desktop_file_name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{progname}.png
%{_bindir}/%{progname}
%if %localize
%files translations-common -f %{_tmppath}/translations.common
%defattr(-,root,root)
@ -471,7 +483,6 @@ exit 0
%files devel
%defattr(-,root,root)
%{_libdir}/%{progname}/*.a
%{_libdir}/%{progname}/regxpcom
%{_libdir}/%{progname}/xpidl
%{_libdir}/%{progname}/xpt_dump
%{_libdir}/%{progname}/xpt_link
@ -479,7 +490,6 @@ exit 0
%{_includedir}/%{progname}/
%if %build_enigmail
%files -n enigmail
%defattr(-,root,root)
%dir %{_libdir}/mozilla
@ -487,7 +497,6 @@ exit 0
%endif
%if %crashreporter
%files buildsymbols
%defattr(-,root,root)
%{_datadir}/mozilla/

3
compare-locales.tar.bz2 Normal file
View File

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

View File

@ -1,9 +1,9 @@
#!/bin/bash
BRANCH="releases/comm-1.9.2" # comm-central
RELEASE_TAG="THUNDERBIRD_3_1_11_RELEASE"
VERSION="3.1.11"
BRANCH="releases/comm-miramar"
RELEASE_TAG="THUNDERBIRD_5_0_RELEASE "
VERSION="5.0"
echo "cloning $BRANCH..."
hg clone http://hg.mozilla.org/$BRANCH thunderbird
@ -12,7 +12,7 @@ hg update -r $RELEASE_TAG
echo "running client.py..."
[ "$RELEASE_TAG" == "default" ] || _extra="--comm-rev=$RELEASE_TAG --mozilla-rev=$RELEASE_TAG"
# temporary!
_extra="--mozilla-repo=http://hg.mozilla.org/releases/mozilla-1.9.2 $_extra"
#_extra="--mozilla-repo=http://hg.mozilla.org/releases/mozilla-miramar $_extra"
python client.py checkout --skip-chatzilla --skip-venkman $_extra
popd
echo "creating archive..."
@ -24,7 +24,7 @@ echo "fetching locales..."
if [ -e shipped-locales ]; then
SHIPPED_LOCALES=shipped-locales
else
SHIPPED_LOCALES=thunderbird/mail/locales/shipped-locales
SHIPPED_LOCALES=thunderbird/mail/locales/all-locales
fi
test ! -d l10n && mkdir l10n
for locale in $(awk '{ print $1; }' $SHIPPED_LOCALES); do
@ -33,7 +33,7 @@ for locale in $(awk '{ print $1; }' $SHIPPED_LOCALES); do
;;
*)
echo "fetching $locale ..."
hg clone http://hg.mozilla.org/releases/l10n-mozilla-1.9.2/$locale l10n/$locale
hg clone http://hg.mozilla.org/releases/l10n-miramar/$locale l10n/$locale
hg -R l10n/$locale up -C -r $RELEASE_TAG
;;
esac
@ -43,3 +43,8 @@ tar cjf l10n-$VERSION.tar.bz2 \
--exclude=.hgtags --exclude=.hgignore --exclude=.hg --exclude=browser --exclude=calendar \
--exclude=suite \
l10n
# compare-locales
hg clone http://hg.mozilla.org/build/compare-locales
tar cjf compare-locales.tar.bz2 --exclude=.hgtags --exclude=.hgignore --exclude=.hg compare-locales

View File

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

3
enigmail-1.1.99.tar.bz2 Normal file
View File

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

68
enigmail-cz-CZ-fix.patch Normal file
View File

@ -0,0 +1,68 @@
---
lang/cs-CZ/enigmail.dtd | 44 ++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 42 insertions(+), 2 deletions(-)
--- a/lang/cs-CZ/enigmail.dtd
+++ b/lang/cs-CZ/enigmail.dtd
@@ -73,7 +73,7 @@
<!ENTITY enigmail.doubleDashSeparator.label "'--' je oddělovač podpisu">
<!ENTITY enigmail.useGpgAgent.label "Použít gpg-agenta pro heslo">
<!ENTITY enigmail.noHushMailSupport.label "Použít '&lt;' a '&gt;' k určení e-mailové adresy">
-<!ENTITY enigmail.keepSettingsForReply.tooltip "Pokud je to možné, šifrovat odpověď na zašifrovanou zprávu">
+<!ENTITY enigmail.keepCryptoSettingsForReply.tooltip "Pokud je to možné, šifrovat odpověď na zašifrovanou zprávu">
<!ENTITY enigmail.doubleDashSeparator.tooltip "Samotné dvě pomlčky na řádku označí blok s podpisem">
<!ENTITY enigmail.useGpgAgent.tooltip "Použít gpg-agenta (součást GnuPG 2) pro všechny vstupy hesla">
<!ENTITY enigmail.noHushMailSupport.tooltip "Použít '&lt;' a '&gt;' znaky pro určení e-mailové adresy pro GnuPG. Zakažte, pokud příjemce používá staré klíče Hushmail.">
@@ -174,7 +174,7 @@
<!ENTITY enigmail.defineRules.label "Upravit pravidla ...">
<!ENTITY enigmail.defineRules.tooltip "Klepněte sem pro zobrazení, přidání, odstranění či úpravu pravidel pro výběr klíče.">
<!ENTITY enigmail.usePGPMimeAlways.label "Vždy použít PGP/MIME">
-<!ENTITY enigmail.keepSettingsForReply.label "Šifrovat odpovědi na zašifrované zprávy">
+<!ENTITY enigmail.keepCryptoSettingsForReply.label "Šifrovat odpovědi na zašifrované zprávy">
<!ENTITY enigmail.confirmBeforeSend.label "Před odesláním vždy potvrdit">
<!ENTITY enigmail.confirmBeforeSend.tooltip "Aktivovat pro zobrazení informace o podpisu/šifrování zprávy před odesláním">
<!ENTITY enigmail.wrapHtmlBeforeSend.label "Znovu zalomit podepsaný HTML text před odesláním">
@@ -556,3 +556,43 @@
<!ENTITY enigmail.setupWiz.pgNoStart.desc "Rozhodl/a jste se nepoužívat Průvodce pro konfiguraci OpenPGP.<html:br/><html:br/>Děkujeme za používání Enigmailu.">
<!ENTITY enigmail.advancedIdentityDlg.title "Rozšířené nastavení OpenPGP pro identitu">
<!ENTITY enigmail.amPrefPgp.sendKeyWithMsg.label "Připojit ke zprávě můj veřejný klíč">
+<!ENTITY enigmail.msgViewColumn.label "OpenPGP">
+<!ENTITY enigmail.msgViewColumn.tooltip "Seřadit podle stavu OpenGPG">
+<!ENTITY enigmail.displayKeyProperties.label "Zobrazit vlastnosti klíče">
+<!ENTITY enigmail.revealAttachmentsButton.label "Jména přiložených souborů jsou skryta. Stikněte tlačítko 'Odmaskovat' k zobrazení originálních jmen.">
+<!ENTITY enigmail.ctxVerifyAtt.label "Ověřit podpis">
+<!ENTITY enigmail.ctxVerifyAtt.accesskey "v">
+<!ENTITY enigmail.keyMan.createMail.label "Napsat e-mail vybraným klíčům">
+<!ENTITY enigmail.keyMan.createMail.accesskey "N">
+<!ENTITY enigmail.keyMan.addToPRRule.label "Přidat pravidlo k jednotlivým příjemncům">
+<!ENTITY enigmail.keyMan.addPhoto.label "Přidat fotku">
+<!ENTITY enigmail.keyMan.addPhoto.accesskey "P">
+
+<!ENTITY enigmail.addPhoto.question.label "Opravdu si přejete přidat následující obrázek k následujícímu klíčí?">
+<!ENTITY enigmail.addPhoto.title "Přidat fotku ke klíči">
+<!ENTITY enigmail.addToRule.newRuleButton.accesskey "N">
+<!ENTITY enigmail.addToRule.newRuleButton.label "Vytvořit nové pravidlo">
+<!ENTITY enigmail.addToRule.title "Přidat klíč k jednotlivému pravidlu">
+<!ENTITY enigmail.addToRule.useRuleButton.accesskey "A">
+<!ENTITY enigmail.addToRule.useRuleButton.label "Přidat klíč k vybranému pravidlu">
+<!ENTITY enigmail.encDlgIgnoreRules.accesskey "I">
+<!ENTITY enigmail.encDlgIgnoreRules.label "Ignorovat jednotlivá pravidla">
+<!ENTITY enigmail.keyMan.showInvalidKeys.accesskey "D">
+<!ENTITY enigmail.keyMan.showInvalidKeys.label "Zobrazit nevalidní klíče">
+<!ENTITY enigmail.keyMan.showOthersKeys.accesskey "O">
+<!ENTITY enigmail.keyMan.showOthersKeys.label "Zobrazit klíče od ostatních osob">
+<!ENTITY enigmail.keyMan.showUntrustedKeys.accesskey "U">
+<!ENTITY enigmail.keyMan.showUntrustedKeys.label "Zobrazit nedůvěryhodné klíče">
+<!ENTITY enigmail.photoViewer.title "OpenPGP -- zobrazení fotek">
+<!ENTITY enigmail.setupWiz.pgKeyImport.desc "Pro import zadejte soubory obsahující veřejný a soukromý klíč.
+ Kolonka pro soukromý klíč může zůstat prázdná v případě, že první soubor obsahuje
+ oba klíče.">
+<!ENTITY enigmail.setupWiz.pgKeyImport.pubkeyFile "Soubor s veřejným klíčem">
+<!ENTITY enigmail.setupWiz.pgKeyImport.seckeyFile "Soubor se soukromým klíčem">
+<!ENTITY enigmail.setupWiz.pgKeyImport.subtitle "Zadejte soubory k importu">
+<!ENTITY enigmail.setupWiz.pgKeyImport.title "Importovat klíče OpenPGP">
+<!ENTITY enigmail.setupWiz.pgNoKeyFound.desc "Nelze nalézt žádný OpenPGP klíč. Níže zvolte, zda chcete vytvořit nový pár klíčů,
+ nebo zda chcete importovat již existující klíč.">
+<!ENTITY enigmail.setupWiz.pgNoKeyFound.importKey "Mám existující klíče, které chci importovat">
+<!ENTITY enigmail.setupWiz.pgNoKeyFound.subtitle "Nelze nalézt žádné OpenPGP klíče">
+<!ENTITY enigmail.setupWiz.pgNoKeyFound.title "Žádný OpenPGP klíč nenalezen">

View File

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

3
l10n-5.0.tar.bz2 Normal file
View File

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

1333
mozilla-cairo-lcd.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
# HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org>
# Parent e36e1a20cb5e1ba0e4bc3facac58029544d92e0a
Bug 631155 - undefined return value in function '_cairo_surface_wrapper_flush'
diff --git a/gfx/cairo/cairo/src/cairo-surface-wrapper.c b/gfx/cairo/cairo/src/cairo-surface-wrapper.c
--- a/gfx/cairo/cairo/src/cairo-surface-wrapper.c
+++ b/gfx/cairo/cairo/src/cairo-surface-wrapper.c
@@ -526,9 +526,12 @@ _cairo_surface_wrapper_fini (cairo_surfa
}
cairo_status_t
_cairo_surface_wrapper_flush (cairo_surface_wrapper_t *wrapper)
{
if (wrapper->target->backend->flush) {
return wrapper->target->backend->flush(wrapper->target);
}
+
+ // this is preliminary to cool down gcc and build checks
+ return CAIRO_STATUS_SUCCESS;
}

View File

@ -1,105 +0,0 @@
See the following bug reports;
https://bugzilla.mozilla.org/show_bug.cgi?id=623116
https://bugzilla.mozilla.org/show_bug.cgi?id=623123
https://bugzilla.mozilla.org/show_bug.cgi?id=623126
https://bugzilla.mozilla.org/show_bug.cgi?id=628371
diff --git a/xpcom/base/nsDebugImpl.h b/xpcom/base/nsDebugImpl.h
--- a/xpcom/base/nsDebugImpl.h
+++ b/xpcom/base/nsDebugImpl.h
@@ -40,6 +40,7 @@
class nsDebugImpl : public nsIDebug2
{
public:
+ nsDebugImpl() {}
NS_DECL_ISUPPORTS
NS_DECL_NSIDEBUG
NS_DECL_NSIDEBUG2
diff --git a/xpcom/base/nsTraceRefcntImpl.h b/xpcom/base/nsTraceRefcntImpl.h
--- a/xpcom/base/nsTraceRefcntImpl.h
+++ b/xpcom/base/nsTraceRefcntImpl.h
@@ -44,6 +44,7 @@
class nsTraceRefcntImpl : public nsITraceRefcnt
{
public:
+ nsTraceRefcntImpl() {}
NS_DECL_ISUPPORTS
NS_DECL_NSITRACEREFCNT
diff --git a/xpcom/glue/nsEnumeratorUtils.cpp b/xpcom/glue/nsEnumeratorUtils.cpp
--- a/xpcom/glue/nsEnumeratorUtils.cpp
+++ b/xpcom/glue/nsEnumeratorUtils.cpp
@@ -52,6 +52,7 @@ class EmptyEnumeratorImpl : public nsISi
public nsIStringEnumerator
{
public:
+ EmptyEnumeratorImpl() {}
// nsISupports interface
NS_DECL_ISUPPORTS_INHERITED // not really inherited, but no mRefCnt
diff --git a/xpcom/io/nsUnicharInputStream.h b/xpcom/io/nsUnicharInputStream.h
--- a/xpcom/io/nsUnicharInputStream.h
+++ b/xpcom/io/nsUnicharInputStream.h
@@ -51,6 +51,7 @@ class nsSimpleUnicharStreamFactory :
private nsISimpleUnicharStreamFactory
{
public:
+ nsSimpleUnicharStreamFactory() {}
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIFACTORY
NS_DECL_NSISIMPLEUNICHARSTREAMFACTORY
diff --git a/intl/unicharutil/util/nsUnicharUtils.h b/intl/unicharutil/util/nsUnicharUtils.h
--- a/intl/unicharutil/util/nsUnicharUtils.h
+++ b/intl/unicharutil/util/nsUnicharUtils.h
@@ -103,6 +103,7 @@ public:
class nsCaseInsensitiveStringComparator : public nsStringComparator
{
public:
+ nsCaseInsensitiveStringComparator() {}
virtual int operator() (const PRUnichar*,
const PRUnichar*,
PRUint32 aLength) const;
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -616,6 +616,7 @@ class nsXULAppInfo : public nsIXULAppInf
{
public:
+ nsXULAppInfo() {}
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIXULAPPINFO
NS_DECL_NSIXULRUNTIME
diff --git a/embedding/browser/gtk/src/EmbedPrivate.cpp b/embedding/browser/gtk/src/EmbedPrivate.cpp
index 57fd9b1..0052ca7 100644
--- a/embedding/browser/gtk/src/EmbedPrivate.cpp
+++ b/embedding/browser/gtk/src/EmbedPrivate.cpp
@@ -99,6 +99,7 @@ nsIDirectoryServiceProvider *EmbedPrivate::sAppFileLocProvider = nsnull;
class GTKEmbedDirectoryProvider : public nsIDirectoryServiceProvider2
{
public:
+ GTKEmbedDirectoryProvider() {}
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIDIRECTORYSERVICEPROVIDER
NS_DECL_NSIDIRECTORYSERVICEPROVIDER2
--- a/gfx/ots/src/os2.cc 2011-02-22 09:34:58.000000000 +0100
+++ b/gfx/ots/src/os2.cc 2011-03-25 10:08:02.183485823 +0100
@@ -5,6 +5,7 @@
#include "os2.h"
#include "head.h"
+#include <stddef.h>
// OS/2 - OS/2 and Windows Metrics
// http://www.microsoft.com/opentype/otspec/os2.htm
--- a/toolkit/crashreporter/google-breakpad/src/common/linux/language.cc 2011-02-22 09:35:48.000000000 +0100
+++ b/toolkit/crashreporter/google-breakpad/src/common/linux/language.cc 2011-03-25 10:33:34.367485573 +0100
@@ -39,6 +39,7 @@
// C++ language-specific operations.
class CPPLanguage: public Language {
public:
+ CPPLanguage() {};
string MakeQualifiedName(const string &parent_name,
const string &name) const {
if (parent_name.empty())

View File

@ -1,31 +0,0 @@
# HG changeset patch
# Parent ca3a2bf92df09c5425fa1b2486366d40ed757fa1
Fix compilation with Gnome > 2.30
diff --git a/toolkit/system/gnome/Makefile.in b/toolkit/system/gnome/Makefile.in
--- a/toolkit/system/gnome/Makefile.in
+++ b/toolkit/system/gnome/Makefile.in
@@ -77,21 +77,23 @@ endif
EXTRA_DSO_LDOPTS += \
$(XPCOM_GLUE_LDOPTS) \
$(XPCOM_FROZEN_LDOPTS) \
$(NSPR_LIBS) \
$(MOZ_GCONF_LIBS) \
$(MOZ_GNOMEVFS_LIBS) \
$(GLIB_LIBS) \
$(MOZ_LIBNOTIFY_LIBS) \
+ $(MOZ_GTK2_LIBS) \
$(NULL)
LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/components/build/
include $(topsrcdir)/config/rules.mk
CXXFLAGS += \
$(MOZ_GTK2_CFLAGS) \
$(MOZ_GCONF_CFLAGS) \
$(MOZ_GNOMEVFS_CFLAGS) \
$(GLIB_CFLAGS) \
$(MOZ_LIBNOTIFY_CFLAGS) \
+ $(MOZ_GTK2_CFLAGS) \
$(NULL)

284
mozilla-gio.patch Normal file
View File

@ -0,0 +1,284 @@
# HG changeset patch
# User Chris Coulson
# Parent 0ebe30f9eacfe67fa0b699457e524d5a9c96359e
Bug 611953 - GNOME 3.0 readiness (patch 2 + 3)
diff --git a/toolkit/system/gnome/nsGIOService.cpp b/toolkit/system/gnome/nsGIOService.cpp
--- a/toolkit/system/gnome/nsGIOService.cpp
+++ b/toolkit/system/gnome/nsGIOService.cpp
@@ -101,25 +101,25 @@ nsGIOMimeApp::GetName(nsACString& aName)
return NS_OK;
}
NS_IMETHODIMP
nsGIOMimeApp::GetCommand(nsACString& aCommand)
{
get_commandline_t g_app_info_get_commandline_ptr;
- void *libHandle = dlopen("libgio-2.0.so", RTLD_LAZY);
+ void *libHandle = dlopen("libgio-2.0.so.0", RTLD_LAZY);
if (!libHandle) {
return NS_ERROR_FAILURE;
}
dlerror(); /* clear any existing error */
g_app_info_get_commandline_ptr =
(get_commandline_t) dlsym(libHandle, "g_app_info_get_commandline");
- if (dlerror() != NULL) {
- const char cmd = *g_app_info_get_commandline_ptr(mApp);
+ if (dlerror() == NULL) {
+ const char *cmd = g_app_info_get_commandline_ptr(mApp);
if (!cmd) {
dlclose(libHandle);
return NS_ERROR_FAILURE;
}
aCommand.Assign(cmd);
}
dlclose(libHandle);
return NS_OK;
@@ -277,16 +277,43 @@ nsGIOMimeApp::SetAsDefaultForFileExtensi
} else {
*ext_pos = '\0';
}
}
g_free(extensions);
return NS_OK;
}
+/**
+ * Set default application for URI's of a particular scheme
+ * @param aURIScheme string containing the URI scheme
+ * @return NS_OK when application was set as default for URI scheme,
+ * NS_ERROR_FAILURE otherwise
+ */
+NS_IMETHODIMP
+nsGIOMimeApp::SetAsDefaultForURIScheme(nsACString const& aURIScheme)
+{
+ GError *error = NULL;
+ nsCAutoString contentType("x-scheme-handler/");
+ contentType.Append(aURIScheme);
+
+ g_app_info_set_as_default_for_type(mApp,
+ contentType.get(),
+ &error);
+ if (error) {
+ g_warning("Cannot set application as default for URI scheme (%s): %s",
+ PromiseFlatCString(aURIScheme).get(),
+ error->message);
+ g_error_free(error);
+ return NS_ERROR_FAILURE;
+ }
+
+ return NS_OK;
+}
+
nsresult
nsGIOService::Init()
{
// do nothing, gvfs/gio does not init.
return NS_OK;
}
NS_IMPL_ISUPPORTS1(nsGIOService, nsIGIOService)
@@ -317,29 +344,45 @@ nsGIOService::GetMimeTypeFromExtension(c
g_free(mime_type);
g_free(content_type);
return NS_OK;
}
// used in nsGNOMERegistry
// -----------------------------------------------------------------------------
NS_IMETHODIMP
+nsGIOService::GetAppForURIScheme(const nsACString& aURIScheme,
+ nsIGIOMimeApp** aApp)
+{
+ *aApp = nsnull;
+
+ GAppInfo *app_info = g_app_info_get_default_for_uri_scheme(
+ PromiseFlatCString(aURIScheme).get());
+ if (app_info) {
+ nsGIOMimeApp *mozApp = new nsGIOMimeApp(app_info);
+ NS_ADDREF(*aApp = mozApp);
+ } else {
+ return NS_ERROR_FAILURE;
+ }
+ return NS_OK;
+}
+
+NS_IMETHODIMP
nsGIOService::GetAppForMimeType(const nsACString& aMimeType,
nsIGIOMimeApp** aApp)
{
*aApp = nsnull;
char *content_type =
get_content_type_from_mime_type(PromiseFlatCString(aMimeType).get());
if (!content_type)
return NS_ERROR_FAILURE;
GAppInfo *app_info = g_app_info_get_default_for_type(content_type, false);
if (app_info) {
nsGIOMimeApp *mozApp = new nsGIOMimeApp(app_info);
- NS_ENSURE_TRUE(mozApp, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(*aApp = mozApp);
} else {
g_free(content_type);
return NS_ERROR_FAILURE;
}
g_free(content_type);
return NS_OK;
}
@@ -414,75 +457,46 @@ nsGIOService::CreateAppFromCommand(nsACS
nsIGIOMimeApp** appInfo)
{
GError *error = NULL;
*appInfo = nsnull;
GAppInfo *app_info = NULL, *app_info_from_list = NULL;
GList *apps = g_app_info_get_all();
GList *apps_p = apps;
- get_commandline_t g_app_info_get_commandline_ptr;
-
- void *libHandle = dlopen("libgio-2.0.so", RTLD_LAZY);
- if (!libHandle) {
- return NS_ERROR_FAILURE;
- }
- dlerror(); /* clear any existing error */
- g_app_info_get_commandline_ptr =
- (get_commandline_t) dlsym(libHandle, "g_app_info_get_commandline");
- if (dlerror() != NULL) {
- g_app_info_get_commandline_ptr = NULL;
- }
// Try to find relevant and existing GAppInfo in all installed application
+ // We do this by comparing each GAppInfo's executable with out own
while (apps_p) {
app_info_from_list = (GAppInfo*) apps_p->data;
- /* This is a silly test. It just compares app names but not
- * commands. This is due to old version of Glib/Gio. The required
- * function which allows to do a regular check of existence of desktop file
- * is possible by using function g_app_info_get_commandline. This function
- * has been introduced in Glib 2.20. */
- if (app_info_from_list && strcmp(g_app_info_get_name(app_info_from_list),
- PromiseFlatCString(appName).get()) == 0 )
- {
- if (g_app_info_get_commandline_ptr)
- {
- /* Following test is only possible with Glib >= 2.20.
- * Compare path only by using strncmp */
- if (strncmp(g_app_info_get_commandline_ptr(app_info_from_list),
- PromiseFlatCString(cmd).get(),
- strlen(PromiseFlatCString(cmd).get())) == 0)
- {
- app_info = app_info_from_list;
- break;
- } else {
- g_object_unref(app_info_from_list);
- }
- } else {
+ if (!app_info) {
+ // If the executable is not absolute, get it's full path
+ char *executable = g_find_program_in_path(g_app_info_get_executable(app_info_from_list));
+
+ if (executable && strcmp(executable, PromiseFlatCString(cmd).get()) == 0) {
+ g_object_ref (app_info_from_list);
app_info = app_info_from_list;
- break;
}
- } else {
- g_object_unref(app_info_from_list);
+ g_free(executable);
}
+
+ g_object_unref(app_info_from_list);
apps_p = apps_p->next;
}
g_list_free(apps);
if (!app_info) {
app_info = g_app_info_create_from_commandline(PromiseFlatCString(cmd).get(),
PromiseFlatCString(appName).get(),
G_APP_INFO_CREATE_SUPPORTS_URIS,
&error);
}
if (!app_info) {
g_warning("Cannot create application info from command: %s", error->message);
g_error_free(error);
- dlclose(libHandle);
return NS_ERROR_FAILURE;
}
nsGIOMimeApp *mozApp = new nsGIOMimeApp(app_info);
NS_ENSURE_TRUE(mozApp, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(*appInfo = mozApp);
- dlclose(libHandle);
return NS_OK;
}
diff --git a/xpcom/system/nsIGIOService.idl b/xpcom/system/nsIGIOService.idl
--- a/xpcom/system/nsIGIOService.idl
+++ b/xpcom/system/nsIGIOService.idl
@@ -39,17 +39,17 @@
#include "nsISupports.idl"
interface nsIUTF8StringEnumerator;
interface nsIURI;
/* nsIGIOMimeApp holds information about an application that is looked up
with nsIGIOService::GetAppForMimeType. */
-// 66009894-9877-405b-9321-bf30420e34e6 prev uuid
+// e77021b4-4012-407d-b686-7a1f18050109 prev uuid
[scriptable, uuid(e77021b4-4012-407d-b686-7a1f18050109)]
interface nsIGIOMimeApp : nsISupports
{
const long EXPECTS_URIS = 0;
const long EXPECTS_PATHS = 1;
const long EXPECTS_URIS_FOR_NON_FILES = 2;
@@ -57,41 +57,45 @@ interface nsIGIOMimeApp : nsISupports
readonly attribute AUTF8String name;
readonly attribute AUTF8String command;
readonly attribute long expectsURIs; // see constants above
readonly attribute nsIUTF8StringEnumerator supportedURISchemes;
void launch(in AUTF8String uri);
void setAsDefaultForMimeType(in AUTF8String mimeType);
void setAsDefaultForFileExtensions(in AUTF8String extensions);
+ void setAsDefaultForURIScheme(in AUTF8String uriScheme);
};
/*
* The VFS service makes use of two distinct registries.
*
* The application registry holds information about applications (uniquely
* identified by id), such as which MIME types and URI schemes they are
* capable of handling, whether they run in a terminal, etc.
*
* The MIME registry holds information about MIME types, such as which
* extensions map to a given MIME type. The MIME registry also stores the
* id of the application selected to handle each MIME type.
*/
-// prev id dea20bf0-4e4d-48c5-b932-dc3e116dc64b
-[scriptable, uuid(47e372c2-78bb-4899-8114-56aa7d9cdac5)]
+// prev id 47e372c2-78bb-4899-8114-56aa7d9cdac5
+[scriptable, uuid(74ca8791-330d-4786-9569-2a2a19f0b486)]
interface nsIGIOService : nsISupports
{
/*** MIME registry methods ***/
/* Obtain the MIME type registered for an extension. The extension
should not include a leading dot. */
AUTF8String getMimeTypeFromExtension(in AUTF8String extension);
+ /* Obtain the preferred application for opening a given URI scheme */
+ nsIGIOMimeApp getAppForURIScheme(in AUTF8String aURIScheme);
+
/* Obtain the preferred application for opening a given MIME type */
nsIGIOMimeApp getAppForMimeType(in AUTF8String mimeType);
/* Obtain the preferred application for opening a given MIME type */
nsIGIOMimeApp createAppFromCommand(in AUTF8String cmd,
in AUTF8String appName);
/* Obtain a description for the given MIME type */

48
mozilla-language.patch Normal file
View File

@ -0,0 +1,48 @@
# HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org>
# Parent db620d83124746201970dcf50c661957df979eca
Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE
diff --git a/intl/locale/src/nsLocaleService.cpp b/intl/locale/src/nsLocaleService.cpp
--- a/intl/locale/src/nsLocaleService.cpp
+++ b/intl/locale/src/nsLocaleService.cpp
@@ -181,16 +181,17 @@ nsLocaleService::nsLocaleService(void)
}
#ifdef MOZ_WIDGET_QT
const char* lang = QLocale::system().name().toAscii();
#else
// Get system configuration
const char* lang = getenv("LANG");
+ const char* language = getenv("LANGUAGE");
#endif
for( i = 0; i < LocaleListLength; i++ ) {
nsresult result;
// setlocale( , "") evaluates LC_* and LANG
char* lc_temp = setlocale(posix_locale_category[i], "");
CopyASCIItoUTF16(LocaleList[i], category);
category_platform = category;
@@ -206,16 +207,21 @@ nsLocaleService::nsLocaleService(void)
else {
CopyASCIItoUTF16(lang, platformLocale);
result = posixConverter->GetXPLocale(lang, xpLocale);
}
}
if (NS_FAILED(result)) {
return;
}
+ // LANGUAGE is overriding LC_MESSAGES
+ if (i == LC_MESSAGES && language && *language) {
+ CopyASCIItoUTF16(language, platformLocale);
+ result = posixConverter->GetXPLocale(language, xpLocale);
+ }
resultLocale->AddCategory(category, xpLocale);
resultLocale->AddCategory(category_platform, platformLocale);
}
mSystemLocale = do_QueryInterface(resultLocale);
mApplicationLocale = do_QueryInterface(resultLocale);
} // if ( NS_SUCCEEDED )...
#endif // XP_UNIX

View File

@ -1,13 +1,13 @@
From: Hans Petter Jansson <hpj@copyleft.no>
Wolfgang Rosenauer <wr@rosenauer.org>
Subject: use libnsssharedhelper if available at compile time
(can be disabled by exporting MOZ_XRE_NO_NSSHELPER=1)
(can be disabled by exporting MOZ_TB_NO_NSSHELPER=1)
References:
diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
--- a/config/autoconf.mk.in
+++ b/config/autoconf.mk.in
@@ -561,16 +561,20 @@ MOZ_ENABLE_LIBNOTIFY = @MOZ_ENABLE_LIBNO
@@ -571,16 +571,20 @@ MOZ_ALSA_LIBS = @MOZ_ALSA_LIBS
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
@ -22,30 +22,30 @@ diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
+
MOZ_NATIVE_MAKEDEPEND = @SYSTEM_MAKEDEPEND@
export CL_INCLUDES_PREFIX = @CL_INCLUDES_PREFIX@
MOZ_AUTO_DEPS = @MOZ_AUTO_DEPS@
COMPILER_DEPEND = @COMPILER_DEPEND@
MDDEPDIR := @MDDEPDIR@
MOZ_DEMANGLE_SYMBOLS = @MOZ_DEMANGLE_SYMBOLS@
CC_WRAPPER = @CC_WRAPPER@
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
@@ -8016,16 +8016,32 @@ AC_SUBST(QCMS_LIBS)
@@ -8610,16 +8610,31 @@ AC_SUBST(QCMS_LIBS)
dnl ========================================================
dnl OTS
dnl HarfBuzz
dnl ========================================================
MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
AC_SUBST(MOZ_OTS_LIBS)
MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
AC_SUBST(MOZ_HARFBUZZ_LIBS)
dnl ========================================================
+dnl Check for nss-shared-helper
+dnl ========================================================
+
+ PKG_CHECK_MODULES(NSSHELPER, nss-shared-helper,
+ [MOZ_ENABLE_NSSHELPER=1],
+ [MOZ_ENABLE_NSSHELPER=])
+ [MOZ_ENABLE_NSSHELPER=1],
+ [MOZ_ENABLE_NSSHELPER=])
+
+if test "$MOZ_ENABLE_NSSHELPER"; then
+ AC_DEFINE(MOZ_ENABLE_NSSHELPER)
@ -54,21 +54,20 @@ diff --git a/configure.in b/configure.in
+AC_SUBST(NSSHELPER_CFLAGS)
+AC_SUBST(NSSHELPER_LIBS)
+
+
+dnl ========================================================
dnl OTS
dnl ========================================================
MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
AC_SUBST(MOZ_OTS_LIBS)
dnl ========================================================
dnl disable xul
dnl ========================================================
MOZ_ARG_DISABLE_BOOL(xul,
[ --disable-xul Disable XUL],
MOZ_XUL= )
if test "$MOZ_XUL"; then
AC_DEFINE(MOZ_XUL)
else
diff --git a/security/manager/ssl/src/Makefile.in b/security/manager/ssl/src/Makefile.in
--- a/security/manager/ssl/src/Makefile.in
+++ b/security/manager/ssl/src/Makefile.in
@@ -133,19 +133,20 @@ REQUIRES = nspr \
$(NULL)
@@ -117,19 +117,20 @@ CSRCS += md4.c
EXTRA_DEPS = $(NSS_DEP_LIBS)
@ -116,30 +115,34 @@ diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/
#include "nsNetUtil.h"
#include "nsAppDirectoryServiceDefs.h"
@@ -1606,17 +1613,31 @@ nsNSSComponent::InitializeNSS(PRBool sho
// The call to ConfigureInternalPKCS11Token needs to be done before NSS is initialized,
// but affects only static data.
// If we could assume i18n will not change between profiles, one call per application
// run were sufficient. As I can't predict what happens in the future, let's repeat
// this call for every re-init of NSS.
@@ -1658,18 +1665,34 @@ nsNSSComponent::InitializeNSS(PRBool sho
ConfigureInternalPKCS11Token();
- SECStatus init_rv = ::NSS_InitReadWrite(profileStr.get());
// The NSS_INIT_NOROOTINIT flag turns off the loading of the root certs
// module by NSS_Initialize because we will load it in InstallLoadableRoots
// later. It also allows us to work around a bug in the system NSS in
// Ubuntu 8.04, which loads any nonexistent "<configdir>/libnssckbi.so" as
// "/usr/lib/nss/libnssckbi.so".
PRUint32 init_flags = NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE;
- SECStatus init_rv = ::NSS_Initialize(profileStr.get(), "", "",
- SECMOD_DB, init_flags);
+ SECStatus init_rv = SECFailure;
+#ifdef MOZ_ENABLE_NSSHELPER
+ if (PR_GetEnv("MOZ_TB_NO_NSSHELPER")) {
+ init_rv = ::NSS_InitReadWrite(profileStr.get());
+ if (PR_GetEnv("MOZ_XRE_NO_NSSHELPER")) {
+ init_rv = ::NSS_Initialize(profileStr.get(), "", "",
+ SECMOD_DB, init_flags);
+ } else {
+ init_rv = ::nsshelp_open_db ("Thunderbird", profileStr.get(), 0);
+ init_rv = ::nsshelp_open_db ("Thunderbird", profileStr.get(), init_flags);
+
+ if (init_rv != SECSuccess) {
+ PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("can not init NSS using nsshelp_open_db in %s\n", profileStr.get()));
+ init_rv = ::NSS_InitReadWrite(profileStr.get());
+ init_rv = ::NSS_Initialize(profileStr.get(), "", "",
+ SECMOD_DB, init_flags);
+ }
+ }
+#else
+ init_rv = ::NSS_InitReadWrite(profileStr.get());
+ init_rv = ::NSS_Initialize(profileStr.get(), "", "",
+ SECMOD_DB, init_flags);
+#endif
if (init_rv != SECSuccess) {
@ -152,7 +155,7 @@ diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/
diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in
--- a/toolkit/library/Makefile.in
+++ b/toolkit/library/Makefile.in
@@ -189,17 +189,17 @@ else
@@ -169,17 +169,17 @@ ifndef MOZ_ENABLE_LIBXUL
EXTRA_DSO_LDOPTS += \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_JS_LIBS) \
@ -161,12 +164,12 @@ diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in
DEFINES += -DIMPL_XREAPI
-EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
+EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(NSSHELPER_LIBS)
-EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(MOZALLOC_LIB)
+EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(MOZALLOC_LIB) $(NSSHELPER_LIBS)
ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
CXXFLAGS += $(TK_CFLAGS)
EXTRA_DSO_LDOPTS += \
OS_LIBS += \
-framework SystemConfiguration \
-framework QuickTime \
-framework IOKit \

View File

@ -1,192 +0,0 @@
From: Wolfgang Rosenauer <wr@rosenauer.org>
Subject: XSMP restore doesn't work for Thunderbird
References:
https://bugzilla.mozilla.org/show_bug.cgi?id=508986
https://bugzilla.novell.com/show_bug.cgi?id=528406
diff --git a/toolkit/xre/nsNativeAppSupportUnix.cpp b/toolkit/xre/nsNativeAppSupportUnix.cpp
--- a/toolkit/xre/nsNativeAppSupportUnix.cpp
+++ b/toolkit/xre/nsNativeAppSupportUnix.cpp
@@ -94,108 +94,52 @@ typedef enum {
GNOME_DIALOG_NORMAL
} GnomeDialogType;
typedef GnomeProgram * (*_gnome_program_init_fn)(const char *, const char *,
const GnomeModuleInfo *, int,
char **, const char *, ...);
typedef const GnomeModuleInfo * (*_libgnomeui_module_info_get_fn)();
typedef GnomeClient * (*_gnome_master_client_fn)(void);
-typedef void (*GnomeInteractFunction)(GnomeClient *, gint, GnomeDialogType,
- gpointer);
-typedef void (*_gnome_client_request_interaction_fn)(GnomeClient *,
- GnomeDialogType,
- GnomeInteractFunction,
- gpointer);
-typedef void (*_gnome_interaction_key_return_fn)(gint, gboolean);
typedef void (*_gnome_client_set_restart_command_fn)(GnomeClient*, gint, gchar*[]);
-static _gnome_client_request_interaction_fn gnome_client_request_interaction;
-static _gnome_interaction_key_return_fn gnome_interaction_key_return;
static _gnome_client_set_restart_command_fn gnome_client_set_restart_command;
-void interact_cb(GnomeClient *client, gint key,
- GnomeDialogType type, gpointer data)
-{
- nsCOMPtr<nsIObserverService> obsServ =
- do_GetService("@mozilla.org/observer-service;1");
- nsCOMPtr<nsISupportsPRBool> cancelQuit =
- do_CreateInstance(NS_SUPPORTS_PRBOOL_CONTRACTID);
-
- cancelQuit->SetData(PR_FALSE);
-
- obsServ->NotifyObservers(cancelQuit, "quit-application-requested", nsnull);
-
- PRBool abortQuit;
- cancelQuit->GetData(&abortQuit);
-
- gnome_interaction_key_return(key, abortQuit);
-}
-
gboolean save_yourself_cb(GnomeClient *client, gint phase,
GnomeSaveStyle style, gboolean shutdown,
GnomeInteractStyle interact, gboolean fast,
gpointer user_data)
{
- if (!shutdown)
- return TRUE;
-
nsCOMPtr<nsIObserverService> obsServ =
do_GetService("@mozilla.org/observer-service;1");
nsCOMPtr<nsISupportsPRBool> didSaveSession =
do_CreateInstance(NS_SUPPORTS_PRBOOL_CONTRACTID);
if (!obsServ || !didSaveSession)
return TRUE; // OOM
+ // Notify observers to save the session state
didSaveSession->SetData(PR_FALSE);
obsServ->NotifyObservers(didSaveSession, "session-save", nsnull);
PRBool status;
didSaveSession->GetData(&status);
- // Didn't save, or no way of saving. So signal for quit-application.
- if (!status) {
- if (interact == GNOME_INTERACT_ANY)
- gnome_client_request_interaction(client, GNOME_DIALOG_NORMAL,
- interact_cb, nsnull);
- return TRUE;
- }
-
- // Is there a request to suppress default binary launcher?
- char* argv1 = getenv("MOZ_APP_LAUNCHER");
+ // If there was no session saved and the save_yourself request is
+ // caused by upcoming shutdown we like to prepare for it
+ if (!status && shutdown) {
+ nsCOMPtr<nsISupportsPRBool> cancelQuit =
+ do_CreateInstance(NS_SUPPORTS_PRBOOL_CONTRACTID);
- if(!argv1) {
- // Tell GNOME the command for restarting us so that we can be part of XSMP session restore
- NS_ASSERTION(gDirServiceProvider, "gDirServiceProvider is NULL! This shouldn't happen!");
- nsCOMPtr<nsIFile> executablePath;
- nsresult rv;
+ cancelQuit->SetData(PR_FALSE);
+ obsServ->NotifyObservers(cancelQuit, "quit-application-requested", nsnull);
- PRBool dummy;
- rv = gDirServiceProvider->GetFile(XRE_EXECUTABLE_FILE, &dummy, getter_AddRefs(executablePath));
-
- if (NS_SUCCEEDED(rv)) {
- nsCAutoString path;
-
- // Strip off the -bin suffix to get the shell script we should run; this is what Breakpad does
- nsCAutoString leafName;
- rv = executablePath->GetNativeLeafName(leafName);
- if (NS_SUCCEEDED(rv) && StringEndsWith(leafName, NS_LITERAL_CSTRING("-bin"))) {
- leafName.SetLength(leafName.Length() - strlen("-bin"));
- executablePath->SetNativeLeafName(leafName);
- }
-
- executablePath->GetNativePath(path);
- argv1 = (char*)(path.get());
- }
- }
-
- if(argv1) {
- gnome_client_set_restart_command(client, 1, &argv1);
+ PRBool abortQuit;
+ cancelQuit->GetData(&abortQuit);
}
return TRUE;
}
void die_cb(GnomeClient *client, gpointer user_data)
{
nsCOMPtr<nsIAppStartup> appService =
@@ -446,29 +390,59 @@ nsNativeAppSupportUnix::Start(PRBool *aR
}
#endif
// Careful! These libraries cannot be unloaded after this point because
// gnome_program_init causes atexit handlers to be registered. Strange
// crashes will occur if these libraries are unloaded.
#ifdef MOZ_X11
- gnome_client_request_interaction = (_gnome_client_request_interaction_fn)
- PR_FindFunctionSymbol(gnomeuiLib, "gnome_client_request_interaction");
- gnome_interaction_key_return = (_gnome_interaction_key_return_fn)
- PR_FindFunctionSymbol(gnomeuiLib, "gnome_interaction_key_return");
gnome_client_set_restart_command = (_gnome_client_set_restart_command_fn)
PR_FindFunctionSymbol(gnomeuiLib, "gnome_client_set_restart_command");
_gnome_master_client_fn gnome_master_client = (_gnome_master_client_fn)
PR_FindFunctionSymbol(gnomeuiLib, "gnome_master_client");
GnomeClient *client = gnome_master_client();
g_signal_connect(client, "save-yourself", G_CALLBACK(save_yourself_cb), NULL);
g_signal_connect(client, "die", G_CALLBACK(die_cb), NULL);
+
+ // Set the correct/requested restart command in any case.
+
+ // Is there a request to suppress default binary launcher?
+ char* argv1 = getenv("MOZ_APP_LAUNCHER");
+
+ if(!argv1) {
+ // Tell the desktop the command for restarting us so that we can be part of XSMP session restore
+ NS_ASSERTION(gDirServiceProvider, "gDirServiceProvider is NULL! This shouldn't happen!");
+ nsCOMPtr<nsIFile> executablePath;
+ nsresult rv;
+
+ PRBool dummy;
+ rv = gDirServiceProvider->GetFile(XRE_EXECUTABLE_FILE, &dummy, getter_AddRefs(executablePath));
+
+ if (NS_SUCCEEDED(rv)) {
+ nsCAutoString path;
+
+ // Strip off the -bin suffix to get the shell script we should run; this is what Breakpad does
+ nsCAutoString leafName;
+ rv = executablePath->GetNativeLeafName(leafName);
+ if (NS_SUCCEEDED(rv) && StringEndsWith(leafName, NS_LITERAL_CSTRING("-bin"))) {
+ leafName.SetLength(leafName.Length() - strlen("-bin"));
+ executablePath->SetNativeLeafName(leafName);
+ }
+
+ executablePath->GetNativePath(path);
+ argv1 = (char*)(path.get());
+ }
+ }
+
+ if (argv1) {
+ gnome_client_set_restart_command(client, 1, &argv1);
+ }
#endif /* MOZ_X11 */
return NS_OK;
}
NS_IMETHODIMP
nsNativeAppSupportUnix::Stop(PRBool *aResult)
{

View File

@ -59,11 +59,20 @@ MOZ_DIST_LIB="%PROGDIR"
MOZ_APPNAME="%APPNAME"
MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME-bin"
export MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh"
MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh"
if [ "$0" = "$MOZ_APP_LAUNCHER" ]; then
[ -h "/usr/bin/$MOZ_APPNAME" ] && \
_link=$(readlink -f "/usr/bin/$MOZ_APPNAME")
if [ "$_link" = "$MOZ_APP_LAUNCHER" ]; then
export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME"
fi
else
export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME"
fi
mozilla_lib=`file $MOZ_PROGRAM`
LIB=lib
echo $mozilla_lib | grep -q -E 'x86-64|s390x|ppc64' && LIB=lib64
echo $mozilla_lib | grep -q -E 'x86-64|s390x|64-bit.PowerPC' && LIB=lib64
BROWSER_PLUGIN_DIR=/usr/$LIB/browser-plugins
if [ ! -d $BROWSER_PLUGIN_DIR ]; then

View File

@ -1,6 +1,12 @@
--- config/autoconf.mk.in.orig 2009-02-11 20:12:19.000000000 +0100
+++ config/autoconf.mk.in 2009-02-11 20:13:15.000000000 +0100
@@ -60,11 +60,11 @@ MOZ_PKG_SPECIAL = @MOZ_PKG_SPECIAL@
diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
--- a/config/autoconf.mk.in
+++ b/config/autoconf.mk.in
@@ -56,21 +56,21 @@ MOZ_APP_NAME = @MOZ_APP_NAME@
MOZ_APP_DISPLAYNAME = @MOZ_APP_DISPLAYNAME@
MOZ_APP_VERSION = @MOZ_APP_VERSION@
MOZ_PKG_SPECIAL = @MOZ_PKG_SPECIAL@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
@ -10,7 +16,12 @@
datadir = @datadir@
mandir = @mandir@
-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+idldir = @libdir@/$(MOZ_APP_NAME)3
+idldir = $(datadir)/idl/$(MOZ_APP_NAME)3
installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
MOZDEPTH = $(DEPTH)/mozilla
DIST = $(MOZDEPTH)/dist
LIBXUL_SDK = @LIBXUL_SDK@

View File

@ -1,7 +1,7 @@
diff --git a/mail/installer/package-manifest.in b/mail/installer/package-manifest.in
--- a/mail/installer/package-manifest.in
+++ b/mail/installer/package-manifest.in
@@ -240,16 +240,17 @@
@@ -268,16 +268,17 @@
#ifdef XP_WIN32
@BINPATH@/nsldap32v60@DLL_SUFFIX@
@BINPATH@/nsldappr32v60@DLL_SUFFIX@
@ -18,4 +18,4 @@ diff --git a/mail/installer/package-manifest.in b/mail/installer/package-manifes
@BINPATH@/components/nsLoginInfo.js
@BINPATH@/components/nsLoginManager.js
@BINPATH@/components/nsLoginManagerPrompter.js
@BINPATH@/components/storage-Legacy.js
@BINPATH@/components/passwordmgr.manifest

View File

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

View File

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

View File

@ -1,26 +0,0 @@
diff --git a/mail/components/shell/nsMailGNOMEIntegration.cpp b/mail/components/shell/nsMailGNOMEIntegration.cpp
--- a/mail/components/shell/nsMailGNOMEIntegration.cpp
+++ b/mail/components/shell/nsMailGNOMEIntegration.cpp
@@ -93,16 +93,22 @@ nsMailGNOMEIntegration::Init()
rv = NS_GetSpecialDirectory(NS_XPCOM_CURRENT_PROCESS_DIR,
getter_AddRefs(appPath));
NS_ENSURE_SUCCESS(rv, rv);
rv = appPath->AppendNative(NS_LITERAL_CSTRING(MOZ_APP_NAME));
NS_ENSURE_SUCCESS(rv, rv);
rv = appPath->GetNativePath(mAppPath);
+
+ /* This path of thunderbird is hardcoded for the default path setting
+ * And the above code is not used.
+ */
+ mAppPath.Assign ("/usr/bin/thunderbird");
+
return rv;
}
NS_IMPL_ISUPPORTS1(nsMailGNOMEIntegration, nsIShellService)
NS_IMETHODIMP
nsMailGNOMEIntegration::IsDefaultClient(PRBool aStartupCheck, PRUint16 aApps, PRBool * aIsDefaultClient)

254
thunderbird-gio.patch Normal file
View File

@ -0,0 +1,254 @@
Bug 624341 - Update check for default mailer to work the new way (glib >= 2.27.1)
diff --git a/mail/components/shell/nsMailGNOMEIntegration.cpp b/mail/components/shell/nsMailGNOMEIntegration.cpp
--- a/mail/components/shell/nsMailGNOMEIntegration.cpp
+++ b/mail/components/shell/nsMailGNOMEIntegration.cpp
@@ -33,28 +33,30 @@
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsMailGNOMEIntegration.h"
#include "nsIGConfService.h"
+#include "nsIGIOService.h"
#include "nsCOMPtr.h"
#include "nsIServiceManager.h"
#include "prenv.h"
#include "nsIFile.h"
#include "nsIStringBundle.h"
#include "nsIPromptService.h"
#include "nsIPrefService.h"
#include "nsIPrefBranch.h"
#include "nsDirectoryServiceDefs.h"
#include "nsDirectoryServiceUtils.h"
#include "nsEmbedCID.h"
#include "nsMemory.h"
+#include "nsIStringBundle.h"
#include <glib.h>
#include <limits.h>
#include <stdlib.h>
static const char* const sMailProtocols[] = {
"mailto"
};
@@ -77,18 +79,19 @@ nsMailGNOMEIntegration::nsMailGNOMEInteg
nsresult
nsMailGNOMEIntegration::Init()
{
nsresult rv;
// GConf _must_ be available, or we do not allow CreateInstance to succeed.
nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
- if (!gconf)
+ if (!gconf && !giovfs)
return NS_ERROR_NOT_AVAILABLE;
// Check G_BROKEN_FILENAMES. If it's set, then filenames in glib use
// the locale encoding. If it's not set, they use UTF-8.
mUseLocaleFilenames = PR_GetEnv("G_BROKEN_FILENAMES") != nsnull;
if (GetAppPathFromLauncher())
return NS_OK;
@@ -117,18 +120,18 @@ nsMailGNOMEIntegration::GetAppPathFromLa
return PR_FALSE;
if (g_path_is_absolute(launcher)) {
mAppPath = launcher;
tmp = g_path_get_basename(launcher);
gchar *fullpath = g_find_program_in_path(tmp);
if (fullpath && mAppPath.Equals(fullpath)) {
mAppIsInPath = PR_TRUE;
- g_free(fullpath);
}
+ g_free(fullpath);
} else {
tmp = g_find_program_in_path(launcher);
if (!tmp)
return PR_FALSE;
mAppPath = tmp;
mAppIsInPath = PR_TRUE;
}
@@ -210,66 +213,117 @@ nsMailGNOMEIntegration::KeyMatchesAppNam
return PR_FALSE;
PRBool matches = mAppPath.Equals(commandPath);
g_free(commandPath);
return matches;
}
PRBool
+nsMailGNOMEIntegration::CheckHandlerMatchesAppName(const nsACString &handler) const
+{
+ gint argc;
+ gchar **argv;
+ nsCAutoString command(handler);
+
+ if (g_shell_parse_argv(command.get(), &argc, &argv, NULL)) {
+ command.Assign(argv[0]);
+ g_strfreev(argv);
+ } else {
+ return PR_FALSE;
+ }
+
+ return KeyMatchesAppName(command.get());
+}
+
+PRBool
nsMailGNOMEIntegration::checkDefault(const char* const *aProtocols, unsigned int aLength)
{
nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
PRBool enabled;
nsCAutoString handler;
+ nsresult rv;
for (unsigned int i = 0; i < aLength; ++i) {
- handler.Truncate();
- nsresult rv = gconf->GetAppForProtocol(nsDependentCString(aProtocols[i]),
- &enabled, handler);
- if (NS_SUCCEEDED(rv))
- {
- // The string will be something of the form: [/path/to/]app "%s"
- // We want to remove all of the parameters and get just the binary name.
+ if (gconf) {
+ handler.Truncate();
+ rv = gconf->GetAppForProtocol(nsDependentCString(aProtocols[i]),
+ &enabled, handler);
+ if (NS_SUCCEEDED(rv) && (!CheckHandlerMatchesAppName(handler) || !enabled)) {
+ return PR_FALSE;
+ }
+ }
- gint argc;
- gchar **argv;
-
- if (g_shell_parse_argv(handler.get(), &argc, &argv, NULL) && argc > 0) {
- handler.Assign(argv[0]);
- g_strfreev(argv);
- } else
+ if (giovfs) {
+ handler.Truncate();
+ nsCOMPtr<nsIGIOMimeApp> app;
+ rv = giovfs->GetAppForURIScheme(nsDependentCString(aProtocols[i]),
+ getter_AddRefs(app));
+ if (NS_FAILED(rv) || !app) {
return PR_FALSE;
-
- if (!KeyMatchesAppName(handler.get()) || !enabled)
- return PR_FALSE; // the handler is disabled or set to another app
+ }
+ rv = app->GetCommand(handler);
+ if (NS_SUCCEEDED(rv) && !CheckHandlerMatchesAppName(handler)) {
+ return PR_FALSE;
+ }
}
}
return PR_TRUE;
}
nsresult
nsMailGNOMEIntegration::MakeDefault(const char* const *aProtocols,
unsigned int aLength)
{
nsCAutoString appKeyValue;
nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
if(mAppIsInPath) {
// mAppPath is in the users path, so use only the basename as the launcher
gchar *tmp = g_path_get_basename(mAppPath.get());
appKeyValue = tmp;
g_free(tmp);
} else {
appKeyValue = mAppPath;
}
appKeyValue.AppendLiteral(" %s");
- for (unsigned int i = 0; i < aLength; ++i) {
- nsresult rv = gconf->SetAppForProtocol(nsDependentCString(aProtocols[i]),
- appKeyValue);
+ nsresult rv;
+ if (gconf) {
+ for (unsigned int i = 0; i < aLength; ++i) {
+ rv = gconf->SetAppForProtocol(nsDependentCString(aProtocols[i]),
+ appKeyValue);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
+
+ if (giovfs) {
+ nsCOMPtr<nsIStringBundleService> bundleService =
+ do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIStringBundle> brandBundle;
+ rv = bundleService->CreateBundle(BRAND_PROPERTIES, getter_AddRefs(brandBundle));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsString brandShortName;
+ brandBundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(),
+ getter_Copies(brandShortName));
+
+ // use brandShortName as the application id.
+ NS_ConvertUTF16toUTF8 id(brandShortName);
+
+ nsCOMPtr<nsIGIOMimeApp> app;
+ rv = giovfs->CreateAppFromCommand(mAppPath, id, getter_AddRefs(app));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ for (unsigned int i = 0; i < aLength; ++i) {
+ rv = app->SetAsDefaultForURIScheme(nsDependentCString(aProtocols[i]));
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
}
return NS_OK;
}
diff --git a/mail/components/shell/nsMailGNOMEIntegration.h b/mail/components/shell/nsMailGNOMEIntegration.h
--- a/mail/components/shell/nsMailGNOMEIntegration.h
+++ b/mail/components/shell/nsMailGNOMEIntegration.h
@@ -37,16 +37,18 @@
* ***** END LICENSE BLOCK ***** */
#ifndef nsMailGNOMEIntegration_h_
#define nsMailGNOMEIntegration_h_
#include "nsIShellService.h"
#include "nsStringGlue.h"
+#define BRAND_PROPERTIES "chrome://branding/locale/brand.properties"
+
#define NS_MAILGNOMEINTEGRATION_CID \
{0xbddef0f4, 0x5e2d, 0x4846, {0xbd, 0xec, 0x86, 0xd0, 0x78, 0x1d, 0x8d, 0xed}}
class nsMailGNOMEIntegration : public nsIShellService
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSISHELLSERVICE
@@ -57,15 +59,16 @@ public:
protected:
virtual ~nsMailGNOMEIntegration() {};
PRBool KeyMatchesAppName(const char *aKeyValue) const;
PRBool checkDefault(const char* const *aProtocols, unsigned int aLength);
nsresult MakeDefault(const char* const *aProtocols, unsigned int aLength);
private:
PRBool GetAppPathFromLauncher();
+ PRBool CheckHandlerMatchesAppName(const nsACString& handler) const;
PRPackedBool mUseLocaleFilenames;
PRPackedBool mCheckedThisSession;
nsCString mAppPath;
PRPackedBool mAppIsInPath;
};
#endif

View File

@ -7,7 +7,7 @@ References:
diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
--- a/config/autoconf.mk.in
+++ b/config/autoconf.mk.in
@@ -470,16 +470,20 @@ MOZ_PANGO_LIBS = @MOZ_PANGO_LIB
@@ -459,16 +459,20 @@ MOZ_PANGO_LIBS = @MOZ_PANGO_LIB
XT_LIBS = @XT_LIBS@
MOZ_ALSA_LIBS = @MOZ_ALSA_LIBS@
@ -25,19 +25,19 @@ diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
MOZ_AUTO_DEPS = @MOZ_AUTO_DEPS@
COMPILER_DEPEND = @COMPILER_DEPEND@
MDDEPDIR := @MDDEPDIR@
MOZ_DEMANGLE_SYMBOLS = @MOZ_DEMANGLE_SYMBOLS@
CC_WRAPPER = @CC_WRAPPER@
CXX_WRAPPER = @CXX_WRAPPER@
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
@@ -6999,16 +6999,31 @@ AC_SUBST(QCMS_LIBS)
@@ -6796,16 +6796,31 @@ AC_SUBST(QCMS_LIBS)
dnl ========================================================
dnl OTS
dnl HarfBuzz
dnl ========================================================
MOZ_OTS_LIBS='$(DEPTH)/mozilla/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
AC_SUBST(MOZ_OTS_LIBS)
MOZ_HARFBUZZ_LIBS='$(DEPTH)/mozilla/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
AC_SUBST(MOZ_HARFBUZZ_LIBS)
dnl ========================================================
+dnl Check for nss-shared-helper
@ -66,21 +66,21 @@ diff --git a/configure.in b/configure.in
diff --git a/mail/app/Makefile.in b/mail/app/Makefile.in
--- a/mail/app/Makefile.in
+++ b/mail/app/Makefile.in
@@ -127,16 +127,17 @@ APP_XPCOM_LIBS = $(XPCOM_LIBS)
@@ -124,16 +124,17 @@ MOZILLA_INTERNAL_API = 1
APP_XPCOM_LIBS = $(XPCOM_LIBS)
endif
LIBS += \
$(STATIC_COMPONENTS_LINKER_PATH) \
$(MOZ_JS_LIBS) \
$(EXTRA_DSO_LIBS) \
$(APP_XPCOM_LIBS) \
$(NSPR_LIBS) \
+ $(NSSHELPER_LIBS) \
$(NULL)
ifdef BUILD_STATIC_LIBS
LIBS += \
$(MOZ_JS_LIBS) \
$(TK_LIBS) \
$(NULL)
# Add explicit X11 dependency when building against X11 toolkits
ifneq (,$(filter gtk gtk2 xlib,$(MOZ_WIDGET_TOOLKIT)))
LIBS += $(XLDFLAGS) $(XLIBS)
endif