diff --git a/MozillaThunderbird.changes b/MozillaThunderbird.changes
index db1f591..30659ea 100644
--- a/MozillaThunderbird.changes
+++ b/MozillaThunderbird.changes
@@ -1,3 +1,42 @@
+-------------------------------------------------------------------
+Sat Sep 14 20:32:28 UTC 2013 - wr@rosenauer.org
+
+- update to Thunderbird 24.0 (bnc#840485)
+ * MFSA 2013-76/CVE-2013-1718/CVE-2013-1719
+ Miscellaneous memory safety hazards
+ * MFSA 2013-77/CVE-2013-1720 (bmo#888820)
+ Improper state in HTML5 Tree Builder with templates
+ * MFSA 2013-79/CVE-2013-1722 (bmo#893308)
+ Use-after-free in Animation Manager during stylesheet cloning
+ * MFSA 2013-80/CVE-2013-1723 (bmo#891292)
+ NativeKey continues handling key messages after widget is destroyed
+ * MFSA 2013-81/CVE-2013-1724 (bmo#894137)
+ Use-after-free with select element
+ * MFSA 2013-82/CVE-2013-1725 (bmo#876762)
+ Calling scope for new Javascript objects can lead to memory corruption
+ * MFSA 2013-85/CVE-2013-1728 (bmo#883686)
+ Uninitialized data in IonMonkey
+ * MFSA 2013-88/CVE-2013-1730 (bmo#851353)
+ Compartment mismatch re-attaching XBL-backed nodes
+ * MFSA 2013-89/CVE-2013-1732 (bmo#883514)
+ Buffer overflow with multi-column, lists, and floats
+ * MFSA 2013-90/CVE-2013-1735/CVE-2013-1736 (bmo#898871, bmo#906301)
+ Memory corruption involving scrolling
+ * MFSA 2013-91/CVE-2013-1737 (bmo#907727)
+ User-defined properties on DOM proxies get the wrong "this" object
+ * MFSA 2013-92/CVE-2013-1738 (bmo#887334, bmo#882897)
+ GC hazard with default compartments and frame chain restoration
+- moved greek to common translation package
+- require NSPR 4.10 and NSS 3.15.1
+- add GStreamer build requirements for Gecko
+- added enigmail-build.patch to fix TB packaging (bmo#886095)
+- removed obsolete patches:
+ * enigmail-old-gcc.patch
+ * mozilla-gcc43-enums.patch
+ * mozilla-gcc43-template_hacks.patch
+ * mozilla-gcc43-templates_instantiation.patch
+ * ppc-xpcshell.patch
+
-------------------------------------------------------------------
Fri Aug 2 06:01:03 UTC 2013 - wr@rosenauer.org
diff --git a/MozillaThunderbird.spec b/MozillaThunderbird.spec
index d75cf52..0a0ebea 100644
--- a/MozillaThunderbird.spec
+++ b/MozillaThunderbird.spec
@@ -19,6 +19,8 @@
%define with_kde 1
+%define gstreamer_ver 0.10
+
Name: MozillaThunderbird
BuildRequires: Mesa-devel
BuildRequires: autoconf213
@@ -30,8 +32,8 @@ BuildRequires: libcurl-devel
BuildRequires: libgnomeui-devel
BuildRequires: libidl-devel
BuildRequires: libnotify-devel
-BuildRequires: mozilla-nspr-devel >= 4.9.5
-BuildRequires: mozilla-nss-devel >= 3.14.3
+BuildRequires: mozilla-nspr-devel >= 4.10
+BuildRequires: mozilla-nss-devel >= 3.15.1
BuildRequires: nss-shared-helper-devel
BuildRequires: python
BuildRequires: startup-notification-devel
@@ -40,11 +42,16 @@ BuildRequires: update-desktop-files
BuildRequires: xorg-x11-libXt-devel
BuildRequires: yasm
BuildRequires: zip
-%define mainversion 17.0.8
+%if %suse_version > 1210
+BuildRequires: pkgconfig(gstreamer-%gstreamer_ver)
+BuildRequires: pkgconfig(gstreamer-app-%gstreamer_ver)
+BuildRequires: pkgconfig(gstreamer-plugins-base-%gstreamer_ver)
+%endif
+%define mainversion 24.0
%define update_channel release
Version: %{mainversion}
Release: 0
-%define releasedate 2013080100
+%define releasedate 2013091200
Provides: thunderbird = %{version}
%if %{with_kde}
# this is needed to match this package with the kde4 helper package without the main package
@@ -76,16 +83,12 @@ Patch3: mozilla-nongnome-proxies.patch
Patch4: mozilla-kde.patch
Patch5: mozilla-arm-disable-edsp.patch
Patch7: mozilla-ppc.patch
-Patch8: ppc-xpcshell.patch
-# SLE11 patches
-Patch10: mozilla-gcc43-enums.patch
-Patch11: mozilla-gcc43-template_hacks.patch
-Patch12: mozilla-gcc43-templates_instantiation.patch
# Thunderbird/mail
Patch20: tb-ssldap.patch
Patch21: tb-develdirs.patch
Patch22: thunderbird-shared-nss-db.patch
-Patch30: enigmail-old-gcc.patch
+# Enigmail
+Patch30: enigmail-build.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: coreutils fileutils textutils /bin/sh
Recommends: libcanberra0
@@ -127,7 +130,7 @@ Mozilla application suite.
Summary: Common translations for MozillaThunderbird
License: MPL-2.0
Group: System/Localization
-Provides: locale(%{name}:ar;ca;cs;da;de;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_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}
Obsoletes: %{name}-translations < %{version}-%{release}
@@ -140,7 +143,7 @@ of MozillaThunderbird.
Summary: Extra translations for MozillaThunderbird
License: MPL-2.0
Group: System/Localization
-Provides: locale(%{name}:ast;be;bg;bn_BD;br;el;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}
Obsoletes: %{name}-translations < %{version}-%{release}
@@ -209,20 +212,14 @@ pushd mozilla
%endif
%patch5 -p1
%patch7 -p1
-%patch8 -p1
-# SLE patches
-%if %suse_version <= 1110
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%endif
popd
# comm-central patches
%patch20 -p1
%patch21 -p1
%patch22 -p1
-%if %suse_version < 1120
-pushd ../enigmail
+%if %build_enigmail
+# enigmail
+pushd $RPM_BUILD_DIR/enigmail
%patch30 -p1
popd
%endif
@@ -279,7 +276,6 @@ ac_add_options --enable-startup-notification
ac_add_options --enable-official-branding
ac_add_options --disable-necko-wifi
ac_add_options --enable-update-channel=%{update_channel}
-ac_add_options --disable-webrtc
EOF
%if %suse_version > 1130
cat << EOF >> $MOZCONFIG
@@ -287,6 +283,11 @@ ac_add_options --disable-gnomevfs
ac_add_options --enable-gio
EOF
%endif
+%if %suse_version < 1220
+cat << EOF >> $MOZCONFIG
+ac_add_options --disable-gstreamer
+EOF
+%endif
%if %has_system_cairo
cat << EOF >> $MOZCONFIG
ac_add_options --enable-system-cairo
@@ -320,7 +321,7 @@ popd
%install
cd ../obj
-make -C mail/installer STRIP=/bin/true
+make -C mail/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
# copy tree into RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{progdir}
cp -rf $RPM_BUILD_DIR/obj/mozilla/dist/thunderbird/* \
@@ -358,7 +359,7 @@ for locale in $(awk '{ print $1; }' ../thunderbird/mail/locales/all-locales); do
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
+ for _match in ar ca cs da de el en-GB es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
[ "$_match" = "$locale" ] && _matched=1
done
[ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
@@ -535,7 +536,6 @@ exit 0
%{progdir}/blocklist.xml
%{progdir}/chrome.manifest
%{progdir}/dependentlibs.list
-%{progdir}/distribution/
%{progdir}/*.so
%{progdir}/mozilla-xremote-client
%{progdir}/omni.ja
diff --git a/_constraints b/_constraints
index 0e8044f..c510e01 100644
--- a/_constraints
+++ b/_constraints
@@ -5,7 +5,7 @@
9
- 2500
+ 3500
diff --git a/compare-locales.tar.bz2 b/compare-locales.tar.bz2
index 85a73ae..d516639 100644
--- a/compare-locales.tar.bz2
+++ b/compare-locales.tar.bz2
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2228bed9902f18c5fb22ec286d081b9773d19f3157bd68517c2e7dd3a5e13272
-size 29890
+oid sha256:974a49bccf5a58915935a55714975dd519cb668fd76b5907b3a49964afcc72cc
+size 29942
diff --git a/create-tar.sh b/create-tar.sh
index d02e85c..ed12d4a 100644
--- a/create-tar.sh
+++ b/create-tar.sh
@@ -1,9 +1,9 @@
#!/bin/bash
-CHANNEL="esr17"
+CHANNEL="esr24"
BRANCH="releases/comm-$CHANNEL"
-RELEASE_TAG="THUNDERBIRD_17_0_8_RELEASE"
-VERSION="17.0.8"
+RELEASE_TAG="THUNDERBIRD_24_0_RELEASE"
+VERSION="24.0"
echo "cloning $BRANCH..."
hg clone http://hg.mozilla.org/$BRANCH thunderbird
diff --git a/enigmail-build.patch b/enigmail-build.patch
new file mode 100644
index 0000000..e1a9c37
--- /dev/null
+++ b/enigmail-build.patch
@@ -0,0 +1,37 @@
+Subject: Enigmail breaks Thunderbird packaging
+Reference:
+https://bug886095.bugzilla.mozilla.org/attachment.cgi?id=773916
+
+diff --git a/genxpi b/genxpi
+--- a/genxpi
++++ b/genxpi
+@@ -73,16 +73,17 @@ if [ ${platform} = OS2_x86-gcc3 ]; then
+ enigDllFile=platform/${platform}/components/${enigmimeDll}
+ else
+ enigDllFile=platform/${platform}/components/${libPrefix}enigmime-${xpcomAbi}${dllSuffix}
+ fi
+
+ subprocessDll=${libPrefix}subprocess${dllSuffix}
+ spDllFile=platform/${platform}/lib/${libPrefix}subprocess-${xpcomAbi}${dllSuffix}
+
++cp ${targetDir}/chrome.manifest{,.save}
+ # Prepare chrome.manifest
+ cat ${srcDir}/package/chrome.manifest | \
+ sed 's/##ENIGMIMEDLL-PLACEHOLDER##/binary-component platform\/'${platform}'\/components\/'`basename ${enigDllFile}`' ABI='${platform}'/' \
+ > ${targetDir}/chrome.manifest
+
+ # Prepare languages other than en-US
+
+ if [ -s ${srcDir}/lang/current-languages.txt ]; then
+@@ -146,9 +147,10 @@ zip ${xpiFile} \
+ chrome/${xpiModule}.jar \
+ ${localeJar} \
+ components/enigmime.xpt \
+ ${enigDllFile} \
+ ${spDllFile} \
+ chrome.manifest \
+ install.rdf
+
+-rm install.rdf chrome.manifest
++rm install.rdf
++mv chrome.manifest{.save,}
diff --git a/enigmail-old-gcc.patch b/enigmail-old-gcc.patch
deleted file mode 100644
index fff31a4..0000000
--- a/enigmail-old-gcc.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-# HG changeset patch
-# Parent 354e161f21ba8fa67aa9f140c2bcdf3b1213abda
-# User Wolfgang Rosenauer
-
-diff --git a/ipc/src/Makefile.enig b/ipc/src/Makefile.enig
---- a/ipc/src/Makefile.enig
-+++ b/ipc/src/Makefile.enig
-@@ -57,17 +57,17 @@ objfiles = subprocess.$(OBJ_SUFF)
- libname = $(DLL_PREFIX)subprocess$(DLL_SUFFIX)
-
- all: libs
-
- libs: source
- $(CC) $(LDFLAGS) -o $(libname) $(objfiles)
-
- source: $(source)
-- $(CC) $(CFLAGS) -Wno-return-type-c-linkage -c -o $(objfiles) $^
-+ $(CC) $(CFLAGS) -c -o $(objfiles) $^
-
-
- clean:
- rm -f $(objfiles) $(libname)
-
- tools:
-
- export:
-diff --git a/ipc/src/Makefile.in b/ipc/src/Makefile.in
---- a/ipc/src/Makefile.in
-+++ b/ipc/src/Makefile.in
-@@ -57,17 +57,17 @@ objfiles = subprocess.$(OBJ_SUFF)
- libname = $(DLL_PREFIX)subprocess$(DLL_SUFFIX)
-
- all: libs
-
- libs: source
- $(CC) $(LDFLAGS) -o $(libname) $(objfiles)
-
- source: $(source)
-- $(CC) $(CFLAGS) -Wno-return-type-c-linkage -c -o $(objfiles) $^
-+ $(CC) $(CFLAGS) -c -o $(objfiles) $^
-
-
- clean:
- rm -f $(objfiles) $(libname)
-
- tools:
-
- export:
diff --git a/l10n-17.0.8.tar.bz2 b/l10n-17.0.8.tar.bz2
deleted file mode 100644
index 6a3b073..0000000
--- a/l10n-17.0.8.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4629e07b19c663e018d49222aff5390b0281cbba3b3dd847793fde46df15d613
-size 26764663
diff --git a/l10n-24.0.tar.bz2 b/l10n-24.0.tar.bz2
new file mode 100644
index 0000000..cdc3721
--- /dev/null
+++ b/l10n-24.0.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b02fe5a6f487c932fa6912ee99e9da4b43440728dad29de3e2e93ef75ad88a30
+size 27945426
diff --git a/mozilla-gcc43-enums.patch b/mozilla-gcc43-enums.patch
deleted file mode 100644
index de5c6a1..0000000
--- a/mozilla-gcc43-enums.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-# HG changeset patch
-# Parent 6d0e0f7dc4cf04f1d08f8b4f8e9312ac05928608
-remove trailing commas in enum definitions as these are unpalatable for gcc
-(4.3.4) in pedantic mode
-
-diff --git a/media/webrtc/trunk/src/common_types.h b/media/webrtc/trunk/src/common_types.h
---- a/media/webrtc/trunk/src/common_types.h
-+++ b/media/webrtc/trunk/src/common_types.h
-@@ -342,17 +342,17 @@ enum TelephoneEventDetectionMethods
- enum NsModes // type of Noise Suppression
- {
- kNsUnchanged = 0, // previously set mode
- kNsDefault, // platform default
- kNsConference, // conferencing default
- kNsLowSuppression, // lowest suppression
- kNsModerateSuppression,
- kNsHighSuppression,
-- kNsVeryHighSuppression, // highest suppression
-+ kNsVeryHighSuppression // highest suppression
- };
-
- enum AgcModes // type of Automatic Gain Control
- {
- kAgcUnchanged = 0, // previously set mode
- kAgcDefault, // platform default
- // adaptive mode for use when analog volume control exists (e.g. for
- // PC softphone)
-@@ -367,17 +367,17 @@ enum AgcModes // type o
-
- // EC modes
- enum EcModes // type of Echo Control
- {
- kEcUnchanged = 0, // previously set mode
- kEcDefault, // platform default
- kEcConference, // conferencing default (aggressive AEC)
- kEcAec, // Acoustic Echo Cancellation
-- kEcAecm, // AEC mobile
-+ kEcAecm // AEC mobile
- };
-
- // AECM modes
- enum AecmModes // mode of AECM
- {
- kAecmQuietEarpieceOrHeadset = 0,
- // Quiet earpiece or headset use
- kAecmEarpiece, // most earpiece use
-@@ -416,43 +416,43 @@ enum NetEqModes // NetEQ pla
- // Optimized trade-off between low delay and jitter robustness for two-way
- // communication.
- kNetEqDefault = 0,
- // Improved jitter robustness at the cost of increased delay. Can be
- // used in one-way communication.
- kNetEqStreaming = 1,
- // Optimzed for decodability of fax signals rather than for perceived audio
- // quality.
-- kNetEqFax = 2,
-+ kNetEqFax = 2
- };
-
- enum NetEqBgnModes // NetEQ Background Noise (BGN) configurations
- {
- // BGN is always on and will be generated when the incoming RTP stream
- // stops (default).
- kBgnOn = 0,
- // The BGN is faded to zero (complete silence) after a few seconds.
- kBgnFade = 1,
- // BGN is not used at all. Silence is produced after speech extrapolation
- // has faded.
-- kBgnOff = 2,
-+ kBgnOff = 2
- };
-
- enum OnHoldModes // On Hold direction
- {
- kHoldSendAndPlay = 0, // Put both sending and playing in on-hold state.
- kHoldSendOnly, // Put only sending in on-hold state.
- kHoldPlayOnly // Put only playing in on-hold state.
- };
-
- enum AmrMode
- {
- kRfc3267BwEfficient = 0,
- kRfc3267OctetAligned = 1,
-- kRfc3267FileStorage = 2,
-+ kRfc3267FileStorage = 2
- };
-
- // ==================================================================
- // Video specific types
- // ==================================================================
-
- // Raw video types
- enum RawVideoType
diff --git a/mozilla-gcc43-template_hacks.patch b/mozilla-gcc43-template_hacks.patch
deleted file mode 100644
index ffed3a2..0000000
--- a/mozilla-gcc43-template_hacks.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-# HG changeset patch
-# Parent 993c5b5a44ca18c5273b74c75704b418c2477d28
-bmo#783505 - bump gcc version required for building without template hacks
-
-diff --git a/js/src/jstypedarray.cpp b/js/src/jstypedarray.cpp
---- a/js/src/jstypedarray.cpp
-+++ b/js/src/jstypedarray.cpp
-@@ -1404,17 +1404,17 @@ class TypedArrayTemplate
- // retrieves a given Value, probably from a slot on the object.
- template
- static JSBool
- Getter(JSContext *cx, unsigned argc, Value *vp)
- {
- CallArgs args = CallArgsFromVp(argc, vp);
- // FIXME: Hack to keep us building with gcc 4.2. Remove this once we
- // drop support for gcc 4.2. See bug 783505 for the details.
--#if defined(__GNUC__) && __GNUC_MINOR__ <= 2
-+#if defined(__GNUC__) && __GNUC_MINOR__ <= 3
- return CallNonGenericMethod(cx, IsThisClass, GetterImpl, args);
- #else
- return CallNonGenericMethod >(cx, args);
- #endif
- }
-
- // Define an accessor for a read-only property that invokes a native getter
diff --git a/mozilla-gcc43-templates_instantiation.patch b/mozilla-gcc43-templates_instantiation.patch
deleted file mode 100644
index ab216b9..0000000
--- a/mozilla-gcc43-templates_instantiation.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-# HG changeset patch
-# Parent 2e78665a1ab70f4dc3884965428bda14da684ef6
-bmo#732340 - explicitly instantiate templates
-
-diff --git a/gfx/harfbuzz/src/hb-ot-layout.cc b/gfx/harfbuzz/src/hb-ot-layout.cc
---- a/gfx/harfbuzz/src/hb-ot-layout.cc
-+++ b/gfx/harfbuzz/src/hb-ot-layout.cc
-@@ -479,8 +479,12 @@ hb_ot_layout_position_lookup (hb_font_t
- return hb_ot_layout_from_face (font->face)->gpos->position_lookup (&c, lookup_index);
- }
-
- void
- hb_ot_layout_position_finish (hb_font_t *font, hb_buffer_t *buffer, hb_bool_t zero_width_attached_marks)
- {
- GPOS::position_finish (font, buffer, zero_width_attached_marks);
- }
-+
-+template int SortedArrayOf >::search(unsigned int const &) const;
-+template int SortedArrayOf >::search(unsigned int const &) const;
-+template int SortedArrayOf >::search(unsigned int const &) const;
diff --git a/mozilla-kde.patch b/mozilla-kde.patch
index b3e3cae..3d6990d 100644
--- a/mozilla-kde.patch
+++ b/mozilla-kde.patch
@@ -7,7 +7,7 @@ Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
diff --git a/modules/libpref/src/Makefile.in b/modules/libpref/src/Makefile.in
--- a/modules/libpref/src/Makefile.in
+++ b/modules/libpref/src/Makefile.in
-@@ -45,14 +45,16 @@ GREPREF_FILES = $(topsrcdir)/netwerk/bas
+@@ -49,14 +49,15 @@ endif
# Optimizer bug with GCC 3.2.2 on OS/2
ifeq ($(OS_ARCH), OS2)
nsPrefService.$(OBJ_SUFFIX): nsPrefService.cpp
@@ -17,9 +17,8 @@ diff --git a/modules/libpref/src/Makefile.in b/modules/libpref/src/Makefile.in
endif
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
-+
- greprefs.js: $(GREPREF_FILES)
+ greprefs.js: $(grepref_files)
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $^ > $@
libs:: greprefs.js
@@ -39,13 +38,13 @@ diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferenc
+#include "nsKDEUtils.h"
#include "nsQuickSort.h"
- #include "prmem.h"
#include "pldhash.h"
#include "prefapi.h"
#include "prefread.h"
#include "prefapi_private_data.h"
-@@ -896,16 +897,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char
+
+@@ -972,16 +973,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char
static nsresult pref_LoadPrefsInDirList(const char *listId)
{
@@ -80,9 +79,9 @@ diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferenc
return NS_OK;
bool hasMore;
-@@ -921,17 +940,17 @@ static nsresult pref_LoadPrefsInDirList(
+@@ -997,17 +1016,17 @@ static nsresult pref_LoadPrefsInDirList(
- nsCAutoString leaf;
+ nsAutoCString leaf;
path->GetNativeLeafName(leaf);
// Do we care if a file provided by this process fails to load?
@@ -99,7 +98,7 @@ diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferenc
{
nsZipItemPtr manifest(jarReader, name, true);
NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
-@@ -1025,28 +1044,40 @@ static nsresult pref_InitInitialObjects(
+@@ -1101,28 +1120,40 @@ static nsresult pref_InitInitialObjects(
/* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
static const char* specialFiles[] = {
#if defined(XP_MACOSX)
@@ -140,26 +139,67 @@ diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferenc
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
nsRefPtr appJarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::APP);
// GetReader(mozilla::Omnijar::APP) returns null when $app == $gre, in which
+diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
+--- a/python/mozbuild/mozpack/chrome/flags.py
++++ b/python/mozbuild/mozpack/chrome/flags.py
+@@ -208,16 +208,17 @@ class Flags(OrderedDict):
+ 'platformversion': VersionFlag,
+ 'contentaccessible': Flag,
+ 'os': StringFlag,
+ 'osversion': VersionFlag,
+ 'abi': StringFlag,
+ 'platform': Flag,
+ 'xpcnativewrappers': Flag,
+ 'tablet': Flag,
++ 'desktop': StringFlag,
+ }
+ RE = re.compile(r'([!<>=]+)')
+
+ def __init__(self, *flags):
+ '''
+ Initialize a set of flags given in string form.
+ flags = Flags('contentaccessible=yes', 'appversion>=3.5')
+ '''
+diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
+--- a/python/mozbuild/mozpack/chrome/manifest.py
++++ b/python/mozbuild/mozpack/chrome/manifest.py
+@@ -30,16 +30,17 @@ class ManifestEntry(object):
+ allowed_flags = [
+ 'application',
+ 'platformversion',
+ 'os',
+ 'osversion',
+ 'abi',
+ 'xpcnativewrappers',
+ 'tablet',
++ 'desktop',
+ ]
+
+ def __init__(self, base, *flags):
+ '''
+ Initialize a manifest entry with the given base path and flags.
+ '''
+ self.base = base
+ self.flags = Flags(*flags)
diff --git a/toolkit/components/downloads/Makefile.in b/toolkit/components/downloads/Makefile.in
--- a/toolkit/components/downloads/Makefile.in
+++ b/toolkit/components/downloads/Makefile.in
-@@ -41,9 +41,12 @@ EXTRA_COMPONENTS = \
+@@ -23,9 +23,11 @@ ifndef MOZ_SUITE
+ DISABLED_EXTRA_COMPONENTS = \
+ nsDownloadManagerUI.js \
nsDownloadManagerUI.manifest \
$(NULL)
endif
- TEST_DIRS += test
-
include $(topsrcdir)/config/rules.mk
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
-+
+
CXXFLAGS += $(TK_CFLAGS)
diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
--- a/toolkit/components/downloads/nsDownloadManager.cpp
+++ b/toolkit/components/downloads/nsDownloadManager.cpp
-@@ -35,16 +35,20 @@
+@@ -38,16 +38,20 @@
#ifdef XP_WIN
#include
@@ -180,7 +220,7 @@ diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/compon
#include "AndroidBridge.h"
#endif
-@@ -2233,16 +2237,25 @@ nsDownload::SetState(DownloadState aStat
+@@ -2609,16 +2613,25 @@ nsDownload::SetState(DownloadState aStat
nsCOMPtr pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
// Master pref to control this function.
@@ -194,7 +234,7 @@ diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/compon
+ command.AppendElement( NS_LITERAL_CSTRING( "DOWNLOADFINISHED" ));
+ nsAutoString displayName;
+ GetDisplayName( displayName );
-+ command.AppendElement( nsCAutoString( ToNewUTF8String( displayName )));
++ command.AppendElement( nsAutoCString( ToNewUTF8String( displayName )));
+ nsKDEUtils::command( command );
+ } else {
+ // begin non-KDE block
@@ -206,15 +246,15 @@ diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/compon
int64_t goat = PR_Now() - mStartTime;
showTaskbarAlert = goat > alertIntervalUSec;
-@@ -2266,19 +2279,20 @@ nsDownload::SetState(DownloadState aStat
- // If downloads are automatically removed per the user's
+@@ -2645,19 +2658,20 @@ nsDownload::SetState(DownloadState aStat
// retention policy, there's no reason to make the text clickable
// because if it is, they'll click open the download manager and
// the items they downloaded will have been removed.
alerts->ShowAlertNotification(
NS_LITERAL_STRING(DOWNLOAD_MANAGER_ALERT_ICON), title,
- message, !removeWhenDone, EmptyString(), mDownloadManager,
- EmptyString());
+ message, !removeWhenDone,
+ mPrivate ? NS_LITERAL_STRING("private") : NS_LITERAL_STRING("non-private"),
+ mDownloadManager, EmptyString(), NS_LITERAL_STRING("auto"), EmptyString());
- }
+ }
}
@@ -231,7 +271,7 @@ diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/compon
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
--- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn
-@@ -45,29 +45,33 @@ toolkit.jar:
+@@ -50,29 +50,33 @@ toolkit.jar:
content/global/viewZoomOverlay.js (viewZoomOverlay.js)
*+ content/global/bindings/autocomplete.xml (widgets/autocomplete.xml)
content/global/bindings/browser.xml (widgets/browser.xml)
@@ -259,12 +299,12 @@ diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
+% override chrome://global/content/bindings/preferences.xml chrome://global/content/bindings/preferences-kde.xml desktop=kde
content/global/bindings/progressmeter.xml (widgets/progressmeter.xml)
content/global/bindings/radio.xml (widgets/radio.xml)
+ content/global/bindings/remote-browser.xml (widgets/remote-browser.xml)
content/global/bindings/resizer.xml (widgets/resizer.xml)
content/global/bindings/richlistbox.xml (widgets/richlistbox.xml)
content/global/bindings/scale.xml (widgets/scale.xml)
content/global/bindings/scrollbar.xml (widgets/scrollbar.xml)
content/global/bindings/scrollbox.xml (widgets/scrollbox.xml)
- content/global/bindings/splitter.xml (widgets/splitter.xml)
diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
new file mode 100644
--- /dev/null
@@ -1366,7 +1406,7 @@ new file mode 100644
+ if (this.lastSelected) {
+ lastPane = document.getElementById(this.lastSelected);
+ if (!lastPane) {
-+ this.lastSelected = null;
++ this.lastSelected = "";
+ }
+ }
+
@@ -2068,8 +2108,7 @@ new file mode 100644
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -13,16 +13,19 @@
- #include "prnetdb.h"
+@@ -14,16 +14,18 @@
#include "prenv.h"
#include "nsPrintfCString.h"
#include "nsNetUtil.h"
@@ -2077,9 +2116,9 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
#include "nsIGSettingsService.h"
#include "nsInterfaceHashtable.h"
#include "mozilla/Attributes.h"
+ #include "nsIURI.h"
+#include "nsVoidArray.h"
+#include "nsKDEUtils.h"
-+
class nsUnixSystemProxySettings MOZ_FINAL : public nsISystemProxySettings {
public:
@@ -2088,7 +2127,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
nsUnixSystemProxySettings() {}
nsresult Init();
-@@ -34,16 +37,17 @@ private:
+@@ -35,16 +37,17 @@ private:
nsCOMPtr mGSettings;
nsCOMPtr mProxySettings;
nsInterfaceHashtable mSchemeProxySettings;
@@ -2102,31 +2141,31 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
NS_IMPL_ISUPPORTS1(nsUnixSystemProxySettings, nsISystemProxySettings)
- nsresult
- nsUnixSystemProxySettings::Init()
+ NS_IMETHODIMP
+ nsUnixSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
{
- // If this is a GNOME session, load gconf and try to use its preferences.
-@@ -496,16 +500,19 @@ nsUnixSystemProxySettings::GetProxyForUR
- nsCAutoString host;
- rv = aURI->GetHost(host);
- NS_ENSURE_SUCCESS(rv, rv);
+ // dbus prevents us from being threadsafe, but this routine should not block anyhow
+@@ -496,16 +499,19 @@ nsUnixSystemProxySettings::GetProxyFromG
- int32_t port;
- rv = aURI->GetPort(&port);
- NS_ENSURE_SUCCESS(rv, rv);
-
-+ if( nsKDEUtils::kdeSupport())
-+ return GetProxyFromKDE(scheme, host, port, aResult);
+ nsresult
+ nsUnixSystemProxySettings::GetProxyForURI(const nsACString & aSpec,
+ const nsACString & aScheme,
+ const nsACString & aHost,
+ const int32_t aPort,
+ nsACString & aResult)
+ {
++ if (nsKDEUtils::kdeSupport())
++ return GetProxyFromKDE(aScheme, aHost, aPort, aResult);
+
if (mProxySettings) {
- rv = GetProxyFromGSettings(scheme, host, port, aResult);
- if (rv == NS_OK)
+ nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
+ if (NS_SUCCEEDED(rv))
return rv;
}
if (mGConf)
- return GetProxyFromGConf(scheme, host, port, aResult);
+ return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
-@@ -531,8 +538,34 @@ static const mozilla::Module::ContractID
+@@ -531,8 +537,34 @@ static const mozilla::Module::ContractID
static const mozilla::Module kUnixProxyModule = {
mozilla::Module::kVersion,
@@ -2142,7 +2181,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
+ PRInt32 aPort,
+ nsACString& aResult)
+{
-+ nsCAutoString url;
++ nsAutoCString url;
+ url = aScheme;
+ url += "://";
+ url += aHost;
@@ -2161,34 +2200,35 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
+ return NS_OK;
+}
+
-diff --git a/toolkit/xre/Makefile.in b/toolkit/xre/Makefile.in
---- a/toolkit/xre/Makefile.in
-+++ b/toolkit/xre/Makefile.in
-@@ -69,17 +69,18 @@ else
- ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
- CMMSRCS = nsNativeAppSupportCocoa.mm
- EXPORTS += MacQuirks.h
- else
- ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
- CPPSRCS += nsNativeAppSupportOS2.cpp
- else
- ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
--CPPSRCS += nsNativeAppSupportUnix.cpp
-+CPPSRCS += nsNativeAppSupportUnix.cpp nsKDEUtils.cpp
-+EXPORTS += nsKDEUtils.h
- else
- ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
- MOCSRCS += moc_nsNativeAppSupportQt.cpp
- CPPSRCS += $(MOCSRCS)
- CPPSRCS += nsNativeAppSupportQt.cpp
- CPPSRCS += nsQAppInstance.cpp
- EXPORTS += nsQAppInstance.h
- else
+diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
+--- a/toolkit/xre/moz.build
++++ b/toolkit/xre/moz.build
+@@ -38,18 +38,20 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt
+ 'nsNativeAppSupportQt.cpp',
+ 'nsQAppInstance.cpp',
+ ]
+ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'os2':
+ CPP_SOURCES += [
+ 'nsNativeAppSupportOS2.cpp',
+ ]
+ elif CONFIG['MOZ_ENABLE_GTK']:
++ EXPORTS += ['nsKDEUtils.h']
+ CPP_SOURCES += [
+ 'nsNativeAppSupportUnix.cpp',
++ 'nsKDEUtils.cpp'
+ ]
+ else:
+ CPP_SOURCES += [
+ 'nsNativeAppSupportDefault.cpp',
+ ]
+
+ if CONFIG['MOZ_X11']:
+ CPP_SOURCES += [
diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
new file mode 100644
--- /dev/null
+++ b/toolkit/xre/nsKDEUtils.cpp
-@@ -0,0 +1,341 @@
+@@ -0,0 +1,339 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -2321,7 +2361,7 @@ new file mode 100644
+ *eol = '\0';
+ command_done = ( strcmp( buf, "\\1" ) == 0 );
+ command_failed = ( strcmp( buf, "\\0" ) == 0 );
-+ nsCAutoString line( buf );
++ nsAutoCString line( buf );
+ line.ReplaceSubstring( "\\n", "\n" );
+ line.ReplaceSubstring( "\\" "\\", "\\" ); // \\ -> \ , i.e. unescape
+ if( p->output && !( command_done || command_failed ))
@@ -2354,8 +2394,6 @@ new file mode 100644
+
+bool nsKDEUtils::command( nsIArray* command, nsIArray** output)
+ {
-+ NS_ENSURE_ARG( command );
-+
+ nsTArray in;
+ PRUint32 length;
+ command->GetLength( &length );
@@ -2364,7 +2402,7 @@ new file mode 100644
+ nsCOMPtr str = do_QueryElementAt( command, i );
+ if( str )
+ {
-+ nsCAutoString s;
++ nsAutoCString s;
+ str->GetData( s );
+ in.AppendElement( s );
+ }
@@ -2586,27 +2624,39 @@ new file mode 100644
diff --git a/uriloader/exthandler/Makefile.in b/uriloader/exthandler/Makefile.in
--- a/uriloader/exthandler/Makefile.in
+++ b/uriloader/exthandler/Makefile.in
-@@ -58,18 +58,19 @@ LOCAL_INCLUDES = -I$(srcdir)
- LOCAL_INCLUDES += -I$(topsrcdir)/dom/base \
- -I$(topsrcdir)/dom/ipc \
- -I$(topsrcdir)/content/base/src \
- -I$(topsrcdir)/content/events/src \
- -I$(topsrcdir)/netwerk/base/src \
- -I$(topsrcdir)/netwerk/protocol/http
+@@ -86,9 +86,10 @@ EXTRA_COMPONENTS = \
+ # we don't want the shared lib, but we want to force the creation of a static lib.
+ FORCE_STATIC_LIB = 1
+ include $(topsrcdir)/config/config.mk
+ include $(topsrcdir)/ipc/chromium/chromium-config.mk
+ include $(topsrcdir)/config/rules.mk
- ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
--OSHELPER += nsGNOMERegistry.cpp
-+OSHELPER += nsCommonRegistry.cpp nsGNOMERegistry.cpp nsKDERegistry.cpp
- OSHELPER += nsMIMEInfoUnix.cpp
+ ifneq (,$(filter qt gtk2 gtk3, $(MOZ_WIDGET_TOOLKIT)))
+ CXXFLAGS += $(TK_CFLAGS) $(MOZ_DBUS_GLIB_CFLAGS)
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
endif
+diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
+--- a/uriloader/exthandler/moz.build
++++ b/uriloader/exthandler/moz.build
+@@ -68,16 +68,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
+ pass
+ else:
+ CPP_SOURCES += [
+ 'nsOSHelperAppService.cpp',
+ ]
- ifeq ($(MOZ_WIDGET_TOOLKIT),android)
- OSHELPER += nsMIMEInfoAndroid.cpp
- OSHELPER += nsAndroidHandlerApp.cpp
- OSHELPER += nsExternalSharingAppService.cpp
- EXPORTS += nsExternalSharingAppService.h
- OSHELPER += nsExternalURLHandlerService.cpp
+ if CONFIG['MOZ_ENABLE_GTK']:
+ CPP_SOURCES += [
++ 'nsCommonRegistry.cpp',
++ 'nsKDERegistry.cpp',
+ 'nsGNOMERegistry.cpp',
+ 'nsMIMEInfoUnix.cpp',
+ ]
+ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
+ CPP_SOURCES += [
+ 'nsMIMEInfoAndroid.cpp',
+ 'nsAndroidHandlerApp.cpp',
+ 'nsExternalSharingAppService.cpp',
diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp
new file mode 100644
--- /dev/null
@@ -2625,7 +2675,7 @@ new file mode 100644
+#include "nsVoidArray.h"
+#include "nsKDEUtils.h"
+
-+/* static */ PRBool
++/* static */ bool
+nsCommonRegistry::HandlerExists(const char *aProtocolScheme)
+{
+ if( nsKDEUtils::kdeSupport())
@@ -2683,7 +2733,7 @@ new file mode 100644
+class nsCommonRegistry
+{
+ public:
-+ static PRBool HandlerExists(const char *aProtocolScheme);
++ static bool HandlerExists(const char *aProtocolScheme);
+
+ static nsresult LoadURL(nsIURI *aURL);
+
@@ -2698,7 +2748,7 @@ diff --git a/uriloader/exthandler/unix/nsKDERegistry.cpp b/uriloader/exthandler/
new file mode 100644
--- /dev/null
+++ b/uriloader/exthandler/unix/nsKDERegistry.cpp
-@@ -0,0 +1,86 @@
+@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -2713,12 +2763,12 @@ new file mode 100644
+#include "nsAutoPtr.h"
+#include "nsKDEUtils.h"
+
-+/* static */ PRBool
++/* static */ bool
+nsKDERegistry::HandlerExists(const char *aProtocolScheme)
+{
+ nsTArray command;
+ command.AppendElement( NS_LITERAL_CSTRING( "HANDLEREXISTS" ));
-+ command.AppendElement( nsCAutoString( aProtocolScheme ));
++ command.AppendElement( nsAutoCString( aProtocolScheme ));
+ return nsKDEUtils::command( command );
+}
+
@@ -2730,7 +2780,11 @@ new file mode 100644
+ nsCString url;
+ aURL->GetSpec( url );
+ command.AppendElement( url );
-+ return nsKDEUtils::command( command );
++ bool rv = nsKDEUtils::command( command );
++ if (!rv)
++ return NS_ERROR_FAILURE;
++
++ return NS_OK;
+}
+
+/* static */ void
@@ -2779,9 +2833,7 @@ new file mode 100644
+ nsCString handlerAppName = output[ 2 ];
+ mimeInfo->SetDefaultDescription(NS_ConvertUTF8toUTF16(handlerAppName));
+ mimeInfo->SetPreferredAction(nsIMIMEInfo::useSystemDefault);
-+ nsMIMEInfoBase* retval;
-+ NS_ADDREF((retval = mimeInfo));
-+ return retval;
++ return mimeInfo.forget();
+ }
+ return nullptr;
+}
@@ -2799,13 +2851,13 @@ new file mode 100644
+#include "nsTArray.h"
+
+class nsMIMEInfoBase;
-+class nsCAutoString;
++class nsAutoCString;
+class nsCString;
+
+class nsKDERegistry
+{
+ public:
-+ static PRBool HandlerExists(const char *aProtocolScheme);
++ static bool HandlerExists(const char *aProtocolScheme);
+
+ static nsresult LoadURL(nsIURI *aURL);
+
@@ -2855,22 +2907,22 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
if (NS_FAILED(rv)){
HildonURIAction *action = hildon_uri_get_default_action(mSchemeOrType.get(), nullptr);
if (action) {
- nsCAutoString spec;
+ nsAutoCString spec;
aURI->GetAsciiSpec(spec);
if (hildon_uri_open(spec.get(), action, nullptr))
-@@ -61,22 +64,22 @@ nsMIMEInfoUnix::LoadUriInternal(nsIURI *
-
- return rv;
- }
-
- NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval)
+@@ -67,22 +70,22 @@ nsMIMEInfoUnix::GetHasDefaultHandler(boo
{
+ // if mDefaultApplication is set, it means the application has been set from
+ // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
+ // give the GNOME answer.
+ if (mDefaultApplication)
+ return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
+
*_retval = false;
- nsRefPtr mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType);
+ nsRefPtr mimeInfo = nsCommonRegistry::GetFromType(mSchemeOrType);
if (!mimeInfo) {
- nsCAutoString ext;
+ nsAutoCString ext;
nsresult rv = GetPrimaryExtension(ext);
if (NS_SUCCEEDED(rv)) {
- mimeInfo = nsGNOMERegistry::GetFromExtension(ext);
@@ -2883,7 +2935,7 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
if (*_retval)
return NS_OK;
-@@ -119,16 +122,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
+@@ -130,16 +133,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
ContentAction::Action::defaultActionForFile(uri, QString(mSchemeOrType.get()));
if (action.isValid()) {
action.trigger();
@@ -2910,14 +2962,14 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
+ }
+
nsCOMPtr giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
- nsCAutoString uriSpec;
+ nsAutoCString uriSpec;
if (giovfs) {
// nsGIOMimeApp->Launch wants a URI string instead of local file
nsresult rv;
nsCOMPtr ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr uri;
-@@ -146,17 +166,17 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
+@@ -157,17 +177,17 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
/* Fallback to GnomeVFS */
nsCOMPtr app;
if (NS_SUCCEEDED(gnomevfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) && app)
@@ -2929,7 +2981,7 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
- nsRefPtr mimeInfo = nsGNOMERegistry::GetFromExtension(nativePath);
+ nsRefPtr mimeInfo = nsCommonRegistry::GetFromExtension(nativePath);
if (mimeInfo) {
- nsCAutoString type;
+ nsAutoCString type;
mimeInfo->GetType(type);
if (giovfs) {
nsCOMPtr app;
@@ -2947,7 +2999,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
#include "nsOSHelperAppService.h"
#include "nsMIMEInfoUnix.h"
- #ifdef MOZ_WIDGET_GTK2
+ #ifdef MOZ_WIDGET_GTK
-#include "nsGNOMERegistry.h"
+#include "nsCommonRegistry.h"
#endif
@@ -2965,7 +3017,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
*aHandlerExists = true;
#endif
- #ifdef MOZ_WIDGET_GTK2
+ #ifdef MOZ_WIDGET_GTK
// Check the GConf registry for a protocol handler
- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme);
+ *aHandlerExists = nsCommonRegistry::HandlerExists(aProtocolScheme);
@@ -2979,7 +3031,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(const nsACString& aScheme, nsAString& _retval)
{
- #ifdef MOZ_WIDGET_GTK2
+ #ifdef MOZ_WIDGET_GTK
- nsGNOMERegistry::GetAppDescForScheme(aScheme, _retval);
+ nsCommonRegistry::GetAppDescForScheme(aScheme, _retval);
return _retval.IsEmpty() ? NS_ERROR_NOT_AVAILABLE : NS_OK;
@@ -2990,39 +3042,39 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
nsresult nsOSHelperAppService::GetFileTokenForPath(const PRUnichar * platformAppPath, nsIFile ** aFile)
{
-@@ -1265,17 +1265,17 @@ nsOSHelperAppService::GetFromExtension(c
- minorType,
+@@ -1266,17 +1266,17 @@ nsOSHelperAppService::GetFromExtension(c
mime_types_description,
true);
if (NS_FAILED(rv) || majorType.IsEmpty()) {
- #ifdef MOZ_WIDGET_GTK2
+ #ifdef MOZ_WIDGET_GTK
LOG(("Looking in GNOME registry\n"));
-- nsMIMEInfoBase *gnomeInfo = nsGNOMERegistry::GetFromExtension(aFileExt).get();
-+ nsMIMEInfoBase *gnomeInfo = nsCommonRegistry::GetFromExtension(aFileExt).get();
+ nsRefPtr gnomeInfo =
+- nsGNOMERegistry::GetFromExtension(aFileExt);
++ nsCommonRegistry::GetFromExtension(aFileExt);
if (gnomeInfo) {
LOG(("Got MIMEInfo from GNOME registry\n"));
- return gnomeInfo;
+ return gnomeInfo.forget();
}
#endif
rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt),
majorType,
-@@ -1391,17 +1391,17 @@ nsOSHelperAppService::GetFromType(const
- #ifdef MOZ_WIDGET_GTK2
- nsMIMEInfoBase *gnomeInfo = nullptr;
+@@ -1389,17 +1389,17 @@ nsOSHelperAppService::GetFromType(const
+ #ifdef MOZ_WIDGET_GTK
+ nsRefPtr gnomeInfo;
if (handler.IsEmpty()) {
// No useful data yet. Check the GNOME registry. Unfortunately, newer
// GNOME versions no longer have type-to-extension mappings, so we might
// get back a MIMEInfo without any extensions set. In that case we'll have
// to look in our mime.types files for the extensions.
LOG(("Looking in GNOME registry\n"));
-- gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType).get();
-+ gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType).get();
+- gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
++ gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
if (gnomeInfo && gnomeInfo->HasExtensions()) {
LOG(("Got MIMEInfo from GNOME registry, and it has extensions set\n"));
- return gnomeInfo;
+ return gnomeInfo.forget();
}
}
#endif
@@ -3031,7 +3083,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
diff --git a/widget/gtk2/Makefile.in b/widget/gtk2/Makefile.in
--- a/widget/gtk2/Makefile.in
+++ b/widget/gtk2/Makefile.in
-@@ -104,11 +104,14 @@ DEFINES += -DCAIRO_GFX -DMOZ_APP_NAME='
+@@ -67,11 +67,14 @@ DEFINES += -DCAIRO_GFX -DMOZ_APP_NAME='
INCLUDES += \
-I$(srcdir)/../xpwidgets \
@@ -3049,7 +3101,7 @@ diff --git a/widget/gtk2/Makefile.in b/widget/gtk2/Makefile.in
diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
--- a/widget/gtk2/nsFilePicker.cpp
+++ b/widget/gtk2/nsFilePicker.cpp
-@@ -1,16 +1,17 @@
+@@ -1,31 +1,33 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -3067,14 +3119,12 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
#include "nsIStringBundle.h"
#include "nsArrayEnumerator.h"
-@@ -19,16 +20,17 @@
+ #include "nsMemory.h"
+ #include "nsEnumeratorUtils.h"
#include "nsNetUtil.h"
#include "nsReadableUtils.h"
#include "mozcontainer.h"
- #include "prmem.h"
- #include "prlink.h"
-
#include "nsFilePicker.h"
+#include "nsKDEUtils.h"
@@ -3085,7 +3135,7 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
using namespace mozilla;
#define MAX_PREVIEW_SIZE 180
-@@ -264,17 +266,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+@@ -242,17 +244,19 @@ nsFilePicker::AppendFilters(int32_t aFil
return nsBaseFilePicker::AppendFilters(aFilterMask);
}
@@ -3097,16 +3147,16 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
- return NS_OK;
+ // Unless it's KDE.
+ if( mMode != modeOpen || !nsKDEUtils::kdeSupport())
-+ return NS_OK;
++ return NS_OK;
}
- nsCAutoString filter, name;
+ nsAutoCString filter, name;
CopyUTF16toUTF8(aFilter, filter);
CopyUTF16toUTF8(aTitle, name);
mFilters.AppendElement(filter);
mFilterNames.AppendElement(name);
-@@ -388,16 +392,32 @@ nsFilePicker::Show(int16_t *aReturn)
+@@ -366,16 +370,32 @@ nsFilePicker::Show(int16_t *aReturn)
NS_IMETHODIMP
nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
@@ -3134,12 +3184,12 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
nsXPIDLCString title;
title.Adopt(ToNewUTF8String(mTitle));
- GtkWindow *parent_widget = get_gtk_window_for_nsiwidget(mParentWidget);
+ GtkWindow *parent_widget =
+ GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE)
- ? GTK_STOCK_SAVE : GTK_STOCK_OPEN;
-@@ -587,8 +607,235 @@ nsFilePicker::Done(GtkWidget* file_choos
+@@ -567,8 +587,235 @@ nsFilePicker::Done(GtkWidget* file_choos
if (mCallback) {
mCallback->Done(result);
mCallback = nullptr;
@@ -3167,7 +3217,7 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
+
+static PRInt32 windowToXid( nsIWidget* widget )
+ {
-+ GtkWindow *parent_widget = get_gtk_window_for_nsiwidget( widget );
++ GtkWindow *parent_widget = GTK_WINDOW(widget->GetNativeData(NS_NATIVE_SHELLWIDGET));
+ GdkWindow* gdk_window = gtk_widget_get_window( gtk_widget_get_toplevel( GTK_WIDGET( parent_widget )));
+ return GDK_WINDOW_XID( gdk_window );
+ }
@@ -3216,14 +3266,14 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
+ }
+ }
+
-+ nsCAutoString directory;
++ nsAutoCString directory;
+ if (mDisplayDirectory) {
+ mDisplayDirectory->GetNativePath(directory);
+ } else if (mPrevDisplayDirectory) {
+ mPrevDisplayDirectory->GetNativePath(directory);
+ }
+
-+ nsCAutoString startdir;
++ nsAutoCString startdir;
+ if (!directory.IsEmpty()) {
+ startdir = directory;
+ }
@@ -3239,7 +3289,7 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
+ if( startdir.IsEmpty())
+ startdir = ".";
+
-+ nsCAutoString filters;
++ nsAutoCString filters;
+ PRInt32 count = mFilters.Length();
+ if( count == 0 ) //just in case
+ filters = "*";
@@ -3254,12 +3304,12 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
+ }
+
+ nsTArray command;
-+ command.AppendElement( nsCAutoString( arg ));
++ command.AppendElement( nsAutoCString( arg ));
+ command.AppendElement( startdir );
+ if( mMode != nsIFilePicker::modeGetFolder )
+ {
+ command.AppendElement( filters );
-+ nsCAutoString selected;
++ nsAutoCString selected;
+ selected.AppendInt( mSelectedType );
+ command.AppendElement( selected );
+ }
@@ -3269,13 +3319,13 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
+ if( PRInt32 xid = windowToXid( mParentWidget ))
+ {
+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
-+ nsCAutoString parent;
++ nsAutoCString parent;
+ parent.AppendInt( xid );
+ command.AppendElement( parent );
+ }
+
+ nsTArray output;
-+ if( nsKDEUtils::commandBlockUi( command, get_gtk_window_for_nsiwidget( mParentWidget ), &output ))
++ if( nsKDEUtils::commandBlockUi( command, GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)), &output ))
+ {
+ *aReturn = nsIFilePicker::returnOK;
+ mFiles.Clear();
@@ -3357,13 +3407,13 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
+ if( PRInt32 xid = windowToXid( mParentWidget ))
+ {
+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
-+ nsCAutoString parent;
++ nsAutoCString parent;
+ parent.AppendInt( xid );
+ command.AppendElement( parent );
+ }
+
+ nsTArray output;
-+ if( nsKDEUtils::commandBlockUi( command, get_gtk_window_for_nsiwidget( mParentWidget ), &output ))
++ if( nsKDEUtils::commandBlockUi( command, GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)), &output ))
+ {
+ *aReturn = nsIFilePicker::returnOK;
+ mFileURL = output.Length() > 0 ? output[ 0 ] : nsCString();
@@ -3399,17 +3449,16 @@ diff --git a/widget/gtk2/nsFilePicker.h b/widget/gtk2/nsFilePicker.h
diff --git a/xpcom/components/Makefile.in b/xpcom/components/Makefile.in
--- a/xpcom/components/Makefile.in
+++ b/xpcom/components/Makefile.in
-@@ -59,10 +59,11 @@ LOCAL_INCLUDES = \
- # we don't want the shared lib, but we want to force the creation of a static lib.
+@@ -28,9 +28,10 @@ LOCAL_INCLUDES = \
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
DEFINES += -D_IMPL_NS_COM
- ifneq (,$(filter gtk2,$(MOZ_WIDGET_TOOLKIT)))
+ ifdef MOZ_WIDGET_GTK
+ CXXFLAGS += $(TK_CFLAGS)
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
- CXXFLAGS += $(MOZ_GTK2_CFLAGS)
endif
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
--- a/xpcom/components/ManifestParser.cpp
@@ -3477,7 +3526,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
minorVersion);
}
+ desktop = NS_LITERAL_STRING("macosx");
- #elif defined(MOZ_WIDGET_GTK2)
+ #elif defined(MOZ_WIDGET_GTK)
nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(),
gtk_major_version,
gtk_minor_version);
@@ -3545,7 +3594,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
diff --git a/xpcom/io/Makefile.in b/xpcom/io/Makefile.in
--- a/xpcom/io/Makefile.in
+++ b/xpcom/io/Makefile.in
-@@ -157,17 +157,17 @@ include $(topsrcdir)/ipc/chromium/chromi
+@@ -43,17 +43,17 @@ include $(topsrcdir)/ipc/chromium/chromi
DEFINES += -D_IMPL_NS_COM
ifeq ($(OS_ARCH),Linux)
@@ -3567,7 +3616,7 @@ diff --git a/xpcom/io/Makefile.in b/xpcom/io/Makefile.in
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
--- a/xpcom/io/nsLocalFileUnix.cpp
+++ b/xpcom/io/nsLocalFileUnix.cpp
-@@ -49,16 +49,17 @@
+@@ -50,16 +50,17 @@
#include "prproces.h"
#include "nsIDirectoryEnumerator.h"
#include "nsISimpleEnumerator.h"
@@ -3585,7 +3634,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
#include "prmem.h"
#include "plbase64.h"
-@@ -1760,44 +1761,51 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1753,44 +1754,51 @@ nsLocalFile::SetPersistentDescriptor(con
return InitWithNativePath(aPersistentDescriptor);
#endif
}
@@ -3599,7 +3648,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
- if (!giovfs && !gnomevfs)
- return NS_ERROR_FAILURE;
-
-+ nsCAutoString url;
++ nsAutoCString url;
bool isDirectory;
if (NS_FAILED(IsDirectory(&isDirectory)))
return NS_ERROR_FAILURE;
@@ -3613,7 +3662,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
+ url = mPath;
} else {
nsCOMPtr parentDir;
- nsCAutoString dirPath;
+ nsAutoCString dirPath;
if (NS_FAILED(GetParent(getter_AddRefs(parentDir))))
return NS_ERROR_FAILURE;
if (NS_FAILED(parentDir->GetNativePath(dirPath)))
@@ -3651,7 +3700,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
return rv;
}
return NS_ERROR_FAILURE;
-@@ -1823,16 +1831,23 @@ nsLocalFile::Launch()
+@@ -1816,16 +1824,23 @@ nsLocalFile::Launch()
if (nullptr == connection)
return NS_ERROR_FAILURE;
diff --git a/mozilla-language.patch b/mozilla-language.patch
index d698a47..26da69a 100644
--- a/mozilla-language.patch
+++ b/mozilla-language.patch
@@ -1,17 +1,17 @@
# HG changeset patch
# User Wolfgang Rosenauer
-# Parent 0d6917b8f28f6e0398dbf329dda4932ba4f997c2
+# Parent df748bfc0eaca6dedf086cfd7167392416bfae27
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
-@@ -160,16 +160,17 @@ nsLocaleService::nsLocaleService(void)
+@@ -127,16 +127,17 @@ nsLocaleService::nsLocaleService(void)
nsRefPtr resultLocale(new nsLocale());
- NS_ENSURE_TRUE(resultLocale, );
+ NS_ENSURE_TRUE_VOID(resultLocale);
#ifdef MOZ_WIDGET_QT
- const char* lang = QLocale::system().name().toAscii();
+ const char* lang = QLocale::system().name().toUtf8();
#else
// Get system configuration
const char* lang = getenv("LANG");
@@ -24,7 +24,7 @@ diff --git a/intl/locale/src/nsLocaleService.cpp b/intl/locale/src/nsLocaleServi
for( i = 0; i < LocaleListLength; i++ ) {
nsresult result;
-@@ -188,16 +189,21 @@ nsLocaleService::nsLocaleService(void)
+@@ -155,16 +156,21 @@ nsLocaleService::nsLocaleService(void)
} else {
CopyASCIItoUTF16(lang, platformLocale);
result = nsPosixLocale::GetXPLocale(lang, xpLocale);
diff --git a/mozilla-nongnome-proxies.patch b/mozilla-nongnome-proxies.patch
index 8d20df5..ab6eb9f 100644
--- a/mozilla-nongnome-proxies.patch
+++ b/mozilla-nongnome-proxies.patch
@@ -9,35 +9,37 @@ retrieving revision 1.1
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -74,22 +74,28 @@ private:
- nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
- };
-
- NS_IMPL_ISUPPORTS1(nsUnixSystemProxySettings, nsISystemProxySettings)
+@@ -50,24 +50,28 @@ nsUnixSystemProxySettings::GetMainThread
+ // dbus prevents us from being threadsafe, but this routine should not block anyhow
+ *aMainThreadOnly = true;
+ return NS_OK;
+ }
nsresult
nsUnixSystemProxySettings::Init()
{
- mSchemeProxySettings.Init(5);
-- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
- mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
- if (mGSettings) {
- mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
- getter_AddRefs(mProxySettings));
-+ // If this is a GNOME session, load gconf and try to use its preferences.
-+ // If gconf is not available (which would be stupid) we'll proceed as if
-+ // this was not a GNOME session, using *_PROXY environment variables.
+- }
+- if (!mProxySettings) {
+- mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
++ // only use GSettings if that is a GNOME session
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
+ if (sessionType && !strcmp(sessionType, "gnome")) {
+ mSchemeProxySettings.Init(5);
-+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+ if (mGSettings) {
+ mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+ getter_AddRefs(mProxySettings));
++ }
++ if (!mProxySettings) {
++ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ }
}
-
+
return NS_OK;
}
diff --git a/mozilla-ppc.patch b/mozilla-ppc.patch
index c9c3e1b..9ad8f08 100644
--- a/mozilla-ppc.patch
+++ b/mozilla-ppc.patch
@@ -1,5 +1,5 @@
# HG changeset patch
-# Parent 58ae98c85e39def96a90cb21c90e871f41a03a71
+# Parent 21d0e194954e451f0f1935d0ed68ee9eae432ddf
# User Wolfgang Rosenauer
Bug 746112 - RegExp hang on ppc64 in execute.
Bug 750620 - Make double-conversion portable to exotic architectures. TM: mozilla15
@@ -48,7 +48,7 @@ diff --git a/js/src/yarr/YarrInterpreter.h b/js/src/yarr/YarrInterpreter.h
diff --git a/js/src/yarr/YarrPattern.h b/js/src/yarr/YarrPattern.h
--- a/js/src/yarr/YarrPattern.h
+++ b/js/src/yarr/YarrPattern.h
-@@ -166,17 +166,17 @@ struct PatternTerm {
+@@ -180,17 +180,17 @@ struct PatternTerm {
, m_capture(false)
, m_invert(invert)
{
@@ -70,7 +70,7 @@ diff --git a/js/src/yarr/YarrPattern.h b/js/src/yarr/YarrPattern.h
diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
--- a/memory/mozjemalloc/jemalloc.c
+++ b/memory/mozjemalloc/jemalloc.c
-@@ -1086,17 +1086,19 @@ struct arena_s {
+@@ -1099,17 +1099,17 @@ struct arena_s {
static unsigned ncpus;
#endif
@@ -79,17 +79,16 @@ diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
* controlling the malloc behavior are defined as compile-time constants
* for best performance and cannot be altered at runtime.
*/
-+#if !(defined(__powerpc__))
+-#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__)
++#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !(defined(__powerpc__))
#define MALLOC_STATIC_SIZES 1
-+#endif
+ #endif
#ifdef MALLOC_STATIC_SIZES
/*
* VM page size. It must divide the runtime CPU page size or the code
* will abort.
- */
- #define pagesize_2pow ((size_t) 12)
diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h
--- a/mfbt/double-conversion/utils.h
+++ b/mfbt/double-conversion/utils.h
diff --git a/mozilla-shared-nss-db.patch b/mozilla-shared-nss-db.patch
index e929e00..f3d3b3d 100644
--- a/mozilla-shared-nss-db.patch
+++ b/mozilla-shared-nss-db.patch
@@ -7,7 +7,7 @@ References:
diff --git a/configure.in b/configure.in
--- a/configure.in
+++ b/configure.in
-@@ -7987,16 +7987,31 @@ AC_SUBST(QCMS_LIBS)
+@@ -8330,16 +8330,31 @@ AC_SUBST(QCMS_LIBS)
dnl ========================================================
dnl HarfBuzz
@@ -33,41 +33,41 @@ diff --git a/configure.in b/configure.in
+dnl ========================================================
dnl SIL Graphite
dnl ========================================================
- if test "$MOZ_GRAPHITE"; then
- MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
- AC_DEFINE(MOZ_GRAPHITE)
- else
- MOZ_GRAPHITE_LIBS=
- fi
+ MOZ_GRAPHITE_LIBS='$(DEPTH)/gfx/graphite2/src/$(LIB_PREFIX)mozgraphite2.$(LIB_SUFFIX)'
+ AC_SUBST(MOZ_GRAPHITE_LIBS)
+
+ dnl ========================================================
+ dnl OTS
+ dnl ========================================================
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
-@@ -90,12 +90,14 @@ DEFINES += \
+@@ -18,10 +18,13 @@ LIBXUL_LIBRARY = 1
+ CSRCS += md4.c
+
+ DEFINES += \
+ -DNSS_ENABLE_ECC \
+ -DDLL_PREFIX=\"$(DLL_PREFIX)\" \
+ -DDLL_SUFFIX=\"$(DLL_SUFFIX)\" \
$(NULL)
- EXPORTS += \
- nsNSSShutDown.h \
- $(NULL)
-
- # Use local includes because they are inserted before INCLUDES
- # so that Mozilla's nss.h is used, not glibc's
--LOCAL_INCLUDES += $(NSS_CFLAGS)
-+LOCAL_INCLUDES += $(NSS_CFLAGS) $(NSSHELPER_CFLAGS)
-+
++LOCAL_INCLUDES += $(NSSHELPER_CFLAGS)
+EXTRA_DSO_LDOPTS += $(NSSHELPER_LIBS)
-
++
include $(topsrcdir)/config/rules.mk
diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/src/nsNSSComponent.cpp
--- a/security/manager/ssl/src/nsNSSComponent.cpp
+++ b/security/manager/ssl/src/nsNSSComponent.cpp
-@@ -1,14 +1,21 @@
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
+@@ -3,16 +3,23 @@
* 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/. */
+ #ifdef MOZ_LOGGING
+ #define FORCE_PR_LOG 1
+ #endif
+
+#ifdef MOZ_ENABLE_NSSHELPER
+#pragma GCC visibility push(default)
+#include
@@ -76,14 +76,14 @@ diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/
+#endif
+
#include "nsNSSComponent.h"
- #include "nsNSSCallbacks.h"
- #include "nsNSSIOLayer.h"
- #include "nsCertVerificationThread.h"
- #include "nsNetUtil.h"
+ #include "CertVerifier.h"
+ #include "nsCertVerificationThread.h"
#include "nsAppDirectoryServiceDefs.h"
- #include "nsDirectoryService.h"
-@@ -1731,18 +1738,34 @@ nsNSSComponent::InitializeNSS(bool showW
+ #include "nsComponentManagerUtils.h"
+ #include "nsDirectoryServiceDefs.h"
+ #include "nsICertOverrideService.h"
+@@ -1132,18 +1139,34 @@ nsNSSComponent::InitializeNSS(bool showW
ConfigureInternalPKCS11Token();
// The NSS_INIT_NOROOTINIT flag turns off the loading of the root certs
@@ -123,12 +123,12 @@ 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
-@@ -443,17 +443,17 @@ EXTRA_DSO_LDOPTS += -INCREMENTAL:NO
+@@ -490,17 +490,17 @@ EXTRA_DSO_LDOPTS += -INCREMENTAL:NO
endif
endif
endif
- EXTRA_DSO_LDOPTS += $(LIBS_DIR) $(EXTRA_DSO_LIBS)
+ EXTRA_DSO_LDOPTS += $(LIBS_DIR)
DEFINES += -DIMPL_XREAPI
diff --git a/ppc-xpcshell.patch b/ppc-xpcshell.patch
deleted file mode 100644
index b399afc..0000000
--- a/ppc-xpcshell.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-Index: mozilla/js/src/gc/Heap.h
-===================================================================
---- mozilla.orig/js/src/gc/Heap.h
-+++ mozilla/js/src/gc/Heap.h
-@@ -110,19 +110,22 @@ struct Cell
- */
- #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9))
- const size_t PageShift = 13;
-+const size_t ArenaShift = PageShift;
-+#elif defined(__powerpc__)
-+const size_t PageShift = 16;
-+const size_t ArenaShift = 12;
- #else
- const size_t PageShift = 12;
-+const size_t ArenaShift = PageShift;
- #endif
- const size_t PageSize = size_t(1) << PageShift;
-+const size_t ArenaSize = size_t(1) << ArenaShift;
-+const size_t ArenaMask = ArenaSize - 1;
-
- const size_t ChunkShift = 20;
- const size_t ChunkSize = size_t(1) << ChunkShift;
- const size_t ChunkMask = ChunkSize - 1;
-
--const size_t ArenaShift = PageShift;
--const size_t ArenaSize = PageSize;
--const size_t ArenaMask = ArenaSize - 1;
--
- /*
- * This is the maximum number of arenas we allow in the FreeCommitted state
- * before we trigger a GC_SHRINK to release free arenas to the OS.
-Index: mozilla/js/src/gc/Memory.cpp
-===================================================================
---- mozilla.orig/js/src/gc/Memory.cpp
-+++ mozilla/js/src/gc/Memory.cpp
-@@ -15,6 +15,15 @@
- namespace js {
- namespace gc {
-
-+/* Unused memory decommiting requires the arena size match the page size. */
-+extern const size_t PageSize;
-+extern const size_t ArenaSize;
-+static bool
-+DecommitEnabled()
-+{
-+ return PageSize == ArenaSize;
-+}
-+
- #if defined(XP_WIN)
- #include "jswin.h"
- #include
-@@ -83,6 +92,9 @@ UnmapPages(void *p, size_t size)
- bool
- MarkPagesUnused(void *p, size_t size)
- {
-+ if (!DecommitEnabled())
-+ return false;
-+
- JS_ASSERT(uintptr_t(p) % PageSize == 0);
- LPVOID p2 = VirtualAlloc(p, size, MEM_RESET, PAGE_READWRITE);
- return p2 == p;
-@@ -352,6 +364,9 @@ UnmapPages(void *p, size_t size)
- bool
- MarkPagesUnused(void *p, size_t size)
- {
-+ if (!DecommitEnabled())
-+ return false;
-+
- JS_ASSERT(uintptr_t(p) % PageSize == 0);
- int result = madvise(p, size, MADV_DONTNEED);
- return result != -1;
diff --git a/thunderbird-17.0.8-source.tar.bz2 b/thunderbird-17.0.8-source.tar.bz2
deleted file mode 100644
index 5103715..0000000
--- a/thunderbird-17.0.8-source.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c6c487fde5f068b07b8f445453e50051648e0af1630c3cdc84e991a8a5067041
-size 115020552
diff --git a/thunderbird-24.0-source.tar.bz2 b/thunderbird-24.0-source.tar.bz2
new file mode 100644
index 0000000..e355bc4
--- /dev/null
+++ b/thunderbird-24.0-source.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:209a6e9e1c2a0cccc8e9582db43c1c8125ffa6623517e91e51606683adc951c3
+size 142363452
diff --git a/thunderbird-shared-nss-db.patch b/thunderbird-shared-nss-db.patch
index 3999540..83cc7e2 100644
--- a/thunderbird-shared-nss-db.patch
+++ b/thunderbird-shared-nss-db.patch
@@ -4,41 +4,6 @@ Subject: use libnsssharedhelper if available at compile time
(can be disabled by exporting MOZ_XRE_NO_NSSHELPER=1)
References:
-diff --git a/configure.in b/configure.in
---- a/configure.in
-+++ b/configure.in
-@@ -6444,16 +6444,31 @@ AC_SUBST(QCMS_LIBS)
-
- dnl ========================================================
- dnl HarfBuzz
- dnl ========================================================
- 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
-+dnl ========================================================
-+
-+ PKG_CHECK_MODULES(NSSHELPER, nss-shared-helper,
-+ [MOZ_ENABLE_NSSHELPER=1],
-+ [MOZ_ENABLE_NSSHELPER=])
-+
-+if test "$MOZ_ENABLE_NSSHELPER"; then
-+ AC_DEFINE(MOZ_ENABLE_NSSHELPER)
-+fi
-+AC_SUBST(MOZ_ENABLE_NSSHELPER)
-+AC_SUBST(NSSHELPER_CFLAGS)
-+AC_SUBST(NSSHELPER_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)
- fi
diff --git a/mail/app/Makefile.in b/mail/app/Makefile.in
--- a/mail/app/Makefile.in
+++ b/mail/app/Makefile.in