Index: MOVED =================================================================== --- MOVED (revision 315699) +++ MOVED (working copy) @@ -4191,3 +4191,5 @@ print/system-config-printer-kde|print/kde4-print-manager|2013-03-27|Superseded by print/kde4-print-manager science/py-biolccc|science/pyteomics.biolccc|2013-03-28|Renamed upstream math/hs-Agda-executable||2013-03-29|Removed: it has become part of math/hs-Agda +mail/thunderbird-esr|mail/thunderbird|2013-04-03|Removed: Mozilla stopped providing 2 versions of thunderbird +mail/thunderbird-esr-i18n|mail/thunderbird-i18n|2013-04-03|Removed: Mozilla stopped providing 2 versions of thunderbird Index: UPDATING =================================================================== --- UPDATING (revision 315699) +++ UPDATING (working copy) @@ -5,6 +5,22 @@ You should get into the habit of checking this file for changes each time you update your ports collection, before attempting any port upgrades. +20130403: + AFFECTS: users of mail/thunderbird-esr* + AUTHOR: flo@FreeBSD.org + + Mozilla stopped providing 2 versions of thunderbird. The only one lives + in mail/thunderbird if you are using thunderbird-esr please switch to + thunderbird by running on of the following commands. + + # portupgrade -o mail/thunderbird mail/thunderbird-esr + # portupgrade -o mail/thunderbird-i18n \ + mail/thunderbird-esr-i18n (if installed) + or + # portmaster -o mail/thunderbird mail/thunderbird-esr + # portmaster -o mail/thunderbird-i18n \ + mail/thunderbird-esr-i18n (if installed) + 20130331: AFFECTS: users of */hs-* AUTHOR: haskell@FreeBSD.org Index: security/vuxml/vuln.xml =================================================================== --- security/vuxml/vuln.xml (revision 315699) +++ security/vuxml/vuln.xml (working copy) @@ -51,6 +51,92 @@ --> + + mozilla -- multiple vulnerabilities + + + firefox + 18.0,120.0,1 + 17.0.3,1 + + + linux-firefox + 17.0.5,1 + + + linux-seamonkey + 2.17 + + + linux-thunderbird + 17.0.5 + + + seamonkey + 2.17 + + + thunderbird + 11.017.0.5 + + + + +

The Mozilla Project reports:

+
+

MFSA 2013-30 Miscellaneous memory safety hazards (rv:20.0 / + rv:17.0.5)

+

MFSA 2013-31 Out-of-bounds write in Cairo library

+

MFSA 2013-32 Privilege escalation through Mozilla Maintenance + Service

+

MFSA 2013-33 World read and write access to app_tmp directory on + Android

+

MFSA 2013-34 Privilege escalation through Mozilla Updater

+

MFSA 2013-35 WebGL crash with Mesa graphics driver on Linux

+

MFSA 2013-36 Bypass of SOW protections allows cloning of protected + nodes

+

MFSA 2013-37 Bypass of tab-modal dialog origin disclosure

+

MFSA 2013-38 Cross-site scripting (XSS) using timed history + navigations

+

MFSA 2013-39 Memory corruption while rendering grayscale PNG + images

+

MFSA 2013-40 Out-of-bounds array read in CERT_DecodeCertPackage

+
+ +
+ + CVE-2013-0788 + CVE-2013-0789 + CVE-2013-0790 + CVE-2013-0799 + CVE-2013-0800 + CVE-2013-0798 + CVE-2013-0797 + CVE-2013-0796 + CVE-2013-0795 + CVE-2013-0794 + CVE-2013-0793 + CVE-2013-0792 + CVE-2013-0791 + http://www.mozilla.org/security/announce/2013/mfsa2013-30.html + http://www.mozilla.org/security/announce/2013/mfsa2013-31.html + http://www.mozilla.org/security/announce/2013/mfsa2013-32.html + http://www.mozilla.org/security/announce/2013/mfsa2013-33.html + http://www.mozilla.org/security/announce/2013/mfsa2013-34.html + http://www.mozilla.org/security/announce/2013/mfsa2013-35.html + http://www.mozilla.org/security/announce/2013/mfsa2013-36.html + http://www.mozilla.org/security/announce/2013/mfsa2013-37.html + http://www.mozilla.org/security/announce/2013/mfsa2013-38.html + http://www.mozilla.org/security/announce/2013/mfsa2013-39.html + http://www.mozilla.org/security/announce/2013/mfsa2013-40.html + http://www.mozilla.org/security/known-vulnerabilities/ + + + 2013-04-02 + 2013-04-03 + +
+ FreeBSD -- BIND remote denial of service Index: Mk/bsd.gecko.mk =================================================================== --- Mk/bsd.gecko.mk (revision 315699) +++ Mk/bsd.gecko.mk (working copy) @@ -179,7 +179,7 @@ # is given by the maintainer via the port or by the # user via defined variable try to find the highest # stable installed version. -# Available values: yes 17+ 19+ 17 19+ +# Available values: yes 17+ 20+ 17 20+ # NOTE: # default value 17 is used in case of USE_FIREFOX=yes # @@ -190,9 +190,9 @@ # version is given by the maintainer via the port # or by the user via defined variable try to find # the highest stable installed version. -# Available values: yes 16+ 16 +# Available values: yes 17+ 17 # NOTE: -# default value 16 is used in case of USE_SEAMONKEY=yes +# default value 17 is used in case of USE_SEAMONKEY=yes # # USE_SEAMONKEY_BUILD Add buildtime dependency on SeaMonkey. # Available values: see USE_SEAMONKEY @@ -201,7 +201,7 @@ # version is given by the maintainer via the port # or by the user via defined variable try to find # the highest stable installed version. -# Available values: yes 10+ 17+ 10 17 +# Available values: yes 17+ 17 # NOTE: # default value 17 is used in case of USE_THUNDERBIRD=yes # @@ -221,11 +221,11 @@ .endif _FIREFOX_DEFAULT_VERSION= 17 -_FIREFOX_VERSIONS= 17 19 -_FIREFOX_RANGE_VERSIONS= 17+ 19+ +_FIREFOX_VERSIONS= 17 20 +_FIREFOX_RANGE_VERSIONS= 17+ 20+ # For specifying [17, ..]+ -_FIREFOX_19P= 19 ${_FIREFOX_17P} +_FIREFOX_20P= 20 ${_FIREFOX_17P} _FIREFOX_17P= 17 # Set the default Firefox version and check if USE_FIREFOX=yes was given @@ -272,7 +272,7 @@ # Dependence lines for different Firefox versions 17_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:${PORTSDIR}/www/firefox-esr -19_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:${PORTSDIR}/www/firefox +20_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:${PORTSDIR}/www/firefox # Add dependencies .if defined(USE_FIREFOX) @@ -294,12 +294,12 @@ _SEAMONKEY_BUILD_DEPENDS= yes .endif -_SEAMONKEY_DEFAULT_VERSION= 16 -_SEAMONKEY_VERSIONS= 16 -_SEAMONKEY_RANGE_VERSIONS= 16+ +_SEAMONKEY_DEFAULT_VERSION= 17 +_SEAMONKEY_VERSIONS= 17 +_SEAMONKEY_RANGE_VERSIONS= 17+ -# For specifying [16, ..]+ -_SEAMONKEY_16P= 16 +# For specifying [17, ..]+ +_SEAMONKEY_17P= 17 # Set the default SeaMonkey version and check if USE_SEAMONKEY=yes was given .if ${USE_SEAMONKEY} == "yes" @@ -341,7 +341,7 @@ .endif # Dependence lines for different SeaMonkey versions -16_DEPENDS= ${LOCALBASE}/lib/seamonkey/seamonkey:${PORTSDIR}/www/seamonkey +17_DEPENDS= ${LOCALBASE}/lib/seamonkey/seamonkey:${PORTSDIR}/www/seamonkey # Add dependencies .if defined(USE_SEAMONKEY) @@ -363,13 +363,12 @@ _THUNDERBIRD_BUILD_DEPENDS= yes .endif -_THUNDERBIRD_DEFAULT_VERSION= 10 -_THUNDERBIRD_VERSIONS= 10 17 -_THUNDERBIRD_RANGE_VERSIONS= 10+ 17+ +_THUNDERBIRD_DEFAULT_VERSION= 17 +_THUNDERBIRD_VERSIONS= 17 +_THUNDERBIRD_RANGE_VERSIONS= 17+ -# For specifying [10, ..]+ -_THUNDERBIRD_17P= 17 ${_THUNDERBIRD_10P} -_THUNDERBIRD_10P= 10 +# For specifying [17, ..]+ +_THUNDERBIRD_17P= 17 # Set the default Thunderbird version and check if USE_THUNDERBIRD=yes was given .if ${USE_THUNDERBIRD} == "yes" @@ -413,7 +412,6 @@ .endif # Dependence lines for different Thunderbird versions -10_DEPENDS= ${LOCALBASE}/lib/thunderbird/thunderbird:${PORTSDIR}/mail/thunderbird-esr 17_DEPENDS= ${LOCALBASE}/lib/thunderbird/thunderbird:${PORTSDIR}/mail/thunderbird # Add dependencies @@ -543,27 +541,18 @@ MOZ_OPTIONS+= --prefix="${FAKEDIR}" CPPFLAGS+= -isystem${LOCALBASE}/include -LDFLAGS+= -L${LOCALBASE}/lib +LDFLAGS+= -L${LOCALBASE}/lib -Wl,-z,origin -Wl,-rpath,\\\$$\$$ORIGIN -.if ${OSVERSION} > 800072 -LDFLAGS+= -Wl,-z,origin -Wl,-rpath,\\\$$\$$ORIGIN -.else -LDFLAGS+= -Wl,-rpath,${PREFIX}/lib/${MOZ_RPATH} -.endif - .if ${MOZILLA_VER:R:R} >= 19 || ${MOZILLA:Mseamonkey*} -# prefer clang -. if ${CC} == "cc" && (exists(/usr/bin/clang) && ${OSVERSION} >= 900014 || \ - exists(${LOCALBASE}/bin/clang)) -CC= clang +# prefer base clang, for lang/clang{,-devel} see ports/177224 +. if ${CC} == "cc" && (exists(/usr/bin/clang) && ${OSVERSION} >= 900014) +CC= /usr/bin/clang . endif -. if ${CXX} == "c++" && (exists(/usr/bin/clang++) && ${OSVERSION} >= 900014 || \ - exists(${LOCALBASE}/bin/clang++)) -CXX= clang++ +. if ${CXX} == "c++" && (exists(/usr/bin/clang++) && ${OSVERSION} >= 900014) +CXX= /usr/bin/clang++ . endif -. if ${CPP} == "cpp" && (exists(/usr/bin/clang-cpp) && ${OSVERSION} >= 900014 || \ - exists(${LOCALBASE}/bin/clang-cpp)) -CPP= clang-cpp +. if ${CPP} == "cpp" && (exists(/usr/bin/clang-cpp) && ${OSVERSION} >= 900045) +CPP= /usr/bin/clang-cpp . endif . if ${CC} != "cc" && ${CPP} == "cpp" CPP= ${CC} -E @@ -574,18 +563,17 @@ . endif .endif -.if ${MOZILLA_VER:R:R} >= 16 || exists(${.CURDIR}/files/patch-bug788955) +.if ${MOZILLA_VER:R:R} >= 19 || exists(${.CURDIR}/files/patch-bug788955) .if ${OSVERSION} > 1000011 # use jemalloc 3.0.0 API in libc MOZ_EXPORT+= MOZ_JEMALLOC=1 MOZ_JEMALLOC3=1 -.elif ${OSVERSION} > 701106 +.else MOZ_OPTIONS+= --enable-jemalloc MOZ_EXPORT+= MOZ_JEMALLOC=1 MOZ_JEMALLOC3=1 .endif .endif -.if (${OSVERSION} >= 900000 && ${OSVERSION} < 900045) \ - || ${OSVERSION} < 802513 +.if ${OSVERSION} >= 900000 && ${OSVERSION} < 900045 MOZ_EXPORT+= ac_cv_thread_keyword=no \ je_cv_tls_model=no .endif @@ -629,7 +617,7 @@ sqlite_LIB_DEPENDS= sqlite3:${PORTSDIR}/databases/sqlite3 sqlite_MOZ_OPTIONS= --enable-system-sqlite -.if ${MOZILLA_VER:R:R} >= 20 || exists(${.CURDIR}/files/patch-bug787804) +.if ${MOZILLA_VER:R:R} >= 20 || ${MOZILLA:Mseamonkey*} sqlite_EXTRACT_AFTER_ARGS= --exclude mozilla*/db/sqlite3 .endif @@ -680,7 +668,6 @@ --disable-gtktest \ --disable-freetypetest \ --disable-installer \ - --disable-necko-wifi \ --disable-updater \ --disable-pedantic @@ -688,6 +675,10 @@ LIBS+= -Wl,--as-needed,-lcxxrt,--no-as-needed .endif +.if !exists(${FILESDIR}/patch-bug803480) || ! ${PORT_OPTIONS:MDBUS} +MOZ_OPTIONS+= --disable-necko-wifi +.endif + .if ${MOZ_TOOLKIT:Mcairo-qt} # don't use - transparent backgrounds (bug 521582), USE_MOZILLA+= -cairo # ports/169343 @@ -717,7 +708,7 @@ .endif .if ${PORT_OPTIONS:MGSTREAMER} -USE_GSTREAMER= yes +USE_GSTREAMER?= good ffmpeg MOZ_OPTIONS+= --enable-gstreamer .else MOZ_OPTIONS+= --disable-gstreamer @@ -761,8 +752,14 @@ .if ${PORT_OPTIONS:MWEBRTC} BUILD_DEPENDS+= v4l_compat>0:${PORTSDIR}/multimedia/v4l_compat LIB_DEPENDS+= v4l2:${PORTSDIR}/multimedia/libv4l -. if ! ${PORT_OPTIONS:MALSA} +. if ${MOZILLA_VER:R:R} >= 21 +. if ${PORT_OPTIONS:MOSS} +IGNORE= WEBRTC works only with ALSA and PULSEAUDIO audio backends +. endif +. else +. if ! ${PORT_OPTIONS:MALSA} IGNORE= WEBRTC works only with ALSA audio backend +. endif . endif .else MOZ_OPTIONS+= --disable-webrtc @@ -820,7 +817,16 @@ -e 's|%%MOZDIR%%|${PREFIX}/lib/${MOZILLA}|g' MOZCONFIG_SED?= ${SED} ${MOZ_SED_ARGS} -.if ${ARCH}=="sparc64" +.if ${ARCH} == amd64 +CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} +.elif ${ARCH:Mpowerpc*} +USE_GCC?= yes +CFLAGS+= -D__STDC_CONSTANT_MACROS +. if ${ARCH} == "powerpc64" +MOZ_EXPORT+= UNAME_m="${ARCH}" +CFLAGS+= -mminimal-toc +. endif +.elif ${ARCH} == "sparc64" # Work around miscompilation/mislinkage of the sCanonicalVTable hacks. MOZ_OPTIONS+= --disable-v1-string-abi .endif @@ -932,14 +938,12 @@ -e 's|mozilla/plugins|browser_plugins|g' \ ${MOZSRC}/xpcom/io/nsAppFileLocationProvider.cpp \ ${MOZSRC}/toolkit/xre/nsXREDirProvider.cpp -.if ${CXX} == "clang++" && ${OSVERSION} < 900506 +.if !empty(CXX:M*clang*) && ${OSVERSION} < 900506 @${GREP} -Flr -- '-mss' ${WRKSRC} | ${XARGS} \ ${REINPLACE_CMD} -e 's/-mss/-mmmx &/' .endif -.if ${MOZILLA} != "kompozer" @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${MOZSRC}/extensions/spellcheck/hunspell/src/mozHunspell.cpp -.endif # handles mozilla pis scripts. gecko-moz-pis-patch: @@ -1032,13 +1036,6 @@ ${TAR} cf - -C${FAKEDIR}/${dir} -s'|${FAKEDIR}|${PREFIX}|s' . | \ ${TAR} xof - -C${PREFIX}/${dir} .endfor -.if (${OSVERSION} < 800081 ) - # XXX: make sure bsdtar(1) corrected symlinks - ${FIND} ${FAKEDIR} -type l -exec \ - ${ECHO_CMD} stat -f \'${LN} -hfs \"%Y\" \"%N\"\' {} + | \ - ${SED} s'|${FAKEDIR}|${PREFIX}|g' | ${SH} | \ - ${SED} -n s'|${FAKEDIR}|${PREFIX}|p' | ${SH} -x -.endif .for pcfile in ${MOZ_PKGCONFIG_FILES} ${INSTALL_DATA} ${FAKEDIR}/libdata/pkgconfig/${pcfile}.pc \ ${PREFIX}/libdata/pkgconfig/${pcfile}.pc Index: devel/nspr/Makefile =================================================================== --- devel/nspr/Makefile (revision 315699) +++ devel/nspr/Makefile (working copy) @@ -6,7 +6,7 @@ # $MCom: ports-experimental/devel/nspr/Makefile,v 1.6 2008/03/12 13:06:56 ahze Exp $ PORTNAME= nspr -DISTVERSION= 4.9.5 +DISTVERSION= 4.9.6 CATEGORIES= devel MASTER_SITES= MOZILLA MASTER_SITE_SUBDIR= nspr/releases/v${PORTVERSION}/src @@ -21,9 +21,7 @@ MAKE_JOBS_SAFE= yes GNU_CONFIGURE= yes CONFIGURE_SCRIPT=../configure -CONFIGURE_ARGS= --srcdir=${WRKSRC:H} \ - --with-pthreads -CONFIGURE_ENV= BSD_PTHREAD_LIBS=${PTHREAD_LIBS} +CONFIGURE_ARGS= --srcdir=${WRKSRC:H} MAKE_ENV= DIST=${WRKSRC}/dist @@ -39,9 +37,6 @@ CONFIGURE_ARGS+=--disable-debug .endif -post-patch: - @${REINPLACE_CMD} -e 's,-lpthread,${PTHREAD_LIBS},g ; s,echo aout,echo elf,g' ${WRKSRC}/${CONFIGURE_SCRIPT} - do-install: ${MKDIR} ${PREFIX}/include/nspr ${TAR} -C ${WRKSRC}/dist/include --dereference -cf - . | \ @@ -64,7 +59,7 @@ .endfor prtests: - ${SETENV} PTHREAD_LIBS="${PTHREAD_LIBS}" ${GMAKE} -C ${WRKSRC}/pr/tests + ${GMAKE} -C ${WRKSRC}/pr/tests ${LN} -sf libmy.so.1 ${WRKSRC}/pr/tests/dll/libmy.so cd ${WRKSRC}/pr/tests && ../../../pr/tests/runtests.sh Index: devel/nspr/distinfo =================================================================== --- devel/nspr/distinfo (revision 315699) +++ devel/nspr/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (nspr-4.9.5.tar.gz) = 616ab65c849155c9ed0e5f502530a241cc9108e278275aa448b417ae632c7604 -SIZE (nspr-4.9.5.tar.gz) = 1156396 +SHA256 (nspr-4.9.6.tar.gz) = 7693fddd3c5cc15d53a50df53ab5dcdaa2eb58f5003302690559471744d6c6f9 +SIZE (nspr-4.9.6.tar.gz) = 1163033 Index: devel/nspr/files/patch-..::configure =================================================================== --- devel/nspr/files/patch-..::configure (revision 315699) +++ devel/nspr/files/patch-..::configure (working copy) @@ -14,15 +14,15 @@ fi MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@' DSO_CFLAGS=-fPIC -@@ -6271,11 +6271,6 @@ +@@ -6271,11 +6271,9 @@ #define _THREAD_SAFE 1 EOF -- if test "$ac_cv_have_dash_pthread" = "yes"; then -- _PTHREAD_LDFLAGS="-pthread" + if test "$ac_cv_have_dash_pthread" = "yes"; then + _PTHREAD_LDFLAGS="-pthread" - else - _PTHREAD_LDFLAGS="-lc_r" -- fi + fi ;; *-netbsd*) if test "$ac_cv_have_dash_pthread" = "yes"; then Index: devel/nspr/files/patch-.._pr_tests_Makefile =================================================================== --- devel/nspr/files/patch-.._pr_tests_Makefile (revision 315699) +++ devel/nspr/files/patch-.._pr_tests_Makefile (working copy) @@ -1,11 +0,0 @@ ---- ../../nsprpub/pr/tests/Makefile.in.orig Mon Apr 26 00:01:02 2004 -+++ ../../nsprpub/pr/tests/Makefile.in Tue Nov 28 11:08:14 2006 -@@ -418,7 +418,7 @@ - - ifeq ($(OS_ARCH),FreeBSD) - ifeq ($(USE_PTHREADS),1) --LDOPTS += -pthread -+LDOPTS += ${PTHREAD_LIBS} - endif - LDOPTS += -Xlinker -R $(ABSOLUTE_LIB_DIR) - endif Index: mail/Makefile =================================================================== --- mail/Makefile (revision 315699) +++ mail/Makefile (working copy) @@ -715,8 +715,6 @@ SUBDIR += textmail SUBDIR += thunderbird SUBDIR += thunderbird-dictionaries - SUBDIR += thunderbird-esr - SUBDIR += thunderbird-esr-i18n SUBDIR += thunderbird-i18n SUBDIR += tkrat2 SUBDIR += tlb Index: mail/linux-thunderbird/Makefile =================================================================== --- mail/linux-thunderbird/Makefile (revision 315699) +++ mail/linux-thunderbird/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= thunderbird -PORTVERSION= 17.0.4 +PORTVERSION= 17.0.5 CATEGORIES= mail MASTER_SITE_SUBDIR?= ${PORTNAME}/releases/${PORTVERSION}esr/linux-i686/en-US DISTNAME= ${PORTNAME}-${DISTVERSION}esr Index: mail/linux-thunderbird/distinfo =================================================================== --- mail/linux-thunderbird/distinfo (revision 315699) +++ mail/linux-thunderbird/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (thunderbird-17.0.4esr.tar.bz2) = 200a9f609455b852a48634932e9bb92e53610c8aac95a7d67107945d083bd83f -SIZE (thunderbird-17.0.4esr.tar.bz2) = 21483231 +SHA256 (thunderbird-17.0.5esr.tar.bz2) = e1a0282baff12d00c5fe58e7e7f4058eecacd99911d79c5d473b2814042d8f3e +SIZE (thunderbird-17.0.5esr.tar.bz2) = 21480241 Index: mail/thunderbird/Makefile =================================================================== --- mail/thunderbird/Makefile (revision 315699) +++ mail/thunderbird/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= thunderbird -DISTVERSION= 17.0.4 +DISTVERSION= 17.0.5 CATEGORIES= mail ipv6 MASTER_SITES= ${MASTER_SITE_MOZILLA} MASTER_SITE_SUBDIR= ${PORTNAME}/releases/${DISTVERSION}esr/source @@ -24,7 +24,7 @@ USE_AUTOTOOLS= autoconf213:env USE_PYTHON_BUILD=-2.7 USE_GECKO= gecko -CONFLICTS= thunderbird-2[0-9].* thunderbird-1[1-689].* thunderbird-10.* +CONFLICTS= thunderbird-24.* thunderbird-1[1-6].* thunderbird-10.* USE_MOZILLA= # empty MAKE_JOBS_SAFE= yes @@ -62,17 +62,6 @@ XPI_LIBDIR= ${PREFIX}/lib/xpi -.if ${ARCH} == amd64 -CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} -.elif ${ARCH} == powerpc64 -.if ${OSVERSION} < 900033 -BROKEN= Needs binutils 2.17.50 to build -.else -MOZ_EXPORT+= UNAME_m="powerpc64" -CFLAGS+= -mminimal-toc -.endif -.endif - .if ${PORT_OPTIONS:MENIGMAIL} MASTER_SITES+= http://www.enigmail.net/download/source/:enigmail DISTFILES+= ${EM_DISTFILE}:enigmail Index: mail/thunderbird/distinfo =================================================================== --- mail/thunderbird/distinfo (revision 315699) +++ mail/thunderbird/distinfo (working copy) @@ -1,4 +1,4 @@ -SHA256 (thunderbird-17.0.4esr.source.tar.bz2) = e453a0509e28af0001de917801aad274c9a532de80f124a68b2df32b9d152137 -SIZE (thunderbird-17.0.4esr.source.tar.bz2) = 113367797 +SHA256 (thunderbird-17.0.5esr.source.tar.bz2) = d8a6ff5c35fb030514d24eb7b6e224cb0dc69dce85051a2d03952d5308bc67f6 +SIZE (thunderbird-17.0.5esr.source.tar.bz2) = 113259410 SHA256 (enigmail-1.5.1.tar.gz) = 234ca3c8f7c74afb64ebdaa4762e358f35a72c1f8de007b992497fc2db803af0 SIZE (enigmail-1.5.1.tar.gz) = 1213954 Index: mail/thunderbird/files/patch-bug753046 =================================================================== --- mail/thunderbird/files/patch-bug753046 (revision 315699) +++ mail/thunderbird/files/patch-bug753046 (working copy) @@ -460,7 +460,7 @@ --- mozilla/ipc/chromium/src/base/platform_thread_posix.cc.orig 2012-03-13 01:36:53.000000000 +0000 +++ mozilla/ipc/chromium/src/base/platform_thread_posix.cc -@@ -9,16 +9,30 @@ +@@ -9,16 +9,24 @@ #if defined(OS_MACOSX) #include @@ -474,13 +474,7 @@ -#include +#elif defined(OS_FREEBSD) +#include -+#if __FreeBSD_version > 802500 +#include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif #endif + +#if !defined(OS_MACOSX) Index: mail/thunderbird/files/patch-bug810716 =================================================================== --- mail/thunderbird/files/patch-bug810716 (revision 0) +++ mail/thunderbird/files/patch-bug810716 (working copy) @@ -0,0 +1,95 @@ +diff --git configure.in configure.in +index 2084be9..eb6eeb2 100644 +--- configure.in ++++ configure.in +@@ -3369,14 +3369,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + +diff --git configure.in configure.in +index 2084be9..eb6eeb2 100644 +--- mozilla/configure.in ++++ mozilla/configure.in +@@ -3369,14 +3369,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + +diff --git extensions/auth/nsAuthGSSAPI.cpp extensions/auth/nsAuthGSSAPI.cpp +index e828beb..6444246 100644 +--- mozilla/extensions/auth/nsAuthGSSAPI.cpp ++++ mozilla/extensions/auth/nsAuthGSSAPI.cpp +@@ -39,6 +39,9 @@ typedef KLStatus (*KLCacheHasValidTickets_type)( + #endif + + #if defined(HAVE_RES_NINIT) ++#include ++#include ++#include + #include + #endif + +diff --git js/src/configure.in js/src/configure.in +index e25f569..b9722f9 100644 +--- mozilla/js/src/configure.in ++++ mozilla/js/src/configure.in +@@ -2797,14 +2797,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + Property changes on: mail/thunderbird/files/patch-bug810716 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: mail/thunderbird/files/patch-mozilla-content-media-nsAudioStream.cpp =================================================================== --- mail/thunderbird/files/patch-mozilla-content-media-nsAudioStream.cpp (revision 315699) +++ mail/thunderbird/files/patch-mozilla-content-media-nsAudioStream.cpp (working copy) @@ -1,14 +0,0 @@ ---- mozilla/content/media/nsAudioStream.cpp~ -+++ mozilla/content/media/nsAudioStream.cpp -@@ -298,7 +298,11 @@ static int PrefChanged(const char* aPref - gVolumeScale = NS_MAX(0, PR_strtod(utf8.get(), nsnull)); - } - } else if (strcmp(aPref, PREF_USE_CUBEB) == 0) { -+#if defined(__FreeBSD__) && __FreeBSD_version < 800097 -+ bool value = Preferences::GetBool(aPref, false); -+#else - bool value = Preferences::GetBool(aPref, true); -+#endif - mozilla::MutexAutoLock lock(*gAudioPrefsLock); - gUseCubeb = value; - } else if (strcmp(aPref, PREF_CUBEB_LATENCY) == 0) { Index: mail/thunderbird/files/patch-mozilla-js-src-js-confdefs.h.in =================================================================== --- mail/thunderbird/files/patch-mozilla-js-src-js-confdefs.h.in (revision 315699) +++ mail/thunderbird/files/patch-mozilla-js-src-js-confdefs.h.in (working copy) @@ -1,10 +0,0 @@ ---- mozilla/js/src/js-confdefs.h.in~ -+++ mozilla/js/src/js-confdefs.h.in -@@ -12,6 +12,7 @@ - * C++ implementations should define these macros only when __STDC_LIMIT_MACROS - * is defined before is included. */ - #define __STDC_LIMIT_MACROS -+#define __STDC_CONSTANT_MACROS - - #endif /* _JS_CONFDEFS_H_ */ - Index: mail/thunderbird-i18n/Makefile =================================================================== --- mail/thunderbird-i18n/Makefile (revision 315699) +++ mail/thunderbird-i18n/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= thunderbird-i18n -PORTVERSION= 17.0.4 +PORTVERSION= 17.0.5 CATEGORIES= mail MASTER_SITE_SUBDIR= thunderbird/releases/${PORTVERSION}esr/linux-i686/xpi PKGNAMEPREFIX= @@ -45,7 +45,7 @@ @${RM} -rf ${WRKDIR} @${MKDIR} ${WRKDIR} ${WRKSRC} @for lang in ${THUNDERBIRD_I18N_}; do \ - if ! (${EXTRACT_CMD} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@thunderbird.mozilla.org);\ + if ! (${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@thunderbird.mozilla.org);\ then \ exit 1; \ fi; \ Index: mail/thunderbird-i18n/distinfo =================================================================== --- mail/thunderbird-i18n/distinfo (revision 315699) +++ mail/thunderbird-i18n/distinfo (working copy) @@ -1,84 +1,84 @@ -SHA256 (xpi/thunderbird-i18n-17.0.4/ar.xpi) = e039fefa92fc6345a74c113e110901e83f5de4331f1073de836a86b947a7f190 -SIZE (xpi/thunderbird-i18n-17.0.4/ar.xpi) = 445977 -SHA256 (xpi/thunderbird-i18n-17.0.4/br.xpi) = 02511cc2ebf07ce5e4a820456d4a2f224586a81e43b30304efc1f6ec8bad5d6e -SIZE (xpi/thunderbird-i18n-17.0.4/br.xpi) = 417071 -SHA256 (xpi/thunderbird-i18n-17.0.4/ca.xpi) = 832559f44041f4ee2827868634bc79ca9cb2476fafc87fef666faf4990bacf12 -SIZE (xpi/thunderbird-i18n-17.0.4/ca.xpi) = 418407 -SHA256 (xpi/thunderbird-i18n-17.0.4/cs.xpi) = 2492f52859a1a1ec7716a2e64269790dd7251444345607fc7e427722dd18325c -SIZE (xpi/thunderbird-i18n-17.0.4/cs.xpi) = 420627 -SHA256 (xpi/thunderbird-i18n-17.0.4/da.xpi) = 7b71744f4b9d72ac2686a6caff0f839d55580ef2164a38b879a9d63b08ec0a22 -SIZE (xpi/thunderbird-i18n-17.0.4/da.xpi) = 398980 -SHA256 (xpi/thunderbird-i18n-17.0.4/de.xpi) = 28047c853e9088d63b8e833767f0a1b5602f82702d434c218a76a721d4b24720 -SIZE (xpi/thunderbird-i18n-17.0.4/de.xpi) = 393632 -SHA256 (xpi/thunderbird-i18n-17.0.4/en-GB.xpi) = e3cc830d6abccd7da1edeb130036422903166942d6399e5773c492dc33b428b1 -SIZE (xpi/thunderbird-i18n-17.0.4/en-GB.xpi) = 390694 -SHA256 (xpi/thunderbird-i18n-17.0.4/en-US.xpi) = 32565328e79e74aaf7ab00a5f18258595f2e86610b7b11a08cec96e25ad60ba0 -SIZE (xpi/thunderbird-i18n-17.0.4/en-US.xpi) = 390780 -SHA256 (xpi/thunderbird-i18n-17.0.4/es-AR.xpi) = 9396500ed0a5d2cd4444718acb61ff2f8a624f07c6c0add8f8c36821b2576eba -SIZE (xpi/thunderbird-i18n-17.0.4/es-AR.xpi) = 415499 -SHA256 (xpi/thunderbird-i18n-17.0.4/es-ES.xpi) = 5d881355da3d2e8e42953edc657922a77e4540529d7365a07d629118c2f93475 -SIZE (xpi/thunderbird-i18n-17.0.4/es-ES.xpi) = 356861 -SHA256 (xpi/thunderbird-i18n-17.0.4/et.xpi) = fc481bf9a252f606fc876e4d34c2445c64a90bf3b5e0fc87449e773d5ca2c8b3 -SIZE (xpi/thunderbird-i18n-17.0.4/et.xpi) = 411892 -SHA256 (xpi/thunderbird-i18n-17.0.4/eu.xpi) = f3ce6271ca7dbc824abe20d9247fcd310f9f46bdc0632b0384263ad9ff5a6bc8 -SIZE (xpi/thunderbird-i18n-17.0.4/eu.xpi) = 407190 -SHA256 (xpi/thunderbird-i18n-17.0.4/fi.xpi) = 9ed2bcc8db0fb36ddf2f4e1719e97a259621c0807759dcd6d75fd920d4d2d21b -SIZE (xpi/thunderbird-i18n-17.0.4/fi.xpi) = 413620 -SHA256 (xpi/thunderbird-i18n-17.0.4/fr.xpi) = 00308a39144987a1bc0cba6a7ea9348e41acc2fe9faed234c6804eb5c22610b7 -SIZE (xpi/thunderbird-i18n-17.0.4/fr.xpi) = 420826 -SHA256 (xpi/thunderbird-i18n-17.0.4/fy-NL.xpi) = 189a4072c0c050b86d99a1a7aea653bb6085865b47d490704fa9fb51e4eb2a61 -SIZE (xpi/thunderbird-i18n-17.0.4/fy-NL.xpi) = 415712 -SHA256 (xpi/thunderbird-i18n-17.0.4/ga-IE.xpi) = 522cf62f206d2c2f7c67404523e9f77164fc2a7d508e1c4dec6361250de46c0f -SIZE (xpi/thunderbird-i18n-17.0.4/ga-IE.xpi) = 425395 -SHA256 (xpi/thunderbird-i18n-17.0.4/gd.xpi) = 1d0b416a691b4a458c3d74ef69caba4348ac206b4d42db24e60929eefec402d5 -SIZE (xpi/thunderbird-i18n-17.0.4/gd.xpi) = 428939 -SHA256 (xpi/thunderbird-i18n-17.0.4/gl.xpi) = 0fc31d402fb8460eff43018b6b2f4add021804edd23ce279911ea8ad7e2f8cdf -SIZE (xpi/thunderbird-i18n-17.0.4/gl.xpi) = 410370 -SHA256 (xpi/thunderbird-i18n-17.0.4/he.xpi) = 1487236524c2bcfbb3bb5fa6d2f2154d64d748eedd12ab96dd580e0cba946309 -SIZE (xpi/thunderbird-i18n-17.0.4/he.xpi) = 439504 -SHA256 (xpi/thunderbird-i18n-17.0.4/hu.xpi) = 51395b5e8120f9a1cb7040959975a4a3c0f4a3acc5ab57671b64a017fb284c2f -SIZE (xpi/thunderbird-i18n-17.0.4/hu.xpi) = 433187 -SHA256 (xpi/thunderbird-i18n-17.0.4/is.xpi) = 9f668b8bb1a6d44fb7519e8c4d98533c2f80fd1c84fa5fe0e3224044d3112763 -SIZE (xpi/thunderbird-i18n-17.0.4/is.xpi) = 414069 -SHA256 (xpi/thunderbird-i18n-17.0.4/it.xpi) = 02d0b8f3d468f269362c04259fc8707e58267def0c4df1abce1a1d49831fafc2 -SIZE (xpi/thunderbird-i18n-17.0.4/it.xpi) = 348621 -SHA256 (xpi/thunderbird-i18n-17.0.4/ja.xpi) = 502e1e996be4cc6314b9646a83ec0a6b62ac762002088c0b48cb6456cbdd4fd3 -SIZE (xpi/thunderbird-i18n-17.0.4/ja.xpi) = 463488 -SHA256 (xpi/thunderbird-i18n-17.0.4/ko.xpi) = d10e12e7d744bbc91a73aa6e42c387cb05d157a95485f62baa7f9c3c2215a278 -SIZE (xpi/thunderbird-i18n-17.0.4/ko.xpi) = 412964 -SHA256 (xpi/thunderbird-i18n-17.0.4/lt.xpi) = 4d66657535056f4f19effc5bb1ede9230951ff511ed18ad4b51f1f1129ccde19 -SIZE (xpi/thunderbird-i18n-17.0.4/lt.xpi) = 519802 -SHA256 (xpi/thunderbird-i18n-17.0.4/nb-NO.xpi) = a44a8979e497fb8e23a70b0c41a5ad4585607ef45eaa79875ab3d3ebb29fc524 -SIZE (xpi/thunderbird-i18n-17.0.4/nb-NO.xpi) = 408519 -SHA256 (xpi/thunderbird-i18n-17.0.4/nl.xpi) = a9c6b701edb496289119d1c9905d80ca362757b2cb07410cb53ff22bf9df7c61 -SIZE (xpi/thunderbird-i18n-17.0.4/nl.xpi) = 408527 -SHA256 (xpi/thunderbird-i18n-17.0.4/nn-NO.xpi) = 0d8ea2d1e934a9d9b5ac27cc8aa98dd057fcdc1fe1cd0e9e6fa92f9754603ee7 -SIZE (xpi/thunderbird-i18n-17.0.4/nn-NO.xpi) = 431472 -SHA256 (xpi/thunderbird-i18n-17.0.4/pl.xpi) = bf9c3c895c81ae7f3f4c48f7d4566d9cd83dce528586fc2fcca077d1c064b9f4 -SIZE (xpi/thunderbird-i18n-17.0.4/pl.xpi) = 402114 -SHA256 (xpi/thunderbird-i18n-17.0.4/pt-BR.xpi) = 076427dc1f445d88bda77f9ff1426041e9d1894b7105e815474a7403aa095edc -SIZE (xpi/thunderbird-i18n-17.0.4/pt-BR.xpi) = 415778 -SHA256 (xpi/thunderbird-i18n-17.0.4/pt-PT.xpi) = 0483e2a1e5e5c1d2f380b1a3b383b2821968581a4b283f89db5c78e6f2508eed -SIZE (xpi/thunderbird-i18n-17.0.4/pt-PT.xpi) = 445754 -SHA256 (xpi/thunderbird-i18n-17.0.4/rm.xpi) = 073b733654f80e609832ce81f4a2b0e3acd8ca071dc1a4352fc804842dd3ca79 -SIZE (xpi/thunderbird-i18n-17.0.4/rm.xpi) = 415531 -SHA256 (xpi/thunderbird-i18n-17.0.4/ru.xpi) = 0a8af78c82f2a74a81244af42da67993c1a14a6b919d480a344f41d8668e5598 -SIZE (xpi/thunderbird-i18n-17.0.4/ru.xpi) = 415708 -SHA256 (xpi/thunderbird-i18n-17.0.4/si.xpi) = ff598f3db2e9344960674a47d9efa3876b7750a56679f5bc4177c192772a2d19 -SIZE (xpi/thunderbird-i18n-17.0.4/si.xpi) = 494162 -SHA256 (xpi/thunderbird-i18n-17.0.4/sk.xpi) = 364dc60eafec703fade801fc14b7bf94590db4206f27d82b71c7977444cd1e7e -SIZE (xpi/thunderbird-i18n-17.0.4/sk.xpi) = 429756 -SHA256 (xpi/thunderbird-i18n-17.0.4/sl.xpi) = 821c936dce601dec1cc5180f1e7893a235bf0ddccddf3bad4b26bbe65e966b45 -SIZE (xpi/thunderbird-i18n-17.0.4/sl.xpi) = 442096 -SHA256 (xpi/thunderbird-i18n-17.0.4/sq.xpi) = 9fee45bf383fe6c6829d38728428baa5b4e1dbeeb4cdb27341b40ebc05a705e4 -SIZE (xpi/thunderbird-i18n-17.0.4/sq.xpi) = 418780 -SHA256 (xpi/thunderbird-i18n-17.0.4/sv-SE.xpi) = 070c04fe56c29031bbc20f849d2aedb31265003ecd0bbb5d0da57116260b2b31 -SIZE (xpi/thunderbird-i18n-17.0.4/sv-SE.xpi) = 413218 -SHA256 (xpi/thunderbird-i18n-17.0.4/ta-LK.xpi) = cdb347b78d49ec86176cc35da1d337a57ab1abf1bf8588cbe91c44a0404e90a6 -SIZE (xpi/thunderbird-i18n-17.0.4/ta-LK.xpi) = 517913 -SHA256 (xpi/thunderbird-i18n-17.0.4/tr.xpi) = 8693131fd1c14ebb0c7b6631410b8780da4fb8f565505f1c5d4701cdad361ef5 -SIZE (xpi/thunderbird-i18n-17.0.4/tr.xpi) = 444944 -SHA256 (xpi/thunderbird-i18n-17.0.4/uk.xpi) = aa8c240255d6a319e3b72ea8ea5c55ae6c3649ebbeb153986512f9dd9239cc1d -SIZE (xpi/thunderbird-i18n-17.0.4/uk.xpi) = 471143 -SHA256 (xpi/thunderbird-i18n-17.0.4/zh-TW.xpi) = f7538eb7e9ab4c9766dbedfb68612f603a4441bc67832674da31b22519882f0b -SIZE (xpi/thunderbird-i18n-17.0.4/zh-TW.xpi) = 437591 +SHA256 (xpi/thunderbird-i18n-17.0.5/ar.xpi) = a895c50567eb0060854019921ab1b7f9d68ca56d76f7f73d7d2fe4fa201fbb50 +SIZE (xpi/thunderbird-i18n-17.0.5/ar.xpi) = 445976 +SHA256 (xpi/thunderbird-i18n-17.0.5/br.xpi) = e43198ba660f8b2b5c9ef2dd428549c98c27cf3398eccb6e4d2e77e4bd79eaad +SIZE (xpi/thunderbird-i18n-17.0.5/br.xpi) = 417071 +SHA256 (xpi/thunderbird-i18n-17.0.5/ca.xpi) = 644a001ee2100ab455b66cfcaba491af6ba75120f69d4cc8ac5b927339c529f0 +SIZE (xpi/thunderbird-i18n-17.0.5/ca.xpi) = 418407 +SHA256 (xpi/thunderbird-i18n-17.0.5/cs.xpi) = 357bee0902b90a1210aa9843c8e7857eae1b94370020c8487282d59a488bcc78 +SIZE (xpi/thunderbird-i18n-17.0.5/cs.xpi) = 420627 +SHA256 (xpi/thunderbird-i18n-17.0.5/da.xpi) = c8ec9031d017d4bbb90eafa98fae5c784d08c0dd4358b4f4574d6c317548caeb +SIZE (xpi/thunderbird-i18n-17.0.5/da.xpi) = 398980 +SHA256 (xpi/thunderbird-i18n-17.0.5/de.xpi) = 20246a979c14a4544fac5ea35d319258d51d593eff2a602d04c80d62f7d61574 +SIZE (xpi/thunderbird-i18n-17.0.5/de.xpi) = 393632 +SHA256 (xpi/thunderbird-i18n-17.0.5/en-GB.xpi) = d622039e5f4c0871508fdb654ed96ff2cda85721535e08e16962aa9a700c83d8 +SIZE (xpi/thunderbird-i18n-17.0.5/en-GB.xpi) = 390694 +SHA256 (xpi/thunderbird-i18n-17.0.5/en-US.xpi) = 968e42159c16bcc1b7523f228010afb203f544db09317b9f78b2cf7596e77f0b +SIZE (xpi/thunderbird-i18n-17.0.5/en-US.xpi) = 390780 +SHA256 (xpi/thunderbird-i18n-17.0.5/es-AR.xpi) = 9f56e7295c4de06c4cabcc0fc64db26423f9415ba419202b016dcd61cf397ed2 +SIZE (xpi/thunderbird-i18n-17.0.5/es-AR.xpi) = 415499 +SHA256 (xpi/thunderbird-i18n-17.0.5/es-ES.xpi) = 1e9f7b437ab08e91e5fb039dd617891229357acf3b4a2ef487c4449521c86656 +SIZE (xpi/thunderbird-i18n-17.0.5/es-ES.xpi) = 356861 +SHA256 (xpi/thunderbird-i18n-17.0.5/et.xpi) = 7c515dd0615c14ef1bf26dbbaeb8324d5597b547c03ff7b8201e1007661be845 +SIZE (xpi/thunderbird-i18n-17.0.5/et.xpi) = 411892 +SHA256 (xpi/thunderbird-i18n-17.0.5/eu.xpi) = 6b241859c6eb30dd4ec3ea3f436da426475e677257586e1a3126ac8a6668afc7 +SIZE (xpi/thunderbird-i18n-17.0.5/eu.xpi) = 407189 +SHA256 (xpi/thunderbird-i18n-17.0.5/fi.xpi) = f039a084cc38d9e1f33ccb6cb579b8abe4f7ae95a9fc04d84734859990191475 +SIZE (xpi/thunderbird-i18n-17.0.5/fi.xpi) = 413620 +SHA256 (xpi/thunderbird-i18n-17.0.5/fr.xpi) = 2ad4ae0da6e482cb667deaa9fd439806c72d1f14b8530aff3c8e3750b1d47ec0 +SIZE (xpi/thunderbird-i18n-17.0.5/fr.xpi) = 420826 +SHA256 (xpi/thunderbird-i18n-17.0.5/fy-NL.xpi) = ef09775e3974be8b6994770793dd9edd008e27b0841194d91f5ec020b5676c49 +SIZE (xpi/thunderbird-i18n-17.0.5/fy-NL.xpi) = 415712 +SHA256 (xpi/thunderbird-i18n-17.0.5/ga-IE.xpi) = 823d78e621fecca08589773ded8dd6099faecedf5ef4097da66ffe16c78e29ed +SIZE (xpi/thunderbird-i18n-17.0.5/ga-IE.xpi) = 425395 +SHA256 (xpi/thunderbird-i18n-17.0.5/gd.xpi) = 587dbff956aca0f295322b847f927c74c8d032ed4ae0f566a11a5de0c6811f85 +SIZE (xpi/thunderbird-i18n-17.0.5/gd.xpi) = 428939 +SHA256 (xpi/thunderbird-i18n-17.0.5/gl.xpi) = 125a14bccb420d71792e8fc52655032baffde887d2c322527f3e11e5c2d47069 +SIZE (xpi/thunderbird-i18n-17.0.5/gl.xpi) = 410370 +SHA256 (xpi/thunderbird-i18n-17.0.5/he.xpi) = f15933476b38aaeead09a9517c2bc89f236b5dbf595f65e8be05e0f85ac96fb1 +SIZE (xpi/thunderbird-i18n-17.0.5/he.xpi) = 439504 +SHA256 (xpi/thunderbird-i18n-17.0.5/hu.xpi) = 77292c922fd097fbbce065b7ce95e95890159bdf496e0fdc36f7cfeeecd12da3 +SIZE (xpi/thunderbird-i18n-17.0.5/hu.xpi) = 433186 +SHA256 (xpi/thunderbird-i18n-17.0.5/is.xpi) = a1a1664d4ef35af52aa701231d6cee733e70411d24f3c6bb27a2d003022f5dcf +SIZE (xpi/thunderbird-i18n-17.0.5/is.xpi) = 414068 +SHA256 (xpi/thunderbird-i18n-17.0.5/it.xpi) = e94ff8019ba450384155b9191a10a6df15860360a01d79b0b72d19ab9f60c004 +SIZE (xpi/thunderbird-i18n-17.0.5/it.xpi) = 348621 +SHA256 (xpi/thunderbird-i18n-17.0.5/ja.xpi) = e0c40d7192c30a8ec3b2a04eab251aac8e16b99ecd53e5de880dbbfa3cf549a1 +SIZE (xpi/thunderbird-i18n-17.0.5/ja.xpi) = 463488 +SHA256 (xpi/thunderbird-i18n-17.0.5/ko.xpi) = b5e4beca15983d134bd92d09a8f2846bd0e1a7469d896d6f83f6c1eccab244a8 +SIZE (xpi/thunderbird-i18n-17.0.5/ko.xpi) = 412964 +SHA256 (xpi/thunderbird-i18n-17.0.5/lt.xpi) = 8412dd792bda43c960f4f86070b5645e6b30b7ace9cf478f27b83a2ae2001107 +SIZE (xpi/thunderbird-i18n-17.0.5/lt.xpi) = 519802 +SHA256 (xpi/thunderbird-i18n-17.0.5/nb-NO.xpi) = 0ff536aad4b03355d221a084110ac37162096c5e7e0eaec267bcf15766bcb582 +SIZE (xpi/thunderbird-i18n-17.0.5/nb-NO.xpi) = 408519 +SHA256 (xpi/thunderbird-i18n-17.0.5/nl.xpi) = 65c3926f247080a11dd7e6dd24e4ecaef251ee0ff1188db3b338e193ab849e7a +SIZE (xpi/thunderbird-i18n-17.0.5/nl.xpi) = 408527 +SHA256 (xpi/thunderbird-i18n-17.0.5/nn-NO.xpi) = 3efbf9f409b38cf742c974a6c418e2d44bd80c040a0d2cd0c88548dc3265e428 +SIZE (xpi/thunderbird-i18n-17.0.5/nn-NO.xpi) = 431472 +SHA256 (xpi/thunderbird-i18n-17.0.5/pl.xpi) = 26079889be42bbfe0a561f3c72a2bef89470a4312544c600dde7fb9106725280 +SIZE (xpi/thunderbird-i18n-17.0.5/pl.xpi) = 402114 +SHA256 (xpi/thunderbird-i18n-17.0.5/pt-BR.xpi) = aea1e660b1da7b6af02b44b211e5945acdc4186573dd0fb0e6c486d5155eb41f +SIZE (xpi/thunderbird-i18n-17.0.5/pt-BR.xpi) = 415778 +SHA256 (xpi/thunderbird-i18n-17.0.5/pt-PT.xpi) = 85747c873660d5a4f3e94e2eedcfdbe63a73292ffb77b9d3a182bd5b682c116e +SIZE (xpi/thunderbird-i18n-17.0.5/pt-PT.xpi) = 445754 +SHA256 (xpi/thunderbird-i18n-17.0.5/rm.xpi) = f76e4465a280f8b71f9937dc902d1c4dcf1adf835b1daed1916f619b87831f39 +SIZE (xpi/thunderbird-i18n-17.0.5/rm.xpi) = 415531 +SHA256 (xpi/thunderbird-i18n-17.0.5/ru.xpi) = 85b306fcc0032ab81b86ef03549ccf019a32a9d811c38e796d796523f30e36f8 +SIZE (xpi/thunderbird-i18n-17.0.5/ru.xpi) = 415708 +SHA256 (xpi/thunderbird-i18n-17.0.5/si.xpi) = 6c9222d802c3aad59c68b8d165dc0ed433cdc07ca12196f1e0c58ee7aec3fc7d +SIZE (xpi/thunderbird-i18n-17.0.5/si.xpi) = 494162 +SHA256 (xpi/thunderbird-i18n-17.0.5/sk.xpi) = df616a212daf49a45a0aff11bc9264e99ee2854691cc569cd6f4aa7b57a4ca98 +SIZE (xpi/thunderbird-i18n-17.0.5/sk.xpi) = 429756 +SHA256 (xpi/thunderbird-i18n-17.0.5/sl.xpi) = bcc2badb1cc8e7d94621e558fa2ad7f1608011d243f7c23f952a8b6a19afd907 +SIZE (xpi/thunderbird-i18n-17.0.5/sl.xpi) = 442096 +SHA256 (xpi/thunderbird-i18n-17.0.5/sq.xpi) = 47f5d71fd8e0b0e4250d544564ad8d91149c5311c4f04fa1c215979d52f72b9f +SIZE (xpi/thunderbird-i18n-17.0.5/sq.xpi) = 418781 +SHA256 (xpi/thunderbird-i18n-17.0.5/sv-SE.xpi) = ab121125b9714b5b8acd6fc52415d47d53df4ef561188b65dd4b9b687b6c1c7a +SIZE (xpi/thunderbird-i18n-17.0.5/sv-SE.xpi) = 413218 +SHA256 (xpi/thunderbird-i18n-17.0.5/ta-LK.xpi) = 789946d7a9f3a04ea37fd43b6c4e6b9907611e2ecf9428e471c1162bfbbd47a2 +SIZE (xpi/thunderbird-i18n-17.0.5/ta-LK.xpi) = 517912 +SHA256 (xpi/thunderbird-i18n-17.0.5/tr.xpi) = 420969d11d6f2e8945ab3a50bc0779cbdc135f32cdd7423ac3f6d8042abdc4f7 +SIZE (xpi/thunderbird-i18n-17.0.5/tr.xpi) = 444945 +SHA256 (xpi/thunderbird-i18n-17.0.5/uk.xpi) = 30270bfb9b6a99cae60a37fa08614af1ed0deb2044f6de52c79c56da5ab4ffeb +SIZE (xpi/thunderbird-i18n-17.0.5/uk.xpi) = 471142 +SHA256 (xpi/thunderbird-i18n-17.0.5/zh-TW.xpi) = 194b9a773cdf8a078b11928e56807b58a111d849af272116c8323d5c147ceb69 +SIZE (xpi/thunderbird-i18n-17.0.5/zh-TW.xpi) = 437591 Index: mail/thunderbird-esr/Makefile =================================================================== --- mail/thunderbird-esr/Makefile (revision 315699) +++ mail/thunderbird-esr/Makefile (working copy) @@ -1,190 +0,0 @@ -# Created by: Joe Marcus Clarke -# $FreeBSD$ - -PORTNAME= thunderbird -DISTVERSION= 10.0.12 -CATEGORIES= mail ipv6 -MASTER_SITES= ${MASTER_SITE_MOZILLA} -MASTER_SITE_SUBDIR= ${PORTNAME}/releases/${DISTVERSION}esr/source -DISTFILES= ${PORTNAME}-${DISTVERSION}esr.source${EXTRACT_SUFX} -EXTRACT_ONLY= ${PORTNAME}-${DISTVERSION}esr.source${EXTRACT_SUFX} - -MAINTAINER= gecko@FreeBSD.org -COMMENT= Mozilla Thunderbird is standalone mail and news that stands above - -BUILD_DEPENDS= nspr>=4.8.8:${PORTSDIR}/devel/nspr \ - nss>=3.13.6_1:${PORTSDIR}/security/nss \ - sqlite3>=3.7.7.1:${PORTSDIR}/databases/sqlite3 \ - cairo>=1.10.2_1,1:${PORTSDIR}/graphics/cairo \ - unzip:${PORTSDIR}/archivers/unzip - -EM_VERSION= 1.4.3 - -USE_AUTOTOOLS= autoconf213:env -LATEST_LINK= thunderbird-esr -USE_GECKO= gecko -CONFLICTS= thunderbird-1[1-9].* -USE_MOZILLA= # empty - -MAKE_JOBS_SAFE= yes -WANT_GNOME= yes -USE_QT4= # empty -QT_NONSTANDARD= yes -ALL_TARGET= default -GNU_CONFIGURE= yes -USE_BZIP2= yes -USE_GMAKE= yes -USE_GL= gl - -MOZ_PROTOCOLS= http,ftp,file,viewsource,res,data,wyciwyg,websocket -MOZ_OPTIONS= --program-transform-name='s/thunderbird/${MOZILLA}/' \ - --enable-single-profile --disable-profilesharing \ - --enable-application=mail --enable-official-branding -MOZ_MK_OPTIONS= MOZ_MOZ_THUNDERBIRD=1 MAIL_PKG_SHARED=1 -MOZ_EXPORT= MOZ_THUNDERBIRD=1 MAIL_PKG_SHARED=1 -MOZ_PKGCONFIG_FILES= - -PORTNAME_ICON= ${MOZILLA}.png -PORTNAME_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/chrome/icons/default/default48.png - -SYSTEM_PREFS= ${FAKEDIR}/lib/${PORTNAME}/defaults/pref/${PORTNAME}.js -MOZ_PIS_SCRIPTS=moz_pis_S50cleanhome - -OPTIONS_DEFINE= ENIGMAIL LIGHTNING -OPTIONS_DEFAULT=ENIGMAIL LIGHTNING - -.include "${.CURDIR}/../../www/firefox/Makefile.options" -.include - -WRKSRC= ${WRKDIR}/comm-esr10 -MOZSRC:= ${WRKSRC}/mozilla - -XPI_LIBDIR= ${PREFIX}/lib/xpi - -.if ${ARCH} == amd64 -CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} -.elif ${ARCH} == powerpc64 -.if ${OSVERSION} < 900033 -BROKEN= Needs binutils 2.17.50 to build -.else -MOZ_EXPORT+= UNAME_m="powerpc64" -CFLAGS+= -mminimal-toc -.endif -.endif - -.if !empty(CXX:M*clang++*) || (${CXX:Mc++} && ${OSVERSION} > 1000023) -CFLAGS+= -Wno-return-type-c-linkage -.endif - -.if ${PORT_OPTIONS:MENIGMAIL} -MASTER_SITES+= http://www.enigmail.net/download/source/:enigmail -DISTFILES+= ${EM_DISTFILE}:enigmail -RUN_DEPENDS+= gpg:${PORTSDIR}/security/gnupg -EM_DISTNAME= enigmail-${EM_VERSION} -EM_DISTFILE= ${EM_DISTNAME}.tar.gz -EM_XPI_FILE= ${MOZ_OBJDIR}/mozilla/dist/bin/${EM_DISTNAME}-freebsd-${ARCH:S/amd64/x86_64/}.xpi -EM_ORIG_ID= {847b3a00-7ab1-11d4-8f02-006008948af5} -EM_ID= ${PORTNAME}@mozilla-enigmail.org -EM_ID_RFILES= ${XPI_LIBDIR}/${EM_ID}/install.rdf \ - ${XPI_LIBDIR}/${EM_ID}/components/enigmail.js \ - ${XPI_LIBDIR}/${EM_ID}/modules/enigmailCommon.jsm -.endif - -.if ${PORT_OPTIONS:MLIGHTNING} -MOZ_OPTIONS+= --enable-calendar -MOZ_MK_OPTIONS+= MOZ_CO_PROJECT=calendar -LIGHTNING_DIR= share/lightning -XPI_FILE= ${MOZ_OBJDIR}/mozilla/dist/xpi-stage/lightning.xpi -XPI_ORIG_ID= {e2fda1a4-762b-4020-b5ad-a41df1933103} -XPI_ID= lightning@thunderbird.mozilla.org -.else -MOZ_OPTIONS+= --disable-calendar -.endif - -post-extract: - @${SED} -e 's|@PORTNAME_ICON@|${PORTNAME_ICON}|;s|@MOZILLA@|${MOZILLA}|' \ - <${FILESDIR}/thunderbird.desktop.in >${WRKDIR}/${MOZILLA_EXEC_NAME}.desktop -.if ${PORT_OPTIONS:MENIGMAIL} - @${TAR} -xf ${_DISTDIR}/${EM_DISTFILE} \ - -C ${WRKSRC}/mailnews/extensions -.endif - -post-patch: - @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ - ${WRKSRC}/mail/app/nsMailApp.cpp -.if ${PORT_OPTIONS:MENIGMAIL} - @${REINPLACE_CMD} -e 's,/usr/bin/perl,${PERL},' \ - ${WRKSRC}/mailnews/extensions/enigmail/makemake - @${REINPLACE_CMD} -e '/^xpi/s/$$/ all/' \ - -e '/^XPI_MODULE_VERS/s/= .*/= ${EM_VERSION}/' \ - ${WRKSRC}/mailnews/extensions/enigmail/Makefile.in - @${REINPLACE_CMD} -e '/em:version/s,>[^<]*<,>${EM_VERSION}<,' \ - -e '/em:minVersion/s/1[0-9].0/10.0/' \ - -e '/em:maxVersion/s/pre//' \ - ${WRKSRC}/mailnews/extensions/enigmail/package/install.rdf -.endif - -pre-configure: - (cd ${WRKSRC} && ${AUTOCONF}) - (cd ${MOZSRC} && ${AUTOCONF}) - (cd ${MOZSRC}/js/src/ && ${AUTOCONF}) - -.if ${PORT_OPTIONS:MENIGMAIL} -post-build: - cd ${WRKSRC}/mailnews/extensions/enigmail && \ - ./makemake -r -o ${MOZ_OBJDIR} - ${SETENV} ${MAKE_ENV} ${GMAKE} ${_MAKE_JOBS} all xpi \ - -C ${MOZ_OBJDIR}/mailnews/extensions/enigmail -.endif - -port-pre-install: - ${MKDIR} ${FAKEDIR}/lib/${PORTNAME}/defaults - -pre-install: - @${ECHO_CMD} 'share/applications/${PORTNAME}.desktop' >> ${PLIST} - @${ECHO_CMD} 'share/pixmaps/${PORTNAME_ICON}' >> ${PLIST} - @${ECHO_CMD} '@dirrmtry share/applications' >> ${PLIST} - -post-install: - ${MKDIR} ${PREFIX}/share/applications - ${INSTALL_DATA} ${WRKDIR}/${MOZILLA_EXEC_NAME}.desktop ${PREFIX}/share/applications - ${LN} -sf ${PORTNAME_ICON_SRC} ${PREFIX}/share/pixmaps/${PORTNAME_ICON} -.if ${PORT_OPTIONS:MLIGHTNING} - @${MKDIR} ${XPI_LIBDIR}/${XPI_ID} ${XPI_LIBDIR}/symlinks/thunderbird - @(cd ${XPI_LIBDIR}/${XPI_ID}; ${TAR} -xf ${XPI_FILE}) - @${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${XPI_LIBDIR}/${XPI_ID} - @${REINPLACE_CMD} -i "" "s/${XPI_ORIG_ID}/${XPI_ID}/" ${XPI_LIBDIR}/${XPI_ID}/install.rdf - @${CHMOD} -R a+rX,go-w ${XPI_LIBDIR}/${XPI_ID} - @${LN} -sf ${XPI_LIBDIR}/${XPI_ID} ${LOCALBASE}/lib/thunderbird/extensions 2>/dev/null || true - @${LN} -sf ${XPI_LIBDIR}/${XPI_ID} ${XPI_LIBDIR}/symlinks/thunderbird 2>/dev/null || true - @(cd ${XPI_LIBDIR}; ${FIND} ${XPI_ID} -not -type d) | ${SORT} | \ - ${SED} -ne 's,^,lib/xpi/,p' >> ${TMPPLIST} - @${ECHO_CMD} 'lib/xpi/symlinks/thunderbird/${XPI_ID}' >> ${TMPPLIST} - @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${XPI_ID} ${LOCALBASE}/lib/thunderbird/extensions 2>/dev/null || true' >> ${TMPPLIST} - @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/thunderbird/extensions/${XPI_ID}' >> ${TMPPLIST} - @(cd ${XPI_LIBDIR}; ${FIND} ${XPI_ID} -type d) | ${SORT} -r | \ - ${SED} -ne 's,^,@dirrm lib/xpi/,p' >> ${TMPPLIST} -.endif -.if ${PORT_OPTIONS:MENIGMAIL} - @${MKDIR} ${XPI_LIBDIR}/${EM_ID} ${XPI_LIBDIR}/symlinks/${PORTNAME} - @(cd ${XPI_LIBDIR}/${EM_ID}; ${TAR} -xf ${EM_XPI_FILE}) - @${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${XPI_LIBDIR}/${EM_ID} - @${REINPLACE_CMD} -i "" "s/${EM_ORIG_ID}/${EM_ID}/" ${EM_ID_RFILES} - @${CHMOD} -R a+rX,go-w ${XPI_LIBDIR}/${EM_ID} - @${LN} -sf ${XPI_LIBDIR}/${EM_ID} ${LOCALBASE}/lib/${PORTNAME}/extensions 2>/dev/null || true - @${LN} -sf ${XPI_LIBDIR}/${EM_ID} ${XPI_LIBDIR}/symlinks/${PORTNAME} 2>/dev/null || true - @(cd ${XPI_LIBDIR}; ${FIND} ${EM_ID} -not -type d) | ${SORT} | \ - ${SED} -ne 's,^,lib/xpi/,p' >> ${TMPPLIST} - @${ECHO_CMD} 'lib/xpi/symlinks/${PORTNAME}/${EM_ID}' >> ${TMPPLIST} - @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${EM_ID} ${LOCALBASE}/lib/${PORTNAME}/extensions 2>/dev/null || true' >> ${TMPPLIST} - @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/${PORTNAME}/extensions/${EM_ID}' >> ${TMPPLIST} - @(cd ${XPI_LIBDIR}; ${FIND} ${EM_ID} -type d) | ${SORT} -r | \ - ${SED} -ne 's,^,@dirrm lib/xpi/,p' >> ${TMPPLIST} -.endif -.if ${PORT_OPTIONS:MLIGHTNING} || ${PORT_OPTIONS:MENIGMAIL} - @${ECHO_CMD} '@unexec rmdir %D/lib/xpi/symlinks/${PORTNAME} 2>/dev/null || true' >> ${TMPPLIST} - @${ECHO_CMD} '@unexec rmdir %D/lib/xpi/symlinks 2>/dev/null || true' >> ${TMPPLIST} - @${ECHO_CMD} '@unexec rmdir %D/lib/xpi 2>/dev/null || true' >> ${TMPPLIST} -.endif - -.include Index: mail/thunderbird-esr/distinfo =================================================================== --- mail/thunderbird-esr/distinfo (revision 315699) +++ mail/thunderbird-esr/distinfo (working copy) @@ -1,4 +0,0 @@ -SHA256 (thunderbird-10.0.12esr.source.tar.bz2) = 9868f2523685b581626ce1d3280b47803b23e3578e1caec4493b31d0b1b02075 -SIZE (thunderbird-10.0.12esr.source.tar.bz2) = 97703324 -SHA256 (enigmail-1.4.3.tar.gz) = 440035f19a22e8e234c530a0e78fb9ee74bb934fcf721777868de79324636d27 -SIZE (enigmail-1.4.3.tar.gz) = 1337811 Index: mail/thunderbird-esr/files/moz_pis_S50cleanhome =================================================================== --- mail/thunderbird-esr/files/moz_pis_S50cleanhome (revision 315699) +++ mail/thunderbird-esr/files/moz_pis_S50cleanhome (working copy) @@ -1,34 +0,0 @@ -#!/bin/sh -# - -# S50cleanhome -# a script to polite ${HOME}/${MOZ_PIS_USER_DIR} - -# We run in our own subshell - -# First, verify protocol -[ "$1" != "start" ] && exit 1 -[ -z "${MOZ_PIS_API}" -o ${MOZ_PIS_API} -ne 2 ] && exit 1 -[ -z "${MOZ_PIS_MOZBINDIR}" -o ! -d "${MOZ_PIS_MOZBINDIR}" ] && exit 1 -[ -z "${HOME}" -o ! -d "${HOME}" ] && exit 1 -[ -z "${MOZ_PIS_USER_DIR}" -o ! -d "${HOME}/${MOZ_PIS_USER_DIR}" ] && exit 1 - -# Try to polite ${HOME}/${MOZ_PIS_USER_DIR} - -# This must be really needed? -# rm -f "${$HOME}/${MOZ_PIS_USER_DIR}/pluginreg.dat" - -# Try to polite profile dirs -if [ -f "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" ]; then - sed -e '/Path=/! d' -e "s,Path=,${HOME}/${MOZ_PIS_USER_DIR}/," \ - "${HOME}/${MOZ_PIS_USER_DIR}/profiles.ini" \ - | while read dir - do - [ ! -d "${dir}" ] && continue - # at last, debian do this, we do for new builds - # rm -f "${dir}/XUL.mfasl" - # make reclaculate compreg.dat, xpti.dat for new builds - [ "${dir}/compreg.dat" -ot "${MOZ_PIS_MOZBINDIR}/components.ini" ] && - rm -f "${dir}/compatibility.ini" "${dir}/XUL.mfasl" - done -fi Index: mail/thunderbird-esr/files/patch-alsapulse =================================================================== --- mail/thunderbird-esr/files/patch-alsapulse (revision 315699) +++ mail/thunderbird-esr/files/patch-alsapulse (working copy) @@ -1,119 +0,0 @@ ---- mozilla/config/autoconf.mk.in~ -+++ mozilla/config/autoconf.mk.in -@@ -568,7 +568,13 @@ MOZ_LIBNOTIFY_CFLAGS = @MOZ_LIBNOTIFY_CF - MOZ_LIBNOTIFY_LIBS = @MOZ_LIBNOTIFY_LIBS@ - MOZ_ENABLE_LIBNOTIFY = @MOZ_ENABLE_LIBNOTIFY@ - -+MOZ_ALSA = @MOZ_ALSA@ - MOZ_ALSA_LIBS = @MOZ_ALSA_LIBS@ -+MOZ_ALSA_CFLAGS = @MOZ_ALSA_CFLAGS@ -+ -+MOZ_PULSEAUDIO = @MOZ_PULSEAUDIO@ -+MOZ_PULSEAUDIO_LIBS = @MOZ_PULSEAUDIO_LIBS@ -+MOZ_PULSEAUDIO_CFLAGS = @MOZ_PULSEAUDIO_CFLAGS@ - - GLIB_CFLAGS = @GLIB_CFLAGS@ - GLIB_LIBS = @GLIB_LIBS@ ---- mozilla/configure.in~ -+++ mozilla/configure.in -@@ -5758,17 +5775,48 @@ dnl ==================================== - dnl = Check alsa availability on Linux if using sydneyaudio - dnl ======================================================== - -+MOZ_ARG_ENABLE_BOOL(alsa, -+[ --enable-alsa Enable Alsa support], -+MOZ_ALSA=1, -+MOZ_ALSA= MOZ_ALSA_FORCE=$enableval) -+ - dnl If using sydneyaudio with Linux, ensure that the alsa library is available --if test -n "$MOZ_SYDNEYAUDIO"; then -+if test -n "$MOZ_SYDNEYAUDIO" -a "$MOZ_ALSA_FORCE" != "no"; then - case "$target_os" in - linux*) -+ MOZ_ALSA=1 -+ ;; -+ esac -+fi -+ -+if test -n "$MOZ_ALSA"; then - PKG_CHECK_MODULES(MOZ_ALSA, alsa, , - [echo "$MOZ_ALSA_PKG_ERRORS" - AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])]) -- ;; -- esac - fi - -+AC_SUBST(MOZ_ALSA_CFLAGS) -+AC_SUBST(MOZ_ALSA) -+ -+dnl ======================================================== -+dnl = Enable PulseAudio -+dnl ======================================================== -+ -+MOZ_ARG_ENABLE_BOOL(pulseaudio, -+[ --enable-pulseaudio Enable PulseAudio support], -+MOZ_PULSEAUDIO=1, -+MOZ_PULSEAUDIO=) -+ -+if test -n "$MOZ_PULSEAUDIO"; then -+ PKG_CHECK_MODULES(MOZ_PULSEAUDIO, libpulse, , -+ [echo "$MOZ_PULSEAUDIO_PKG_ERRORS" -+ AC_MSG_ERROR([pulseaudio audio backend requires libpulse package])]) -+fi -+ -+AC_SUBST(MOZ_PULSEAUDIO_CFLAGS) -+AC_SUBST(MOZ_PULSEAUDIO_LIBS) -+AC_SUBST(MOZ_PULSEAUDIO) -+ - dnl ======================================================== - dnl Permissions System - dnl ======================================================== ---- mozilla/media/libsydneyaudio/src/Makefile.in~ -+++ mozilla/media/libsydneyaudio/src/Makefile.in -@@ -30,10 +30,6 @@ else ifeq ($(MOZ_WIDGET_TOOLKIT),android) - CSRCS = \ - sydney_audio_android.c \ - $(NULL) --else ifeq ($(OS_ARCH),Linux) --CSRCS = \ -- sydney_audio_alsa.c \ -- $(NULL) - endif - - ifeq ($(OS_ARCH),WINNT) -@@ -68,6 +64,18 @@ CSRCS = \ - $(NULL) - endif - -+ifdef MOZ_ALSA -+CSRCS = \ -+ sydney_audio_alsa.c \ -+ $(NULL) -+endif -+ -+ifdef MOZ_PULSEAUDIO -+CSRCS = \ -+ sydney_audio_pulseaudio.c \ -+ $(NULL) -+endif -+ - ifeq ($(OS_ARCH),WINNT) - OS_LIBS += winmm.lib - endif ---- mozilla/toolkit/library/libxul-config.mk~ -+++ mozilla/toolkit/library/libxul-config.mk -@@ -348,10 +348,12 @@ ifdef MOZ_NATIVE_LIBVPX - EXTRA_DSO_LDOPTS += $(MOZ_LIBVPX_LIBS) - endif - --ifdef MOZ_SYDNEYAUDIO --ifeq ($(OS_ARCH),Linux) -+ifdef MOZ_ALSA - EXTRA_DSO_LDOPTS += $(MOZ_ALSA_LIBS) - endif -+ -+ifdef MOZ_PULSEAUDIO -+EXTRA_DSO_LDOPTS += $(MOZ_PULSEAUDIO_LIBS) - endif - - ifdef HAVE_CLOCK_MONOTONIC Index: mail/thunderbird-esr/files/patch-bug653551 =================================================================== --- mail/thunderbird-esr/files/patch-bug653551 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug653551 (working copy) @@ -1,29 +0,0 @@ -commit 47ea30f -Author: Landry Breuil -Date: Thu Feb 2 15:31:56 2012 +0900 - - Bug 653551 - Jaegermonkey Sparc back-end broken on sparc64. r=leon.sha ---- - js/src/configure.in | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git mozilla/js/src/configure.in mozilla/js/src/configure.in -index 84390cf..d663c46 100644 ---- mozilla/js/src/configure.in -+++ mozilla/js/src/configure.in -@@ -2806,13 +2806,15 @@ arm*-*) - AC_DEFINE(JS_NUNBOX32) - ;; - sparc*-*) -+ if test ! "$HAVE_64BIT_OS" ; then - NANOJIT_ARCH=Sparc - ENABLE_METHODJIT=1 - ENABLE_MONOIC=1 - ENABLE_POLYIC=1 - ENABLE_METHODJIT_TYPED_ARRAY=1 - AC_DEFINE(JS_CPU_SPARC) - AC_DEFINE(JS_NUNBOX32) -+ fi - ;; - mips*-*) - ENABLE_METHODJIT=1 Index: mail/thunderbird-esr/files/patch-bug685258 =================================================================== --- mail/thunderbird-esr/files/patch-bug685258 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug685258 (working copy) @@ -1,17 +0,0 @@ -# HG changeset patch -# User Oleg Romashin -# Parent a2291c212856ad27622416e83c8311b6a33b52f1 -Bug 685258 - Pulse audio backend does not check provided playback and crashes r=derf - -diff --git a/content/media/nsAudioStream.cpp b/content/media/nsAudioStream.cpp ---- mozilla/content/media/nsAudioStream.cpp -+++ mozilla/content/media/nsAudioStream.cpp -@@ -429,7 +429,7 @@ nsresult nsNativeAudioStream::Init(PRInt32 aNumChannels, PRInt32 aRate, SampleFo - mFormat = aFormat; - - if (sa_stream_create_pcm(reinterpret_cast(&mAudioHandle), -- NULL, -+ "Mozilla", - SA_MODE_WRONLY, - SA_PCM_FORMAT_S16_NE, - aRate, Index: mail/thunderbird-esr/files/patch-bug691898 =================================================================== --- mail/thunderbird-esr/files/patch-bug691898 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug691898 (working copy) @@ -1,285 +0,0 @@ -From: Mike Hommey -Date: Sat, 24 Dec 2011 09:56:58 +0100 -Subject: Bug 691898 - Use YARR interpreter instead of PCRE on platforms where - YARR JIT is not supported - ---- - js/src/Makefile.in | 21 +++++++++++++-------- - js/src/vm/RegExpObject-inl.h | 28 ++++++---------------------- - js/src/vm/RegExpObject.cpp | 36 ------------------------------------ - js/src/vm/RegExpObject.h | 27 ++++++--------------------- - js/src/yarr/wtfbridge.h | 2 -- - 5 files changed, 25 insertions(+), 89 deletions(-) - -diff --git a/js/src/Makefile.in b/js/src/Makefile.in -index fc48cbd..49f0bdc 100644 ---- mozilla/js/src/Makefile.in -+++ mozilla/js/src/Makefile.in -@@ -416,15 +416,20 @@ CPPSRCS += checks.cc \ - - ifeq (,$(filter arm% sparc %86 x86_64,$(TARGET_CPU))) - --VPATH += $(srcdir)/yarr/pcre \ -+VPATH += $(srcdir)/assembler \ -+ $(srcdir)/assembler/wtf \ -+ $(srcdir)/yarr \ - $(NULL) - - CPPSRCS += \ -- pcre_compile.cpp \ -- pcre_exec.cpp \ -- pcre_tables.cpp \ -- pcre_xclass.cpp \ -- pcre_ucp_searchfuncs.cpp \ -+ Assertions.cpp \ -+ OSAllocatorOS2.cpp \ -+ OSAllocatorPosix.cpp \ -+ OSAllocatorWin.cpp \ -+ PageBlock.cpp \ -+ YarrInterpreter.cpp \ -+ YarrPattern.cpp \ -+ YarrSyntaxChecker.cpp \ - $(NULL) - else - -@@ -1015,10 +1020,10 @@ endif - # Needed to "configure" it correctly. Unfortunately these - # flags wind up being applied to all code in js/src, not just - # the code in js/src/assembler. --CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1 -+CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 - - ifneq (,$(ENABLE_YARR_JIT)$(ENABLE_TRACEJIT)$(ENABLE_METHODJIT)) --CXXFLAGS += -DENABLE_JIT=1 -+CXXFLAGS += -DENABLE_JIT=1 -DENABLE_ASSEMBLER=1 - endif - - INCLUDES += -I$(srcdir)/assembler -I$(srcdir)/yarr -diff --git a/js/src/vm/RegExpObject-inl.h b/js/src/vm/RegExpObject-inl.h -index 5f7817d..91108a7 100644 ---- mozilla/js/src/vm/RegExpObject-inl.h -+++ mozilla/js/src/vm/RegExpObject-inl.h -@@ -327,6 +327,7 @@ RegExpPrivate::create(JSContext *cx, JSString *source, RegExpFlag flags, TokenSt - return RetType(self); - } - -+#if ENABLE_YARR_JIT - /* This function should be deleted once bad Android platforms phase out. See bug 604774. */ - inline bool - RegExpPrivateCode::isJITRuntimeEnabled(JSContext *cx) -@@ -337,12 +338,12 @@ RegExpPrivateCode::isJITRuntimeEnabled(JSContext *cx) - return true; - #endif - } -+#endif - - inline bool - RegExpPrivateCode::compile(JSContext *cx, JSLinearString &pattern, TokenStream *ts, - uintN *parenCount, RegExpFlag flags) - { --#if ENABLE_YARR_JIT - /* Parse the pattern. */ - ErrorCode yarrError; - YarrPattern yarrPattern(pattern, bool(flags & IgnoreCaseFlag), bool(flags & MultilineFlag), -@@ -359,7 +360,7 @@ RegExpPrivateCode::compile(JSContext *cx, JSLinearString &pattern, TokenStream * - * case we have to bytecode compile it. - */ - --#ifdef JS_METHODJIT -+#if ENABLE_YARR_JIT && defined(JS_METHODJIT) - if (isJITRuntimeEnabled(cx) && !yarrPattern.m_containsBackreferences) { - if (!cx->compartment->ensureJaegerCompartmentExists(cx)) - return false; -@@ -371,21 +372,11 @@ RegExpPrivateCode::compile(JSContext *cx, JSLinearString &pattern, TokenStream * - } - #endif - -+#if ENABLE_YARR_JIT - codeBlock.setFallBack(true); -+#endif - byteCode = byteCompile(yarrPattern, cx->compartment->regExpAllocator).get(); - return true; --#else /* !defined(ENABLE_YARR_JIT) */ -- int error = 0; -- compiled = jsRegExpCompile(pattern.chars(), pattern.length(), -- ignoreCase() ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase, -- multiline() ? JSRegExpMultiline : JSRegExpSingleLine, -- parenCount, &error); -- if (error) { -- reportPCREError(cx, error); -- return false; -- } -- return true; --#endif - } - - inline bool -@@ -431,19 +422,12 @@ RegExpPrivateCode::execute(JSContext *cx, const jschar *chars, size_t start, siz - else - result = JSC::Yarr::execute(codeBlock, chars, start, length, output); - #else -- result = jsRegExpExecute(cx, compiled, chars, length, start, output, outputCount); -+ result = JSC::Yarr::interpret(byteCode, chars, start, length, output); - #endif - - if (result == -1) - return Success_NotFound; - --#if !ENABLE_YARR_JIT -- if (result < 0) { -- reportPCREError(cx, result); -- return Error; -- } --#endif -- - JS_ASSERT(result >= 0); - return Success; - } -diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp -index f75c6a5..7631dd5 100644 ---- mozilla/js/src/vm/RegExpObject.cpp -+++ mozilla/js/src/vm/RegExpObject.cpp -@@ -251,7 +251,6 @@ Class js::RegExpClass = { - NULL /* trace */ - }; - --#if ENABLE_YARR_JIT - void - RegExpPrivateCode::reportYarrError(JSContext *cx, TokenStream *ts, ErrorCode error) - { -@@ -283,41 +282,6 @@ RegExpPrivateCode::reportYarrError(JSContext *cx, TokenStream *ts, ErrorCode err - } - } - --#else /* !ENABLE_YARR_JIT */ -- --void --RegExpPrivateCode::reportPCREError(JSContext *cx, int error) --{ --#define REPORT(msg_) \ -- JS_ReportErrorFlagsAndNumberUC(cx, JSREPORT_ERROR, js_GetErrorMessage, NULL, msg_); \ -- return -- switch (error) { -- case -2: REPORT(JSMSG_REGEXP_TOO_COMPLEX); -- case 0: JS_NOT_REACHED("Precondition violation: an error must have occurred."); -- case 1: REPORT(JSMSG_TRAILING_SLASH); -- case 2: REPORT(JSMSG_TRAILING_SLASH); -- case 3: REPORT(JSMSG_REGEXP_TOO_COMPLEX); -- case 4: REPORT(JSMSG_BAD_QUANTIFIER); -- case 5: REPORT(JSMSG_BAD_QUANTIFIER); -- case 6: REPORT(JSMSG_BAD_CLASS_RANGE); -- case 7: REPORT(JSMSG_REGEXP_TOO_COMPLEX); -- case 8: REPORT(JSMSG_BAD_CLASS_RANGE); -- case 9: REPORT(JSMSG_BAD_QUANTIFIER); -- case 10: REPORT(JSMSG_UNMATCHED_RIGHT_PAREN); -- case 11: REPORT(JSMSG_REGEXP_TOO_COMPLEX); -- case 12: REPORT(JSMSG_UNMATCHED_RIGHT_PAREN); -- case 13: REPORT(JSMSG_REGEXP_TOO_COMPLEX); -- case 14: REPORT(JSMSG_MISSING_PAREN); -- case 15: REPORT(JSMSG_BAD_BACKREF); -- case 16: REPORT(JSMSG_REGEXP_TOO_COMPLEX); -- case 17: REPORT(JSMSG_REGEXP_TOO_COMPLEX); -- default: -- JS_NOT_REACHED("Precondition violation: unknown PCRE error code."); -- } --#undef REPORT --} --#endif /* ENABLE_YARR_JIT */ -- - bool - js::ParseRegExpFlags(JSContext *cx, JSString *flagStr, RegExpFlag *flagsOut) - { -diff --git a/js/src/vm/RegExpObject.h b/js/src/vm/RegExpObject.h -index 1449d56..279f3c0 100644 ---- mozilla/js/src/vm/RegExpObject.h -+++ mozilla/js/src/vm/RegExpObject.h -@@ -49,8 +49,6 @@ - #include "yarr/Yarr.h" - #if ENABLE_YARR_JIT - #include "yarr/YarrJIT.h" --#else --#include "yarr/pcre/pcre.h" - #endif - - namespace js { -@@ -153,48 +151,39 @@ ResetRegExpObject(JSContext *cx, AlreadyIncRefed rep); - /* Abstracts away the gross |RegExpPrivate| backend details. */ - class RegExpPrivateCode - { --#if ENABLE_YARR_JIT - typedef JSC::Yarr::BytecodePattern BytecodePattern; - typedef JSC::Yarr::ErrorCode ErrorCode; -+ typedef JSC::Yarr::YarrPattern YarrPattern; -+#if ENABLE_YARR_JIT - typedef JSC::Yarr::JSGlobalData JSGlobalData; - typedef JSC::Yarr::YarrCodeBlock YarrCodeBlock; -- typedef JSC::Yarr::YarrPattern YarrPattern; - - /* Note: Native code is valid only if |codeBlock.isFallBack() == false|. */ - YarrCodeBlock codeBlock; -- BytecodePattern *byteCode; --#else -- JSRegExp *compiled; - #endif -+ BytecodePattern *byteCode; - - public: - RegExpPrivateCode() - : - #if ENABLE_YARR_JIT - codeBlock(), -- byteCode(NULL) --#else -- compiled(NULL) - #endif -+ byteCode(NULL) - { } - - ~RegExpPrivateCode() { - #if ENABLE_YARR_JIT - codeBlock.release(); -+#endif - if (byteCode) - Foreground::delete_(byteCode); --#else -- if (compiled) -- jsRegExpFree(compiled); --#endif - } - - #if ENABLE_YARR_JIT - static inline bool isJITRuntimeEnabled(JSContext *cx); -- void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error); --#else -- void reportPCREError(JSContext *cx, int error); - #endif -+ void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error); - - inline bool compile(JSContext *cx, JSLinearString &pattern, TokenStream *ts, uintN *parenCount, - RegExpFlag flags); -@@ -205,11 +194,7 @@ class RegExpPrivateCode - int *output, size_t outputCount); - - static size_t getOutputSize(size_t pairCount) { --#if ENABLE_YARR_JIT - return pairCount * 2; --#else -- return pairCount * 3; /* Should be x2, but PCRE has... needs. */ --#endif - } - }; - -diff --git a/js/src/yarr/wtfbridge.h b/js/src/yarr/wtfbridge.h -index ac41d08..fb8eb86 100644 ---- mozilla/js/src/yarr/wtfbridge.h -+++ mozilla/js/src/yarr/wtfbridge.h -@@ -49,9 +49,7 @@ - #include "jsprvtd.h" - #include "vm/String.h" - #include "assembler/wtf/Platform.h" --#if ENABLE_YARR_JIT - #include "assembler/jit/ExecutableAllocator.h" --#endif - - namespace JSC { namespace Yarr { - Index: mail/thunderbird-esr/files/patch-bug714312 =================================================================== --- mail/thunderbird-esr/files/patch-bug714312 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug714312 (working copy) @@ -1,73 +0,0 @@ -commit c104d9b -Author: Landry Breuil -Date: Mon Jan 9 17:32:00 2012 -0600 - - Bug 714312 - Use to get endianess on BSD systems, fixing the BSD build. r=ted - - --HG-- - extra : rebase_source : 8b418bdb2d713093d138ffed20bf1630c05f396b ---- - js/src/configure.in | 5 +++++ - js/src/js-config.h.in | 4 ++++ - js/src/jscpucfg.h | 17 +++++++++++++++++ - 3 files changed, 26 insertions(+) - -diff --git mozilla/js/src/configure.in mozilla/js/src/configure.in -index 164c896..361b29e 100644 ---- mozilla/js/src/configure.in -+++ mozilla/js/src/configure.in -@@ -2934,6 +2934,11 @@ if test "$ac_cv_header_endian_h" = yes; - AC_DEFINE(JS_HAVE_ENDIAN_H) - fi - -+AC_CHECK_HEADERS(machine/endian.h) -+if test "$ac_cv_header_machine_endian_h" = yes; then -+ AC_DEFINE(JS_HAVE_MACHINE_ENDIAN_H) -+fi -+ - AC_CHECK_HEADERS(sys/isa_defs.h) - if test "$ac_cv_header_sys_isa_defs_h" = yes; then - AC_DEFINE(JS_HAVE_SYS_ISA_DEFS_H) -diff --git mozilla/js/src/js-config.h.in mozilla/js/src/js-config.h.in -index fb009fa..402262e 100644 ---- mozilla/js/src/js-config.h.in -+++ mozilla/js/src/js-config.h.in -@@ -59,6 +59,10 @@ - useable. See jscpucfg.h. */ - #undef JS_HAVE_ENDIAN_H - -+/* Define to 1 if the header is present and -+ useable. See jscpucfg.h. */ -+#undef JS_HAVE_MACHINE_ENDIAN_H -+ - /* Define to 1 if the header is present and - useable. See jscpucfg.h. */ - #undef JS_HAVE_SYS_ISA_DEFS_H -diff --git mozilla/js/src/jscpucfg.h mozilla/js/src/jscpucfg.h -index dd32bce..5fd8415 100644 ---- mozilla/js/src/jscpucfg.h -+++ mozilla/js/src/jscpucfg.h -@@ -92,6 +92,23 @@ - # error "endian.h does not define __BYTE_ORDER. Cannot determine endianness." - # endif - -+/* BSDs */ -+#elif defined(JS_HAVE_MACHINE_ENDIAN_H) -+# include -+# include -+ -+# if defined(_BYTE_ORDER) -+# if _BYTE_ORDER == _LITTLE_ENDIAN -+# define IS_LITTLE_ENDIAN 1 -+# undef IS_BIG_ENDIAN -+# elif _BYTE_ORDER == _BIG_ENDIAN -+# undef IS_LITTLE_ENDIAN -+# define IS_BIG_ENDIAN 1 -+# endif -+# else /* !defined(_BYTE_ORDER) */ -+# error "machine/endian.h does not define _BYTE_ORDER. Cannot determine endianness." -+# endif -+ - #elif defined(JS_HAVE_SYS_ISA_DEFS_H) - # include - Index: mail/thunderbird-esr/files/patch-bug725655 =================================================================== --- mail/thunderbird-esr/files/patch-bug725655 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug725655 (working copy) @@ -1,53 +0,0 @@ -commit 18b9c9d -Author: Martin Stránský -Date: Fri Feb 10 16:07:41 2012 +0100 - - Bug 725655 - gcc 4.7 build failures (missing headers). r=benjamin ---- - ipc/chromium/src/base/file_util_linux.cc | 3 +++ - ipc/chromium/src/base/message_pump_libevent.cc | 3 +++ - ipc/chromium/src/base/time_posix.cc | 3 +++ - 3 files changed, 9 insertions(+) - -diff --git ipc/chromium/src/base/file_util_linux.cc ipc/chromium/src/base/file_util_linux.cc -index cca706f..171e44f 100644 ---- mozilla/ipc/chromium/src/base/file_util_linux.cc -+++ mozilla/ipc/chromium/src/base/file_util_linux.cc -@@ -5,6 +5,9 @@ - #include "base/file_util.h" - - #include -+#if defined(ANDROID) || defined(OS_POSIX) -+#include -+#endif - - #include - #include -diff --git mozilla/ipc/chromium/src/base/message_pump_libevent.cc mozilla/ipc/chromium/src/base/message_pump_libevent.cc -index 6194f79..9f31dbb 100644 ---- mozilla/ipc/chromium/src/base/message_pump_libevent.cc -+++ mozilla/ipc/chromium/src/base/message_pump_libevent.cc -@@ -6,6 +6,9 @@ - - #include - #include -+#if defined(ANDROID) || defined(OS_POSIX) -+#include -+#endif - - #include "eintr_wrapper.h" - #include "base/logging.h" -diff --git mozilla/ipc/chromium/src/base/time_posix.cc mozilla/ipc/chromium/src/base/time_posix.cc -index 8d1a1d5..abf2a56 100644 ---- mozilla/ipc/chromium/src/base/time_posix.cc -+++ mozilla/ipc/chromium/src/base/time_posix.cc -@@ -13,6 +13,9 @@ - #else - #include - #endif -+#if defined(ANDROID) || defined(OS_POSIX) -+#include -+#endif - - #include - Index: mail/thunderbird-esr/files/patch-bug728968 =================================================================== --- mail/thunderbird-esr/files/patch-bug728968 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug728968 (working copy) @@ -1,50 +0,0 @@ -commit 4075972 -Author: Mike Hommey -Date: Thu Feb 23 11:00:46 2012 +0100 - - Bug 728968 - Detect clock_gettime when it's not in -lrt. r=khuey ---- - configure.in | 29 ++++++++++++++++------------- - 1 file changed, 16 insertions(+), 13 deletions(-) - -diff --git mozilla/configure.in mozilla/configure.in -index 3ba7e2f..3d0614c 100644 ---- mozilla/configure.in -+++ mozilla/configure.in -@@ -3728,20 +3728,23 @@ AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat6 - AC_CHECK_FUNCS(flockfile getpagesize) - AC_CHECK_FUNCS(localtime_r strtok_r) - --dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt --_SAVE_LDFLAGS=$LDFLAGS --LDFLAGS="$LDFLAGS -lrt" --AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt, -- ac_cv_have_clock_monotonic, -- [AC_TRY_LINK([#include ], -- [ struct timespec ts; -- clock_gettime(CLOCK_MONOTONIC, &ts); ], -- ac_cv_have_clock_monotonic=yes, -- ac_cv_have_clock_monotonic=no)]) --LDFLAGS=$_SAVE_LDFLAGS --if test "$ac_cv_have_clock_monotonic" = "yes"; then -+dnl check for clock_gettime(), the CLOCK_MONOTONIC clock -+AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), -+ ac_cv_clock_monotonic, -+ [for libs in "" -lrt; do -+ _SAVE_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $libs" -+ AC_TRY_LINK([#include ], -+ [ struct timespec ts; -+ clock_gettime(CLOCK_MONOTONIC, &ts); ], -+ ac_cv_clock_monotonic=$libs -+ break, -+ ac_cv_clock_monotonic=no) -+ LDFLAGS="$_SAVE_LDFLAGS" -+ done]) -+if test "$ac_cv_clock_monotonic" != "no"; then - HAVE_CLOCK_MONOTONIC=1 -- REALTIME_LIBS=-lrt -+ REALTIME_LIBS=$ac_cv_clock_monotonic - AC_DEFINE(HAVE_CLOCK_MONOTONIC) - AC_SUBST(HAVE_CLOCK_MONOTONIC) - AC_SUBST(REALTIME_LIBS) Index: mail/thunderbird-esr/files/patch-bug729155 =================================================================== --- mail/thunderbird-esr/files/patch-bug729155 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug729155 (working copy) @@ -1,18 +0,0 @@ ---- mozilla/dom/plugins/ipc/PluginMessageUtils.cpp -+++ mozilla/dom/plugins/ipc/PluginMessageUtils.cpp -@@ -114,6 +114,7 @@ MediateRace(const RPCChannel::Message& parent, - } - } - -+#if defined(OS_LINUX) - static string - ReplaceAll(const string& haystack, const string& needle, const string& with) - { -@@ -127,6 +128,7 @@ ReplaceAll(const string& haystack, const string& needle, const string& with) - - return munged; - } -+#endif - - string - MungePluginDsoPath(const string& path) Index: mail/thunderbird-esr/files/patch-bug741737 =================================================================== --- mail/thunderbird-esr/files/patch-bug741737 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug741737 (working copy) @@ -1,90 +0,0 @@ -changeset: 91900:eee73897136b -user: Martin Stransky -date: Tue Apr 17 19:57:40 2012 -0400 -summary: Bug 741737 - Configure libvpx with pkgconfig. r=khuey, a=npotb - -diff --git a/configure.in b/configure.in ---- mozilla/configure.in -+++ mozilla/configure.in -@@ -5588,12 +5588,10 @@ MOZ_ARG_DISABLE_BOOL(webm, - - dnl system libvpx Support - dnl ======================================================== --MOZ_ARG_WITH_STRING(system-libvpx, --[ --with-system-libvpx=[PFX] -- Use system libvpx [installed at prefix PFX]], -- LIBVPX_DIR=$withval) -+MOZ_ARG_WITH_BOOL(system-libvpx, -+[ --with-system-libvpx Use system libvpx (located with pkgconfig)], -+ MOZ_NATIVE_LIBVPX=1) - --MOZ_NATIVE_LIBVPX= - MOZ_LIBVPX_INCLUDES= - MOZ_LIBVPX_LIBS= - -@@ -5606,53 +5604,18 @@ if test -n "$MOZ_WEBM"; then - AC_DEFINE(MOZ_VP8_ENCODER) - fi - -- if test -n "$LIBVPX_DIR" -a "$LIBVPX_DIR" != no; then -- _SAVE_CFLAGS=$CFLAGS -- _SAVE_LDFLAGS=$LDFLAGS -- _SAVE_LIBS=$LIBS -- if test "${LIBVPX_DIR}" = "yes"; then -- LIBVPX_DIR=/usr -- fi -- CFLAGS="-I${LIBVPX_DIR}/include $CFLAGS" -- LDFLAGS="-L${LIBVPX_DIR}/lib $LDFLAGS" -- MOZ_NATIVE_LIBVPX_DEC_TEST= -- MOZ_CHECK_HEADER(vpx/vpx_decoder.h, -- [if test ! -f "${LIBVPX_DIR}/include/vpx/vpx_decoder.h"; then -- AC_MSG_ERROR([vpx/vpx_decoder.h found, but is not in ${LIBVPX_DIR}/include]) -- fi], -- AC_MSG_ERROR([--with-system-libvpx requested but vpx/vpx_decoder.h not found])) -- AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, -- [MOZ_NATIVE_LIBVPX_DEC_TEST=1], -- ([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])) -- if test -n "$MOZ_NATIVE_LIBVPX_DEC_TEST" ; then -- AC_MSG_CHECKING([for libvpx version >= v0.9.7]) -- dnl We need at least v0.9.7 to fix several crash bugs (for which we -- dnl had local patches prior to v0.9.7). -- dnl -- dnl This is a terrible test for the library version, but we don't -- dnl have a good one. There is no version number in a public header, -- dnl and testing the headers still doesn't guarantee we link against -- dnl the right version. While we could call vpx_codec_version() at -- dnl run-time, that would break cross-compiling. There are no -- dnl additional exported symbols between the v0.9.7 release and the -- dnl v0.9.6 one to check for. -- AC_TRY_COMPILE([ -- #include -- #if !defined(VPX_CODEC_USE_INPUT_PARTITION) -- #error "test failed." -- #endif -- ], -- [return 0;], -- [AC_MSG_RESULT([yes]) -- MOZ_NATIVE_LIBVPX=1 -- MOZ_LIBVPX_INCLUDES="-I${LIBVPX_DIR}/include" -- MOZ_LIBVPX_LIBS="-L${LIBVPX_DIR}/lib -lvpx"], -- [AC_MSG_RESULT([no]) -- AC_MSG_ERROR([--with-system-libvpx requested but it is not v0.9.7 or later])]) -- fi -- CFLAGS=$_SAVE_CFLAGS -- LDFLAGS=$_SAVE_LDFLAGS -- LIBS=$_SAVE_LIBS -+ if test -n "$MOZ_NATIVE_LIBVPX"; then -+ dnl ============================ -+ dnl === libvpx Version check === -+ dnl ============================ -+ dnl Check to see if we have a system libvpx package. -+ PKG_CHECK_MODULES(LIBVPX, vpx >= 0.9.7) -+ -+ MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [], -+ [AC_MSG_ERROR([Couldn't find vpx/vpx_decoder.h which is required for build with system libvpx. Use --without-system-libvpx to build with in-tree libvpx.])]) -+ -+ AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [], -+ [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])]) - fi - fi - Index: mail/thunderbird-esr/files/patch-bug753046 =================================================================== --- mail/thunderbird-esr/files/patch-bug753046 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug753046 (working copy) @@ -1,1202 +0,0 @@ -# Bug 753046 - Add support for DragonFly/NetBSD - -$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.cpp,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/dom/plugins/ipc/PluginModuleChild.cpp.orig 2011-12-20 23:28:14.000000000 +0000 -+++ mozilla/dom/plugins/ipc/PluginModuleChild.cpp -@@ -5,6 +5,7 @@ - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #ifdef MOZ_WIDGET_QT -+#include // for _exit() - #include - #include "nsQAppInstance.h" - #include "NestedLoopTimer.h" -@@ -228,7 +228,7 @@ PluginModuleChild::Init(const std::strin - - // TODO: use PluginPRLibrary here - --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_BSD) - mShutdownFunc = - (NP_PLUGINSHUTDOWN) PR_FindFunctionSymbol(mLibrary, "NP_Shutdown"); - -@@ -1790,7 +1790,7 @@ PluginModuleChild::AnswerNP_GetEntryPoin - PLUGIN_LOG_DEBUG_METHOD; - AssertPluginThread(); - --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_BSD) - return true; - #elif defined(OS_WIN) || defined(OS_MACOSX) - *_retval = mGetEntryPointsFunc(&mFunctions); -@@ -1823,7 +1823,7 @@ PluginModuleChild::AnswerNP_Initialize(N - SendBackUpXResources(FileDescriptor(xSocketFd, false/*don't close*/)); - #endif - --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_BSD) - *_retval = mInitializeFunc(&sBrowserFuncs, &mFunctions); - return true; - #elif defined(OS_WIN) || defined(OS_MACOSX) -$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/dom/plugins/ipc/PluginModuleChild.h.orig 2011-12-20 23:28:14.000000000 +0000 -+++ mozilla/dom/plugins/ipc/PluginModuleChild.h -@@ -340,7 +340,7 @@ private: - - // we get this from the plugin - NP_PLUGINSHUTDOWN mShutdownFunc; --#ifdef OS_LINUX -+#if defined(OS_LINUX) || defined(OS_BSD) - NP_PLUGINUNIXINIT mInitializeFunc; - #elif defined(OS_WIN) || defined(OS_MACOSX) - NP_PLUGININIT mInitializeFunc; -$NetBSD: patch-ipc_chromium_Makefile.in,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/Makefile.in.orig 2012-02-16 06:40:33.000000000 +0000 -+++ mozilla/ipc/chromium/Makefile.in -@@ -278,6 +278,34 @@ endif - - endif # } OS_LINUX - -+ifdef OS_BSD # { -+ -+CPPSRCS += \ -+ atomicops_internals_x86_gcc.cc \ -+ file_util_linux.cc \ -+ process_util_bsd.cc \ -+ time_posix.cc \ -+ $(NULL) -+ -+ifdef MOZ_ENABLE_GTK2 -+CPPSRCS += \ -+ message_pump_glib.cc \ -+ $(NULL) -+endif -+ -+ifdef MOZ_ENABLE_QT -+MOCSRCS = \ -+ moc_message_pump_qt.cc \ -+ $(NULL) -+ -+CPPSRCS += \ -+ $(MOCSRCS) \ -+ message_pump_qt.cc \ -+ $(NULL) -+endif -+ -+endif # } OS_BSD -+ - # libevent - - ifndef MOZ_NATIVE_LIBEVENT # { -$NetBSD: patch-ipc_chromium_chromium-config.mk,v 1.2 2012/03/15 08:30:06 ryoon Exp $ - ---- mozilla/ipc/chromium/chromium-config.mk.orig 2012-02-16 07:40:33.000000000 +0100 -+++ mozilla/ipc/chromium/chromium-config.mk 2012-03-11 11:05:40.397182000 +0100 -@@ -56,17 +56,6 @@ - -I$(DEPTH)/ipc/ipdl/_ipdlheaders \ - $(NULL) - --ifeq ($(OS_ARCH),Darwin) # { -- --OS_MACOSX = 1 --OS_POSIX = 1 -- --DEFINES += \ -- -DOS_MACOSX=1 \ -- -DOS_POSIX=1 \ -- $(NULL) -- --else # } { - ifeq ($(OS_ARCH),WINNT) # { - OS_LIBS += $(call EXPAND_LIBNAME,psapi shell32 dbghelp) - -@@ -93,13 +82,65 @@ - endif - - else # } { -- --OS_LINUX = 1 - OS_POSIX = 1 -+DEFINES += -DOS_POSIX=1 -+ -+ifeq ($(OS_ARCH),Darwin) # { -+ -+OS_MACOSX = 1 -+DEFINES += \ -+ -DOS_MACOSX=1 \ -+ $(NULL) -+ -+else # } { -+ifeq ($(OS_ARCH),DragonFly) # { -+ -+OS_DRAGONFLY = 1 -+OS_BSD = 1 -+OS_LIBS += $(call EXPAND_LIBNAME,kvm) -+DEFINES += \ -+ -DOS_DRAGONFLY=1 \ -+ -DOS_BSD=1 \ -+ $(NULL) -+ -+else # } { -+ifeq ($(OS_ARCH),FreeBSD) # { -+ -+OS_FREEBSD = 1 -+OS_BSD = 1 -+OS_LIBS += $(call EXPAND_LIBNAME,kvm) -+DEFINES += \ -+ -DOS_FREEBSD=1 \ -+ -DOS_BSD=1 \ -+ $(NULL) - -+else # } { -+ifeq ($(OS_ARCH),NetBSD) # { -+ -+OS_NETBSD = 1 -+OS_BSD = 1 -+OS_LIBS += $(call EXPAND_LIBNAME,kvm) -+DEFINES += \ -+ -DOS_NETBSD=1 \ -+ -DOS_BSD=1 \ -+ $(NULL) -+ -+else # } { -+ifeq ($(OS_ARCH),OpenBSD) # { -+ -+OS_OPENBSD = 1 -+OS_BSD = 1 -+OS_LIBS += $(call EXPAND_LIBNAME,kvm) -+DEFINES += \ -+ -DOS_OPENBSD=1 \ -+ -DOS_BSD=1 \ -+ $(NULL) -+ -+else # } { -+ -+OS_LINUX = 1 - DEFINES += \ - -DOS_LINUX=1 \ -- -DOS_POSIX=1 \ - $(NULL) - - # NB: to stop gcc warnings about exporting template instantiation -@@ -107,4 +147,8 @@ - - endif # } - endif # } -+endif # } -+endif # } -+endif # } -+endif # } - -$NetBSD: patch-ipc_chromium_src_base_base__paths.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/base_paths.h.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/base_paths.h -@@ -13,7 +13,7 @@ - #include "base/base_paths_win.h" - #elif defined(OS_MACOSX) - #include "base/base_paths_mac.h" --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_BSD) - #include "base/base_paths_linux.h" - #endif - #include "base/path_service.h" -$NetBSD: patch-ipc_chromium_src_base_debug__util__posic.cc,v 1.3 2012/04/01 15:18:45 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/debug_util_posix.cc.orig 2012-03-13 01:36:53.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/debug_util_posix.cc -@@ -5,7 +5,7 @@ - #include "build/build_config.h" - #include "base/debug_util.h" - --#define MOZ_HAVE_EXECINFO_H (!defined(ANDROID) && !defined(__OpenBSD__)) -+#define MOZ_HAVE_EXECINFO_H (defined(OS_LINUX) && !defined(ANDROID)) - - #include - #include -@@ -17,9 +17,16 @@ - #include - #if MOZ_HAVE_EXECINFO_H - #include -+#endif -+ -+#if defined(OS_MACOSX) || defined(OS_BSD) - #include - #endif - -+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD) -+#include -+#endif -+ - #include "base/basictypes.h" - #include "base/eintr_wrapper.h" - #include "base/logging.h" -@@ -32,7 +37,7 @@ bool DebugUtil::SpawnDebuggerOnProcess(u - return false; - } - --#if defined(OS_MACOSX) -+#if defined(OS_MACOSX) || defined(OS_BSD) - - // Based on Apple's recommended method as described in - // http://developer.apple.com/qa/qa2004/qa1361.html -@@ -71,7 +76,15 @@ bool DebugUtil::BeingDebugged() { - - // This process is being debugged if the P_TRACED flag is set. - is_set = true; -+#if defined(OS_DRAGONFLY) -+ being_debugged = (info.kp_flags & P_TRACED) != 0; -+#elif defined(OS_FREEBSD) -+ being_debugged = (info.ki_flag & P_TRACED) != 0; -+#elif defined(OS_OPENBSD) -+ being_debugged = (info.p_flag & P_TRACED) != 0; -+#else - being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0; -+#endif - return being_debugged; - } - -diff --git ipc/chromium/src/base/dir_reader_bsd.h ipc/chromium/src/base/dir_reader_bsd.h -new file mode 100644 -index 0000000..3fc1a87 ---- /dev/null -+++ mozilla/ipc/chromium/src/base/dir_reader_bsd.h -@@ -0,0 +1,112 @@ -+// Copyright (c) 2010 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+// derived from dir_reader_linux.h -+ -+#ifndef BASE_DIR_READER_BSD_H_ -+#define BASE_DIR_READER_BSD_H_ -+#pragma once -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "base/logging.h" -+#include "base/eintr_wrapper.h" -+ -+// See the comments in dir_reader_posix.h about this. -+ -+namespace base { -+ -+class DirReaderBSD { -+ public: -+ explicit DirReaderBSD(const char* directory_path) -+#ifdef O_DIRECTORY -+ : fd_(open(directory_path, O_RDONLY | O_DIRECTORY)), -+#else -+ : fd_(open(directory_path, O_RDONLY)), -+#endif -+ offset_(0), -+ size_(0) { -+ memset(buf_, 0, sizeof(buf_)); -+ } -+ -+ ~DirReaderBSD() { -+ if (fd_ >= 0) { -+ if (HANDLE_EINTR(close(fd_))) -+ DLOG(ERROR) << "Failed to close directory handle"; -+ } -+ } -+ -+ bool IsValid() const { -+ return fd_ >= 0; -+ } -+ -+ // Move to the next entry returning false if the iteration is complete. -+ bool Next() { -+ if (size_) { -+ struct dirent* dirent = reinterpret_cast(&buf_[offset_]); -+#ifdef OS_DRAGONFLY -+ offset_ += _DIRENT_DIRSIZ(dirent); -+#else -+ offset_ += dirent->d_reclen; -+#endif -+ } -+ -+ if (offset_ != size_) -+ return true; -+ -+#ifdef OS_OPENBSD -+ const int r = getdirentries(fd_, buf_, sizeof(buf_), basep_); -+#else -+ const int r = getdents(fd_, buf_, sizeof(buf_)); -+#endif -+ if (r == 0) -+ return false; -+ if (r == -1) { -+#ifdef OS_OPENBSD -+ DLOG(ERROR) << "getdirentries returned an error: " << errno; -+#else -+ DLOG(ERROR) << "getdents returned an error: " << errno; -+#endif -+ return false; -+ } -+ size_ = r; -+ offset_ = 0; -+ return true; -+ } -+ -+ const char* name() const { -+ if (!size_) -+ return NULL; -+ -+ const struct dirent* dirent = -+ reinterpret_cast(&buf_[offset_]); -+ return dirent->d_name; -+ } -+ -+ int fd() const { -+ return fd_; -+ } -+ -+ static bool IsFallback() { -+ return false; -+ } -+ -+ private: -+ const int fd_; -+ char buf_[512]; -+#ifdef OS_OPENBSD -+ off_t *basep_; -+#endif -+ size_t offset_, size_; -+ -+ DISALLOW_COPY_AND_ASSIGN(DirReaderBSD); -+}; -+ -+} // namespace base -+ -+#endif // BASE_DIR_READER_BSD_H_ -diff --git ipc/chromium/src/base/dir_reader_posix.h ipc/chromium/src/base/dir_reader_posix.h -index 9a34492..62b280c 100644 ---- mozilla/ipc/chromium/src/base/dir_reader_posix.h -+++ mozilla/ipc/chromium/src/base/dir_reader_posix.h -@@ -18,6 +18,8 @@ - - #if defined(OS_LINUX) - #include "base/dir_reader_linux.h" -+#elif defined(OS_BSD) -+#include "base/dir_reader_bsd.h" - #else - #include "base/dir_reader_fallback.h" - #endif -@@ -26,6 +28,8 @@ - - #if defined(OS_LINUX) - typedef DirReaderLinux DirReaderPosix; -+#elif defined(OS_BSD) -+typedef DirReaderBSD DirReaderPosix; - #else - typedef DirReaderFallback DirReaderPosix; - #endif -diff --git mozilla/ipc/chromium/src/base/file_util_linux.cc mozilla/ipc/chromium/src/base/file_util_linux.cc -index 171e44f..0c6dfcc 100644 ---- mozilla/ipc/chromium/src/base/file_util_linux.cc -+++ mozilla/ipc/chromium/src/base/file_util_linux.cc -@@ -28,7 +28,7 @@ bool GetTempDir(FilePath* path) { - } - - bool GetShmemTempDir(FilePath* path) { --#ifdef ANDROID -+#if defined(ANDROID) || defined(OS_BSD) - return GetTempDir(path); - #else - *path = FilePath("/dev/shm"); -$NetBSD: patch-ipc_chromium_src_base_file__util__posix.cc,v 1.2 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/file_util_posix.cc.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/file_util_posix.cc -@@ -31,7 +31,7 @@ - #include "base/time.h" - - // FreeBSD/OpenBSD lacks stat64, but its stat handles files >2GB just fine --#if defined(OS_FREEBSD) || defined(OS_OPENBSD) -+#ifndef HAVE_STAT64 - #define stat64 stat - #endif - -$NetBSD: patch-ipc_chromium_src_base_message__loop.cc,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/message_loop.cc.orig 2012-02-16 07:40:33.000000000 +0100 -+++ mozilla/ipc/chromium/src/base/message_loop.cc 2012-02-21 21:24:41.000000000 +0100 -@@ -19,7 +19,7 @@ - #if defined(OS_POSIX) - #include "base/message_pump_libevent.h" - #endif --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_BSD) - #ifdef MOZ_WIDGET_GTK2 - #include "base/message_pump_glib.h" - #endif -@@ -119,7 +119,7 @@ - if (type_ == TYPE_UI) { - #if defined(OS_MACOSX) - pump_ = base::MessagePumpMac::Create(); --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_BSD) - pump_ = new base::MessagePumpForUI(); - #endif // OS_LINUX - } else if (type_ == TYPE_IO) { -$NetBSD: patch-ipc_chromium_src_base_platform__thread.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/platform_thread.h -@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE - #elif defined(OS_POSIX) - #include - typedef pthread_t PlatformThreadHandle; --#if defined(OS_LINUX) -+#if defined(OS_LINUX) || defined(OS_OPENBSD) - #include - typedef pid_t PlatformThreadId; -+#elif defined(OS_BSD) -+#include -+typedef lwpid_t PlatformThreadId; - #elif defined(OS_MACOSX) - #include - typedef mach_port_t PlatformThreadId; -$NetBSD: patch-ipc_chromium_src_base_platform__thread__posix.cc,v 1.4 2012/04/01 15:18:45 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/platform_thread_posix.cc.orig 2012-03-13 01:36:53.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/platform_thread_posix.cc -@@ -9,9 +9,23 @@ - - #if defined(OS_MACOSX) - #include -+#elif defined(OS_NETBSD) -+#include - #elif defined(OS_LINUX) - #include - #include -+#elif defined(OS_DRAGONFLY) -+#include -+#elif defined(OS_FREEBSD) -+#include -+#if __FreeBSD_version > 802500 -+#include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif -+#include - #endif - - #if defined(OS_MACOSX) -@@ -38,9 +45,20 @@ - // into the kernel. - #if defined(OS_MACOSX) - return mach_thread_self(); --#elif defined (__OpenBSD__) -+#elif defined(OS_NETBSD) -+ return _lwp_self(); -+#elif defined(OS_DRAGONFLY) -+ return lwp_gettid(); -+#elif defined(OS_FREEBSD) -+# if __FreeBSD_version > 900030 -+ return pthread_getthreadid_np(); -+# else -+ long lwpid; -+ thr_self(&lwpid); -+ return lwpid; -+# endif -+#elif defined(OS_OPENBSD) -- // TODO(BSD): find a better thread ID -- return (intptr_t)(pthread_self()); -+ return (intptr_t) (pthread_self()); - #elif defined(OS_LINUX) - return syscall(__NR_gettid); - #endif -$NetBSD: patch-ipc_chromium_src_base_process__util.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/process_util.h.orig 2011-12-21 00:28:19.000000000 +0100 -+++ mozilla/ipc/chromium/src/base/process_util.h 2012-01-31 13:14:54.000000000 +0100 -@@ -280,6 +280,7 @@ class NamedProcessIterator { - const ProcessEntry* NextProcessEntry(); - - private: -+#if !defined(OS_BSD) - // Determines whether there's another process (regardless of executable) - // left in the list of all processes. Returns true and sets entry_ to - // that process's info if there is one, false otherwise. -@@ -292,18 +292,24 @@ - void InitProcessEntry(ProcessEntry* entry); - - std::wstring executable_name_; -+#endif - - #if defined(OS_WIN) - HANDLE snapshot_; - bool started_iteration_; - #elif defined(OS_LINUX) - DIR *procfs_dir_; -+#elif defined(OS_BSD) -+ std::vector content; -+ size_t nextEntry; - #elif defined(OS_MACOSX) - std::vector kinfo_procs_; - size_t index_of_kinfo_proc_; - #endif -+#if !defined(OS_BSD) - ProcessEntry entry_; - const ProcessFilter* filter_; -+#endif - - DISALLOW_EVIL_CONSTRUCTORS(NamedProcessIterator); - }; -$NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.4 2012/04/01 15:18:45 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/process_util_bsd.cc.orig 2012-04-01 00:04:28.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/process_util_bsd.cc -@@ -0,0 +1,318 @@ -+// Copyright (c) 2008 The Chromium Authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+// derived from process_util_linux.cc and process_util_mac.cc -+ -+#include "base/process_util.h" -+ -+#include -+#include -+#include -+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD) -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "base/debug_util.h" -+#include "base/eintr_wrapper.h" -+#include "base/file_util.h" -+#include "base/logging.h" -+#include "base/string_tokenizer.h" -+#include "base/string_util.h" -+ -+#if (defined(_POSIX_SPAWN) && _POSIX_SPAWN > 0) \ -+ || (defined(OS_NETBSD) && __NetBSD_Version__ >= 599006500) -+#define HAVE_POSIX_SPAWN 1 -+#endif -+ -+#ifndef __dso_public -+# ifdef __exported -+# define __dso_public __exported -+# else -+# define __dso_public __attribute__((__visibility__("default"))) -+# endif -+#endif -+ -+#ifdef HAVE_POSIX_SPAWN -+#include -+extern "C" char **environ __dso_public; -+#endif -+ -+namespace { -+ -+enum ParsingState { -+ KEY_NAME, -+ KEY_VALUE -+}; -+ -+static mozilla::EnvironmentLog gProcessLog("MOZ_PROCESS_LOG"); -+ -+} // namespace -+ -+namespace base { -+ -+#ifdef HAVE_POSIX_SPAWN -+ -+void FreeEnvVarsArray(char* array[], int length) -+{ -+ for (int i = 0; i < length; i++) { -+ free(array[i]); -+ } -+ delete[] array; -+} -+ -+bool LaunchApp(const std::vector& argv, -+ const file_handle_mapping_vector& fds_to_remap, -+ bool wait, ProcessHandle* process_handle) { -+ return LaunchApp(argv, fds_to_remap, environment_map(), -+ wait, process_handle); -+} -+ -+bool LaunchApp(const std::vector& argv, -+ const file_handle_mapping_vector& fds_to_remap, -+ const environment_map& env_vars_to_set, -+ bool wait, ProcessHandle* process_handle, -+ ProcessArchitecture arch) { -+ bool retval = true; -+ -+ char* argv_copy[argv.size() + 1]; -+ for (size_t i = 0; i < argv.size(); i++) { -+ argv_copy[i] = const_cast(argv[i].c_str()); -+ } -+ argv_copy[argv.size()] = NULL; -+ -+ // Make sure we don't leak any FDs to the child process by marking all FDs -+ // as close-on-exec. -+ SetAllFDsToCloseOnExec(); -+ -+ // Copy environment to a new char array and add the variables -+ // in env_vars_to_set. -+ // Existing variables are overwritten by env_vars_to_set. -+ int pos = 0; -+ environment_map combined_env_vars = env_vars_to_set; -+ while(environ[pos] != NULL) { -+ std::string varString = environ[pos]; -+ std::string varName = varString.substr(0, varString.find_first_of('=')); -+ std::string varValue = varString.substr(varString.find_first_of('=') + 1); -+ if (combined_env_vars.find(varName) == combined_env_vars.end()) { -+ combined_env_vars[varName] = varValue; -+ } -+ pos++; -+ } -+ int varsLen = combined_env_vars.size() + 1; -+ -+ char** vars = new char*[varsLen]; -+ int i = 0; -+ for (environment_map::const_iterator it = combined_env_vars.begin(); -+ it != combined_env_vars.end(); ++it) { -+ std::string entry(it->first); -+ entry += "="; -+ entry += it->second; -+ vars[i] = strdup(entry.c_str()); -+ i++; -+ } -+ vars[i] = NULL; -+ -+ posix_spawn_file_actions_t file_actions; -+ if (posix_spawn_file_actions_init(&file_actions) != 0) { -+ FreeEnvVarsArray(vars, varsLen); -+ return false; -+ } -+ -+ // Turn fds_to_remap array into a set of dup2 calls. -+ for (file_handle_mapping_vector::const_iterator it = fds_to_remap.begin(); -+ it != fds_to_remap.end(); -+ ++it) { -+ int src_fd = it->first; -+ int dest_fd = it->second; -+ -+ if (src_fd == dest_fd) { -+ int flags = fcntl(src_fd, F_GETFD); -+ if (flags != -1) { -+ fcntl(src_fd, F_SETFD, flags & ~FD_CLOEXEC); -+ } -+ } else { -+ if (posix_spawn_file_actions_adddup2(&file_actions, src_fd, dest_fd) != 0) { -+ posix_spawn_file_actions_destroy(&file_actions); -+ FreeEnvVarsArray(vars, varsLen); -+ return false; -+ } -+ } -+ } -+ -+ pid_t pid = 0; -+ int spawn_succeeded = (posix_spawnp(&pid, -+ argv_copy[0], -+ &file_actions, -+ NULL, -+ argv_copy, -+ vars) == 0); -+ -+ FreeEnvVarsArray(vars, varsLen); -+ -+ posix_spawn_file_actions_destroy(&file_actions); -+ -+ bool process_handle_valid = pid > 0; -+ if (!spawn_succeeded || !process_handle_valid) { -+ retval = false; -+ } else { -+ if (wait) -+ HANDLE_EINTR(waitpid(pid, 0, 0)); -+ -+ if (process_handle) -+ *process_handle = pid; -+ } -+ -+ return retval; -+} -+ -+bool LaunchApp(const CommandLine& cl, -+ bool wait, bool start_hidden, ProcessHandle* process_handle) { -+ // TODO(playmobil): Do we need to respect the start_hidden flag? -+ file_handle_mapping_vector no_files; -+ return LaunchApp(cl.argv(), no_files, wait, process_handle); -+} -+ -+#else // no posix_spawn, use fork/exec -+ -+bool LaunchApp(const std::vector& argv, -+ const file_handle_mapping_vector& fds_to_remap, -+ bool wait, ProcessHandle* process_handle) { -+ return LaunchApp(argv, fds_to_remap, environment_map(), -+ wait, process_handle); -+} -+ -+bool LaunchApp(const std::vector& argv, -+ const file_handle_mapping_vector& fds_to_remap, -+ const environment_map& env_vars_to_set, -+ bool wait, ProcessHandle* process_handle, -+ ProcessArchitecture arch) { -+ scoped_array argv_cstr(new char*[argv.size() + 1]); -+ // Illegal to allocate memory after fork and before execvp -+ InjectiveMultimap fd_shuffle1, fd_shuffle2; -+ fd_shuffle1.reserve(fds_to_remap.size()); -+ fd_shuffle2.reserve(fds_to_remap.size()); -+ -+ pid_t pid = fork(); -+ if (pid < 0) -+ return false; -+ -+ if (pid == 0) { -+ for (file_handle_mapping_vector::const_iterator -+ it = fds_to_remap.begin(); it != fds_to_remap.end(); ++it) { -+ fd_shuffle1.push_back(InjectionArc(it->first, it->second, false)); -+ fd_shuffle2.push_back(InjectionArc(it->first, it->second, false)); -+ } -+ -+ if (!ShuffleFileDescriptors(&fd_shuffle1)) -+ _exit(127); -+ -+ CloseSuperfluousFds(fd_shuffle2); -+ -+ for (environment_map::const_iterator it = env_vars_to_set.begin(); -+ it != env_vars_to_set.end(); ++it) { -+ if (setenv(it->first.c_str(), it->second.c_str(), 1/*overwrite*/)) -+ _exit(127); -+ } -+ -+ for (size_t i = 0; i < argv.size(); i++) -+ argv_cstr[i] = const_cast(argv[i].c_str()); -+ argv_cstr[argv.size()] = NULL; -+ execvp(argv_cstr[0], argv_cstr.get()); -+ // if we get here, we're in serious trouble and should complain loudly -+ DLOG(ERROR) << "FAILED TO exec() CHILD PROCESS, path: " << argv_cstr[0]; -+ exit(127); -+ } else { -+ gProcessLog.print("==> process %d launched child process %d\n", -+ GetCurrentProcId(), pid); -+ if (wait) -+ HANDLE_EINTR(waitpid(pid, 0, 0)); -+ -+ if (process_handle) -+ *process_handle = pid; -+ } -+ -+ return true; -+} -+ -+bool LaunchApp(const CommandLine& cl, -+ bool wait, bool start_hidden, -+ ProcessHandle* process_handle) { -+ file_handle_mapping_vector no_files; -+ return LaunchApp(cl.argv(), no_files, wait, process_handle); -+} -+ -+#endif -+ -+NamedProcessIterator::NamedProcessIterator(const std::wstring& executable_name, -+ const ProcessFilter* filter) -+{ -+ int numEntries; -+ kvm_t *kvm; -+ std::string exe(WideToASCII(executable_name)); -+ -+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD) -+ kvm = kvm_open(NULL, NULL, NULL, O_RDONLY, NULL); -+ struct kinfo_proc* procs = kvm_getprocs(kvm, KERN_PROC_UID, getuid(), &numEntries); -+ if (procs != NULL && numEntries > 0) { -+ for (int i = 0; i < numEntries; i++) { -+# if defined(OS_DRAGONFLY) -+ if (exe != procs[i].kp_comm) continue; -+ if (filter && !filter->Includes(procs[i].kp_pid, procs[i].kp_ppid)) continue; -+ ProcessEntry e; -+ e.pid = procs[i].kp_pid; -+ e.ppid = procs[i].kp_ppid; -+ strlcpy(e.szExeFile, procs[i].kp_comm, sizeof e.szExeFile); -+ content.push_back(e); -+# elif defined(OS_FREEBSD) -+ if (exe != procs[i].ki_comm) continue; -+ if (filter && !filter->Includes(procs[i].ki_pid, procs[i].ki_ppid)) continue; -+ ProcessEntry e; -+ e.pid = procs[i].ki_pid; -+ e.ppid = procs[i].ki_ppid; -+ strlcpy(e.szExeFile, procs[i].ki_comm, sizeof e.szExeFile); -+ content.push_back(e); -+# endif -+#else -+ kvm = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, NULL); -+#if defined(OS_OPENBSD) -+ struct kinfo_proc* procs = kvm_getprocs(kvm, KERN_PROC_UID, getuid(), sizeof(struct kinfo_proc), &numEntries); -+#else -+ struct kinfo_proc2* procs = kvm_getproc2(kvm, KERN_PROC_UID, getuid(), sizeof(struct kinfo_proc2), &numEntries); -+#endif -+ if (procs != NULL && numEntries > 0) { -+ for (int i = 0; i < numEntries; i++) { -+ if (exe != procs[i].p_comm) continue; -+ if (filter && !filter->Includes(procs[i].p_pid, procs[i].p_ppid)) continue; -+ ProcessEntry e; -+ e.pid = procs[i].p_pid; -+ e.ppid = procs[i].p_ppid; -+ strlcpy(e.szExeFile, procs[i].p_comm, sizeof e.szExeFile); -+ content.push_back(e); -+#endif -+ } -+ } -+ nextEntry = 0; -+ kvm_close(kvm); -+} -+ -+NamedProcessIterator::~NamedProcessIterator() { -+} -+ -+const ProcessEntry* NamedProcessIterator::NextProcessEntry() { -+ if (nextEntry >= content.size()) return NULL; -+ return &content[nextEntry++]; -+} -+ -+bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const { -+ return false; -+} -+ -+} // namespace base -$NetBSD: patch-ipc_chromium_src_base_process__util__posix.cc,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/process_util_posix.cc.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/process_util_posix.cc -@@ -116,6 +116,11 @@ void CloseSuperfluousFds(const base::Inj - #elif defined(OS_MACOSX) - static const rlim_t kSystemDefaultMaxFds = 256; - static const char kFDDir[] = "/dev/fd"; -+#elif defined(OS_BSD) -+ // the getrlimit below should never fail, so whatever .. -+ static const rlim_t kSystemDefaultMaxFds = 1024; -+ // at least /dev/fd will exist -+ static const char kFDDir[] = "/dev/fd"; - #endif - - // Get the maximum number of FDs possible. -@@ -199,7 +204,7 @@ void CloseSuperfluousFds(const base::Inj - void SetAllFDsToCloseOnExec() { - #if defined(OS_LINUX) - const char fd_dir[] = "/proc/self/fd"; --#elif defined(OS_MACOSX) -+#elif defined(OS_MACOSX) || defined(OS_BSD) - const char fd_dir[] = "/dev/fd"; - #endif - ScopedDIR dir_closer(opendir(fd_dir)); -$NetBSD: patch-ipc_chromium_src_base_sys__info__posix.cc,v 1.2 2011/11/27 13:09:00 tnn Exp $ - ---- mozilla/ipc/chromium/src/base/sys_info_posix.cc.orig 2011-11-04 21:34:00.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/sys_info_posix.cc -@@ -18,6 +18,11 @@ - #include - #endif - -+#if defined(OS_NETBSD) -+#include -+#include -+#endif -+ - #include "base/logging.h" - #include "base/string_util.h" - -@@ -26,7 +31,11 @@ namespace base { - int SysInfo::NumberOfProcessors() { - // It seems that sysconf returns the number of "logical" processors on both - // mac and linux. So we get the number of "online logical" processors. -+#ifdef _SC_NPROCESSORS_ONLN - static long res = sysconf(_SC_NPROCESSORS_ONLN); -+#else -+ static long res = 1; -+#endif - if (res == -1) { - NOTREACHED(); - return 1; -@@ -52,6 +61,20 @@ int64 SysInfo::AmountOfPhysicalMemory() - } - - return static_cast(hostinfo.max_mem); -+#elif defined(OS_NETBSD) -+ int mib[2]; -+ int rc; -+ int64_t memSize; -+ size_t len = sizeof(memSize); -+ -+ mib[0] = CTL_HW; -+ mib[1] = HW_PHYSMEM64; -+ rc = sysctl( mib, 2, &memSize, &len, NULL, 0 ); -+ if (-1 != rc) { -+ return memSize; -+ } -+ return 0; -+ - #else - long pages = sysconf(_SC_PHYS_PAGES); - long page_size = sysconf(_SC_PAGE_SIZE); -$NetBSD: patch-ipc_chromium_src_base_third__party_nspr_prcpucfg.h,v 1.2 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/third_party/nspr/prcpucfg.h.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/third_party/nspr/prcpucfg.h -@@ -34,7 +34,7 @@ - #include "base/third_party/nspr/prcpucfg_win.h" - #elif defined(__APPLE__) - #include "base/third_party/nspr/prcpucfg_mac.h" --#elif defined(__linux__) || defined(ANDROID) -+#elif defined(__linux__) || defined(ANDROID) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) - #include "base/third_party/nspr/prcpucfg_linux.h" - #elif defined(__OpenBSD__) - #include "base/third_party/nspr/prcpucfg_openbsd.h" -$NetBSD: patch-ipc_chromium_src_base_third__party_nspr_prtime.cc,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/base/third_party/nspr/prtime.cc.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/base/third_party/nspr/prtime.cc -@@ -212,7 +212,7 @@ PR_ImplodeTime(const PRExplodedTime *exp - LL_ADD(retVal, retVal, temp); - - return retVal; --#elif defined(OS_LINUX) -+#elif defined(OS_LINUX) || defined(OS_DRAGONFLY) - struct tm exp_tm = {0}; - exp_tm.tm_sec = exploded->tm_sec; - exp_tm.tm_min = exploded->tm_min; -@@ -245,6 +245,24 @@ PR_ImplodeTime(const PRExplodedTime *exp - result *= kSecondsToMicroseconds; - result += exploded->tm_usec; - return result; -+#elif defined(OS_FREEBSD) || defined(OS_NETBSD) -+ struct tm exp_tm = {0}; -+ exp_tm.tm_sec = exploded->tm_sec; -+ exp_tm.tm_min = exploded->tm_min; -+ exp_tm.tm_hour = exploded->tm_hour; -+ exp_tm.tm_mday = exploded->tm_mday; -+ exp_tm.tm_mon = exploded->tm_month; -+ exp_tm.tm_year = exploded->tm_year - 1900; -+ -+ // time_t is 64bit -+ time_t absolute_time = timegm(&exp_tm); -+ -+ PRTime result = static_cast(absolute_time); -+ result -= exploded->tm_params.tp_gmt_offset + -+ exploded->tm_params.tp_dst_offset; -+ result *= kSecondsToMicroseconds; -+ result += exploded->tm_usec; -+ return result; - #else - #error No PR_ImplodeTime implemented on your platform. - #endif -diff --git ipc/chromium/src/base/time_posix.cc ipc/chromium/src/base/time_posix.cc -index abf2a56..48791f6 100644 ---- mozilla/ipc/chromium/src/base/time_posix.cc -+++ mozilla/ipc/chromium/src/base/time_posix.cc -@@ -167,7 +167,7 @@ TimeTicks TimeTicks::Now() { - // With numer and denom = 1 (the expected case), the 64-bit absolute time - // reported in nanoseconds is enough to last nearly 585 years. - --#elif defined(__OpenBSD__) || defined(OS_POSIX) && \ -+#elif defined(OS_OPENBSD) || defined(OS_POSIX) && \ - defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 - - struct timespec ts; -$NetBSD: patch-ipc_chromium_src_build_build__config.h,v 1.4 2012/04/01 15:18:45 ryoon Exp $ - ---- mozilla/ipc/chromium/src/build/build_config.h.orig 2012-03-13 01:36:53.000000000 +0000 -+++ mozilla/ipc/chromium/src/build/build_config.h -@@ -19,6 +19,12 @@ - #define OS_MACOSX 1 - #elif defined(__linux__) || defined(ANDROID) - #define OS_LINUX 1 -+#elif defined(__DragonFly__) -+#define OS_DRAGONFLY 1 -+#elif defined(__FreeBSD__) -+#define OS_FREEBSD 1 -+#elif defined(__NetBSD__) -+#define OS_NETBSD 1 - #elif defined(__OpenBSD__) - #define OS_OPENBSD 1 - #elif defined(_WIN32) -@@ -27,9 +33,16 @@ - #error Please add support for your platform in build/build_config.h - #endif - -+// For access to standard BSD features, use OS_BSD instead of a -+// more specific macro. -+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD) \ -+ || defined(OS_NETBSD) || defined(OS_OPENBSD) -+#define OS_BSD 1 -+#endif -+ - // For access to standard POSIX features, use OS_POSIX instead of a more - // specific macro. --#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_OPENBSD) -+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) - #define OS_POSIX 1 - #endif - -diff --git ipc/chromium/src/chrome/common/ipc_channel_posix.cc ipc/chromium/src/chrome/common/ipc_channel_posix.cc -index bd866ee..2ea5b19 100644 ---- mozilla/ipc/chromium/src/chrome/common/ipc_channel_posix.cc -+++ mozilla/ipc/chromium/src/chrome/common/ipc_channel_posix.cc -@@ -7,6 +7,7 @@ - #include - #include - #include -+#include - #include - #include - #include -$NetBSD: patch-ipc_chromium_src_chrome_common_ipc__channel__posix.h,v 1.1 2011/07/11 12:46:14 tnn Exp $ - ---- mozilla/ipc/chromium/src/chrome/common/ipc_channel_posix.h.orig 2011-06-15 21:57:27.000000000 +0000 -+++ mozilla/ipc/chromium/src/chrome/common/ipc_channel_posix.h -@@ -92,7 +92,7 @@ class Channel::ChannelImpl : public Mess - }; - - // This is a control message buffer large enough to hold kMaxReadFDs --#if defined(OS_MACOSX) -+#if defined(OS_MACOSX) || defined(OS_NETBSD) - // TODO(agl): OSX appears to have non-constant CMSG macros! - char input_cmsg_buf_[1024]; - #else -$NetBSD: patch-ipc_chromium_src_chrome_common_ipc__message__utils.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/chrome/common/ipc_message_utils.h.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/chrome/common/ipc_message_utils.h -@@ -195,7 +195,7 @@ - }; - #endif - --#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || (defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)) || defined(ARCH_CPU_S390)) -+#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS)) || defined(ARCH_CPU_S390)) - // There size_t is a synonym for |unsigned long| ... - template <> - struct ParamTraits { -@@ -248,7 +248,7 @@ - }; - #endif // defined(OS_MACOSX) - --#if !(defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)) -+#if !((defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS)) - // int64 is |long int| on 64-bit systems, uint64 is |unsigned long| - template <> - struct ParamTraits { -$NetBSD: patch-ipc_chromium_src_chrome_common_transport__dib.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $ - ---- mozilla/ipc/chromium/src/chrome/common/transport_dib.h.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/chromium/src/chrome/common/transport_dib.h -@@ -7,7 +7,7 @@ - - #include "base/basictypes.h" - --#if defined(OS_WIN) || defined(OS_MACOSX) -+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) - #include "base/shared_memory.h" - #endif - -@@ -66,7 +66,7 @@ class TransportDIB { - uint32 sequence_num; - }; - typedef HandleAndSequenceNum Id; --#elif defined(OS_MACOSX) -+#elif defined(OS_MACOSX) || defined(OS_BSD) - typedef base::SharedMemoryHandle Handle; - // On Mac, the inode number of the backing file is used as an id. - typedef base::SharedMemoryId Id; -@@ -108,7 +108,7 @@ class TransportDIB { - - private: - TransportDIB(); --#if defined(OS_WIN) || defined(OS_MACOSX) -+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) - explicit TransportDIB(base::SharedMemoryHandle dib); - base::SharedMemory shared_memory_; - uint32 sequence_num_; -$NetBSD: patch-ipc_glue_GeckoChildProcessHost.cpp,v 1.2 2012/03/15 08:30:06 ryoon Exp $ - ---- mozilla/ipc/glue/GeckoChildProcessHost.cpp.orig 2011-12-20 23:28:19.000000000 +0000 -+++ mozilla/ipc/glue/GeckoChildProcessHost.cpp -@@ -430,7 +430,7 @@ - // and passing wstrings from one config to the other is unsafe. So - // we split the logic here. - --#if defined(OS_LINUX) || defined(OS_MACOSX) -+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) - base::environment_map newEnvVars; - // XPCOM may not be initialized in some subprocesses. We don't want - // to initialize XPCOM just for the directory service, especially -@@ -445,8 +445,8 @@ - if (NS_SUCCEEDED(rv)) { - nsCString path; - greDir->GetNativePath(path); --# ifdef OS_LINUX --# ifdef ANDROID -+# if defined(OS_LINUX) || defined(OS_BSD) -+# if defined(ANDROID) || defined(OS_BSD) - path += "/lib"; - # endif // ANDROID - const char *ld_library_path = PR_GetEnv("LD_LIBRARY_PATH"); -@@ -557,7 +557,7 @@ - childArgv.push_back(pidstring); - - #if defined(MOZ_CRASHREPORTER) --# if defined(OS_LINUX) -+# if defined(OS_LINUX) || defined(OS_BSD) - int childCrashFd, childCrashRemapFd; - if (!CrashReporter::CreateNotificationPipeForChild( - &childCrashFd, &childCrashRemapFd)) -@@ -594,7 +594,7 @@ - #endif - - base::LaunchApp(childArgv, mFileMap, --#if defined(OS_LINUX) || defined(OS_MACOSX) -+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) - newEnvVars, - #endif - false, &process, arch); -diff --git ipc/glue/SharedMemorySysV.h ipc/glue/SharedMemorySysV.h -index f37998d..b05dc7b 100644 ---- mozilla/ipc/glue/SharedMemorySysV.h -+++ mozilla/ipc/glue/SharedMemorySysV.h -@@ -8,7 +8,7 @@ - #ifndef mozilla_ipc_SharedMemorySysV_h - #define mozilla_ipc_SharedMemorySysV_h - --#if defined(OS_LINUX) && !defined(ANDROID) -+#if (defined(OS_LINUX) && !defined(ANDROID)) || defined(OS_BSD) - - // SysV shared memory isn't available on Windows, but we define the - // following macro so that #ifdefs are clearer (compared to #ifdef -$NetBSD: patch-mm,v 1.13 2012/06/05 18:09:21 ryoon Exp $ - ---- mozilla/toolkit/library/Makefile.in.orig 2012-05-23 18:57:09.000000000 +0000 -+++ mozilla/toolkit/library/Makefile.in -@@ -534,6 +538,12 @@ EXTRA_DSO_LDOPTS += -lelf -ldemangle - endif - endif - -+ifneq (,$(filter DragonFly FreeBSD NetBSD OpenBSD,$(OS_ARCH))) -+OS_LIBS += $(call EXPAND_LIBNAME,kvm) -+# keep `environ' unresolved, see bug 14426 for binutils -+EXTRA_DSO_LDOPTS += -Wl,--warn-unresolved-symbols -+endif -+ - ifeq ($(OS_ARCH),WINNT) - OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet) - ifdef ACCESSIBILITY Index: mail/thunderbird-esr/files/patch-bug761077 =================================================================== --- mail/thunderbird-esr/files/patch-bug761077 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug761077 (working copy) @@ -1,88 +0,0 @@ -diff --git mozilla/xpcom/reflect/xptcall/public/genstubs.pl mozilla/xpcom/reflect/xptcall/public/genstubs.pl -index b8a87a5..918c4cf 100644 ---- mozilla/xpcom/reflect/xptcall/public/genstubs.pl -+++ mozilla/xpcom/reflect/xptcall/public/genstubs.pl -@@ -44,7 +44,7 @@ print OUTFILE "* 0 is QueryInterface\n"; - print OUTFILE "* 1 is AddRef\n"; - print OUTFILE "* 2 is Release\n"; - print OUTFILE "*/\n"; --print OUTFILE "#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__))\n"; -+print OUTFILE "#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__))\n"; - for($i = 0; $i < $entry_count; $i++) { - print OUTFILE "NS_IMETHOD Stub",$i+3,"();\n"; - } -diff --git mozilla/xpcom/reflect/xptcall/public/xptcstubsdecl.inc mozilla/xpcom/reflect/xptcall/public/xptcstubsdecl.inc -index eb66761..807db26 100644 ---- mozilla/xpcom/reflect/xptcall/public/xptcstubsdecl.inc -+++ mozilla/xpcom/reflect/xptcall/public/xptcstubsdecl.inc -@@ -8,7 +8,7 @@ - * 1 is AddRef - * 2 is Release - */ --#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__)) -+#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__)) - NS_IMETHOD Stub3(); - NS_IMETHOD Stub4(); - NS_IMETHOD Stub5(); -diff --git mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in -index ae6ed66..2783957 100644 ---- mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in -+++ mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in -@@ -70,7 +70,7 @@ endif - endif - endif - # IA64 Linux --ifneq (,$(filter Linux,$(OS_ARCH))) -+ifneq (,$(filter Linux FreeBSD,$(OS_ARCH))) - ifneq (,$(findstring ia64,$(OS_TEST))) - CPPSRCS := xptcinvoke_ipf64.cpp xptcstubs_ipf64.cpp - ASFILES := xptcstubs_asm_ipf64.s xptcinvoke_asm_ipf64.s -@@ -269,7 +269,7 @@ endif - # - # Linux/PPC - # --ifeq ($(OS_ARCH)$(OS_TEST),Linuxpowerpc) -+ifneq (,$(filter Linuxpowerpc FreeBSDpowerpc,$(OS_ARCH)$(OS_TEST))) - CPPSRCS := xptcinvoke_ppc_linux.cpp xptcstubs_ppc_linux.cpp - ASFILES := xptcinvoke_asm_ppc_linux.s xptcstubs_asm_ppc_linux.s - AS := $(CC) -c -x assembler-with-cpp -@@ -278,7 +278,7 @@ endif - # - # Linux/PPC64 - # --ifeq ($(OS_ARCH)$(OS_TEST),Linuxpowerpc64) -+ifneq (,$(filter Linuxpowerpc64 FreeBSDpowerpc64,$(OS_ARCH)$(OS_TEST))) - CPPSRCS := xptcinvoke_ppc64_linux.cpp xptcstubs_ppc64_linux.cpp - ASFILES := xptcinvoke_asm_ppc64_linux.s xptcstubs_asm_ppc64_linux.s - AS := $(CC) -c -x assembler-with-cpp -@@ -350,7 +350,7 @@ endif - # - # OpenBSD/SPARC64 - # --ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDsparc64) -+ifneq (,$(filter OpenBSDsparc64 FreeBSDsparc64,$(OS_ARCH)$(OS_TEST))) - CPPSRCS := xptcinvoke_sparc64_openbsd.cpp xptcstubs_sparc64_openbsd.cpp - ASFILES := xptcinvoke_asm_sparc64_openbsd.s xptcstubs_asm_sparc64_openbsd.s - endif -diff --git mozilla/xpcom/reflect/xptcall/src/xptcprivate.h mozilla/xpcom/reflect/xptcall/src/xptcprivate.h -index d903ced..e4ec832 100644 ---- mozilla/xpcom/reflect/xptcall/src/xptcprivate.h -+++ mozilla/xpcom/reflect/xptcall/src/xptcprivate.h -@@ -14,7 +14,7 @@ - - class xptiInterfaceEntry; - --#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__)) -+#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__)) - #define STUB_ENTRY(n) NS_IMETHOD Stub##n() = 0; - #else - #define STUB_ENTRY(n) NS_IMETHOD Stub##n(PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64) = 0; -@@ -31,7 +31,7 @@ public: - #undef STUB_ENTRY - #undef SENTINEL_ENTRY - --#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__)) -+#if !defined(__ia64) || (!defined(__hpux) && !defined(__linux__) && !defined(__FreeBSD__)) - #define STUB_ENTRY(n) NS_IMETHOD Stub##n(); - #else - #define STUB_ENTRY(n) NS_IMETHOD Stub##n(PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64,PRUint64); Index: mail/thunderbird-esr/files/patch-bug778056 =================================================================== --- mail/thunderbird-esr/files/patch-bug778056 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug778056 (working copy) @@ -1,21 +0,0 @@ ---- mozilla/memory/mozalloc/mozalloc.cpp~ -+++ mozilla/memory/mozalloc/mozalloc.cpp -@@ -52,6 +52,9 @@ - #if defined(XP_UNIX) - # include // for valloc on *BSD - #endif //if defined(XP_UNIX) -+#ifdef __FreeBSD__ -+# include // for malloc_usable_size -+#endif - - #if defined(MOZ_MEMORY) - // jemalloc.h doesn't redeclare symbols if they're provided by the OS -@@ -259,7 +262,7 @@ moz_malloc_usable_size(void *ptr) - - #if defined(XP_MACOSX) - return malloc_size(ptr); --#elif defined(MOZ_MEMORY) -+#elif defined(MOZ_MEMORY) || defined(__FreeBSD__) - return malloc_usable_size(ptr); - #elif defined(XP_WIN) - return _msize(ptr); Index: mail/thunderbird-esr/files/patch-bug778078 =================================================================== --- mail/thunderbird-esr/files/patch-bug778078 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug778078 (working copy) @@ -1,11 +0,0 @@ ---- mozilla/toolkit/xre/nsAppRunner.cpp~ -+++ mozilla/toolkit/xre/nsAppRunner.cpp -@@ -2998,7 +2998,7 @@ XRE_main(int argc, char* argv[], const n - gQtOnlyArgv[gQtOnlyArgc] = nsnull; - #endif - #if defined(MOZ_WIDGET_GTK2) --#ifdef MOZ_MEMORY -+#if defined(MOZ_MEMORY) || defined(__FreeBSD__) || defined(__NetBSD__) - // Disable the slice allocator, since jemalloc already uses similar layout - // algorithms, and using a sub-allocator tends to increase fragmentation. - // This must be done before g_thread_init() is called. Index: mail/thunderbird-esr/files/patch-bug779847 =================================================================== --- mail/thunderbird-esr/files/patch-bug779847 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug779847 (working copy) @@ -1,28 +0,0 @@ ---- mozilla/gfx/ycbcr/Makefile.in -+++ mozilla/gfx/ycbcr/Makefile.in -@@ -54,23 +54,13 @@ CPPSRCS += yuv_row_win.cpp \ - $(NULL) - endif - else --ifeq ($(OS_ARCH),Linux) --CPPSRCS += yuv_row_posix.cpp \ -- $(NULL) --else --ifeq ($(OS_ARCH),SunOS) --CPPSRCS += yuv_row_posix.cpp \ -- $(NULL) --else --ifeq ($(OS_ARCH),Darwin) -+ifneq (,$(filter Linux SunOS Darwin DragonFly FreeBSD NetBSD OpenBSD, $(OS_ARCH))) - CPPSRCS += yuv_row_posix.cpp \ - $(NULL) - else - CPPSRCS += yuv_row_other.cpp \ - $(NULL) --endif # Darwin --endif # SunOS --endif # linux -+endif # posix - endif # windows - - ifeq (arm,$(findstring arm,$(OS_TEST))) Index: mail/thunderbird-esr/files/patch-bug781457 =================================================================== --- mail/thunderbird-esr/files/patch-bug781457 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug781457 (working copy) @@ -1,10 +0,0 @@ ---- mozilla/xpcom/base/nsStackWalk.cpp.orig 2010-09-12 19:34:04.012503905 +0300 -+++ mozilla/xpcom/base/nsStackWalk.cpp 2010-09-12 19:34:41.294462134 +0300 -@@ -1123,6 +1123,7 @@ NS_StackWalk(NS_WalkStackCallback aCallb - - #elif defined(HAVE__UNWIND_BACKTRACE) - -+#define _GNU_SOURCE - // libgcc_s.so symbols _Unwind_Backtrace@@GCC_3.3 and _Unwind_GetIP@@GCC_3.0 - #include - Index: mail/thunderbird-esr/files/patch-bug783463 =================================================================== --- mail/thunderbird-esr/files/patch-bug783463 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug783463 (working copy) @@ -1,20 +0,0 @@ ---- mozilla/widget/src/qt/nsNativeThemeQt.cpp~ -+++ mozilla/widget/src/qt/nsNativeThemeQt.cpp -@@ -25,7 +25,6 @@ - #include "nsThemeConstants.h" - #include "nsIServiceManager.h" - #include "nsIDOMHTMLInputElement.h" --#include - - - #include "gfxASurface.h" ---- mozilla/widget/src/qt/nsSound.cpp~ -+++ mozilla/widget/src/qt/nsSound.cpp -@@ -40,6 +40,7 @@ - #include - - #include -+#include - - #include "nscore.h" - #include "plstr.h" Index: mail/thunderbird-esr/files/patch-bug784776 =================================================================== --- mail/thunderbird-esr/files/patch-bug784776 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug784776 (working copy) @@ -1,22 +0,0 @@ ---- mozilla/intl/locale/src/unix/nsDateTimeFormatUnix.cpp~ -+++ mozilla/intl/locale/src/unix/nsDateTimeFormatUnix.cpp -@@ -100,7 +100,7 @@ void nsDateTimeFormatUnix::LocalePreferr - struct tm *tmc; - int i; - -- tt = time((time_t)NULL); -+ tt = time(NULL); - tmc = localtime(&tt); - - tmc->tm_hour=22; // put the test sample hour to 22:00 which is 10PM ---- mozilla/xpcom/glue/nsBaseHashtable.h~ -+++ mozilla/xpcom/glue/nsBaseHashtable.h -@@ -147,7 +147,7 @@ public: - { - EntryType* ent = this->GetEntry(aKey); - if (!ent) -- return NULL; -+ return 0; - - return ent->mData; - } Index: mail/thunderbird-esr/files/patch-bug788039 =================================================================== --- mail/thunderbird-esr/files/patch-bug788039 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug788039 (working copy) @@ -1,59 +0,0 @@ -# Bug 788039 - With no prefix search libevent via pkg-config. - ---- mozilla/config/autoconf.mk.in~ -+++ mozilla/config/autoconf.mk.in -@@ -227,7 +227,7 @@ MOZ_HUNSPELL_CFLAGS = @MOZ_HUNSPELL_CFLA - - MOZ_NATIVE_LIBEVENT = @MOZ_NATIVE_LIBEVENT@ - MOZ_LIBEVENT_LIBS = @MOZ_LIBEVENT_LIBS@ --MOZ_LIBEVENT_INCLUDES = @MOZ_LIBEVENT_INCLUDES@ -+MOZ_LIBEVENT_CFLAGS = @MOZ_LIBEVENT_CFLAGS@ - - MOZ_NATIVE_LIBVPX = @MOZ_NATIVE_LIBVPX@ - MOZ_LIBVPX_LIBS = @MOZ_LIBVPX_LIBS@ ---- mozilla/configure.in~ -+++ mozilla/configure.in -@@ -3854,7 +3854,7 @@ fi - dnl system libevent Support - dnl ======================================================== - MOZ_ARG_WITH_STRING(system-libevent, --[ --with-system-libevent=[PFX] -+[ --with-system-libevent[=PFX] - Use system libevent [installed at prefix PFX]], - LIBEVENT_DIR=$withval) - -@@ -3863,10 +3863,11 @@ _SAVE_LDFLAGS=$LDFLAGS - _SAVE_LIBS=$LIBS - if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then - MOZ_NATIVE_LIBEVENT= -+elif test "$LIBEVENT_DIR" = yes; then -+ PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent, -+ MOZ_NATIVE_LIBEVENT=1, -+ AC_MSG_ERROR([--with-system-libevent requested but libevent package not found])) - else -- if test "${LIBEVENT_DIR}" = "yes"; then -- LIBEVENT_DIR=/usr -- fi - CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS" - LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS" - MOZ_CHECK_HEADER(event.h, -@@ -3876,16 +3877,16 @@ else - AC_MSG_ERROR([--with-system-libevent requested but event.h not found])) - AC_CHECK_LIB(event, event_init, - [MOZ_NATIVE_LIBEVENT=1 -- MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include" -+ MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include" - MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"], -- [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=]) -+ [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=]) - fi - CFLAGS=$_SAVE_CFLAGS - LDFLAGS=$_SAVE_LDFLAGS - LIBS=$_SAVE_LIBS - - AC_SUBST(MOZ_NATIVE_LIBEVENT) --AC_SUBST(MOZ_LIBEVENT_INCLUDES) -+AC_SUBST(MOZ_LIBEVENT_CFLAGS) - AC_SUBST(MOZ_LIBEVENT_LIBS) - - dnl ======================================================== Index: mail/thunderbird-esr/files/patch-bug788108 =================================================================== --- mail/thunderbird-esr/files/patch-bug788108 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug788108 (working copy) @@ -1,20 +0,0 @@ ---- mozilla/content/base/public/nsContentUtils.h~ -+++ mozilla/content/base/public/nsContentUtils.h -@@ -18,17 +18,6 @@ - #include - #endif - --//A trick to handle IEEE floating point exceptions on FreeBSD - E.D. --#ifdef __FreeBSD__ --#include --#ifdef __alpha__ --static fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP; --#else --static fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML; --#endif --static fp_except_t oldmask = fpsetmask(~allmask); --#endif -- - #include "nsAString.h" - #include "nsIStatefulFrame.h" - #include "nsNodeInfoManager.h" Index: mail/thunderbird-esr/files/patch-bug789436 =================================================================== --- mail/thunderbird-esr/files/patch-bug789436 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug789436 (working copy) @@ -1,27 +0,0 @@ ---- mozilla/toolkit/xre/nsAppRunner.cpp~ -+++ mozilla/toolkit/xre/nsAppRunner.cpp -@@ -1388,11 +1388,6 @@ static int MSCRTReportHook( int aReportType, char *aMessage, int *oReturnValue) - - #endif - --#if defined(FREEBSD) --// pick up fpsetmask prototype. --#include --#endif -- - static inline void - DumpVersion() - { -@@ -4136,12 +4131,5 @@ SetupErrorHandling(const char* progname) - - // Unbuffer stdout, needed for tinderbox tests. - setbuf(stdout, 0); -- --#if defined(FREEBSD) -- // Disable all SIGFPE's on FreeBSD, as it has non-IEEE-conformant fp -- // trap behavior that trips up on floating-point tests performed by -- // the JS engine. See bugzilla bug 9967 details. -- fpsetmask(0); --#endif - } - Index: mail/thunderbird-esr/files/patch-bug789693 =================================================================== --- mail/thunderbird-esr/files/patch-bug789693 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug789693 (working copy) @@ -1,108 +0,0 @@ ---- mozilla/toolkit/components/startup/nsAppStartup.cpp -+++ mozilla/toolkit/components/startup/nsAppStartup.cpp -@@ -50,17 +50,40 @@ - #include - #endif - --#ifdef XP_MACOSX -+#if defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ -+ || defined(__NetBSD__) || defined(__OpenBSD__) -+#include - #include - #endif - --#ifdef __OpenBSD__ --#include --#include -+#if defined(__DragonFly__) || defined(__FreeBSD__) -+#include - #endif - - #include "mozilla/Telemetry.h" - -+#if defined(__NetBSD__) -+#undef KERN_PROC -+#define KERN_PROC KERN_PROC2 -+#define KINFO_PROC struct kinfo_proc2 -+#else -+#define KINFO_PROC struct kinfo_proc -+#endif -+ -+#if defined(XP_MACOSX) -+#define KP_START_SEC kp_proc.p_un.__p_starttime.tv_sec -+#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec -+#elif defined(__DragonFly__) -+#define KP_START_SEC kp_start.tv_sec -+#define KP_START_USEC kp_start.tv_usec -+#elif defined(__FreeBSD__) -+#define KP_START_SEC ki_start.tv_sec -+#define KP_START_USEC ki_start.tv_usec -+#else -+#define KP_START_SEC p_ustart_sec -+#define KP_START_USEC p_ustart_usec -+#endif -+ - static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID); - - using namespace mozilla; -@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp() - #endif - return timestamp; - } --#elif defined(XP_MACOSX) -+#elif defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ -+ || defined(__NetBSD__) || defined(__OpenBSD__) - static PRTime - CalculateProcessCreationTimestamp() - { -- int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() }; -- size_t buffer_size; -- if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0)) -- return 0; -+ int mib[] = { -+ CTL_KERN, -+ KERN_PROC, -+ KERN_PROC_PID, -+ getpid(), -+#if defined(__NetBSD__) || defined(__OpenBSD__) -+ sizeof(KINFO_PROC), -+ 1, -+#endif -+ }; -+ u_int miblen = sizeof(mib) / sizeof(mib[0]); - -- struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size); -- if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) { -- free(proc); -- return 0; -- } -- PRTime starttime = static_cast(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC; -- starttime += proc->kp_proc.p_un.__p_starttime.tv_usec; -- free(proc); -- return starttime; --} --#elif defined(__OpenBSD__) --static PRTime --CalculateProcessCreationTimestamp() --{ -- int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 }; -- size_t buffer_size; -- if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0)) -+ KINFO_PROC proc; -+ size_t buffer_size = sizeof(proc); -+ if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0)) - return 0; - -- struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size); -- if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) { -- free(proc); -- return 0; -- } -- PRTime starttime = static_cast(proc->p_ustart_sec) * PR_USEC_PER_SEC; -- starttime += proc->p_ustart_usec; -- free(proc); -+ PRTime starttime = static_cast(proc.KP_START_SEC) * PR_USEC_PER_SEC; -+ starttime += proc.KP_START_USEC; - return starttime; - } - #else Index: mail/thunderbird-esr/files/patch-bug791305 =================================================================== --- mail/thunderbird-esr/files/patch-bug791305 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug791305 (working copy) @@ -1,107 +0,0 @@ -commit c269a16 -Author: Jeff Muizelaar -Date: Fri Sep 14 15:54:55 2012 -0400 - - Bug 791305. Use libjpeg's color conversion code instead of our own. r=joe,r=khuey - - libjpeg-turbo supports converting directly to a format compatible with cairo's - FORMAT_RGB24. Use that instead of our own handcoded function. This also gives - us SSE2 and NEON version of this function. - - --HG-- - extra : rebase_source : 18f48925f023a33ec2a097d4f4e5cc2ab40be1e9 ---- - configure.in | 6 +- - image/decoders/nsJPEGDecoder.cpp | 311 ++------------------------------------- - 2 files changed, 20 insertions(+), 297 deletions(-) - -diff --git mozilla/image/decoders/nsJPEGDecoder.cpp mozilla/image/decoders/nsJPEGDecoder.cpp -index c1fb515..1d2a259 100644 ---- mozilla/image/decoders/nsJPEGDecoder.cpp -+++ mozilla/image/decoders/nsJPEGDecoder.cpp -@@ -22,6 +22,13 @@ - extern "C" { - #include "iccjpeg.h" - -+#ifdef JCS_EXTENSIONS -+#if defined(IS_BIG_ENDIAN) -+#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB -+#else -+#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX -+#endif -+#else - /* Colorspace conversion (copied from jpegint.h) */ - struct jpeg_color_deconverter { - JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); -@@ -34,6 +41,7 @@ METHODDEF(void) - ycc_rgb_convert_argb (j_decompress_ptr cinfo, - JSAMPIMAGE input_buf, JDIMENSION input_row, - JSAMPARRAY output_buf, int num_rows); -+#endif - } - - static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); -@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) - case JCS_GRAYSCALE: - case JCS_RGB: - case JCS_YCbCr: -+#ifdef JCS_EXTENSIONS -+ // if we're not color managing we can decode directly to -+ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB -+ if (mCMSMode != eCMSMode_All) { -+ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; -+ mInfo.out_color_components = 4; -+ } else { -+ mInfo.out_color_space = JCS_RGB; -+ } -+#else - mInfo.out_color_space = JCS_RGB; -+#endif - break; - case JCS_CMYK: - case JCS_YCCK: -@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) - return; /* I/O suspension */ - } - -+#ifndef JCS_EXTENSIONS - /* Force to use our YCbCr to Packed RGB converter when possible */ - if (!mTransform && (mCMSMode != eCMSMode_All) && - mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { -@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount) - mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ - mInfo.cconvert->color_convert = ycc_rgb_convert_argb; - } -+#endif - - /* If this is a progressive JPEG ... */ - mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; -@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend) - PRUint32 *imageRow = ((PRUint32*)mImageData) + - (mInfo.output_scanline * mInfo.output_width); - -+#ifdef JCS_EXTENSIONS -+ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { -+#else - if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { -+#endif - /* Special case: scanline will be directly converted into packed ARGB */ - if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { - *suspend = true; /* suspend */ -@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd) - } // namespace mozilla - - -+#ifndef JCS_EXTENSIONS - /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ - - /* -@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo, - } - } - } -+#endif - - - /**************** Inverted CMYK -> RGB conversion **************/ - /* Index: mail/thunderbird-esr/files/patch-bug791366 =================================================================== --- mail/thunderbird-esr/files/patch-bug791366 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug791366 (working copy) @@ -1,124 +0,0 @@ -diff --git mozilla/xpcom/base/nsMemoryReporterManager.cpp mozilla/xpcom/base/nsMemoryReporterManager.cpp -index a9aff58..674e757 100644 ---- mozilla/xpcom/base/nsMemoryReporterManager.cpp -+++ mozilla/xpcom/base/nsMemoryReporterManager.cpp -@@ -64,7 +64,7 @@ extern void jemalloc_stats(jemalloc_stat - # endif // XP_LINUX - #endif // MOZ_MEMORY - --#if defined(XP_LINUX) || defined(XP_MACOSX) -+#ifdef XP_UNIX - - #include - #include -@@ -122,6 +122,78 @@ static PRInt64 GetResident() - return GetProcSelfStatmField(1); - } - -+#elif defined(__DragonFly__) || defined(__FreeBSD__) \ -+ || defined(__NetBSD__) || defined(__OpenBSD__) -+ -+#include -+#include -+#if defined(__DragonFly__) || defined(__FreeBSD__) -+#include -+#endif -+ -+#include -+ -+#if defined(__NetBSD__) -+#undef KERN_PROC -+#define KERN_PROC KERN_PROC2 -+#define KINFO_PROC struct kinfo_proc2 -+#else -+#define KINFO_PROC struct kinfo_proc -+#endif -+ -+#if defined(__DragonFly__) -+#define KP_SIZE(kp) (kp.kp_vm_map_size) -+#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize()) -+#elif defined(__FreeBSD__) -+#define KP_SIZE(kp) (kp.ki_size) -+#define KP_RSS(kp) (kp.ki_rssize * getpagesize()) -+#elif defined(__NetBSD__) -+#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize()) -+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) -+#elif defined(__OpenBSD__) -+#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \ -+ + kp.p_vm_tsize) * getpagesize()) -+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize()) -+#endif -+ -+static nsresult GetKinfoProcSelf(KINFO_PROC *proc) -+{ -+ int mib[] = { -+ CTL_KERN, -+ KERN_PROC, -+ KERN_PROC_PID, -+ getpid(), -+#if defined(__NetBSD__) || defined(__OpenBSD__) -+ sizeof(KINFO_PROC), -+ 1, -+#endif -+ }; -+ u_int miblen = sizeof(mib) / sizeof(mib[0]); -+ size_t size = sizeof(KINFO_PROC); -+ if (sysctl(mib, miblen, proc, &size, NULL, 0)) -+ return NS_ERROR_FAILURE; -+ -+ return NS_OK; -+} -+ -+static PRInt64 GetVsize() -+{ -+ KINFO_PROC proc; -+ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) -+ return KP_SIZE(proc); -+ -+ return -1; -+} -+ -+static PRInt64 GetResident() -+{ -+ KINFO_PROC proc; -+ if (NS_SUCCEEDED(GetKinfoProcSelf(&proc))) -+ return KP_RSS(proc); -+ -+ return -1; -+} -+ - #elif defined(XP_MACOSX) - - #include -@@ -224,7 +297,7 @@ static PRInt64 GetResident() - - #endif - --#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) -+#if defined(XP_UNIX) || defined(XP_WIN) - NS_MEMORY_REPORTER_IMPLEMENT(Vsize, - "vsize", - KIND_OTHER, -@@ -239,7 +312,7 @@ NS_MEMORY_REPORTER_IMPLEMENT(Vsize, - "measure of the memory resources used by the process.") - #endif - --#if defined(XP_LINUX) || defined(XP_MACOSX) -+#if defined(XP_UNIX) - NS_MEMORY_REPORTER_IMPLEMENT(PageFaultsSoft, - "page-faults-soft", - KIND_OTHER, -@@ -457,11 +530,11 @@ nsMemoryReporterManager::Init() - REGISTER(HeapUnallocated); - REGISTER(Resident); - --#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(XP_WIN) -+#if defined(XP_UNIX) || defined(XP_WIN) - REGISTER(Vsize); - #endif - --#if defined(XP_LINUX) || defined(XP_MACOSX) -+#if defined(XP_UNIX) - REGISTER(PageFaultsSoft); - REGISTER(PageFaultsHard); - #endif Index: mail/thunderbird-esr/files/patch-bug799441 =================================================================== --- mail/thunderbird-esr/files/patch-bug799441 (revision 315699) +++ mail/thunderbird-esr/files/patch-bug799441 (working copy) @@ -1,116 +0,0 @@ -commit b9accdd -Author: Mike Hommey -Date: Thu Oct 18 14:47:10 2012 +0200 - - Bug 799441 - Build GIO module in libxul. r=ted ---- - configure.in | 6 ++++++ - extensions/gio/Makefile.in | 14 +++----------- - toolkit/library/Makefile.in | 5 +++++ - toolkit/library/nsStaticXULComponents.cpp | 7 +++++++ - toolkit/toolkit-tiers.mk | 4 ++++ - 5 files changed, 25 insertions(+), 11 deletions(-) - -diff --git configure.in configure.in -index a9fb5f1..37e6db8 100644 ---- mozilla/configure.in -+++ mozilla/configure.in -@@ -6086,6 +6086,12 @@ if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; th - MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'` - fi - -+if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then -+ MOZ_GIO_COMPONENT=1 -+ MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'` -+fi -+AC_SUBST(MOZ_GIO_COMPONENT) -+ - if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then - AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.]) - MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'` -diff --git extensions/gio/Makefile.in extensions/gio/Makefile.in -index ccf2846..79112a8 100644 ---- mozilla/extensions/gio/Makefile.in -+++ mozilla/extensions/gio/Makefile.in -@@ -14,6 +14,9 @@ MODULE = nkgio - LIBRARY_NAME = nkgio - SHORT_LIBNAME = nkgio - IS_COMPONENT = 1 -+EXPORT_LIBRARY = 1 -+MODULE_NAME = nsGIOModule -+LIBXUL_LIBRARY = 1 - - CPPSRCS = \ - nsGIOProtocolHandler.cpp \ -@@ -21,15 +24,4 @@ CPPSRCS = \ - - LOCAL_INCLUDES = $(MOZ_GIO_CFLAGS) - --EXTRA_DSO_LDOPTS = \ -- $(XPCOM_GLUE_LDOPTS) \ -- $(NSPR_LIBS) \ -- $(MOZ_GIO_LIBS) \ -- $(NULL) -- --# make sure this component is never statically linked into the main --# application. this is necessary since we don't want to force users --# to install gio in order to use the rest of mozilla ;-) --FORCE_SHARED_LIB= 1 -- - include $(topsrcdir)/config/rules.mk -diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 7f9046e..6499758 100644 ---- mozilla/toolkit/library/libxul-config.mk -+++ mozilla/toolkit/library/libxul-config.mk -@@ -333,6 +333,11 @@ COMPONENT_LIBS += gkdebug - endif - endif - -+ifdef MOZ_GIO_COMPONENT -+DEFINES += -DMOZ_GIO_COMPONENT -+COMPONENT_LIBS += nkgio -+endif -+ - ifdef MOZ_APP_COMPONENT_LIBS - COMPONENT_LIBS += $(MOZ_APP_COMPONENT_LIBS) - endif -diff --git toolkit/library/nsStaticXULComponents.cpp toolkit/library/nsStaticXULComponents.cpp -index e1d90f2..85b21a2 100644 ---- mozilla/toolkit/library/nsStaticXULComponents.cpp -+++ mozilla/toolkit/library/nsStaticXULComponents.cpp -@@ -164,6 +164,12 @@ - #define PROFILER_MODULE - #endif - -+#if defined(MOZ_GIO_COMPONENT) -+#define GIO_MODULE MODULE(nsGIOModule) -+#else -+#define GIO_MODULE -+#endif -+ - #define XUL_MODULES \ - MODULE(nsUConvModule) \ - MODULE(nsI18nModule) \ -@@ -220,6 +226,7 @@ - MODULE(nsTelemetryModule) \ - MODULE(jsinspector) \ - MODULE(jsdebugger) \ -+ GIO_MODULE \ - /* end of list */ - - #define MODULE(_name) \ -diff --git toolkit/toolkit-tiers.mk toolkit/toolkit-tiers.mk -index e87d7af..4b16d23 100644 ---- mozilla/toolkit/toolkit-tiers.mk -+++ mozilla/toolkit/toolkit-tiers.mk -@@ -252,6 +252,10 @@ tier_platform_dirs += js/ductwork/debugger - - tier_platform_dirs += other-licenses/snappy - -+ifdef MOZ_GIO_COMPONENT -+tier_platform_dirs += extensions/gio -+endif -+ - ifdef APP_LIBXUL_STATICDIRS - # Applications can cheat and ask for code to be - # built before libxul so libxul can be linked against it. Index: mail/thunderbird-esr/files/patch-clang32-visibility-hack =================================================================== --- mail/thunderbird-esr/files/patch-clang32-visibility-hack (revision 315699) +++ mail/thunderbird-esr/files/patch-clang32-visibility-hack (working copy) @@ -1,30 +0,0 @@ ---- configure.in~ -+++ configure.in -@@ -3230,6 +3230,7 @@ EOF - ac_cv_have_visibility_class_bug, - [cat > conftest.c < conftest.c < conftest.c < - #include "nsQAppInstance.h" - #endif - Index: mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libldap-Makefile.in =================================================================== --- mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libldap-Makefile.in (revision 315699) +++ mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libldap-Makefile.in (working copy) @@ -1,13 +0,0 @@ ---- ldap/sdks/c-sdk/ldap/libraries/libldap/Makefile.in.orig 2009-11-10 09:56:42.000000000 +0100 -+++ ldap/sdks/c-sdk/ldap/libraries/libldap/Makefile.in 2009-11-10 09:58:15.000000000 +0100 -@@ -254,6 +254,10 @@ - EXTRA_LIBS = -L$(dist_libdir) -l$(LBER_LIBNAME) -lbe - endif - -+ifeq ($(OS_ARCH), FreeBSD) -+EXTRA_LIBS = -L$(dist_libdir) -l$(LBER_LIBNAME) -lpthread -+endif -+ - ifeq ($(OS_ARCH), NetBSD) - EXTRA_LIBS = -L$(dist_libdir) -l$(LBER_LIBNAME) - endif Index: mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libprldap-Makefile.in =================================================================== --- mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libprldap-Makefile.in (revision 315699) +++ mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libprldap-Makefile.in (working copy) @@ -1,14 +0,0 @@ ---- ldap/sdks/c-sdk/ldap/libraries/libprldap/Makefile.in.orig 2008-09-11 16:38:35.000000000 +0200 -+++ ldap/sdks/c-sdk/ldap/libraries/libprldap/Makefile.in 2009-12-09 08:53:46.000000000 +0100 -@@ -147,6 +147,11 @@ - CUSTOM_LIBS=1 - endif - -+ifeq ($(OS_ARCH), FreeBSD) -+EXTRA_LIBS = -L$(dist_libdir) -l$(LBER_LIBNAME) -lpthread -+CUSTOM_LIBS=1 -+endif -+ - # no extra libs on HP-UX - ifeq ($(OS_ARCH), HP-UX) - CUSTOM_LIBS=1 Index: mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libssldap-Makefile.in =================================================================== --- mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libssldap-Makefile.in (revision 315699) +++ mail/thunderbird-esr/files/patch-ldap-sdks-c-sdk-ldap-libraries-libssldap-Makefile.in (working copy) @@ -1,12 +0,0 @@ ---- ldap/sdks/c-sdk/ldap/libraries/libssldap/Makefile.in~ -+++ ldap/sdks/c-sdk/ldap/libraries/libssldap/Makefile.in -@@ -188,6 +188,9 @@ endif - - OBJDEST = $(OBJDIR_NAME) - -+# accept -pthread with MOZ_NATIVE_NSS -+LINK_DLL = $(CC_FOR_LINK) -shared -o $@ $(OBJS) $(EXTRA_DLL_LIBS) -+ - ########################################################################### - - ifeq ($(USE_DLL_EXPORTS_FILE), 1) Index: mail/thunderbird-esr/files/patch-mail-app-nsMailApp.cpp =================================================================== --- mail/thunderbird-esr/files/patch-mail-app-nsMailApp.cpp (revision 315699) +++ mail/thunderbird-esr/files/patch-mail-app-nsMailApp.cpp (working copy) @@ -1,10 +0,0 @@ ---- mail/app/nsMailApp.cpp~ -+++ mail/app/nsMailApp.cpp -@@ -154,6 +154,7 @@ int main(int argc, char* argv[]) - TriggerQuirks(); - #endif - -+ setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko19:%%LOCALBASE%%/lib/npapi/symlinks/thunderbird", 0); - nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath); - if (NS_FAILED(rv)) { - Output("Couldn't calculate the application directory.\n"); Index: mail/thunderbird-esr/files/patch-mailnews-addrbook-src-nsDirPrefs.cpp =================================================================== --- mail/thunderbird-esr/files/patch-mailnews-addrbook-src-nsDirPrefs.cpp (revision 315699) +++ mail/thunderbird-esr/files/patch-mailnews-addrbook-src-nsDirPrefs.cpp (working copy) @@ -1,20 +0,0 @@ ---- mailnews/addrbook/src/nsDirPrefs.cpp~ -+++ mailnews/addrbook/src/nsDirPrefs.cpp -@@ -375,7 +375,7 @@ static bool DIR_SetServerPosition(nsVoid - DIR_Server *s=nsnull; - - switch (position) { -- case DIR_POS_APPEND: -+ case (PRInt32)DIR_POS_APPEND: - /* Do nothing if the request is to append a server that is already - * in the list. - */ -@@ -401,7 +401,7 @@ static bool DIR_SetServerPosition(nsVoid - wholeList->AppendElement(server); - break; - -- case DIR_POS_DELETE: -+ case (PRInt32)DIR_POS_DELETE: - /* Remove the prefs corresponding to the given server. If the prefName - * value is nsnull, the server has never been saved and there are no - * prefs to remove. Index: mail/thunderbird-esr/files/patch-mailnews-compose-src-nsSmtpProtocol.cpp =================================================================== --- mail/thunderbird-esr/files/patch-mailnews-compose-src-nsSmtpProtocol.cpp (revision 315699) +++ mail/thunderbird-esr/files/patch-mailnews-compose-src-nsSmtpProtocol.cpp (working copy) @@ -1,29 +0,0 @@ ---- mailnews/compose/src/nsSmtpProtocol.cpp~ -+++ mailnews/compose/src/nsSmtpProtocol.cpp -@@ -127,16 +127,16 @@ nsresult nsExplainErrorDetails(nsISmtpUr - - switch (code) - { -- case NS_ERROR_SMTP_SERVER_ERROR: -- case NS_ERROR_TCP_READ_ERROR: -- case NS_ERROR_SMTP_TEMP_SIZE_EXCEEDED: -- case NS_ERROR_SMTP_PERM_SIZE_EXCEEDED_1: -- case NS_ERROR_SMTP_PERM_SIZE_EXCEEDED_2: -- case NS_ERROR_SENDING_FROM_COMMAND: -- case NS_ERROR_SENDING_RCPT_COMMAND: -- case NS_ERROR_SENDING_DATA_COMMAND: -- case NS_ERROR_SENDING_MESSAGE: -- case NS_ERROR_SMTP_GREETING: -+ case (int)NS_ERROR_SMTP_SERVER_ERROR: -+ case (int)NS_ERROR_TCP_READ_ERROR: -+ case (int)NS_ERROR_SMTP_TEMP_SIZE_EXCEEDED: -+ case (int)NS_ERROR_SMTP_PERM_SIZE_EXCEEDED_1: -+ case (int)NS_ERROR_SMTP_PERM_SIZE_EXCEEDED_2: -+ case (int)NS_ERROR_SENDING_FROM_COMMAND: -+ case (int)NS_ERROR_SENDING_RCPT_COMMAND: -+ case (int)NS_ERROR_SENDING_DATA_COMMAND: -+ case (int)NS_ERROR_SENDING_MESSAGE: -+ case (int)NS_ERROR_SMTP_GREETING: - bundle->GetStringFromID(NS_ERROR_GET_CODE(code), getter_Copies(eMsg)); - msg = nsTextFormatter::vsmprintf(eMsg.get(), args); - break; Index: mail/thunderbird-esr/files/patch-mozilla-config_autoconf.mk.in =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-config_autoconf.mk.in (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-config_autoconf.mk.in (working copy) @@ -1,22 +0,0 @@ ---- mozilla/config/autoconf.mk.in.orig 2007-08-28 12:02:43.000000000 -0400 -+++ mozilla/config/autoconf.mk.in 2007-09-26 14:21:51.000000000 -0400 -@@ -58,14 +58,14 @@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - bindir = @bindir@ --includedir = @includedir@/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) -+includedir = @includedir@/%%MOZILLA%% - libdir = @libdir@ - datadir = @datadir@ - mandir = @mandir@ --idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) -+idldir = $(datadir)/idl/%%MOZILLA%% - --installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) --sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) -+installdir = $(libdir)/%%MOZILLA%% -+sdkdir = $(libdir)/%%MOZILLA%% - - DIST = $(DEPTH)/dist - LIBXUL_SDK = @LIBXUL_SDK@ - Index: mail/thunderbird-esr/files/patch-mozilla-extensions-spellcheck-hunspell-src-mozHunspell.cpp =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-extensions-spellcheck-hunspell-src-mozHunspell.cpp (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-extensions-spellcheck-hunspell-src-mozHunspell.cpp (working copy) @@ -1,15 +0,0 @@ ---- mozilla/extensions/spellcheck/hunspell/src/mozHunspell.cpp~ -+++ mozilla/extensions/spellcheck/hunspell/src/mozHunspell.cpp -@@ -400,6 +400,12 @@ mozHunspell::LoadDictionaryList() - } - } - -+ // load system hunspell dictionaries -+ nsIFile* hunDir; -+ NS_NewNativeLocalFile(NS_LITERAL_CSTRING("%%LOCALBASE%%/share/hunspell"), -+ true, (nsILocalFile**)&hunDir); -+ LoadDictionariesFromDir(hunDir); -+ - // find dictionaries from extensions requiring restart - nsCOMPtr dictDirs; - rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY_LIST, Index: mail/thunderbird-esr/files/patch-mozilla-gfx-qcms-qcmstypes.h =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-gfx-qcms-qcmstypes.h (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-gfx-qcms-qcmstypes.h (working copy) @@ -1,11 +0,0 @@ ---- mozilla/gfx/qcms/qcmstypes.h.orig 2010-11-22 12:01:36.000000000 +0100 -+++ mozilla/gfx/qcms/qcmstypes.h 2010-11-22 12:02:42.000000000 +0100 -@@ -25,7 +25,7 @@ - #ifdef __OS2__ - /* OS/2's stdlib typdefs uintptr_t. So we'll just include that so we don't collide */ - #include --#elif !defined(__intptr_t_defined) && !defined(_UINTPTR_T_DEFINED) -+#elif !defined(__intptr_t_defined) && !defined(_INTPTR_T_DECLARED) - typedef PRUptrdiff uintptr_t; - #endif - #endif Index: mail/thunderbird-esr/files/patch-mozilla-ipc-chromium-Makefile.in =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-ipc-chromium-Makefile.in (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-ipc-chromium-Makefile.in (working copy) @@ -1,28 +0,0 @@ ---- mozilla/ipc/chromium/Makefile.in~ -+++ mozilla/ipc/chromium/Makefile.in -@@ -43,6 +43,14 @@ include $(DEPTH)/config/autoconf.mk - - OS_CXXFLAGS := $(filter-out -fshort-wchar,$(OS_CXXFLAGS)) - -+# workaround IPC hang with libevent2 -+ifndef MOZ_DEBUG -+ifneq (,$(filter 4.2.%, $(CXX_VERSION))) -+MOZ_OPTIMIZE_FLAGS = -O1 -+OS_CXXFLAGS += $(MOZ_OPTIMIZE_FLAGS) -+endif -+endif -+ - LIBRARY_NAME = chromium_s - FORCE_STATIC_LIB = 1 - LIBXUL_LIBRARY = 1 -@@ -55,9 +60,7 @@ vpath %.c \ - $(srcdir)/src/third_party/libevent \ - $(NULL) - else # } else { --# message_pump_libevent.cc includes third_party/libevent/event.h, --# which we put in $(DIST), see export rule below --LOCAL_INCLUDES += -I$(DIST) -+LOCAL_INCLUDES += $(filter %/compat, $(MOZ_LIBEVENT_CFLAGS)) - endif # } - - vpath %.cc \ Index: mail/thunderbird-esr/files/patch-mozilla-ipc-chromium-src-base-message_pump_libevent.cc =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-ipc-chromium-src-base-message_pump_libevent.cc (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-ipc-chromium-src-base-message_pump_libevent.cc (working copy) @@ -1,11 +0,0 @@ ---- mozilla/ipc/chromium/src/base/message_pump_libevent.cc~ -+++ mozilla/ipc/chromium/src/base/message_pump_libevent.cc -@@ -15,7 +15,7 @@ - #include "base/scoped_nsautorelease_pool.h" - #include "base/scoped_ptr.h" - #include "base/time.h" --#include "third_party/libevent/event.h" -+#include "event.h" - - // Lifecycle of struct event - // Libevent uses two main data structures: Index: mail/thunderbird-esr/files/patch-mozilla-js-src-configure.in =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-js-src-configure.in (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-js-src-configure.in (working copy) @@ -1,10 +0,0 @@ ---- mozilla/js/src/configure.in.orig 2012-01-29 15:44:24.000000000 +0100 -+++ mozilla/js/src/configure.in 2012-01-30 23:37:46.541060008 +0100 -@@ -5946,6 +5946,7 @@ _EGREP_PATTERN="${_EGREP_PATTERN}dummy_n - * C++ implementations should define these macros only when __STDC_LIMIT_MACROS - * is defined before is included. */ - #define __STDC_LIMIT_MACROS -+#define __STDC_CONSTANT_MACROS - - #endif /* _JS_CONFDEFS_H_ */ - Index: mail/thunderbird-esr/files/patch-mozilla-js-src-methodjit-MethodJIT.cpp =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-js-src-methodjit-MethodJIT.cpp (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-js-src-methodjit-MethodJIT.cpp (working copy) @@ -1,20 +0,0 @@ ---- mozilla/js/src/methodjit/MethodJIT.cpp~ -+++ mozilla/js/src/methodjit/MethodJIT.cpp -@@ -171,7 +171,7 @@ - - JS_STATIC_ASSERT(offsetof(FrameRegs, sp) == 0); - --#if defined(__linux__) && defined(JS_CPU_X64) -+#if defined(__ELF__) && defined(JS_CPU_X64) - # define SYMBOL_STRING_RELOC(name) #name "@plt" - #else - # define SYMBOL_STRING_RELOC(name) SYMBOL_STRING(name) -@@ -149,7 +149,7 @@ - - #if defined(XP_MACOSX) - # define HIDE_SYMBOL(name) ".private_extern _" #name --#elif defined(__linux__) -+#elif defined(__ELF__) - # define HIDE_SYMBOL(name) ".hidden" #name - #else - # define HIDE_SYMBOL(name) Index: mail/thunderbird-esr/files/patch-mozilla-media-libsydneyaudio-src-sydney_audio_oss.c =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-media-libsydneyaudio-src-sydney_audio_oss.c (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-media-libsydneyaudio-src-sydney_audio_oss.c (working copy) @@ -1,13 +0,0 @@ ---- mozilla/media/libsydneyaudio/src/sydney_audio_oss.c~ -+++ mozilla/media/libsydneyaudio/src/sydney_audio_oss.c -@@ -446,6 +446,10 @@ static void audio_callback(void* data) - printf("!"); /* not enough audio data */ - #endif - bytes = bytes-bytes_to_copy; -+ struct timespec ts = {0, 1000000}; -+ pthread_mutex_unlock(&s->mutex); -+ nanosleep(&ts, NULL); -+ pthread_mutex_lock(&s->mutex); - break; - } - free(s->bl_head); Index: mail/thunderbird-esr/files/patch-mozilla-security-manager-ssl-src-nsNSSComponent.cpp =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-security-manager-ssl-src-nsNSSComponent.cpp (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-security-manager-ssl-src-nsNSSComponent.cpp (working copy) @@ -1,10 +0,0 @@ ---- mozilla/security/manager/ssl/src/nsNSSComponent.cpp.orig Mon May 29 23:10:54 2006 -+++ mozilla/security/manager/ssl/src/nsNSSComponent.cpp Mon May 29 23:12:22 2006 -@@ -110,6 +110,7 @@ - #include "nss.h" - #include "pk11func.h" - #include "ssl.h" -+#define NSS_ENABLE_ECC 1 - #include "sslproto.h" - #include "secmod.h" - #include "sechash.h" Index: mail/thunderbird-esr/files/patch-mozilla-toolkit-xre-Makefile.in =================================================================== --- mail/thunderbird-esr/files/patch-mozilla-toolkit-xre-Makefile.in (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla-toolkit-xre-Makefile.in (working copy) @@ -1,8 +0,0 @@ ---- mozilla/toolkit/xre/Makefile.in.orig 2007-09-10 10:31:53.000000000 -0400 -+++ mozilla/toolkit/xre/Makefile.in 2007-09-10 10:35:00.000000000 -0400 -@@ -263,5 +263,3 @@ - libs:: platform.ini - $(INSTALL) $^ $(DIST)/bin - --install:: -- $(INSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir) Index: mail/thunderbird-esr/files/patch-mozilla_toolkit_mozapps_installer_packager_mk =================================================================== --- mail/thunderbird-esr/files/patch-mozilla_toolkit_mozapps_installer_packager_mk (revision 315699) +++ mail/thunderbird-esr/files/patch-mozilla_toolkit_mozapps_installer_packager_mk (working copy) @@ -1,13 +0,0 @@ -$OpenBSD: patch-toolkit_mozapps_installer_packager_mk,v 1.11 2012/06/11 15:29:56 landry Exp $ -install headers/idl/sdk libs only if xulrunner ---- mozilla/toolkit/mozapps/installer/packager.mk.orig Fri Jun 1 14:04:20 2012 -+++ mozilla/toolkit/mozapps/installer/packager.mk Tue Jun 5 07:55:51 2012 -@@ -886,7 +886,7 @@ endif - $(NSINSTALL) -D $(DESTDIR)$(bindir) - $(RM) -f $(DESTDIR)$(bindir)/$(MOZ_APP_NAME) - ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir) --ifdef INSTALL_SDK # Here comes the hard part -+ifeq ($(MOZ_APP_NAME),xulrunner) - $(NSINSTALL) -D $(DESTDIR)$(includedir) - (cd $(DIST)/include && tar $(TAR_CREATE_FLAGS) - .) | \ - (cd $(DESTDIR)$(includedir) && tar -xf -) Index: mail/thunderbird-esr/files/patch-toolkit-xre-nsEmbedFunctions.cpp =================================================================== --- mail/thunderbird-esr/files/patch-toolkit-xre-nsEmbedFunctions.cpp (revision 315699) +++ mail/thunderbird-esr/files/patch-toolkit-xre-nsEmbedFunctions.cpp (working copy) @@ -1,10 +0,0 @@ ---- mozilla/toolkit/xre/nsEmbedFunctions.cpp~ -+++ mozilla/toolkit/xre/nsEmbedFunctions.cpp -@@ -36,6 +36,7 @@ - * ***** END LICENSE BLOCK ***** */ - - #if defined(MOZ_WIDGET_QT) -+#include - #include "nsQAppInstance.h" - #endif - Index: mail/thunderbird-esr/files/thunderbird.desktop.in =================================================================== --- mail/thunderbird-esr/files/thunderbird.desktop.in (revision 315699) +++ mail/thunderbird-esr/files/thunderbird.desktop.in (working copy) @@ -1,11 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=Thunderbird -GenericName=Mail Client -Comment=Mail client and News Reader -Exec=@MOZILLA@ %U -Icon=@PORTNAME_ICON@ -StartupNotify=false -Terminal=false -Type=Application -Categories=Application;Network; Index: mail/thunderbird-esr/pkg-descr =================================================================== --- mail/thunderbird-esr/pkg-descr (revision 315699) +++ mail/thunderbird-esr/pkg-descr (working copy) @@ -1,6 +0,0 @@ -Mozilla Thunderbird is a redesign of the Mozilla mail component with the goal -of becoming a cross-platform stand alone mail application using the XUL -user interface language. See the Mozilla Thunderbird project page for -more details. - -WWW: http://www.mozilla.com/thunderbird/ Index: mail/thunderbird-esr-i18n/Makefile =================================================================== --- mail/thunderbird-esr-i18n/Makefile (revision 315699) +++ mail/thunderbird-esr-i18n/Makefile (working copy) @@ -1,90 +0,0 @@ -# Created by: Andrew Pantyukhin -# $FreeBSD$ - -PORTNAME= thunderbird-i18n -PORTVERSION= 10.0.12 -CATEGORIES= mail -MASTER_SITE_SUBDIR= thunderbird/releases/${PORTVERSION}esr/linux-i686/xpi -PKGNAMEPREFIX= -DISTFILES= ${THUNDERBIRD_I18N_:S/$/.xpi/} -DIST_SUBDIR= xpi/${DISTNAME} - -MAINTAINER= gecko@FreeBSD.org -COMMENT= Localized interface for Thunderbird - -EXTRACT_DEPENDS= zip:${PORTSDIR}/archivers/zip - -PLIST?= ${WRKDIR}/plist -PLISTD?= ${WRKDIR}/plist_dirs -PLISTF?= ${WRKDIR}/plist_files - -.ifndef WITHOUT_SWITCHER -RUN_DEPENDS+= xpi-quick-locale-switcher>=0:${PORTSDIR}/www/xpi-quick-locale-switcher -.endif - -LATEST_LINK= thunderbird-esr-i18n -NO_BUILD= yes -USE_THUNDERBIRD= 10 -USE_XPI= thunderbird linux-thunderbird - -THUNDERBIRD_I18N_ALL= ar br ca cs da de en-GB en-US es-AR es-ES et eu fi fr \ - fy-NL ga-IE gd gl he hu is it ja ko lt nb-NO nl nn-NO \ - pl pt-BR pt-PT rm ru si sk sl sq sv-SE ta-LK tr uk zh-TW - -.ifdef PACKAGE_BUILDING -THUNDERBIRD_I18N?= all -.else -THUNDERBIRD_I18N?= es-ES pt-BR ru ja de fr ko it -.endif - -.if ${THUNDERBIRD_I18N} == all -THUNDERBIRD_I18N_= ${THUNDERBIRD_I18N_ALL} -.endif -THUNDERBIRD_I18N_?= ${THUNDERBIRD_I18N} - -WDIR= langpack-*@thunderbird.mozilla.org - -XPI_DISTNAMES= ${THUNDERBIRD_I18N_} -.for dist in ${XPI_DISTNAMES} -XPI_ID_${dist}= langpack-${dist}@thunderbird.mozilla.org -.endfor - -do-extract: - @${RM} -rf ${WRKDIR} - @${MKDIR} ${WRKDIR} ${WRKSRC} - @for lang in ${THUNDERBIRD_I18N_}; do \ - if ! (${EXTRACT_CMD} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@thunderbird.mozilla.org);\ - then \ - exit 1; \ - fi; \ - cd ${WRKSRC}/langpack-$$lang@thunderbird.mozilla.org/; \ - ${FIND} -H -s * ! -type d | \ - ${SED} -e "s|^|lib/xpi/langpack-$$lang@thunderbird.mozilla.org/|" >> ${PLISTF} && \ - ${FIND} -d * -type d | \ - ${SED} -e "s|^|@dirrm lib/xpi/langpack-$$lang@thunderbird.mozilla.org/|" >> ${PLISTD}; \ - done - ${CAT} ${PLISTF} | ${SORT} >> ${PLIST} - ${CAT} ${PLISTD} | ${SORT} -r >> ${PLIST} - -do-install: - @${INSTALL} -d ${XPI_LIBDIR} ${XPI_SLDIRS_ALL} - @${CP} -R ${WRKSRC}/ ${XPI_LIBDIR}/ - @${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${XPI_LIBDIR}/${WDIR}/ - @${CHMOD} -R a+rX,go-w ${XPI_LIBDIR}/${WDIR}/ - @for _dir in ${XPI_LINKFARMS} ; { ${LN} -sf ${XPI_LIBDIR}/${WDIR} $$_dir/ ${_Q} ; } - @${ECHO_CMD} '@exec ${INSTALL} -d ${XPI_SLDIRS_ALL:S,^${PREFIX},%D,}' ${_A} - @${ECHO_CMD} '@exec for _dir in ${XPI_LINKFARMS} ; { \ - ${LN} -sf ${XPI_LIBDIR}/${WDIR} $$_dir/ ${_Q}; }' ${_A} - @${ECHO_CMD} '@unexec for _dir in ${XPI_LINKFARMS} ${XPI_LIBDIR}; { ${RM} -fR $$_dir/${WDIR} ; }' ${_A} - @${ECHO_CMD} '@unexec ${RMDIR} ${XPI_DIRS_TRY:S,^,%D/,} ${_Q}' ${_A} - -post-patch: - ${FIND} ${WRKSRC} -name install.rdf -print0 | \ - ${XARGS} -0L1 ${REINPLACE_CMD} -i '' '/ Index: mail/thunderbird-esr-i18n/distinfo =================================================================== --- mail/thunderbird-esr-i18n/distinfo (revision 315699) +++ mail/thunderbird-esr-i18n/distinfo (working copy) @@ -1,84 +0,0 @@ -SHA256 (xpi/thunderbird-i18n-10.0.12/ar.xpi) = 8640606545b0f908e76889ee279e9fae03f7d6cb6874fc7ac2e4ee9f18633426 -SIZE (xpi/thunderbird-i18n-10.0.12/ar.xpi) = 441467 -SHA256 (xpi/thunderbird-i18n-10.0.12/br.xpi) = fdaa276753268349115d5c69171e20c5a5a65163a93dae3af1d56c734be37f8c -SIZE (xpi/thunderbird-i18n-10.0.12/br.xpi) = 415527 -SHA256 (xpi/thunderbird-i18n-10.0.12/ca.xpi) = 048a97a326e3c96315bd0fe0794565c1c9a218ef7a2b29909d82f5aaaec08164 -SIZE (xpi/thunderbird-i18n-10.0.12/ca.xpi) = 416070 -SHA256 (xpi/thunderbird-i18n-10.0.12/cs.xpi) = f98e04fff0c361cf641f65ce003f2302203dcc44c7e23277fd625415d5c3aae5 -SIZE (xpi/thunderbird-i18n-10.0.12/cs.xpi) = 419419 -SHA256 (xpi/thunderbird-i18n-10.0.12/da.xpi) = 84c41306ec93f2effa1584e715802d4394967f290c1eead20bbf0ab21ac37f71 -SIZE (xpi/thunderbird-i18n-10.0.12/da.xpi) = 363377 -SHA256 (xpi/thunderbird-i18n-10.0.12/de.xpi) = c4699b580db139597596b12c77e8fe8dd1dfdcf877edcdb10d9220b62cc2de2a -SIZE (xpi/thunderbird-i18n-10.0.12/de.xpi) = 418267 -SHA256 (xpi/thunderbird-i18n-10.0.12/en-GB.xpi) = 4a36fa81eb83964ae211074d1befa5b6582a4eb9ba80927fd86b5303eb82c8af -SIZE (xpi/thunderbird-i18n-10.0.12/en-GB.xpi) = 391743 -SHA256 (xpi/thunderbird-i18n-10.0.12/en-US.xpi) = 7ee165bed1e9f2294398d02b9e9b4412e214998593efc94f4787483fdf6d462b -SIZE (xpi/thunderbird-i18n-10.0.12/en-US.xpi) = 391242 -SHA256 (xpi/thunderbird-i18n-10.0.12/es-AR.xpi) = f6b6020981533c95b1f3cb390081d448439ec1fc0333c47d41294907e8c11d93 -SIZE (xpi/thunderbird-i18n-10.0.12/es-AR.xpi) = 410727 -SHA256 (xpi/thunderbird-i18n-10.0.12/es-ES.xpi) = 5a39d54385c37d9229a954275cbfb20cd3de7c59e16b0a2a718fa95f58f8d5b5 -SIZE (xpi/thunderbird-i18n-10.0.12/es-ES.xpi) = 355143 -SHA256 (xpi/thunderbird-i18n-10.0.12/et.xpi) = ecb178ff7a985ac2860629d974ace70855cb9c81ca7ee984bd1409b57b0bf3de -SIZE (xpi/thunderbird-i18n-10.0.12/et.xpi) = 410725 -SHA256 (xpi/thunderbird-i18n-10.0.12/eu.xpi) = 6bab4baac74e8f1c0ea2d4aafdd229d04a4db681a457e74719ef7086894ec3f5 -SIZE (xpi/thunderbird-i18n-10.0.12/eu.xpi) = 406387 -SHA256 (xpi/thunderbird-i18n-10.0.12/fi.xpi) = 2af4203f980d915f68167c09144ed6b4630583203f4f4e7e455a519644f1ecc1 -SIZE (xpi/thunderbird-i18n-10.0.12/fi.xpi) = 411928 -SHA256 (xpi/thunderbird-i18n-10.0.12/fr.xpi) = 138b0853522a5cea6c9b361f0b4915b99d5874cdf2d8f8d6390cf91765757ef2 -SIZE (xpi/thunderbird-i18n-10.0.12/fr.xpi) = 414750 -SHA256 (xpi/thunderbird-i18n-10.0.12/fy-NL.xpi) = d052d6520e9dc41134e3d0afee4beb0abed9d809a391293b034a2db57606f95b -SIZE (xpi/thunderbird-i18n-10.0.12/fy-NL.xpi) = 413985 -SHA256 (xpi/thunderbird-i18n-10.0.12/ga-IE.xpi) = 4208354ce071bb1a049646916e0a0921cc8393da5399df1c458d556cf8e8fc64 -SIZE (xpi/thunderbird-i18n-10.0.12/ga-IE.xpi) = 423261 -SHA256 (xpi/thunderbird-i18n-10.0.12/gd.xpi) = bd1de14cd558a179978d9e4138c5866a5cd35c8affb683b653e747c546b36c1d -SIZE (xpi/thunderbird-i18n-10.0.12/gd.xpi) = 425877 -SHA256 (xpi/thunderbird-i18n-10.0.12/gl.xpi) = 0d01229d75fbf49bf0217df70a986679e92f69a6c206e43591bfdefe117cbcb6 -SIZE (xpi/thunderbird-i18n-10.0.12/gl.xpi) = 409229 -SHA256 (xpi/thunderbird-i18n-10.0.12/he.xpi) = de5ba8c32c2b909c770eced2e237fe54213fc01271bdbef6d720e01d8b21812d -SIZE (xpi/thunderbird-i18n-10.0.12/he.xpi) = 439207 -SHA256 (xpi/thunderbird-i18n-10.0.12/hu.xpi) = 54bd3e348c0d4177dabd6789e77dfbee08547591b258acfe18030fdc7e66eac6 -SIZE (xpi/thunderbird-i18n-10.0.12/hu.xpi) = 426357 -SHA256 (xpi/thunderbird-i18n-10.0.12/is.xpi) = f4abd2e33b51762bc90700097d45f5a5629934d40666a58d8f577a9043941b3b -SIZE (xpi/thunderbird-i18n-10.0.12/is.xpi) = 412635 -SHA256 (xpi/thunderbird-i18n-10.0.12/it.xpi) = b0313761e838f887a906ec514f70267124d5e103e96a0eaee57d18f73ca41411 -SIZE (xpi/thunderbird-i18n-10.0.12/it.xpi) = 347634 -SHA256 (xpi/thunderbird-i18n-10.0.12/ja.xpi) = ac34c2227b3327a86f699dd0968041b350d216cd6ecfb1e948032e8e4294ea6c -SIZE (xpi/thunderbird-i18n-10.0.12/ja.xpi) = 459031 -SHA256 (xpi/thunderbird-i18n-10.0.12/ko.xpi) = 8acecd1f7649c4d18ef8f36d5666215598818934315dd05c1672bc37439b1630 -SIZE (xpi/thunderbird-i18n-10.0.12/ko.xpi) = 372016 -SHA256 (xpi/thunderbird-i18n-10.0.12/lt.xpi) = af71d869af00d7b4507d1da907cec67583951a138caed60dbc55bbfe4403b1d4 -SIZE (xpi/thunderbird-i18n-10.0.12/lt.xpi) = 531023 -SHA256 (xpi/thunderbird-i18n-10.0.12/nb-NO.xpi) = 4d580bb55cb5c060dbf1c50294e072be7fec2dd680ed65a6a178bf3d6f7d4727 -SIZE (xpi/thunderbird-i18n-10.0.12/nb-NO.xpi) = 407730 -SHA256 (xpi/thunderbird-i18n-10.0.12/nl.xpi) = 79e093884f05848ce3176dcd03a67734f44a43ce721936c5966c1ba2032a2bdc -SIZE (xpi/thunderbird-i18n-10.0.12/nl.xpi) = 407985 -SHA256 (xpi/thunderbird-i18n-10.0.12/nn-NO.xpi) = 28c90815dcb7ed4b2226f0e93800a433633f44cc88fe79cb86233cf76352b568 -SIZE (xpi/thunderbird-i18n-10.0.12/nn-NO.xpi) = 409459 -SHA256 (xpi/thunderbird-i18n-10.0.12/pl.xpi) = 594209d10ba7155e288fa5c5767374ba074e5419b62a0ca373b4c9eee9d75762 -SIZE (xpi/thunderbird-i18n-10.0.12/pl.xpi) = 393579 -SHA256 (xpi/thunderbird-i18n-10.0.12/pt-BR.xpi) = 33eeef67280c75853335d06fac8c6d3b15e3b0e3e18e5e6f92914e069784d06e -SIZE (xpi/thunderbird-i18n-10.0.12/pt-BR.xpi) = 417230 -SHA256 (xpi/thunderbird-i18n-10.0.12/pt-PT.xpi) = 3cdd5bb8072f83295979347cd67ad8cdee896f7c4fc5ce910815afe87525441f -SIZE (xpi/thunderbird-i18n-10.0.12/pt-PT.xpi) = 414266 -SHA256 (xpi/thunderbird-i18n-10.0.12/rm.xpi) = 6188a9730c0310d0f5fbcef056855c9244c451534f9790a47df498849a867229 -SIZE (xpi/thunderbird-i18n-10.0.12/rm.xpi) = 414710 -SHA256 (xpi/thunderbird-i18n-10.0.12/ru.xpi) = 74401e13a9c7e2748e798a5dbe9f46ba75ac8215189f034dfe965821be32f612 -SIZE (xpi/thunderbird-i18n-10.0.12/ru.xpi) = 411635 -SHA256 (xpi/thunderbird-i18n-10.0.12/si.xpi) = 0ee022882f55d521f324c8109e0c39cbe91e96b7544faebde1dba8c233366018 -SIZE (xpi/thunderbird-i18n-10.0.12/si.xpi) = 456608 -SHA256 (xpi/thunderbird-i18n-10.0.12/sk.xpi) = ccdafe5cfc51715ce2dcc0f496554656a16a26ab3ded3aa9888a1cea87343cd4 -SIZE (xpi/thunderbird-i18n-10.0.12/sk.xpi) = 425030 -SHA256 (xpi/thunderbird-i18n-10.0.12/sl.xpi) = 1437078e9486244904e0368fe99f3cde58d67a6261d3bebaa3d41f4fa40f27b4 -SIZE (xpi/thunderbird-i18n-10.0.12/sl.xpi) = 410432 -SHA256 (xpi/thunderbird-i18n-10.0.12/sq.xpi) = 2a4747afc1667b437de4628ca305fc71ca4b4a33c7566fa8d31dc139c10fb37c -SIZE (xpi/thunderbird-i18n-10.0.12/sq.xpi) = 360481 -SHA256 (xpi/thunderbird-i18n-10.0.12/sv-SE.xpi) = 5699c1117ebb00fb247f13a9ce1b75b24e7126f826d7e26cce2114b97560db66 -SIZE (xpi/thunderbird-i18n-10.0.12/sv-SE.xpi) = 478282 -SHA256 (xpi/thunderbird-i18n-10.0.12/ta-LK.xpi) = 533ed4e1ae373ce6cf07ee0773717117ea4bccb2e7eb7242d352f227de9e57fa -SIZE (xpi/thunderbird-i18n-10.0.12/ta-LK.xpi) = 475719 -SHA256 (xpi/thunderbird-i18n-10.0.12/tr.xpi) = 1825b73858ffeec3e48b1c46429c9ee3a1f205d878942cbd8664b0e861beecef -SIZE (xpi/thunderbird-i18n-10.0.12/tr.xpi) = 418210 -SHA256 (xpi/thunderbird-i18n-10.0.12/uk.xpi) = 49deb8c09c042e6021dce36135627dc8e461c752a26bb7fd43301a936b1c9fc9 -SIZE (xpi/thunderbird-i18n-10.0.12/uk.xpi) = 463925 -SHA256 (xpi/thunderbird-i18n-10.0.12/zh-TW.xpi) = 3baa27565d941d5ab34e3b0cb4275778aca577a3d2ac58f39852505ad414d203 -SIZE (xpi/thunderbird-i18n-10.0.12/zh-TW.xpi) = 431828 Index: mail/thunderbird-esr-i18n/pkg-descr =================================================================== --- mail/thunderbird-esr-i18n/pkg-descr (revision 315699) +++ mail/thunderbird-esr-i18n/pkg-descr (working copy) @@ -1,3 +0,0 @@ -Language packs for Thunderbird - -WWW: http://www.mozilla.org/projects/l10n/ Index: security/nss/Makefile =================================================================== --- security/nss/Makefile (revision 315699) +++ security/nss/Makefile (working copy) @@ -22,11 +22,11 @@ USE_LDCONFIG= ${PREFIX}/lib/nss USE_GMAKE= yes USE_PERL5_BUILD=yes -MAKE_ENV= BSD_LDOPTS="${PTHREAD_LIBS} -L${LOCALBASE}/lib" \ +MAKE_ENV= LIBRARY_PATH="${LOCALBASE}/lib" \ SQLITE_INCLUDE_DIR="${LOCALBASE}/include" \ NSS_ENABLE_ECC=1 NSS_USE_SYSTEM_SQLITE=1 ALL_TARGET= nss_build_all -CFLAGS+= -I${LOCALBASE}/include/nspr -L${LOCALBASE}/lib +CFLAGS+= -I${LOCALBASE}/include/nspr SUB_FILES= nss-config nss.pc SUB_LIST= MAJOR_VERSION=${PORTVERSION:R:R} \ @@ -55,14 +55,7 @@ .if ${ARCH} == amd64 USE_BINUTILS= # intel-gcm.s CFLAGS+= -B${LOCALBASE}/bin -.if defined(WITH_CLANG_IS_CC) || ${CC:Mcc} && ${OSVERSION} > 1000023 -EXTRA_PATCHES+= ${FILESDIR}/extra-bug835050 .endif -.if ${CC:Mcc} && (${OSVERSION} >= 800000 && ${OSVERSION} < 802503 \ - || ${OSVERSION} < 704101) -USE_GCC?= yes # -mssse3 -.endif -.endif check regression-test test: cd ${WRKSRC}/tests; \ @@ -79,8 +72,6 @@ fi post-patch: - @${REINPLACE_CMD} -e "s|-pthread|${PTHREAD_LIBS}|g" \ - ${WRKSRC:H:H}/security/coreconf/FreeBSD.mk @${REINPLACE_CMD} '/NSS_DEFAULT_SYSTEM/s,/etc,${PREFIX}&,' \ ${WRKSRC}/lib/sysinit/nsssysinit.c @cd ${WRKSRC} && \ Index: security/nss/files/extra-bug835050 =================================================================== --- security/nss/files/extra-bug835050 (revision 315699) +++ security/nss/files/extra-bug835050 (working copy) @@ -1,10 +0,0 @@ ---- lib/freebl/Makefile~ -+++ lib/freebl/Makefile -@@ -659,7 +659,5 @@ $(OBJDIR)/$(PROG_PREFIX)intel-gcm-wrap$( - # symbolic names to registers, for example, - # .set Htbl, %rdi - # So we can't use Clang's integrated assembler with intel-gcm.s. --ifneq (,$(findstring clang,$(AS))) - $(OBJDIR)/$(PROG_PREFIX)intel-gcm$(OBJ_SUFFIX): ASFLAGS += -no-integrated-as - endif --endif Index: security/nss/files/patch-..::coreconf::FreeBSD.mk =================================================================== --- security/nss/files/patch-..::coreconf::FreeBSD.mk (revision 315699) +++ security/nss/files/patch-..::coreconf::FreeBSD.mk (working copy) @@ -27,13 +27,7 @@ OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -Wno-switch -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK -@@ -65,20 +80,20 @@ - USE_PTHREADS = 1 - DEFINES += -D_THREAD_SAFE -D_REENTRANT - OS_LIBS += -pthread --DSO_LDOPTS += -pthread -+DSO_LDOPTS += $(BSD_LDOPTS) - endif +@@ -70,15 +85,15 @@ ARCH = freebsd Index: security/nss/files/patch-bug856300 =================================================================== --- security/nss/files/patch-bug856300 (revision 0) +++ security/nss/files/patch-bug856300 (working copy) @@ -0,0 +1,11 @@ +--- lib/freebl/Makefile~ ++++ lib/freebl/Makefile +@@ -659,7 +659,7 @@ $(OBJDIR)/$(PROG_PREFIX)intel-gcm-wrap$( + # symbolic names to registers, for example, + # .set Htbl, %rdi + # So we can't use Clang's integrated assembler with intel-gcm.s. +-ifneq (,$(findstring clang,$(AS))) ++ifneq (,$(findstring clang,$(shell $(AS) -v 2>&1))) + $(OBJDIR)/$(PROG_PREFIX)intel-gcm$(OBJ_SUFFIX): ASFLAGS += -no-integrated-as + endif + endif Property changes on: security/nss/files/patch-bug856300 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/firefox/Makefile =================================================================== --- www/firefox/Makefile (revision 315699) +++ www/firefox/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox -DISTVERSION= 19.0.2 +DISTVERSION= 20.0 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= ${MASTER_SITE_MOZILLA} @@ -13,7 +13,7 @@ COMMENT= Web browser based on the browser portion of Mozilla BUILD_DEPENDS= nspr>=4.9.4:${PORTSDIR}/devel/nspr \ - nss>=3.14.1:${PORTSDIR}/security/nss \ + nss>=3.14.3:${PORTSDIR}/security/nss \ sqlite3>=3.7.14.1:${PORTSDIR}/databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \ cairo>=1.10.2_1,1:${PORTSDIR}/graphics/cairo \ @@ -57,17 +57,6 @@ WRKSRC:= ${WRKDIR}/mozilla-release -.if ${ARCH} == amd64 -CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} -.elif ${ARCH} == powerpc64 -.if ${OSVERSION} < 900033 -BROKEN= Needs binutils 2.17.50 to build -.else -MOZ_EXPORT+= UNAME_m="powerpc64" -CFLAGS+= -mminimal-toc -.endif -.endif - .if ${PORT_OPTIONS:MPGO} USE_GCC?= yes USE_DISPLAY= yes @@ -102,6 +91,7 @@ post-patch: @${REINPLACE_CMD} -e '/MOZPNG/s/=[0-9]*/=10511/' \ + -e '/^SQLITE_VERSION/s/=.*/=3.7.14.1/' \ ${WRKSRC}/configure.in @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/browser/app/nsBrowserApp.cpp Index: www/firefox/Makefile.options =================================================================== --- www/firefox/Makefile.options (revision 315699) +++ www/firefox/Makefile.options (working copy) @@ -8,6 +8,7 @@ OPTIONS_SINGLE_AUDIO= ALSA OSS PULSEAUDIO ENIGMAIL_DESC?= Enigmail extension +GIO_DESC?= GIO for file I/O # move to bsd.options.desc.mk GNOMEUI_DESC?= libgnomeui support module LIBPROXY_DESC?= Proxy support via libproxy LIGHTNING_DESC?= Calendar extension Index: www/firefox/distinfo =================================================================== --- www/firefox/distinfo (revision 315699) +++ www/firefox/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (firefox-19.0.2.source.tar.bz2) = f6850dbdaf63a67a184b3b23267619750981f291834fe8c04df9cea826a57d71 -SIZE (firefox-19.0.2.source.tar.bz2) = 99155868 +SHA256 (firefox-20.0.source.tar.bz2) = 69818444915d3002a0d15583d47bc86fcf5027b53fab2a8a91ae18a7bfa20577 +SIZE (firefox-20.0.source.tar.bz2) = 100311453 Index: www/firefox/files/patch-alsapulse =================================================================== --- www/firefox/files/patch-alsapulse (revision 315699) +++ www/firefox/files/patch-alsapulse (working copy) @@ -1,122 +0,0 @@ -diff --git configure.in configure.in -index 5980b76..11f5f77 100644 ---- configure.in -+++ configure.in -@@ -5618,11 +5618,25 @@ dnl ======================================================== - - dnl If using sydneyaudio with Linux, ensure that the alsa library is available - if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux"; then -+ MOZ_ALSA=1 -+fi -+ -+MOZ_ARG_ENABLE_BOOL(alsa, -+[ --enable-alsa Enable Alsa support (default on Linux)], -+MOZ_ALSA=1, -+MOZ_ALSA=) -+ -+if test -n "$MOZ_ALSA"; then -+ AC_DEFINE(MOZ_CUBEB) - PKG_CHECK_MODULES(MOZ_ALSA, alsa, , - [echo "$MOZ_ALSA_PKG_ERRORS" - AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])]) - fi - -+AC_SUBST(MOZ_ALSA) -+AC_SUBST(MOZ_ALSA_CFLAGS) -+AC_SUBST(MOZ_ALSA_LIBS) -+ - dnl ======================================================== - dnl = Enable PulseAudio - dnl ======================================================== -@@ -8633,8 +8647,6 @@ AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT) - AC_SUBST(MOZ_VP8_ENCODER) - AC_SUBST(MOZ_VP8) - AC_SUBST(MOZ_OGG) --AC_SUBST(MOZ_ALSA_LIBS) --AC_SUBST(MOZ_ALSA_CFLAGS) - AC_SUBST(VPX_AS) - AC_SUBST(VPX_ASFLAGS) - AC_SUBST(VPX_DASH_C_FLAG) -diff --git media/libcubeb/src/Makefile.in media/libcubeb/src/Makefile.in -index 5ab4dd8..c8df26f 100644 ---- media/libcubeb/src/Makefile.in -+++ media/libcubeb/src/Makefile.in -@@ -24,10 +24,6 @@ endif - - ifeq ($(OS_TARGET),Android) - # No Android implementation of libcubeb yet. --else ifeq ($(OS_TARGET),Linux) --CSRCS = \ -- cubeb_alsa.c \ -- $(NULL) - endif - - ifeq ($(OS_TARGET),Darwin) -@@ -42,6 +38,12 @@ CSRCS = \ - $(NULL) - endif - -+ifdef MOZ_ALSA -+CSRCS = \ -+ cubeb_alsa.c \ -+ $(NULL) -+endif -+ - ifdef MOZ_PULSEAUDIO - CSRCS = \ - cubeb_pulse.c \ -diff --git media/libsydneyaudio/src/Makefile.in media/libsydneyaudio/src/Makefile.in -index 8dda8ce..b19641d 100644 ---- media/libsydneyaudio/src/Makefile.in -+++ media/libsydneyaudio/src/Makefile.in -@@ -30,10 +30,6 @@ else ifeq ($(MOZ_WIDGET_TOOLKIT),android) - CSRCS = \ - sydney_audio_android.c \ - $(NULL) --else ifeq ($(OS_ARCH),Linux) --CSRCS = \ -- sydney_audio_alsa.c \ -- $(NULL) - endif - - ifeq ($(OS_ARCH),WINNT) -@@ -68,6 +64,18 @@ CSRCS = \ - $(NULL) - endif - -+ifdef MOZ_ALSA -+CSRCS = \ -+ sydney_audio_alsa.c \ -+ $(NULL) -+endif -+ -+ifdef MOZ_PULSEAUDIO -+CSRCS = \ -+ sydney_audio_pulseaudio.c \ -+ $(NULL) -+endif -+ - ifeq ($(OS_ARCH),WINNT) - OS_LIBS += winmm.lib - endif -diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 43384e9..e46a6e3 100644 ---- toolkit/library/Makefile.in -+++ toolkit/library/Makefile.in -@@ -370,14 +370,11 @@ endif - - EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib) - --ifdef MOZ_SYDNEYAUDIO --ifeq ($(OS_ARCH),Linux) -+ifneq (,$(MOZ_CUBEB)$(MOZ_SYDNEYAUDIO)) -+ifdef MOZ_ALSA - EXTRA_DSO_LDOPTS += $(MOZ_ALSA_LIBS) - endif --endif -- - ifdef MOZ_PULSEAUDIO --ifdef MOZ_CUBEB - EXTRA_DSO_LDOPTS += $(MOZ_PULSEAUDIO_LIBS) - endif - endif Index: www/firefox/files/patch-browser-app-nsBrowserApp.cpp =================================================================== --- www/firefox/files/patch-browser-app-nsBrowserApp.cpp (revision 315699) +++ www/firefox/files/patch-browser-app-nsBrowserApp.cpp (working copy) @@ -1,10 +1,10 @@ --- browser/app/nsBrowserApp.cpp~ +++ browser/app/nsBrowserApp.cpp -@@ -197,6 +197,7 @@ int main(int argc, char* argv[]) +@@ -334,6 +334,7 @@ int main(int argc, char* argv[]) TriggerQuirks(); #endif + setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko19:%%LOCALBASE%%/lib/npapi/symlinks/firefox", 0); - nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath); - if (NS_FAILED(rv)) { - Output("Couldn't calculate the application directory.\n"); + int gotCounters; + #if defined(XP_UNIX) + struct rusage initialRUsage; Index: www/firefox/files/patch-bug780432 =================================================================== --- www/firefox/files/patch-bug780432 (revision 0) +++ www/firefox/files/patch-bug780432 (working copy) @@ -0,0 +1,17 @@ +diff --git media/libsydneyaudio/src/Makefile.in media/libsydneyaudio/src/Makefile.in +index 8dda8ce..b19641d 100644 +--- media/libsydneyaudio/src/Makefile.in ++++ media/libsydneyaudio/src/Makefile.in +@@ -68,6 +68,12 @@ ifdef MOZ_ALSA + $(NULL) + endif + ++ifdef MOZ_PULSEAUDIO ++CSRCS = \ ++ sydney_audio_pulseaudio.c \ ++ $(NULL) ++endif ++ + ifeq ($(OS_ARCH),WINNT) + OS_LIBS += winmm.lib + endif Property changes on: www/firefox/files/patch-bug780432 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/firefox/files/patch-bug787804 =================================================================== --- www/firefox/files/patch-bug787804 (revision 315699) +++ www/firefox/files/patch-bug787804 (working copy) @@ -1,3557 +0,0 @@ -commit 74997f1 -Author: Jan Varga -Date: Mon Dec 17 20:25:10 2012 +0100 - - Bug 787804 - Rewrite quota handling (eliminate test_quota.c). r=bent,asuth,vladan ---- - db/sqlite3/README.MOZILLA | 4 +- - db/sqlite3/src/sqlite.def | 1 + - db/sqlite3/src/test_quota.c | 2001 -------------------- - db/sqlite3/src/test_quota.h | 274 --- - dom/Makefile.in | 1 + - dom/dom-config.mk | 1 + - dom/file/FileStreamWrappers.cpp | 11 - - dom/file/LockedFile.cpp | 8 +- - dom/file/nsIFileStorage.h | 40 +- - dom/indexedDB/FileManager.cpp | 33 +- - dom/indexedDB/FileManager.h | 20 +- - dom/indexedDB/FileStream.cpp | 321 ---- - dom/indexedDB/FileStream.h | 140 -- - dom/indexedDB/IDBDatabase.cpp | 6 + - dom/indexedDB/IDBFactory.cpp | 28 +- - dom/indexedDB/IDBFactory.h | 8 +- - dom/indexedDB/IDBFileHandle.cpp | 25 +- - dom/indexedDB/IDBObjectStore.cpp | 10 +- - dom/indexedDB/IDBTransaction.cpp | 3 +- - dom/indexedDB/IndexedDatabaseInlines.h | 13 + - dom/indexedDB/IndexedDatabaseManager.cpp | 162 +- - dom/indexedDB/IndexedDatabaseManager.h | 11 +- - dom/indexedDB/Makefile.in | 2 - - dom/indexedDB/OpenDatabaseHelper.cpp | 104 +- - dom/indexedDB/OpenDatabaseHelper.h | 12 +- - dom/indexedDB/nsIStandardFileStream.idl | 60 - - dom/indexedDB/test/Makefile.in | 2 + - dom/indexedDB/test/file.js | 21 +- - dom/indexedDB/test/test_file_quota.html | 14 +- - dom/indexedDB/test/test_filehandle_quota.html | 5 +- - dom/quota/FileStreams.cpp | 123 ++ - dom/quota/FileStreams.h | 115 ++ - dom/quota/Makefile.in | 33 + - dom/quota/QuotaCommon.h | 23 + - dom/quota/QuotaManager.cpp | 294 +++ - dom/quota/QuotaManager.h | 147 ++ - layout/build/Makefile.in | 1 + - netwerk/base/src/Makefile.in | 1 + - netwerk/base/src/nsFileStreams.cpp | 103 +- - netwerk/base/src/nsFileStreams.h | 12 +- - storage/public/Makefile.in | 1 - - storage/public/mozIStorageService.idl | 13 +- - .../public/mozIStorageServiceQuotaManagement.idl | 99 - - storage/public/storage.h | 1 - - storage/src/TelemetryVFS.cpp | 35 +- - storage/src/mozStorageConnection.cpp | 85 +- - storage/src/mozStorageConnection.h | 27 +- - storage/src/mozStorageService.cpp | 168 +- - storage/src/mozStorageService.h | 3 - - toolkit/toolkit-makefiles.sh | 1 + - 50 files changed, 1239 insertions(+), 3387 deletions(-) - -diff --git dom/Makefile.in dom/Makefile.in -index 672e065..47cd253 100644 ---- dom/Makefile.in -+++ dom/Makefile.in -@@ -58,6 +58,7 @@ PARALLEL_DIRS += \ - media \ - messages \ - power \ -+ quota \ - settings \ - sms \ - mms \ -diff --git dom/dom-config.mk dom/dom-config.mk -index d0f46cc..1cf57ed 100644 ---- dom/dom-config.mk -+++ dom/dom-config.mk -@@ -8,6 +8,7 @@ DOM_SRCDIRS = \ - dom/encoding \ - dom/file \ - dom/power \ -+ dom/quota \ - dom/media \ - dom/network/src \ - dom/settings \ -diff --git dom/file/FileStreamWrappers.cpp dom/file/FileStreamWrappers.cpp -index 2283266..c4cf102 100644 ---- dom/file/FileStreamWrappers.cpp -+++ dom/file/FileStreamWrappers.cpp -@@ -8,7 +8,6 @@ - - #include "nsIFileStorage.h" - #include "nsISeekableStream.h" --#include "nsIStandardFileStream.h" - #include "mozilla/Attributes.h" - - #include "FileHelper.h" -@@ -246,16 +245,6 @@ FileOutputStreamWrapper::Close() - nsresult rv = NS_OK; - - if (!mFirstTime) { -- // We must flush buffers of the stream on the same thread on which we wrote -- // some data. -- nsCOMPtr sstream = do_QueryInterface(mFileStream); -- if (sstream) { -- rv = sstream->FlushBuffers(); -- if (NS_FAILED(rv)) { -- NS_WARNING("Failed to flush buffers of the stream!"); -- } -- } -- - NS_ASSERTION(PR_GetCurrentThread() == mWriteThread, - "Unsetting thread locals on wrong thread!"); - mFileHelper->mFileStorage->UnsetThreadLocals(); -diff --git dom/file/LockedFile.cpp dom/file/LockedFile.cpp -index 0fca730..926df91 100644 ---- dom/file/LockedFile.cpp -+++ dom/file/LockedFile.cpp -@@ -953,10 +953,10 @@ FinishHelper::Run() - } - - for (uint32_t index = 0; index < mParallelStreams.Length(); index++) { -- nsCOMPtr ostream = -+ nsCOMPtr stream = - do_QueryInterface(mParallelStreams[index]); - -- if (NS_FAILED(ostream->Close())) { -+ if (NS_FAILED(stream->Close())) { - NS_WARNING("Failed to close stream!"); - } - -@@ -964,9 +964,9 @@ FinishHelper::Run() - } - - if (mStream) { -- nsCOMPtr ostream = do_QueryInterface(mStream); -+ nsCOMPtr stream = do_QueryInterface(mStream); - -- if (NS_FAILED(ostream->Close())) { -+ if (NS_FAILED(stream->Close())) { - NS_WARNING("Failed to close stream!"); - } - -diff --git dom/file/nsIFileStorage.h dom/file/nsIFileStorage.h -index 92bb608..e985f0a 100644 ---- dom/file/nsIFileStorage.h -+++ dom/file/nsIFileStorage.h -@@ -10,14 +10,17 @@ - #include "nsISupports.h" - - #define NS_FILESTORAGE_IID \ -- {0xbba9c2ff, 0x85c9, 0x47c1, \ -- { 0xaf, 0xce, 0x0a, 0x7e, 0x6f, 0x21, 0x50, 0x95 } } -+ {0xa0801944, 0x2f1c, 0x4203, \ -+ { 0x9c, 0xaa, 0xaa, 0x47, 0xe0, 0x0c, 0x67, 0x92 } } - - class nsIFileStorage : public nsISupports - { - public: - NS_DECLARE_STATIC_IID_ACCESSOR(NS_FILESTORAGE_IID) - -+ virtual const nsACString& -+ StorageOrigin() = 0; -+ - virtual nsISupports* - StorageId() = 0; - -@@ -36,20 +39,23 @@ public: - - NS_DEFINE_STATIC_IID_ACCESSOR(nsIFileStorage, NS_FILESTORAGE_IID) - --#define NS_DECL_NSIFILESTORAGE \ -- virtual nsISupports* \ -- StorageId(); \ -- \ -- virtual bool \ -- IsStorageInvalidated(); \ -- \ -- virtual bool \ -- IsStorageShuttingDown(); \ -- \ -- virtual void \ -- SetThreadLocals(); \ -- \ -- virtual void \ -- UnsetThreadLocals(); -+#define NS_DECL_NSIFILESTORAGE \ -+ virtual const nsACString& \ -+ StorageOrigin() MOZ_OVERRIDE; \ -+ \ -+ virtual nsISupports* \ -+ StorageId() MOZ_OVERRIDE; \ -+ \ -+ virtual bool \ -+ IsStorageInvalidated() MOZ_OVERRIDE; \ -+ \ -+ virtual bool \ -+ IsStorageShuttingDown() MOZ_OVERRIDE; \ -+ \ -+ virtual void \ -+ SetThreadLocals() MOZ_OVERRIDE; \ -+ \ -+ virtual void \ -+ UnsetThreadLocals() MOZ_OVERRIDE; - - #endif // nsIFileStorage_h__ -diff --git dom/indexedDB/FileManager.cpp dom/indexedDB/FileManager.cpp -index 9db56e8..4ed6e9e 100644 ---- dom/indexedDB/FileManager.cpp -+++ dom/indexedDB/FileManager.cpp -@@ -7,8 +7,8 @@ - #include "FileManager.h" - - #include "mozIStorageConnection.h" --#include "mozIStorageServiceQuotaManagement.h" - #include "mozIStorageStatement.h" -+#include "nsIInputStream.h" - #include "nsISimpleEnumerator.h" - - #include "mozStorageCID.h" -@@ -18,6 +18,8 @@ - #include "IndexedDatabaseManager.h" - #include "OpenDatabaseHelper.h" - -+#include "IndexedDatabaseInlines.h" -+ - #define JOURNAL_DIRECTORY_NAME "journals" - - USING_INDEXEDDB_NAMESPACE -@@ -262,13 +264,11 @@ FileManager::GetFileForId(nsIFile* aDirectory, int64_t aId) - - // static - nsresult --FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, -- nsIFile* aDirectory, -+FileManager::InitDirectory(nsIFile* aDirectory, - nsIFile* aDatabaseFile, -- FactoryPrivilege aPrivilege) -+ const nsACString& aOrigin) - { - NS_ASSERTION(!NS_IsMainThread(), "Wrong thread!"); -- NS_ASSERTION(aService, "Null service!"); - NS_ASSERTION(aDirectory, "Null directory!"); - NS_ASSERTION(aDatabaseFile, "Null database file!"); - -@@ -310,8 +310,8 @@ FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, - - if (hasElements) { - nsCOMPtr connection; -- rv = OpenDatabaseHelper::CreateDatabaseConnection( -- NullString(), aDatabaseFile, aDirectory, getter_AddRefs(connection)); -+ rv = OpenDatabaseHelper::CreateDatabaseConnection(aDatabaseFile, -+ aDirectory, NullString(), aOrigin, getter_AddRefs(connection)); - NS_ENSURE_SUCCESS(rv, rv); - - mozStorageTransaction transaction(connection, false); -@@ -377,12 +377,17 @@ FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, - } - } - -- if (aPrivilege == Chrome) { -- return NS_OK; -- } -+ return NS_OK; -+} -+ -+// static -+nsresult -+FileManager::GetUsage(nsIFile* aDirectory, uint64_t* aUsage) -+{ -+ uint64_t usage = 0; - - nsCOMPtr entries; -- rv = aDirectory->GetDirectoryEntries(getter_AddRefs(entries)); -+ nsresult rv = aDirectory->GetDirectoryEntries(getter_AddRefs(entries)); - NS_ENSURE_SUCCESS(rv, rv); - - bool hasMore; -@@ -402,9 +407,13 @@ FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, - continue; - } - -- rv = aService->UpdateQuotaInformationForFile(file); -+ int64_t fileSize; -+ rv = file->GetFileSize(&fileSize); - NS_ENSURE_SUCCESS(rv, rv); -+ -+ IncrementUsage(&usage, uint64_t(fileSize)); - } - -+ *aUsage = usage; - return NS_OK; - } -diff --git dom/indexedDB/FileManager.h dom/indexedDB/FileManager.h -index 2c72d0a..370d4a8 100644 ---- dom/indexedDB/FileManager.h -+++ dom/indexedDB/FileManager.h -@@ -24,10 +24,10 @@ class FileManager - friend class FileInfo; - - public: -- FileManager(const nsACString& aOrigin, -+ FileManager(const nsACString& aOrigin, FactoryPrivilege aPrivilege, - const nsAString& aDatabaseName) -- : mOrigin(aOrigin), mDatabaseName(aDatabaseName), mLastFileId(0), -- mInvalidated(false) -+ : mOrigin(aOrigin), mPrivilege(aPrivilege), mDatabaseName(aDatabaseName), -+ mLastFileId(0), mInvalidated(false) - { } - - ~FileManager() -@@ -40,6 +40,11 @@ public: - return mOrigin; - } - -+ const FactoryPrivilege& Privilege() const -+ { -+ return mPrivilege; -+ } -+ - const nsAString& DatabaseName() const - { - return mDatabaseName; -@@ -68,12 +73,15 @@ public: - static already_AddRefed GetFileForId(nsIFile* aDirectory, - int64_t aId); - -- static nsresult InitDirectory(mozIStorageServiceQuotaManagement* aService, -- nsIFile* aDirectory, nsIFile* aDatabaseFile, -- FactoryPrivilege aPrivilege); -+ static nsresult InitDirectory(nsIFile* aDirectory, -+ nsIFile* aDatabaseFile, -+ const nsACString& aOrigin); -+ -+ static nsresult GetUsage(nsIFile* aDirectory, uint64_t* aUsage); - - private: - nsCString mOrigin; -+ FactoryPrivilege mPrivilege; - nsString mDatabaseName; - - nsString mDirectoryPath; -diff --git dom/indexedDB/FileStream.cpp dom/indexedDB/FileStream.cpp -deleted file mode 100644 -index dddf5d5..0000000 ---- dom/indexedDB/FileStream.cpp -+++ /dev/null -@@ -1,321 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this file, -- * You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#include "FileStream.h" -- --#include "nsIFile.h" -- --#include "nsThreadUtils.h" --#include "test_quota.h" -- --USING_INDEXEDDB_NAMESPACE -- --NS_IMPL_THREADSAFE_ADDREF(FileStream) --NS_IMPL_THREADSAFE_RELEASE(FileStream) -- --NS_INTERFACE_MAP_BEGIN(FileStream) -- NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIStandardFileStream) -- NS_INTERFACE_MAP_ENTRY(nsISeekableStream) -- NS_INTERFACE_MAP_ENTRY(nsIInputStream) -- NS_INTERFACE_MAP_ENTRY(nsIOutputStream) -- NS_INTERFACE_MAP_ENTRY(nsIStandardFileStream) -- NS_INTERFACE_MAP_ENTRY(nsIFileMetadata) --NS_INTERFACE_MAP_END -- --NS_IMETHODIMP --FileStream::Seek(int32_t aWhence, int64_t aOffset) --{ -- // TODO: Add support for 64 bit file sizes, bug 752431 -- NS_ENSURE_TRUE(aOffset <= INT32_MAX, NS_ERROR_INVALID_ARG); -- -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- int whence; -- switch (aWhence) { -- case nsISeekableStream::NS_SEEK_SET: -- whence = SEEK_SET; -- break; -- case nsISeekableStream::NS_SEEK_CUR: -- whence = SEEK_CUR; -- break; -- case nsISeekableStream::NS_SEEK_END: -- whence = SEEK_END; -- break; -- default: -- return NS_ERROR_INVALID_ARG; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fseek(mQuotaFile, aOffset, whence); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Tell(int64_t* aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- long rc = sqlite3_quota_ftell(mQuotaFile); -- NS_ENSURE_TRUE(rc >= 0, NS_BASE_STREAM_OSERROR); -- -- *aResult = rc; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::SetEOF() --{ -- int64_t pos; -- nsresult rv = Tell(&pos); -- NS_ENSURE_SUCCESS(rv, rv); -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_ftruncate(mQuotaFile, pos); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- -- --NS_IMETHODIMP --FileStream::Close() --{ -- CleanUpOpen(); -- -- if (mQuotaFile) { -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fclose(mQuotaFile); -- mQuotaFile = nullptr; -- -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- } -- -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Available(uint64_t* aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- long rc = sqlite3_quota_file_available(mQuotaFile); -- NS_ENSURE_TRUE(rc >= 0, NS_BASE_STREAM_OSERROR); -- -- *aResult = rc; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Read(char* aBuf, uint32_t aCount, uint32_t* aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- size_t bytesRead = sqlite3_quota_fread(aBuf, 1, aCount, mQuotaFile); -- if (bytesRead < aCount && sqlite3_quota_ferror(mQuotaFile)) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- *aResult = bytesRead; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, -- uint32_t aCount, uint32_t* aResult) --{ -- NS_NOTREACHED("Don't call me!"); -- return NS_ERROR_NOT_IMPLEMENTED; --} -- --NS_IMETHODIMP --FileStream::IsNonBlocking(bool *aNonBlocking) --{ -- *aNonBlocking = false; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Write(const char* aBuf, uint32_t aCount, uint32_t *aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- size_t bytesWritten = sqlite3_quota_fwrite(aBuf, 1, aCount, mQuotaFile); -- if (bytesWritten < aCount) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- *aResult = bytesWritten; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Flush() --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fflush(mQuotaFile, 1); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::WriteFrom(nsIInputStream *inStr, uint32_t count, uint32_t *_retval) --{ -- return NS_ERROR_NOT_IMPLEMENTED; --} -- --NS_IMETHODIMP --FileStream::WriteSegments(nsReadSegmentFun reader, void * closure, uint32_t count, uint32_t *_retval) --{ -- NS_NOTREACHED("Don't call me!"); -- return NS_ERROR_NOT_IMPLEMENTED; --} -- --NS_IMETHODIMP --FileStream::Init(nsIFile* aFile, const nsAString& aMode, int32_t aFlags) --{ -- NS_ASSERTION(!mQuotaFile && !mDeferredOpen, "Already initialized!"); -- -- nsresult rv = aFile->GetPath(mFilePath); -- NS_ENSURE_SUCCESS(rv, rv); -- -- mMode = aMode; -- mFlags = aFlags; -- -- if (mFlags & nsIStandardFileStream::FLAGS_DEFER_OPEN) { -- mDeferredOpen = true; -- return NS_OK; -- } -- -- return DoOpen(); --} -- --NS_IMETHODIMP --FileStream::GetSize(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- // TODO: Use sqlite3_quota_file_size() here, bug 760783 -- int64_t rc = sqlite3_quota_file_truesize(mQuotaFile); -- -- NS_ASSERTION(rc >= 0, "The file is not under quota management!"); -- -- *_retval = rc; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::GetLastModified(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- time_t mtime; -- int rc = sqlite3_quota_file_mtime(mQuotaFile, &mtime); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- *_retval = mtime * PR_MSEC_PER_SEC; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::FlushBuffers() --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fflush(mQuotaFile, 0); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- --nsresult --FileStream::DoOpen() --{ -- NS_ASSERTION(!mFilePath.IsEmpty(), "Must have a file path"); -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- quota_FILE* quotaFile = -- sqlite3_quota_fopen(NS_ConvertUTF16toUTF8(mFilePath).get(), -- NS_ConvertUTF16toUTF8(mMode).get()); -- -- CleanUpOpen(); -- -- if (!quotaFile) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- mQuotaFile = quotaFile; -- -- return NS_OK; --} -diff --git dom/indexedDB/FileStream.h dom/indexedDB/FileStream.h -deleted file mode 100644 -index 09648b1..0000000 ---- dom/indexedDB/FileStream.h -+++ /dev/null -@@ -1,140 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this file, -- * You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#ifndef mozilla_dom_indexeddb_filestream_h__ --#define mozilla_dom_indexeddb_filestream_h__ -- --#include "IndexedDatabase.h" -- --#include "nsIFileStreams.h" --#include "nsIInputStream.h" --#include "nsIOutputStream.h" --#include "nsISeekableStream.h" --#include "nsIStandardFileStream.h" -- --class nsIFile; --struct quota_FILE; -- --BEGIN_INDEXEDDB_NAMESPACE -- --class FileStream : public nsISeekableStream, -- public nsIInputStream, -- public nsIOutputStream, -- public nsIStandardFileStream, -- public nsIFileMetadata --{ --public: -- FileStream() -- : mFlags(0), -- mDeferredOpen(false), -- mQuotaFile(nullptr) -- { } -- -- virtual ~FileStream() -- { -- Close(); -- } -- -- NS_DECL_ISUPPORTS -- NS_DECL_NSISEEKABLESTREAM -- NS_DECL_NSISTANDARDFILESTREAM -- NS_DECL_NSIFILEMETADATA -- -- // nsIInputStream -- NS_IMETHOD -- Close(); -- -- NS_IMETHOD -- Available(uint64_t* _retval); -- -- NS_IMETHOD -- Read(char* aBuf, uint32_t aCount, uint32_t* _retval); -- -- NS_IMETHOD -- ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, uint32_t aCount, -- uint32_t* _retval); -- -- NS_IMETHOD -- IsNonBlocking(bool* _retval); -- -- // nsIOutputStream -- -- // Close() already declared -- -- NS_IMETHOD -- Flush(); -- -- NS_IMETHOD -- Write(const char* aBuf, uint32_t aCount, uint32_t* _retval); -- -- NS_IMETHOD -- WriteFrom(nsIInputStream* aFromStream, uint32_t aCount, uint32_t* _retval); -- -- NS_IMETHOD -- WriteSegments(nsReadSegmentFun aReader, void* aClosure, uint32_t aCount, -- uint32_t* _retval); -- -- // IsNonBlocking() already declared -- --protected: -- /** -- * Cleans up data prepared in Init. -- */ -- void -- CleanUpOpen() -- { -- mFilePath.Truncate(); -- mDeferredOpen = false; -- } -- -- /** -- * Open the file. This is called either from Init -- * or from DoPendingOpen (if FLAGS_DEFER_OPEN is used when initializing this -- * stream). The default behavior of DoOpen is to open the file and save the -- * file descriptor. -- */ -- virtual nsresult -- DoOpen(); -- -- /** -- * If there is a pending open, do it now. It's important for this to be -- * inlined since we do it in almost every stream API call. -- */ -- nsresult -- DoPendingOpen() -- { -- if (!mDeferredOpen) { -- return NS_OK; -- } -- -- return DoOpen(); -- } -- -- /** -- * Data we need to do an open. -- */ -- nsString mFilePath; -- nsString mMode; -- -- /** -- * Flags describing our behavior. See the IDL file for possible values. -- */ -- int32_t mFlags; -- -- /** -- * Whether we have a pending open (see FLAGS_DEFER_OPEN in the IDL file). -- */ -- bool mDeferredOpen; -- -- /** -- * File descriptor for opened file. -- */ -- quota_FILE* mQuotaFile; --}; -- --END_INDEXEDDB_NAMESPACE -- --#endif // mozilla_dom_indexeddb_filestream_h__ -diff --git dom/indexedDB/IDBDatabase.cpp dom/indexedDB/IDBDatabase.cpp -index 63500b0..8842daf 100644 ---- dom/indexedDB/IDBDatabase.cpp -+++ dom/indexedDB/IDBDatabase.cpp -@@ -779,6 +779,12 @@ IDBDatabase::Close() - return NS_OK; - } - -+const nsACString& -+IDBDatabase::StorageOrigin() -+{ -+ return Origin(); -+} -+ - nsISupports* - IDBDatabase::StorageId() - { -diff --git dom/indexedDB/IDBFactory.cpp dom/indexedDB/IDBFactory.cpp -index 1007df1..c1f573e 100644 ---- dom/indexedDB/IDBFactory.cpp -+++ dom/indexedDB/IDBFactory.cpp -@@ -253,8 +253,26 @@ IDBFactory::Create(ContentParent* aContentParent, - } - - // static -+already_AddRefed -+IDBFactory::GetDatabaseFileURL(nsIFile* aDatabaseFile, const nsACString& aOrigin) -+{ -+ nsCOMPtr uri; -+ nsresult rv = NS_NewFileURI(getter_AddRefs(uri), aDatabaseFile); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ nsCOMPtr fileUrl = do_QueryInterface(uri); -+ NS_ASSERTION(fileUrl, "This should always succeed!"); -+ -+ rv = fileUrl->SetQuery(NS_LITERAL_CSTRING("origin=") + aOrigin); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ return fileUrl.forget(); -+} -+ -+// static - already_AddRefed --IDBFactory::GetConnection(const nsAString& aDatabaseFilePath) -+IDBFactory::GetConnection(const nsAString& aDatabaseFilePath, -+ const nsACString& aOrigin) - { - NS_ASSERTION(IndexedDatabaseManager::IsMainProcess(), "Wrong process!"); - NS_ASSERTION(StringEndsWith(aDatabaseFilePath, NS_LITERAL_STRING(".sqlite")), -@@ -271,13 +289,15 @@ IDBFactory::GetConnection(const nsAString& aDatabaseFilePath) - NS_ENSURE_SUCCESS(rv, nullptr); - NS_ENSURE_TRUE(exists, nullptr); - -- nsCOMPtr ss = -+ nsCOMPtr dbFileUrl = GetDatabaseFileURL(dbFile, aOrigin); -+ NS_ENSURE_TRUE(dbFileUrl, nullptr); -+ -+ nsCOMPtr ss = - do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(ss, nullptr); - - nsCOMPtr connection; -- rv = ss->OpenDatabaseWithVFS(dbFile, NS_LITERAL_CSTRING("quota"), -- getter_AddRefs(connection)); -+ rv = ss->OpenDatabaseWithFileURL(dbFileUrl, getter_AddRefs(connection)); - NS_ENSURE_SUCCESS(rv, nullptr); - - // Turn on foreign key constraints and recursive triggers. -diff --git dom/indexedDB/IDBFactory.h dom/indexedDB/IDBFactory.h -index d5461f7..49dad42 100644 ---- dom/indexedDB/IDBFactory.h -+++ dom/indexedDB/IDBFactory.h -@@ -15,6 +15,8 @@ - #include "nsCycleCollectionParticipant.h" - - class nsIAtom; -+class nsIFile; -+class nsIFileURL; - class nsPIDOMWindow; - - namespace mozilla { -@@ -75,8 +77,12 @@ public: - static nsresult Create(ContentParent* aContentParent, - IDBFactory** aFactory); - -+ static already_AddRefed -+ GetDatabaseFileURL(nsIFile* aDatabaseFile, const nsACString& aOrigin); -+ - static already_AddRefed -- GetConnection(const nsAString& aDatabaseFilePath); -+ GetConnection(const nsAString& aDatabaseFilePath, -+ const nsACString& aOrigin); - - static nsresult - LoadDatabaseInformation(mozIStorageConnection* aConnection, -diff --git dom/indexedDB/IDBFileHandle.cpp dom/indexedDB/IDBFileHandle.cpp -index e0340ff..f71fd56 100644 ---- dom/indexedDB/IDBFileHandle.cpp -+++ dom/indexedDB/IDBFileHandle.cpp -@@ -6,15 +6,14 @@ - - #include "IDBFileHandle.h" - --#include "nsIStandardFileStream.h" -- - #include "mozilla/dom/file/File.h" -+#include "mozilla/dom/quota/FileStreams.h" - #include "nsDOMClassInfoID.h" - --#include "FileStream.h" - #include "IDBDatabase.h" - - USING_INDEXEDDB_NAMESPACE -+USING_QUOTA_NAMESPACE - - namespace { - -@@ -68,22 +67,22 @@ IDBFileHandle::Create(IDBDatabase* aDatabase, - already_AddRefed - IDBFileHandle::CreateStream(nsIFile* aFile, bool aReadOnly) - { -- nsRefPtr stream = new FileStream(); -+ const nsACString& origin = mFileStorage->StorageOrigin(); -+ -+ nsCOMPtr result; - -- nsString streamMode; - if (aReadOnly) { -- streamMode.AssignLiteral("rb"); -+ nsRefPtr stream = FileInputStream::Create( -+ origin, aFile, -1, -1, nsIFileInputStream::DEFER_OPEN); -+ result = NS_ISUPPORTS_CAST(nsIFileInputStream*, stream); - } - else { -- streamMode.AssignLiteral("r+b"); -+ nsRefPtr stream = FileStream::Create( -+ origin, aFile, -1, -1, nsIFileStream::DEFER_OPEN); -+ result = NS_ISUPPORTS_CAST(nsIFileStream*, stream); - } -+ NS_ENSURE_TRUE(result, nullptr); - -- nsresult rv = stream->Init(aFile, streamMode, -- nsIStandardFileStream::FLAGS_DEFER_OPEN); -- NS_ENSURE_SUCCESS(rv, nullptr); -- -- nsCOMPtr result = -- NS_ISUPPORTS_CAST(nsIStandardFileStream*, stream); - return result.forget(); - } - -diff --git dom/indexedDB/IDBObjectStore.cpp dom/indexedDB/IDBObjectStore.cpp -index 746d473..1f16d26 100644 ---- dom/indexedDB/IDBObjectStore.cpp -+++ dom/indexedDB/IDBObjectStore.cpp -@@ -17,6 +17,7 @@ - #include "mozilla/dom/ContentParent.h" - #include "mozilla/dom/StructuredCloneTags.h" - #include "mozilla/dom/ipc/Blob.h" -+#include "mozilla/dom/quota/FileStreams.h" - #include "mozilla/storage.h" - #include "nsContentUtils.h" - #include "nsDOMClassInfo.h" -@@ -27,10 +28,8 @@ - #include "nsServiceManagerUtils.h" - #include "nsThreadUtils.h" - #include "snappy/snappy.h" --#include "test_quota.h" - - #include "AsyncConnectionHelper.h" --#include "FileStream.h" - #include "IDBCursor.h" - #include "IDBEvents.h" - #include "IDBFileHandle.h" -@@ -51,6 +50,7 @@ - USING_INDEXEDDB_NAMESPACE - using namespace mozilla::dom; - using namespace mozilla::dom::indexedDB::ipc; -+using mozilla::dom::quota::FileOutputStream; - - namespace { - -@@ -2734,9 +2734,9 @@ AddHelper::DoDatabaseWork(mozIStorageConnection* aConnection) - nativeFile = fileManager->GetFileForId(directory, id); - NS_ENSURE_TRUE(nativeFile, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- nsRefPtr outputStream = new FileStream(); -- rv = outputStream->Init(nativeFile, NS_LITERAL_STRING("wb"), 0); -- NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ nsRefPtr outputStream = FileOutputStream::Create( -+ mObjectStore->Transaction()->Database()->Origin(), nativeFile); -+ NS_ENSURE_TRUE(outputStream, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - - rv = CopyData(inputStream, outputStream); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -diff --git dom/indexedDB/IDBTransaction.cpp dom/indexedDB/IDBTransaction.cpp -index fcef7cc..a5345e2 100644 ---- dom/indexedDB/IDBTransaction.cpp -+++ dom/indexedDB/IDBTransaction.cpp -@@ -352,7 +352,8 @@ IDBTransaction::GetOrCreateConnection(mozIStorageConnection** aResult) - - if (!mConnection) { - nsCOMPtr connection = -- IDBFactory::GetConnection(mDatabase->FilePath()); -+ IDBFactory::GetConnection(mDatabase->FilePath(), -+ mDatabase->Origin()); - NS_ENSURE_TRUE(connection, NS_ERROR_FAILURE); - - nsresult rv; -diff --git dom/indexedDB/IndexedDatabaseInlines.h dom/indexedDB/IndexedDatabaseInlines.h -index 62e65d6..f27d60c 100644 ---- dom/indexedDB/IndexedDatabaseInlines.h -+++ dom/indexedDB/IndexedDatabaseInlines.h -@@ -79,4 +79,17 @@ AppendConditionClause(const nsACString& aColumnName, - aResult += NS_LITERAL_CSTRING(" :") + aArgName; - } - -+inline void -+IncrementUsage(uint64_t* aUsage, uint64_t aDelta) -+{ -+ // Watch for overflow! -+ if ((UINT64_MAX - *aUsage) < aDelta) { -+ NS_WARNING("Usage exceeds the maximum!"); -+ *aUsage = UINT64_MAX; -+ } -+ else { -+ *aUsage += aDelta; -+ } -+} -+ - END_INDEXEDDB_NAMESPACE -diff --git dom/indexedDB/IndexedDatabaseManager.cpp dom/indexedDB/IndexedDatabaseManager.cpp -index e4ad647..88f09da 100644 ---- dom/indexedDB/IndexedDatabaseManager.cpp -+++ dom/indexedDB/IndexedDatabaseManager.cpp -@@ -22,6 +22,7 @@ - #include "nsITimer.h" - - #include "mozilla/dom/file/FileService.h" -+#include "mozilla/dom/quota/QuotaManager.h" - #include "mozilla/dom/TabContext.h" - #include "mozilla/LazyIdleThread.h" - #include "mozilla/Preferences.h" -@@ -36,7 +37,6 @@ - #include "nsThreadUtils.h" - #include "nsXPCOM.h" - #include "nsXPCOMPrivate.h" --#include "test_quota.h" - #include "xpcpublic.h" - - #include "AsyncConnectionHelper.h" -@@ -48,6 +48,8 @@ - #include "OpenDatabaseHelper.h" - #include "TransactionThreadPool.h" - -+#include "IndexedDatabaseInlines.h" -+ - // The amount of time, in milliseconds, that our IO thread will stay alive - // after the last event it processes. - #define DEFAULT_THREAD_TIMEOUT_MS 30000 -@@ -70,6 +72,7 @@ using namespace mozilla::services; - using namespace mozilla::dom; - using mozilla::Preferences; - using mozilla::dom::file::FileService; -+using mozilla::dom::quota::QuotaManager; - - static NS_DEFINE_CID(kDOMSOF_CID, NS_DOM_SCRIPT_OBJECT_FACTORY_CID); - -@@ -103,29 +106,6 @@ GetDatabaseBaseFilename(const nsAString& aFilename, - return true; - } - --class QuotaCallback MOZ_FINAL : public mozIStorageQuotaCallback --{ --public: -- NS_DECL_ISUPPORTS -- -- NS_IMETHOD -- QuotaExceeded(const nsACString& aFilename, -- int64_t aCurrentSizeLimit, -- int64_t aCurrentTotalSize, -- nsISupports* aUserData, -- int64_t* _retval) -- { -- if (IndexedDatabaseManager::QuotaIsLifted()) { -- *_retval = 0; -- return NS_OK; -- } -- -- return NS_ERROR_FAILURE; -- } --}; -- --NS_IMPL_THREADSAFE_ISUPPORTS1(QuotaCallback, mozIStorageQuotaCallback) -- - // Adds all databases in the hash to the given array. - template - PLDHashOperator -@@ -440,8 +420,8 @@ IndexedDatabaseManager::GetOrCreate() - NS_LITERAL_CSTRING("IndexedDB I/O"), - LazyIdleThread::ManualShutdown); - -- // We need one quota callback object to hand to SQLite. -- instance->mQuotaCallbackSingleton = new QuotaCallback(); -+ // Make sure that the quota manager is up. -+ NS_ENSURE_TRUE(QuotaManager::GetOrCreate(), nullptr); - - // Make a timer here to avoid potential failures later. We don't actually - // initialize the timer until shutdown. -@@ -996,37 +976,15 @@ IndexedDatabaseManager::EnsureOriginIsInitialized(const nsACString& aOrigin, - return NS_OK; - } - -- // First figure out the filename pattern we'll use. -- nsCOMPtr patternFile; -- rv = directory->Clone(getter_AddRefs(patternFile)); -- NS_ENSURE_SUCCESS(rv, rv); -- -- rv = patternFile->Append(NS_LITERAL_STRING("*")); -- NS_ENSURE_SUCCESS(rv, rv); -- -- nsString pattern; -- rv = patternFile->GetPath(pattern); -- NS_ENSURE_SUCCESS(rv, rv); -- -- // Now tell SQLite to start tracking this pattern for content. -- nsCOMPtr ss = -- do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID); -- NS_ENSURE_TRUE(ss, NS_ERROR_FAILURE); -- -- if (aPrivilege != Chrome) { -- rv = ss->SetQuotaForFilenamePattern(NS_ConvertUTF16toUTF8(pattern), -- GetIndexedDBQuotaMB() * 1024 * 1024, -- mQuotaCallbackSingleton, nullptr); -- NS_ENSURE_SUCCESS(rv, rv); -- } -- - // We need to see if there are any files in the directory already. If they - // are database files then we need to cleanup stored files (if it's needed) -- // and also tell SQLite about all of them. -+ // and also initialize the quota. - - nsAutoTArray subdirsToProcess; - nsAutoTArray , 20> unknownFiles; - -+ uint64_t usage = 0; -+ - nsTHashtable validSubdirs; - validSubdirs.Init(20); - -@@ -1068,20 +1026,28 @@ IndexedDatabaseManager::EnsureOriginIsInitialized(const nsACString& aOrigin, - continue; - } - -- nsCOMPtr fileManagerDirectory; -- rv = directory->Clone(getter_AddRefs(fileManagerDirectory)); -+ nsCOMPtr fmDirectory; -+ rv = directory->Clone(getter_AddRefs(fmDirectory)); - NS_ENSURE_SUCCESS(rv, rv); - -- rv = fileManagerDirectory->Append(dbBaseFilename); -+ rv = fmDirectory->Append(dbBaseFilename); - NS_ENSURE_SUCCESS(rv, rv); - -- rv = FileManager::InitDirectory(ss, fileManagerDirectory, file, -- aPrivilege); -+ rv = FileManager::InitDirectory(fmDirectory, file, aOrigin); - NS_ENSURE_SUCCESS(rv, rv); - - if (aPrivilege != Chrome) { -- rv = ss->UpdateQuotaInformationForFile(file); -+ uint64_t fileUsage; -+ rv = FileManager::GetUsage(fmDirectory, &fileUsage); - NS_ENSURE_SUCCESS(rv, rv); -+ -+ IncrementUsage(&usage, fileUsage); -+ -+ int64_t fileSize; -+ rv = file->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ IncrementUsage(&usage, uint64_t(fileSize)); - } - - validSubdirs.PutEntry(dbBaseFilename); -@@ -1117,12 +1083,39 @@ IndexedDatabaseManager::EnsureOriginIsInitialized(const nsACString& aOrigin, - } - } - -+ if (aPrivilege != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->InitQuotaForOrigin(aOrigin, GetIndexedDBQuotaMB(), usage); -+ } -+ - mInitializedOrigins.AppendElement(aOrigin); - - NS_ADDREF(*aDirectory = directory); - return NS_OK; - } - -+void -+IndexedDatabaseManager::UninitializeOriginsByPattern( -+ const nsACString& aPattern) -+{ -+#ifdef DEBUG -+ { -+ bool correctThread; -+ NS_ASSERTION(NS_SUCCEEDED(mIOThread->IsOnCurrentThread(&correctThread)) && -+ correctThread, -+ "Running on the wrong thread!"); -+ } -+#endif -+ -+ for (int32_t i = mInitializedOrigins.Length() - 1; i >= 0; i--) { -+ if (PatternMatchesOrigin(aPattern, mInitializedOrigins[i])) { -+ mInitializedOrigins.RemoveElementAt(i); -+ } -+ } -+} -+ - bool - IndexedDatabaseManager::QuotaIsLiftedInternal() - { -@@ -1250,16 +1243,14 @@ IndexedDatabaseManager::GetFileManager(const nsACString& aOrigin, - } - - void --IndexedDatabaseManager::AddFileManager(const nsACString& aOrigin, -- const nsAString& aDatabaseName, -- FileManager* aFileManager) -+IndexedDatabaseManager::AddFileManager(FileManager* aFileManager) - { - NS_ASSERTION(aFileManager, "Null file manager!"); - - nsTArray >* array; -- if (!mFileManagers.Get(aOrigin, &array)) { -+ if (!mFileManagers.Get(aFileManager->Origin(), &array)) { - array = new nsTArray >(); -- mFileManagers.Put(aOrigin, array); -+ mFileManagers.Put(aFileManager->Origin(), array); - } - - array->AppendElement(aFileManager); -@@ -1783,6 +1774,13 @@ OriginClearRunnable::DeleteFiles(IndexedDatabaseManager* aManager) - // correctly... - NS_ERROR("Failed to remove directory!"); - } -+ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->RemoveQuotaForPattern(mOriginOrPattern); -+ -+ aManager->UninitializeOriginsByPattern(mOriginOrPattern); - } - } - -@@ -1880,19 +1878,6 @@ IndexedDatabaseManager::AsyncUsageRunnable::Cancel() - } - } - --inline void --IncrementUsage(uint64_t* aUsage, uint64_t aDelta) --{ -- // Watch for overflow! -- if ((INT64_MAX - *aUsage) <= aDelta) { -- NS_WARNING("Database sizes exceed max we can report!"); -- *aUsage = INT64_MAX; -- } -- else { -- *aUsage += aDelta; -- } --} -- - nsresult - IndexedDatabaseManager::AsyncUsageRunnable::TakeShortcut() - { -@@ -2295,25 +2280,22 @@ IndexedDatabaseManager::AsyncDeleteFileRunnable::Run() - nsCOMPtr file = mFileManager->GetFileForId(directory, mFileId); - NS_ENSURE_TRUE(file, NS_ERROR_FAILURE); - -- nsString filePath; -- nsresult rv = file->GetPath(filePath); -- NS_ENSURE_SUCCESS(rv, rv); -+ nsresult rv; -+ int64_t fileSize; - -- int rc = sqlite3_quota_remove(NS_ConvertUTF16toUTF8(filePath).get()); -- if (rc != SQLITE_OK) { -- NS_WARNING("Failed to delete stored file!"); -- return NS_ERROR_FAILURE; -+ if (mFileManager->Privilege() != Chrome) { -+ rv = file->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); - } - -- // sqlite3_quota_remove won't actually remove anything if we're not tracking -- // the quota here. Manually remove the file if it exists. -- bool exists; -- rv = file->Exists(&exists); -- NS_ENSURE_SUCCESS(rv, rv); -+ rv = file->Remove(false); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); - -- if (exists) { -- rv = file->Remove(false); -- NS_ENSURE_SUCCESS(rv, rv); -+ if (mFileManager->Privilege() != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->DecreaseUsageForOrigin(mFileManager->Origin(), fileSize); - } - - directory = mFileManager->GetJournalDirectory(); -diff --git dom/indexedDB/IndexedDatabaseManager.h dom/indexedDB/IndexedDatabaseManager.h -index f9fbbf2..1ea5425 100644 ---- dom/indexedDB/IndexedDatabaseManager.h -+++ dom/indexedDB/IndexedDatabaseManager.h -@@ -23,7 +23,6 @@ - - #define INDEXEDDB_MANAGER_CONTRACTID "@mozilla.org/dom/indexeddb/manager;1" - --class mozIStorageQuotaCallback; - class nsIAtom; - class nsIFile; - class nsITimer; -@@ -134,6 +133,8 @@ public: - FactoryPrivilege aPrivilege, - nsIFile** aDirectory); - -+ void UninitializeOriginsByPattern(const nsACString& aPattern); -+ - // Determine if the quota is lifted for the Window the current thread is - // using. - static inline bool -@@ -172,9 +173,7 @@ public: - const nsAString& aDatabaseName); - - void -- AddFileManager(const nsACString& aOrigin, -- const nsAString& aDatabaseName, -- FileManager* aFileManager); -+ AddFileManager(FileManager* aFileManager); - - void InvalidateFileManagersForPattern(const nsACString& aPattern); - -@@ -502,10 +501,6 @@ private: - // A timer that gets activated at shutdown to ensure we close all databases. - nsCOMPtr mShutdownTimer; - -- // A single threadsafe instance of our quota callback. Created on the main -- // thread during GetOrCreate(). -- nsCOMPtr mQuotaCallbackSingleton; -- - // A list of all successfully initialized origins. This list isn't protected - // by any mutex but it is only ever touched on the IO thread. - nsTArray mInitializedOrigins; -diff --git dom/indexedDB/Makefile.in dom/indexedDB/Makefile.in -index fef0858..09d4853 100644 ---- dom/indexedDB/Makefile.in -+++ dom/indexedDB/Makefile.in -@@ -25,7 +25,6 @@ CPPSRCS = \ - DatabaseInfo.cpp \ - FileInfo.cpp \ - FileManager.cpp \ -- FileStream.cpp \ - IDBCursor.cpp \ - IDBDatabase.cpp \ - IDBEvents.cpp \ -@@ -93,7 +92,6 @@ XPIDLSRCS = \ - nsIIDBVersionChangeEvent.idl \ - nsIIDBOpenDBRequest.idl \ - nsIIndexedDatabaseManager.idl \ -- nsIStandardFileStream.idl \ - $(NULL) - - DIRS += ipc -diff --git dom/indexedDB/OpenDatabaseHelper.cpp dom/indexedDB/OpenDatabaseHelper.cpp -index e71cad4..4cd7f61 100644 ---- dom/indexedDB/OpenDatabaseHelper.cpp -+++ dom/indexedDB/OpenDatabaseHelper.cpp -@@ -8,11 +8,12 @@ - - #include "nsIFile.h" - -+#include "mozilla/dom/quota/QuotaManager.h" - #include "mozilla/storage.h" - #include "nsEscape.h" -+#include "nsNetUtil.h" - #include "nsThreadUtils.h" - #include "snappy/snappy.h" --#include "test_quota.h" - - #include "nsIBFCacheEntry.h" - #include "IDBEvents.h" -@@ -21,6 +22,7 @@ - - using namespace mozilla; - USING_INDEXEDDB_NAMESPACE -+USING_QUOTA_NAMESPACE - - namespace { - -@@ -1632,15 +1634,15 @@ OpenDatabaseHelper::DoDatabaseWork() - rv = dbFile->GetPath(mDatabaseFilePath); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- nsCOMPtr fileManagerDirectory; -- rv = dbDirectory->Clone(getter_AddRefs(fileManagerDirectory)); -+ nsCOMPtr fmDirectory; -+ rv = dbDirectory->Clone(getter_AddRefs(fmDirectory)); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = fileManagerDirectory->Append(filename); -+ rv = fmDirectory->Append(filename); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - - nsCOMPtr connection; -- rv = CreateDatabaseConnection(mName, dbFile, fileManagerDirectory, -+ rv = CreateDatabaseConnection(dbFile, fmDirectory, mName, mASCIIOrigin, - getter_AddRefs(connection)); - if (NS_FAILED(rv) && - NS_ERROR_GET_MODULE(rv) != NS_ERROR_MODULE_DOM_INDEXEDDB) { -@@ -1691,12 +1693,12 @@ OpenDatabaseHelper::DoDatabaseWork() - - nsRefPtr fileManager = mgr->GetFileManager(mASCIIOrigin, mName); - if (!fileManager) { -- fileManager = new FileManager(mASCIIOrigin, mName); -+ fileManager = new FileManager(mASCIIOrigin, mPrivilege, mName); - -- rv = fileManager->Init(fileManagerDirectory, connection); -+ rv = fileManager->Init(fmDirectory, connection); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- mgr->AddFileManager(mASCIIOrigin, mName, fileManager); -+ mgr->AddFileManager(fileManager); - } - - mFileManager = fileManager.forget(); -@@ -1707,23 +1709,26 @@ OpenDatabaseHelper::DoDatabaseWork() - // static - nsresult - OpenDatabaseHelper::CreateDatabaseConnection( -- const nsAString& aName, - nsIFile* aDBFile, -- nsIFile* aFileManagerDirectory, -+ nsIFile* aFMDirectory, -+ const nsAString& aName, -+ const nsACString& aOrigin, - mozIStorageConnection** aConnection) - { - NS_ASSERTION(IndexedDatabaseManager::IsMainProcess(), "Wrong process!"); - NS_ASSERTION(!NS_IsMainThread(), "Wrong thread!"); - -- NS_NAMED_LITERAL_CSTRING(quotaVFSName, "quota"); -+ nsCOMPtr dbFileUrl = -+ IDBFactory::GetDatabaseFileURL(aDBFile, aOrigin); -+ NS_ENSURE_TRUE(dbFileUrl, NS_ERROR_FAILURE); - -- nsCOMPtr ss = -+ nsCOMPtr ss = - do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(ss, NS_ERROR_FAILURE); - - nsCOMPtr connection; -- nsresult rv = ss->OpenDatabaseWithVFS(aDBFile, quotaVFSName, -- getter_AddRefs(connection)); -+ nsresult rv = -+ ss->OpenDatabaseWithFileURL(dbFileUrl, getter_AddRefs(connection)); - if (rv == NS_ERROR_FILE_CORRUPTED) { - // If we're just opening the database during origin initialization, then - // we don't want to erase any files. The failure here will fail origin -@@ -1737,21 +1742,20 @@ OpenDatabaseHelper::CreateDatabaseConnection( - NS_ENSURE_SUCCESS(rv, rv); - - bool exists; -- rv = aFileManagerDirectory->Exists(&exists); -+ rv = aFMDirectory->Exists(&exists); - NS_ENSURE_SUCCESS(rv, rv); - - if (exists) { - bool isDirectory; -- rv = aFileManagerDirectory->IsDirectory(&isDirectory); -+ rv = aFMDirectory->IsDirectory(&isDirectory); - NS_ENSURE_SUCCESS(rv, rv); - NS_ENSURE_TRUE(isDirectory, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = aFileManagerDirectory->Remove(true); -+ rv = aFMDirectory->Remove(true); - NS_ENSURE_SUCCESS(rv, rv); - } - -- rv = ss->OpenDatabaseWithVFS(aDBFile, quotaVFSName, -- getter_AddRefs(connection)); -+ rv = ss->OpenDatabaseWithFileURL(dbFileUrl, getter_AddRefs(connection)); - } - NS_ENSURE_SUCCESS(rv, rv); - -@@ -2347,6 +2351,8 @@ DeleteDatabaseHelper::DoDatabaseWork(mozIStorageConnection* aConnection) - { - NS_ASSERTION(!aConnection, "How did we get a connection here?"); - -+ const FactoryPrivilege& privilege = mOpenHelper->Privilege(); -+ - IndexedDatabaseManager* mgr = IndexedDatabaseManager::Get(); - NS_ASSERTION(mgr, "This should never fail!"); - -@@ -2372,59 +2378,57 @@ DeleteDatabaseHelper::DoDatabaseWork(mozIStorageConnection* aConnection) - rv = dbFile->Exists(&exists); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- int rc; -- - if (exists) { -- nsString dbFilePath; -- rv = dbFile->GetPath(dbFilePath); -- NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ int64_t fileSize; - -- rc = sqlite3_quota_remove(NS_ConvertUTF16toUTF8(dbFilePath).get()); -- if (rc != SQLITE_OK) { -- NS_WARNING("Failed to delete db file!"); -- return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; -+ if (privilege != Chrome) { -+ rv = dbFile->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - } - -- // sqlite3_quota_remove won't actually remove anything if we're not tracking -- // the quota here. Manually remove the file if it exists. -- rv = dbFile->Exists(&exists); -+ rv = dbFile->Remove(false); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- if (exists) { -- rv = dbFile->Remove(false); -- NS_ENSURE_SUCCESS(rv, rv); -+ if (privilege != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->DecreaseUsageForOrigin(mASCIIOrigin, fileSize); - } - } - -- nsCOMPtr fileManagerDirectory; -- rv = directory->Clone(getter_AddRefs(fileManagerDirectory)); -- NS_ENSURE_SUCCESS(rv, rv); -+ nsCOMPtr fmDirectory; -+ rv = directory->Clone(getter_AddRefs(fmDirectory)); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = fileManagerDirectory->Append(filename); -+ rv = fmDirectory->Append(filename); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = fileManagerDirectory->Exists(&exists); -+ rv = fmDirectory->Exists(&exists); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - - if (exists) { - bool isDirectory; -- rv = fileManagerDirectory->IsDirectory(&isDirectory); -+ rv = fmDirectory->IsDirectory(&isDirectory); - NS_ENSURE_SUCCESS(rv, rv); - NS_ENSURE_TRUE(isDirectory, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- nsString fileManagerDirectoryPath; -- rv = fileManagerDirectory->GetPath(fileManagerDirectoryPath); -- NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ uint64_t usage = 0; - -- rc = sqlite3_quota_remove( -- NS_ConvertUTF16toUTF8(fileManagerDirectoryPath).get()); -- if (rc != SQLITE_OK) { -- NS_WARNING("Failed to delete file directory!"); -- return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; -+ if (privilege != Chrome) { -+ rv = FileManager::GetUsage(fmDirectory, &usage); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - } - -- rv = fileManagerDirectory->Remove(true); -- NS_ENSURE_SUCCESS(rv, rv); -+ rv = fmDirectory->Remove(true); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ -+ if (privilege != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->DecreaseUsageForOrigin(mASCIIOrigin, usage); -+ } - } - - return NS_OK; -diff --git dom/indexedDB/OpenDatabaseHelper.h dom/indexedDB/OpenDatabaseHelper.h -index 587301b..5a3d987 100644 ---- dom/indexedDB/OpenDatabaseHelper.h -+++ dom/indexedDB/OpenDatabaseHelper.h -@@ -77,10 +77,16 @@ public: - return mDatabase; - } - -+ const FactoryPrivilege& Privilege() const -+ { -+ return mPrivilege; -+ } -+ - static -- nsresult CreateDatabaseConnection(const nsAString& aName, -- nsIFile* aDBFile, -- nsIFile* aFileManagerDirectory, -+ nsresult CreateDatabaseConnection(nsIFile* aDBFile, -+ nsIFile* aFMDirectory, -+ const nsAString& aName, -+ const nsACString& aOrigin, - mozIStorageConnection** aConnection); - - protected: -diff --git dom/indexedDB/nsIStandardFileStream.idl dom/indexedDB/nsIStandardFileStream.idl -deleted file mode 100644 -index 265c3ed..0000000 ---- dom/indexedDB/nsIStandardFileStream.idl -+++ /dev/null -@@ -1,60 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this file, -- * You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#include "nsISupports.idl" -- --interface nsIFile; -- --/** -- * A stream that allows you to read from a file or stream to a file -- * using standard file APIs. -- */ --[scriptable, uuid(ebbbb779-92a3-4b2a-b7cf-6efbe904c453)] --interface nsIStandardFileStream : nsISupports --{ -- /** -- * If this is set, the file will be opened (i.e., a call to -- * fopen done) only when we do an actual operation on the stream, -- * or more specifically, when one of the following is called: -- * - Seek -- * - Tell -- * - SetEOF -- * - Available -- * - Read -- * - Write -- * - Flush -- * - GetSize -- * - GetLastModified -- * - Sync -- * -- * FLAGS_DEFER_OPEN is useful if we use the stream on a background -- * thread, so that the opening and possible |stat|ing of the file -- * happens there as well. -- * -- * @note Using this flag results in the file not being opened -- * during the call to Init. This means that any errors that might -- * happen when this flag is not set would happen during the -- * first read. Also, the file is not locked when Init is called, -- * so it might be deleted before we try to read from it. -- */ -- const long FLAGS_DEFER_OPEN = 1 << 0; -- -- /** -- * @param file file to read from or stream to -- * @param mode file open mode (see fopen documentation) -- * @param flags flags specifying various behaviors of the class -- * (see enumerations in the class) -- */ -- void init(in nsIFile file, -- in AString mode, -- in long flags); -- -- /** -- * Flush all written content held in memory buffers out to disk. -- * This is the equivalent of fflush() -- */ -- void flushBuffers(); --}; -diff --git dom/indexedDB/test/Makefile.in dom/indexedDB/test/Makefile.in -index 9c79b14..4c9a201 100644 ---- dom/indexedDB/test/Makefile.in -+++ dom/indexedDB/test/Makefile.in -@@ -54,11 +54,13 @@ MOCHITEST_FILES = \ - test_file_os_delete.html \ - test_file_put_get_object.html \ - test_file_put_get_values.html \ -+ test_file_quota.html \ - test_file_replace.html \ - test_file_resurrection_delete.html \ - test_file_resurrection_transaction_abort.html \ - test_file_sharing.html \ - test_file_transaction_abort.html \ -+ test_filehandle_quota.html \ - test_filehandle_serialization.html \ - test_filehandle_store_snapshot.html \ - test_getAll.html \ -diff --git dom/indexedDB/test/file.js dom/indexedDB/test/file.js -index 07bd10a..3c6194a 100644 ---- dom/indexedDB/test/file.js -+++ dom/indexedDB/test/file.js -@@ -3,6 +3,8 @@ - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -+const DEFAULT_QUOTA = 50 * 1024 * 1024; -+ - var bufferCache = []; - var utils = SpecialPowers.getDOMWindowUtils(window); - -@@ -184,25 +186,6 @@ function getUsage(usageHandler) - idbManager.getUsageForURI(uri, callback); - } - --function getUsageSync() --{ -- let usage; -- -- getUsage(function(aUsage, aFileUsage) { -- usage = aUsage; -- }); -- -- let comp = SpecialPowers.wrap(Components); -- let thread = comp.classes["@mozilla.org/thread-manager;1"] -- .getService(comp.interfaces.nsIThreadManager) -- .currentThread; -- while (!usage) { -- thread.processNextEvent(true); -- } -- -- return usage; --} -- - function scheduleGC() - { - SpecialPowers.exactGC(window, continueToNextStep); -diff --git dom/indexedDB/test/test_file_quota.html dom/indexedDB/test/test_file_quota.html -index b07880d..9fbc0c0 100644 ---- dom/indexedDB/test/test_file_quota.html -+++ dom/indexedDB/test/test_file_quota.html -@@ -13,14 +13,12 @@ - function testSteps() - { - const READ_WRITE = IDBTransaction.READ_WRITE; -- const DEFAULT_QUOTA_MB = 50; - - const name = window.location.pathname; - - const objectStoreName = "Blobs"; - -- const testData = { key: 0, value: {} }; -- const fileData = { key: 1, file: null }; -+ const fileData = { key: 1, file: getNullFile("random.bin", DEFAULT_QUOTA) }; - - let request = indexedDB.open(name, 1); - request.onerror = errorHandler; -@@ -32,21 +30,17 @@ - - let db = event.target.result; - -- let objectStore = db.createObjectStore(objectStoreName, { }); -- objectStore.add(testData.value, testData.key); -- -- let size = (DEFAULT_QUOTA_MB + 1) * 1024 * 1024 - getUsageSync(); -- fileData.file = getNullFile("random.bin", size); -+ db.createObjectStore(objectStoreName, { }); - - event = yield; - - is(event.type, "success", "Got correct event type"); - - trans = db.transaction([objectStoreName], READ_WRITE); -- objectStore = trans.objectStore(objectStoreName); -+ let objectStore = trans.objectStore(objectStoreName); - - request = objectStore.add(fileData.file, fileData.key); -- request.addEventListener("error", new ExpectError("UnknownError")); -+ request.addEventListener("error", new ExpectError("UnknownError", true)); - request.onsuccess = unexpectedSuccessHandler; - event = yield; - -diff --git dom/indexedDB/test/test_filehandle_quota.html dom/indexedDB/test/test_filehandle_quota.html -index addaf01..0506279 100644 ---- dom/indexedDB/test/test_filehandle_quota.html -+++ dom/indexedDB/test/test_filehandle_quota.html -@@ -13,7 +13,6 @@ - function testSteps() - { - const READ_WRITE = IDBTransaction.READ_WRITE; -- const DEFAULT_QUOTA_MB = 50; - - const name = window.location.pathname; - -@@ -39,10 +38,10 @@ - - let lockedFile = fileHandle.open("readwrite"); - -- let blob = getNullBlob((50 + 1) * 1024 * 1024 - getUsageSync()); -+ let blob = getNullBlob(DEFAULT_QUOTA); - - request = lockedFile.write(blob); -- request.addEventListener("error", new ExpectError("UnknownError")); -+ request.addEventListener("error", new ExpectError("UnknownError", true)); - request.onsuccess = unexpectedSuccessHandler; - event = yield; - -diff --git dom/quota/FileStreams.cpp dom/quota/FileStreams.cpp -new file mode 100644 -index 0000000..9de244f ---- /dev/null -+++ dom/quota/FileStreams.cpp -@@ -0,0 +1,123 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "FileStreams.h" -+ -+USING_QUOTA_NAMESPACE -+ -+template -+NS_IMETHODIMP -+FileQuotaStream::SetEOF() -+{ -+ nsresult rv = FileStreamBase::SetEOF(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (mQuotaObject) { -+ int64_t offset; -+ nsresult rv = FileStreamBase::Tell(&offset); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mQuotaObject->UpdateSize(offset); -+ } -+ -+ return NS_OK; -+} -+ -+template -+NS_IMETHODIMP -+FileQuotaStream::Close() -+{ -+ nsresult rv = FileStreamBase::Close(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mQuotaObject = nullptr; -+ -+ return NS_OK; -+} -+ -+template -+nsresult -+FileQuotaStream::DoOpen() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ NS_ASSERTION(!mQuotaObject, "Creating quota object more than once?"); -+ mQuotaObject = quotaManager->GetQuotaObject(mOrigin, -+ FileStreamBase::mOpenParams.localFile); -+ -+ nsresult rv = FileStreamBase::DoOpen(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (mQuotaObject && (FileStreamBase::mOpenParams.ioFlags & PR_TRUNCATE)) { -+ mQuotaObject->UpdateSize(0); -+ } -+ -+ return NS_OK; -+} -+ -+template -+NS_IMETHODIMP -+FileQuotaStreamWithWrite::Write(const char* aBuf, -+ uint32_t aCount, -+ uint32_t* _retval) -+{ -+ nsresult rv; -+ -+ if (FileQuotaStreamWithWrite::mQuotaObject) { -+ int64_t offset; -+ rv = FileStreamBase::Tell(&offset); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (!FileQuotaStreamWithWrite:: -+ mQuotaObject->MaybeAllocateMoreSpace(offset, aCount)) { -+ return NS_ERROR_FAILURE; -+ } -+ } -+ -+ rv = FileStreamBase::Write(aBuf, aCount, _retval); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ return NS_OK; -+} -+ -+NS_IMPL_ISUPPORTS_INHERITED0(FileInputStream, nsFileInputStream) -+ -+already_AddRefed -+FileInputStream::Create(const nsACString& aOrigin, nsIFile* aFile, -+ int32_t aIOFlags, int32_t aPerm, -+ int32_t aBehaviorFlags) -+{ -+ nsRefPtr stream = new FileInputStream(aOrigin); -+ nsresult rv = stream->Init(aFile, aIOFlags, aPerm, aBehaviorFlags); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ return stream.forget(); -+} -+ -+NS_IMPL_ISUPPORTS_INHERITED0(FileOutputStream, nsFileOutputStream) -+ -+already_AddRefed -+FileOutputStream::Create(const nsACString& aOrigin, nsIFile* aFile, -+ int32_t aIOFlags, int32_t aPerm, -+ int32_t aBehaviorFlags) -+{ -+ nsRefPtr stream = new FileOutputStream(aOrigin); -+ nsresult rv = stream->Init(aFile, aIOFlags, aPerm, aBehaviorFlags); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ return stream.forget(); -+} -+ -+NS_IMPL_ISUPPORTS_INHERITED0(FileStream, nsFileStream) -+ -+already_AddRefed -+FileStream::Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags, -+ int32_t aPerm, int32_t aBehaviorFlags) -+{ -+ nsRefPtr stream = new FileStream(aOrigin); -+ nsresult rv = stream->Init(aFile, aIOFlags, aPerm, aBehaviorFlags); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ return stream.forget(); -+} -diff --git dom/quota/FileStreams.h dom/quota/FileStreams.h -new file mode 100644 -index 0000000..77bfad4 ---- /dev/null -+++ dom/quota/FileStreams.h -@@ -0,0 +1,115 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef mozilla_dom_quota_filestreams_h__ -+#define mozilla_dom_quota_filestreams_h__ -+ -+#include "QuotaCommon.h" -+ -+#include "nsFileStreams.h" -+ -+#include "QuotaManager.h" -+ -+BEGIN_QUOTA_NAMESPACE -+ -+template -+class FileQuotaStream : public FileStreamBase -+{ -+public: -+ // nsFileStreamBase override -+ NS_IMETHOD -+ SetEOF() MOZ_OVERRIDE; -+ -+ NS_IMETHOD -+ Close() MOZ_OVERRIDE; -+ -+protected: -+ FileQuotaStream(const nsACString& aOrigin) -+ : mOrigin(aOrigin) -+ { } -+ -+ // nsFileStreamBase override -+ virtual nsresult -+ DoOpen() MOZ_OVERRIDE; -+ -+ nsCString mOrigin; -+ nsRefPtr mQuotaObject; -+}; -+ -+template -+class FileQuotaStreamWithWrite : public FileQuotaStream -+{ -+public: -+ // nsFileStreamBase override -+ NS_IMETHOD -+ Write(const char* aBuf, uint32_t aCount, uint32_t* _retval) MOZ_OVERRIDE; -+ -+protected: -+ FileQuotaStreamWithWrite(const nsACString& aOrigin) -+ : FileQuotaStream(aOrigin) -+ { } -+}; -+ -+class FileInputStream : public FileQuotaStream -+{ -+public: -+ NS_DECL_ISUPPORTS_INHERITED -+ -+ static already_AddRefed -+ Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1, -+ int32_t aPerm = -1, int32_t aBehaviorFlags = 0); -+ -+private: -+ FileInputStream(const nsACString& aOrigin) -+ : FileQuotaStream(aOrigin) -+ { } -+ -+ virtual ~FileInputStream() { -+ Close(); -+ } -+}; -+ -+class FileOutputStream : public FileQuotaStreamWithWrite -+{ -+public: -+ NS_DECL_ISUPPORTS_INHERITED -+ -+ static already_AddRefed -+ Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1, -+ int32_t aPerm = -1, int32_t aBehaviorFlags = 0); -+ -+private: -+ FileOutputStream(const nsACString& aOrigin) -+ : FileQuotaStreamWithWrite(aOrigin) -+ { } -+ -+ virtual ~FileOutputStream() { -+ Close(); -+ } -+}; -+ -+class FileStream : public FileQuotaStreamWithWrite -+{ -+public: -+ NS_DECL_ISUPPORTS_INHERITED -+ -+ static already_AddRefed -+ Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1, -+ int32_t aPerm = -1, int32_t aBehaviorFlags = 0); -+ -+private: -+ FileStream(const nsACString& aOrigin) -+ : FileQuotaStreamWithWrite(aOrigin) -+ { } -+ -+ virtual ~FileStream() { -+ Close(); -+ } -+}; -+ -+END_QUOTA_NAMESPACE -+ -+#endif /* mozilla_dom_quota_filestreams_h__ */ -diff --git dom/quota/Makefile.in dom/quota/Makefile.in -new file mode 100644 -index 0000000..49be551 ---- /dev/null -+++ dom/quota/Makefile.in -@@ -0,0 +1,33 @@ -+# 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/. -+ -+DEPTH = ../.. -+topsrcdir = @top_srcdir@ -+srcdir = @srcdir@ -+VPATH = @srcdir@ -+ -+include $(DEPTH)/config/autoconf.mk -+ -+MODULE = dom -+LIBRARY_NAME = domquota_s -+XPIDL_MODULE = dom_quota -+LIBXUL_LIBRARY = 1 -+FORCE_STATIC_LIB = 1 -+ -+include $(topsrcdir)/dom/dom-config.mk -+ -+EXPORTS_NAMESPACES = mozilla/dom/quota -+ -+CPPSRCS = \ -+ FileStreams.cpp \ -+ QuotaManager.cpp \ -+ $(NULL) -+ -+EXPORTS_mozilla/dom/quota = \ -+ FileStreams.h \ -+ QuotaCommon.h \ -+ QuotaManager.h \ -+ $(NULL) -+ -+include $(topsrcdir)/config/rules.mk -diff --git dom/quota/QuotaCommon.h dom/quota/QuotaCommon.h -new file mode 100644 -index 0000000..a415d17 ---- /dev/null -+++ dom/quota/QuotaCommon.h -@@ -0,0 +1,23 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this file, -+ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef mozilla_dom_quota_quotacommon_h__ -+#define mozilla_dom_quota_quotacommon_h__ -+ -+#include "nsAutoPtr.h" -+#include "nsCOMPtr.h" -+#include "nsDebug.h" -+#include "nsStringGlue.h" -+#include "nsTArray.h" -+ -+#define BEGIN_QUOTA_NAMESPACE \ -+ namespace mozilla { namespace dom { namespace quota { -+#define END_QUOTA_NAMESPACE \ -+ } /* namespace quota */ } /* namespace dom */ } /* namespace mozilla */ -+#define USING_QUOTA_NAMESPACE \ -+ using namespace mozilla::dom::quota; -+ -+#endif // mozilla_dom_quota_quotacommon_h__ -diff --git dom/quota/QuotaManager.cpp dom/quota/QuotaManager.cpp -new file mode 100644 -index 0000000..b251606 ---- /dev/null -+++ dom/quota/QuotaManager.cpp -@@ -0,0 +1,294 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this file, -+ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "QuotaManager.h" -+ -+#include "nsIFile.h" -+ -+#include "mozilla/ClearOnShutdown.h" -+#include "nsComponentManagerUtils.h" -+ -+#include "mozilla/dom/indexedDB/IndexedDatabaseManager.h" -+ -+USING_QUOTA_NAMESPACE -+ -+namespace { -+ -+nsAutoPtr gInstance; -+ -+PLDHashOperator -+RemoveQuotaForPatternCallback(const nsACString& aKey, -+ nsRefPtr& aValue, -+ void* aUserArg) -+{ -+ NS_ASSERTION(!aKey.IsEmpty(), "Empty key!"); -+ NS_ASSERTION(aValue, "Null pointer!"); -+ NS_ASSERTION(aUserArg, "Null pointer!"); -+ -+ const nsACString* pattern = -+ static_cast(aUserArg); -+ -+ if (StringBeginsWith(aKey, *pattern)) { -+ return PL_DHASH_REMOVE; -+ } -+ -+ return PL_DHASH_NEXT; -+} -+ -+} // anonymous namespace -+ -+void -+QuotaObject::AddRef() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ if (!quotaManager) { -+ NS_ERROR("Null quota manager, this shouldn't happen, possible leak!"); -+ -+ NS_AtomicIncrementRefcnt(mRefCnt); -+ -+ return; -+ } -+ -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ ++mRefCnt; -+} -+ -+void -+QuotaObject::Release() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ if (!quotaManager) { -+ NS_ERROR("Null quota manager, this shouldn't happen, possible leak!"); -+ -+ nsrefcnt count = NS_AtomicDecrementRefcnt(mRefCnt); -+ if (count == 0) { -+ mRefCnt = 1; -+ delete this; -+ } -+ -+ return; -+ } -+ -+ { -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ --mRefCnt; -+ -+ if (mRefCnt > 0) { -+ return; -+ } -+ -+ if (mOriginInfo) { -+ mOriginInfo->mQuotaObjects.Remove(mPath); -+ } -+ } -+ -+ delete this; -+} -+ -+void -+QuotaObject::UpdateSize(int64_t aSize) -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ if (mOriginInfo) { -+ mOriginInfo->mUsage -= mSize; -+ mSize = aSize; -+ mOriginInfo->mUsage += mSize; -+ } -+} -+ -+bool -+QuotaObject::MaybeAllocateMoreSpace(int64_t aOffset, int32_t aCount) -+{ -+ int64_t end = aOffset + aCount; -+ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ if (mSize >= end || !mOriginInfo) { -+ return true; -+ } -+ -+ int64_t newUsage = mOriginInfo->mUsage - mSize + end; -+ if (newUsage > mOriginInfo->mLimit) { -+ if (!indexedDB::IndexedDatabaseManager::QuotaIsLifted()) { -+ return false; -+ } -+ -+ nsCString origin = mOriginInfo->mOrigin; -+ -+ mOriginInfo->LockedClearOriginInfos(); -+ NS_ASSERTION(!mOriginInfo, -+ "Should have cleared in LockedClearOriginInfos!"); -+ -+ quotaManager->mOriginInfos.Remove(origin); -+ -+ mSize = end; -+ -+ return true; -+ } -+ -+ mOriginInfo->mUsage = newUsage; -+ mSize = end; -+ -+ return true; -+} -+ -+#ifdef DEBUG -+void -+OriginInfo::LockedClearOriginInfos() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->mQuotaMutex.AssertCurrentThreadOwns(); -+ -+ mQuotaObjects.EnumerateRead(ClearOriginInfoCallback, nullptr); -+} -+#endif -+ -+// static -+PLDHashOperator -+OriginInfo::ClearOriginInfoCallback(const nsAString& aKey, -+ QuotaObject* aValue, -+ void* aUserArg) -+{ -+ NS_ASSERTION(!aKey.IsEmpty(), "Empty key!"); -+ NS_ASSERTION(aValue, "Null pointer!"); -+ -+ aValue->mOriginInfo = nullptr; -+ -+ return PL_DHASH_NEXT; -+} -+ -+// static -+QuotaManager* -+QuotaManager::GetOrCreate() -+{ -+ if (!gInstance) { -+ NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); -+ -+ gInstance = new QuotaManager(); -+ -+ ClearOnShutdown(&gInstance); -+ } -+ -+ return gInstance; -+} -+ -+// static -+QuotaManager* -+QuotaManager::Get() -+{ -+ // Does not return an owning reference. -+ return gInstance; -+} -+ -+void -+QuotaManager::InitQuotaForOrigin(const nsACString& aOrigin, -+ int64_t aLimit, -+ int64_t aUsage) -+{ -+ OriginInfo* info = new OriginInfo(aOrigin, aLimit * 1024 * 1024, aUsage); -+ -+ MutexAutoLock lock(mQuotaMutex); -+ -+ NS_ASSERTION(!mOriginInfos.GetWeak(aOrigin), "Replacing an existing entry!"); -+ mOriginInfos.Put(aOrigin, info); -+} -+ -+void -+QuotaManager::DecreaseUsageForOrigin(const nsACString& aOrigin, -+ int64_t aSize) -+{ -+ MutexAutoLock lock(mQuotaMutex); -+ -+ nsRefPtr originInfo; -+ mOriginInfos.Get(aOrigin, getter_AddRefs(originInfo)); -+ -+ if (originInfo) { -+ originInfo->mUsage -= aSize; -+ } -+} -+ -+void -+QuotaManager::RemoveQuotaForPattern(const nsACString& aPattern) -+{ -+ NS_ASSERTION(!aPattern.IsEmpty(), "Empty pattern!"); -+ -+ MutexAutoLock lock(mQuotaMutex); -+ -+ mOriginInfos.Enumerate(RemoveQuotaForPatternCallback, -+ const_cast(&aPattern)); -+} -+ -+already_AddRefed -+QuotaManager::GetQuotaObject(const nsACString& aOrigin, -+ nsIFile* aFile) -+{ -+ NS_ASSERTION(!NS_IsMainThread(), "Wrong thread!"); -+ -+ nsString path; -+ nsresult rv = aFile->GetPath(path); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ int64_t fileSize; -+ -+ bool exists; -+ rv = aFile->Exists(&exists); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ if (exists) { -+ rv = aFile->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ } -+ else { -+ fileSize = 0; -+ } -+ -+ QuotaObject* info = nullptr; -+ { -+ MutexAutoLock lock(mQuotaMutex); -+ -+ nsRefPtr originInfo; -+ mOriginInfos.Get(aOrigin, getter_AddRefs(originInfo)); -+ -+ if (!originInfo) { -+ return nullptr; -+ } -+ -+ originInfo->mQuotaObjects.Get(path, &info); -+ -+ if (!info) { -+ info = new QuotaObject(originInfo, path, fileSize); -+ originInfo->mQuotaObjects.Put(path, info); -+ } -+ } -+ -+ nsRefPtr result = info; -+ return result.forget(); -+} -+ -+already_AddRefed -+QuotaManager::GetQuotaObject(const nsACString& aOrigin, -+ const nsAString& aPath) -+{ -+ nsresult rv; -+ nsCOMPtr file = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ rv = file->InitWithPath(aPath); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ return GetQuotaObject(aOrigin, file); -+} -diff --git dom/quota/QuotaManager.h dom/quota/QuotaManager.h -new file mode 100644 -index 0000000..e19acdd ---- /dev/null -+++ dom/quota/QuotaManager.h -@@ -0,0 +1,147 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this file, -+ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef mozilla_dom_quota_quotamanager_h__ -+#define mozilla_dom_quota_quotamanager_h__ -+ -+#include "QuotaCommon.h" -+ -+#include "mozilla/Mutex.h" -+#include "nsDataHashtable.h" -+#include "nsRefPtrHashtable.h" -+#include "nsThreadUtils.h" -+ -+BEGIN_QUOTA_NAMESPACE -+ -+class OriginInfo; -+class QuotaManager; -+ -+class QuotaObject -+{ -+ friend class OriginInfo; -+ friend class QuotaManager; -+ -+public: -+ void -+ AddRef(); -+ -+ void -+ Release(); -+ -+ void -+ UpdateSize(int64_t aSize); -+ -+ bool -+ MaybeAllocateMoreSpace(int64_t aOffset, int32_t aCount); -+ -+private: -+ QuotaObject(OriginInfo* aOriginInfo, const nsAString& aPath, int64_t aSize) -+ : mOriginInfo(aOriginInfo), mPath(aPath), mSize(aSize) -+ { } -+ -+ virtual ~QuotaObject() -+ { } -+ -+ nsAutoRefCnt mRefCnt; -+ -+ OriginInfo* mOriginInfo; -+ nsString mPath; -+ int64_t mSize; -+}; -+ -+class OriginInfo -+{ -+ friend class QuotaManager; -+ friend class QuotaObject; -+ -+public: -+ OriginInfo(const nsACString& aOrigin, int64_t aLimit, int64_t aUsage) -+ : mOrigin(aOrigin), mLimit(aLimit), mUsage(aUsage) -+ { -+ mQuotaObjects.Init(); -+ } -+ -+ NS_INLINE_DECL_THREADSAFE_REFCOUNTING(OriginInfo) -+ -+private: -+ void -+#ifdef DEBUG -+ LockedClearOriginInfos(); -+#else -+ LockedClearOriginInfos() -+ { -+ mQuotaObjects.EnumerateRead(ClearOriginInfoCallback, nullptr); -+ } -+#endif -+ -+ static PLDHashOperator -+ ClearOriginInfoCallback(const nsAString& aKey, -+ QuotaObject* aValue, void* aUserArg); -+ -+ nsDataHashtable mQuotaObjects; -+ -+ nsCString mOrigin; -+ int64_t mLimit; -+ int64_t mUsage; -+}; -+ -+class QuotaManager -+{ -+ friend class nsAutoPtr; -+ friend class OriginInfo; -+ friend class QuotaObject; -+ -+public: -+ // Returns a non-owning reference. -+ static QuotaManager* -+ GetOrCreate(); -+ -+ // Returns a non-owning reference. -+ static QuotaManager* -+ Get(); -+ -+ void -+ InitQuotaForOrigin(const nsACString& aOrigin, -+ int64_t aLimit, -+ int64_t aUsage); -+ -+ void -+ DecreaseUsageForOrigin(const nsACString& aOrigin, -+ int64_t aSize); -+ -+ void -+ RemoveQuotaForPattern(const nsACString& aPattern); -+ -+ already_AddRefed -+ GetQuotaObject(const nsACString& aOrigin, -+ nsIFile* aFile); -+ -+ already_AddRefed -+ GetQuotaObject(const nsACString& aOrigin, -+ const nsAString& aPath); -+ -+private: -+ QuotaManager() -+ : mQuotaMutex("QuotaManager.mQuotaMutex") -+ { -+ NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); -+ -+ mOriginInfos.Init(); -+ } -+ -+ virtual ~QuotaManager() -+ { -+ NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); -+ } -+ -+ mozilla::Mutex mQuotaMutex; -+ -+ nsRefPtrHashtable mOriginInfos; -+}; -+ -+END_QUOTA_NAMESPACE -+ -+#endif /* mozilla_dom_quota_quotamanager_h__ */ -diff --git layout/build/Makefile.in layout/build/Makefile.in -index e6b32da..496b55f 100644 ---- layout/build/Makefile.in -+++ layout/build/Makefile.in -@@ -69,6 +69,7 @@ SHARED_LIBRARY_LIBS = \ - $(DEPTH)/dom/encoding/$(LIB_PREFIX)domencoding_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/file/$(LIB_PREFIX)domfile_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/power/$(LIB_PREFIX)dom_power_s.$(LIB_SUFFIX) \ -+ $(DEPTH)/dom/quota/$(LIB_PREFIX)domquota_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/settings/$(LIB_PREFIX)jsdomsettings_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/permission/$(LIB_PREFIX)jsdompermissionsettings_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/network/src/$(LIB_PREFIX)dom_network_s.$(LIB_SUFFIX) \ -diff --git netwerk/base/src/Makefile.in netwerk/base/src/Makefile.in -index 0c0d60e..e8cef48 100644 ---- netwerk/base/src/Makefile.in -+++ netwerk/base/src/Makefile.in -@@ -19,6 +19,7 @@ LIBXUL_LIBRARY = 1 - EXPORTS = \ - nsMIMEInputStream.h \ - nsURLHelper.h \ -+ nsFileStreams.h \ - $(NULL) - - EXPORTS_NAMESPACES = mozilla/net -diff --git netwerk/base/src/nsFileStreams.cpp netwerk/base/src/nsFileStreams.cpp -index 2420ffc..ecc26aa 100644 ---- netwerk/base/src/nsFileStreams.cpp -+++ netwerk/base/src/nsFileStreams.cpp -@@ -51,7 +51,9 @@ nsFileStreamBase::~nsFileStreamBase() - Close(); - } - --NS_IMPL_THREADSAFE_ISUPPORTS1(nsFileStreamBase, nsISeekableStream) -+NS_IMPL_THREADSAFE_ISUPPORTS2(nsFileStreamBase, -+ nsISeekableStream, -+ nsIFileMetadata) - - NS_IMETHODIMP - nsFileStreamBase::Seek(int32_t whence, int64_t offset) -@@ -124,6 +126,52 @@ nsFileStreamBase::SetEOF() - return NS_OK; - } - -+NS_IMETHODIMP -+nsFileStreamBase::GetSize(int64_t* _retval) -+{ -+ nsresult rv = DoPendingOpen(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (!mFD) { -+ return NS_BASE_STREAM_CLOSED; -+ } -+ -+ PRFileInfo64 info; -+ if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -+ return NS_BASE_STREAM_OSERROR; -+ } -+ -+ *_retval = int64_t(info.size); -+ -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsFileStreamBase::GetLastModified(int64_t* _retval) -+{ -+ nsresult rv = DoPendingOpen(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (!mFD) { -+ return NS_BASE_STREAM_CLOSED; -+ } -+ -+ PRFileInfo64 info; -+ if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -+ return NS_BASE_STREAM_OSERROR; -+ } -+ -+ int64_t modTime = int64_t(info.modifyTime); -+ if (modTime == 0) { -+ *_retval = 0; -+ } -+ else { -+ *_retval = modTime / int64_t(PR_USEC_PER_MSEC); -+ } -+ -+ return NS_OK; -+} -+ - nsresult - nsFileStreamBase::Close() - { -@@ -934,13 +982,12 @@ nsSafeFileOutputStream::Write(const char *buf, uint32_t count, uint32_t *result) - //////////////////////////////////////////////////////////////////////////////// - // nsFileStream - --NS_IMPL_ISUPPORTS_INHERITED4(nsFileStream, -+NS_IMPL_ISUPPORTS_INHERITED3(nsFileStream, - nsFileStreamBase, - nsIInputStream, - nsIOutputStream, -- nsIFileStream, -- nsIFileMetadata) -- -+ nsIFileStream) -+ - NS_IMETHODIMP - nsFileStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm, - int32_t behaviorFlags) -@@ -959,50 +1006,4 @@ nsFileStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm, - mBehaviorFlags & nsIFileStream::DEFER_OPEN); - } - --NS_IMETHODIMP --nsFileStream::GetSize(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mFD) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- PRFileInfo64 info; -- if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- *_retval = int64_t(info.size); -- -- return NS_OK; --} -- --NS_IMETHODIMP --nsFileStream::GetLastModified(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mFD) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- PRFileInfo64 info; -- if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- int64_t modTime = int64_t(info.modifyTime); -- if (modTime == 0) { -- *_retval = 0; -- } -- else { -- *_retval = modTime / int64_t(PR_USEC_PER_MSEC); -- } -- -- return NS_OK; --} -- - //////////////////////////////////////////////////////////////////////////////// -diff --git netwerk/base/src/nsFileStreams.h netwerk/base/src/nsFileStreams.h -index 13e5b45..1aa6a82 100644 ---- netwerk/base/src/nsFileStreams.h -+++ netwerk/base/src/nsFileStreams.h -@@ -24,11 +24,13 @@ - - //////////////////////////////////////////////////////////////////////////////// - --class nsFileStreamBase : public nsISeekableStream -+class nsFileStreamBase : public nsISeekableStream, -+ public nsIFileMetadata - { - public: - NS_DECL_ISUPPORTS - NS_DECL_NSISEEKABLESTREAM -+ NS_DECL_NSIFILEMETADATA - - nsFileStreamBase(); - virtual ~nsFileStreamBase(); -@@ -124,8 +126,8 @@ public: - NS_IMETHOD IsNonBlocking(bool* _retval) - { - return nsFileStreamBase::IsNonBlocking(_retval); -- } -- -+ } -+ - // Overrided from nsFileStreamBase - NS_IMETHOD Seek(int32_t aWhence, int64_t aOffset); - -@@ -260,13 +262,11 @@ protected: - class nsFileStream : public nsFileStreamBase, - public nsIInputStream, - public nsIOutputStream, -- public nsIFileStream, -- public nsIFileMetadata -+ public nsIFileStream - { - public: - NS_DECL_ISUPPORTS_INHERITED - NS_DECL_NSIFILESTREAM -- NS_DECL_NSIFILEMETADATA - NS_FORWARD_NSIINPUTSTREAM(nsFileStreamBase::) - - // Can't use NS_FORWARD_NSIOUTPUTSTREAM due to overlapping methods -diff --git storage/public/Makefile.in storage/public/Makefile.in -index c485d4e..c05e6f3 100644 ---- storage/public/Makefile.in -+++ storage/public/Makefile.in -@@ -36,7 +36,6 @@ XPIDLSRCS = \ - mozIStorageCompletionCallback.idl \ - mozIStorageBaseStatement.idl \ - mozIStorageAsyncStatement.idl \ -- mozIStorageServiceQuotaManagement.idl \ - mozIStorageVacuumParticipant.idl \ - $(NULL) - # SEE ABOVE NOTE! -diff --git storage/public/mozIStorageService.idl storage/public/mozIStorageService.idl -index 3087a11..483649b 100644 ---- storage/public/mozIStorageService.idl -+++ storage/public/mozIStorageService.idl -@@ -7,6 +7,7 @@ - - interface mozIStorageConnection; - interface nsIFile; -+interface nsIFileURL; - - /** - * The mozIStorageService interface is intended to be implemented by -@@ -15,7 +16,7 @@ interface nsIFile; - * - * This is the only way to open a database connection. - */ --[scriptable, uuid(fe8e95cb-b377-4c8d-bccb-d9198c67542b)] -+[scriptable, uuid(12bfad34-cca3-40fb-8736-d8bf9db61a27)] - interface mozIStorageService : nsISupports { - /** - * Get a connection to a named special database storage. -@@ -106,6 +107,16 @@ interface mozIStorageService : nsISupports { - */ - mozIStorageConnection openUnsharedDatabase(in nsIFile aDatabaseFile); - -+ /** -+ * See openDatabase(). Exactly the same only initialized with a file URL. -+ * Custom parameters can be passed to SQLite and VFS implementations through -+ * the query part of the URL. -+ * -+ * @param aURL -+ * A nsIFileURL that represents the database that is to be opened. -+ */ -+ mozIStorageConnection openDatabaseWithFileURL(in nsIFileURL aFileURL); -+ - /* - * Utilities - */ -diff --git storage/public/mozIStorageServiceQuotaManagement.idl storage/public/mozIStorageServiceQuotaManagement.idl -deleted file mode 100644 -index ee5086b..0000000 ---- storage/public/mozIStorageServiceQuotaManagement.idl -+++ /dev/null -@@ -1,99 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#include "nsISupports.idl" -- --interface mozIStorageConnection; --interface nsIFile; -- --[scriptable, function, uuid(ae94f0a5-ebdf-48f4-9959-085e13235d8d)] --interface mozIStorageQuotaCallback : nsISupports --{ -- /** -- * Called when the file size quota for a group of databases is exceeded. -- * -- * @param aFilename -- * The filename of the database that has exceeded the quota. -- * -- * @param aCurrentSizeLimit -- * The current size (in bytes) of the quota. -- * -- * @param aCurrentTotalSize -- * The current size of all databases in the quota group. -- * -- * @param aUserData -- * Any additional data that was provided to the -- * setQuotaForFilenamePattern function. -- * -- * @returns A new quota size. A new quota of 0 will disable the quota callback -- * and any quota value less than aCurrentTotalSize will cause the -- * database operation to fail with NS_ERROR_FILE_NO_DEVICE_SPACE. -- */ -- long long quotaExceeded(in ACString aFilename, -- in long long aCurrentSizeLimit, -- in long long aCurrentTotalSize, -- in nsISupports aUserData); --}; -- --/** -- * This is a temporary interface that should eventually merge with -- * mozIStorageService. -- */ --[scriptable, uuid(4d81faf5-fe01-428b-99b8-c94cba12fd72)] --interface mozIStorageServiceQuotaManagement : nsISupports --{ -- /** -- * See mozIStorageService.openDatabase. Exactly the same only with a custom -- * SQLite VFS. -- */ -- mozIStorageConnection openDatabaseWithVFS(in nsIFile aDatabaseFile, -- in ACString aVFSName); -- -- /** -- * Set a file size quota for a group of databases matching the given filename -- * pattern, optionally specifying a callback when the quota is exceeded. -- * -- * @param aPattern -- * A pattern to match filenames for inclusion in the quota system. May -- * contain the following special characters: -- * '*' Matches any sequence of zero or more characters. -- * '?' Matches exactly one character. -- * [...] Matches one character from the enclosed list of characters. -- * [^...] Matches one character not in the enclosed list. -- * -- * @param aSizeLimit -- * The size limit (in bytes) for the quota group. -- * -- * @param aCallback -- * A callback that will be used when the quota is exceeded. -- * -- * @param aUserData -- * Additional information to be passed to the callback. -- */ -- void setQuotaForFilenamePattern(in ACString aPattern, -- in long long aSizeLimit, -- in mozIStorageQuotaCallback aCallback, -- in nsISupports aUserData); -- -- /** -- * Adds, removes, or updates the file size information maintained by the quota -- * system for files not opened through openDatabaseWithVFS(). -- * -- * Use this function when you want files to be included in quota calculations -- * that are either a) not SQLite databases, or b) SQLite databases that have -- * not been opened. -- * -- * This function will have no effect on files that do not match an existing -- * quota pattern (set previously by setQuotaForFilenamePattern()). -- * -- * @param aFile -- * The file for which quota information should be updated. If the file -- * exists then its size information will be added or refreshed. If the -- * file does not exist then the file will be removed from tracking -- * under the quota system. -- */ -- void updateQuotaInformationForFile(in nsIFile aFile); --}; -diff --git storage/public/storage.h storage/public/storage.h -index 8e571e2..08f39f3 100644 ---- storage/public/storage.h -+++ storage/public/storage.h -@@ -24,7 +24,6 @@ - #include "mozIStorageStatementCallback.h" - #include "mozIStorageBindingParamsArray.h" - #include "mozIStorageBindingParams.h" --#include "mozIStorageServiceQuotaManagement.h" - #include "mozIStorageVacuumParticipant.h" - #include "mozIStorageCompletionCallback.h" - #include "mozIStorageAsyncStatement.h" -diff --git storage/src/TelemetryVFS.cpp storage/src/TelemetryVFS.cpp -index 60de5c4..e4fce09 100644 ---- storage/src/TelemetryVFS.cpp -+++ storage/src/TelemetryVFS.cpp -@@ -10,6 +10,7 @@ - #include "sqlite3.h" - #include "nsThreadUtils.h" - #include "mozilla/Util.h" -+#include "mozilla/dom/quota/QuotaManager.h" - - /** - * This preference is a workaround to allow users/sysadmins to identify -@@ -24,6 +25,7 @@ - namespace { - - using namespace mozilla; -+using namespace mozilla::dom::quota; - - struct Histograms { - const char *name; -@@ -82,9 +84,17 @@ private: - }; - - struct telemetry_file { -- sqlite3_file base; // Base class. Must be first -- Histograms *histograms; // histograms pertaining to this file -- sqlite3_file pReal[1]; // This contains the vfs that actually does work -+ // Base class. Must be first -+ sqlite3_file base; -+ -+ // histograms pertaining to this file -+ Histograms *histograms; -+ -+ // quota object for this file -+ nsRefPtr quotaObject; -+ -+ // This contains the vfs that actually does work -+ sqlite3_file pReal[1]; - }; - - /* -@@ -99,6 +109,7 @@ xClose(sqlite3_file *pFile) - if( rc==SQLITE_OK ){ - delete p->base.pMethods; - p->base.pMethods = NULL; -+ p->quotaObject = nullptr; - } - return rc; - } -@@ -126,6 +137,9 @@ int - xWrite(sqlite3_file *pFile, const void *zBuf, int iAmt, sqlite_int64 iOfst) - { - telemetry_file *p = (telemetry_file *)pFile; -+ if (p->quotaObject && !p->quotaObject->MaybeAllocateMoreSpace(iOfst, iAmt)) { -+ return SQLITE_FULL; -+ } - IOThreadAutoTimer ioTimer(p->histograms->writeMS); - int rc; - rc = p->pReal->pMethods->xWrite(p->pReal, zBuf, iAmt, iOfst); -@@ -144,6 +158,9 @@ xTruncate(sqlite3_file *pFile, sqlite_int64 size) - int rc; - Telemetry::AutoTimer timer; - rc = p->pReal->pMethods->xTruncate(p->pReal, size); -+ if (rc == SQLITE_OK && p->quotaObject) { -+ p->quotaObject->UpdateSize(size); -+ } - return rc; - } - -@@ -300,6 +317,18 @@ xOpen(sqlite3_vfs* vfs, const char *zName, sqlite3_file* pFile, - break; - } - p->histograms = h; -+ -+ const char* origin; -+ if ((flags & SQLITE_OPEN_URI) && -+ (origin = sqlite3_uri_parameter(zName, "origin"))) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ MOZ_ASSERT(quotaManager); -+ -+ p->quotaObject = quotaManager->GetQuotaObject(nsDependentCString(origin), -+ NS_ConvertUTF8toUTF16(zName)); -+ -+ } -+ - rc = orig_vfs->xOpen(orig_vfs, zName, p->pReal, flags, pOutFlags); - if( rc != SQLITE_OK ) - return rc; -diff --git storage/src/mozStorageConnection.cpp storage/src/mozStorageConnection.cpp -index 3afd3e1b..430824a 100644 ---- storage/src/mozStorageConnection.cpp -+++ storage/src/mozStorageConnection.cpp -@@ -12,6 +12,7 @@ - #include "nsIMemoryReporter.h" - #include "nsThreadUtils.h" - #include "nsIFile.h" -+#include "nsIFileURL.h" - #include "mozilla/Telemetry.h" - #include "mozilla/Mutex.h" - #include "mozilla/CondVar.h" -@@ -471,34 +472,83 @@ Connection::getAsyncExecutionTarget() - } - - nsresult --Connection::initialize(nsIFile *aDatabaseFile, -- const char* aVFSName) -+Connection::initialize() - { - NS_ASSERTION (!mDBConn, "Initialize called on already opened database!"); - SAMPLE_LABEL("storage", "Connection::initialize"); - -- int srv; -- nsresult rv; -+ // in memory database requested, sqlite uses a magic file name -+ int srv = ::sqlite3_open_v2(":memory:", &mDBConn, mFlags, NULL); -+ if (srv != SQLITE_OK) { -+ mDBConn = nullptr; -+ return convertResultCode(srv); -+ } -+ -+ return initializeInternal(nullptr); -+} -+ -+nsresult -+Connection::initialize(nsIFile *aDatabaseFile) -+{ -+ NS_ASSERTION (aDatabaseFile, "Passed null file!"); -+ NS_ASSERTION (!mDBConn, "Initialize called on already opened database!"); -+ SAMPLE_LABEL("storage", "Connection::initialize"); - - mDatabaseFile = aDatabaseFile; - -- if (aDatabaseFile) { -- nsAutoString path; -- rv = aDatabaseFile->GetPath(path); -- NS_ENSURE_SUCCESS(rv, rv); -+ nsAutoString path; -+ nsresult rv = aDatabaseFile->GetPath(path); -+ NS_ENSURE_SUCCESS(rv, rv); - -- srv = ::sqlite3_open_v2(NS_ConvertUTF16toUTF8(path).get(), &mDBConn, mFlags, -- aVFSName); -- } -- else { -- // in memory database requested, sqlite uses a magic file name -- srv = ::sqlite3_open_v2(":memory:", &mDBConn, mFlags, aVFSName); -+ int srv = ::sqlite3_open_v2(NS_ConvertUTF16toUTF8(path).get(), &mDBConn, -+ mFlags, NULL); -+ if (srv != SQLITE_OK) { -+ mDBConn = nullptr; -+ return convertResultCode(srv); - } -+ -+ rv = initializeInternal(aDatabaseFile); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mDatabaseFile = aDatabaseFile; -+ -+ return NS_OK; -+} -+ -+nsresult -+Connection::initialize(nsIFileURL *aFileURL) -+{ -+ NS_ASSERTION (aFileURL, "Passed null file URL!"); -+ NS_ASSERTION (!mDBConn, "Initialize called on already opened database!"); -+ SAMPLE_LABEL("storage", "Connection::initialize"); -+ -+ nsCOMPtr databaseFile; -+ nsresult rv = aFileURL->GetFile(getter_AddRefs(databaseFile)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsAutoCString spec; -+ rv = aFileURL->GetSpec(spec); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ int srv = ::sqlite3_open_v2(spec.get(), &mDBConn, mFlags, NULL); - if (srv != SQLITE_OK) { - mDBConn = nullptr; - return convertResultCode(srv); - } - -+ rv = initializeInternal(databaseFile); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mFileURL = aFileURL; -+ mDatabaseFile = databaseFile; -+ -+ return NS_OK; -+} -+ -+ -+nsresult -+Connection::initializeInternal(nsIFile* aDatabaseFile) -+{ - // Properly wrap the database handle's mutex. - sharedDBMutex.initWithMutex(sqlite3_db_mutex(mDBConn)); - -@@ -522,14 +572,14 @@ Connection::initialize(nsIFile *aDatabaseFile, - nsAutoCString pageSizeQuery(MOZ_STORAGE_UNIQUIFY_QUERY_STR - "PRAGMA page_size = "); - pageSizeQuery.AppendInt(pageSize); -- rv = ExecuteSimpleSQL(pageSizeQuery); -+ nsresult rv = ExecuteSimpleSQL(pageSizeQuery); - NS_ENSURE_SUCCESS(rv, rv); - - // Get the current page_size, since it may differ from the specified value. - sqlite3_stmt *stmt; - NS_NAMED_LITERAL_CSTRING(pragma_page_size, - MOZ_STORAGE_UNIQUIFY_QUERY_STR "PRAGMA page_size"); -- srv = prepareStatement(pragma_page_size, &stmt); -+ int srv = prepareStatement(pragma_page_size, &stmt); - if (srv == SQLITE_OK) { - if (SQLITE_ROW == stepStatement(stmt)) { - pageSize = ::sqlite3_column_int64(stmt, 0); -@@ -962,7 +1012,8 @@ Connection::Clone(bool aReadOnly, - nsRefPtr clone = new Connection(mStorageService, flags); - NS_ENSURE_TRUE(clone, NS_ERROR_OUT_OF_MEMORY); - -- nsresult rv = clone->initialize(mDatabaseFile); -+ nsresult rv = mFileURL ? clone->initialize(mFileURL) -+ : clone->initialize(mDatabaseFile); - NS_ENSURE_SUCCESS(rv, rv); - - // Copy over pragmas from the original connection. -diff --git storage/src/mozStorageConnection.h storage/src/mozStorageConnection.h -index b71f5db..97f5cf8 100644 ---- storage/src/mozStorageConnection.h -+++ storage/src/mozStorageConnection.h -@@ -25,6 +25,7 @@ - - struct PRLock; - class nsIFile; -+class nsIFileURL; - class nsIEventTarget; - class nsIThread; - -@@ -63,18 +64,27 @@ public: - Connection(Service *aService, int aFlags); - - /** -+ * Creates the connection to an in-memory database. -+ */ -+ nsresult initialize(); -+ -+ /** - * Creates the connection to the database. - * - * @param aDatabaseFile - * The nsIFile of the location of the database to open, or create if it -- * does not exist. Passing in nullptr here creates an in-memory -- * database. -- * @param aVFSName -- * The VFS that SQLite will use when opening this database. NULL means -- * "default". -+ * does not exist. - */ -- nsresult initialize(nsIFile *aDatabaseFile, -- const char* aVFSName = NULL); -+ nsresult initialize(nsIFile *aDatabaseFile); -+ -+ /** -+ * Creates the connection to the database. -+ * -+ * @param aFileURL -+ * The nsIFileURL of the location of the database to open, or create if it -+ * does not exist. -+ */ -+ nsresult initialize(nsIFileURL *aFileURL); - - // fetch the native handle - sqlite3 *GetNativeConnection() { return mDBConn; } -@@ -155,6 +165,8 @@ public: - private: - ~Connection(); - -+ nsresult initializeInternal(nsIFile *aDatabaseFile); -+ - /** - * Sets the database into a closed state so no further actions can be - * performed. -@@ -206,6 +218,7 @@ private: - int progressHandler(); - - sqlite3 *mDBConn; -+ nsCOMPtr mFileURL; - nsCOMPtr mDatabaseFile; - - /** -diff --git storage/src/mozStorageService.cpp storage/src/mozStorageService.cpp -index 00661d6..862a7da 100644 ---- storage/src/mozStorageService.cpp -+++ storage/src/mozStorageService.cpp -@@ -24,8 +24,6 @@ - #include "mozilla/Preferences.h" - - #include "sqlite3.h" --#include "test_quota.h" --#include "test_quota.c" - - #ifdef SQLITE_OS_WIN - // "windows.h" was included and it can #define lots of things we care about... -@@ -35,61 +33,6 @@ - #include "nsIPromptService.h" - #include "nsIMemoryReporter.h" - --namespace { -- --class QuotaCallbackData --{ --public: -- QuotaCallbackData(mozIStorageQuotaCallback *aCallback, -- nsISupports *aUserData) -- : callback(aCallback), userData(aUserData) -- { -- MOZ_COUNT_CTOR(QuotaCallbackData); -- } -- -- ~QuotaCallbackData() -- { -- MOZ_COUNT_DTOR(QuotaCallbackData); -- } -- -- static void Callback(const char *zFilename, -- sqlite3_int64 *piLimit, -- sqlite3_int64 iSize, -- void *pArg) -- { -- NS_ASSERTION(zFilename && strlen(zFilename), "Null or empty filename!"); -- NS_ASSERTION(piLimit, "Null pointer!"); -- -- QuotaCallbackData *data = static_cast(pArg); -- if (!data) { -- // No callback specified, return immediately. -- return; -- } -- -- NS_ASSERTION(data->callback, "Should never have a null callback!"); -- -- nsDependentCString filename(zFilename); -- -- int64_t newLimit; -- if (NS_SUCCEEDED(data->callback->QuotaExceeded(filename, *piLimit, -- iSize, data->userData, -- &newLimit))) { -- *piLimit = newLimit; -- } -- } -- -- static void Destroy(void *aUserData) -- { -- delete static_cast(aUserData); -- } -- --private: -- nsCOMPtr callback; -- nsCOMPtr userData; --}; -- --} // anonymous namespace -- - //////////////////////////////////////////////////////////////////////////////// - //// Defines - -@@ -345,11 +288,10 @@ private: - //////////////////////////////////////////////////////////////////////////////// - //// Service - --NS_IMPL_THREADSAFE_ISUPPORTS3( -+NS_IMPL_THREADSAFE_ISUPPORTS2( - Service, - mozIStorageService, -- nsIObserver, -- mozIStorageServiceQuotaManagement -+ nsIObserver - ) - - Service *Service::gService = nullptr; -@@ -438,10 +380,6 @@ Service::~Service() - - // Shutdown the sqlite3 API. Warn if shutdown did not turn out okay, but - // there is nothing actionable we can do in that case. -- rc = ::sqlite3_quota_shutdown(); -- if (rc != SQLITE_OK) -- NS_WARNING("sqlite3 did not shutdown cleanly."); -- - rc = ::sqlite3_shutdown(); - if (rc != SQLITE_OK) - NS_WARNING("sqlite3 did not shutdown cleanly."); -@@ -636,9 +574,6 @@ Service::initialize() - } else { - NS_WARNING("Failed to register telemetry VFS"); - } -- rc = ::sqlite3_quota_initialize("telemetry-vfs", 0); -- if (rc != SQLITE_OK) -- return convertResultCode(rc); - - // Set the default value for the toolkit.storage.synchronous pref. It will be - // updated with the user preference on the main thread. -@@ -739,28 +674,24 @@ Service::OpenSpecialDatabase(const char *aStorageKey, - // connection to use a memory DB. - } - else if (::strcmp(aStorageKey, "profile") == 0) { -- - rv = NS_GetSpecialDirectory(NS_APP_STORAGE_50_FILE, - getter_AddRefs(storageFile)); - NS_ENSURE_SUCCESS(rv, rv); - -- nsString filename; -- storageFile->GetPath(filename); -- nsCString filename8 = NS_ConvertUTF16toUTF8(filename.get()); - // fall through to DB initialization - } - else { - return NS_ERROR_INVALID_ARG; - } - -- Connection *msc = new Connection(this, SQLITE_OPEN_READWRITE); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); -+ nsRefPtr msc = new Connection(this, SQLITE_OPEN_READWRITE); - -- rv = msc->initialize(storageFile); -+ rv = storageFile ? msc->initialize(storageFile) : msc->initialize(); - NS_ENSURE_SUCCESS(rv, rv); - -- NS_ADDREF(*_connection = msc); -+ msc.forget(_connection); - return NS_OK; -+ - } - - NS_IMETHODIMP -@@ -774,12 +705,11 @@ Service::OpenDatabase(nsIFile *aDatabaseFile, - int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | - SQLITE_OPEN_CREATE; - nsRefPtr msc = new Connection(this, flags); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); - - nsresult rv = msc->initialize(aDatabaseFile); - NS_ENSURE_SUCCESS(rv, rv); - -- NS_ADDREF(*_connection = msc); -+ msc.forget(_connection); - return NS_OK; - } - -@@ -794,12 +724,30 @@ Service::OpenUnsharedDatabase(nsIFile *aDatabaseFile, - int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_PRIVATECACHE | - SQLITE_OPEN_CREATE; - nsRefPtr msc = new Connection(this, flags); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); - - nsresult rv = msc->initialize(aDatabaseFile); - NS_ENSURE_SUCCESS(rv, rv); - -- NS_ADDREF(*_connection = msc); -+ msc.forget(_connection); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+Service::OpenDatabaseWithFileURL(nsIFileURL *aFileURL, -+ mozIStorageConnection **_connection) -+{ -+ NS_ENSURE_ARG(aFileURL); -+ -+ // Always ensure that SQLITE_OPEN_CREATE is passed in for compatibility -+ // reasons. -+ int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | -+ SQLITE_OPEN_CREATE | SQLITE_OPEN_URI; -+ nsRefPtr msc = new Connection(this, flags); -+ -+ nsresult rv = msc->initialize(aFileURL); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ msc.forget(_connection); - return NS_OK; - } - -@@ -885,67 +833,5 @@ Service::Observe(nsISupports *, const char *aTopic, const PRUnichar *) - return NS_OK; - } - --//////////////////////////////////////////////////////////////////////////////// --//// mozIStorageServiceQuotaManagement -- --NS_IMETHODIMP --Service::OpenDatabaseWithVFS(nsIFile *aDatabaseFile, -- const nsACString &aVFSName, -- mozIStorageConnection **_connection) --{ -- NS_ENSURE_ARG(aDatabaseFile); -- -- // Always ensure that SQLITE_OPEN_CREATE is passed in for compatibility -- // reasons. -- int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | -- SQLITE_OPEN_CREATE; -- nsRefPtr msc = new Connection(this, flags); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); -- -- nsresult rv = msc->initialize(aDatabaseFile, -- PromiseFlatCString(aVFSName).get()); -- NS_ENSURE_SUCCESS(rv, rv); -- -- NS_ADDREF(*_connection = msc); -- return NS_OK; --} -- --NS_IMETHODIMP --Service::SetQuotaForFilenamePattern(const nsACString &aPattern, -- int64_t aSizeLimit, -- mozIStorageQuotaCallback *aCallback, -- nsISupports *aUserData) --{ -- NS_ENSURE_FALSE(aPattern.IsEmpty(), NS_ERROR_INVALID_ARG); -- -- nsAutoPtr data; -- if (aSizeLimit && aCallback) { -- data = new QuotaCallbackData(aCallback, aUserData); -- } -- -- int rc = ::sqlite3_quota_set(PromiseFlatCString(aPattern).get(), -- aSizeLimit, QuotaCallbackData::Callback, -- data, QuotaCallbackData::Destroy); -- NS_ENSURE_TRUE(rc == SQLITE_OK, convertResultCode(rc)); -- -- data.forget(); -- return NS_OK; --} -- --NS_IMETHODIMP --Service::UpdateQuotaInformationForFile(nsIFile *aFile) --{ -- NS_ENSURE_ARG_POINTER(aFile); -- -- nsString path; -- nsresult rv = aFile->GetPath(path); -- NS_ENSURE_SUCCESS(rv, rv); -- -- int rc = ::sqlite3_quota_file(NS_ConvertUTF16toUTF8(path).get()); -- NS_ENSURE_TRUE(rc == SQLITE_OK, convertResultCode(rc)); -- -- return NS_OK; --} -- - } // namespace storage - } // namespace mozilla -diff --git storage/src/mozStorageService.h storage/src/mozStorageService.h -index 21c1ff8..3f5a546 100644 ---- storage/src/mozStorageService.h -+++ storage/src/mozStorageService.h -@@ -15,7 +15,6 @@ - #include "mozilla/Mutex.h" - - #include "mozIStorageService.h" --#include "mozIStorageServiceQuotaManagement.h" - - class nsIMemoryReporter; - class nsIMemoryMultiReporter; -@@ -28,7 +27,6 @@ namespace storage { - class Connection; - class Service : public mozIStorageService - , public nsIObserver -- , public mozIStorageServiceQuotaManagement - { - public: - /** -@@ -58,7 +56,6 @@ public: - NS_DECL_ISUPPORTS - NS_DECL_MOZISTORAGESERVICE - NS_DECL_NSIOBSERVER -- NS_DECL_MOZISTORAGESERVICEQUOTAMANAGEMENT - - /** - * Obtains an already AddRefed pointer to XPConnect. This is used by -diff --git toolkit/toolkit-makefiles.sh toolkit/toolkit-makefiles.sh -index 6a7d714..8f1bbe0 100644 ---- toolkit/toolkit-makefiles.sh -+++ toolkit/toolkit-makefiles.sh -@@ -68,6 +68,7 @@ MAKEFILES_dom=" - dom/plugins/base/Makefile - dom/plugins/ipc/Makefile - dom/power/Makefile -+ dom/quota/Makefile - dom/settings/Makefile - dom/sms/Makefile - dom/sms/interfaces/Makefile Index: www/firefox/files/patch-bug803480 =================================================================== --- www/firefox/files/patch-bug803480 (revision 0) +++ www/firefox/files/patch-bug803480 (working copy) @@ -0,0 +1,41 @@ +diff --git configure.in configure.in +index fa283d0..936b6e0 100644 +--- configure.in ++++ configure.in +@@ -8229,16 +8229,26 @@ MOZ_ARG_DISABLE_BOOL(necko-wifi, + NECKO_WIFI=, + NECKO_WIFI=1) + +-if test "$OS_ARCH" = "OS2"; then +- dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566 +- NECKO_WIFI= +-fi +-if test "$NECKO_WIFI" -a \ +- "$OS_ARCH" != "Linux" -a \ +- "$OS_ARCH" != "Darwin" -a \ +- "$OS_ARCH" != "SunOS" -a \ +- "$OS_ARCH" != "WINNT"; then +- AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi]) ++if test "$NECKO_WIFI"; then ++ case "$OS_TARGET" in ++ Android) ++ ;; ++ Darwin) ++ ;; ++ SunOS) ++ ;; ++ WINNT) ++ ;; ++ OS2) ++ dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566 ++ NECKO_WIFI= ++ ;; ++ *) ++ if test -z "$MOZ_ENABLE_DBUS"; then ++ AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi]) ++ fi ++ ;; ++ esac + fi + + if test "$NECKO_WIFI"; then Property changes on: www/firefox/files/patch-bug803480 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/firefox/files/patch-bug807492 =================================================================== --- www/firefox/files/patch-bug807492 (revision 315699) +++ www/firefox/files/patch-bug807492 (working copy) @@ -2,7 +2,7 @@ index 9bd1efa..1095a01 100644 --- config/system-headers +++ config/system-headers -@@ -1066,8 +1066,10 @@ gst/app/gstappsink.h +@@ -1121,8 +1121,10 @@ gst/app/gstappsink.h gst/app/gstappsrc.h gst/video/video.h sys/msg.h @@ -17,7 +17,7 @@ index c167461..8346c11 100644 --- configure.in +++ configure.in -@@ -1413,16 +1413,27 @@ if test "$GNU_CC"; then +@@ -1449,16 +1449,27 @@ if test "$GNU_CC"; then _SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -mssse3" AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes]) @@ -45,7 +45,7 @@ # -Werror=return-type - catches missing returns, zero false positives # -Wtype-limits - catches overflow bugs, few false positives # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives -@@ -5232,17 +5243,17 @@ dnl Turn off webrtc for OS's we don't handle yet, but allow +@@ -5259,17 +5270,17 @@ dnl Turn off webrtc for OS's we don't handle yet, but allow dnl --enable-webrtc to override. Can disable for everything in dnl the master list above. if test -n "$MOZ_WEBRTC"; then @@ -64,13 +64,13 @@ ;; esac fi -@@ -8909,16 +8920,21 @@ if test "${OS_TARGET}" = "WINNT"; then - if test "$HAVE_64BIT_OS"; then - OS_BITS=64 +@@ -9065,16 +9076,21 @@ elif test "${OS_TARGET}" = "Android"; then + EXTRA_GYP_DEFINES="-D gtest_target_type=executable -D android_toolchain=${android_toolchain} -G os=android " + if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then + EXTRA_GYP_DEFINES+=" -D armv7=0 " else - OS_BITS=32 + EXTRA_GYP_DEFINES+=" -D armv7=1 " fi - EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}" fi +# Don't try to compile sse4.1 code if toolchain doesn't support @@ -85,12 +85,12 @@ dnl so that regeneration via dependencies works correctly WEBRTC_CONFIG="-D build_with_mozilla=1 --include ${srcdir}/media/webrtc/webrtc_config.gypi -D FORCED_INCLUDE_FILE=${srcdir}/media/webrtc/webrtc_config.gypi" - GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}" + GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} -D target_arch=${WEBRTC_TARGET_ARCH} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}" diff --git js/src/config/system-headers js/src/config/system-headers index 9bd1efa..1095a01 100644 --- js/src/config/system-headers +++ js/src/config/system-headers -@@ -1066,8 +1066,10 @@ gst/app/gstappsink.h +@@ -1121,8 +1121,10 @@ gst/app/gstappsink.h gst/app/gstappsrc.h gst/video/video.h sys/msg.h @@ -114,20 +114,20 @@ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/event \ $(NULL) --ifeq ($(OS_ARCH), Darwin) +-ifeq ($(OS_TARGET), Darwin) +ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LOCAL_INCLUDES += \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/darwin/include \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/generic/include \ $(NULL) -+ifeq ($(OS_ARCH), Darwin) ++ifeq ($(OS_TARGET), Darwin) DEFINES += -DDARWIN +else +DEFINES += -DBSD +endif endif - ifeq ($(OS_ARCH), Linux) + ifeq ($(OS_TARGET), Linux) LOCAL_INCLUDES += \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/linux/include \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/generic/include \ @@ -146,7 +146,7 @@ endif endif --ifeq ($(OS_ARCH), Darwin) +-ifeq ($(OS_TARGET), Darwin) +ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/darwin/include +ifeq ($(OS_TARGET), Darwin) @@ -156,13 +156,13 @@ endif +endif - ifeq ($(OS_ARCH), Linux) + ifeq ($(OS_TARGET), Linux) LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/linux/include endif - ifneq ($(OS_TARGET),WINNT) - CPP_UNIT_TESTS = \ - ice_unittest.cpp \ + ifeq ($(OS_TARGET), Android) + LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/android/include + diff --git media/mtransport/third_party/nICEr/nicer.gyp media/mtransport/third_party/nICEr/nicer.gyp index 0e1f8b4..9a4b995 100644 --- media/mtransport/third_party/nICEr/nicer.gyp @@ -210,7 +210,27 @@ index b0b66b2..04fea94 100644 --- media/mtransport/third_party/nICEr/src/stun/addrs.c +++ media/mtransport/third_party/nICEr/src/stun/addrs.c -@@ -69,17 +69,17 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex +@@ -50,17 +50,19 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex + #else + #include + /* Work around an Android NDK < r8c bug */ + #undef __unused + #include + #endif + #include + #ifndef LINUX ++#if !defined(__OpenBSD__) && !defined(__NetBSD__) + #include ++#endif + #include + #include + #include + #else + #include + #endif + #include + +@@ -75,17 +77,17 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex #include #endif /* UNIX */ @@ -229,7 +249,7 @@ * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright -@@ -675,17 +675,17 @@ nr_stun_remove_duplicate_addrs(nr_transport_addr addrs[], int remove_loopback, i +@@ -685,17 +687,17 @@ nr_stun_remove_duplicate_addrs(nr_transport_addr addrs[], int remove_loopback, i } int @@ -252,12 +272,18 @@ index a3c51f9..eb65ac8 100644 --- media/mtransport/third_party/nICEr/src/stun/stun.h +++ media/mtransport/third_party/nICEr/src/stun/stun.h -@@ -40,17 +40,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +@@ -36,21 +36,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifdef WIN32 + #include + #else #include #include #include #ifndef LINUX ++#if !defined(__OpenBSD__) && !defined(__NetBSD__) #include ++#endif #include #include #endif @@ -341,13 +367,13 @@ if (!(my_locale = r_strdup(setlocale(LC_CTYPE, 0)))) ABORT(R_NO_MEMORY); -@@ -91,28 +99,28 @@ mbslen(const char *s, size_t *ncharsp) - if (!strstr(my_locale, "UTF-8")) +@@ -93,28 +101,28 @@ mbslen(const char *s, size_t *ncharsp) + #else + /* can't count UTF-8 characters with mbrlen if the locale isn't UTF-8 */ + /* null-checking setlocale is required because Android */ + char *locale = setlocale(LC_CTYPE, 0); + if (!locale || !strcasestr(locale, "UTF-8")) ABORT(R_NOT_FOUND); - #else - /* can't count UTF-8 characters with mbrlen if the locale isn't UTF-8 */ - if (! strcasestr(setlocale(LC_CTYPE, 0), "UTF-8")) - ABORT(R_NOT_FOUND); #endif -#ifdef DARWIN @@ -416,6 +442,28 @@ 'NEW_STDIO' 'RETSIGTYPE=void', 'TIME_WITH_SYS_TIME_H=1', +diff --git media/mtransport/third_party/nrappkit/src/log/r_log.c media/mtransport/third_party/nrappkit/src/log/r_log.c +index b25d5c2..b207b8c 100644 +--- media/mtransport/third_party/nrappkit/src/log/r_log.c ++++ media/mtransport/third_party/nrappkit/src/log/r_log.c +@@ -43,16 +43,17 @@ static char *RCSSTRING __UNUSED__ ="$Id: r_log.c,v 1.10 2008/11/25 22:25:18 adam + #ifdef LINUX + #define _BSD_SOURCE + #endif + + #include "r_log.h" + #include "hex.h" + + #include ++#include + #ifndef _MSC_VER + #include + #include + #endif + #include + #include + + diff --git media/mtransport/third_party/nrappkit/src/port/darwin/include/csi_platform.h media/mtransport/third_party/nrappkit/src/port/darwin/include/csi_platform.h index 15452e3..2c9651a 100644 --- media/mtransport/third_party/nrappkit/src/port/darwin/include/csi_platform.h @@ -446,20 +494,20 @@ index bcb1ec0..bb73591 100644 --- media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h +++ media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h -@@ -33,5 +33,5 @@ - #define _SYS_QUEUE_H_ - +@@ -33,7 +33,7 @@ + #ifndef _SYS_QUEUE_H_ + #define _SYS_QUEUE_H_ + -#ifndef DARWIN -+#if !defined(BSD) && !defined(DARWIN) ++#if !defined(__FreeBSD__) && !defined(DARWIN) #include #define __offsetof offsetof #endif - diff --git media/mtransport/third_party/nrappkit/src/util/util.c media/mtransport/third_party/nrappkit/src/util/util.c index 3aced8b..be020bb 100644 --- media/mtransport/third_party/nrappkit/src/util/util.c +++ media/mtransport/third_party/nrappkit/src/util/util.c -@@ -36,16 +36,19 @@ +@@ -36,20 +36,24 @@ ekr@rtfm.com Wed Dec 26 17:19:36 2001 */ @@ -475,11 +523,16 @@ #include #endif #include ++#include #include #include #ifdef OPENSSL #include -@@ -431,17 +434,17 @@ int nr_reg_uint8_fetch_and_check(NR_registry key, UINT8 min, UINT8 max, int log_ + #endif + #include "nr_common.h" + #include "r_common.h" + #include "registry.h" +@@ -431,17 +435,17 @@ int nr_reg_uint8_fetch_and_check(NR_registry key, UINT8 min, UINT8 max, int log_ abort: if(die && _status){ r_log(log_fac,LOG_CRIT,"Exiting due to invalid configuration (key '%s')",key); @@ -499,15 +552,15 @@ if (! buf) diff --git media/webrtc/signaling/signaling.gyp media/webrtc/signaling/signaling.gyp -index f0cbf870..ba0f801 100644 +index 2a91e3d..31de641 100644 --- media/webrtc/signaling/signaling.gyp +++ media/webrtc/signaling/signaling.gyp -@@ -208,16 +208,29 @@ +@@ -212,16 +212,29 @@ 'SIPCC_BUILD', 'HAVE_WINSOCK2_H', 'CPR_STDINT_INCLUDE=\\"mozilla/StandardInteger.h\\"' ], - + 'cflags_mozilla': [ ], }], @@ -529,35 +582,35 @@ ], 'defines': [ 'SIP_OS_OSX', - 'OSX', + 'OSX', '_FORTIFY_SOURCE=2', ], -@@ -701,17 +714,17 @@ +@@ -747,17 +760,17 @@ 'EXTERNAL_TICK_REQUIRED', 'GIPS_VER=3480', ], - + 'cflags_mozilla': [ ], - + }], - ['OS=="mac"', { + ['OS=="mac" or os_bsd==1', { 'include_dirs': [ ], - + 'sources': [ # SIPSTACK './src/sipcc/core/sipstack/sip_platform_task.c', - -@@ -746,24 +759,23 @@ + +@@ -792,24 +805,23 @@ './src/sipcc/cpr/darwin/cpr_darwin_timers_using_select.c', './src/sipcc/cpr/darwin/cpr_darwin_tst.h', './src/sipcc/cpr/darwin/cpr_darwin_types.h', ], - + 'defines' : [ 'SIP_OS_OSX', - '_POSIX_SOURCE', @@ -571,12 +624,12 @@ - '_DARWIN_C_SOURCE', 'NO_NSPR_10_SUPPORT', ], - + 'cflags_mozilla': [ ], }], ], - + diff --git media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c index a7c47e1..4f191de 100644 --- media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c @@ -611,7 +664,7 @@ index a30e330..cfbd8a3 100644 --- media/webrtc/signaling/test/Makefile.in +++ media/webrtc/signaling/test/Makefile.in -@@ -22,32 +22,32 @@ LIBS = \ +@@ -22,17 +22,17 @@ LIBS = \ $(DEPTH)/media/webrtc/signalingtest/signaling_ecc/$(LIB_PREFIX)ecc.$(LIB_SUFFIX) \ $(DEPTH)/media/webrtc/signalingtest/signaling_sipcc/$(LIB_PREFIX)sipcc.$(LIB_SUFFIX) \ $(DEPTH)/layout/media/$(LIB_PREFIX)gkmedias.$(LIB_SUFFIX) \ @@ -620,7 +673,7 @@ $(NULL) ifdef MOZ_SYDNEYAUDIO --ifeq ($(OS_ARCH),Linux) +-ifeq ($(OS_TARGET),Linux) +ifneq (,$(filter Linux DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LIBS += \ $(MOZ_ALSA_LIBS) \ @@ -628,22 +681,25 @@ endif endif - ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT)) + ifeq ($(OS_TARGET),Android) LIBS += \ +@@ -76,17 +76,17 @@ endif + ifeq (qt,$(MOZ_WIDGET_TOOLKIT)) + LIBS += \ $(XLIBS) \ - $(MOZ_GTK2_LIBS) \ - -lgthread-2.0 \ + $(TK_LIBS) \ + $(MOZ_PANGO_LIBS) \ $(NULL) endif --ifeq ($(OS_ARCH),Linux) +-ifeq ($(OS_TARGET),Linux) +ifneq (,$(filter Linux DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LIBS += \ $(MOZ_CAIRO_OSLIBS) \ $(NULL) endif - ifeq ($(OS_ARCH),Darwin) + ifeq ($(OS_TARGET),Darwin) LIBS += \ -framework AudioToolbox \ diff --git media/webrtc/trunk/build/common.gypi media/webrtc/trunk/build/common.gypi @@ -750,7 +806,7 @@ index 9ca9f7c..d5c4ab9 100644 --- media/webrtc/trunk/src/build/common.gypi +++ media/webrtc/trunk/src/build/common.gypi -@@ -101,16 +101,23 @@ +@@ -101,16 +101,21 @@ 'enable_protobuf%': 1, 'include_tests%': 1, @@ -760,10 +816,8 @@ 'clang_use_chrome_plugins%': 0, }], + ['OS=="linux" or OS=="solaris" or os_bsd==1', { -+ 'include_alsa_audio%': 1, + 'include_v4l2_video_capture%': 1, + }, { -+ 'include_alsa_audio%': 0, + 'include_v4l2_video_capture%': 0, + }], ], # conditions @@ -774,7 +828,7 @@ '..','../..', ], 'defines': [ -@@ -174,16 +181,28 @@ +@@ -176,16 +181,28 @@ 'defines': [ 'WEBRTC_LINUX', 'WEBRTC_THREAD_RR', @@ -803,68 +857,6 @@ 'WEBRTC_CLOCK_TYPE_REALTIME', ], }], -diff --git media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi -index 8457737..4d0f322 100644 ---- media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi -+++ media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi -@@ -41,21 +41,25 @@ - 'audio_device_utility.h', - 'audio_device_impl.cc', - 'audio_device_impl.h', - 'audio_device_config.h', - 'dummy/audio_device_dummy.h', - 'dummy/audio_device_utility_dummy.h', - ], - 'conditions': [ -- ['OS=="linux"', { -+ ['include_alsa_audio==1', { - 'include_dirs': [ - 'linux', - ], -- }], # OS==linux -+ 'defines': [ -+ # avoiding pointless ifdef churn -+ 'WEBRTC_LINUX', -+ ], -+ }], # include_alsa_audio==1 - ['OS=="mac"', { - 'include_dirs': [ - 'mac', - ], - }], # OS==mac - ['OS=="win"', { - 'include_dirs': [ - 'win', -@@ -111,24 +115,26 @@ - 'link_settings': { - 'libraries': [ - '-llog', - '-lOpenSLES', - ], - }, - }], - ['OS=="linux"', { -- 'defines': [ -- 'LINUX_ALSA', -- ], - 'link_settings': { - 'libraries': [ - '-ldl', - ], - }, -+ }], -+ ['include_alsa_audio==1', { -+ 'defines': [ -+ 'LINUX_ALSA', -+ ], - 'conditions': [ - ['include_pulse_audio==1', { - 'defines': [ - 'LINUX_PULSE', - ], - 'sources': [ - 'linux/audio_device_pulse_linux.cc', - 'linux/audio_device_pulse_linux.h', diff --git media/webrtc/trunk/src/modules/audio_device/main/source/audio_device_utility.cc media/webrtc/trunk/src/modules/audio_device/main/source/audio_device_utility.cc index 203f09a..0b0b70e 100644 --- media/webrtc/trunk/src/modules/audio_device/main/source/audio_device_utility.cc @@ -1341,7 +1333,7 @@ index 0a9765e..8d4bbf4 100644 --- media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi +++ media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi -@@ -50,17 +50,17 @@ +@@ -55,17 +55,17 @@ ['include_internal_video_capture==0', { 'sources': [ 'External/device_info_external.cc', @@ -1360,7 +1352,7 @@ 'Linux/video_capture_linux.h', 'Linux/device_info_linux.cc', 'Linux/video_capture_linux.cc', -@@ -157,31 +157,35 @@ +@@ -162,31 +162,35 @@ '../interface', ], 'sources': [ @@ -1798,7 +1790,7 @@ namespace webrtc { extern "C" -@@ -116,16 +125,28 @@ ThreadPosix::ThreadPosix(ThreadRunFunction func, ThreadObj obj, +@@ -116,16 +125,30 @@ ThreadPosix::ThreadPosix(ThreadRunFunction func, ThreadObj obj, } } @@ -1811,6 +1803,8 @@ + return _lwp_self(); +#elif defined(__DragonFly__) + return lwp_gettid(); ++#elif defined(__OpenBSD__) ++ return reinterpret_cast (pthread_self()); +#elif defined(__FreeBSD__) +# if __FreeBSD_version > 900030 + return pthread_getthreadid_np(); @@ -1827,7 +1821,7 @@ int ThreadPosix::Construct() { int result = 0; -@@ -154,16 +175,17 @@ ThreadPosix::~ThreadPosix() +@@ -154,16 +177,17 @@ ThreadPosix::~ThreadPosix() { pthread_attr_destroy(&_attr); delete _event; @@ -1845,7 +1839,7 @@ #endif { if (!_runFunction) -@@ -229,31 +251,39 @@ bool ThreadPosix::Start(unsigned int& /*threadID*/) +@@ -229,31 +253,39 @@ bool ThreadPosix::Start(unsigned int& /*threadID*/) { return false; } @@ -1887,7 +1881,7 @@ #else // "Normal" Linux. const int result = sched_setaffinity(_pid, -@@ -340,16 +370,20 @@ void ThreadPosix::Run() +@@ -340,16 +372,20 @@ void ThreadPosix::Run() #endif // The event the Start() is waiting for. _event->Set(); @@ -1908,6 +1902,29 @@ WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1, "Thread without name started"); } +diff --git media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc +index f3a5306..d9c2810 100644 +--- media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc ++++ media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc +@@ -52,17 +52,17 @@ WebRtc_Word32 TracePosix::AddTime(char* traceMessage, + { + struct timeval systemTimeHighRes; + if (gettimeofday(&systemTimeHighRes, 0) == -1) + { + return -1; + } + struct tm buffer; + const struct tm* systemTime = +- localtime_r(&systemTimeHighRes.tv_sec, &buffer); ++ localtime_r((const time_t *)(&systemTimeHighRes.tv_sec), &buffer); + + const WebRtc_UWord32 ms_time = systemTimeHighRes.tv_usec / 1000; + WebRtc_UWord32 prevTickCount = 0; + if (level == kTraceApiCall) + { + prevTickCount = _prevTickCount; + _prevTickCount = ms_time; + } else { diff --git media/webrtc/trunk/src/video_engine/vie_defines.h media/webrtc/trunk/src/video_engine/vie_defines.h index 2cc18cc7..2c042a0 100644 --- media/webrtc/trunk/src/video_engine/vie_defines.h @@ -1996,7 +2013,7 @@ index 7d4c729..4104719 100644 --- media/webrtc/trunk/src/voice_engine/voice_engine_defines.h +++ media/webrtc/trunk/src/voice_engine/voice_engine_defines.h -@@ -434,41 +434,44 @@ namespace webrtc +@@ -437,41 +437,44 @@ namespace webrtc #else #define ANDROID_NOT_SUPPORTED(stat) @@ -2042,7 +2059,7 @@ #define TRUE 1 #define SOCKADDR_IN struct sockaddr_in #define UINT unsigned int -@@ -576,13 +579,13 @@ namespace webrtc +@@ -579,13 +582,13 @@ namespace webrtc // Defines // ---------------------------------------------------------------------------- Index: www/firefox/files/patch-bug810716 =================================================================== --- www/firefox/files/patch-bug810716 (revision 0) +++ www/firefox/files/patch-bug810716 (working copy) @@ -0,0 +1,68 @@ +diff --git configure.in configure.in +index 2084be9..eb6eeb2 100644 +--- configure.in ++++ configure.in +@@ -3369,14 +3369,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + +diff --git extensions/auth/nsAuthGSSAPI.cpp extensions/auth/nsAuthGSSAPI.cpp +index e828beb..6444246 100644 +--- extensions/auth/nsAuthGSSAPI.cpp ++++ extensions/auth/nsAuthGSSAPI.cpp +@@ -39,6 +39,9 @@ typedef KLStatus (*KLCacheHasValidTickets_type)( + #endif + + #if defined(HAVE_RES_NINIT) ++#include ++#include ++#include + #include + #endif + +diff --git js/src/configure.in js/src/configure.in +index e25f569..b9722f9 100644 +--- js/src/configure.in ++++ js/src/configure.in +@@ -2797,14 +2797,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + Property changes on: www/firefox/files/patch-bug810716 ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: www/firefox/files/patch-bug817267 =================================================================== --- www/firefox/files/patch-bug817267 (revision 315699) +++ www/firefox/files/patch-bug817267 (working copy) @@ -1,36 +0,0 @@ -commit faafeb1 -Author: Jan Beich -Date: Sat Dec 1 21:25:24 2012 -0500 - - Bug 817267 - dirfd() is a macro on some BSDs, fix build there. r=yoric ---- - dom/system/OSFileConstants.cpp | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git dom/system/OSFileConstants.cpp dom/system/OSFileConstants.cpp -index 75a41dc..63fc6b1 100644 ---- dom/system/OSFileConstants.cpp -+++ dom/system/OSFileConstants.cpp -@@ -41,6 +41,11 @@ - #include "OSFileConstants.h" - #include "nsIOSFileConstantsService.h" - -+#if defined(__DragonFly__) || defined(__FreeBSD__) \ -+ || defined(__NetBSD__) || defined(__OpenBSD__) -+#define __dd_fd dd_fd -+#endif -+ - /** - * This module defines the basic libc constants (error numbers, open modes, - * etc.) used by OS.File and possibly other OS-bound JavaScript libraries. -@@ -383,8 +388,8 @@ static dom::ConstantSpec gLibcProperties[] = - { "OSFILE_OFFSETOF_DIRENT_D_TYPE", INT_TO_JSVAL(offsetof (struct dirent, d_type)) }, - #endif // defined(DT_UNKNOWN) - -- // Under MacOS X, |dirfd| is a macro rather than a function, so we -- // need a little help to get it to work -+ // Under MacOS X and BSDs, |dirfd| is a macro rather than a -+ // function, so we need a little help to get it to work - #if defined(dirfd) - { "OSFILE_SIZEOF_DIR", INT_TO_JSVAL(sizeof (DIR)) }, - Index: www/firefox/files/patch-bug817481 =================================================================== --- www/firefox/files/patch-bug817481 (revision 315699) +++ www/firefox/files/patch-bug817481 (working copy) @@ -1,26 +0,0 @@ -commit 93d56d2 -Author: Makoto Kato -Date: Mon Dec 3 17:01:16 2012 +0900 - - Bug 817481 - Build failure on WebRTC unit test with --with-system-libvpx. r=jesup ---- - media/webrtc/signaling/test/Makefile.in | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git media/webrtc/signaling/test/Makefile.in media/webrtc/signaling/test/Makefile.in -index 81a38ff..e10e869 100644 ---- media/webrtc/signaling/test/Makefile.in -+++ media/webrtc/signaling/test/Makefile.in -@@ -34,6 +34,12 @@ LIBS += \ - endif - endif - -+ifdef MOZ_NATIVE_LIBVPX -+LIBS += \ -+ $(MOZ_LIBVPX_LIBS) \ -+ $(NULL) -+endif -+ - ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT)) - LIBS += \ - $(XLIBS) \ Index: www/firefox/files/patch-bug824317 =================================================================== --- www/firefox/files/patch-bug824317 (revision 0) +++ www/firefox/files/patch-bug824317 (working copy) @@ -0,0 +1,14 @@ +diff --git a/xpcom/string/public/nsAlgorithm.h b/xpcom/string/public/nsAlgorithm.h +index fa50194a..c5f5737 100644 +--- xpcom/string/public/nsAlgorithm.h ++++ xpcom/string/public/nsAlgorithm.h +@@ -42,7 +42,8 @@ NS_MAX( const T& a, const T& b ) + return a > b ? a : b; + } + +-#if defined(_MSC_VER) && (_MSC_VER < 1600) ++#if (defined(_MSC_VER) && (_MSC_VER < 1600)) || \ ++ (defined(_GLIBCXX_USE_LONG_LONG) && (!_GLIBCXX_USE_C99 || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC)) + namespace std { + inline + long long Property changes on: www/firefox/files/patch-bug824317 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/firefox/files/patch-bug826985 =================================================================== --- www/firefox/files/patch-bug826985 (revision 315699) +++ www/firefox/files/patch-bug826985 (working copy) @@ -1,106 +1,83 @@ -commit d18000b +commit 8024d93 Author: Henrik Gulbrandsen Date: Fri Jan 4 13:49:22 2013 +0100 Bug 826985 - Support more video formats for WebRTC via libv4l2 on Linux. --- - configure.in | 13 ++++++ - .../main/source/Linux/device_info_linux.cc | 30 ++++++++------ - .../main/source/Linux/video_capture_linux.cc | 47 ++++++++++++---------- - .../video_capture/main/source/video_capture.gypi | 1 + - toolkit/library/Makefile.in | 3 ++ - 5 files changed, 60 insertions(+), 34 deletions(-) + configure.in | 7 +++++++ + media/webrtc/signaling/test/Makefile.in | 1 + + .../modules/video_capture/main/source/Linux/device_info_linux.cc | 17 +++++++++++++++++ + .../modules/video_capture/main/source/Linux/video_capture_linux.cc | 16 +++++++++++++++- + .../webrtc/modules/video_capture/main/source/video_capture.gypi | 11 +++++++++++ + toolkit/library/Makefile.in | 1 + + 6 files changed, 52 insertions(+), 1 deletion(-) diff --git configure.in configure.in -index 6d05f9c..297615f 100644 +index 55e4cd1..76567b3 100644 --- configure.in +++ configure.in -@@ -5270,6 +5270,17 @@ if test -n "$MOZ_WEBRTC"; then - MOZ_VP8=1 +@@ -5238,6 +5238,9 @@ if test -n "$MOZ_WEBRTC"; then MOZ_VP8_ENCODER=1 MOZ_VP8_ERROR_CONCEALMENT=1 -+ dnl use libv4l on Linux to support more cameras -+ case "$target" in -+ *-android*|*-linuxandroid*) -+ ;; -+ *-linux*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*) -+ MOZ_WEBRTC_LIBV4L=1 -+ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2, , -+ [echo "$MOZ_LIBV4L2_PKG_ERRORS" -+ AC_MSG_ERROR([WebRTC on Linux needs libv4l2 for video format conversion.])]) -+ ;; -+ esac - dnl enable once Signaling lands - MOZ_WEBRTC_SIGNALING=1 - AC_DEFINE(MOZ_WEBRTC_SIGNALING) -@@ -5288,6 +5299,7 @@ fi - AC_SUBST(MOZ_WEBRTC) - AC_SUBST(MOZ_WEBRTC_SIGNALING) - AC_SUBST(MOZ_PEERCONNECTION) -+AC_SUBST(MOZ_WEBRTC_LIBV4L) - AC_SUBST(MOZ_WEBRTC_IN_LIBXUL) - AC_SUBST(MOZ_SCTP) - AC_SUBST(MOZ_SRTP) + ++ dnl with libv4l2 we can support more cameras ++ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2) ++ + dnl OpenSLES is only available in Android 2.3 and later; we'll change this + dnl hard dependency to a dynamic load with graceful runtime failure before + dnl we make --enable-webrtc on by default in Android (bug 815905) +@@ -8981,6 +8984,10 @@ elif test "${OS_TARGET}" = "Android"; then + fi + fi + ++if test -n "$MOZ_LIBV4L2_LIBS"; then ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D use_libv4l2=1" ++fi ++ + if test -n "$MOZ_WEBRTC"; then + AC_MSG_RESULT("generating WebRTC Makefiles...") + +diff --git media/webrtc/signaling/test/Makefile.in media/webrtc/signaling/test/Makefile.in +index b483cd1..f1dd1f0 100644 +--- media/webrtc/signaling/test/Makefile.in ++++ media/webrtc/signaling/test/Makefile.in +@@ -17,6 +17,7 @@ LIBS = \ + $(NSPR_LIBS) \ + $(NSS_LIBS) \ + $(REALTIME_LIBS) \ ++ $(MOZ_LIBV4L2_LIBS) \ + $(DEPTH)/xpcom/glue/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \ + $(DEPTH)/media/mtransport/standalone/$(LIB_PREFIX)mtransport_s.$(LIB_SUFFIX) \ + $(DEPTH)/media/webrtc/signalingtest/signaling_ecc/$(LIB_PREFIX)ecc.$(LIB_SUFFIX) \ diff --git media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc -index 653ee16..270f064 100644 +index 239a292..bab496c 100644 --- media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc +++ media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc -@@ -26,6 +26,7 @@ +@@ -26,11 +26,23 @@ #else #include #endif ++#ifdef HAVE_LIBV4L2 +#include ++#endif #include "ref_count.h" #include "trace.h" -@@ -68,9 +69,9 @@ WebRtc_UWord32 DeviceInfoLinux::NumberOfDevices() - for (int n = 0; n < 64; n++) - { - sprintf(device, "/dev/video%d", n); -- if ((fd = open(device, O_RDONLY)) != -1) -+ if ((fd = v4l2_open(device, O_RDONLY)) != -1) - { -- close(fd); -+ v4l2_close(fd); - count++; - } - } -@@ -97,14 +98,14 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName( - for (int n = 0; n < 64; n++) - { - sprintf(device, "/dev/video%d", n); -- if ((fd = open(device, O_RDONLY)) != -1) -+ if ((fd = v4l2_open(device, O_RDONLY)) != -1) - { - if (count == deviceNumber) { - // Found the device - found = true; - break; - } else { -- close(fd); -+ v4l2_close(fd); - count++; - } - } -@@ -115,21 +116,26 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName( - // query device capabilities - struct v4l2_capability cap; -- if (ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0) -+ if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in querying the device capability for device %s. errno = %d", - device, errno); -- close(fd); -+ v4l2_close(fd); - return -1; - } -- close(fd); -+ v4l2_close(fd); - - char cameraName[64]; ++#ifdef HAVE_LIBV4L2 ++#define open v4l2_open ++#define close v4l2_close ++#define dup v4l2_dup ++#define ioctl v4l2_ioctl ++#define mmap v4l2_mmap ++#define munmap v4l2_munmap ++#endif ++ + namespace webrtc + { + namespace videocapturemodule +@@ -130,6 +142,11 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName( memset(deviceNameUTF8, 0, deviceNameLength); memcpy(cameraName, cap.card, sizeof(cap.card)); @@ -112,259 +89,76 @@ if (deviceNameLength >= strlen(cameraName)) { memcpy(deviceNameUTF8, cameraName, strlen(cameraName)); -@@ -181,13 +187,13 @@ WebRtc_Word32 DeviceInfoLinux::CreateCapabilityMap( - for (int n = 0; n < 64; ++n) - { - sprintf(device, "/dev/video%d", n); -- fd = open(device, O_RDONLY); -+ fd = v4l2_open(device, O_RDONLY); - if (fd == -1) - continue; - - // query device capabilities - struct v4l2_capability cap; -- if (ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) -+ if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) - { - if (cap.bus_info[0] != 0) - { -@@ -209,7 +215,7 @@ WebRtc_Word32 DeviceInfoLinux::CreateCapabilityMap( - } - } - } -- close(fd); // close since this is not the matching device -+ v4l2_close(fd); // close since this is not the matching device - } - - if (!found) -@@ -228,7 +234,7 @@ WebRtc_Word32 DeviceInfoLinux::CreateCapabilityMap( - } - - int size = FillCapabilityMap(fd); -- close(fd); -+ v4l2_close(fd); - - // Store the new used device name - _lastUsedDeviceNameLength = deviceUniqueIdUTF8Length; -@@ -282,7 +288,7 @@ WebRtc_Word32 DeviceInfoLinux::FillCapabilityMap(int fd) - video_fmt.fmt.pix.width = size[i][0]; - video_fmt.fmt.pix.height = size[i][1]; - -- if (ioctl(fd, VIDIOC_TRY_FMT, &video_fmt) >= 0) -+ if (v4l2_ioctl(fd, VIDIOC_TRY_FMT, &video_fmt) >= 0) - { - if ((video_fmt.fmt.pix.width == size[i][0]) - && (video_fmt.fmt.pix.height == size[i][1])) diff --git media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc -index 12df1b3..4ddc9d4 100644 +index 12df1b3..e9863ba 100644 --- media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc +++ media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc -@@ -25,6 +25,7 @@ +@@ -25,6 +25,9 @@ #else #include #endif ++#ifdef HAVE_LIBV4L2 +#include ++#endif #include -@@ -79,11 +82,11 @@ WebRtc_Word32 VideoCaptureModuleV4L2::Init(const char* deviceUniqueIdUTF8) - for (n = 0; n < 64; n++) - { - sprintf(device, "/dev/video%d", n); -- if ((fd = open(device, O_RDONLY)) != -1) -+ if ((fd = v4l2_open(device, O_RDONLY)) != -1) - { - // query device capabilities - struct v4l2_capability cap; -- if (ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) -+ if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) - { - if (cap.bus_info[0] != 0) - { -@@ -91,13 +94,13 @@ WebRtc_Word32 VideoCaptureModuleV4L2::Init(const char* deviceUniqueIdUTF8) - (const char*) deviceUniqueIdUTF8, - strlen((const char*) deviceUniqueIdUTF8)) == 0) //match with device id - { -- close(fd); -+ v4l2_close(fd); - found = true; - break; // fd matches with device unique id supplied - } - } - } -- close(fd); // close since this is not the matching device -+ v4l2_close(fd); // close since this is not the matching device - } - } - if (!found) -@@ -117,7 +120,7 @@ VideoCaptureModuleV4L2::~VideoCaptureModuleV4L2() - delete _captureCritSect; - } - if (_deviceFd != -1) -- close(_deviceFd); -+ v4l2_close(_deviceFd); - } +@@ -26,6 +31,15 @@ + #include "critical_section_wrapper.h" + #include "video_capture_linux.h" - WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( -@@ -142,7 +145,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - char device[20]; - sprintf(device, "/dev/video%d", (int) _deviceId); - -- if ((_deviceFd = open(device, O_RDWR | O_NONBLOCK, 0)) < 0) -+ if ((_deviceFd = v4l2_open(device, O_RDWR | O_NONBLOCK, 0)) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in opening %s errono = %d", device, errno); -@@ -175,7 +178,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - for (int i = 0; i < nFormats; i++) - { - video_fmt.fmt.pix.pixelformat = fmts[i]; -- if (ioctl(_deviceFd, VIDIOC_TRY_FMT, &video_fmt) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_TRY_FMT, &video_fmt) < 0) - { - continue; - } -@@ -200,7 +203,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - _captureVideoType = kVideoMJPEG; - - //set format and frame size now -- if (ioctl(_deviceFd, VIDIOC_S_FMT, &video_fmt) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_S_FMT, &video_fmt) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in VIDIOC_S_FMT, errno = %d", errno); -@@ -217,7 +220,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - struct v4l2_streamparm streamparms; - memset(&streamparms, 0, sizeof(streamparms)); - streamparms.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if (ioctl(_deviceFd, VIDIOC_G_PARM, &streamparms) < 0) { -+ if (v4l2_ioctl(_deviceFd, VIDIOC_G_PARM, &streamparms) < 0) { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in VIDIOC_G_PARM errno = %d", errno); - driver_framerate_support = false; -@@ -230,7 +233,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - streamparms.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - streamparms.parm.capture.timeperframe.numerator = 1; - streamparms.parm.capture.timeperframe.denominator = capability.maxFPS; -- if (ioctl(_deviceFd, VIDIOC_S_PARM, &streamparms) < 0) { -+ if (v4l2_ioctl(_deviceFd, VIDIOC_S_PARM, &streamparms) < 0) { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "Failed to set the framerate. errno=%d", errno); - driver_framerate_support = false; -@@ -268,7 +271,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - // Needed to start UVC camera - from the uvcview application - enum v4l2_buf_type type; - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if (ioctl(_deviceFd, VIDIOC_STREAMON, &type) == -1) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_STREAMON, &type) == -1) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "Failed to turn on stream"); -@@ -303,7 +306,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StopCapture() - _captureThread = NULL; - - DeAllocateVideoBuffers(); -- close(_deviceFd); -+ v4l2_close(_deviceFd); - _deviceFd = -1; - } - -@@ -321,7 +324,7 @@ bool VideoCaptureModuleV4L2::AllocateVideoBuffers() - rbuffer.memory = V4L2_MEMORY_MMAP; - rbuffer.count = kNoOfV4L2Bufffers; - -- if (ioctl(_deviceFd, VIDIOC_REQBUFS, &rbuffer) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_REQBUFS, &rbuffer) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "Could not get buffers from device. errno = %d", errno); -@@ -344,24 +347,24 @@ bool VideoCaptureModuleV4L2::AllocateVideoBuffers() - buffer.memory = V4L2_MEMORY_MMAP; - buffer.index = i; - -- if (ioctl(_deviceFd, VIDIOC_QUERYBUF, &buffer) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_QUERYBUF, &buffer) < 0) - { - return false; - } - -- _pool[i].start = mmap(NULL, buffer.length, PROT_READ | PROT_WRITE, MAP_SHARED, -+ _pool[i].start = v4l2_mmap(NULL, buffer.length, PROT_READ | PROT_WRITE, MAP_SHARED, - _deviceFd, buffer.m.offset); - - if (MAP_FAILED == _pool[i].start) - { - for (unsigned int j = 0; j < i; j++) -- munmap(_pool[j].start, _pool[j].length); -+ v4l2_munmap(_pool[j].start, _pool[j].length); - return false; - } - - _pool[i].length = buffer.length; - -- if (ioctl(_deviceFd, VIDIOC_QBUF, &buffer) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_QBUF, &buffer) < 0) - { - return false; - } -@@ -373,14 +376,14 @@ bool VideoCaptureModuleV4L2::DeAllocateVideoBuffers() ++#ifdef HAVE_LIBV4L2 ++#define open v4l2_open ++#define close v4l2_close ++#define dup v4l2_dup ++#define ioctl v4l2_ioctl ++#define mmap v4l2_mmap ++#define munmap v4l2_munmap ++#endif ++ + namespace webrtc { - // unmap buffers - for (int i = 0; i < _buffersAllocatedByDevice; i++) -- munmap(_pool[i].start, _pool[i].length); -+ v4l2_munmap(_pool[i].start, _pool[i].length); - - delete[] _pool; - - // turn off stream - enum v4l2_buf_type type; - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if (ioctl(_deviceFd, VIDIOC_STREAMOFF, &type) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_STREAMOFF, &type) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "VIDIOC_STREAMOFF error. errno: %d", errno); -@@ -438,7 +441,7 @@ bool VideoCaptureModuleV4L2::CaptureProcess() - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - // dequeue a buffer - repeat until dequeued properly! -- while (ioctl(_deviceFd, VIDIOC_DQBUF, &buf) < 0) -+ while (v4l2_ioctl(_deviceFd, VIDIOC_DQBUF, &buf) < 0) - { - if (errno != EINTR) - { -@@ -457,7 +460,7 @@ bool VideoCaptureModuleV4L2::CaptureProcess() - IncomingFrame((unsigned char*) _pool[buf.index].start, - buf.bytesused, frameInfo); - // enqueue the buffer again -- if (ioctl(_deviceFd, VIDIOC_QBUF, &buf) == -1) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_QBUF, &buf) == -1) - { - WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceVideoCapture, _id, - "Failed to enqueue capture buffer"); + namespace videocapturemodule diff --git media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi -index 8d38102..3e8f76b 100644 +index d46b5aa..e452223 100644 --- media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi +++ media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi -@@ -179,6 +179,7 @@ - 'libraries': [ - '-lXext', - '-lX11', -+ '-lv4l2', +@@ -7,6 +7,9 @@ + # be found in the AUTHORS file in the root of the source tree. + + { ++ 'variables': { ++ 'use_libv4l2%': 0, ++ }, + 'targets': [ + { + 'target_name': 'video_capture_module', +@@ -49,6 +52,16 @@ + }, { # include_internal_video_capture == 1 + 'conditions': [ + ['include_v4l2_video_capture==1', { ++ 'conditions': [ ++ ['use_libv4l2==1', { ++ 'defines': [ ++ 'HAVE_LIBV4L2', ++ ], ++ 'libraries': [ ++ '-lv4l2', ++ ], ++ }], ++ ], + 'include_dirs': [ + 'linux', ], - }], - ['OS=="linux"', { diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 0440c26..8f6c735 100644 +index 9c16ffa..1db3794 100644 --- toolkit/library/Makefile.in +++ toolkit/library/Makefile.in -@@ -411,6 +411,9 @@ EXTRA_DSO_LDOPTS += \ - $(DEPTH)/media/webrtc/signaling/signaling_sipcc/$(LIB_PREFIX)sipcc.$(LIB_SUFFIX) \ - $(NULL) +@@ -405,6 +405,7 @@ endif + EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib) + + ifdef MOZ_WEBRTC ++EXTRA_DSO_LDOPTS += $(MOZ_LIBV4L2_LIBS) + ifdef MOZ_PEERCONNECTION + COMPONENT_LIBS += peerconnection endif -+ifdef MOZ_WEBRTC_LIBV4L -+EXTRA_DSO_LDOPTS += $(MOZ_LIBV4L2_LIBS) -+endif - ifdef MOZ_WEBRTC_IN_LIBXUL - include $(topsrcdir)/media/webrtc/shared_libs.mk - EXTRA_DSO_LDOPTS += $(WEBRTC_LIBS) Index: www/firefox/files/patch-bug827521 =================================================================== --- www/firefox/files/patch-bug827521 (revision 0) +++ www/firefox/files/patch-bug827521 (working copy) @@ -0,0 +1,147 @@ +commit ab46441 +Author: Graeme McCutcheon +Date: Thu Jan 10 14:37:30 2013 +0000 + + Bug 827521 - Work around spurious operator ambiguity errors in buggy versions of Clang. r=longsonr +--- + .../svg/content/src/SVGAnimatedPreserveAspectRatio.cpp | 17 ++++++++--------- + .../svg/content/src/SVGAnimatedPreserveAspectRatio.h | 7 +++---- + content/svg/content/src/SVGPreserveAspectRatio.h | 17 +++++++++++++---- + 3 files changed, 24 insertions(+), 17 deletions(-) + +diff --git content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp +index 6593461..56956b2 100644 +--- content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp ++++ content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp +@@ -54,7 +54,7 @@ GetAlignForString(const nsAString &aAlignString) + { + for (uint32_t i = 0 ; i < ArrayLength(sAlignStrings) ; i++) { + if (aAlignString.EqualsASCII(sAlignStrings[i])) { +- return (i + SVG_PRESERVEASPECTRATIO_NONE); ++ return (i + SVG_ALIGN_MIN_VALID); + } + } + +@@ -65,12 +65,11 @@ static void + GetAlignString(nsAString& aAlignString, uint16_t aAlign) + { + NS_ASSERTION( +- aAlign >= SVG_PRESERVEASPECTRATIO_NONE && +- aAlign <= SVG_PRESERVEASPECTRATIO_XMAXYMAX, ++ aAlign >= SVG_ALIGN_MIN_VALID && aAlign <= SVG_ALIGN_MAX_VALID, + "Unknown align"); + + aAlignString.AssignASCII( +- sAlignStrings[aAlign - SVG_PRESERVEASPECTRATIO_NONE]); ++ sAlignStrings[aAlign - SVG_ALIGN_MIN_VALID]); + } + + static uint16_t +@@ -78,7 +77,7 @@ GetMeetOrSliceForString(const nsAString &aMeetOrSlice) + { + for (uint32_t i = 0 ; i < ArrayLength(sMeetOrSliceStrings) ; i++) { + if (aMeetOrSlice.EqualsASCII(sMeetOrSliceStrings[i])) { +- return (i + SVG_MEETORSLICE_MEET); ++ return (i + SVG_MEETORSLICE_MIN_VALID); + } + } + +@@ -89,12 +88,12 @@ static void + GetMeetOrSliceString(nsAString& aMeetOrSliceString, uint16_t aMeetOrSlice) + { + NS_ASSERTION( +- aMeetOrSlice >= SVG_MEETORSLICE_MEET && +- aMeetOrSlice <= SVG_MEETORSLICE_SLICE, ++ aMeetOrSlice >= SVG_MEETORSLICE_MIN_VALID && ++ aMeetOrSlice <= SVG_MEETORSLICE_MAX_VALID, + "Unknown meetOrSlice"); + + aMeetOrSliceString.AssignASCII( +- sMeetOrSliceStrings[aMeetOrSlice - SVG_MEETORSLICE_MEET]); ++ sMeetOrSliceStrings[aMeetOrSlice - SVG_MEETORSLICE_MIN_VALID]); + } + + already_AddRefed +@@ -226,7 +225,7 @@ SVGAnimatedPreserveAspectRatio::GetBaseValueString( + GetAlignString(tmpString, mBaseVal.mAlign); + aValueAsString.Append(tmpString); + +- if (mBaseVal.mAlign != SVG_PRESERVEASPECTRATIO_NONE) { ++ if (mBaseVal.mAlign != uint8_t(SVG_PRESERVEASPECTRATIO_NONE)) { + + aValueAsString.AppendLiteral(" "); + GetMeetOrSliceString(tmpString, mBaseVal.mMeetOrSlice); +diff --git content/svg/content/src/SVGAnimatedPreserveAspectRatio.h content/svg/content/src/SVGAnimatedPreserveAspectRatio.h +index 61cfba7..b08fb60 100644 +--- content/svg/content/src/SVGAnimatedPreserveAspectRatio.h ++++ content/svg/content/src/SVGAnimatedPreserveAspectRatio.h +@@ -42,8 +42,7 @@ public: + void SetBaseValue(const SVGPreserveAspectRatio &aValue, + nsSVGElement *aSVGElement); + nsresult SetBaseAlign(uint16_t aAlign, nsSVGElement *aSVGElement) { +- if (aAlign < SVG_PRESERVEASPECTRATIO_NONE || +- aAlign > SVG_PRESERVEASPECTRATIO_XMAXYMAX) { ++ if (aAlign < SVG_ALIGN_MIN_VALID || aAlign > SVG_ALIGN_MAX_VALID) { + return NS_ERROR_FAILURE; + } + SetBaseValue(SVGPreserveAspectRatio( +@@ -53,8 +52,8 @@ public: + return NS_OK; + } + nsresult SetBaseMeetOrSlice(uint16_t aMeetOrSlice, nsSVGElement *aSVGElement) { +- if (aMeetOrSlice < SVG_MEETORSLICE_MEET || +- aMeetOrSlice > SVG_MEETORSLICE_SLICE) { ++ if (aMeetOrSlice < SVG_MEETORSLICE_MIN_VALID || ++ aMeetOrSlice > SVG_MEETORSLICE_MAX_VALID) { + return NS_ERROR_FAILURE; + } + SetBaseValue(SVGPreserveAspectRatio( +diff --git content/svg/content/src/SVGPreserveAspectRatio.h content/svg/content/src/SVGPreserveAspectRatio.h +index 066ad52..ebe724e 100644 +--- content/svg/content/src/SVGPreserveAspectRatio.h ++++ content/svg/content/src/SVGPreserveAspectRatio.h +@@ -28,6 +28,11 @@ enum SVGAlign MOZ_ENUM_TYPE(uint8_t) { + SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10 + }; + ++// These constants represent the range of valid enum values for the ++// parameter. They exclude the sentinel _UNKNOWN value. ++const uint16_t SVG_ALIGN_MIN_VALID = SVG_PRESERVEASPECTRATIO_NONE; ++const uint16_t SVG_ALIGN_MAX_VALID = SVG_PRESERVEASPECTRATIO_XMAXYMAX; ++ + // Meet-or-slice Types + enum SVGMeetOrSlice MOZ_ENUM_TYPE(uint8_t) { + SVG_MEETORSLICE_UNKNOWN = 0, +@@ -35,6 +40,11 @@ enum SVGMeetOrSlice MOZ_ENUM_TYPE(uint8_t) { + SVG_MEETORSLICE_SLICE = 2 + }; + ++// These constants represent the range of valid enum values for the ++// parameter. They exclude the sentinel _UNKNOWN value. ++const uint16_t SVG_MEETORSLICE_MIN_VALID = SVG_MEETORSLICE_MEET; ++const uint16_t SVG_MEETORSLICE_MAX_VALID = SVG_MEETORSLICE_SLICE; ++ + class SVGAnimatedPreserveAspectRatio; + + class SVGPreserveAspectRatio MOZ_FINAL +@@ -57,8 +67,7 @@ public: + {} + + nsresult SetAlign(uint16_t aAlign) { +- if (aAlign < SVG_PRESERVEASPECTRATIO_NONE || +- aAlign > SVG_PRESERVEASPECTRATIO_XMAXYMAX) ++ if (aAlign < SVG_ALIGN_MIN_VALID || aAlign > SVG_ALIGN_MAX_VALID) + return NS_ERROR_FAILURE; + mAlign = static_cast(aAlign); + return NS_OK; +@@ -69,8 +78,8 @@ public: + } + + nsresult SetMeetOrSlice(uint16_t aMeetOrSlice) { +- if (aMeetOrSlice < SVG_MEETORSLICE_MEET || +- aMeetOrSlice > SVG_MEETORSLICE_SLICE) ++ if (aMeetOrSlice < SVG_MEETORSLICE_MIN_VALID || ++ aMeetOrSlice > SVG_MEETORSLICE_MAX_VALID) + return NS_ERROR_FAILURE; + mMeetOrSlice = static_cast(aMeetOrSlice); + return NS_OK; Property changes on: www/firefox/files/patch-bug827521 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/firefox/files/patch-bug836824 =================================================================== --- www/firefox/files/patch-bug836824 (revision 0) +++ www/firefox/files/patch-bug836824 (working copy) @@ -0,0 +1,33 @@ +commit 35107a0 (HEAD) +Author: Paul Adenot +Date: Mon Feb 4 20:21:19 2013 +0100 + + Bug 836824 - libsoundtouch fails to build due to __get_cpuid() invocation, if you don't have xcode command line tools. r= +--- + media/libsoundtouch/moz-libsoundtouch.patch | 24 ++++++++++++++++++++++++ + media/libsoundtouch/src/cpu_detect_x86.cpp | 5 ++++- + 2 files changed, 28 insertions(+), 1 deletion(-) + +diff --git media/libsoundtouch/src/cpu_detect_x86.cpp media/libsoundtouch/src/cpu_detect_x86.cpp +index a42008e..7a31aa9 100644 +--- media/libsoundtouch/src/cpu_detect_x86.cpp ++++ media/libsoundtouch/src/cpu_detect_x86.cpp +@@ -101,7 +101,7 @@ uint detectCPUextensions(void) + + uint res = 0; + +-#if defined(__GNUC__) ++#if defined(__GNUC__) && defined(HAVE_CPUID_H) + // GCC version of cpuid. Requires GCC 4.3.0 or later for __cpuid intrinsic support. + uint eax, ebx, ecx, edx; // unsigned int is the standard type. uint is defined by the compiler and not guaranteed to be portable. + +@@ -112,6 +112,9 @@ uint detectCPUextensions(void) + if (edx & bit_SSE) res = res | SUPPORT_SSE; + if (edx & bit_SSE2) res = res | SUPPORT_SSE2; + ++#elif defined(__GNUC__) ++ // No cpuid.h --> no cpuid support ++ return 0; + #else + // Window / VS version of cpuid. Notice that Visual Studio 2005 or later required + // for __cpuid intrinsic support. Property changes on: www/firefox/files/patch-bug836824 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/firefox/files/patch-bug844818 =================================================================== --- www/firefox/files/patch-bug844818 (revision 0) +++ www/firefox/files/patch-bug844818 (working copy) @@ -0,0 +1,126 @@ +diff --git configure.in configure.in +index 7cd6e17..a1dbdf7 100644 +--- configure.in ++++ configure.in +@@ -9106,6 +9106,18 @@ elif test "${OS_TARGET}" = "Android"; th + fi + fi + ++# Keep libcubeb and audio_device backends in sync ++if test -n "$MOZ_ALSA"; then ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=1" ++else ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=0" ++fi ++if test -n "$MOZ_PULSEAUDIO"; then ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=1" ++else ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=0" ++fi ++ + # Don't try to compile sse4.1 code if toolchain doesn't support + if test -z "$HAVE_TOOLCHAIN_SUPPORT_MSSE4_1"; then + EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D yuv_disable_asm=1" +diff --git media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi +index 8457737..dfc83ff 100644 +--- media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi ++++ media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi +@@ -45,11 +45,15 @@ + 'dummy/audio_device_utility_dummy.h', + ], + 'conditions': [ +- ['OS=="linux"', { ++ ['include_alsa_audio==1 or include_pulse_audio==1', { + 'include_dirs': [ + 'linux', + ], +- }], # OS==linux ++ 'defines': [ ++ # avoid pointless rename ++ 'WEBRTC_LINUX', ++ ], ++ }], # include_alsa_audio==1 or include_pulse_audio==1 + ['OS=="mac"', { + 'include_dirs': [ + 'mac', +@@ -74,14 +78,8 @@ + }], + ['include_internal_audio_device==1', { + 'sources': [ +- 'linux/alsasymboltable_linux.cc', +- 'linux/alsasymboltable_linux.h', +- 'linux/audio_device_alsa_linux.cc', +- 'linux/audio_device_alsa_linux.h', + 'linux/audio_device_utility_linux.cc', + 'linux/audio_device_utility_linux.h', +- 'linux/audio_mixer_manager_alsa_linux.cc', +- 'linux/audio_mixer_manager_alsa_linux.h', + 'linux/latebindingsymboltable_linux.cc', + 'linux/latebindingsymboltable_linux.h', + 'mac/audio_device_mac.cc', +@@ -116,28 +114,36 @@ + }, + }], + ['OS=="linux"', { +- 'defines': [ +- 'LINUX_ALSA', +- ], + 'link_settings': { + 'libraries': [ + '-ldl', + ], + }, +- 'conditions': [ +- ['include_pulse_audio==1', { +- 'defines': [ +- 'LINUX_PULSE', +- ], +- 'sources': [ +- 'linux/audio_device_pulse_linux.cc', +- 'linux/audio_device_pulse_linux.h', +- 'linux/audio_mixer_manager_pulse_linux.cc', +- 'linux/audio_mixer_manager_pulse_linux.h', +- 'linux/pulseaudiosymboltable_linux.cc', +- 'linux/pulseaudiosymboltable_linux.h', +- ], +- }], ++ }], ++ ['include_alsa_audio==1', { ++ 'defines': [ ++ 'LINUX_ALSA', ++ ], ++ 'sources': [ ++ 'linux/alsasymboltable_linux.cc', ++ 'linux/alsasymboltable_linux.h', ++ 'linux/audio_device_alsa_linux.cc', ++ 'linux/audio_device_alsa_linux.h', ++ 'linux/audio_mixer_manager_alsa_linux.cc', ++ 'linux/audio_mixer_manager_alsa_linux.h', ++ ], ++ }], ++ ['include_pulse_audio==1', { ++ 'defines': [ ++ 'LINUX_PULSE', ++ ], ++ 'sources': [ ++ 'linux/audio_device_pulse_linux.cc', ++ 'linux/audio_device_pulse_linux.h', ++ 'linux/audio_mixer_manager_pulse_linux.cc', ++ 'linux/audio_mixer_manager_pulse_linux.h', ++ 'linux/pulseaudiosymboltable_linux.cc', ++ 'linux/pulseaudiosymboltable_linux.h', + ], + }], + ['OS=="mac"', { +diff --git media/webrtc/webrtc_config.gypi media/webrtc/webrtc_config.gypi +index b504d3d..e2eb127 100644 +--- media/webrtc/webrtc_config.gypi ++++ media/webrtc/webrtc_config.gypi +@@ -9,7 +9,6 @@ + 'include_internal_video_render': 0, + 'clang_use_chrome_plugins': 0, + 'enable_protobuf': 0, +- 'include_pulse_audio': 0, + 'include_tests': 0, + 'use_system_libjpeg': 1, + 'use_system_libvpx': 1, Property changes on: www/firefox/files/patch-bug844818 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/firefox/files/patch-content-media-AudioStream.cpp =================================================================== --- www/firefox/files/patch-content-media-AudioStream.cpp (revision 315699) +++ www/firefox/files/patch-content-media-AudioStream.cpp (working copy) @@ -1,11 +0,0 @@ ---- content/media/AudioStream.cpp~ -+++ content/media/AudioStream.cpp -@@ -298,7 +298,7 @@ static int PrefChanged(const char* aPref, void* aClosure) - gVolumeScale = NS_MAX(0, PR_strtod(utf8.get(), nullptr)); - } - } else if (strcmp(aPref, PREF_USE_CUBEB) == 0) { --#ifdef MOZ_WIDGET_GONK -+#if defined(MOZ_WIDGET_GONK) || defined(__FreeBSD__) && __FreeBSD_version < 800097 - bool value = Preferences::GetBool(aPref, false); - #else - bool value = Preferences::GetBool(aPref, true); Index: www/firefox/files/patch-gfx-ots-include-opentype-sanitiser.h =================================================================== --- www/firefox/files/patch-gfx-ots-include-opentype-sanitiser.h (revision 315699) +++ www/firefox/files/patch-gfx-ots-include-opentype-sanitiser.h (working copy) @@ -1,18 +0,0 @@ -diff --git gfx/ots/include/opentype-sanitiser.h gfx/ots/include/opentype-sanitiser.h -index f42822e..1a5a699 100644 ---- gfx/ots/include/opentype-sanitiser.h -+++ gfx/ots/include/opentype-sanitiser.h -@@ -44,6 +44,13 @@ typedef unsigned __int64 uint64_t; - #include - #endif - -+#ifdef __FreeBSD__ -+# include -+# if __FreeBSD_version < 800067 -+# include // for off_t -+# endif -+#endif -+ - #include // for std::min - #include - #include Index: www/firefox/files/patch-ipc-chromium-src-base-platform_thread_posix.cc =================================================================== --- www/firefox/files/patch-ipc-chromium-src-base-platform_thread_posix.cc (revision 315699) +++ www/firefox/files/patch-ipc-chromium-src-base-platform_thread_posix.cc (working copy) @@ -1,16 +0,0 @@ ---- ipc/chromium/src/base/platform_thread_posix.cc~ -+++ ipc/chromium/src/base/platform_thread_posix.cc -@@ -16,7 +16,13 @@ - #include - #elif defined(OS_FREEBSD) - #include -+#if __FreeBSD_version > 802500 - #include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif - #endif - - #if !defined(OS_MACOSX) Index: www/firefox/files/patch-js-src-js-confdefs.h.in =================================================================== --- www/firefox/files/patch-js-src-js-confdefs.h.in (revision 315699) +++ www/firefox/files/patch-js-src-js-confdefs.h.in (working copy) @@ -1,10 +0,0 @@ ---- js/src/js-confdefs.h.in~ -+++ js/src/js-confdefs.h.in -@@ -12,6 +12,7 @@ - * C++ implementations should define these macros only when __STDC_LIMIT_MACROS - * is defined before is included. */ - #define __STDC_LIMIT_MACROS -+#define __STDC_CONSTANT_MACROS - - #endif /* _JS_CONFDEFS_H_ */ - Index: www/firefox/files/patch-media-webrtc-trunk-src-modules-audio_device-main-source-linux-latebindingsymboltable_linux.cc =================================================================== --- www/firefox/files/patch-media-webrtc-trunk-src-modules-audio_device-main-source-linux-latebindingsymboltable_linux.cc (revision 315699) +++ www/firefox/files/patch-media-webrtc-trunk-src-modules-audio_device-main-source-linux-latebindingsymboltable_linux.cc (working copy) @@ -1,37 +0,0 @@ ---- media/webrtc/trunk/src/modules/audio_device/main/source/linux/latebindingsymboltable_linux.cc~ -+++ media/webrtc/trunk/src/modules/audio_device/main/source/linux/latebindingsymboltable_linux.cc -@@ -31,6 +31,10 @@ - #include - #endif - -+#ifdef __FreeBSD__ -+#include -+#endif -+ - // TODO(grunell): Either put inside webrtc namespace or use webrtc:: instead. - using namespace webrtc; - -@@ -38,7 +42,11 @@ namespace webrtc_adm_linux { - - inline static const char *GetDllError() { - #ifdef WEBRTC_LINUX -+#if __FreeBSD_version < 800505 -+ const char *err = dlerror(); -+#else - char *err = dlerror(); -+#endif - if (err) { - return err; - } else { -@@ -78,7 +86,11 @@ static bool LoadSymbol(DllHandle handle, - void **symbol) { - #ifdef WEBRTC_LINUX - *symbol = dlsym(handle, symbol_name); -+#if __FreeBSD_version < 800505 -+ const char *err = dlerror(); -+#else - char *err = dlerror(); -+#endif - if (err) { - WEBRTC_TRACE(kTraceError, kTraceAudioDevice, -1, - "Error loading symbol %s : %d", symbol_name, err); Index: www/firefox/files/patch-media-webrtc-trunk-src-system_wrappers-source-spreadsortlib-spreadsort.hpp =================================================================== --- www/firefox/files/patch-media-webrtc-trunk-src-system_wrappers-source-spreadsortlib-spreadsort.hpp (revision 315699) +++ www/firefox/files/patch-media-webrtc-trunk-src-system_wrappers-source-spreadsortlib-spreadsort.hpp (working copy) @@ -3,7 +3,7 @@ @@ -21,6 +21,13 @@ Scott McMurray #include "constants.hpp" #include - + +#ifdef __FreeBSD__ +# include +# if __FreeBSD_version < 900506 @@ -13,4 +13,4 @@ + namespace boost { namespace detail { - //This only works on unsigned data types + //This only works on unsigned data types Index: www/firefox/files/patch-media-webrtc-trunk-src-system_wrappers-source-thread_posix.cc =================================================================== --- www/firefox/files/patch-media-webrtc-trunk-src-system_wrappers-source-thread_posix.cc (revision 315699) +++ www/firefox/files/patch-media-webrtc-trunk-src-system_wrappers-source-thread_posix.cc (working copy) @@ -1,16 +0,0 @@ ---- media/webrtc/trunk/src/system_wrappers/source/thread_posix.cc~ -+++ media/webrtc/trunk/src/system_wrappers/source/thread_posix.cc -@@ -62,7 +62,13 @@ - #include - #elif defined(__FreeBSD__) - #include -+#if __FreeBSD_version > 802500 - #include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif - #endif - - #if defined(WEBRTC_BSD) && !defined(__NetBSD__) Index: www/firefox/files/patch-python-psutil-psutil-_psutil_bsd.c =================================================================== --- www/firefox/files/patch-python-psutil-psutil-_psutil_bsd.c (revision 315699) +++ www/firefox/files/patch-python-psutil-psutil-_psutil_bsd.c (working copy) @@ -1,13 +0,0 @@ ---- python/psutil/psutil/_psutil_bsd.c.orig 2012-08-16 23:07:37.000000000 +0800 -+++ python/psutil/psutil/_psutil_bsd.c 2012-09-27 14:50:20.843763756 +0800 -@@ -1376,8 +1376,10 @@ - strlcat(opts, ",noclusterr", sizeof(opts)); - if (flags & MNT_NOCLUSTERW) - strlcat(opts, ",noclusterw", sizeof(opts)); -+#if __FreeBSD_version >= 800000 - if (flags & MNT_NFS4ACLS) - strlcat(opts, ",nfs4acls", sizeof(opts)); -+#endif - - py_tuple = Py_BuildValue("(ssss)", fs[i].f_mntfromname, // device - fs[i].f_mntonname, // mount point Index: www/firefox/files/patch-z-bug815916 =================================================================== --- www/firefox/files/patch-z-bug815916 (revision 315699) +++ www/firefox/files/patch-z-bug815916 (working copy) @@ -1,27 +0,0 @@ ---- media/webrtc/signaling/test/Makefile.in~ -+++ media/webrtc/signaling/test/Makefile.in -@@ -34,12 +34,24 @@ LIBS += \ - endif - endif - -+ifdef MOZ_NATIVE_JPEG -+LIBS += \ -+ $(MOZ_JPEG_LIBS) \ -+ $(NULL) -+endif -+ - ifdef MOZ_NATIVE_LIBVPX - LIBS += \ - $(MOZ_LIBVPX_LIBS) \ - $(NULL) - endif - -+ifndef MOZ_TREE_PIXMAN -+LIBS += \ -+ $(MOZ_PIXMAN_LIBS) \ -+ $(NULL) -+endif -+ - ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT)) - LIBS += \ - $(XLIBS) \ Index: www/firefox/pkg-message =================================================================== --- www/firefox/pkg-message (revision 315699) +++ www/firefox/pkg-message (working copy) @@ -17,7 +17,7 @@ Firefox and HTML5 Certain functions used to display HTML5 elements need the sem module -on 7.x and 8.x releases. +only on 8.x releases. If your Firefox crashes with the following message while viewing a HTML5 page: Index: www/firefox-esr/Makefile =================================================================== --- www/firefox-esr/Makefile (revision 315699) +++ www/firefox-esr/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox -DISTVERSION= 17.0.4 +DISTVERSION= 17.0.5 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= ${MASTER_SITE_MOZILLA} @@ -56,17 +56,6 @@ WRKSRC:= ${WRKDIR}/mozilla-esr17 -.if ${ARCH} == amd64 -CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} -.elif ${ARCH} == powerpc64 -.if ${OSVERSION} < 900033 -BROKEN= Needs binutils 2.17.50 to build -.else -MOZ_EXPORT+= UNAME_m="powerpc64" -CFLAGS+= -mminimal-toc -.endif -.endif - .if ${PORT_OPTIONS:MPGO} USE_GCC?= any USE_DISPLAY= yes Index: www/firefox-esr/distinfo =================================================================== --- www/firefox-esr/distinfo (revision 315699) +++ www/firefox-esr/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (firefox-17.0.4esr.source.tar.bz2) = a3ffa72ac0554fc76899f3f293fee3e05e073117145c4a80a673207fce4806de -SIZE (firefox-17.0.4esr.source.tar.bz2) = 90791964 +SHA256 (firefox-17.0.5esr.source.tar.bz2) = ba2cb1c1bf747190dceb71a31a187811c9c6fc1da56c9a9db70cfd5a1780eb14 +SIZE (firefox-17.0.5esr.source.tar.bz2) = 91105421 Index: www/firefox-esr/files/patch-bug753046 =================================================================== --- www/firefox-esr/files/patch-bug753046 (revision 315699) +++ www/firefox-esr/files/patch-bug753046 (working copy) @@ -460,7 +460,7 @@ --- ipc/chromium/src/base/platform_thread_posix.cc.orig 2012-03-13 01:36:53.000000000 +0000 +++ ipc/chromium/src/base/platform_thread_posix.cc -@@ -9,16 +9,30 @@ +@@ -9,16 +9,24 @@ #if defined(OS_MACOSX) #include @@ -474,13 +474,7 @@ -#include +#elif defined(OS_FREEBSD) +#include -+#if __FreeBSD_version > 802500 +#include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif #endif + +#if !defined(OS_MACOSX) Index: www/firefox-esr/files/patch-bug810716 =================================================================== --- www/firefox-esr/files/patch-bug810716 (revision 0) +++ www/firefox-esr/files/patch-bug810716 (working copy) @@ -0,0 +1,68 @@ +diff --git configure.in configure.in +index 2084be9..eb6eeb2 100644 +--- configure.in ++++ configure.in +@@ -3369,14 +3369,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + +diff --git extensions/auth/nsAuthGSSAPI.cpp extensions/auth/nsAuthGSSAPI.cpp +index e828beb..6444246 100644 +--- extensions/auth/nsAuthGSSAPI.cpp ++++ extensions/auth/nsAuthGSSAPI.cpp +@@ -39,6 +39,9 @@ typedef KLStatus (*KLCacheHasValidTickets_type)( + #endif + + #if defined(HAVE_RES_NINIT) ++#include ++#include ++#include + #include + #endif + +diff --git js/src/configure.in js/src/configure.in +index e25f569..b9722f9 100644 +--- js/src/configure.in ++++ js/src/configure.in +@@ -2797,14 +2797,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + Property changes on: www/firefox-esr/files/patch-bug810716 ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: www/firefox-esr/files/patch-content-media-nsAudioStream.cpp =================================================================== --- www/firefox-esr/files/patch-content-media-nsAudioStream.cpp (revision 315699) +++ www/firefox-esr/files/patch-content-media-nsAudioStream.cpp (working copy) @@ -1,14 +0,0 @@ ---- content/media/nsAudioStream.cpp~ -+++ content/media/nsAudioStream.cpp -@@ -298,7 +298,11 @@ static int PrefChanged(const char* aPref - gVolumeScale = NS_MAX(0, PR_strtod(utf8.get(), nsnull)); - } - } else if (strcmp(aPref, PREF_USE_CUBEB) == 0) { -+#if defined(__FreeBSD__) && __FreeBSD_version < 800097 -+ bool value = Preferences::GetBool(aPref, false); -+#else - bool value = Preferences::GetBool(aPref, true); -+#endif - mozilla::MutexAutoLock lock(*gAudioPrefsLock); - gUseCubeb = value; - } else if (strcmp(aPref, PREF_CUBEB_LATENCY) == 0) { Index: www/firefox-esr/files/patch-js-src-js-confdefs.h.in =================================================================== --- www/firefox-esr/files/patch-js-src-js-confdefs.h.in (revision 315699) +++ www/firefox-esr/files/patch-js-src-js-confdefs.h.in (working copy) @@ -1,10 +0,0 @@ ---- js/src/js-confdefs.h.in~ -+++ js/src/js-confdefs.h.in -@@ -12,6 +12,7 @@ - * C++ implementations should define these macros only when __STDC_LIMIT_MACROS - * is defined before is included. */ - #define __STDC_LIMIT_MACROS -+#define __STDC_CONSTANT_MACROS - - #endif /* _JS_CONFDEFS_H_ */ - Index: www/firefox-esr/pkg-message =================================================================== --- www/firefox-esr/pkg-message (revision 315699) +++ www/firefox-esr/pkg-message (working copy) @@ -17,7 +17,7 @@ Firefox and HTML5 Certain functions used to display HTML5 elements need the sem module -on 7.x and 8.x releases. +only on 8.x releases. If your Firefox crashes with the following message while viewing a HTML5 page: Index: www/firefox-esr-i18n/Makefile =================================================================== --- www/firefox-esr-i18n/Makefile (revision 315699) +++ www/firefox-esr-i18n/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox-i18n -PORTVERSION= 17.0.4 +PORTVERSION= 17.0.5 CATEGORIES= www MASTER_SITE_SUBDIR= firefox/releases/${PORTVERSION}esr/linux-i686/xpi PKGNAMEPREFIX= @@ -51,7 +51,7 @@ do-extract: @${MKDIR} ${WRKSRC} @for lang in ${FIREFOX_I18N_}; do \ - if ! (${EXTRACT_CMD} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@firefox.mozilla.org);\ + if ! (${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@firefox.mozilla.org);\ then \ exit 1; \ fi; \ Index: www/firefox-esr-i18n/distinfo =================================================================== --- www/firefox-esr-i18n/distinfo (revision 315699) +++ www/firefox-esr-i18n/distinfo (working copy) @@ -1,164 +1,164 @@ -SHA256 (xpi/firefox-i18n-17.0.4/af.xpi) = a06004c0f2e5dddefcc73884e0397f35dc1506df907f5cabd498bd6641ba4f8a -SIZE (xpi/firefox-i18n-17.0.4/af.xpi) = 281145 -SHA256 (xpi/firefox-i18n-17.0.4/ak.xpi) = 8d459266d2989a4d64a99cdf3a48038df2f674541e6259f20893dd328eb78e8a -SIZE (xpi/firefox-i18n-17.0.4/ak.xpi) = 282976 -SHA256 (xpi/firefox-i18n-17.0.4/ar.xpi) = f2e37e09b16c37af44a372f685d481286b3f338fc760c84fc334b3a4b75e651d -SIZE (xpi/firefox-i18n-17.0.4/ar.xpi) = 311506 -SHA256 (xpi/firefox-i18n-17.0.4/ast.xpi) = a278cf4519a4cd431a595d7c3140e5d318976c70545190d3c8a089e8c89619f7 -SIZE (xpi/firefox-i18n-17.0.4/ast.xpi) = 264123 -SHA256 (xpi/firefox-i18n-17.0.4/be.xpi) = 4d03bcdbf0a4b22938e3512f99f7be24c8ad8d50c44b5ca8042c3d8804d55d31 -SIZE (xpi/firefox-i18n-17.0.4/be.xpi) = 273411 -SHA256 (xpi/firefox-i18n-17.0.4/bg.xpi) = c0ce090e81564d2b352e6bde0f4ac0e24c2de777529cf5f0e55d74c49e13f122 -SIZE (xpi/firefox-i18n-17.0.4/bg.xpi) = 327260 -SHA256 (xpi/firefox-i18n-17.0.4/bn-BD.xpi) = 04e13676bfe1f5d43a629b569521eda5c63e4dc2a3f1de7111a36a7409339e5b -SIZE (xpi/firefox-i18n-17.0.4/bn-BD.xpi) = 339303 -SHA256 (xpi/firefox-i18n-17.0.4/bn-IN.xpi) = b17b9b800a95d9040c5a548adaa4237a4bb1b5e2cb3cb58f5f6e2e512d0b4280 -SIZE (xpi/firefox-i18n-17.0.4/bn-IN.xpi) = 373021 -SHA256 (xpi/firefox-i18n-17.0.4/br.xpi) = 12c9bc21177b1436a84b65928678a1adc643eda0cb2308fda791f0ada31381a0 -SIZE (xpi/firefox-i18n-17.0.4/br.xpi) = 291583 -SHA256 (xpi/firefox-i18n-17.0.4/bs.xpi) = 07b13861cefe09a58d0a5153b62f6848b1079c105b1c849c3dee937240e442a6 -SIZE (xpi/firefox-i18n-17.0.4/bs.xpi) = 292223 -SHA256 (xpi/firefox-i18n-17.0.4/ca.xpi) = 36d20fe208aa71bd7acd53d8e501a9d8ce1358b3531b89e73bd9ff33fd1a8c5f -SIZE (xpi/firefox-i18n-17.0.4/ca.xpi) = 293532 -SHA256 (xpi/firefox-i18n-17.0.4/cs.xpi) = 5dd8d167c0085dff9bacb74438f05d205148ca71f28710eb30c0ec3bb69db106 -SIZE (xpi/firefox-i18n-17.0.4/cs.xpi) = 294133 -SHA256 (xpi/firefox-i18n-17.0.4/cy.xpi) = 8cd05825c0ff4f20af69ae2d55ed928d04d7bf9242b50d340b67868d5731c234 -SIZE (xpi/firefox-i18n-17.0.4/cy.xpi) = 284868 -SHA256 (xpi/firefox-i18n-17.0.4/da.xpi) = ea70245f858679fa988036add074fcdc99314102258b4404c132bbfc6e5dcbda -SIZE (xpi/firefox-i18n-17.0.4/da.xpi) = 282669 -SHA256 (xpi/firefox-i18n-17.0.4/de.xpi) = 76b9b3cc6845e1b327625b753b9c5a850218aad496c982a54e97c8c15d8951b7 -SIZE (xpi/firefox-i18n-17.0.4/de.xpi) = 270384 -SHA256 (xpi/firefox-i18n-17.0.4/el.xpi) = 8bd391d5b0fa972bb4d3cf165d62ff274c8d33c2246e4a28a756950dfdd59be0 -SIZE (xpi/firefox-i18n-17.0.4/el.xpi) = 311653 -SHA256 (xpi/firefox-i18n-17.0.4/en-GB.xpi) = 9093d70d0b4f4347b98b3f88da225ae374497d6e2ab87250af66222acbc791da -SIZE (xpi/firefox-i18n-17.0.4/en-GB.xpi) = 272104 -SHA256 (xpi/firefox-i18n-17.0.4/en-US.xpi) = 5f6c38c7733d43638efd844ad292ba49bc0c3bc1eb326a77d567b6b6a63662bc -SIZE (xpi/firefox-i18n-17.0.4/en-US.xpi) = 272155 -SHA256 (xpi/firefox-i18n-17.0.4/en-ZA.xpi) = 2057e8fa4d9f70982a734202ce72c9575d2acf4147007f90806a3b84c9b922a6 -SIZE (xpi/firefox-i18n-17.0.4/en-ZA.xpi) = 272935 -SHA256 (xpi/firefox-i18n-17.0.4/eo.xpi) = be1bab18409a54a3bda2cb56a10019bb7d089724e178aa8ced1b2f82ec4c8f7c -SIZE (xpi/firefox-i18n-17.0.4/eo.xpi) = 284800 -SHA256 (xpi/firefox-i18n-17.0.4/es-AR.xpi) = 4e610b8e331368ed80597196b4d0e18c38247675e62714ce9edc417c1e6f8bb6 -SIZE (xpi/firefox-i18n-17.0.4/es-AR.xpi) = 289239 -SHA256 (xpi/firefox-i18n-17.0.4/es-CL.xpi) = 103a6e758db575f6a0085376624cfa63eb74b11116ffe4ec1241be256ba09af5 -SIZE (xpi/firefox-i18n-17.0.4/es-CL.xpi) = 296878 -SHA256 (xpi/firefox-i18n-17.0.4/es-ES.xpi) = d5eae453bb189e99d581a885fbc480fc235f9533d24646861f38bbc27f67d2e5 -SIZE (xpi/firefox-i18n-17.0.4/es-ES.xpi) = 242185 -SHA256 (xpi/firefox-i18n-17.0.4/es-MX.xpi) = 367f8161de97d5f68a29e3379603051d056b4b117c2615e34c99ce6d8e90092c -SIZE (xpi/firefox-i18n-17.0.4/es-MX.xpi) = 247971 -SHA256 (xpi/firefox-i18n-17.0.4/et.xpi) = e96edbc283ed61c6c79628cb6649c81eaa7fa5ace6b8d79b40c890e28e452b50 -SIZE (xpi/firefox-i18n-17.0.4/et.xpi) = 284694 -SHA256 (xpi/firefox-i18n-17.0.4/eu.xpi) = cd7be3d40b49d3db99b628c04097cc56ad2f4e95839daba299e2c8989e04c51d -SIZE (xpi/firefox-i18n-17.0.4/eu.xpi) = 284227 -SHA256 (xpi/firefox-i18n-17.0.4/fa.xpi) = dcd36e1de67b86b87f2dd2a17e1d16f30f21cdfd05222d482026ee868a3f1d75 -SIZE (xpi/firefox-i18n-17.0.4/fa.xpi) = 323997 -SHA256 (xpi/firefox-i18n-17.0.4/fi.xpi) = 9d3da52e62053d0cde417762ef15e99d4d27f0b5ba3e81af9c3573c19a078a9a -SIZE (xpi/firefox-i18n-17.0.4/fi.xpi) = 288655 -SHA256 (xpi/firefox-i18n-17.0.4/fr.xpi) = 4262cf95c1d998421ab3e2f6dcd141ebef96614d7ac93323446bc1d45fd45a6f -SIZE (xpi/firefox-i18n-17.0.4/fr.xpi) = 293362 -SHA256 (xpi/firefox-i18n-17.0.4/fy-NL.xpi) = 83a899babc2fc811934e90e86ad0be0f055448654aab41d6a78eb17cc6846a8f -SIZE (xpi/firefox-i18n-17.0.4/fy-NL.xpi) = 289690 -SHA256 (xpi/firefox-i18n-17.0.4/ga-IE.xpi) = 57c65ede7370f586074f12601e53b5213659ad38648912ff422b72d98fdc2d82 -SIZE (xpi/firefox-i18n-17.0.4/ga-IE.xpi) = 296976 -SHA256 (xpi/firefox-i18n-17.0.4/gl.xpi) = 68a394151e9ca6221ac5f28aa28ead49a7a86b61b53aed8a0a1f241165376976 -SIZE (xpi/firefox-i18n-17.0.4/gl.xpi) = 286997 -SHA256 (xpi/firefox-i18n-17.0.4/gu-IN.xpi) = d8dfc07805c3871decaa841768a530944910980b77895ae82e0f7a5249480cfd -SIZE (xpi/firefox-i18n-17.0.4/gu-IN.xpi) = 319480 -SHA256 (xpi/firefox-i18n-17.0.4/he.xpi) = af1a8fc3352e37d35996469e3c28b65aceef8d7fb06ae8bc0c7eaf28f7fe14ca -SIZE (xpi/firefox-i18n-17.0.4/he.xpi) = 301482 -SHA256 (xpi/firefox-i18n-17.0.4/hi-IN.xpi) = be384e4831b839249cec96c57e531fcd9457017b1946f4cc60c7595350e37c81 -SIZE (xpi/firefox-i18n-17.0.4/hi-IN.xpi) = 330864 -SHA256 (xpi/firefox-i18n-17.0.4/hr.xpi) = 55f5c7b92ee4abb073e20d4fca947510e7b735d78ade6cf38d4e32c5afbb357a -SIZE (xpi/firefox-i18n-17.0.4/hr.xpi) = 287940 -SHA256 (xpi/firefox-i18n-17.0.4/hu.xpi) = 56033923ddbfe74a32bea31da848c827cc11ba5347e858c5e005d64d82aa1f71 -SIZE (xpi/firefox-i18n-17.0.4/hu.xpi) = 303047 -SHA256 (xpi/firefox-i18n-17.0.4/hy-AM.xpi) = 88fc9be4cc1ab4b3713a69b530e2a8235bf69b1cef30f19390cbb07c687b0642 -SIZE (xpi/firefox-i18n-17.0.4/hy-AM.xpi) = 328203 -SHA256 (xpi/firefox-i18n-17.0.4/id.xpi) = eb5426d2790578037168dbb8e35c3741544841613caa0cc2fd461268ce5cdb36 -SIZE (xpi/firefox-i18n-17.0.4/id.xpi) = 283725 -SHA256 (xpi/firefox-i18n-17.0.4/is.xpi) = 72ac421c8c61e3395b4260b8b4c2ed1d7522beffd65f04f43fbfebde4e10b590 -SIZE (xpi/firefox-i18n-17.0.4/is.xpi) = 284908 -SHA256 (xpi/firefox-i18n-17.0.4/it.xpi) = 50e9464acb0c4579f976243bce9674c3c3df3c94249d1c028e8854529b8dcfd4 -SIZE (xpi/firefox-i18n-17.0.4/it.xpi) = 238645 -SHA256 (xpi/firefox-i18n-17.0.4/ja.xpi) = 4d26164fdae4404d42844a238cb6b7788c80c8c0b80120fd46d308f491b38514 -SIZE (xpi/firefox-i18n-17.0.4/ja.xpi) = 322490 -SHA256 (xpi/firefox-i18n-17.0.4/kk.xpi) = 12f91f9b1b5b12707663e0b291e66a8bfdeb7e9f8df37203ef31ccd7a572bc3c -SIZE (xpi/firefox-i18n-17.0.4/kk.xpi) = 330351 -SHA256 (xpi/firefox-i18n-17.0.4/kn.xpi) = e5666bc829153255e0710e1fcc4b408d077bd00ab3de5f0264257374910f1e64 -SIZE (xpi/firefox-i18n-17.0.4/kn.xpi) = 354900 -SHA256 (xpi/firefox-i18n-17.0.4/ko.xpi) = cf2bdbe2f0bc0ede809b56cddf66cc604872942aeb0e7cf2da5abd85e0427c5a -SIZE (xpi/firefox-i18n-17.0.4/ko.xpi) = 296728 -SHA256 (xpi/firefox-i18n-17.0.4/ku.xpi) = 77e5701c21208aaaa6a76427b9011471060f10fced9b7843ae4c644af375049e -SIZE (xpi/firefox-i18n-17.0.4/ku.xpi) = 304898 -SHA256 (xpi/firefox-i18n-17.0.4/lg.xpi) = 68f698c8e50ac99bb2b75f09684bc8f8a2bb63037eb44d102ce8dcf2d99f3d22 -SIZE (xpi/firefox-i18n-17.0.4/lg.xpi) = 290627 -SHA256 (xpi/firefox-i18n-17.0.4/lt.xpi) = 3c2edb70dfabdc1758584a197458982bdc4802c94ee8dd1dc154ae6e868accb0 -SIZE (xpi/firefox-i18n-17.0.4/lt.xpi) = 349462 -SHA256 (xpi/firefox-i18n-17.0.4/lv.xpi) = b16f194408070789f307edaffe876f5c35bc0eadbd7d4eeaec38512a966be924 -SIZE (xpi/firefox-i18n-17.0.4/lv.xpi) = 291404 -SHA256 (xpi/firefox-i18n-17.0.4/mai.xpi) = 9ad6bee8ec54d72662901d347f5df95a05043479ffd272704281de9f67f7b6a7 -SIZE (xpi/firefox-i18n-17.0.4/mai.xpi) = 328267 -SHA256 (xpi/firefox-i18n-17.0.4/mk.xpi) = 9b4906affaec09a3c376f37899a8936b557c7a32700f254cb588febe7ca01311 -SIZE (xpi/firefox-i18n-17.0.4/mk.xpi) = 315578 -SHA256 (xpi/firefox-i18n-17.0.4/ml.xpi) = 575a8776a8211d910b1bb6719c41b1f95940bb30e20fe3a2428893c76b56297a -SIZE (xpi/firefox-i18n-17.0.4/ml.xpi) = 361541 -SHA256 (xpi/firefox-i18n-17.0.4/mr.xpi) = ecb53d6575397c08e5262c03f1fd1ef3a878ad47f47d80afeacbc63e8b17a109 -SIZE (xpi/firefox-i18n-17.0.4/mr.xpi) = 327860 -SHA256 (xpi/firefox-i18n-17.0.4/nb-NO.xpi) = bd187cc0fbabb660a36d47f900d1ccd8d3756e1c5f34d9fa751fd67a4395ade8 -SIZE (xpi/firefox-i18n-17.0.4/nb-NO.xpi) = 284889 -SHA256 (xpi/firefox-i18n-17.0.4/nl.xpi) = 2300e96e8388fecb4a4b8bf7e81517f5580936366e92fae8b9cc00f17ff7c4f5 -SIZE (xpi/firefox-i18n-17.0.4/nl.xpi) = 286112 -SHA256 (xpi/firefox-i18n-17.0.4/nn-NO.xpi) = a124891bdb6173aac237cd1ad83c7e8878bdd6c8fa6a967d63e246cb413a6d96 -SIZE (xpi/firefox-i18n-17.0.4/nn-NO.xpi) = 287844 -SHA256 (xpi/firefox-i18n-17.0.4/nso.xpi) = db2a66cecc3ddd52aabf7e5b3a2f2fe33eb34ec9e6273a784ec01f03addd9918 -SIZE (xpi/firefox-i18n-17.0.4/nso.xpi) = 288150 -SHA256 (xpi/firefox-i18n-17.0.4/or.xpi) = 070aca9a249059148902cc6c4efbd7bd9f6cee52906e634500b60e2532a5ec02 -SIZE (xpi/firefox-i18n-17.0.4/or.xpi) = 329683 -SHA256 (xpi/firefox-i18n-17.0.4/pa-IN.xpi) = 7f97845c3999e8eaea80694f634514bbcc1d04882743db78304da6c34090ad9b -SIZE (xpi/firefox-i18n-17.0.4/pa-IN.xpi) = 318504 -SHA256 (xpi/firefox-i18n-17.0.4/pl.xpi) = 60bc76823710a40c468478f3874797b31e597bb41abe829ad17f58787ecd9757 -SIZE (xpi/firefox-i18n-17.0.4/pl.xpi) = 301035 -SHA256 (xpi/firefox-i18n-17.0.4/pt-BR.xpi) = b65ed348ce7e6fe1cb7a3c13a2a2fb434e44c545c9d8bcd98165095ad928af8a -SIZE (xpi/firefox-i18n-17.0.4/pt-BR.xpi) = 289244 -SHA256 (xpi/firefox-i18n-17.0.4/pt-PT.xpi) = e2ff066886bb325247546c5e892f155b93cf5610970f61db101705203278c1e6 -SIZE (xpi/firefox-i18n-17.0.4/pt-PT.xpi) = 291458 -SHA256 (xpi/firefox-i18n-17.0.4/rm.xpi) = 954bf1a5cf10288f35fea02d27bbef0be4ebefd93dc370b235f5c638c10ea180 -SIZE (xpi/firefox-i18n-17.0.4/rm.xpi) = 288466 -SHA256 (xpi/firefox-i18n-17.0.4/ro.xpi) = edb45bec963a2059fd9c3d863285ca89e9c230a180afe68ab2dccc452da515c0 -SIZE (xpi/firefox-i18n-17.0.4/ro.xpi) = 310252 -SHA256 (xpi/firefox-i18n-17.0.4/ru.xpi) = 8b1747a94b4d3c8a16624e45462a084bae1a8296269f51143d5d776512186edf -SIZE (xpi/firefox-i18n-17.0.4/ru.xpi) = 284915 -SHA256 (xpi/firefox-i18n-17.0.4/si.xpi) = ba6f484e6920976e67b8dace6dff9f0b313c04ddae3c1c15029deb03b28a1e9a -SIZE (xpi/firefox-i18n-17.0.4/si.xpi) = 317364 -SHA256 (xpi/firefox-i18n-17.0.4/sk.xpi) = 1288947f9c6f0dbc37bb80d10a9f2083088f72eb8d3e0e7a73e63e8cb565162e -SIZE (xpi/firefox-i18n-17.0.4/sk.xpi) = 301479 -SHA256 (xpi/firefox-i18n-17.0.4/sl.xpi) = d603ceca14818375c5a2dac3b1a0d59d5c40bb47405aae28a378fb395a81763c -SIZE (xpi/firefox-i18n-17.0.4/sl.xpi) = 286638 -SHA256 (xpi/firefox-i18n-17.0.4/son.xpi) = 590baeb71cc5fbff0a51c1aadfa2f5cba4be85674d252da8a690d43bb8b5211a -SIZE (xpi/firefox-i18n-17.0.4/son.xpi) = 283684 -SHA256 (xpi/firefox-i18n-17.0.4/sq.xpi) = d76115e0e166134cfeca1daf7274b32c4a7626cabb099c846f74bed73af0919a -SIZE (xpi/firefox-i18n-17.0.4/sq.xpi) = 291166 -SHA256 (xpi/firefox-i18n-17.0.4/sr.xpi) = 044cb7b717021d5d4f1eb5b4bf93c9a6ac092e9883d02eb4832ae0cb6978c5b8 -SIZE (xpi/firefox-i18n-17.0.4/sr.xpi) = 334015 -SHA256 (xpi/firefox-i18n-17.0.4/sv-SE.xpi) = b9da3f0dfb2f8fc956e0eded061ccce89b9ffef16c187ef1969129d9b7076fe6 -SIZE (xpi/firefox-i18n-17.0.4/sv-SE.xpi) = 288084 -SHA256 (xpi/firefox-i18n-17.0.4/ta-LK.xpi) = ce4a5e0c0dec76d3677aa50a0a2e1827665c7fbc55d5647f0abd5cee00d53a36 -SIZE (xpi/firefox-i18n-17.0.4/ta-LK.xpi) = 339932 -SHA256 (xpi/firefox-i18n-17.0.4/ta.xpi) = bbe40c4cb61b91c8816ee8e172691d7b5889b4350cedac53a7c9af42c0e53d55 -SIZE (xpi/firefox-i18n-17.0.4/ta.xpi) = 325367 -SHA256 (xpi/firefox-i18n-17.0.4/te.xpi) = 8bc90a8a48ffc535c996ededdc8fc7d38ae37aa01c9e07b9a0dbeef2af9313c8 -SIZE (xpi/firefox-i18n-17.0.4/te.xpi) = 341958 -SHA256 (xpi/firefox-i18n-17.0.4/th.xpi) = 63abf3842b681378e7289bcf0cf6f2c001eb7e139a7ae1537eb7476df715a524 -SIZE (xpi/firefox-i18n-17.0.4/th.xpi) = 323677 -SHA256 (xpi/firefox-i18n-17.0.4/tr.xpi) = f6e814aacca6a2ebf85cc1a493d06a2881b6093e93ad641bbaa58285ed2724b6 -SIZE (xpi/firefox-i18n-17.0.4/tr.xpi) = 295842 -SHA256 (xpi/firefox-i18n-17.0.4/uk.xpi) = 04f3ac2af67d573b69847a872ba04772bd22339f1f400e0a940a0aa5294c80e8 -SIZE (xpi/firefox-i18n-17.0.4/uk.xpi) = 324251 -SHA256 (xpi/firefox-i18n-17.0.4/vi.xpi) = 55bf713af043de37d8e1d061ef57711cae221007f06159e0fc95337567b23db0 -SIZE (xpi/firefox-i18n-17.0.4/vi.xpi) = 313549 -SHA256 (xpi/firefox-i18n-17.0.4/zh-CN.xpi) = 744af223818bda8fe5690937beb25303bf7e90bc27417de69e265ee364175b4f -SIZE (xpi/firefox-i18n-17.0.4/zh-CN.xpi) = 304250 -SHA256 (xpi/firefox-i18n-17.0.4/zh-TW.xpi) = 54fc9cfbcb89d2584ff143e07141ac6b2fce2ba8b366e18c39a7f653fff80492 -SIZE (xpi/firefox-i18n-17.0.4/zh-TW.xpi) = 305438 -SHA256 (xpi/firefox-i18n-17.0.4/zu.xpi) = 8ad282819d5482913efc24df7f3a709758db878f2f3fd39837c73947ef678d61 -SIZE (xpi/firefox-i18n-17.0.4/zu.xpi) = 296594 +SHA256 (xpi/firefox-i18n-17.0.5/af.xpi) = 1c7f0f11ea1efad528253c5d399a31ab3cc87f6faa2a7057a6fcbbde938758d0 +SIZE (xpi/firefox-i18n-17.0.5/af.xpi) = 281146 +SHA256 (xpi/firefox-i18n-17.0.5/ak.xpi) = 721c1702014423530e3ae07d8488873287f99847f9d7ba3f41993c2185a733af +SIZE (xpi/firefox-i18n-17.0.5/ak.xpi) = 282977 +SHA256 (xpi/firefox-i18n-17.0.5/ar.xpi) = 64eb3ae88ea63f1c338b0e1f4ec4028235b821cddf64f529d2e7cc4a1c94dd67 +SIZE (xpi/firefox-i18n-17.0.5/ar.xpi) = 311507 +SHA256 (xpi/firefox-i18n-17.0.5/ast.xpi) = 3d748fe9a614ce9abbae7b07bf8aa4fb9fd699c9c49fcc4fbc51d422c279ba45 +SIZE (xpi/firefox-i18n-17.0.5/ast.xpi) = 264123 +SHA256 (xpi/firefox-i18n-17.0.5/be.xpi) = 31dee5af3b9f9b7ff2c27d06838abee824c2a3a68c395125b3beb1b74d9b29c5 +SIZE (xpi/firefox-i18n-17.0.5/be.xpi) = 273412 +SHA256 (xpi/firefox-i18n-17.0.5/bg.xpi) = 943376b45a1843e76e3964a2ccf9510c451bec27a2080891ae34bc8e1e30ffce +SIZE (xpi/firefox-i18n-17.0.5/bg.xpi) = 327261 +SHA256 (xpi/firefox-i18n-17.0.5/bn-BD.xpi) = c4b9dbab4707ab75f9e6c6b54c0a83f59d3bdb566dc382f7d749ef0f8b538939 +SIZE (xpi/firefox-i18n-17.0.5/bn-BD.xpi) = 339304 +SHA256 (xpi/firefox-i18n-17.0.5/bn-IN.xpi) = d6b215e24c3782cacf9aff8a62c566e35f8e06a0ce5dca2cdf30992abfdf6b5d +SIZE (xpi/firefox-i18n-17.0.5/bn-IN.xpi) = 373021 +SHA256 (xpi/firefox-i18n-17.0.5/br.xpi) = 01169985c535d386c24606b44d33feeecedbd7d9cae7a9ef17ff28817b2af8c3 +SIZE (xpi/firefox-i18n-17.0.5/br.xpi) = 291583 +SHA256 (xpi/firefox-i18n-17.0.5/bs.xpi) = 381a211811bee3746968612369e2fd5e6889479a1998f9313d549a73b68efb75 +SIZE (xpi/firefox-i18n-17.0.5/bs.xpi) = 292224 +SHA256 (xpi/firefox-i18n-17.0.5/ca.xpi) = 0172a83a49495c5470b3971725e6d939e23258fc5164b83f08289820b9b722d0 +SIZE (xpi/firefox-i18n-17.0.5/ca.xpi) = 293532 +SHA256 (xpi/firefox-i18n-17.0.5/cs.xpi) = 4fc46fe690696b4d249a009a25b77257788b9d84f6d0c0cf194276a9d85f9607 +SIZE (xpi/firefox-i18n-17.0.5/cs.xpi) = 294133 +SHA256 (xpi/firefox-i18n-17.0.5/cy.xpi) = 3ca3cb99ab06662a5e1b5d9951ee9e7f3ea8df9cedba735151e9116a44a42462 +SIZE (xpi/firefox-i18n-17.0.5/cy.xpi) = 284868 +SHA256 (xpi/firefox-i18n-17.0.5/da.xpi) = 58c0bc0f1a4d99307606e67180747abcdb7664b2bbe57faddc028b3a326ad1a2 +SIZE (xpi/firefox-i18n-17.0.5/da.xpi) = 282669 +SHA256 (xpi/firefox-i18n-17.0.5/de.xpi) = 36df074bfe4d4020fe37032756d1b7120ef9c91b1791c27febb8c97e12348598 +SIZE (xpi/firefox-i18n-17.0.5/de.xpi) = 270384 +SHA256 (xpi/firefox-i18n-17.0.5/el.xpi) = db8f0d1f997b966df1ea6b08001c4f04f59506ce9d03f90f08fe525815f2baa4 +SIZE (xpi/firefox-i18n-17.0.5/el.xpi) = 311653 +SHA256 (xpi/firefox-i18n-17.0.5/en-GB.xpi) = dee30eb53ae4a27a45db7ec25fed16016d589c88075f59d13875caa9d126d7df +SIZE (xpi/firefox-i18n-17.0.5/en-GB.xpi) = 272105 +SHA256 (xpi/firefox-i18n-17.0.5/en-US.xpi) = 1d2da0a593d21138c5ddf515da34c085fb03e409757eea1b49d169b21ffa0975 +SIZE (xpi/firefox-i18n-17.0.5/en-US.xpi) = 272155 +SHA256 (xpi/firefox-i18n-17.0.5/en-ZA.xpi) = aaaf142545aeb379d305c85095bc79293a9a2cb47d705e2d49042beb9fc17896 +SIZE (xpi/firefox-i18n-17.0.5/en-ZA.xpi) = 272936 +SHA256 (xpi/firefox-i18n-17.0.5/eo.xpi) = 9b6e1badc991462695099115174c80ea6349fbc7a8f85c88b4fe861c4357bb78 +SIZE (xpi/firefox-i18n-17.0.5/eo.xpi) = 284801 +SHA256 (xpi/firefox-i18n-17.0.5/es-AR.xpi) = 033727ec5a4df317ea4d2a9ed53f0a4da52a85e93496745a8835e7fa04b9dd18 +SIZE (xpi/firefox-i18n-17.0.5/es-AR.xpi) = 289240 +SHA256 (xpi/firefox-i18n-17.0.5/es-CL.xpi) = 5de431f6994705a5e317f445d44b9e87826e148eaa5ef0b9cd39c5c582dc6e84 +SIZE (xpi/firefox-i18n-17.0.5/es-CL.xpi) = 296878 +SHA256 (xpi/firefox-i18n-17.0.5/es-ES.xpi) = d5470f8887160357a61f2f4fa8c1ad7344b5fd77b13f5152c02d1df1af05e5f2 +SIZE (xpi/firefox-i18n-17.0.5/es-ES.xpi) = 242185 +SHA256 (xpi/firefox-i18n-17.0.5/es-MX.xpi) = c391571b6dc91aa2df2242b55b36ba3eebdd037b55d99cd8225328f1050871f4 +SIZE (xpi/firefox-i18n-17.0.5/es-MX.xpi) = 247972 +SHA256 (xpi/firefox-i18n-17.0.5/et.xpi) = 85e6ef3a4792e7e41f91cac974429aa47f2268e8c67828f5e5c729e3791647b7 +SIZE (xpi/firefox-i18n-17.0.5/et.xpi) = 284694 +SHA256 (xpi/firefox-i18n-17.0.5/eu.xpi) = 3fc8b2e334bdf1a22daa0e9ef7035e0689f0bbfaa0c2f82cde24eee0e503e876 +SIZE (xpi/firefox-i18n-17.0.5/eu.xpi) = 284227 +SHA256 (xpi/firefox-i18n-17.0.5/fa.xpi) = 9dd0ebee8a3e688fb97f73ecfee8af22f425ab9dfa58dadacce430a54e4ca498 +SIZE (xpi/firefox-i18n-17.0.5/fa.xpi) = 323998 +SHA256 (xpi/firefox-i18n-17.0.5/fi.xpi) = 2117c522fddcaee71798dba5fa845258dba6f1497d7717d40c8c3867ae83ff6d +SIZE (xpi/firefox-i18n-17.0.5/fi.xpi) = 288655 +SHA256 (xpi/firefox-i18n-17.0.5/fr.xpi) = 814c4a2fbcec99362d6f2926e48e5ef537f99dc2bfc5337e9d3c3106679a318f +SIZE (xpi/firefox-i18n-17.0.5/fr.xpi) = 293362 +SHA256 (xpi/firefox-i18n-17.0.5/fy-NL.xpi) = 3c7a603b55cd1cc4d5505f66c912a87952a1128996db43adebe4bc6a5e4b8e8d +SIZE (xpi/firefox-i18n-17.0.5/fy-NL.xpi) = 289691 +SHA256 (xpi/firefox-i18n-17.0.5/ga-IE.xpi) = 2fd621a413c4a93e87458cc9ce243a6b6126736b99326f971bc41257a60bfb3e +SIZE (xpi/firefox-i18n-17.0.5/ga-IE.xpi) = 296976 +SHA256 (xpi/firefox-i18n-17.0.5/gl.xpi) = b302cc7760696568fe2f6106923bfcd8e03458f6298aaa7548d76912f973adfe +SIZE (xpi/firefox-i18n-17.0.5/gl.xpi) = 286998 +SHA256 (xpi/firefox-i18n-17.0.5/gu-IN.xpi) = 1646b98e0ba654eaa64085f81d810b392390e9b4ea91f565583f9b06ca3ecbe4 +SIZE (xpi/firefox-i18n-17.0.5/gu-IN.xpi) = 319480 +SHA256 (xpi/firefox-i18n-17.0.5/he.xpi) = 7a9e245d094fbcaeac9bde75e290d0b69991efd053839aa14194101eb314592f +SIZE (xpi/firefox-i18n-17.0.5/he.xpi) = 301482 +SHA256 (xpi/firefox-i18n-17.0.5/hi-IN.xpi) = b65dc1d081ec0ff54dc8e762d33e6c987e3cf3f61846e14397cc2a932b732053 +SIZE (xpi/firefox-i18n-17.0.5/hi-IN.xpi) = 330865 +SHA256 (xpi/firefox-i18n-17.0.5/hr.xpi) = a479d9ad741ba101f9debc12a57ef09a763810471ea37e9d8a7cef35d488cd3f +SIZE (xpi/firefox-i18n-17.0.5/hr.xpi) = 287940 +SHA256 (xpi/firefox-i18n-17.0.5/hu.xpi) = 73a0be757399ddedb2a4e725e50ebb564a0ac67e835b18ed7bdd229f5da548e8 +SIZE (xpi/firefox-i18n-17.0.5/hu.xpi) = 303044 +SHA256 (xpi/firefox-i18n-17.0.5/hy-AM.xpi) = 031ce0fb6692ada8ca3c14c81e0166699df0078c37cf2509d5153b546526df29 +SIZE (xpi/firefox-i18n-17.0.5/hy-AM.xpi) = 328204 +SHA256 (xpi/firefox-i18n-17.0.5/id.xpi) = db2904d0390cd968d0b1df8b44f6337b7f63bd226bfda6150ebbf51fd82b6ab0 +SIZE (xpi/firefox-i18n-17.0.5/id.xpi) = 283726 +SHA256 (xpi/firefox-i18n-17.0.5/is.xpi) = 9e6d8c3321cb6aa3f7c6405c3c92da81daefbb43e2e2144bce98cb1e9035b318 +SIZE (xpi/firefox-i18n-17.0.5/is.xpi) = 284908 +SHA256 (xpi/firefox-i18n-17.0.5/it.xpi) = 405a180337d5efed07a0e801af2ebe46a8131a7d62ca3f6958a630542dfca205 +SIZE (xpi/firefox-i18n-17.0.5/it.xpi) = 238645 +SHA256 (xpi/firefox-i18n-17.0.5/ja.xpi) = 2485b6d68f309e3c062cc0937e5be2a6b8e458fbda72df876e59d9f091b7a9ae +SIZE (xpi/firefox-i18n-17.0.5/ja.xpi) = 322490 +SHA256 (xpi/firefox-i18n-17.0.5/kk.xpi) = 6fcec5d4ae163a7a017c1fc5642f3ee42f87c3f3b3335bca698c79646622849e +SIZE (xpi/firefox-i18n-17.0.5/kk.xpi) = 330352 +SHA256 (xpi/firefox-i18n-17.0.5/kn.xpi) = d1eb36abc87c147988a6e6401a9c74fa9b35f4efba4967c208a29b2cf90fabb0 +SIZE (xpi/firefox-i18n-17.0.5/kn.xpi) = 354901 +SHA256 (xpi/firefox-i18n-17.0.5/ko.xpi) = 64156919aa0f3fd20717e91261d98d16631a9c6cdbe9e9aae36524fbecb5d76a +SIZE (xpi/firefox-i18n-17.0.5/ko.xpi) = 296729 +SHA256 (xpi/firefox-i18n-17.0.5/ku.xpi) = a142c220d8896d817dc7c78a633cbcfb5401ca8ad72adad941933cefac10095b +SIZE (xpi/firefox-i18n-17.0.5/ku.xpi) = 304898 +SHA256 (xpi/firefox-i18n-17.0.5/lg.xpi) = 48f512a7da6591fa74e15d7c8e817a1763d62d8fa68b0430689aa4edf5adb0a7 +SIZE (xpi/firefox-i18n-17.0.5/lg.xpi) = 290628 +SHA256 (xpi/firefox-i18n-17.0.5/lt.xpi) = b20148abf9ca8cb98643e35997626254beb04dc72e41dc4a5e1d0743085c371c +SIZE (xpi/firefox-i18n-17.0.5/lt.xpi) = 349462 +SHA256 (xpi/firefox-i18n-17.0.5/lv.xpi) = 96596b53c8bf4244babe7fd009e5c2e1700619162a10c2c383ef119fc9a8630d +SIZE (xpi/firefox-i18n-17.0.5/lv.xpi) = 291404 +SHA256 (xpi/firefox-i18n-17.0.5/mai.xpi) = 1c637a5eec4f8ea8c879bb907362d9987f72bd6047873a5472015d43b753c69d +SIZE (xpi/firefox-i18n-17.0.5/mai.xpi) = 328268 +SHA256 (xpi/firefox-i18n-17.0.5/mk.xpi) = 28e006a92e01257e81114d12a837271b3cea5f5c31f927073698c39b9f5d4d39 +SIZE (xpi/firefox-i18n-17.0.5/mk.xpi) = 315579 +SHA256 (xpi/firefox-i18n-17.0.5/ml.xpi) = 59ea098626ef6f8bb40004749d9ef9307bd49e1f08b8651061837430a4c56e81 +SIZE (xpi/firefox-i18n-17.0.5/ml.xpi) = 361542 +SHA256 (xpi/firefox-i18n-17.0.5/mr.xpi) = 91bcb1b5b7c625a132288d500f497c4bfcca17e36b1ea7132436e5184d46322a +SIZE (xpi/firefox-i18n-17.0.5/mr.xpi) = 327861 +SHA256 (xpi/firefox-i18n-17.0.5/nb-NO.xpi) = 3d163cc1e7c16a8263ea61128d579330e994bb17f5a70c9260366339e167b170 +SIZE (xpi/firefox-i18n-17.0.5/nb-NO.xpi) = 284889 +SHA256 (xpi/firefox-i18n-17.0.5/nl.xpi) = 069fc453652d8b26e2e7c9586672fd5dd332a61aeafd818450bbac5e55a0056e +SIZE (xpi/firefox-i18n-17.0.5/nl.xpi) = 286113 +SHA256 (xpi/firefox-i18n-17.0.5/nn-NO.xpi) = a20430c4de8151ee638ee73bf06deade026323ef2fb9beb7a0ee1afab6738cc5 +SIZE (xpi/firefox-i18n-17.0.5/nn-NO.xpi) = 287845 +SHA256 (xpi/firefox-i18n-17.0.5/nso.xpi) = db39426b437d8fbd8c35d0373e3db33a7781ab35f9796fcf04990fca56692de9 +SIZE (xpi/firefox-i18n-17.0.5/nso.xpi) = 288150 +SHA256 (xpi/firefox-i18n-17.0.5/or.xpi) = 046aa18bd285000af21c35a6af4e55854ed8362cf518cf46bcd9efbf11b3ddbd +SIZE (xpi/firefox-i18n-17.0.5/or.xpi) = 329684 +SHA256 (xpi/firefox-i18n-17.0.5/pa-IN.xpi) = 417527d33561fc736c2012e5ffafa9054e28d72892038210a5a2a6cf99fda57c +SIZE (xpi/firefox-i18n-17.0.5/pa-IN.xpi) = 318504 +SHA256 (xpi/firefox-i18n-17.0.5/pl.xpi) = 6278c98f22493869fec20fba0ee8e534e984bf7c20725e3ab037f1ad4f809328 +SIZE (xpi/firefox-i18n-17.0.5/pl.xpi) = 301036 +SHA256 (xpi/firefox-i18n-17.0.5/pt-BR.xpi) = 68da80fe3171298274d43194e6ae2c52b4e1c2bf1f2cce738102c84fb28efc56 +SIZE (xpi/firefox-i18n-17.0.5/pt-BR.xpi) = 289244 +SHA256 (xpi/firefox-i18n-17.0.5/pt-PT.xpi) = bc74462519c37788a9c48dd011e128e34908a2d977333017e0cda11e25a07589 +SIZE (xpi/firefox-i18n-17.0.5/pt-PT.xpi) = 291458 +SHA256 (xpi/firefox-i18n-17.0.5/rm.xpi) = 34720e9e78742cf8ecd58089daddda3dd2c816934580ae1c73da260108feadb8 +SIZE (xpi/firefox-i18n-17.0.5/rm.xpi) = 288467 +SHA256 (xpi/firefox-i18n-17.0.5/ro.xpi) = b35e5e1c14a981f9f3a4bc0639f6aa99100c84e9d1cf2abfe58400ef3f162544 +SIZE (xpi/firefox-i18n-17.0.5/ro.xpi) = 310252 +SHA256 (xpi/firefox-i18n-17.0.5/ru.xpi) = fb2328fc121bcaf48b1f098a1e668a7bff2cbc47d5761dba438b8245e3af1c94 +SIZE (xpi/firefox-i18n-17.0.5/ru.xpi) = 284915 +SHA256 (xpi/firefox-i18n-17.0.5/si.xpi) = a6567687f49b1e894f44eb1249a39e788d0584416cc957eb6b7d71f3b244e4ed +SIZE (xpi/firefox-i18n-17.0.5/si.xpi) = 317365 +SHA256 (xpi/firefox-i18n-17.0.5/sk.xpi) = 2d561cfc6784bc61e613a2329addac41cd7b65e2faa5cec23fcd8360d187b21f +SIZE (xpi/firefox-i18n-17.0.5/sk.xpi) = 301479 +SHA256 (xpi/firefox-i18n-17.0.5/sl.xpi) = d2453136caf1d37de09e6bdc4b7eb8f33a19735a53b77b0aa76924ae5d1d3e73 +SIZE (xpi/firefox-i18n-17.0.5/sl.xpi) = 286638 +SHA256 (xpi/firefox-i18n-17.0.5/son.xpi) = 11c529e4eb9c7c07523ea3b381dda08bbcdfc11dc9700d1280bf4873daf715e8 +SIZE (xpi/firefox-i18n-17.0.5/son.xpi) = 283684 +SHA256 (xpi/firefox-i18n-17.0.5/sq.xpi) = ad1831e09fc679c4683997d0d14f00ee8ae3e2bb489a575ae3fb52ba1d96df71 +SIZE (xpi/firefox-i18n-17.0.5/sq.xpi) = 291166 +SHA256 (xpi/firefox-i18n-17.0.5/sr.xpi) = 87b0285e59f0907c4f29653ce5b609856986be8f170187b6befebc188e4aa982 +SIZE (xpi/firefox-i18n-17.0.5/sr.xpi) = 334016 +SHA256 (xpi/firefox-i18n-17.0.5/sv-SE.xpi) = eb2d0db7fce1b71081dd86e4287a7142fd921c1741700378a37db61b7ec7a976 +SIZE (xpi/firefox-i18n-17.0.5/sv-SE.xpi) = 288084 +SHA256 (xpi/firefox-i18n-17.0.5/ta-LK.xpi) = fc5470b39b8f89004e1cd1f1ce83b1be6766d50f352e75a2e2b67520c0f5bb05 +SIZE (xpi/firefox-i18n-17.0.5/ta-LK.xpi) = 339932 +SHA256 (xpi/firefox-i18n-17.0.5/ta.xpi) = 99005d920f0fc2c7aeb576db68b88b4c0773ba7671b6bd7c7dd1a65beb406d28 +SIZE (xpi/firefox-i18n-17.0.5/ta.xpi) = 325367 +SHA256 (xpi/firefox-i18n-17.0.5/te.xpi) = 097e90c31b932d8e3bc6a6f5732e2b65e870a88e363996dd3427412cb1190e0d +SIZE (xpi/firefox-i18n-17.0.5/te.xpi) = 341958 +SHA256 (xpi/firefox-i18n-17.0.5/th.xpi) = 4d878a2daa93c13eb92311f2b474917ee057cad838b3b523f9f45eaa0e5fca83 +SIZE (xpi/firefox-i18n-17.0.5/th.xpi) = 323677 +SHA256 (xpi/firefox-i18n-17.0.5/tr.xpi) = f6aed5e6845d2bb1482537dd9a634a168d73bb783627f6670a808b9b44585a4d +SIZE (xpi/firefox-i18n-17.0.5/tr.xpi) = 295842 +SHA256 (xpi/firefox-i18n-17.0.5/uk.xpi) = 35b962feba64154cc3f85d710db1bf5f6ba641c0b012580377f7d4425655bd9e +SIZE (xpi/firefox-i18n-17.0.5/uk.xpi) = 324251 +SHA256 (xpi/firefox-i18n-17.0.5/vi.xpi) = ea645b5649b6f76c09b3adfc5331e8369a3fd4dd211841eb0c39810bf639156c +SIZE (xpi/firefox-i18n-17.0.5/vi.xpi) = 313549 +SHA256 (xpi/firefox-i18n-17.0.5/zh-CN.xpi) = 339a161d6e85d6b2ec7713a7616d9e060c984c3f058bc970b2ea41f12126aa8f +SIZE (xpi/firefox-i18n-17.0.5/zh-CN.xpi) = 304251 +SHA256 (xpi/firefox-i18n-17.0.5/zh-TW.xpi) = 53b06efdfc8f08d9f779b626769b75d3462b1e1cacc12c4fb698afd3e438a403 +SIZE (xpi/firefox-i18n-17.0.5/zh-TW.xpi) = 305438 +SHA256 (xpi/firefox-i18n-17.0.5/zu.xpi) = b63cdc27afda7be4904b7ca11672bb35d55570198e3a79527f79e502a51a99cd +SIZE (xpi/firefox-i18n-17.0.5/zu.xpi) = 296595 Index: www/firefox-i18n/Makefile =================================================================== --- www/firefox-i18n/Makefile (revision 315699) +++ www/firefox-i18n/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox-i18n -PORTVERSION= 19.0.2 +PORTVERSION= 20.0 CATEGORIES= www MASTER_SITE_SUBDIR= firefox/releases/${PORTVERSION}/linux-i686/xpi PKGNAMEPREFIX= @@ -14,7 +14,7 @@ EXTRACT_DEPENDS= zip:${PORTSDIR}/archivers/zip -USE_FIREFOX= 19 +USE_FIREFOX= 20 USE_XPI= firefox linux-firefox USE_SUBMAKE= yes @@ -50,7 +50,7 @@ do-extract: @${MKDIR} ${WRKSRC} @for lang in ${FIREFOX_I18N_}; do \ - if ! (${EXTRACT_CMD} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@firefox.mozilla.org);\ + if ! (${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@firefox.mozilla.org);\ then \ exit 1; \ fi; \ Index: www/firefox-i18n/distinfo =================================================================== --- www/firefox-i18n/distinfo (revision 315699) +++ www/firefox-i18n/distinfo (working copy) @@ -1,164 +1,164 @@ -SHA256 (xpi/firefox-i18n-19.0.2/af.xpi) = 8786161b560114a797a6b04d7753bb62d111c2e29af4c52edd89b96972c50371 -SIZE (xpi/firefox-i18n-19.0.2/af.xpi) = 293480 -SHA256 (xpi/firefox-i18n-19.0.2/ak.xpi) = f11467975c99150b21c520f8c04b0361d8b18c02c36bff4d69d5b894e5c89dcd -SIZE (xpi/firefox-i18n-19.0.2/ak.xpi) = 296795 -SHA256 (xpi/firefox-i18n-19.0.2/ar.xpi) = 19aaa7db154c0e38711a7be29a5f39f8f878cd94b8b1e35b5c29ccdffde1044c -SIZE (xpi/firefox-i18n-19.0.2/ar.xpi) = 324466 -SHA256 (xpi/firefox-i18n-19.0.2/ast.xpi) = 5f66f20c20570269c7ddca82605abe714194ddc5ff1146c20e42d7804efb483e -SIZE (xpi/firefox-i18n-19.0.2/ast.xpi) = 269699 -SHA256 (xpi/firefox-i18n-19.0.2/be.xpi) = 8f4df614850bf6a5e52b03e34498abccb91ebf6c088b597e0cf1cf6c78ba0453 -SIZE (xpi/firefox-i18n-19.0.2/be.xpi) = 287724 -SHA256 (xpi/firefox-i18n-19.0.2/bg.xpi) = be2d88a5e1f2edff074863e7a9a182cba0549cc4e1d2b4db82af92e559f54231 -SIZE (xpi/firefox-i18n-19.0.2/bg.xpi) = 341211 -SHA256 (xpi/firefox-i18n-19.0.2/bn-BD.xpi) = 33f49b5f391a39447459db087b19ba92cdc204125d6d8cfa2118bbff95eae875 -SIZE (xpi/firefox-i18n-19.0.2/bn-BD.xpi) = 354719 -SHA256 (xpi/firefox-i18n-19.0.2/bn-IN.xpi) = 8c863f4b266e4d1e2935e39072237fec2f42aa542d4d73fcb773c1ce5d0a69f5 -SIZE (xpi/firefox-i18n-19.0.2/bn-IN.xpi) = 386851 -SHA256 (xpi/firefox-i18n-19.0.2/br.xpi) = 26edaff0842e5697266aad796306ed8ccd9c36ac6c63df68e7b202203d9313c1 -SIZE (xpi/firefox-i18n-19.0.2/br.xpi) = 302696 -SHA256 (xpi/firefox-i18n-19.0.2/bs.xpi) = 107c480de49f82502a433a9e7d5ae5e063df496414d37739de0a6d31c62023f8 -SIZE (xpi/firefox-i18n-19.0.2/bs.xpi) = 298729 -SHA256 (xpi/firefox-i18n-19.0.2/ca.xpi) = 72fb151a507b028e760bdc3f2991ff5516cddb052c9f2abfad6b90727947a755 -SIZE (xpi/firefox-i18n-19.0.2/ca.xpi) = 305631 -SHA256 (xpi/firefox-i18n-19.0.2/cs.xpi) = 4faa9652d8ea853f98418445fb22d26d80980537b3044fefd18e66d1ee5609b4 -SIZE (xpi/firefox-i18n-19.0.2/cs.xpi) = 304697 -SHA256 (xpi/firefox-i18n-19.0.2/cy.xpi) = 05264e3a771c2479f82a1c3d5410c3f49647ca4d365ced30de799785127a4bdb -SIZE (xpi/firefox-i18n-19.0.2/cy.xpi) = 297430 -SHA256 (xpi/firefox-i18n-19.0.2/da.xpi) = 1016a9c44554be5042344a7757dfecfdad0131647dac5a37d386043da2194407 -SIZE (xpi/firefox-i18n-19.0.2/da.xpi) = 294086 -SHA256 (xpi/firefox-i18n-19.0.2/de.xpi) = 2dd66a0b8dc218004511a743982fb869bcce9e924146fd51d70a3e04aa9f4346 -SIZE (xpi/firefox-i18n-19.0.2/de.xpi) = 284208 -SHA256 (xpi/firefox-i18n-19.0.2/el.xpi) = 308bc74ee28a36faaac256f9d2c0af640d934ed85762135445f47a5955ba1809 -SIZE (xpi/firefox-i18n-19.0.2/el.xpi) = 331441 -SHA256 (xpi/firefox-i18n-19.0.2/en-GB.xpi) = fd07f56725a43706312328efb54dea87f7b995670e5d95912fa60aa5ac560b96 -SIZE (xpi/firefox-i18n-19.0.2/en-GB.xpi) = 283378 -SHA256 (xpi/firefox-i18n-19.0.2/en-US.xpi) = 48669de5c199594925b4e95e620108fc6c269933f75740b92e0bbb54fbf8d873 -SIZE (xpi/firefox-i18n-19.0.2/en-US.xpi) = 284312 -SHA256 (xpi/firefox-i18n-19.0.2/en-ZA.xpi) = dc51f7c4a58784ed7f55e9969742d57abc2e2d08e7288cfecc0c684e6699b5ec -SIZE (xpi/firefox-i18n-19.0.2/en-ZA.xpi) = 285996 -SHA256 (xpi/firefox-i18n-19.0.2/eo.xpi) = dea67bc22a452eeb407bb67db6f321879378b26fca47fc73e2375f187071cdd3 -SIZE (xpi/firefox-i18n-19.0.2/eo.xpi) = 297645 -SHA256 (xpi/firefox-i18n-19.0.2/es-AR.xpi) = 6c704759f7ee13f9c58dade8a644fdffa80a74eba5666dcdb1abe65a154fac29 -SIZE (xpi/firefox-i18n-19.0.2/es-AR.xpi) = 300309 -SHA256 (xpi/firefox-i18n-19.0.2/es-CL.xpi) = 48c894538cdbb1458b26ec684a2b6ad3b933e37acc513e051fe971dc9c161ad2 -SIZE (xpi/firefox-i18n-19.0.2/es-CL.xpi) = 310182 -SHA256 (xpi/firefox-i18n-19.0.2/es-ES.xpi) = 0ecaf70626a19439003895d0268f8fd40a5e031b4b16bfb5331dc01df257a9e3 -SIZE (xpi/firefox-i18n-19.0.2/es-ES.xpi) = 251867 -SHA256 (xpi/firefox-i18n-19.0.2/es-MX.xpi) = e8da28c64f54030aa1c501944450fcc45a87e2d6422e27eb6d2abb468ba9b07e -SIZE (xpi/firefox-i18n-19.0.2/es-MX.xpi) = 262700 -SHA256 (xpi/firefox-i18n-19.0.2/et.xpi) = da3fb11e82825b48eae8f10a5f1433b0630e6d7538a1f1cfeab31738c261184f -SIZE (xpi/firefox-i18n-19.0.2/et.xpi) = 295618 -SHA256 (xpi/firefox-i18n-19.0.2/eu.xpi) = d840d85cf9fab1a78955d1176e206f472b921207e913332a7d16c59d0036e6cf -SIZE (xpi/firefox-i18n-19.0.2/eu.xpi) = 296324 -SHA256 (xpi/firefox-i18n-19.0.2/fa.xpi) = b5ad8aad1a1955f0b25cc93a7b19ee1e99bbfe3326883d00732e988ec69d0ed8 -SIZE (xpi/firefox-i18n-19.0.2/fa.xpi) = 333057 -SHA256 (xpi/firefox-i18n-19.0.2/fi.xpi) = f87f7f3cd8968818bc41e29a5e27d5cbe1e1a81da03323b780435d1610f04f74 -SIZE (xpi/firefox-i18n-19.0.2/fi.xpi) = 301417 -SHA256 (xpi/firefox-i18n-19.0.2/fr.xpi) = 5f1c1b1d1191e67704993a410170904a160166508f6324dcb1ec546be787c042 -SIZE (xpi/firefox-i18n-19.0.2/fr.xpi) = 304706 -SHA256 (xpi/firefox-i18n-19.0.2/fy-NL.xpi) = 0aa97a5f8749459766c74e9d839db4c7f7e69152b1029fc12d9828c227adc97c -SIZE (xpi/firefox-i18n-19.0.2/fy-NL.xpi) = 301155 -SHA256 (xpi/firefox-i18n-19.0.2/ga-IE.xpi) = d7019c744e7f9d265629b28b4850bf482e8aff597e8077c2dc4189e045ea8557 -SIZE (xpi/firefox-i18n-19.0.2/ga-IE.xpi) = 311074 -SHA256 (xpi/firefox-i18n-19.0.2/gl.xpi) = a8d6a5e0c6e4390c2bc831fd657b388d2c4010f72fb1861efc0a04bad9fa297e -SIZE (xpi/firefox-i18n-19.0.2/gl.xpi) = 297732 -SHA256 (xpi/firefox-i18n-19.0.2/gu-IN.xpi) = 7695f5b4323947875ed27932fc4916697bf5e52ebc0532786d84e5c59f8f346e -SIZE (xpi/firefox-i18n-19.0.2/gu-IN.xpi) = 334029 -SHA256 (xpi/firefox-i18n-19.0.2/he.xpi) = 36dcdee4f67a7f4fdd4edc1a65b37085648510917d70863216a7fa0cc93b7bf8 -SIZE (xpi/firefox-i18n-19.0.2/he.xpi) = 315415 -SHA256 (xpi/firefox-i18n-19.0.2/hi-IN.xpi) = 974eda65fc471ad3c327c4bdc4fc3fb035dd19c56f568ac150ef8b2e7bf38775 -SIZE (xpi/firefox-i18n-19.0.2/hi-IN.xpi) = 345262 -SHA256 (xpi/firefox-i18n-19.0.2/hr.xpi) = 04610cccbda1674ab2597f3edbcb29337d31c7964b503edbb3967657c1242eed -SIZE (xpi/firefox-i18n-19.0.2/hr.xpi) = 299018 -SHA256 (xpi/firefox-i18n-19.0.2/hu.xpi) = cf91711f0279056d189e29a525a90084441f480c9000495dcbd1e499a4790960 -SIZE (xpi/firefox-i18n-19.0.2/hu.xpi) = 315578 -SHA256 (xpi/firefox-i18n-19.0.2/hy-AM.xpi) = d41e3ea84d7a7894262145fe981c0241932f0cfe681daeeb89ac4c992f173e2a -SIZE (xpi/firefox-i18n-19.0.2/hy-AM.xpi) = 341821 -SHA256 (xpi/firefox-i18n-19.0.2/id.xpi) = 61b1e51e13e629e054573c019e57fc7ce72ad2e42612382bcc07fe350d0c8ecd -SIZE (xpi/firefox-i18n-19.0.2/id.xpi) = 292472 -SHA256 (xpi/firefox-i18n-19.0.2/is.xpi) = be0e3f28d1d115ae8740847f83c25c9f8d578804f69d37d279137609b6fb2159 -SIZE (xpi/firefox-i18n-19.0.2/is.xpi) = 297284 -SHA256 (xpi/firefox-i18n-19.0.2/it.xpi) = d9a38a846b36ba490162a9e28c7507266b7a5707f3a840e026d4ed840c21920e -SIZE (xpi/firefox-i18n-19.0.2/it.xpi) = 247778 -SHA256 (xpi/firefox-i18n-19.0.2/ja.xpi) = 20fa9f703f7a7ff51bad50c468277b436689198f5113c85a510b931f2a32c5fc -SIZE (xpi/firefox-i18n-19.0.2/ja.xpi) = 335904 -SHA256 (xpi/firefox-i18n-19.0.2/kk.xpi) = 18e764a97a5520c4d31954a7ccde7caf3a17d1010dc09155d71de9d91a154cf1 -SIZE (xpi/firefox-i18n-19.0.2/kk.xpi) = 341872 -SHA256 (xpi/firefox-i18n-19.0.2/kn.xpi) = a26f0d054bf45c1e53cb446247daee9640478e6533b43edb65bb9c59cca5a6ab -SIZE (xpi/firefox-i18n-19.0.2/kn.xpi) = 368747 -SHA256 (xpi/firefox-i18n-19.0.2/ko.xpi) = db54c16cfaaa87e3adb4253a047523b68eb82f19bb82a35562da2c23b0077e1d -SIZE (xpi/firefox-i18n-19.0.2/ko.xpi) = 308895 -SHA256 (xpi/firefox-i18n-19.0.2/ku.xpi) = f464dc4097d84724510e07aed6819a7d067566db8966530d3c51a69b2f178279 -SIZE (xpi/firefox-i18n-19.0.2/ku.xpi) = 317700 -SHA256 (xpi/firefox-i18n-19.0.2/lg.xpi) = 8b73d2a3da814e99061e5973861f43ca4351e0327efd68eae585cca9a3cc5e1c -SIZE (xpi/firefox-i18n-19.0.2/lg.xpi) = 304559 -SHA256 (xpi/firefox-i18n-19.0.2/lt.xpi) = 872892e48c493867e8d92732740318d205399427e4800b48c4184d8cb28b3091 -SIZE (xpi/firefox-i18n-19.0.2/lt.xpi) = 315942 -SHA256 (xpi/firefox-i18n-19.0.2/lv.xpi) = b7543a8de5a15264eadfa8fad6fa3704bc93ef34660fa8b426c5eef8e745d35c -SIZE (xpi/firefox-i18n-19.0.2/lv.xpi) = 296144 -SHA256 (xpi/firefox-i18n-19.0.2/mai.xpi) = 21f1c276d14dcb82ed42702ae12c032dddeaeb663aba0576b572828a7499d4c0 -SIZE (xpi/firefox-i18n-19.0.2/mai.xpi) = 342111 -SHA256 (xpi/firefox-i18n-19.0.2/mk.xpi) = 61b238c101ca4af6cd1d3724b4aca8d52d6c68ed0ee4a72985606d07c0024558 -SIZE (xpi/firefox-i18n-19.0.2/mk.xpi) = 327846 -SHA256 (xpi/firefox-i18n-19.0.2/ml.xpi) = c6831841aa10f5811a441600a7feca183dfde7ac1a075a8474340d57836fb6b3 -SIZE (xpi/firefox-i18n-19.0.2/ml.xpi) = 375911 -SHA256 (xpi/firefox-i18n-19.0.2/mr.xpi) = 74eb27538f970b15e8e06ec474631799d4bdea281e1d0c7d3758347a757effc6 -SIZE (xpi/firefox-i18n-19.0.2/mr.xpi) = 342900 -SHA256 (xpi/firefox-i18n-19.0.2/nb-NO.xpi) = 16a737b5e09814248a591351694c99a42521938920ba64079f3a88e9767eea4b -SIZE (xpi/firefox-i18n-19.0.2/nb-NO.xpi) = 296250 -SHA256 (xpi/firefox-i18n-19.0.2/nl.xpi) = f9fea52f631bdb9cf370f9d25183fc5db4a3b026d81d25b79695a9a9c93714ba -SIZE (xpi/firefox-i18n-19.0.2/nl.xpi) = 297333 -SHA256 (xpi/firefox-i18n-19.0.2/nn-NO.xpi) = d2b686450c6eacf5469d19205204b26602624f309b6c4c93d0a94d4458414346 -SIZE (xpi/firefox-i18n-19.0.2/nn-NO.xpi) = 301552 -SHA256 (xpi/firefox-i18n-19.0.2/nso.xpi) = 53da11545e00a4b78be94f9742b649fa59ac5f9d2f391a8cc05940fa9abade2f -SIZE (xpi/firefox-i18n-19.0.2/nso.xpi) = 302143 -SHA256 (xpi/firefox-i18n-19.0.2/or.xpi) = f27b6d1f774abf4fa6789510a532c4af23cba8f28c3cce892c26ed0c8aee2596 -SIZE (xpi/firefox-i18n-19.0.2/or.xpi) = 344152 -SHA256 (xpi/firefox-i18n-19.0.2/pa-IN.xpi) = 682ce39c4898f960cdd04ec2ced08f63f3db785862251575358e6f345c82d30d -SIZE (xpi/firefox-i18n-19.0.2/pa-IN.xpi) = 332279 -SHA256 (xpi/firefox-i18n-19.0.2/pl.xpi) = cc5ae32296885a89e14c1854ceaf5905a235321a18d405b5cc61964614c2b6f7 -SIZE (xpi/firefox-i18n-19.0.2/pl.xpi) = 308691 -SHA256 (xpi/firefox-i18n-19.0.2/pt-BR.xpi) = db3ef359925739d546245f06a40930e49fe114dc716174ac306e02e5042c5508 -SIZE (xpi/firefox-i18n-19.0.2/pt-BR.xpi) = 302351 -SHA256 (xpi/firefox-i18n-19.0.2/pt-PT.xpi) = c4d429247b5d4739ec9dff4fab9c48a1877d794e23bcdaaec6fa81febfe15c87 -SIZE (xpi/firefox-i18n-19.0.2/pt-PT.xpi) = 303166 -SHA256 (xpi/firefox-i18n-19.0.2/rm.xpi) = 8e0e13372eb6ec05b63c6dcf40a526222b22547edcdd1672a14803db4c350da4 -SIZE (xpi/firefox-i18n-19.0.2/rm.xpi) = 299336 -SHA256 (xpi/firefox-i18n-19.0.2/ro.xpi) = 3f3668b1afeb6cb60a38196c52afaa5e93b4cd2d130774caf8e8553ae43f4835 -SIZE (xpi/firefox-i18n-19.0.2/ro.xpi) = 324144 -SHA256 (xpi/firefox-i18n-19.0.2/ru.xpi) = be3d464ff79f4fb9839ead7dfd5df700ba72971fd1fcc91df8242c4ebfea0720 -SIZE (xpi/firefox-i18n-19.0.2/ru.xpi) = 294933 -SHA256 (xpi/firefox-i18n-19.0.2/si.xpi) = dc6f2ff847959834d8adb71b1c2abf895eecee6dfd4443fe084abef9a5603c01 -SIZE (xpi/firefox-i18n-19.0.2/si.xpi) = 331553 -SHA256 (xpi/firefox-i18n-19.0.2/sk.xpi) = 20495f29f3b03bec5513ed5f6bcee6ca295f7dcbfb5075b6b54a5c3c6606837a -SIZE (xpi/firefox-i18n-19.0.2/sk.xpi) = 312848 -SHA256 (xpi/firefox-i18n-19.0.2/sl.xpi) = 02fb65724d8aca3db0fbb08fcd3f7a06e81a719c12e7dea841257f3391293b91 -SIZE (xpi/firefox-i18n-19.0.2/sl.xpi) = 295535 -SHA256 (xpi/firefox-i18n-19.0.2/son.xpi) = 9b40e65bd3ae4bd360b9be9fe89faf3865a3e99875f1dffa9cec668dbfce52b6 -SIZE (xpi/firefox-i18n-19.0.2/son.xpi) = 297377 -SHA256 (xpi/firefox-i18n-19.0.2/sq.xpi) = 14faa8da0cf25d632c1fb7923c1e6a1fad163b8536213fedc3779c8000d88be1 -SIZE (xpi/firefox-i18n-19.0.2/sq.xpi) = 304123 -SHA256 (xpi/firefox-i18n-19.0.2/sr.xpi) = a20c33241c4f5b408fffdfa31c7151d3f8383eb382ff556f3fc6011dd80fc628 -SIZE (xpi/firefox-i18n-19.0.2/sr.xpi) = 347553 -SHA256 (xpi/firefox-i18n-19.0.2/sv-SE.xpi) = ff1d75c7cd05a5750687d5b246298ed3d64cd284c5947dabd9ba44035eb9bf3f -SIZE (xpi/firefox-i18n-19.0.2/sv-SE.xpi) = 299878 -SHA256 (xpi/firefox-i18n-19.0.2/ta-LK.xpi) = cb987227bef3fd36e12555221d24d5d36f425f652d9c4307da44f65847aa0d1c -SIZE (xpi/firefox-i18n-19.0.2/ta-LK.xpi) = 353089 -SHA256 (xpi/firefox-i18n-19.0.2/ta.xpi) = dd17fcabc8c2af975a423b94e315c607ba7e9d90e019dfd182e33c86e0281e39 -SIZE (xpi/firefox-i18n-19.0.2/ta.xpi) = 338036 -SHA256 (xpi/firefox-i18n-19.0.2/te.xpi) = 29167f2f5e13cdd129a38e840cb4bd85aa2c1a788a08059546af7b3a6017f272 -SIZE (xpi/firefox-i18n-19.0.2/te.xpi) = 353258 -SHA256 (xpi/firefox-i18n-19.0.2/th.xpi) = 2de3617c4c5609454524be31f6ac6595ac99fc419902641ab1c4f2237b6f6ee0 -SIZE (xpi/firefox-i18n-19.0.2/th.xpi) = 337188 -SHA256 (xpi/firefox-i18n-19.0.2/tr.xpi) = 8adc8faa636bf3754799fb2deb72fb0aa76bcec397593a424bc41fa7c31bacd0 -SIZE (xpi/firefox-i18n-19.0.2/tr.xpi) = 307542 -SHA256 (xpi/firefox-i18n-19.0.2/uk.xpi) = 07f9282873596a64d16e73cda9640a5f9b8245d9c76c624b1178d6482ee716d0 -SIZE (xpi/firefox-i18n-19.0.2/uk.xpi) = 338323 -SHA256 (xpi/firefox-i18n-19.0.2/vi.xpi) = ba733ddf714395e633619d8c1e25710fb25cfd9168e2a1dc88a14b3b8f65ea25 -SIZE (xpi/firefox-i18n-19.0.2/vi.xpi) = 320835 -SHA256 (xpi/firefox-i18n-19.0.2/zh-CN.xpi) = 1d39ca2d1a1d14ebd50d6cbb3a3d74b2cd1041d93d21b71c4114a712f884def7 -SIZE (xpi/firefox-i18n-19.0.2/zh-CN.xpi) = 317961 -SHA256 (xpi/firefox-i18n-19.0.2/zh-TW.xpi) = 4b6b2acd1f382ebb1fb7711645c62ca959298e340b4a77e8dff3bb8ca68c61fb -SIZE (xpi/firefox-i18n-19.0.2/zh-TW.xpi) = 318476 -SHA256 (xpi/firefox-i18n-19.0.2/zu.xpi) = 077a6e1c86de15763a819ac94e706f5ed071c52ba63e1986ba62b86e6a40d6be -SIZE (xpi/firefox-i18n-19.0.2/zu.xpi) = 309496 +SHA256 (xpi/firefox-i18n-20.0/af.xpi) = a522041ef9e9c49cef1946df57a3076a14c9b10b907c96c021448d7f3303e96c +SIZE (xpi/firefox-i18n-20.0/af.xpi) = 301043 +SHA256 (xpi/firefox-i18n-20.0/ak.xpi) = 61eeb234a1f8b6e4eb8f7c41f29a0b194884a67bef251b84658866b6d1fa7cba +SIZE (xpi/firefox-i18n-20.0/ak.xpi) = 303972 +SHA256 (xpi/firefox-i18n-20.0/ar.xpi) = 33719f597e65c789511e80c5dbaeb4b09dcdd543e3c6c5104530ea81c94d43ab +SIZE (xpi/firefox-i18n-20.0/ar.xpi) = 329939 +SHA256 (xpi/firefox-i18n-20.0/ast.xpi) = 1c8bc7934b97e46549f5f7eecba674d828ee7f02598f17d85b1ac9b671c80fc7 +SIZE (xpi/firefox-i18n-20.0/ast.xpi) = 274309 +SHA256 (xpi/firefox-i18n-20.0/be.xpi) = 9d527c2b61c173d145ec702cd0a511880971ef9509c5eac4fb80dde3905e9592 +SIZE (xpi/firefox-i18n-20.0/be.xpi) = 293092 +SHA256 (xpi/firefox-i18n-20.0/bg.xpi) = f894f87bbd9c9f1129c3178e1b5247e23fff0a8030da2789858302fe94405e7c +SIZE (xpi/firefox-i18n-20.0/bg.xpi) = 348239 +SHA256 (xpi/firefox-i18n-20.0/bn-BD.xpi) = 84d5670ac1ec51191f497c824d53c5414e5b6b0ba2afa3fc5dc7f0c50a540cd9 +SIZE (xpi/firefox-i18n-20.0/bn-BD.xpi) = 362515 +SHA256 (xpi/firefox-i18n-20.0/bn-IN.xpi) = 7cba49b2703d08b3025d914a4d50a13671e4c327e9aafee8e1b203a58dcdf227 +SIZE (xpi/firefox-i18n-20.0/bn-IN.xpi) = 393934 +SHA256 (xpi/firefox-i18n-20.0/br.xpi) = 8a93cb226257dcdd13ed2de6e7b577f377fbacd60866b33bec125dbbf36c3af3 +SIZE (xpi/firefox-i18n-20.0/br.xpi) = 308303 +SHA256 (xpi/firefox-i18n-20.0/bs.xpi) = 485593959891f92ea0e5f0f5d1b1388a9c0404d1842c473ce3f1d36d5b6570fa +SIZE (xpi/firefox-i18n-20.0/bs.xpi) = 304338 +SHA256 (xpi/firefox-i18n-20.0/ca.xpi) = e9da45497f6e5d53a2a33c16b21f51cf13a03d73ab84a6181687db2689674fe8 +SIZE (xpi/firefox-i18n-20.0/ca.xpi) = 310833 +SHA256 (xpi/firefox-i18n-20.0/cs.xpi) = 06475ac5be519fc502a1f8b018cec66f1b3bcb5c52f7af56776a317838d826ac +SIZE (xpi/firefox-i18n-20.0/cs.xpi) = 310126 +SHA256 (xpi/firefox-i18n-20.0/cy.xpi) = a3d07d5b7bd3a4e0894f999d1cfad1f8c442490af0077561893354e3e73144e8 +SIZE (xpi/firefox-i18n-20.0/cy.xpi) = 302580 +SHA256 (xpi/firefox-i18n-20.0/da.xpi) = d9f3de69ca3164901ef0bb9108f7bcaac24bf72803779ab1448b4b66a6a86052 +SIZE (xpi/firefox-i18n-20.0/da.xpi) = 299834 +SHA256 (xpi/firefox-i18n-20.0/de.xpi) = 96469d35bb5c2d108a591d5ac00d115976be600754491b40ae4373b4abcbe479 +SIZE (xpi/firefox-i18n-20.0/de.xpi) = 292091 +SHA256 (xpi/firefox-i18n-20.0/el.xpi) = b198bd88d25cf2591f0abaa00ac39eddb9de30650622147f46db12802f08a53b +SIZE (xpi/firefox-i18n-20.0/el.xpi) = 336878 +SHA256 (xpi/firefox-i18n-20.0/en-GB.xpi) = 4b24201b8428eda9d9015958fcbf8836c3520cf8716f884477c9c920d806d901 +SIZE (xpi/firefox-i18n-20.0/en-GB.xpi) = 288530 +SHA256 (xpi/firefox-i18n-20.0/en-US.xpi) = 0a3073caa3f67c3d8f05c2c5a12a860403b7611060ea36be4ba5eca22785f2be +SIZE (xpi/firefox-i18n-20.0/en-US.xpi) = 289249 +SHA256 (xpi/firefox-i18n-20.0/en-ZA.xpi) = 8baf2ddf3686d897d8d05f23bf9243bcc17c37a746cd9ebadc7b1c4b086c48e1 +SIZE (xpi/firefox-i18n-20.0/en-ZA.xpi) = 289445 +SHA256 (xpi/firefox-i18n-20.0/eo.xpi) = b64086feef439656fafff187ebab91b9f55dfcb9bdfc91b2b180424bedbbb715 +SIZE (xpi/firefox-i18n-20.0/eo.xpi) = 302967 +SHA256 (xpi/firefox-i18n-20.0/es-AR.xpi) = 7448775f99f10787bd9e4b1ab94f1cab8bd9d59496059085b12891385495c7fe +SIZE (xpi/firefox-i18n-20.0/es-AR.xpi) = 305557 +SHA256 (xpi/firefox-i18n-20.0/es-CL.xpi) = a6d38cef0a6caa267e921eed54650cadb70e80e438b83a61818310aac54c8fc7 +SIZE (xpi/firefox-i18n-20.0/es-CL.xpi) = 306524 +SHA256 (xpi/firefox-i18n-20.0/es-ES.xpi) = 7cd440f048386422093da60a3900817c5f0cff544bc5175585bcc8df541ab35e +SIZE (xpi/firefox-i18n-20.0/es-ES.xpi) = 256497 +SHA256 (xpi/firefox-i18n-20.0/es-MX.xpi) = 2027211294090fb44d9a2703fc6775f155aa641dd89239eb9cba331f288ea6fb +SIZE (xpi/firefox-i18n-20.0/es-MX.xpi) = 270358 +SHA256 (xpi/firefox-i18n-20.0/et.xpi) = be1c3de232a4c85b0eca675c6ae06c6bdf1754c2401346fc67c7f0f190d35e4a +SIZE (xpi/firefox-i18n-20.0/et.xpi) = 300695 +SHA256 (xpi/firefox-i18n-20.0/eu.xpi) = 55171971fd5ad66d2d732c15d16a1df0521a0dcb6b1e98b1e97d2ec85e786f9e +SIZE (xpi/firefox-i18n-20.0/eu.xpi) = 301606 +SHA256 (xpi/firefox-i18n-20.0/fa.xpi) = b540af8e6dddcaa94158a9bfb29c7a5dab37a8739d6e01e02defa1a775ae3869 +SIZE (xpi/firefox-i18n-20.0/fa.xpi) = 340391 +SHA256 (xpi/firefox-i18n-20.0/fi.xpi) = ebe0fa4d72859c5c008a63e4cca59d62e93117a4250366363c55cb7f1d403c19 +SIZE (xpi/firefox-i18n-20.0/fi.xpi) = 305263 +SHA256 (xpi/firefox-i18n-20.0/fr.xpi) = 225633c5978a30d6ac88a34888c1cb050c06247d1cb27c063542d5c6777aca8a +SIZE (xpi/firefox-i18n-20.0/fr.xpi) = 310354 +SHA256 (xpi/firefox-i18n-20.0/fy-NL.xpi) = 024677f3d994ce2f5b0695d30106e071cd87e45aa9e42fe78ce10ba9cef6767e +SIZE (xpi/firefox-i18n-20.0/fy-NL.xpi) = 306664 +SHA256 (xpi/firefox-i18n-20.0/ga-IE.xpi) = c81264faab863b19c44a5fff86c211fa74e8c02c95c4704416d6d51d8d131af2 +SIZE (xpi/firefox-i18n-20.0/ga-IE.xpi) = 314804 +SHA256 (xpi/firefox-i18n-20.0/gl.xpi) = bb94c16c221116805c6ad2d5d33755065a33fda37e6614f45ac17280dd3d6080 +SIZE (xpi/firefox-i18n-20.0/gl.xpi) = 303465 +SHA256 (xpi/firefox-i18n-20.0/gu-IN.xpi) = 2e661f6336350a12fcb7a35628bb842a4138f7bac8b50130059bb990eff5e180 +SIZE (xpi/firefox-i18n-20.0/gu-IN.xpi) = 341185 +SHA256 (xpi/firefox-i18n-20.0/he.xpi) = 25a1dd9f5079826b63123a1434be33d8b1d3510e332d9604ca3f97f047c239d8 +SIZE (xpi/firefox-i18n-20.0/he.xpi) = 322693 +SHA256 (xpi/firefox-i18n-20.0/hi-IN.xpi) = c8ad4189bc5dbed40e2a7bbbedc07ac5a03e3a4541b5f8aa584a17b63a3c9eb1 +SIZE (xpi/firefox-i18n-20.0/hi-IN.xpi) = 352528 +SHA256 (xpi/firefox-i18n-20.0/hr.xpi) = 48defce8c99b0444c4e147851c65e6a458d7f63c9c5a5c9bd221334f4fb3ae91 +SIZE (xpi/firefox-i18n-20.0/hr.xpi) = 304835 +SHA256 (xpi/firefox-i18n-20.0/hu.xpi) = bc535ab1a1dd622ae7a066242993a34e1083fc4f144b9d492ba41a2858b4fec4 +SIZE (xpi/firefox-i18n-20.0/hu.xpi) = 318361 +SHA256 (xpi/firefox-i18n-20.0/hy-AM.xpi) = b5241cad70c5970011887947f56cff38209f4f73de28404f93d0eef963291215 +SIZE (xpi/firefox-i18n-20.0/hy-AM.xpi) = 348777 +SHA256 (xpi/firefox-i18n-20.0/id.xpi) = e3665b5036cf4366631b70f281234008bd93610cdd16a8d2335fc59b77638dd9 +SIZE (xpi/firefox-i18n-20.0/id.xpi) = 297915 +SHA256 (xpi/firefox-i18n-20.0/is.xpi) = dfd109b41a46435cc488646fd759dc61b5b7e5cd55c77cc08174df07576019a9 +SIZE (xpi/firefox-i18n-20.0/is.xpi) = 302423 +SHA256 (xpi/firefox-i18n-20.0/it.xpi) = 02fdc8c7fc9498e6d599dedf267c458777325a3a7e2a0d1feb9f7b0eb7b327ed +SIZE (xpi/firefox-i18n-20.0/it.xpi) = 252427 +SHA256 (xpi/firefox-i18n-20.0/ja.xpi) = 12cea77dd72a6e8648b758ac75082a72146ed56a57a54f535c89e6f18382d921 +SIZE (xpi/firefox-i18n-20.0/ja.xpi) = 341664 +SHA256 (xpi/firefox-i18n-20.0/kk.xpi) = cfe82a80879a9d32839489d532a036eca87bf2ffe3a025bef1e19662088f77d2 +SIZE (xpi/firefox-i18n-20.0/kk.xpi) = 349637 +SHA256 (xpi/firefox-i18n-20.0/kn.xpi) = 0b573fae4f8de56411ffa464ee93663e8eebaa9772384b7cbd72ae3d2f02e14a +SIZE (xpi/firefox-i18n-20.0/kn.xpi) = 375789 +SHA256 (xpi/firefox-i18n-20.0/ko.xpi) = 946b66e09cc1265d6ec910252cd49621629edb98341da59462c3e98fed24db9b +SIZE (xpi/firefox-i18n-20.0/ko.xpi) = 316095 +SHA256 (xpi/firefox-i18n-20.0/ku.xpi) = c295952f19d17da04cef15d09e0cc2665edba4eb666008943ca0151787c1ab6c +SIZE (xpi/firefox-i18n-20.0/ku.xpi) = 323420 +SHA256 (xpi/firefox-i18n-20.0/lg.xpi) = 2203d502a3bae83dc2d9ff6da1283fda3b21c94796f7e366b8bf7f57be65b298 +SIZE (xpi/firefox-i18n-20.0/lg.xpi) = 311843 +SHA256 (xpi/firefox-i18n-20.0/lt.xpi) = 6e02895414a9009cdb01aec6a495cb54a582c7d558c290b39d43881c422ca125 +SIZE (xpi/firefox-i18n-20.0/lt.xpi) = 321800 +SHA256 (xpi/firefox-i18n-20.0/lv.xpi) = c9546bf7561e3a02f1b0d78d896f3fe7ade1cd066f2b18cc3c41ab1562c75245 +SIZE (xpi/firefox-i18n-20.0/lv.xpi) = 301694 +SHA256 (xpi/firefox-i18n-20.0/mai.xpi) = 6be9c97a29ea9c7d172609f36e9634d80dc59354c29c24ef6b8dd9132347a3ca +SIZE (xpi/firefox-i18n-20.0/mai.xpi) = 349076 +SHA256 (xpi/firefox-i18n-20.0/mk.xpi) = 72fafb77308e874a4869ceedae5802d51fa7c0814b9c82bc2d3582e175f94451 +SIZE (xpi/firefox-i18n-20.0/mk.xpi) = 335357 +SHA256 (xpi/firefox-i18n-20.0/ml.xpi) = cff18a07174830b3ca22cccdcf1f58da195eb4905396095797da2e4769845539 +SIZE (xpi/firefox-i18n-20.0/ml.xpi) = 382989 +SHA256 (xpi/firefox-i18n-20.0/mr.xpi) = 42b9c731746a37dad0e9d9a62378e21fac20a908dbff2a0a47e802c3720211ab +SIZE (xpi/firefox-i18n-20.0/mr.xpi) = 350303 +SHA256 (xpi/firefox-i18n-20.0/nb-NO.xpi) = abda55512bd8e0afa1df3b4b1e44b926dab5ccee8bcd604b08e06b554924a355 +SIZE (xpi/firefox-i18n-20.0/nb-NO.xpi) = 301424 +SHA256 (xpi/firefox-i18n-20.0/nl.xpi) = 72f60f291b2384982c1dc59bc96c8ae712d9b9da7aaa0d232c4c09bb46c3be30 +SIZE (xpi/firefox-i18n-20.0/nl.xpi) = 302851 +SHA256 (xpi/firefox-i18n-20.0/nn-NO.xpi) = c530083c19850e9fdd43f4fbce7467b24059f2a5809d8ccd3d3a5a8b206b8cbb +SIZE (xpi/firefox-i18n-20.0/nn-NO.xpi) = 308530 +SHA256 (xpi/firefox-i18n-20.0/nso.xpi) = 27b442c4fc1102c03389744971fdf75db22b1d753be617cfb6641b12a100d2ee +SIZE (xpi/firefox-i18n-20.0/nso.xpi) = 309466 +SHA256 (xpi/firefox-i18n-20.0/or.xpi) = 2ca9d95f1a59160036c2a3f16bb25f0ea5838fb53c616f866e9ca5596d09e439 +SIZE (xpi/firefox-i18n-20.0/or.xpi) = 351346 +SHA256 (xpi/firefox-i18n-20.0/pa-IN.xpi) = 32b535bcdced7c55861ff45f5fecaaa3ac6bfca421ad880350dda0d50e8e92d1 +SIZE (xpi/firefox-i18n-20.0/pa-IN.xpi) = 339275 +SHA256 (xpi/firefox-i18n-20.0/pl.xpi) = 2f5538996dcb49d862de7526f26fc483c6e8c733bb952ec56e8487b00ed565f0 +SIZE (xpi/firefox-i18n-20.0/pl.xpi) = 314382 +SHA256 (xpi/firefox-i18n-20.0/pt-BR.xpi) = 9aa385299003121d23bed0b1b6d5d8b0dd02228b0b54884ff48fd481a74b66be +SIZE (xpi/firefox-i18n-20.0/pt-BR.xpi) = 307699 +SHA256 (xpi/firefox-i18n-20.0/pt-PT.xpi) = 97dc71a757268a8b98598476363ac7d76e1654508fbc7918e1f261d799f4db28 +SIZE (xpi/firefox-i18n-20.0/pt-PT.xpi) = 307007 +SHA256 (xpi/firefox-i18n-20.0/rm.xpi) = 33a2099dbf973400284a35acc6b06d81dbc1cc2c0ed2969a65af1108c0047b5a +SIZE (xpi/firefox-i18n-20.0/rm.xpi) = 305912 +SHA256 (xpi/firefox-i18n-20.0/ro.xpi) = 5e9475677c823e8206dd069fa302fbf77c698d7925d5b6a8327c99acacd0e665 +SIZE (xpi/firefox-i18n-20.0/ro.xpi) = 331344 +SHA256 (xpi/firefox-i18n-20.0/ru.xpi) = 3a18b0e2c0e5ec804bd6a126470dc51d8e97d73c48215b63d37c496c680b0b90 +SIZE (xpi/firefox-i18n-20.0/ru.xpi) = 300314 +SHA256 (xpi/firefox-i18n-20.0/si.xpi) = f6cdbf89caa243eef8db42fe856ecf85ecf9c6def9c12e36ca6602cf6c540d30 +SIZE (xpi/firefox-i18n-20.0/si.xpi) = 338417 +SHA256 (xpi/firefox-i18n-20.0/sk.xpi) = e3bdbb30ab88151467693d745ecdeab38904d7aadc54034a666c13d903394ab1 +SIZE (xpi/firefox-i18n-20.0/sk.xpi) = 318314 +SHA256 (xpi/firefox-i18n-20.0/sl.xpi) = 3856881a6d630d2efcb9a07dc727251754d01df451ba3db59622b6e085c40d0a +SIZE (xpi/firefox-i18n-20.0/sl.xpi) = 301223 +SHA256 (xpi/firefox-i18n-20.0/son.xpi) = 91487fcc08d45095b1e2e72b3b7b097d1673b5519302b5e57788c7804c31b80e +SIZE (xpi/firefox-i18n-20.0/son.xpi) = 304376 +SHA256 (xpi/firefox-i18n-20.0/sq.xpi) = 274b43927186e42a3c2d5ccf98c356c42c9058e4f3f8007ab575e5800f9d2dcf +SIZE (xpi/firefox-i18n-20.0/sq.xpi) = 307903 +SHA256 (xpi/firefox-i18n-20.0/sr.xpi) = d74e3929e87ae2b36999741fb7ea582e812826387c49cc2dff5bfbf4b55e2a91 +SIZE (xpi/firefox-i18n-20.0/sr.xpi) = 354392 +SHA256 (xpi/firefox-i18n-20.0/sv-SE.xpi) = d9ad3fe07fc91bbacdaa70c9e45a379914e8c2df810597d2b33bea53d2eff5d4 +SIZE (xpi/firefox-i18n-20.0/sv-SE.xpi) = 305170 +SHA256 (xpi/firefox-i18n-20.0/ta-LK.xpi) = 34facc00a11f09bd5b71ef74c82e9d9c849fbf43864f6b4fd9d05d27760b5123 +SIZE (xpi/firefox-i18n-20.0/ta-LK.xpi) = 358846 +SHA256 (xpi/firefox-i18n-20.0/ta.xpi) = 92b64517c63600fe8d0257fb67f84faa770d2f3452f5daa7e47b37119767ec1b +SIZE (xpi/firefox-i18n-20.0/ta.xpi) = 343709 +SHA256 (xpi/firefox-i18n-20.0/te.xpi) = da61353731e39320f06bdd5ece3ce6bf6b37938a58a1c731383528fcab961618 +SIZE (xpi/firefox-i18n-20.0/te.xpi) = 360627 +SHA256 (xpi/firefox-i18n-20.0/th.xpi) = 4f4b5ae4aeda6442f41c1fd8ea0a9ed9a1c98040583fcf96ae1765ec8925530b +SIZE (xpi/firefox-i18n-20.0/th.xpi) = 343717 +SHA256 (xpi/firefox-i18n-20.0/tr.xpi) = ab458118ead151a6459b91f4cb3f45d95c9fc0f827bdac648254852d5dc6c2fd +SIZE (xpi/firefox-i18n-20.0/tr.xpi) = 313040 +SHA256 (xpi/firefox-i18n-20.0/uk.xpi) = 77a250d2141c2f4460dc64da0850ce2459de7eac2311a276522866d1bc9d3960 +SIZE (xpi/firefox-i18n-20.0/uk.xpi) = 343123 +SHA256 (xpi/firefox-i18n-20.0/vi.xpi) = c9a6fb8e2fa3a19a0c2cbfeb97065def9214b98c54da14f3c9083778f9b5e71d +SIZE (xpi/firefox-i18n-20.0/vi.xpi) = 328524 +SHA256 (xpi/firefox-i18n-20.0/zh-CN.xpi) = c8842607e3c310cb5e27d747c37afe516206b131a13dce35b87f83a8c160aee9 +SIZE (xpi/firefox-i18n-20.0/zh-CN.xpi) = 323633 +SHA256 (xpi/firefox-i18n-20.0/zh-TW.xpi) = 3bf89aebde9b63fd5301cbcbff638dc6739d15c1aa819ee98379705f6a2aee63 +SIZE (xpi/firefox-i18n-20.0/zh-TW.xpi) = 324197 +SHA256 (xpi/firefox-i18n-20.0/zu.xpi) = 941b20745d398a90670ac042142fc97fe5b007a5818098c833b830a628580548 +SIZE (xpi/firefox-i18n-20.0/zu.xpi) = 315411 Index: www/libxul/Makefile =================================================================== --- www/libxul/Makefile (revision 315699) +++ www/libxul/Makefile (working copy) @@ -54,17 +54,6 @@ MOZ_PKGCONFIG_FILES+= mozilla-nss .endif -.if ${ARCH} == amd64 -CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} -.elif ${ARCH} == powerpc64 -.if ${OSVERSION} < 900033 -BROKEN= Needs binutils 2.17.50 to build -.else -MOZ_EXPORT+= UNAME_m="powerpc64" -CFLAGS+= -mminimal-toc -.endif -.endif - .if !empty(CXX:M*clang++*) || (${CXX:Mc++} && ${OSVERSION} > 1000023) CXXFLAGS+= -Wno-return-type-c-linkage .endif Index: www/libxul/files/patch-bug753046 =================================================================== --- www/libxul/files/patch-bug753046 (revision 315699) +++ www/libxul/files/patch-bug753046 (working copy) @@ -469,7 +469,7 @@ --- ipc/chromium/src/base/platform_thread_posix.cc.orig 2012-03-13 01:36:53.000000000 +0000 +++ ipc/chromium/src/base/platform_thread_posix.cc -@@ -9,9 +9,23 @@ +@@ -9,9 +9,17 @@ #if defined(OS_MACOSX) #include @@ -482,13 +482,7 @@ +#include +#elif defined(OS_FREEBSD) +#include -+#if __FreeBSD_version > 802500 +#include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif +#include #endif Index: www/libxul/files/patch-js-src-configure.in =================================================================== --- www/libxul/files/patch-js-src-configure.in (revision 315699) +++ www/libxul/files/patch-js-src-configure.in (working copy) @@ -1,10 +0,0 @@ ---- js/src/configure.in.orig 2012-01-29 11:24:33.000000000 +0100 -+++ js/src/configure.in 2012-01-30 23:30:02.051087215 +0100 -@@ -5946,6 +5946,7 @@ _EGREP_PATTERN="${_EGREP_PATTERN}dummy_n - * C++ implementations should define these macros only when __STDC_LIMIT_MACROS - * is defined before is included. */ - #define __STDC_LIMIT_MACROS -+#define __STDC_CONSTANT_MACROS - - #endif /* _JS_CONFDEFS_H_ */ - Index: www/libxul19/Makefile =================================================================== --- www/libxul19/Makefile (revision 315699) +++ www/libxul19/Makefile (working copy) @@ -63,17 +63,6 @@ MOZ_PKGCONFIG_FILES+= mozilla-nss .endif -.if ${ARCH} == amd64 -CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} -.elif ${ARCH} == powerpc64 -.if ${OSVERSION} < 900033 -BROKEN= Needs binutils 2.17.50 to build -.else -MOZ_EXPORT+= UNAME_m="powerpc64" -CFLAGS+= -mminimal-toc -.endif -.endif - .if ${PORT_OPTIONS:MJAVA} USE_JAVA= yes JAVA_VERSION+= 1.5+ Index: www/libxul19/files/patch-bug778078 =================================================================== --- www/libxul19/files/patch-bug778078 (revision 315699) +++ www/libxul19/files/patch-bug778078 (working copy) @@ -1,14 +1,6 @@ --- toolkit/xre/nsAppRunner.cpp~ +++ toolkit/xre/nsAppRunner.cpp -@@ -640,6 +640,7 @@ class nsXULAppInfo : public nsIXULAppInf - - { - public: -+ nsXULAppInfo() {} - NS_DECL_ISUPPORTS_INHERITED - NS_DECL_NSIXULAPPINFO - NS_DECL_NSIXULRUNTIME -@@ -3046,7 +3047,7 @@ XRE_main(int argc, char* argv[], const n +@@ -3046,7 +3046,7 @@ XRE_main(int argc, char* argv[], const n QApplication app(gArgc, gArgv); #endif #if defined(MOZ_WIDGET_GTK2) Index: www/linux-seamonkey/Makefile =================================================================== --- www/linux-seamonkey/Makefile (revision 315699) +++ www/linux-seamonkey/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= seamonkey -PORTVERSION= 2.16 +PORTVERSION= 2.17 CATEGORIES= www MASTER_SITE_SUBDIR= ${PORTNAME}/releases/${PORTVERSION}/linux-i686/en-US Index: www/linux-seamonkey/distinfo =================================================================== --- www/linux-seamonkey/distinfo (revision 315699) +++ www/linux-seamonkey/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (seamonkey-2.16.tar.bz2) = 71748b27d4c27245b8497a9757331d3dba44762f6551b3eb5f26a82575cbe751 -SIZE (seamonkey-2.16.tar.bz2) = 26182862 +SHA256 (seamonkey-2.17.tar.bz2) = 4efb6ff9ce3f4ad1eae881b865e6f4fe55972f5ea450a93dca66d77185426511 +SIZE (seamonkey-2.17.tar.bz2) = 26580709 Index: www/linux-seamonkey/pkg-plist =================================================================== --- www/linux-seamonkey/pkg-plist (revision 315699) +++ www/linux-seamonkey/pkg-plist (working copy) @@ -141,10 +141,11 @@ @dirrm lib/%%APP_NAME%%/modules/services-aitc @dirrm lib/%%APP_NAME%%/modules/services-common @dirrm lib/%%APP_NAME%%/modules/services-crypto -@dirrm lib/%%APP_NAME%%/modules/services-notifications @dirrm lib/%%APP_NAME%%/modules/services-sync/stages @dirrm lib/%%APP_NAME%%/modules/services-sync/engines @dirrm lib/%%APP_NAME%%/modules/services-sync +@dirrm lib/%%APP_NAME%%/modules/services/datareporting +@dirrm lib/%%APP_NAME%%/modules/services @dirrm lib/%%APP_NAME%%/modules/identity @dirrm lib/%%APP_NAME%%/modules/commonjs/promise @dirrm lib/%%APP_NAME%%/modules/commonjs Index: www/linux-firefox/Makefile =================================================================== --- www/linux-firefox/Makefile (revision 315699) +++ www/linux-firefox/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox -PORTVERSION= 17.0.4 +PORTVERSION= 17.0.5 PORTEPOCH= 1 CATEGORIES= www MASTER_SITE_SUBDIR?= firefox/releases/${PORTVERSION}esr/linux-i686/en-US Index: www/linux-firefox/distinfo =================================================================== --- www/linux-firefox/distinfo (revision 315699) +++ www/linux-firefox/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (firefox-17.0.4esr.tar.bz2) = a15b51b1f2e1833f7306dc2ba77e4414c07eba6e92e448ead476be6a0d37566a -SIZE (firefox-17.0.4esr.tar.bz2) = 21290084 +SHA256 (firefox-17.0.5esr.tar.bz2) = 990fd903b08ef33d79a2019284b825e04cf27780526732d5324bc940bb521d21 +SIZE (firefox-17.0.5esr.tar.bz2) = 21393264 Index: www/seamonkey/Makefile =================================================================== --- www/seamonkey/Makefile (revision 315699) +++ www/seamonkey/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= seamonkey -DISTVERSION= 2.16.1 +DISTVERSION= 2.17 CATEGORIES?= www ipv6 MASTER_SITES= ${MASTER_SITE_MOZILLA} MASTER_SITE_SUBDIR= ${PORTNAME}/releases/${DISTVERSION}/source @@ -13,13 +13,13 @@ COMMENT= The open source, standards compliant web browser BUILD_DEPENDS= nspr>=4.9.4:${PORTSDIR}/devel/nspr \ - nss>=3.14.1:${PORTSDIR}/security/nss \ + nss>=3.14.3:${PORTSDIR}/security/nss \ sqlite3>=3.7.14.1:${PORTSDIR}/databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \ unzip:${PORTSDIR}/archivers/unzip EM_VERSION= 1.5.1 -L_VERSION= 2.1b1 +L_VERSION= 2.2b1 USE_AUTOTOOLS= autoconf213:env USE_PYTHON_BUILD=-2.7 @@ -72,17 +72,6 @@ XPI_LIBDIR= ${PREFIX}/lib/xpi -.if ${ARCH} == amd64 -CONFIGURE_TARGET=x86_64-portbld-freebsd${OSREL} -.elif ${ARCH} == powerpc64 -.if ${OSVERSION} < 900033 -BROKEN= Needs binutils 2.17.50 to build -.else -MOZ_EXPORT+= UNAME_m="powerpc64" -CFLAGS+= -mminimal-toc -.endif -.endif - .if ! ${PORT_OPTIONS:MMAILNEWS} EXTRA_PATCHES+= ${FILESDIR}/extra-mailnews-patch-bridge-bridge.mk \ ${FILESDIR}/extra-patch-configure.in @@ -133,6 +122,7 @@ post-patch: @${REINPLACE_CMD} -e '/MOZPNG/s/=[0-9]*/=10511/' \ + -e '/^SQLITE_VERSION/s/=.*/=3.7.14.1/' \ ${MOZSRC}/configure.in ${WRKSRC}/configure.in @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/suite/app/nsSuiteApp.cpp @@ -165,18 +155,16 @@ -C ${MOZ_OBJDIR}/mailnews/extensions/enigmail .endif -pre-install: +port-pre-install: ${ECHO_CMD} share/applications/${MOZILLA}.desktop >> ${PLIST} - ${ECHO_CMD} "@unexec ${RMDIR} %D/share/applications 2>/dev/null || ${TRUE}" >> ${PLIST} + ${ECHO_CMD} "@dirrmtry share/applications" >> ${PLISTD} ${ECHO_CMD} 'share/pixmaps/${MOZILLA}.png' >> ${PLIST} -do-install: +post-install: ${MKDIR} ${PREFIX}/share/applications ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${PREFIX}/share/applications/ ${LN} -sf ${PREFIX}/lib/${MOZILLA}/chrome/icons/default/default48.png \ ${PREFIX}/share/pixmaps/${MOZILLA}.png - -post-install: .if ${PORT_OPTIONS:MLIGHTNING} @${MKDIR} ${XPI_LIBDIR}/${XPI_ID} ${XPI_LIBDIR}/symlinks/seamonkey @(cd ${XPI_LIBDIR}/${XPI_ID}; ${TAR} -xf ${XPI_FILE}) Index: www/seamonkey/distinfo =================================================================== --- www/seamonkey/distinfo (revision 315699) +++ www/seamonkey/distinfo (working copy) @@ -1,4 +1,4 @@ -SHA256 (seamonkey-2.16.1.source.tar.bz2) = 3815226c7f7aa8795abb2e0c5bca63c1da2336345b594d81421c1d48c750f617 -SIZE (seamonkey-2.16.1.source.tar.bz2) = 121951701 +SHA256 (seamonkey-2.17.source.tar.bz2) = 686b573b17397a805ed771c79f14e4354ec23c5a205361e8142dee364c76eb86 +SIZE (seamonkey-2.17.source.tar.bz2) = 122785037 SHA256 (enigmail-1.5.1.tar.gz) = 234ca3c8f7c74afb64ebdaa4762e358f35a72c1f8de007b992497fc2db803af0 SIZE (enigmail-1.5.1.tar.gz) = 1213954 Index: www/seamonkey/files/patch-alsapulse =================================================================== --- www/seamonkey/files/patch-alsapulse (revision 315699) +++ www/seamonkey/files/patch-alsapulse (working copy) @@ -1,122 +0,0 @@ -diff --git mozilla/configure.in mozilla/configure.in -index 5980b76..11f5f77 100644 ---- mozilla/configure.in -+++ mozilla/configure.in -@@ -5618,11 +5618,25 @@ dnl ======================================================== - - dnl If using sydneyaudio with Linux, ensure that the alsa library is available - if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux"; then -+ MOZ_ALSA=1 -+fi -+ -+MOZ_ARG_ENABLE_BOOL(alsa, -+[ --enable-alsa Enable Alsa support (default on Linux)], -+MOZ_ALSA=1, -+MOZ_ALSA=) -+ -+if test -n "$MOZ_ALSA"; then -+ AC_DEFINE(MOZ_CUBEB) - PKG_CHECK_MODULES(MOZ_ALSA, alsa, , - [echo "$MOZ_ALSA_PKG_ERRORS" - AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])]) - fi - -+AC_SUBST(MOZ_ALSA) -+AC_SUBST(MOZ_ALSA_CFLAGS) -+AC_SUBST(MOZ_ALSA_LIBS) -+ - dnl ======================================================== - dnl = Enable PulseAudio - dnl ======================================================== -@@ -8633,8 +8647,6 @@ AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT) - AC_SUBST(MOZ_VP8_ENCODER) - AC_SUBST(MOZ_VP8) - AC_SUBST(MOZ_OGG) --AC_SUBST(MOZ_ALSA_LIBS) --AC_SUBST(MOZ_ALSA_CFLAGS) - AC_SUBST(VPX_AS) - AC_SUBST(VPX_ASFLAGS) - AC_SUBST(VPX_DASH_C_FLAG) -diff --git mozilla/media/libcubeb/src/Makefile.in mozilla/media/libcubeb/src/Makefile.in -index 5ab4dd8..c8df26f 100644 ---- mozilla/media/libcubeb/src/Makefile.in -+++ mozilla/media/libcubeb/src/Makefile.in -@@ -24,10 +24,6 @@ endif - - ifeq ($(OS_TARGET),Android) - # No Android implementation of libcubeb yet. --else ifeq ($(OS_TARGET),Linux) --CSRCS = \ -- cubeb_alsa.c \ -- $(NULL) - endif - - ifeq ($(OS_TARGET),Darwin) -@@ -42,6 +38,12 @@ CSRCS = \ - $(NULL) - endif - -+ifdef MOZ_ALSA -+CSRCS = \ -+ cubeb_alsa.c \ -+ $(NULL) -+endif -+ - ifdef MOZ_PULSEAUDIO - CSRCS = \ - cubeb_pulse.c \ -diff --git mozilla/media/libsydneyaudio/src/Makefile.in mozilla/media/libsydneyaudio/src/Makefile.in -index 8dda8ce..b19641d 100644 ---- mozilla/media/libsydneyaudio/src/Makefile.in -+++ mozilla/media/libsydneyaudio/src/Makefile.in -@@ -30,10 +30,6 @@ else ifeq ($(MOZ_WIDGET_TOOLKIT),android) - CSRCS = \ - sydney_audio_android.c \ - $(NULL) --else ifeq ($(OS_ARCH),Linux) --CSRCS = \ -- sydney_audio_alsa.c \ -- $(NULL) - endif - - ifeq ($(OS_ARCH),WINNT) -@@ -68,6 +64,18 @@ CSRCS = \ - $(NULL) - endif - -+ifdef MOZ_ALSA -+CSRCS = \ -+ sydney_audio_alsa.c \ -+ $(NULL) -+endif -+ -+ifdef MOZ_PULSEAUDIO -+CSRCS = \ -+ sydney_audio_pulseaudio.c \ -+ $(NULL) -+endif -+ - ifeq ($(OS_ARCH),WINNT) - OS_LIBS += winmm.lib - endif -diff --git mozilla/toolkit/library/Makefile.in mozilla/toolkit/library/Makefile.in -index 43384e9..e46a6e3 100644 ---- mozilla/toolkit/library/Makefile.in -+++ mozilla/toolkit/library/Makefile.in -@@ -370,14 +370,11 @@ endif - - EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib) - --ifdef MOZ_SYDNEYAUDIO --ifeq ($(OS_ARCH),Linux) -+ifneq (,$(MOZ_CUBEB)$(MOZ_SYDNEYAUDIO)) -+ifdef MOZ_ALSA - EXTRA_DSO_LDOPTS += $(MOZ_ALSA_LIBS) - endif --endif -- - ifdef MOZ_PULSEAUDIO --ifdef MOZ_CUBEB - EXTRA_DSO_LDOPTS += $(MOZ_PULSEAUDIO_LIBS) - endif - endif Index: www/seamonkey/files/patch-bug780432 =================================================================== --- www/seamonkey/files/patch-bug780432 (revision 0) +++ www/seamonkey/files/patch-bug780432 (working copy) @@ -0,0 +1,17 @@ +diff --git media/libsydneyaudio/src/Makefile.in media/libsydneyaudio/src/Makefile.in +index 8dda8ce..b19641d 100644 +--- mozilla/media/libsydneyaudio/src/Makefile.in ++++ mozilla/media/libsydneyaudio/src/Makefile.in +@@ -68,6 +68,12 @@ ifdef MOZ_ALSA + $(NULL) + endif + ++ifdef MOZ_PULSEAUDIO ++CSRCS = \ ++ sydney_audio_pulseaudio.c \ ++ $(NULL) ++endif ++ + ifeq ($(OS_ARCH),WINNT) + OS_LIBS += winmm.lib + endif Property changes on: www/seamonkey/files/patch-bug780432 ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: www/seamonkey/files/patch-bug787804 =================================================================== --- www/seamonkey/files/patch-bug787804 (revision 315699) +++ www/seamonkey/files/patch-bug787804 (working copy) @@ -1,3557 +0,0 @@ -commit 74997f1 -Author: Jan Varga -Date: Mon Dec 17 20:25:10 2012 +0100 - - Bug 787804 - Rewrite quota handling (eliminate test_quota.c). r=bent,asuth,vladan ---- - db/sqlite3/README.MOZILLA | 4 +- - db/sqlite3/src/sqlite.def | 1 + - db/sqlite3/src/test_quota.c | 2001 -------------------- - db/sqlite3/src/test_quota.h | 274 --- - dom/Makefile.in | 1 + - dom/dom-config.mk | 1 + - dom/file/FileStreamWrappers.cpp | 11 - - dom/file/LockedFile.cpp | 8 +- - dom/file/nsIFileStorage.h | 40 +- - dom/indexedDB/FileManager.cpp | 33 +- - dom/indexedDB/FileManager.h | 20 +- - dom/indexedDB/FileStream.cpp | 321 ---- - dom/indexedDB/FileStream.h | 140 -- - dom/indexedDB/IDBDatabase.cpp | 6 + - dom/indexedDB/IDBFactory.cpp | 28 +- - dom/indexedDB/IDBFactory.h | 8 +- - dom/indexedDB/IDBFileHandle.cpp | 25 +- - dom/indexedDB/IDBObjectStore.cpp | 10 +- - dom/indexedDB/IDBTransaction.cpp | 3 +- - dom/indexedDB/IndexedDatabaseInlines.h | 13 + - dom/indexedDB/IndexedDatabaseManager.cpp | 162 +- - dom/indexedDB/IndexedDatabaseManager.h | 11 +- - dom/indexedDB/Makefile.in | 2 - - dom/indexedDB/OpenDatabaseHelper.cpp | 104 +- - dom/indexedDB/OpenDatabaseHelper.h | 12 +- - dom/indexedDB/nsIStandardFileStream.idl | 60 - - dom/indexedDB/test/Makefile.in | 2 + - dom/indexedDB/test/file.js | 21 +- - dom/indexedDB/test/test_file_quota.html | 14 +- - dom/indexedDB/test/test_filehandle_quota.html | 5 +- - dom/quota/FileStreams.cpp | 123 ++ - dom/quota/FileStreams.h | 115 ++ - dom/quota/Makefile.in | 33 + - dom/quota/QuotaCommon.h | 23 + - dom/quota/QuotaManager.cpp | 294 +++ - dom/quota/QuotaManager.h | 147 ++ - layout/build/Makefile.in | 1 + - netwerk/base/src/Makefile.in | 1 + - netwerk/base/src/nsFileStreams.cpp | 103 +- - netwerk/base/src/nsFileStreams.h | 12 +- - storage/public/Makefile.in | 1 - - storage/public/mozIStorageService.idl | 13 +- - .../public/mozIStorageServiceQuotaManagement.idl | 99 - - storage/public/storage.h | 1 - - storage/src/TelemetryVFS.cpp | 35 +- - storage/src/mozStorageConnection.cpp | 85 +- - storage/src/mozStorageConnection.h | 27 +- - storage/src/mozStorageService.cpp | 168 +- - storage/src/mozStorageService.h | 3 - - toolkit/toolkit-makefiles.sh | 1 + - 50 files changed, 1239 insertions(+), 3387 deletions(-) - -diff --git dom/Makefile.in dom/Makefile.in -index 672e065..47cd253 100644 ---- mozilla/dom/Makefile.in -+++ mozilla/dom/Makefile.in -@@ -58,6 +58,7 @@ PARALLEL_DIRS += \ - media \ - messages \ - power \ -+ quota \ - settings \ - sms \ - mms \ -diff --git dom/dom-config.mk dom/dom-config.mk -index d0f46cc..1cf57ed 100644 ---- mozilla/dom/dom-config.mk -+++ mozilla/dom/dom-config.mk -@@ -8,6 +8,7 @@ DOM_SRCDIRS = \ - dom/encoding \ - dom/file \ - dom/power \ -+ dom/quota \ - dom/media \ - dom/network/src \ - dom/settings \ -diff --git dom/file/FileStreamWrappers.cpp dom/file/FileStreamWrappers.cpp -index 2283266..c4cf102 100644 ---- mozilla/dom/file/FileStreamWrappers.cpp -+++ mozilla/dom/file/FileStreamWrappers.cpp -@@ -8,7 +8,6 @@ - - #include "nsIFileStorage.h" - #include "nsISeekableStream.h" --#include "nsIStandardFileStream.h" - #include "mozilla/Attributes.h" - - #include "FileHelper.h" -@@ -246,16 +245,6 @@ FileOutputStreamWrapper::Close() - nsresult rv = NS_OK; - - if (!mFirstTime) { -- // We must flush buffers of the stream on the same thread on which we wrote -- // some data. -- nsCOMPtr sstream = do_QueryInterface(mFileStream); -- if (sstream) { -- rv = sstream->FlushBuffers(); -- if (NS_FAILED(rv)) { -- NS_WARNING("Failed to flush buffers of the stream!"); -- } -- } -- - NS_ASSERTION(PR_GetCurrentThread() == mWriteThread, - "Unsetting thread locals on wrong thread!"); - mFileHelper->mFileStorage->UnsetThreadLocals(); -diff --git dom/file/LockedFile.cpp dom/file/LockedFile.cpp -index 0fca730..926df91 100644 ---- mozilla/dom/file/LockedFile.cpp -+++ mozilla/dom/file/LockedFile.cpp -@@ -953,10 +953,10 @@ FinishHelper::Run() - } - - for (uint32_t index = 0; index < mParallelStreams.Length(); index++) { -- nsCOMPtr ostream = -+ nsCOMPtr stream = - do_QueryInterface(mParallelStreams[index]); - -- if (NS_FAILED(ostream->Close())) { -+ if (NS_FAILED(stream->Close())) { - NS_WARNING("Failed to close stream!"); - } - -@@ -964,9 +964,9 @@ FinishHelper::Run() - } - - if (mStream) { -- nsCOMPtr ostream = do_QueryInterface(mStream); -+ nsCOMPtr stream = do_QueryInterface(mStream); - -- if (NS_FAILED(ostream->Close())) { -+ if (NS_FAILED(stream->Close())) { - NS_WARNING("Failed to close stream!"); - } - -diff --git dom/file/nsIFileStorage.h dom/file/nsIFileStorage.h -index 92bb608..e985f0a 100644 ---- mozilla/dom/file/nsIFileStorage.h -+++ mozilla/dom/file/nsIFileStorage.h -@@ -10,14 +10,17 @@ - #include "nsISupports.h" - - #define NS_FILESTORAGE_IID \ -- {0xbba9c2ff, 0x85c9, 0x47c1, \ -- { 0xaf, 0xce, 0x0a, 0x7e, 0x6f, 0x21, 0x50, 0x95 } } -+ {0xa0801944, 0x2f1c, 0x4203, \ -+ { 0x9c, 0xaa, 0xaa, 0x47, 0xe0, 0x0c, 0x67, 0x92 } } - - class nsIFileStorage : public nsISupports - { - public: - NS_DECLARE_STATIC_IID_ACCESSOR(NS_FILESTORAGE_IID) - -+ virtual const nsACString& -+ StorageOrigin() = 0; -+ - virtual nsISupports* - StorageId() = 0; - -@@ -36,20 +39,23 @@ public: - - NS_DEFINE_STATIC_IID_ACCESSOR(nsIFileStorage, NS_FILESTORAGE_IID) - --#define NS_DECL_NSIFILESTORAGE \ -- virtual nsISupports* \ -- StorageId(); \ -- \ -- virtual bool \ -- IsStorageInvalidated(); \ -- \ -- virtual bool \ -- IsStorageShuttingDown(); \ -- \ -- virtual void \ -- SetThreadLocals(); \ -- \ -- virtual void \ -- UnsetThreadLocals(); -+#define NS_DECL_NSIFILESTORAGE \ -+ virtual const nsACString& \ -+ StorageOrigin() MOZ_OVERRIDE; \ -+ \ -+ virtual nsISupports* \ -+ StorageId() MOZ_OVERRIDE; \ -+ \ -+ virtual bool \ -+ IsStorageInvalidated() MOZ_OVERRIDE; \ -+ \ -+ virtual bool \ -+ IsStorageShuttingDown() MOZ_OVERRIDE; \ -+ \ -+ virtual void \ -+ SetThreadLocals() MOZ_OVERRIDE; \ -+ \ -+ virtual void \ -+ UnsetThreadLocals() MOZ_OVERRIDE; - - #endif // nsIFileStorage_h__ -diff --git dom/indexedDB/FileManager.cpp dom/indexedDB/FileManager.cpp -index 9db56e8..4ed6e9e 100644 ---- mozilla/dom/indexedDB/FileManager.cpp -+++ mozilla/dom/indexedDB/FileManager.cpp -@@ -7,8 +7,8 @@ - #include "FileManager.h" - - #include "mozIStorageConnection.h" --#include "mozIStorageServiceQuotaManagement.h" - #include "mozIStorageStatement.h" -+#include "nsIInputStream.h" - #include "nsISimpleEnumerator.h" - - #include "mozStorageCID.h" -@@ -18,6 +18,8 @@ - #include "IndexedDatabaseManager.h" - #include "OpenDatabaseHelper.h" - -+#include "IndexedDatabaseInlines.h" -+ - #define JOURNAL_DIRECTORY_NAME "journals" - - USING_INDEXEDDB_NAMESPACE -@@ -262,13 +264,11 @@ FileManager::GetFileForId(nsIFile* aDirectory, int64_t aId) - - // static - nsresult --FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, -- nsIFile* aDirectory, -+FileManager::InitDirectory(nsIFile* aDirectory, - nsIFile* aDatabaseFile, -- FactoryPrivilege aPrivilege) -+ const nsACString& aOrigin) - { - NS_ASSERTION(!NS_IsMainThread(), "Wrong thread!"); -- NS_ASSERTION(aService, "Null service!"); - NS_ASSERTION(aDirectory, "Null directory!"); - NS_ASSERTION(aDatabaseFile, "Null database file!"); - -@@ -310,8 +310,8 @@ FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, - - if (hasElements) { - nsCOMPtr connection; -- rv = OpenDatabaseHelper::CreateDatabaseConnection( -- NullString(), aDatabaseFile, aDirectory, getter_AddRefs(connection)); -+ rv = OpenDatabaseHelper::CreateDatabaseConnection(aDatabaseFile, -+ aDirectory, NullString(), aOrigin, getter_AddRefs(connection)); - NS_ENSURE_SUCCESS(rv, rv); - - mozStorageTransaction transaction(connection, false); -@@ -377,12 +377,17 @@ FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, - } - } - -- if (aPrivilege == Chrome) { -- return NS_OK; -- } -+ return NS_OK; -+} -+ -+// static -+nsresult -+FileManager::GetUsage(nsIFile* aDirectory, uint64_t* aUsage) -+{ -+ uint64_t usage = 0; - - nsCOMPtr entries; -- rv = aDirectory->GetDirectoryEntries(getter_AddRefs(entries)); -+ nsresult rv = aDirectory->GetDirectoryEntries(getter_AddRefs(entries)); - NS_ENSURE_SUCCESS(rv, rv); - - bool hasMore; -@@ -402,9 +407,13 @@ FileManager::InitDirectory(mozIStorageServiceQuotaManagement* aService, - continue; - } - -- rv = aService->UpdateQuotaInformationForFile(file); -+ int64_t fileSize; -+ rv = file->GetFileSize(&fileSize); - NS_ENSURE_SUCCESS(rv, rv); -+ -+ IncrementUsage(&usage, uint64_t(fileSize)); - } - -+ *aUsage = usage; - return NS_OK; - } -diff --git dom/indexedDB/FileManager.h dom/indexedDB/FileManager.h -index 2c72d0a..370d4a8 100644 ---- mozilla/dom/indexedDB/FileManager.h -+++ mozilla/dom/indexedDB/FileManager.h -@@ -24,10 +24,10 @@ class FileManager - friend class FileInfo; - - public: -- FileManager(const nsACString& aOrigin, -+ FileManager(const nsACString& aOrigin, FactoryPrivilege aPrivilege, - const nsAString& aDatabaseName) -- : mOrigin(aOrigin), mDatabaseName(aDatabaseName), mLastFileId(0), -- mInvalidated(false) -+ : mOrigin(aOrigin), mPrivilege(aPrivilege), mDatabaseName(aDatabaseName), -+ mLastFileId(0), mInvalidated(false) - { } - - ~FileManager() -@@ -40,6 +40,11 @@ public: - return mOrigin; - } - -+ const FactoryPrivilege& Privilege() const -+ { -+ return mPrivilege; -+ } -+ - const nsAString& DatabaseName() const - { - return mDatabaseName; -@@ -68,12 +73,15 @@ public: - static already_AddRefed GetFileForId(nsIFile* aDirectory, - int64_t aId); - -- static nsresult InitDirectory(mozIStorageServiceQuotaManagement* aService, -- nsIFile* aDirectory, nsIFile* aDatabaseFile, -- FactoryPrivilege aPrivilege); -+ static nsresult InitDirectory(nsIFile* aDirectory, -+ nsIFile* aDatabaseFile, -+ const nsACString& aOrigin); -+ -+ static nsresult GetUsage(nsIFile* aDirectory, uint64_t* aUsage); - - private: - nsCString mOrigin; -+ FactoryPrivilege mPrivilege; - nsString mDatabaseName; - - nsString mDirectoryPath; -diff --git dom/indexedDB/FileStream.cpp dom/indexedDB/FileStream.cpp -deleted file mode 100644 -index dddf5d5..0000000 ---- mozilla/dom/indexedDB/FileStream.cpp -+++ /dev/null -@@ -1,321 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this file, -- * You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#include "FileStream.h" -- --#include "nsIFile.h" -- --#include "nsThreadUtils.h" --#include "test_quota.h" -- --USING_INDEXEDDB_NAMESPACE -- --NS_IMPL_THREADSAFE_ADDREF(FileStream) --NS_IMPL_THREADSAFE_RELEASE(FileStream) -- --NS_INTERFACE_MAP_BEGIN(FileStream) -- NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIStandardFileStream) -- NS_INTERFACE_MAP_ENTRY(nsISeekableStream) -- NS_INTERFACE_MAP_ENTRY(nsIInputStream) -- NS_INTERFACE_MAP_ENTRY(nsIOutputStream) -- NS_INTERFACE_MAP_ENTRY(nsIStandardFileStream) -- NS_INTERFACE_MAP_ENTRY(nsIFileMetadata) --NS_INTERFACE_MAP_END -- --NS_IMETHODIMP --FileStream::Seek(int32_t aWhence, int64_t aOffset) --{ -- // TODO: Add support for 64 bit file sizes, bug 752431 -- NS_ENSURE_TRUE(aOffset <= INT32_MAX, NS_ERROR_INVALID_ARG); -- -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- int whence; -- switch (aWhence) { -- case nsISeekableStream::NS_SEEK_SET: -- whence = SEEK_SET; -- break; -- case nsISeekableStream::NS_SEEK_CUR: -- whence = SEEK_CUR; -- break; -- case nsISeekableStream::NS_SEEK_END: -- whence = SEEK_END; -- break; -- default: -- return NS_ERROR_INVALID_ARG; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fseek(mQuotaFile, aOffset, whence); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Tell(int64_t* aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- long rc = sqlite3_quota_ftell(mQuotaFile); -- NS_ENSURE_TRUE(rc >= 0, NS_BASE_STREAM_OSERROR); -- -- *aResult = rc; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::SetEOF() --{ -- int64_t pos; -- nsresult rv = Tell(&pos); -- NS_ENSURE_SUCCESS(rv, rv); -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_ftruncate(mQuotaFile, pos); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- -- --NS_IMETHODIMP --FileStream::Close() --{ -- CleanUpOpen(); -- -- if (mQuotaFile) { -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fclose(mQuotaFile); -- mQuotaFile = nullptr; -- -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- } -- -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Available(uint64_t* aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- long rc = sqlite3_quota_file_available(mQuotaFile); -- NS_ENSURE_TRUE(rc >= 0, NS_BASE_STREAM_OSERROR); -- -- *aResult = rc; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Read(char* aBuf, uint32_t aCount, uint32_t* aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- size_t bytesRead = sqlite3_quota_fread(aBuf, 1, aCount, mQuotaFile); -- if (bytesRead < aCount && sqlite3_quota_ferror(mQuotaFile)) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- *aResult = bytesRead; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, -- uint32_t aCount, uint32_t* aResult) --{ -- NS_NOTREACHED("Don't call me!"); -- return NS_ERROR_NOT_IMPLEMENTED; --} -- --NS_IMETHODIMP --FileStream::IsNonBlocking(bool *aNonBlocking) --{ -- *aNonBlocking = false; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Write(const char* aBuf, uint32_t aCount, uint32_t *aResult) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- size_t bytesWritten = sqlite3_quota_fwrite(aBuf, 1, aCount, mQuotaFile); -- if (bytesWritten < aCount) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- *aResult = bytesWritten; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::Flush() --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fflush(mQuotaFile, 1); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::WriteFrom(nsIInputStream *inStr, uint32_t count, uint32_t *_retval) --{ -- return NS_ERROR_NOT_IMPLEMENTED; --} -- --NS_IMETHODIMP --FileStream::WriteSegments(nsReadSegmentFun reader, void * closure, uint32_t count, uint32_t *_retval) --{ -- NS_NOTREACHED("Don't call me!"); -- return NS_ERROR_NOT_IMPLEMENTED; --} -- --NS_IMETHODIMP --FileStream::Init(nsIFile* aFile, const nsAString& aMode, int32_t aFlags) --{ -- NS_ASSERTION(!mQuotaFile && !mDeferredOpen, "Already initialized!"); -- -- nsresult rv = aFile->GetPath(mFilePath); -- NS_ENSURE_SUCCESS(rv, rv); -- -- mMode = aMode; -- mFlags = aFlags; -- -- if (mFlags & nsIStandardFileStream::FLAGS_DEFER_OPEN) { -- mDeferredOpen = true; -- return NS_OK; -- } -- -- return DoOpen(); --} -- --NS_IMETHODIMP --FileStream::GetSize(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- // TODO: Use sqlite3_quota_file_size() here, bug 760783 -- int64_t rc = sqlite3_quota_file_truesize(mQuotaFile); -- -- NS_ASSERTION(rc >= 0, "The file is not under quota management!"); -- -- *_retval = rc; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::GetLastModified(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- time_t mtime; -- int rc = sqlite3_quota_file_mtime(mQuotaFile, &mtime); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- *_retval = mtime * PR_MSEC_PER_SEC; -- return NS_OK; --} -- --NS_IMETHODIMP --FileStream::FlushBuffers() --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mQuotaFile) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- int rc = sqlite3_quota_fflush(mQuotaFile, 0); -- NS_ENSURE_TRUE(rc == 0, NS_BASE_STREAM_OSERROR); -- -- return NS_OK; --} -- --nsresult --FileStream::DoOpen() --{ -- NS_ASSERTION(!mFilePath.IsEmpty(), "Must have a file path"); -- -- NS_ASSERTION(!NS_IsMainThread(), "Performing sync IO on the main thread!"); -- -- quota_FILE* quotaFile = -- sqlite3_quota_fopen(NS_ConvertUTF16toUTF8(mFilePath).get(), -- NS_ConvertUTF16toUTF8(mMode).get()); -- -- CleanUpOpen(); -- -- if (!quotaFile) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- mQuotaFile = quotaFile; -- -- return NS_OK; --} -diff --git dom/indexedDB/FileStream.h dom/indexedDB/FileStream.h -deleted file mode 100644 -index 09648b1..0000000 ---- mozilla/dom/indexedDB/FileStream.h -+++ /dev/null -@@ -1,140 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this file, -- * You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#ifndef mozilla_dom_indexeddb_filestream_h__ --#define mozilla_dom_indexeddb_filestream_h__ -- --#include "IndexedDatabase.h" -- --#include "nsIFileStreams.h" --#include "nsIInputStream.h" --#include "nsIOutputStream.h" --#include "nsISeekableStream.h" --#include "nsIStandardFileStream.h" -- --class nsIFile; --struct quota_FILE; -- --BEGIN_INDEXEDDB_NAMESPACE -- --class FileStream : public nsISeekableStream, -- public nsIInputStream, -- public nsIOutputStream, -- public nsIStandardFileStream, -- public nsIFileMetadata --{ --public: -- FileStream() -- : mFlags(0), -- mDeferredOpen(false), -- mQuotaFile(nullptr) -- { } -- -- virtual ~FileStream() -- { -- Close(); -- } -- -- NS_DECL_ISUPPORTS -- NS_DECL_NSISEEKABLESTREAM -- NS_DECL_NSISTANDARDFILESTREAM -- NS_DECL_NSIFILEMETADATA -- -- // nsIInputStream -- NS_IMETHOD -- Close(); -- -- NS_IMETHOD -- Available(uint64_t* _retval); -- -- NS_IMETHOD -- Read(char* aBuf, uint32_t aCount, uint32_t* _retval); -- -- NS_IMETHOD -- ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, uint32_t aCount, -- uint32_t* _retval); -- -- NS_IMETHOD -- IsNonBlocking(bool* _retval); -- -- // nsIOutputStream -- -- // Close() already declared -- -- NS_IMETHOD -- Flush(); -- -- NS_IMETHOD -- Write(const char* aBuf, uint32_t aCount, uint32_t* _retval); -- -- NS_IMETHOD -- WriteFrom(nsIInputStream* aFromStream, uint32_t aCount, uint32_t* _retval); -- -- NS_IMETHOD -- WriteSegments(nsReadSegmentFun aReader, void* aClosure, uint32_t aCount, -- uint32_t* _retval); -- -- // IsNonBlocking() already declared -- --protected: -- /** -- * Cleans up data prepared in Init. -- */ -- void -- CleanUpOpen() -- { -- mFilePath.Truncate(); -- mDeferredOpen = false; -- } -- -- /** -- * Open the file. This is called either from Init -- * or from DoPendingOpen (if FLAGS_DEFER_OPEN is used when initializing this -- * stream). The default behavior of DoOpen is to open the file and save the -- * file descriptor. -- */ -- virtual nsresult -- DoOpen(); -- -- /** -- * If there is a pending open, do it now. It's important for this to be -- * inlined since we do it in almost every stream API call. -- */ -- nsresult -- DoPendingOpen() -- { -- if (!mDeferredOpen) { -- return NS_OK; -- } -- -- return DoOpen(); -- } -- -- /** -- * Data we need to do an open. -- */ -- nsString mFilePath; -- nsString mMode; -- -- /** -- * Flags describing our behavior. See the IDL file for possible values. -- */ -- int32_t mFlags; -- -- /** -- * Whether we have a pending open (see FLAGS_DEFER_OPEN in the IDL file). -- */ -- bool mDeferredOpen; -- -- /** -- * File descriptor for opened file. -- */ -- quota_FILE* mQuotaFile; --}; -- --END_INDEXEDDB_NAMESPACE -- --#endif // mozilla_dom_indexeddb_filestream_h__ -diff --git dom/indexedDB/IDBDatabase.cpp dom/indexedDB/IDBDatabase.cpp -index 63500b0..8842daf 100644 ---- mozilla/dom/indexedDB/IDBDatabase.cpp -+++ mozilla/dom/indexedDB/IDBDatabase.cpp -@@ -779,6 +779,12 @@ IDBDatabase::Close() - return NS_OK; - } - -+const nsACString& -+IDBDatabase::StorageOrigin() -+{ -+ return Origin(); -+} -+ - nsISupports* - IDBDatabase::StorageId() - { -diff --git dom/indexedDB/IDBFactory.cpp dom/indexedDB/IDBFactory.cpp -index 1007df1..c1f573e 100644 ---- mozilla/dom/indexedDB/IDBFactory.cpp -+++ mozilla/dom/indexedDB/IDBFactory.cpp -@@ -253,8 +253,26 @@ IDBFactory::Create(ContentParent* aContentParent, - } - - // static -+already_AddRefed -+IDBFactory::GetDatabaseFileURL(nsIFile* aDatabaseFile, const nsACString& aOrigin) -+{ -+ nsCOMPtr uri; -+ nsresult rv = NS_NewFileURI(getter_AddRefs(uri), aDatabaseFile); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ nsCOMPtr fileUrl = do_QueryInterface(uri); -+ NS_ASSERTION(fileUrl, "This should always succeed!"); -+ -+ rv = fileUrl->SetQuery(NS_LITERAL_CSTRING("origin=") + aOrigin); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ return fileUrl.forget(); -+} -+ -+// static - already_AddRefed --IDBFactory::GetConnection(const nsAString& aDatabaseFilePath) -+IDBFactory::GetConnection(const nsAString& aDatabaseFilePath, -+ const nsACString& aOrigin) - { - NS_ASSERTION(IndexedDatabaseManager::IsMainProcess(), "Wrong process!"); - NS_ASSERTION(StringEndsWith(aDatabaseFilePath, NS_LITERAL_STRING(".sqlite")), -@@ -271,13 +289,15 @@ IDBFactory::GetConnection(const nsAString& aDatabaseFilePath) - NS_ENSURE_SUCCESS(rv, nullptr); - NS_ENSURE_TRUE(exists, nullptr); - -- nsCOMPtr ss = -+ nsCOMPtr dbFileUrl = GetDatabaseFileURL(dbFile, aOrigin); -+ NS_ENSURE_TRUE(dbFileUrl, nullptr); -+ -+ nsCOMPtr ss = - do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(ss, nullptr); - - nsCOMPtr connection; -- rv = ss->OpenDatabaseWithVFS(dbFile, NS_LITERAL_CSTRING("quota"), -- getter_AddRefs(connection)); -+ rv = ss->OpenDatabaseWithFileURL(dbFileUrl, getter_AddRefs(connection)); - NS_ENSURE_SUCCESS(rv, nullptr); - - // Turn on foreign key constraints and recursive triggers. -diff --git dom/indexedDB/IDBFactory.h dom/indexedDB/IDBFactory.h -index d5461f7..49dad42 100644 ---- mozilla/dom/indexedDB/IDBFactory.h -+++ mozilla/dom/indexedDB/IDBFactory.h -@@ -15,6 +15,8 @@ - #include "nsCycleCollectionParticipant.h" - - class nsIAtom; -+class nsIFile; -+class nsIFileURL; - class nsPIDOMWindow; - - namespace mozilla { -@@ -75,8 +77,12 @@ public: - static nsresult Create(ContentParent* aContentParent, - IDBFactory** aFactory); - -+ static already_AddRefed -+ GetDatabaseFileURL(nsIFile* aDatabaseFile, const nsACString& aOrigin); -+ - static already_AddRefed -- GetConnection(const nsAString& aDatabaseFilePath); -+ GetConnection(const nsAString& aDatabaseFilePath, -+ const nsACString& aOrigin); - - static nsresult - LoadDatabaseInformation(mozIStorageConnection* aConnection, -diff --git dom/indexedDB/IDBFileHandle.cpp dom/indexedDB/IDBFileHandle.cpp -index e0340ff..f71fd56 100644 ---- mozilla/dom/indexedDB/IDBFileHandle.cpp -+++ mozilla/dom/indexedDB/IDBFileHandle.cpp -@@ -6,15 +6,14 @@ - - #include "IDBFileHandle.h" - --#include "nsIStandardFileStream.h" -- - #include "mozilla/dom/file/File.h" -+#include "mozilla/dom/quota/FileStreams.h" - #include "nsDOMClassInfoID.h" - --#include "FileStream.h" - #include "IDBDatabase.h" - - USING_INDEXEDDB_NAMESPACE -+USING_QUOTA_NAMESPACE - - namespace { - -@@ -68,22 +67,22 @@ IDBFileHandle::Create(IDBDatabase* aDatabase, - already_AddRefed - IDBFileHandle::CreateStream(nsIFile* aFile, bool aReadOnly) - { -- nsRefPtr stream = new FileStream(); -+ const nsACString& origin = mFileStorage->StorageOrigin(); -+ -+ nsCOMPtr result; - -- nsString streamMode; - if (aReadOnly) { -- streamMode.AssignLiteral("rb"); -+ nsRefPtr stream = FileInputStream::Create( -+ origin, aFile, -1, -1, nsIFileInputStream::DEFER_OPEN); -+ result = NS_ISUPPORTS_CAST(nsIFileInputStream*, stream); - } - else { -- streamMode.AssignLiteral("r+b"); -+ nsRefPtr stream = FileStream::Create( -+ origin, aFile, -1, -1, nsIFileStream::DEFER_OPEN); -+ result = NS_ISUPPORTS_CAST(nsIFileStream*, stream); - } -+ NS_ENSURE_TRUE(result, nullptr); - -- nsresult rv = stream->Init(aFile, streamMode, -- nsIStandardFileStream::FLAGS_DEFER_OPEN); -- NS_ENSURE_SUCCESS(rv, nullptr); -- -- nsCOMPtr result = -- NS_ISUPPORTS_CAST(nsIStandardFileStream*, stream); - return result.forget(); - } - -diff --git dom/indexedDB/IDBObjectStore.cpp dom/indexedDB/IDBObjectStore.cpp -index 746d473..1f16d26 100644 ---- mozilla/dom/indexedDB/IDBObjectStore.cpp -+++ mozilla/dom/indexedDB/IDBObjectStore.cpp -@@ -17,6 +17,7 @@ - #include "mozilla/dom/ContentParent.h" - #include "mozilla/dom/StructuredCloneTags.h" - #include "mozilla/dom/ipc/Blob.h" -+#include "mozilla/dom/quota/FileStreams.h" - #include "mozilla/storage.h" - #include "nsContentUtils.h" - #include "nsDOMClassInfo.h" -@@ -27,10 +28,8 @@ - #include "nsServiceManagerUtils.h" - #include "nsThreadUtils.h" - #include "snappy/snappy.h" --#include "test_quota.h" - - #include "AsyncConnectionHelper.h" --#include "FileStream.h" - #include "IDBCursor.h" - #include "IDBEvents.h" - #include "IDBFileHandle.h" -@@ -51,6 +50,7 @@ - USING_INDEXEDDB_NAMESPACE - using namespace mozilla::dom; - using namespace mozilla::dom::indexedDB::ipc; -+using mozilla::dom::quota::FileOutputStream; - - namespace { - -@@ -2734,9 +2734,9 @@ AddHelper::DoDatabaseWork(mozIStorageConnection* aConnection) - nativeFile = fileManager->GetFileForId(directory, id); - NS_ENSURE_TRUE(nativeFile, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- nsRefPtr outputStream = new FileStream(); -- rv = outputStream->Init(nativeFile, NS_LITERAL_STRING("wb"), 0); -- NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ nsRefPtr outputStream = FileOutputStream::Create( -+ mObjectStore->Transaction()->Database()->Origin(), nativeFile); -+ NS_ENSURE_TRUE(outputStream, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - - rv = CopyData(inputStream, outputStream); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -diff --git dom/indexedDB/IDBTransaction.cpp dom/indexedDB/IDBTransaction.cpp -index fcef7cc..a5345e2 100644 ---- mozilla/dom/indexedDB/IDBTransaction.cpp -+++ mozilla/dom/indexedDB/IDBTransaction.cpp -@@ -352,7 +352,8 @@ IDBTransaction::GetOrCreateConnection(mozIStorageConnection** aResult) - - if (!mConnection) { - nsCOMPtr connection = -- IDBFactory::GetConnection(mDatabase->FilePath()); -+ IDBFactory::GetConnection(mDatabase->FilePath(), -+ mDatabase->Origin()); - NS_ENSURE_TRUE(connection, NS_ERROR_FAILURE); - - nsresult rv; -diff --git dom/indexedDB/IndexedDatabaseInlines.h dom/indexedDB/IndexedDatabaseInlines.h -index 62e65d6..f27d60c 100644 ---- mozilla/dom/indexedDB/IndexedDatabaseInlines.h -+++ mozilla/dom/indexedDB/IndexedDatabaseInlines.h -@@ -79,4 +79,17 @@ AppendConditionClause(const nsACString& aColumnName, - aResult += NS_LITERAL_CSTRING(" :") + aArgName; - } - -+inline void -+IncrementUsage(uint64_t* aUsage, uint64_t aDelta) -+{ -+ // Watch for overflow! -+ if ((UINT64_MAX - *aUsage) < aDelta) { -+ NS_WARNING("Usage exceeds the maximum!"); -+ *aUsage = UINT64_MAX; -+ } -+ else { -+ *aUsage += aDelta; -+ } -+} -+ - END_INDEXEDDB_NAMESPACE -diff --git dom/indexedDB/IndexedDatabaseManager.cpp dom/indexedDB/IndexedDatabaseManager.cpp -index e4ad647..88f09da 100644 ---- mozilla/dom/indexedDB/IndexedDatabaseManager.cpp -+++ mozilla/dom/indexedDB/IndexedDatabaseManager.cpp -@@ -22,6 +22,7 @@ - #include "nsITimer.h" - - #include "mozilla/dom/file/FileService.h" -+#include "mozilla/dom/quota/QuotaManager.h" - #include "mozilla/dom/TabContext.h" - #include "mozilla/LazyIdleThread.h" - #include "mozilla/Preferences.h" -@@ -36,7 +37,6 @@ - #include "nsThreadUtils.h" - #include "nsXPCOM.h" - #include "nsXPCOMPrivate.h" --#include "test_quota.h" - #include "xpcpublic.h" - - #include "AsyncConnectionHelper.h" -@@ -48,6 +48,8 @@ - #include "OpenDatabaseHelper.h" - #include "TransactionThreadPool.h" - -+#include "IndexedDatabaseInlines.h" -+ - // The amount of time, in milliseconds, that our IO thread will stay alive - // after the last event it processes. - #define DEFAULT_THREAD_TIMEOUT_MS 30000 -@@ -70,6 +72,7 @@ using namespace mozilla::services; - using namespace mozilla::dom; - using mozilla::Preferences; - using mozilla::dom::file::FileService; -+using mozilla::dom::quota::QuotaManager; - - static NS_DEFINE_CID(kDOMSOF_CID, NS_DOM_SCRIPT_OBJECT_FACTORY_CID); - -@@ -103,29 +106,6 @@ GetDatabaseBaseFilename(const nsAString& aFilename, - return true; - } - --class QuotaCallback MOZ_FINAL : public mozIStorageQuotaCallback --{ --public: -- NS_DECL_ISUPPORTS -- -- NS_IMETHOD -- QuotaExceeded(const nsACString& aFilename, -- int64_t aCurrentSizeLimit, -- int64_t aCurrentTotalSize, -- nsISupports* aUserData, -- int64_t* _retval) -- { -- if (IndexedDatabaseManager::QuotaIsLifted()) { -- *_retval = 0; -- return NS_OK; -- } -- -- return NS_ERROR_FAILURE; -- } --}; -- --NS_IMPL_THREADSAFE_ISUPPORTS1(QuotaCallback, mozIStorageQuotaCallback) -- - // Adds all databases in the hash to the given array. - template - PLDHashOperator -@@ -440,8 +420,8 @@ IndexedDatabaseManager::GetOrCreate() - NS_LITERAL_CSTRING("IndexedDB I/O"), - LazyIdleThread::ManualShutdown); - -- // We need one quota callback object to hand to SQLite. -- instance->mQuotaCallbackSingleton = new QuotaCallback(); -+ // Make sure that the quota manager is up. -+ NS_ENSURE_TRUE(QuotaManager::GetOrCreate(), nullptr); - - // Make a timer here to avoid potential failures later. We don't actually - // initialize the timer until shutdown. -@@ -996,37 +976,15 @@ IndexedDatabaseManager::EnsureOriginIsInitialized(const nsACString& aOrigin, - return NS_OK; - } - -- // First figure out the filename pattern we'll use. -- nsCOMPtr patternFile; -- rv = directory->Clone(getter_AddRefs(patternFile)); -- NS_ENSURE_SUCCESS(rv, rv); -- -- rv = patternFile->Append(NS_LITERAL_STRING("*")); -- NS_ENSURE_SUCCESS(rv, rv); -- -- nsString pattern; -- rv = patternFile->GetPath(pattern); -- NS_ENSURE_SUCCESS(rv, rv); -- -- // Now tell SQLite to start tracking this pattern for content. -- nsCOMPtr ss = -- do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID); -- NS_ENSURE_TRUE(ss, NS_ERROR_FAILURE); -- -- if (aPrivilege != Chrome) { -- rv = ss->SetQuotaForFilenamePattern(NS_ConvertUTF16toUTF8(pattern), -- GetIndexedDBQuotaMB() * 1024 * 1024, -- mQuotaCallbackSingleton, nullptr); -- NS_ENSURE_SUCCESS(rv, rv); -- } -- - // We need to see if there are any files in the directory already. If they - // are database files then we need to cleanup stored files (if it's needed) -- // and also tell SQLite about all of them. -+ // and also initialize the quota. - - nsAutoTArray subdirsToProcess; - nsAutoTArray , 20> unknownFiles; - -+ uint64_t usage = 0; -+ - nsTHashtable validSubdirs; - validSubdirs.Init(20); - -@@ -1068,20 +1026,28 @@ IndexedDatabaseManager::EnsureOriginIsInitialized(const nsACString& aOrigin, - continue; - } - -- nsCOMPtr fileManagerDirectory; -- rv = directory->Clone(getter_AddRefs(fileManagerDirectory)); -+ nsCOMPtr fmDirectory; -+ rv = directory->Clone(getter_AddRefs(fmDirectory)); - NS_ENSURE_SUCCESS(rv, rv); - -- rv = fileManagerDirectory->Append(dbBaseFilename); -+ rv = fmDirectory->Append(dbBaseFilename); - NS_ENSURE_SUCCESS(rv, rv); - -- rv = FileManager::InitDirectory(ss, fileManagerDirectory, file, -- aPrivilege); -+ rv = FileManager::InitDirectory(fmDirectory, file, aOrigin); - NS_ENSURE_SUCCESS(rv, rv); - - if (aPrivilege != Chrome) { -- rv = ss->UpdateQuotaInformationForFile(file); -+ uint64_t fileUsage; -+ rv = FileManager::GetUsage(fmDirectory, &fileUsage); - NS_ENSURE_SUCCESS(rv, rv); -+ -+ IncrementUsage(&usage, fileUsage); -+ -+ int64_t fileSize; -+ rv = file->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ IncrementUsage(&usage, uint64_t(fileSize)); - } - - validSubdirs.PutEntry(dbBaseFilename); -@@ -1117,12 +1083,39 @@ IndexedDatabaseManager::EnsureOriginIsInitialized(const nsACString& aOrigin, - } - } - -+ if (aPrivilege != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->InitQuotaForOrigin(aOrigin, GetIndexedDBQuotaMB(), usage); -+ } -+ - mInitializedOrigins.AppendElement(aOrigin); - - NS_ADDREF(*aDirectory = directory); - return NS_OK; - } - -+void -+IndexedDatabaseManager::UninitializeOriginsByPattern( -+ const nsACString& aPattern) -+{ -+#ifdef DEBUG -+ { -+ bool correctThread; -+ NS_ASSERTION(NS_SUCCEEDED(mIOThread->IsOnCurrentThread(&correctThread)) && -+ correctThread, -+ "Running on the wrong thread!"); -+ } -+#endif -+ -+ for (int32_t i = mInitializedOrigins.Length() - 1; i >= 0; i--) { -+ if (PatternMatchesOrigin(aPattern, mInitializedOrigins[i])) { -+ mInitializedOrigins.RemoveElementAt(i); -+ } -+ } -+} -+ - bool - IndexedDatabaseManager::QuotaIsLiftedInternal() - { -@@ -1250,16 +1243,14 @@ IndexedDatabaseManager::GetFileManager(const nsACString& aOrigin, - } - - void --IndexedDatabaseManager::AddFileManager(const nsACString& aOrigin, -- const nsAString& aDatabaseName, -- FileManager* aFileManager) -+IndexedDatabaseManager::AddFileManager(FileManager* aFileManager) - { - NS_ASSERTION(aFileManager, "Null file manager!"); - - nsTArray >* array; -- if (!mFileManagers.Get(aOrigin, &array)) { -+ if (!mFileManagers.Get(aFileManager->Origin(), &array)) { - array = new nsTArray >(); -- mFileManagers.Put(aOrigin, array); -+ mFileManagers.Put(aFileManager->Origin(), array); - } - - array->AppendElement(aFileManager); -@@ -1783,6 +1774,13 @@ OriginClearRunnable::DeleteFiles(IndexedDatabaseManager* aManager) - // correctly... - NS_ERROR("Failed to remove directory!"); - } -+ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->RemoveQuotaForPattern(mOriginOrPattern); -+ -+ aManager->UninitializeOriginsByPattern(mOriginOrPattern); - } - } - -@@ -1880,19 +1878,6 @@ IndexedDatabaseManager::AsyncUsageRunnable::Cancel() - } - } - --inline void --IncrementUsage(uint64_t* aUsage, uint64_t aDelta) --{ -- // Watch for overflow! -- if ((INT64_MAX - *aUsage) <= aDelta) { -- NS_WARNING("Database sizes exceed max we can report!"); -- *aUsage = INT64_MAX; -- } -- else { -- *aUsage += aDelta; -- } --} -- - nsresult - IndexedDatabaseManager::AsyncUsageRunnable::TakeShortcut() - { -@@ -2295,25 +2280,22 @@ IndexedDatabaseManager::AsyncDeleteFileRunnable::Run() - nsCOMPtr file = mFileManager->GetFileForId(directory, mFileId); - NS_ENSURE_TRUE(file, NS_ERROR_FAILURE); - -- nsString filePath; -- nsresult rv = file->GetPath(filePath); -- NS_ENSURE_SUCCESS(rv, rv); -+ nsresult rv; -+ int64_t fileSize; - -- int rc = sqlite3_quota_remove(NS_ConvertUTF16toUTF8(filePath).get()); -- if (rc != SQLITE_OK) { -- NS_WARNING("Failed to delete stored file!"); -- return NS_ERROR_FAILURE; -+ if (mFileManager->Privilege() != Chrome) { -+ rv = file->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); - } - -- // sqlite3_quota_remove won't actually remove anything if we're not tracking -- // the quota here. Manually remove the file if it exists. -- bool exists; -- rv = file->Exists(&exists); -- NS_ENSURE_SUCCESS(rv, rv); -+ rv = file->Remove(false); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); - -- if (exists) { -- rv = file->Remove(false); -- NS_ENSURE_SUCCESS(rv, rv); -+ if (mFileManager->Privilege() != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->DecreaseUsageForOrigin(mFileManager->Origin(), fileSize); - } - - directory = mFileManager->GetJournalDirectory(); -diff --git dom/indexedDB/IndexedDatabaseManager.h dom/indexedDB/IndexedDatabaseManager.h -index f9fbbf2..1ea5425 100644 ---- mozilla/dom/indexedDB/IndexedDatabaseManager.h -+++ mozilla/dom/indexedDB/IndexedDatabaseManager.h -@@ -23,7 +23,6 @@ - - #define INDEXEDDB_MANAGER_CONTRACTID "@mozilla.org/dom/indexeddb/manager;1" - --class mozIStorageQuotaCallback; - class nsIAtom; - class nsIFile; - class nsITimer; -@@ -134,6 +133,8 @@ public: - FactoryPrivilege aPrivilege, - nsIFile** aDirectory); - -+ void UninitializeOriginsByPattern(const nsACString& aPattern); -+ - // Determine if the quota is lifted for the Window the current thread is - // using. - static inline bool -@@ -172,9 +173,7 @@ public: - const nsAString& aDatabaseName); - - void -- AddFileManager(const nsACString& aOrigin, -- const nsAString& aDatabaseName, -- FileManager* aFileManager); -+ AddFileManager(FileManager* aFileManager); - - void InvalidateFileManagersForPattern(const nsACString& aPattern); - -@@ -502,10 +501,6 @@ private: - // A timer that gets activated at shutdown to ensure we close all databases. - nsCOMPtr mShutdownTimer; - -- // A single threadsafe instance of our quota callback. Created on the main -- // thread during GetOrCreate(). -- nsCOMPtr mQuotaCallbackSingleton; -- - // A list of all successfully initialized origins. This list isn't protected - // by any mutex but it is only ever touched on the IO thread. - nsTArray mInitializedOrigins; -diff --git dom/indexedDB/Makefile.in dom/indexedDB/Makefile.in -index fef0858..09d4853 100644 ---- mozilla/dom/indexedDB/Makefile.in -+++ mozilla/dom/indexedDB/Makefile.in -@@ -25,7 +25,6 @@ CPPSRCS = \ - DatabaseInfo.cpp \ - FileInfo.cpp \ - FileManager.cpp \ -- FileStream.cpp \ - IDBCursor.cpp \ - IDBDatabase.cpp \ - IDBEvents.cpp \ -@@ -93,7 +92,6 @@ XPIDLSRCS = \ - nsIIDBVersionChangeEvent.idl \ - nsIIDBOpenDBRequest.idl \ - nsIIndexedDatabaseManager.idl \ -- nsIStandardFileStream.idl \ - $(NULL) - - DIRS += ipc -diff --git dom/indexedDB/OpenDatabaseHelper.cpp dom/indexedDB/OpenDatabaseHelper.cpp -index e71cad4..4cd7f61 100644 ---- mozilla/dom/indexedDB/OpenDatabaseHelper.cpp -+++ mozilla/dom/indexedDB/OpenDatabaseHelper.cpp -@@ -8,11 +8,12 @@ - - #include "nsIFile.h" - -+#include "mozilla/dom/quota/QuotaManager.h" - #include "mozilla/storage.h" - #include "nsEscape.h" -+#include "nsNetUtil.h" - #include "nsThreadUtils.h" - #include "snappy/snappy.h" --#include "test_quota.h" - - #include "nsIBFCacheEntry.h" - #include "IDBEvents.h" -@@ -21,6 +22,7 @@ - - using namespace mozilla; - USING_INDEXEDDB_NAMESPACE -+USING_QUOTA_NAMESPACE - - namespace { - -@@ -1632,15 +1634,15 @@ OpenDatabaseHelper::DoDatabaseWork() - rv = dbFile->GetPath(mDatabaseFilePath); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- nsCOMPtr fileManagerDirectory; -- rv = dbDirectory->Clone(getter_AddRefs(fileManagerDirectory)); -+ nsCOMPtr fmDirectory; -+ rv = dbDirectory->Clone(getter_AddRefs(fmDirectory)); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = fileManagerDirectory->Append(filename); -+ rv = fmDirectory->Append(filename); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - - nsCOMPtr connection; -- rv = CreateDatabaseConnection(mName, dbFile, fileManagerDirectory, -+ rv = CreateDatabaseConnection(dbFile, fmDirectory, mName, mASCIIOrigin, - getter_AddRefs(connection)); - if (NS_FAILED(rv) && - NS_ERROR_GET_MODULE(rv) != NS_ERROR_MODULE_DOM_INDEXEDDB) { -@@ -1691,12 +1693,12 @@ OpenDatabaseHelper::DoDatabaseWork() - - nsRefPtr fileManager = mgr->GetFileManager(mASCIIOrigin, mName); - if (!fileManager) { -- fileManager = new FileManager(mASCIIOrigin, mName); -+ fileManager = new FileManager(mASCIIOrigin, mPrivilege, mName); - -- rv = fileManager->Init(fileManagerDirectory, connection); -+ rv = fileManager->Init(fmDirectory, connection); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- mgr->AddFileManager(mASCIIOrigin, mName, fileManager); -+ mgr->AddFileManager(fileManager); - } - - mFileManager = fileManager.forget(); -@@ -1707,23 +1709,26 @@ OpenDatabaseHelper::DoDatabaseWork() - // static - nsresult - OpenDatabaseHelper::CreateDatabaseConnection( -- const nsAString& aName, - nsIFile* aDBFile, -- nsIFile* aFileManagerDirectory, -+ nsIFile* aFMDirectory, -+ const nsAString& aName, -+ const nsACString& aOrigin, - mozIStorageConnection** aConnection) - { - NS_ASSERTION(IndexedDatabaseManager::IsMainProcess(), "Wrong process!"); - NS_ASSERTION(!NS_IsMainThread(), "Wrong thread!"); - -- NS_NAMED_LITERAL_CSTRING(quotaVFSName, "quota"); -+ nsCOMPtr dbFileUrl = -+ IDBFactory::GetDatabaseFileURL(aDBFile, aOrigin); -+ NS_ENSURE_TRUE(dbFileUrl, NS_ERROR_FAILURE); - -- nsCOMPtr ss = -+ nsCOMPtr ss = - do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID); - NS_ENSURE_TRUE(ss, NS_ERROR_FAILURE); - - nsCOMPtr connection; -- nsresult rv = ss->OpenDatabaseWithVFS(aDBFile, quotaVFSName, -- getter_AddRefs(connection)); -+ nsresult rv = -+ ss->OpenDatabaseWithFileURL(dbFileUrl, getter_AddRefs(connection)); - if (rv == NS_ERROR_FILE_CORRUPTED) { - // If we're just opening the database during origin initialization, then - // we don't want to erase any files. The failure here will fail origin -@@ -1737,21 +1742,20 @@ OpenDatabaseHelper::CreateDatabaseConnection( - NS_ENSURE_SUCCESS(rv, rv); - - bool exists; -- rv = aFileManagerDirectory->Exists(&exists); -+ rv = aFMDirectory->Exists(&exists); - NS_ENSURE_SUCCESS(rv, rv); - - if (exists) { - bool isDirectory; -- rv = aFileManagerDirectory->IsDirectory(&isDirectory); -+ rv = aFMDirectory->IsDirectory(&isDirectory); - NS_ENSURE_SUCCESS(rv, rv); - NS_ENSURE_TRUE(isDirectory, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = aFileManagerDirectory->Remove(true); -+ rv = aFMDirectory->Remove(true); - NS_ENSURE_SUCCESS(rv, rv); - } - -- rv = ss->OpenDatabaseWithVFS(aDBFile, quotaVFSName, -- getter_AddRefs(connection)); -+ rv = ss->OpenDatabaseWithFileURL(dbFileUrl, getter_AddRefs(connection)); - } - NS_ENSURE_SUCCESS(rv, rv); - -@@ -2347,6 +2351,8 @@ DeleteDatabaseHelper::DoDatabaseWork(mozIStorageConnection* aConnection) - { - NS_ASSERTION(!aConnection, "How did we get a connection here?"); - -+ const FactoryPrivilege& privilege = mOpenHelper->Privilege(); -+ - IndexedDatabaseManager* mgr = IndexedDatabaseManager::Get(); - NS_ASSERTION(mgr, "This should never fail!"); - -@@ -2372,59 +2378,57 @@ DeleteDatabaseHelper::DoDatabaseWork(mozIStorageConnection* aConnection) - rv = dbFile->Exists(&exists); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- int rc; -- - if (exists) { -- nsString dbFilePath; -- rv = dbFile->GetPath(dbFilePath); -- NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ int64_t fileSize; - -- rc = sqlite3_quota_remove(NS_ConvertUTF16toUTF8(dbFilePath).get()); -- if (rc != SQLITE_OK) { -- NS_WARNING("Failed to delete db file!"); -- return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; -+ if (privilege != Chrome) { -+ rv = dbFile->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - } - -- // sqlite3_quota_remove won't actually remove anything if we're not tracking -- // the quota here. Manually remove the file if it exists. -- rv = dbFile->Exists(&exists); -+ rv = dbFile->Remove(false); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- if (exists) { -- rv = dbFile->Remove(false); -- NS_ENSURE_SUCCESS(rv, rv); -+ if (privilege != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->DecreaseUsageForOrigin(mASCIIOrigin, fileSize); - } - } - -- nsCOMPtr fileManagerDirectory; -- rv = directory->Clone(getter_AddRefs(fileManagerDirectory)); -- NS_ENSURE_SUCCESS(rv, rv); -+ nsCOMPtr fmDirectory; -+ rv = directory->Clone(getter_AddRefs(fmDirectory)); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = fileManagerDirectory->Append(filename); -+ rv = fmDirectory->Append(filename); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- rv = fileManagerDirectory->Exists(&exists); -+ rv = fmDirectory->Exists(&exists); - NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - - if (exists) { - bool isDirectory; -- rv = fileManagerDirectory->IsDirectory(&isDirectory); -+ rv = fmDirectory->IsDirectory(&isDirectory); - NS_ENSURE_SUCCESS(rv, rv); - NS_ENSURE_TRUE(isDirectory, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - -- nsString fileManagerDirectoryPath; -- rv = fileManagerDirectory->GetPath(fileManagerDirectoryPath); -- NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ uint64_t usage = 0; - -- rc = sqlite3_quota_remove( -- NS_ConvertUTF16toUTF8(fileManagerDirectoryPath).get()); -- if (rc != SQLITE_OK) { -- NS_WARNING("Failed to delete file directory!"); -- return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; -+ if (privilege != Chrome) { -+ rv = FileManager::GetUsage(fmDirectory, &usage); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); - } - -- rv = fileManagerDirectory->Remove(true); -- NS_ENSURE_SUCCESS(rv, rv); -+ rv = fmDirectory->Remove(true); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR); -+ -+ if (privilege != Chrome) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->DecreaseUsageForOrigin(mASCIIOrigin, usage); -+ } - } - - return NS_OK; -diff --git dom/indexedDB/OpenDatabaseHelper.h dom/indexedDB/OpenDatabaseHelper.h -index 587301b..5a3d987 100644 ---- mozilla/dom/indexedDB/OpenDatabaseHelper.h -+++ mozilla/dom/indexedDB/OpenDatabaseHelper.h -@@ -77,10 +77,16 @@ public: - return mDatabase; - } - -+ const FactoryPrivilege& Privilege() const -+ { -+ return mPrivilege; -+ } -+ - static -- nsresult CreateDatabaseConnection(const nsAString& aName, -- nsIFile* aDBFile, -- nsIFile* aFileManagerDirectory, -+ nsresult CreateDatabaseConnection(nsIFile* aDBFile, -+ nsIFile* aFMDirectory, -+ const nsAString& aName, -+ const nsACString& aOrigin, - mozIStorageConnection** aConnection); - - protected: -diff --git dom/indexedDB/nsIStandardFileStream.idl dom/indexedDB/nsIStandardFileStream.idl -deleted file mode 100644 -index 265c3ed..0000000 ---- mozilla/dom/indexedDB/nsIStandardFileStream.idl -+++ /dev/null -@@ -1,60 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this file, -- * You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#include "nsISupports.idl" -- --interface nsIFile; -- --/** -- * A stream that allows you to read from a file or stream to a file -- * using standard file APIs. -- */ --[scriptable, uuid(ebbbb779-92a3-4b2a-b7cf-6efbe904c453)] --interface nsIStandardFileStream : nsISupports --{ -- /** -- * If this is set, the file will be opened (i.e., a call to -- * fopen done) only when we do an actual operation on the stream, -- * or more specifically, when one of the following is called: -- * - Seek -- * - Tell -- * - SetEOF -- * - Available -- * - Read -- * - Write -- * - Flush -- * - GetSize -- * - GetLastModified -- * - Sync -- * -- * FLAGS_DEFER_OPEN is useful if we use the stream on a background -- * thread, so that the opening and possible |stat|ing of the file -- * happens there as well. -- * -- * @note Using this flag results in the file not being opened -- * during the call to Init. This means that any errors that might -- * happen when this flag is not set would happen during the -- * first read. Also, the file is not locked when Init is called, -- * so it might be deleted before we try to read from it. -- */ -- const long FLAGS_DEFER_OPEN = 1 << 0; -- -- /** -- * @param file file to read from or stream to -- * @param mode file open mode (see fopen documentation) -- * @param flags flags specifying various behaviors of the class -- * (see enumerations in the class) -- */ -- void init(in nsIFile file, -- in AString mode, -- in long flags); -- -- /** -- * Flush all written content held in memory buffers out to disk. -- * This is the equivalent of fflush() -- */ -- void flushBuffers(); --}; -diff --git dom/indexedDB/test/Makefile.in dom/indexedDB/test/Makefile.in -index 9c79b14..4c9a201 100644 ---- mozilla/dom/indexedDB/test/Makefile.in -+++ mozilla/dom/indexedDB/test/Makefile.in -@@ -54,11 +54,13 @@ MOCHITEST_FILES = \ - test_file_os_delete.html \ - test_file_put_get_object.html \ - test_file_put_get_values.html \ -+ test_file_quota.html \ - test_file_replace.html \ - test_file_resurrection_delete.html \ - test_file_resurrection_transaction_abort.html \ - test_file_sharing.html \ - test_file_transaction_abort.html \ -+ test_filehandle_quota.html \ - test_filehandle_serialization.html \ - test_filehandle_store_snapshot.html \ - test_getAll.html \ -diff --git dom/indexedDB/test/file.js dom/indexedDB/test/file.js -index 07bd10a..3c6194a 100644 ---- mozilla/dom/indexedDB/test/file.js -+++ mozilla/dom/indexedDB/test/file.js -@@ -3,6 +3,8 @@ - * http://creativecommons.org/publicdomain/zero/1.0/ - */ - -+const DEFAULT_QUOTA = 50 * 1024 * 1024; -+ - var bufferCache = []; - var utils = SpecialPowers.getDOMWindowUtils(window); - -@@ -184,25 +186,6 @@ function getUsage(usageHandler) - idbManager.getUsageForURI(uri, callback); - } - --function getUsageSync() --{ -- let usage; -- -- getUsage(function(aUsage, aFileUsage) { -- usage = aUsage; -- }); -- -- let comp = SpecialPowers.wrap(Components); -- let thread = comp.classes["@mozilla.org/thread-manager;1"] -- .getService(comp.interfaces.nsIThreadManager) -- .currentThread; -- while (!usage) { -- thread.processNextEvent(true); -- } -- -- return usage; --} -- - function scheduleGC() - { - SpecialPowers.exactGC(window, continueToNextStep); -diff --git dom/indexedDB/test/test_file_quota.html dom/indexedDB/test/test_file_quota.html -index b07880d..9fbc0c0 100644 ---- mozilla/dom/indexedDB/test/test_file_quota.html -+++ mozilla/dom/indexedDB/test/test_file_quota.html -@@ -13,14 +13,12 @@ - function testSteps() - { - const READ_WRITE = IDBTransaction.READ_WRITE; -- const DEFAULT_QUOTA_MB = 50; - - const name = window.location.pathname; - - const objectStoreName = "Blobs"; - -- const testData = { key: 0, value: {} }; -- const fileData = { key: 1, file: null }; -+ const fileData = { key: 1, file: getNullFile("random.bin", DEFAULT_QUOTA) }; - - let request = indexedDB.open(name, 1); - request.onerror = errorHandler; -@@ -32,21 +30,17 @@ - - let db = event.target.result; - -- let objectStore = db.createObjectStore(objectStoreName, { }); -- objectStore.add(testData.value, testData.key); -- -- let size = (DEFAULT_QUOTA_MB + 1) * 1024 * 1024 - getUsageSync(); -- fileData.file = getNullFile("random.bin", size); -+ db.createObjectStore(objectStoreName, { }); - - event = yield; - - is(event.type, "success", "Got correct event type"); - - trans = db.transaction([objectStoreName], READ_WRITE); -- objectStore = trans.objectStore(objectStoreName); -+ let objectStore = trans.objectStore(objectStoreName); - - request = objectStore.add(fileData.file, fileData.key); -- request.addEventListener("error", new ExpectError("UnknownError")); -+ request.addEventListener("error", new ExpectError("UnknownError", true)); - request.onsuccess = unexpectedSuccessHandler; - event = yield; - -diff --git dom/indexedDB/test/test_filehandle_quota.html dom/indexedDB/test/test_filehandle_quota.html -index addaf01..0506279 100644 ---- mozilla/dom/indexedDB/test/test_filehandle_quota.html -+++ mozilla/dom/indexedDB/test/test_filehandle_quota.html -@@ -13,7 +13,6 @@ - function testSteps() - { - const READ_WRITE = IDBTransaction.READ_WRITE; -- const DEFAULT_QUOTA_MB = 50; - - const name = window.location.pathname; - -@@ -39,10 +38,10 @@ - - let lockedFile = fileHandle.open("readwrite"); - -- let blob = getNullBlob((50 + 1) * 1024 * 1024 - getUsageSync()); -+ let blob = getNullBlob(DEFAULT_QUOTA); - - request = lockedFile.write(blob); -- request.addEventListener("error", new ExpectError("UnknownError")); -+ request.addEventListener("error", new ExpectError("UnknownError", true)); - request.onsuccess = unexpectedSuccessHandler; - event = yield; - -diff --git dom/quota/FileStreams.cpp dom/quota/FileStreams.cpp -new file mode 100644 -index 0000000..9de244f ---- /dev/null -+++ mozilla/dom/quota/FileStreams.cpp -@@ -0,0 +1,123 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "FileStreams.h" -+ -+USING_QUOTA_NAMESPACE -+ -+template -+NS_IMETHODIMP -+FileQuotaStream::SetEOF() -+{ -+ nsresult rv = FileStreamBase::SetEOF(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (mQuotaObject) { -+ int64_t offset; -+ nsresult rv = FileStreamBase::Tell(&offset); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mQuotaObject->UpdateSize(offset); -+ } -+ -+ return NS_OK; -+} -+ -+template -+NS_IMETHODIMP -+FileQuotaStream::Close() -+{ -+ nsresult rv = FileStreamBase::Close(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mQuotaObject = nullptr; -+ -+ return NS_OK; -+} -+ -+template -+nsresult -+FileQuotaStream::DoOpen() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ NS_ASSERTION(!mQuotaObject, "Creating quota object more than once?"); -+ mQuotaObject = quotaManager->GetQuotaObject(mOrigin, -+ FileStreamBase::mOpenParams.localFile); -+ -+ nsresult rv = FileStreamBase::DoOpen(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (mQuotaObject && (FileStreamBase::mOpenParams.ioFlags & PR_TRUNCATE)) { -+ mQuotaObject->UpdateSize(0); -+ } -+ -+ return NS_OK; -+} -+ -+template -+NS_IMETHODIMP -+FileQuotaStreamWithWrite::Write(const char* aBuf, -+ uint32_t aCount, -+ uint32_t* _retval) -+{ -+ nsresult rv; -+ -+ if (FileQuotaStreamWithWrite::mQuotaObject) { -+ int64_t offset; -+ rv = FileStreamBase::Tell(&offset); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (!FileQuotaStreamWithWrite:: -+ mQuotaObject->MaybeAllocateMoreSpace(offset, aCount)) { -+ return NS_ERROR_FAILURE; -+ } -+ } -+ -+ rv = FileStreamBase::Write(aBuf, aCount, _retval); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ return NS_OK; -+} -+ -+NS_IMPL_ISUPPORTS_INHERITED0(FileInputStream, nsFileInputStream) -+ -+already_AddRefed -+FileInputStream::Create(const nsACString& aOrigin, nsIFile* aFile, -+ int32_t aIOFlags, int32_t aPerm, -+ int32_t aBehaviorFlags) -+{ -+ nsRefPtr stream = new FileInputStream(aOrigin); -+ nsresult rv = stream->Init(aFile, aIOFlags, aPerm, aBehaviorFlags); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ return stream.forget(); -+} -+ -+NS_IMPL_ISUPPORTS_INHERITED0(FileOutputStream, nsFileOutputStream) -+ -+already_AddRefed -+FileOutputStream::Create(const nsACString& aOrigin, nsIFile* aFile, -+ int32_t aIOFlags, int32_t aPerm, -+ int32_t aBehaviorFlags) -+{ -+ nsRefPtr stream = new FileOutputStream(aOrigin); -+ nsresult rv = stream->Init(aFile, aIOFlags, aPerm, aBehaviorFlags); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ return stream.forget(); -+} -+ -+NS_IMPL_ISUPPORTS_INHERITED0(FileStream, nsFileStream) -+ -+already_AddRefed -+FileStream::Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags, -+ int32_t aPerm, int32_t aBehaviorFlags) -+{ -+ nsRefPtr stream = new FileStream(aOrigin); -+ nsresult rv = stream->Init(aFile, aIOFlags, aPerm, aBehaviorFlags); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ return stream.forget(); -+} -diff --git dom/quota/FileStreams.h dom/quota/FileStreams.h -new file mode 100644 -index 0000000..77bfad4 ---- /dev/null -+++ mozilla/dom/quota/FileStreams.h -@@ -0,0 +1,115 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this -+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef mozilla_dom_quota_filestreams_h__ -+#define mozilla_dom_quota_filestreams_h__ -+ -+#include "QuotaCommon.h" -+ -+#include "nsFileStreams.h" -+ -+#include "QuotaManager.h" -+ -+BEGIN_QUOTA_NAMESPACE -+ -+template -+class FileQuotaStream : public FileStreamBase -+{ -+public: -+ // nsFileStreamBase override -+ NS_IMETHOD -+ SetEOF() MOZ_OVERRIDE; -+ -+ NS_IMETHOD -+ Close() MOZ_OVERRIDE; -+ -+protected: -+ FileQuotaStream(const nsACString& aOrigin) -+ : mOrigin(aOrigin) -+ { } -+ -+ // nsFileStreamBase override -+ virtual nsresult -+ DoOpen() MOZ_OVERRIDE; -+ -+ nsCString mOrigin; -+ nsRefPtr mQuotaObject; -+}; -+ -+template -+class FileQuotaStreamWithWrite : public FileQuotaStream -+{ -+public: -+ // nsFileStreamBase override -+ NS_IMETHOD -+ Write(const char* aBuf, uint32_t aCount, uint32_t* _retval) MOZ_OVERRIDE; -+ -+protected: -+ FileQuotaStreamWithWrite(const nsACString& aOrigin) -+ : FileQuotaStream(aOrigin) -+ { } -+}; -+ -+class FileInputStream : public FileQuotaStream -+{ -+public: -+ NS_DECL_ISUPPORTS_INHERITED -+ -+ static already_AddRefed -+ Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1, -+ int32_t aPerm = -1, int32_t aBehaviorFlags = 0); -+ -+private: -+ FileInputStream(const nsACString& aOrigin) -+ : FileQuotaStream(aOrigin) -+ { } -+ -+ virtual ~FileInputStream() { -+ Close(); -+ } -+}; -+ -+class FileOutputStream : public FileQuotaStreamWithWrite -+{ -+public: -+ NS_DECL_ISUPPORTS_INHERITED -+ -+ static already_AddRefed -+ Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1, -+ int32_t aPerm = -1, int32_t aBehaviorFlags = 0); -+ -+private: -+ FileOutputStream(const nsACString& aOrigin) -+ : FileQuotaStreamWithWrite(aOrigin) -+ { } -+ -+ virtual ~FileOutputStream() { -+ Close(); -+ } -+}; -+ -+class FileStream : public FileQuotaStreamWithWrite -+{ -+public: -+ NS_DECL_ISUPPORTS_INHERITED -+ -+ static already_AddRefed -+ Create(const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1, -+ int32_t aPerm = -1, int32_t aBehaviorFlags = 0); -+ -+private: -+ FileStream(const nsACString& aOrigin) -+ : FileQuotaStreamWithWrite(aOrigin) -+ { } -+ -+ virtual ~FileStream() { -+ Close(); -+ } -+}; -+ -+END_QUOTA_NAMESPACE -+ -+#endif /* mozilla_dom_quota_filestreams_h__ */ -diff --git dom/quota/Makefile.in dom/quota/Makefile.in -new file mode 100644 -index 0000000..49be551 ---- /dev/null -+++ mozilla/dom/quota/Makefile.in -@@ -0,0 +1,33 @@ -+# 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/. -+ -+DEPTH = ../.. -+topsrcdir = @top_srcdir@ -+srcdir = @srcdir@ -+VPATH = @srcdir@ -+ -+include $(DEPTH)/config/autoconf.mk -+ -+MODULE = dom -+LIBRARY_NAME = domquota_s -+XPIDL_MODULE = dom_quota -+LIBXUL_LIBRARY = 1 -+FORCE_STATIC_LIB = 1 -+ -+include $(topsrcdir)/dom/dom-config.mk -+ -+EXPORTS_NAMESPACES = mozilla/dom/quota -+ -+CPPSRCS = \ -+ FileStreams.cpp \ -+ QuotaManager.cpp \ -+ $(NULL) -+ -+EXPORTS_mozilla/dom/quota = \ -+ FileStreams.h \ -+ QuotaCommon.h \ -+ QuotaManager.h \ -+ $(NULL) -+ -+include $(topsrcdir)/config/rules.mk -diff --git dom/quota/QuotaCommon.h dom/quota/QuotaCommon.h -new file mode 100644 -index 0000000..a415d17 ---- /dev/null -+++ mozilla/dom/quota/QuotaCommon.h -@@ -0,0 +1,23 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this file, -+ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef mozilla_dom_quota_quotacommon_h__ -+#define mozilla_dom_quota_quotacommon_h__ -+ -+#include "nsAutoPtr.h" -+#include "nsCOMPtr.h" -+#include "nsDebug.h" -+#include "nsStringGlue.h" -+#include "nsTArray.h" -+ -+#define BEGIN_QUOTA_NAMESPACE \ -+ namespace mozilla { namespace dom { namespace quota { -+#define END_QUOTA_NAMESPACE \ -+ } /* namespace quota */ } /* namespace dom */ } /* namespace mozilla */ -+#define USING_QUOTA_NAMESPACE \ -+ using namespace mozilla::dom::quota; -+ -+#endif // mozilla_dom_quota_quotacommon_h__ -diff --git dom/quota/QuotaManager.cpp dom/quota/QuotaManager.cpp -new file mode 100644 -index 0000000..b251606 ---- /dev/null -+++ mozilla/dom/quota/QuotaManager.cpp -@@ -0,0 +1,294 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this file, -+ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#include "QuotaManager.h" -+ -+#include "nsIFile.h" -+ -+#include "mozilla/ClearOnShutdown.h" -+#include "nsComponentManagerUtils.h" -+ -+#include "mozilla/dom/indexedDB/IndexedDatabaseManager.h" -+ -+USING_QUOTA_NAMESPACE -+ -+namespace { -+ -+nsAutoPtr gInstance; -+ -+PLDHashOperator -+RemoveQuotaForPatternCallback(const nsACString& aKey, -+ nsRefPtr& aValue, -+ void* aUserArg) -+{ -+ NS_ASSERTION(!aKey.IsEmpty(), "Empty key!"); -+ NS_ASSERTION(aValue, "Null pointer!"); -+ NS_ASSERTION(aUserArg, "Null pointer!"); -+ -+ const nsACString* pattern = -+ static_cast(aUserArg); -+ -+ if (StringBeginsWith(aKey, *pattern)) { -+ return PL_DHASH_REMOVE; -+ } -+ -+ return PL_DHASH_NEXT; -+} -+ -+} // anonymous namespace -+ -+void -+QuotaObject::AddRef() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ if (!quotaManager) { -+ NS_ERROR("Null quota manager, this shouldn't happen, possible leak!"); -+ -+ NS_AtomicIncrementRefcnt(mRefCnt); -+ -+ return; -+ } -+ -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ ++mRefCnt; -+} -+ -+void -+QuotaObject::Release() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ if (!quotaManager) { -+ NS_ERROR("Null quota manager, this shouldn't happen, possible leak!"); -+ -+ nsrefcnt count = NS_AtomicDecrementRefcnt(mRefCnt); -+ if (count == 0) { -+ mRefCnt = 1; -+ delete this; -+ } -+ -+ return; -+ } -+ -+ { -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ --mRefCnt; -+ -+ if (mRefCnt > 0) { -+ return; -+ } -+ -+ if (mOriginInfo) { -+ mOriginInfo->mQuotaObjects.Remove(mPath); -+ } -+ } -+ -+ delete this; -+} -+ -+void -+QuotaObject::UpdateSize(int64_t aSize) -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ if (mOriginInfo) { -+ mOriginInfo->mUsage -= mSize; -+ mSize = aSize; -+ mOriginInfo->mUsage += mSize; -+ } -+} -+ -+bool -+QuotaObject::MaybeAllocateMoreSpace(int64_t aOffset, int32_t aCount) -+{ -+ int64_t end = aOffset + aCount; -+ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ MutexAutoLock lock(quotaManager->mQuotaMutex); -+ -+ if (mSize >= end || !mOriginInfo) { -+ return true; -+ } -+ -+ int64_t newUsage = mOriginInfo->mUsage - mSize + end; -+ if (newUsage > mOriginInfo->mLimit) { -+ if (!indexedDB::IndexedDatabaseManager::QuotaIsLifted()) { -+ return false; -+ } -+ -+ nsCString origin = mOriginInfo->mOrigin; -+ -+ mOriginInfo->LockedClearOriginInfos(); -+ NS_ASSERTION(!mOriginInfo, -+ "Should have cleared in LockedClearOriginInfos!"); -+ -+ quotaManager->mOriginInfos.Remove(origin); -+ -+ mSize = end; -+ -+ return true; -+ } -+ -+ mOriginInfo->mUsage = newUsage; -+ mSize = end; -+ -+ return true; -+} -+ -+#ifdef DEBUG -+void -+OriginInfo::LockedClearOriginInfos() -+{ -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ NS_ASSERTION(quotaManager, "Shouldn't be null!"); -+ -+ quotaManager->mQuotaMutex.AssertCurrentThreadOwns(); -+ -+ mQuotaObjects.EnumerateRead(ClearOriginInfoCallback, nullptr); -+} -+#endif -+ -+// static -+PLDHashOperator -+OriginInfo::ClearOriginInfoCallback(const nsAString& aKey, -+ QuotaObject* aValue, -+ void* aUserArg) -+{ -+ NS_ASSERTION(!aKey.IsEmpty(), "Empty key!"); -+ NS_ASSERTION(aValue, "Null pointer!"); -+ -+ aValue->mOriginInfo = nullptr; -+ -+ return PL_DHASH_NEXT; -+} -+ -+// static -+QuotaManager* -+QuotaManager::GetOrCreate() -+{ -+ if (!gInstance) { -+ NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); -+ -+ gInstance = new QuotaManager(); -+ -+ ClearOnShutdown(&gInstance); -+ } -+ -+ return gInstance; -+} -+ -+// static -+QuotaManager* -+QuotaManager::Get() -+{ -+ // Does not return an owning reference. -+ return gInstance; -+} -+ -+void -+QuotaManager::InitQuotaForOrigin(const nsACString& aOrigin, -+ int64_t aLimit, -+ int64_t aUsage) -+{ -+ OriginInfo* info = new OriginInfo(aOrigin, aLimit * 1024 * 1024, aUsage); -+ -+ MutexAutoLock lock(mQuotaMutex); -+ -+ NS_ASSERTION(!mOriginInfos.GetWeak(aOrigin), "Replacing an existing entry!"); -+ mOriginInfos.Put(aOrigin, info); -+} -+ -+void -+QuotaManager::DecreaseUsageForOrigin(const nsACString& aOrigin, -+ int64_t aSize) -+{ -+ MutexAutoLock lock(mQuotaMutex); -+ -+ nsRefPtr originInfo; -+ mOriginInfos.Get(aOrigin, getter_AddRefs(originInfo)); -+ -+ if (originInfo) { -+ originInfo->mUsage -= aSize; -+ } -+} -+ -+void -+QuotaManager::RemoveQuotaForPattern(const nsACString& aPattern) -+{ -+ NS_ASSERTION(!aPattern.IsEmpty(), "Empty pattern!"); -+ -+ MutexAutoLock lock(mQuotaMutex); -+ -+ mOriginInfos.Enumerate(RemoveQuotaForPatternCallback, -+ const_cast(&aPattern)); -+} -+ -+already_AddRefed -+QuotaManager::GetQuotaObject(const nsACString& aOrigin, -+ nsIFile* aFile) -+{ -+ NS_ASSERTION(!NS_IsMainThread(), "Wrong thread!"); -+ -+ nsString path; -+ nsresult rv = aFile->GetPath(path); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ int64_t fileSize; -+ -+ bool exists; -+ rv = aFile->Exists(&exists); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ if (exists) { -+ rv = aFile->GetFileSize(&fileSize); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ } -+ else { -+ fileSize = 0; -+ } -+ -+ QuotaObject* info = nullptr; -+ { -+ MutexAutoLock lock(mQuotaMutex); -+ -+ nsRefPtr originInfo; -+ mOriginInfos.Get(aOrigin, getter_AddRefs(originInfo)); -+ -+ if (!originInfo) { -+ return nullptr; -+ } -+ -+ originInfo->mQuotaObjects.Get(path, &info); -+ -+ if (!info) { -+ info = new QuotaObject(originInfo, path, fileSize); -+ originInfo->mQuotaObjects.Put(path, info); -+ } -+ } -+ -+ nsRefPtr result = info; -+ return result.forget(); -+} -+ -+already_AddRefed -+QuotaManager::GetQuotaObject(const nsACString& aOrigin, -+ const nsAString& aPath) -+{ -+ nsresult rv; -+ nsCOMPtr file = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ rv = file->InitWithPath(aPath); -+ NS_ENSURE_SUCCESS(rv, nullptr); -+ -+ return GetQuotaObject(aOrigin, file); -+} -diff --git dom/quota/QuotaManager.h dom/quota/QuotaManager.h -new file mode 100644 -index 0000000..e19acdd ---- /dev/null -+++ mozilla/dom/quota/QuotaManager.h -@@ -0,0 +1,147 @@ -+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -+/* vim: set ts=2 et sw=2 tw=80: */ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this file, -+ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#ifndef mozilla_dom_quota_quotamanager_h__ -+#define mozilla_dom_quota_quotamanager_h__ -+ -+#include "QuotaCommon.h" -+ -+#include "mozilla/Mutex.h" -+#include "nsDataHashtable.h" -+#include "nsRefPtrHashtable.h" -+#include "nsThreadUtils.h" -+ -+BEGIN_QUOTA_NAMESPACE -+ -+class OriginInfo; -+class QuotaManager; -+ -+class QuotaObject -+{ -+ friend class OriginInfo; -+ friend class QuotaManager; -+ -+public: -+ void -+ AddRef(); -+ -+ void -+ Release(); -+ -+ void -+ UpdateSize(int64_t aSize); -+ -+ bool -+ MaybeAllocateMoreSpace(int64_t aOffset, int32_t aCount); -+ -+private: -+ QuotaObject(OriginInfo* aOriginInfo, const nsAString& aPath, int64_t aSize) -+ : mOriginInfo(aOriginInfo), mPath(aPath), mSize(aSize) -+ { } -+ -+ virtual ~QuotaObject() -+ { } -+ -+ nsAutoRefCnt mRefCnt; -+ -+ OriginInfo* mOriginInfo; -+ nsString mPath; -+ int64_t mSize; -+}; -+ -+class OriginInfo -+{ -+ friend class QuotaManager; -+ friend class QuotaObject; -+ -+public: -+ OriginInfo(const nsACString& aOrigin, int64_t aLimit, int64_t aUsage) -+ : mOrigin(aOrigin), mLimit(aLimit), mUsage(aUsage) -+ { -+ mQuotaObjects.Init(); -+ } -+ -+ NS_INLINE_DECL_THREADSAFE_REFCOUNTING(OriginInfo) -+ -+private: -+ void -+#ifdef DEBUG -+ LockedClearOriginInfos(); -+#else -+ LockedClearOriginInfos() -+ { -+ mQuotaObjects.EnumerateRead(ClearOriginInfoCallback, nullptr); -+ } -+#endif -+ -+ static PLDHashOperator -+ ClearOriginInfoCallback(const nsAString& aKey, -+ QuotaObject* aValue, void* aUserArg); -+ -+ nsDataHashtable mQuotaObjects; -+ -+ nsCString mOrigin; -+ int64_t mLimit; -+ int64_t mUsage; -+}; -+ -+class QuotaManager -+{ -+ friend class nsAutoPtr; -+ friend class OriginInfo; -+ friend class QuotaObject; -+ -+public: -+ // Returns a non-owning reference. -+ static QuotaManager* -+ GetOrCreate(); -+ -+ // Returns a non-owning reference. -+ static QuotaManager* -+ Get(); -+ -+ void -+ InitQuotaForOrigin(const nsACString& aOrigin, -+ int64_t aLimit, -+ int64_t aUsage); -+ -+ void -+ DecreaseUsageForOrigin(const nsACString& aOrigin, -+ int64_t aSize); -+ -+ void -+ RemoveQuotaForPattern(const nsACString& aPattern); -+ -+ already_AddRefed -+ GetQuotaObject(const nsACString& aOrigin, -+ nsIFile* aFile); -+ -+ already_AddRefed -+ GetQuotaObject(const nsACString& aOrigin, -+ const nsAString& aPath); -+ -+private: -+ QuotaManager() -+ : mQuotaMutex("QuotaManager.mQuotaMutex") -+ { -+ NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); -+ -+ mOriginInfos.Init(); -+ } -+ -+ virtual ~QuotaManager() -+ { -+ NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); -+ } -+ -+ mozilla::Mutex mQuotaMutex; -+ -+ nsRefPtrHashtable mOriginInfos; -+}; -+ -+END_QUOTA_NAMESPACE -+ -+#endif /* mozilla_dom_quota_quotamanager_h__ */ -diff --git layout/build/Makefile.in layout/build/Makefile.in -index e6b32da..496b55f 100644 ---- mozilla/layout/build/Makefile.in -+++ mozilla/layout/build/Makefile.in -@@ -69,6 +69,7 @@ SHARED_LIBRARY_LIBS = \ - $(DEPTH)/dom/encoding/$(LIB_PREFIX)domencoding_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/file/$(LIB_PREFIX)domfile_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/power/$(LIB_PREFIX)dom_power_s.$(LIB_SUFFIX) \ -+ $(DEPTH)/dom/quota/$(LIB_PREFIX)domquota_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/settings/$(LIB_PREFIX)jsdomsettings_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/permission/$(LIB_PREFIX)jsdompermissionsettings_s.$(LIB_SUFFIX) \ - $(DEPTH)/dom/network/src/$(LIB_PREFIX)dom_network_s.$(LIB_SUFFIX) \ -diff --git netwerk/base/src/Makefile.in netwerk/base/src/Makefile.in -index 0c0d60e..e8cef48 100644 ---- mozilla/netwerk/base/src/Makefile.in -+++ mozilla/netwerk/base/src/Makefile.in -@@ -19,6 +19,7 @@ LIBXUL_LIBRARY = 1 - EXPORTS = \ - nsMIMEInputStream.h \ - nsURLHelper.h \ -+ nsFileStreams.h \ - $(NULL) - - EXPORTS_NAMESPACES = mozilla/net -diff --git netwerk/base/src/nsFileStreams.cpp netwerk/base/src/nsFileStreams.cpp -index 2420ffc..ecc26aa 100644 ---- mozilla/netwerk/base/src/nsFileStreams.cpp -+++ mozilla/netwerk/base/src/nsFileStreams.cpp -@@ -51,7 +51,9 @@ nsFileStreamBase::~nsFileStreamBase() - Close(); - } - --NS_IMPL_THREADSAFE_ISUPPORTS1(nsFileStreamBase, nsISeekableStream) -+NS_IMPL_THREADSAFE_ISUPPORTS2(nsFileStreamBase, -+ nsISeekableStream, -+ nsIFileMetadata) - - NS_IMETHODIMP - nsFileStreamBase::Seek(int32_t whence, int64_t offset) -@@ -124,6 +126,52 @@ nsFileStreamBase::SetEOF() - return NS_OK; - } - -+NS_IMETHODIMP -+nsFileStreamBase::GetSize(int64_t* _retval) -+{ -+ nsresult rv = DoPendingOpen(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (!mFD) { -+ return NS_BASE_STREAM_CLOSED; -+ } -+ -+ PRFileInfo64 info; -+ if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -+ return NS_BASE_STREAM_OSERROR; -+ } -+ -+ *_retval = int64_t(info.size); -+ -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+nsFileStreamBase::GetLastModified(int64_t* _retval) -+{ -+ nsresult rv = DoPendingOpen(); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ if (!mFD) { -+ return NS_BASE_STREAM_CLOSED; -+ } -+ -+ PRFileInfo64 info; -+ if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -+ return NS_BASE_STREAM_OSERROR; -+ } -+ -+ int64_t modTime = int64_t(info.modifyTime); -+ if (modTime == 0) { -+ *_retval = 0; -+ } -+ else { -+ *_retval = modTime / int64_t(PR_USEC_PER_MSEC); -+ } -+ -+ return NS_OK; -+} -+ - nsresult - nsFileStreamBase::Close() - { -@@ -934,13 +982,12 @@ nsSafeFileOutputStream::Write(const char *buf, uint32_t count, uint32_t *result) - //////////////////////////////////////////////////////////////////////////////// - // nsFileStream - --NS_IMPL_ISUPPORTS_INHERITED4(nsFileStream, -+NS_IMPL_ISUPPORTS_INHERITED3(nsFileStream, - nsFileStreamBase, - nsIInputStream, - nsIOutputStream, -- nsIFileStream, -- nsIFileMetadata) -- -+ nsIFileStream) -+ - NS_IMETHODIMP - nsFileStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm, - int32_t behaviorFlags) -@@ -959,50 +1006,4 @@ nsFileStream::Init(nsIFile* file, int32_t ioFlags, int32_t perm, - mBehaviorFlags & nsIFileStream::DEFER_OPEN); - } - --NS_IMETHODIMP --nsFileStream::GetSize(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mFD) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- PRFileInfo64 info; -- if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- *_retval = int64_t(info.size); -- -- return NS_OK; --} -- --NS_IMETHODIMP --nsFileStream::GetLastModified(int64_t* _retval) --{ -- nsresult rv = DoPendingOpen(); -- NS_ENSURE_SUCCESS(rv, rv); -- -- if (!mFD) { -- return NS_BASE_STREAM_CLOSED; -- } -- -- PRFileInfo64 info; -- if (PR_GetOpenFileInfo64(mFD, &info) == PR_FAILURE) { -- return NS_BASE_STREAM_OSERROR; -- } -- -- int64_t modTime = int64_t(info.modifyTime); -- if (modTime == 0) { -- *_retval = 0; -- } -- else { -- *_retval = modTime / int64_t(PR_USEC_PER_MSEC); -- } -- -- return NS_OK; --} -- - //////////////////////////////////////////////////////////////////////////////// -diff --git netwerk/base/src/nsFileStreams.h netwerk/base/src/nsFileStreams.h -index 13e5b45..1aa6a82 100644 ---- mozilla/netwerk/base/src/nsFileStreams.h -+++ mozilla/netwerk/base/src/nsFileStreams.h -@@ -24,11 +24,13 @@ - - //////////////////////////////////////////////////////////////////////////////// - --class nsFileStreamBase : public nsISeekableStream -+class nsFileStreamBase : public nsISeekableStream, -+ public nsIFileMetadata - { - public: - NS_DECL_ISUPPORTS - NS_DECL_NSISEEKABLESTREAM -+ NS_DECL_NSIFILEMETADATA - - nsFileStreamBase(); - virtual ~nsFileStreamBase(); -@@ -124,8 +126,8 @@ public: - NS_IMETHOD IsNonBlocking(bool* _retval) - { - return nsFileStreamBase::IsNonBlocking(_retval); -- } -- -+ } -+ - // Overrided from nsFileStreamBase - NS_IMETHOD Seek(int32_t aWhence, int64_t aOffset); - -@@ -260,13 +262,11 @@ protected: - class nsFileStream : public nsFileStreamBase, - public nsIInputStream, - public nsIOutputStream, -- public nsIFileStream, -- public nsIFileMetadata -+ public nsIFileStream - { - public: - NS_DECL_ISUPPORTS_INHERITED - NS_DECL_NSIFILESTREAM -- NS_DECL_NSIFILEMETADATA - NS_FORWARD_NSIINPUTSTREAM(nsFileStreamBase::) - - // Can't use NS_FORWARD_NSIOUTPUTSTREAM due to overlapping methods -diff --git storage/public/Makefile.in storage/public/Makefile.in -index c485d4e..c05e6f3 100644 ---- mozilla/storage/public/Makefile.in -+++ mozilla/storage/public/Makefile.in -@@ -36,7 +36,6 @@ XPIDLSRCS = \ - mozIStorageCompletionCallback.idl \ - mozIStorageBaseStatement.idl \ - mozIStorageAsyncStatement.idl \ -- mozIStorageServiceQuotaManagement.idl \ - mozIStorageVacuumParticipant.idl \ - $(NULL) - # SEE ABOVE NOTE! -diff --git storage/public/mozIStorageService.idl storage/public/mozIStorageService.idl -index 3087a11..483649b 100644 ---- mozilla/storage/public/mozIStorageService.idl -+++ mozilla/storage/public/mozIStorageService.idl -@@ -7,6 +7,7 @@ - - interface mozIStorageConnection; - interface nsIFile; -+interface nsIFileURL; - - /** - * The mozIStorageService interface is intended to be implemented by -@@ -15,7 +16,7 @@ interface nsIFile; - * - * This is the only way to open a database connection. - */ --[scriptable, uuid(fe8e95cb-b377-4c8d-bccb-d9198c67542b)] -+[scriptable, uuid(12bfad34-cca3-40fb-8736-d8bf9db61a27)] - interface mozIStorageService : nsISupports { - /** - * Get a connection to a named special database storage. -@@ -106,6 +107,16 @@ interface mozIStorageService : nsISupports { - */ - mozIStorageConnection openUnsharedDatabase(in nsIFile aDatabaseFile); - -+ /** -+ * See openDatabase(). Exactly the same only initialized with a file URL. -+ * Custom parameters can be passed to SQLite and VFS implementations through -+ * the query part of the URL. -+ * -+ * @param aURL -+ * A nsIFileURL that represents the database that is to be opened. -+ */ -+ mozIStorageConnection openDatabaseWithFileURL(in nsIFileURL aFileURL); -+ - /* - * Utilities - */ -diff --git storage/public/mozIStorageServiceQuotaManagement.idl storage/public/mozIStorageServiceQuotaManagement.idl -deleted file mode 100644 -index ee5086b..0000000 ---- mozilla/storage/public/mozIStorageServiceQuotaManagement.idl -+++ /dev/null -@@ -1,99 +0,0 @@ --/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ --/* vim: set ts=2 et sw=2 tw=80: */ --/* This Source Code Form is subject to the terms of the Mozilla Public -- * License, v. 2.0. If a copy of the MPL was not distributed with this -- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -- --#include "nsISupports.idl" -- --interface mozIStorageConnection; --interface nsIFile; -- --[scriptable, function, uuid(ae94f0a5-ebdf-48f4-9959-085e13235d8d)] --interface mozIStorageQuotaCallback : nsISupports --{ -- /** -- * Called when the file size quota for a group of databases is exceeded. -- * -- * @param aFilename -- * The filename of the database that has exceeded the quota. -- * -- * @param aCurrentSizeLimit -- * The current size (in bytes) of the quota. -- * -- * @param aCurrentTotalSize -- * The current size of all databases in the quota group. -- * -- * @param aUserData -- * Any additional data that was provided to the -- * setQuotaForFilenamePattern function. -- * -- * @returns A new quota size. A new quota of 0 will disable the quota callback -- * and any quota value less than aCurrentTotalSize will cause the -- * database operation to fail with NS_ERROR_FILE_NO_DEVICE_SPACE. -- */ -- long long quotaExceeded(in ACString aFilename, -- in long long aCurrentSizeLimit, -- in long long aCurrentTotalSize, -- in nsISupports aUserData); --}; -- --/** -- * This is a temporary interface that should eventually merge with -- * mozIStorageService. -- */ --[scriptable, uuid(4d81faf5-fe01-428b-99b8-c94cba12fd72)] --interface mozIStorageServiceQuotaManagement : nsISupports --{ -- /** -- * See mozIStorageService.openDatabase. Exactly the same only with a custom -- * SQLite VFS. -- */ -- mozIStorageConnection openDatabaseWithVFS(in nsIFile aDatabaseFile, -- in ACString aVFSName); -- -- /** -- * Set a file size quota for a group of databases matching the given filename -- * pattern, optionally specifying a callback when the quota is exceeded. -- * -- * @param aPattern -- * A pattern to match filenames for inclusion in the quota system. May -- * contain the following special characters: -- * '*' Matches any sequence of zero or more characters. -- * '?' Matches exactly one character. -- * [...] Matches one character from the enclosed list of characters. -- * [^...] Matches one character not in the enclosed list. -- * -- * @param aSizeLimit -- * The size limit (in bytes) for the quota group. -- * -- * @param aCallback -- * A callback that will be used when the quota is exceeded. -- * -- * @param aUserData -- * Additional information to be passed to the callback. -- */ -- void setQuotaForFilenamePattern(in ACString aPattern, -- in long long aSizeLimit, -- in mozIStorageQuotaCallback aCallback, -- in nsISupports aUserData); -- -- /** -- * Adds, removes, or updates the file size information maintained by the quota -- * system for files not opened through openDatabaseWithVFS(). -- * -- * Use this function when you want files to be included in quota calculations -- * that are either a) not SQLite databases, or b) SQLite databases that have -- * not been opened. -- * -- * This function will have no effect on files that do not match an existing -- * quota pattern (set previously by setQuotaForFilenamePattern()). -- * -- * @param aFile -- * The file for which quota information should be updated. If the file -- * exists then its size information will be added or refreshed. If the -- * file does not exist then the file will be removed from tracking -- * under the quota system. -- */ -- void updateQuotaInformationForFile(in nsIFile aFile); --}; -diff --git storage/public/storage.h storage/public/storage.h -index 8e571e2..08f39f3 100644 ---- mozilla/storage/public/storage.h -+++ mozilla/storage/public/storage.h -@@ -24,7 +24,6 @@ - #include "mozIStorageStatementCallback.h" - #include "mozIStorageBindingParamsArray.h" - #include "mozIStorageBindingParams.h" --#include "mozIStorageServiceQuotaManagement.h" - #include "mozIStorageVacuumParticipant.h" - #include "mozIStorageCompletionCallback.h" - #include "mozIStorageAsyncStatement.h" -diff --git storage/src/TelemetryVFS.cpp storage/src/TelemetryVFS.cpp -index 60de5c4..e4fce09 100644 ---- mozilla/storage/src/TelemetryVFS.cpp -+++ mozilla/storage/src/TelemetryVFS.cpp -@@ -10,6 +10,7 @@ - #include "sqlite3.h" - #include "nsThreadUtils.h" - #include "mozilla/Util.h" -+#include "mozilla/dom/quota/QuotaManager.h" - - /** - * This preference is a workaround to allow users/sysadmins to identify -@@ -24,6 +25,7 @@ - namespace { - - using namespace mozilla; -+using namespace mozilla::dom::quota; - - struct Histograms { - const char *name; -@@ -82,9 +84,17 @@ private: - }; - - struct telemetry_file { -- sqlite3_file base; // Base class. Must be first -- Histograms *histograms; // histograms pertaining to this file -- sqlite3_file pReal[1]; // This contains the vfs that actually does work -+ // Base class. Must be first -+ sqlite3_file base; -+ -+ // histograms pertaining to this file -+ Histograms *histograms; -+ -+ // quota object for this file -+ nsRefPtr quotaObject; -+ -+ // This contains the vfs that actually does work -+ sqlite3_file pReal[1]; - }; - - /* -@@ -99,6 +109,7 @@ xClose(sqlite3_file *pFile) - if( rc==SQLITE_OK ){ - delete p->base.pMethods; - p->base.pMethods = NULL; -+ p->quotaObject = nullptr; - } - return rc; - } -@@ -126,6 +137,9 @@ int - xWrite(sqlite3_file *pFile, const void *zBuf, int iAmt, sqlite_int64 iOfst) - { - telemetry_file *p = (telemetry_file *)pFile; -+ if (p->quotaObject && !p->quotaObject->MaybeAllocateMoreSpace(iOfst, iAmt)) { -+ return SQLITE_FULL; -+ } - IOThreadAutoTimer ioTimer(p->histograms->writeMS); - int rc; - rc = p->pReal->pMethods->xWrite(p->pReal, zBuf, iAmt, iOfst); -@@ -144,6 +158,9 @@ xTruncate(sqlite3_file *pFile, sqlite_int64 size) - int rc; - Telemetry::AutoTimer timer; - rc = p->pReal->pMethods->xTruncate(p->pReal, size); -+ if (rc == SQLITE_OK && p->quotaObject) { -+ p->quotaObject->UpdateSize(size); -+ } - return rc; - } - -@@ -300,6 +317,18 @@ xOpen(sqlite3_vfs* vfs, const char *zName, sqlite3_file* pFile, - break; - } - p->histograms = h; -+ -+ const char* origin; -+ if ((flags & SQLITE_OPEN_URI) && -+ (origin = sqlite3_uri_parameter(zName, "origin"))) { -+ QuotaManager* quotaManager = QuotaManager::Get(); -+ MOZ_ASSERT(quotaManager); -+ -+ p->quotaObject = quotaManager->GetQuotaObject(nsDependentCString(origin), -+ NS_ConvertUTF8toUTF16(zName)); -+ -+ } -+ - rc = orig_vfs->xOpen(orig_vfs, zName, p->pReal, flags, pOutFlags); - if( rc != SQLITE_OK ) - return rc; -diff --git storage/src/mozStorageConnection.cpp storage/src/mozStorageConnection.cpp -index 3afd3e1b..430824a 100644 ---- mozilla/storage/src/mozStorageConnection.cpp -+++ mozilla/storage/src/mozStorageConnection.cpp -@@ -12,6 +12,7 @@ - #include "nsIMemoryReporter.h" - #include "nsThreadUtils.h" - #include "nsIFile.h" -+#include "nsIFileURL.h" - #include "mozilla/Telemetry.h" - #include "mozilla/Mutex.h" - #include "mozilla/CondVar.h" -@@ -471,34 +472,83 @@ Connection::getAsyncExecutionTarget() - } - - nsresult --Connection::initialize(nsIFile *aDatabaseFile, -- const char* aVFSName) -+Connection::initialize() - { - NS_ASSERTION (!mDBConn, "Initialize called on already opened database!"); - SAMPLE_LABEL("storage", "Connection::initialize"); - -- int srv; -- nsresult rv; -+ // in memory database requested, sqlite uses a magic file name -+ int srv = ::sqlite3_open_v2(":memory:", &mDBConn, mFlags, NULL); -+ if (srv != SQLITE_OK) { -+ mDBConn = nullptr; -+ return convertResultCode(srv); -+ } -+ -+ return initializeInternal(nullptr); -+} -+ -+nsresult -+Connection::initialize(nsIFile *aDatabaseFile) -+{ -+ NS_ASSERTION (aDatabaseFile, "Passed null file!"); -+ NS_ASSERTION (!mDBConn, "Initialize called on already opened database!"); -+ SAMPLE_LABEL("storage", "Connection::initialize"); - - mDatabaseFile = aDatabaseFile; - -- if (aDatabaseFile) { -- nsAutoString path; -- rv = aDatabaseFile->GetPath(path); -- NS_ENSURE_SUCCESS(rv, rv); -+ nsAutoString path; -+ nsresult rv = aDatabaseFile->GetPath(path); -+ NS_ENSURE_SUCCESS(rv, rv); - -- srv = ::sqlite3_open_v2(NS_ConvertUTF16toUTF8(path).get(), &mDBConn, mFlags, -- aVFSName); -- } -- else { -- // in memory database requested, sqlite uses a magic file name -- srv = ::sqlite3_open_v2(":memory:", &mDBConn, mFlags, aVFSName); -+ int srv = ::sqlite3_open_v2(NS_ConvertUTF16toUTF8(path).get(), &mDBConn, -+ mFlags, NULL); -+ if (srv != SQLITE_OK) { -+ mDBConn = nullptr; -+ return convertResultCode(srv); - } -+ -+ rv = initializeInternal(aDatabaseFile); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mDatabaseFile = aDatabaseFile; -+ -+ return NS_OK; -+} -+ -+nsresult -+Connection::initialize(nsIFileURL *aFileURL) -+{ -+ NS_ASSERTION (aFileURL, "Passed null file URL!"); -+ NS_ASSERTION (!mDBConn, "Initialize called on already opened database!"); -+ SAMPLE_LABEL("storage", "Connection::initialize"); -+ -+ nsCOMPtr databaseFile; -+ nsresult rv = aFileURL->GetFile(getter_AddRefs(databaseFile)); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ nsAutoCString spec; -+ rv = aFileURL->GetSpec(spec); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ int srv = ::sqlite3_open_v2(spec.get(), &mDBConn, mFlags, NULL); - if (srv != SQLITE_OK) { - mDBConn = nullptr; - return convertResultCode(srv); - } - -+ rv = initializeInternal(databaseFile); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ mFileURL = aFileURL; -+ mDatabaseFile = databaseFile; -+ -+ return NS_OK; -+} -+ -+ -+nsresult -+Connection::initializeInternal(nsIFile* aDatabaseFile) -+{ - // Properly wrap the database handle's mutex. - sharedDBMutex.initWithMutex(sqlite3_db_mutex(mDBConn)); - -@@ -522,14 +572,14 @@ Connection::initialize(nsIFile *aDatabaseFile, - nsAutoCString pageSizeQuery(MOZ_STORAGE_UNIQUIFY_QUERY_STR - "PRAGMA page_size = "); - pageSizeQuery.AppendInt(pageSize); -- rv = ExecuteSimpleSQL(pageSizeQuery); -+ nsresult rv = ExecuteSimpleSQL(pageSizeQuery); - NS_ENSURE_SUCCESS(rv, rv); - - // Get the current page_size, since it may differ from the specified value. - sqlite3_stmt *stmt; - NS_NAMED_LITERAL_CSTRING(pragma_page_size, - MOZ_STORAGE_UNIQUIFY_QUERY_STR "PRAGMA page_size"); -- srv = prepareStatement(pragma_page_size, &stmt); -+ int srv = prepareStatement(pragma_page_size, &stmt); - if (srv == SQLITE_OK) { - if (SQLITE_ROW == stepStatement(stmt)) { - pageSize = ::sqlite3_column_int64(stmt, 0); -@@ -962,7 +1012,8 @@ Connection::Clone(bool aReadOnly, - nsRefPtr clone = new Connection(mStorageService, flags); - NS_ENSURE_TRUE(clone, NS_ERROR_OUT_OF_MEMORY); - -- nsresult rv = clone->initialize(mDatabaseFile); -+ nsresult rv = mFileURL ? clone->initialize(mFileURL) -+ : clone->initialize(mDatabaseFile); - NS_ENSURE_SUCCESS(rv, rv); - - // Copy over pragmas from the original connection. -diff --git storage/src/mozStorageConnection.h storage/src/mozStorageConnection.h -index b71f5db..97f5cf8 100644 ---- mozilla/storage/src/mozStorageConnection.h -+++ mozilla/storage/src/mozStorageConnection.h -@@ -25,6 +25,7 @@ - - struct PRLock; - class nsIFile; -+class nsIFileURL; - class nsIEventTarget; - class nsIThread; - -@@ -63,18 +64,27 @@ public: - Connection(Service *aService, int aFlags); - - /** -+ * Creates the connection to an in-memory database. -+ */ -+ nsresult initialize(); -+ -+ /** - * Creates the connection to the database. - * - * @param aDatabaseFile - * The nsIFile of the location of the database to open, or create if it -- * does not exist. Passing in nullptr here creates an in-memory -- * database. -- * @param aVFSName -- * The VFS that SQLite will use when opening this database. NULL means -- * "default". -+ * does not exist. - */ -- nsresult initialize(nsIFile *aDatabaseFile, -- const char* aVFSName = NULL); -+ nsresult initialize(nsIFile *aDatabaseFile); -+ -+ /** -+ * Creates the connection to the database. -+ * -+ * @param aFileURL -+ * The nsIFileURL of the location of the database to open, or create if it -+ * does not exist. -+ */ -+ nsresult initialize(nsIFileURL *aFileURL); - - // fetch the native handle - sqlite3 *GetNativeConnection() { return mDBConn; } -@@ -155,6 +165,8 @@ public: - private: - ~Connection(); - -+ nsresult initializeInternal(nsIFile *aDatabaseFile); -+ - /** - * Sets the database into a closed state so no further actions can be - * performed. -@@ -206,6 +218,7 @@ private: - int progressHandler(); - - sqlite3 *mDBConn; -+ nsCOMPtr mFileURL; - nsCOMPtr mDatabaseFile; - - /** -diff --git storage/src/mozStorageService.cpp storage/src/mozStorageService.cpp -index 00661d6..862a7da 100644 ---- mozilla/storage/src/mozStorageService.cpp -+++ mozilla/storage/src/mozStorageService.cpp -@@ -24,8 +24,6 @@ - #include "mozilla/Preferences.h" - - #include "sqlite3.h" --#include "test_quota.h" --#include "test_quota.c" - - #ifdef SQLITE_OS_WIN - // "windows.h" was included and it can #define lots of things we care about... -@@ -35,61 +33,6 @@ - #include "nsIPromptService.h" - #include "nsIMemoryReporter.h" - --namespace { -- --class QuotaCallbackData --{ --public: -- QuotaCallbackData(mozIStorageQuotaCallback *aCallback, -- nsISupports *aUserData) -- : callback(aCallback), userData(aUserData) -- { -- MOZ_COUNT_CTOR(QuotaCallbackData); -- } -- -- ~QuotaCallbackData() -- { -- MOZ_COUNT_DTOR(QuotaCallbackData); -- } -- -- static void Callback(const char *zFilename, -- sqlite3_int64 *piLimit, -- sqlite3_int64 iSize, -- void *pArg) -- { -- NS_ASSERTION(zFilename && strlen(zFilename), "Null or empty filename!"); -- NS_ASSERTION(piLimit, "Null pointer!"); -- -- QuotaCallbackData *data = static_cast(pArg); -- if (!data) { -- // No callback specified, return immediately. -- return; -- } -- -- NS_ASSERTION(data->callback, "Should never have a null callback!"); -- -- nsDependentCString filename(zFilename); -- -- int64_t newLimit; -- if (NS_SUCCEEDED(data->callback->QuotaExceeded(filename, *piLimit, -- iSize, data->userData, -- &newLimit))) { -- *piLimit = newLimit; -- } -- } -- -- static void Destroy(void *aUserData) -- { -- delete static_cast(aUserData); -- } -- --private: -- nsCOMPtr callback; -- nsCOMPtr userData; --}; -- --} // anonymous namespace -- - //////////////////////////////////////////////////////////////////////////////// - //// Defines - -@@ -345,11 +288,10 @@ private: - //////////////////////////////////////////////////////////////////////////////// - //// Service - --NS_IMPL_THREADSAFE_ISUPPORTS3( -+NS_IMPL_THREADSAFE_ISUPPORTS2( - Service, - mozIStorageService, -- nsIObserver, -- mozIStorageServiceQuotaManagement -+ nsIObserver - ) - - Service *Service::gService = nullptr; -@@ -438,10 +380,6 @@ Service::~Service() - - // Shutdown the sqlite3 API. Warn if shutdown did not turn out okay, but - // there is nothing actionable we can do in that case. -- rc = ::sqlite3_quota_shutdown(); -- if (rc != SQLITE_OK) -- NS_WARNING("sqlite3 did not shutdown cleanly."); -- - rc = ::sqlite3_shutdown(); - if (rc != SQLITE_OK) - NS_WARNING("sqlite3 did not shutdown cleanly."); -@@ -636,9 +574,6 @@ Service::initialize() - } else { - NS_WARNING("Failed to register telemetry VFS"); - } -- rc = ::sqlite3_quota_initialize("telemetry-vfs", 0); -- if (rc != SQLITE_OK) -- return convertResultCode(rc); - - // Set the default value for the toolkit.storage.synchronous pref. It will be - // updated with the user preference on the main thread. -@@ -739,28 +674,24 @@ Service::OpenSpecialDatabase(const char *aStorageKey, - // connection to use a memory DB. - } - else if (::strcmp(aStorageKey, "profile") == 0) { -- - rv = NS_GetSpecialDirectory(NS_APP_STORAGE_50_FILE, - getter_AddRefs(storageFile)); - NS_ENSURE_SUCCESS(rv, rv); - -- nsString filename; -- storageFile->GetPath(filename); -- nsCString filename8 = NS_ConvertUTF16toUTF8(filename.get()); - // fall through to DB initialization - } - else { - return NS_ERROR_INVALID_ARG; - } - -- Connection *msc = new Connection(this, SQLITE_OPEN_READWRITE); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); -+ nsRefPtr msc = new Connection(this, SQLITE_OPEN_READWRITE); - -- rv = msc->initialize(storageFile); -+ rv = storageFile ? msc->initialize(storageFile) : msc->initialize(); - NS_ENSURE_SUCCESS(rv, rv); - -- NS_ADDREF(*_connection = msc); -+ msc.forget(_connection); - return NS_OK; -+ - } - - NS_IMETHODIMP -@@ -774,12 +705,11 @@ Service::OpenDatabase(nsIFile *aDatabaseFile, - int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | - SQLITE_OPEN_CREATE; - nsRefPtr msc = new Connection(this, flags); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); - - nsresult rv = msc->initialize(aDatabaseFile); - NS_ENSURE_SUCCESS(rv, rv); - -- NS_ADDREF(*_connection = msc); -+ msc.forget(_connection); - return NS_OK; - } - -@@ -794,12 +724,30 @@ Service::OpenUnsharedDatabase(nsIFile *aDatabaseFile, - int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_PRIVATECACHE | - SQLITE_OPEN_CREATE; - nsRefPtr msc = new Connection(this, flags); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); - - nsresult rv = msc->initialize(aDatabaseFile); - NS_ENSURE_SUCCESS(rv, rv); - -- NS_ADDREF(*_connection = msc); -+ msc.forget(_connection); -+ return NS_OK; -+} -+ -+NS_IMETHODIMP -+Service::OpenDatabaseWithFileURL(nsIFileURL *aFileURL, -+ mozIStorageConnection **_connection) -+{ -+ NS_ENSURE_ARG(aFileURL); -+ -+ // Always ensure that SQLITE_OPEN_CREATE is passed in for compatibility -+ // reasons. -+ int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | -+ SQLITE_OPEN_CREATE | SQLITE_OPEN_URI; -+ nsRefPtr msc = new Connection(this, flags); -+ -+ nsresult rv = msc->initialize(aFileURL); -+ NS_ENSURE_SUCCESS(rv, rv); -+ -+ msc.forget(_connection); - return NS_OK; - } - -@@ -885,67 +833,5 @@ Service::Observe(nsISupports *, const char *aTopic, const PRUnichar *) - return NS_OK; - } - --//////////////////////////////////////////////////////////////////////////////// --//// mozIStorageServiceQuotaManagement -- --NS_IMETHODIMP --Service::OpenDatabaseWithVFS(nsIFile *aDatabaseFile, -- const nsACString &aVFSName, -- mozIStorageConnection **_connection) --{ -- NS_ENSURE_ARG(aDatabaseFile); -- -- // Always ensure that SQLITE_OPEN_CREATE is passed in for compatibility -- // reasons. -- int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | -- SQLITE_OPEN_CREATE; -- nsRefPtr msc = new Connection(this, flags); -- NS_ENSURE_TRUE(msc, NS_ERROR_OUT_OF_MEMORY); -- -- nsresult rv = msc->initialize(aDatabaseFile, -- PromiseFlatCString(aVFSName).get()); -- NS_ENSURE_SUCCESS(rv, rv); -- -- NS_ADDREF(*_connection = msc); -- return NS_OK; --} -- --NS_IMETHODIMP --Service::SetQuotaForFilenamePattern(const nsACString &aPattern, -- int64_t aSizeLimit, -- mozIStorageQuotaCallback *aCallback, -- nsISupports *aUserData) --{ -- NS_ENSURE_FALSE(aPattern.IsEmpty(), NS_ERROR_INVALID_ARG); -- -- nsAutoPtr data; -- if (aSizeLimit && aCallback) { -- data = new QuotaCallbackData(aCallback, aUserData); -- } -- -- int rc = ::sqlite3_quota_set(PromiseFlatCString(aPattern).get(), -- aSizeLimit, QuotaCallbackData::Callback, -- data, QuotaCallbackData::Destroy); -- NS_ENSURE_TRUE(rc == SQLITE_OK, convertResultCode(rc)); -- -- data.forget(); -- return NS_OK; --} -- --NS_IMETHODIMP --Service::UpdateQuotaInformationForFile(nsIFile *aFile) --{ -- NS_ENSURE_ARG_POINTER(aFile); -- -- nsString path; -- nsresult rv = aFile->GetPath(path); -- NS_ENSURE_SUCCESS(rv, rv); -- -- int rc = ::sqlite3_quota_file(NS_ConvertUTF16toUTF8(path).get()); -- NS_ENSURE_TRUE(rc == SQLITE_OK, convertResultCode(rc)); -- -- return NS_OK; --} -- - } // namespace storage - } // namespace mozilla -diff --git storage/src/mozStorageService.h storage/src/mozStorageService.h -index 21c1ff8..3f5a546 100644 ---- mozilla/storage/src/mozStorageService.h -+++ mozilla/storage/src/mozStorageService.h -@@ -15,7 +15,6 @@ - #include "mozilla/Mutex.h" - - #include "mozIStorageService.h" --#include "mozIStorageServiceQuotaManagement.h" - - class nsIMemoryReporter; - class nsIMemoryMultiReporter; -@@ -28,7 +27,6 @@ namespace storage { - class Connection; - class Service : public mozIStorageService - , public nsIObserver -- , public mozIStorageServiceQuotaManagement - { - public: - /** -@@ -58,7 +56,6 @@ public: - NS_DECL_ISUPPORTS - NS_DECL_MOZISTORAGESERVICE - NS_DECL_NSIOBSERVER -- NS_DECL_MOZISTORAGESERVICEQUOTAMANAGEMENT - - /** - * Obtains an already AddRefed pointer to XPConnect. This is used by -diff --git toolkit/toolkit-makefiles.sh toolkit/toolkit-makefiles.sh -index 6a7d714..8f1bbe0 100644 ---- mozilla/toolkit/toolkit-makefiles.sh -+++ mozilla/toolkit/toolkit-makefiles.sh -@@ -68,6 +68,7 @@ MAKEFILES_dom=" - dom/plugins/base/Makefile - dom/plugins/ipc/Makefile - dom/power/Makefile -+ dom/quota/Makefile - dom/settings/Makefile - dom/sms/Makefile - dom/sms/interfaces/Makefile Index: www/seamonkey/files/patch-bug803480 =================================================================== --- www/seamonkey/files/patch-bug803480 (revision 0) +++ www/seamonkey/files/patch-bug803480 (working copy) @@ -0,0 +1,82 @@ +diff --git configure.in configure.in +index fa283d0..936b6e0 100644 +--- configure.in ++++ configure.in +@@ -8229,16 +8229,26 @@ MOZ_ARG_DISABLE_BOOL(necko-wifi, + NECKO_WIFI=, + NECKO_WIFI=1) + +-if test "$OS_ARCH" = "OS2"; then +- dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566 +- NECKO_WIFI= +-fi +-if test "$NECKO_WIFI" -a \ +- "$OS_ARCH" != "Linux" -a \ +- "$OS_ARCH" != "Darwin" -a \ +- "$OS_ARCH" != "SunOS" -a \ +- "$OS_ARCH" != "WINNT"; then +- AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi]) ++if test "$NECKO_WIFI"; then ++ case "$OS_TARGET" in ++ Android) ++ ;; ++ Darwin) ++ ;; ++ SunOS) ++ ;; ++ WINNT) ++ ;; ++ OS2) ++ dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566 ++ NECKO_WIFI= ++ ;; ++ *) ++ if test -z "$MOZ_ENABLE_DBUS"; then ++ AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi]) ++ fi ++ ;; ++ esac + fi + + if test "$NECKO_WIFI"; then +diff --git configure.in configure.in +index fa283d0..936b6e0 100644 +--- mozilla/configure.in ++++ mozilla/configure.in +@@ -8229,16 +8229,26 @@ MOZ_ARG_DISABLE_BOOL(necko-wifi, + NECKO_WIFI=, + NECKO_WIFI=1) + +-if test "$OS_ARCH" = "OS2"; then +- dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566 +- NECKO_WIFI= +-fi +-if test "$NECKO_WIFI" -a \ +- "$OS_ARCH" != "Linux" -a \ +- "$OS_ARCH" != "Darwin" -a \ +- "$OS_ARCH" != "SunOS" -a \ +- "$OS_ARCH" != "WINNT"; then +- AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi]) ++if test "$NECKO_WIFI"; then ++ case "$OS_TARGET" in ++ Android) ++ ;; ++ Darwin) ++ ;; ++ SunOS) ++ ;; ++ WINNT) ++ ;; ++ OS2) ++ dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566 ++ NECKO_WIFI= ++ ;; ++ *) ++ if test -z "$MOZ_ENABLE_DBUS"; then ++ AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi]) ++ fi ++ ;; ++ esac + fi + + if test "$NECKO_WIFI"; then Property changes on: www/seamonkey/files/patch-bug803480 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/seamonkey/files/patch-bug807492 =================================================================== --- www/seamonkey/files/patch-bug807492 (revision 315699) +++ www/seamonkey/files/patch-bug807492 (working copy) @@ -2,7 +2,7 @@ index 9bd1efa..1095a01 100644 --- mozilla/config/system-headers +++ mozilla/config/system-headers -@@ -1066,8 +1066,10 @@ gst/app/gstappsink.h +@@ -1121,8 +1121,10 @@ gst/app/gstappsink.h gst/app/gstappsrc.h gst/video/video.h sys/msg.h @@ -17,7 +17,7 @@ index c167461..8346c11 100644 --- mozilla/configure.in +++ mozilla/configure.in -@@ -1413,16 +1413,27 @@ if test "$GNU_CC"; then +@@ -1449,16 +1449,27 @@ if test "$GNU_CC"; then _SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -mssse3" AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes]) @@ -45,7 +45,7 @@ # -Werror=return-type - catches missing returns, zero false positives # -Wtype-limits - catches overflow bugs, few false positives # -Wempty-body - catches bugs, e.g. "if (c); foo();", few false positives -@@ -5232,17 +5243,17 @@ dnl Turn off webrtc for OS's we don't handle yet, but allow +@@ -5259,17 +5270,17 @@ dnl Turn off webrtc for OS's we don't handle yet, but allow dnl --enable-webrtc to override. Can disable for everything in dnl the master list above. if test -n "$MOZ_WEBRTC"; then @@ -64,13 +64,13 @@ ;; esac fi -@@ -8909,16 +8920,21 @@ if test "${OS_TARGET}" = "WINNT"; then - if test "$HAVE_64BIT_OS"; then - OS_BITS=64 +@@ -9065,16 +9076,21 @@ elif test "${OS_TARGET}" = "Android"; then + EXTRA_GYP_DEFINES="-D gtest_target_type=executable -D android_toolchain=${android_toolchain} -G os=android " + if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then + EXTRA_GYP_DEFINES+=" -D armv7=0 " else - OS_BITS=32 + EXTRA_GYP_DEFINES+=" -D armv7=1 " fi - EXTRA_GYP_DEFINES="-D MSVS_VERSION=${_MSVS_VERSION} -D MSVS_OS_BITS=${OS_BITS}" fi +# Don't try to compile sse4.1 code if toolchain doesn't support @@ -85,12 +85,12 @@ dnl so that regeneration via dependencies works correctly WEBRTC_CONFIG="-D build_with_mozilla=1 --include ${srcdir}/media/webrtc/webrtc_config.gypi -D FORCED_INCLUDE_FILE=${srcdir}/media/webrtc/webrtc_config.gypi" - GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}" + GYP_WEBRTC_OPTIONS="--format=mozmake ${WEBRTC_CONFIG} -D target_arch=${WEBRTC_TARGET_ARCH} ${EXTRA_GYP_DEFINES} --depth=${srcdir}/media/webrtc/trunk --toplevel-dir=${srcdir} -G OBJDIR=${_objdir}" diff --git js/src/config/system-headers js/src/config/system-headers index 9bd1efa..1095a01 100644 --- mozilla/js/src/config/system-headers +++ mozilla/js/src/config/system-headers -@@ -1066,8 +1066,10 @@ gst/app/gstappsink.h +@@ -1121,8 +1121,10 @@ gst/app/gstappsink.h gst/app/gstappsrc.h gst/video/video.h sys/msg.h @@ -114,20 +114,20 @@ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/event \ $(NULL) --ifeq ($(OS_ARCH), Darwin) +-ifeq ($(OS_TARGET), Darwin) +ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LOCAL_INCLUDES += \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/darwin/include \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/generic/include \ $(NULL) -+ifeq ($(OS_ARCH), Darwin) ++ifeq ($(OS_TARGET), Darwin) DEFINES += -DDARWIN +else +DEFINES += -DBSD +endif endif - ifeq ($(OS_ARCH), Linux) + ifeq ($(OS_TARGET), Linux) LOCAL_INCLUDES += \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/linux/include \ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/generic/include \ @@ -146,7 +146,7 @@ endif endif --ifeq ($(OS_ARCH), Darwin) +-ifeq ($(OS_TARGET), Darwin) +ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/darwin/include +ifeq ($(OS_TARGET), Darwin) @@ -156,13 +156,13 @@ endif +endif - ifeq ($(OS_ARCH), Linux) + ifeq ($(OS_TARGET), Linux) LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/linux/include endif - ifneq ($(OS_TARGET),WINNT) - CPP_UNIT_TESTS = \ - ice_unittest.cpp \ + ifeq ($(OS_TARGET), Android) + LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/android/include + diff --git media/mtransport/third_party/nICEr/nicer.gyp media/mtransport/third_party/nICEr/nicer.gyp index 0e1f8b4..9a4b995 100644 --- mozilla/media/mtransport/third_party/nICEr/nicer.gyp @@ -210,7 +210,27 @@ index b0b66b2..04fea94 100644 --- mozilla/media/mtransport/third_party/nICEr/src/stun/addrs.c +++ mozilla/media/mtransport/third_party/nICEr/src/stun/addrs.c -@@ -69,17 +69,17 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex +@@ -50,17 +50,19 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex + #else + #include + /* Work around an Android NDK < r8c bug */ + #undef __unused + #include + #endif + #include + #ifndef LINUX ++#if !defined(__OpenBSD__) && !defined(__NetBSD__) + #include ++#endif + #include + #include + #include + #else + #include + #endif + #include + +@@ -75,17 +77,17 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex #include #endif /* UNIX */ @@ -229,7 +249,7 @@ * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright -@@ -675,17 +675,17 @@ nr_stun_remove_duplicate_addrs(nr_transport_addr addrs[], int remove_loopback, i +@@ -685,17 +687,17 @@ nr_stun_remove_duplicate_addrs(nr_transport_addr addrs[], int remove_loopback, i } int @@ -252,12 +272,18 @@ index a3c51f9..eb65ac8 100644 --- mozilla/media/mtransport/third_party/nICEr/src/stun/stun.h +++ mozilla/media/mtransport/third_party/nICEr/src/stun/stun.h -@@ -40,17 +40,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +@@ -36,21 +36,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + #ifdef WIN32 + #include + #else #include #include #include #ifndef LINUX ++#if !defined(__OpenBSD__) && !defined(__NetBSD__) #include ++#endif #include #include #endif @@ -341,13 +367,13 @@ if (!(my_locale = r_strdup(setlocale(LC_CTYPE, 0)))) ABORT(R_NO_MEMORY); -@@ -91,28 +99,28 @@ mbslen(const char *s, size_t *ncharsp) - if (!strstr(my_locale, "UTF-8")) +@@ -93,28 +101,28 @@ mbslen(const char *s, size_t *ncharsp) + #else + /* can't count UTF-8 characters with mbrlen if the locale isn't UTF-8 */ + /* null-checking setlocale is required because Android */ + char *locale = setlocale(LC_CTYPE, 0); + if (!locale || !strcasestr(locale, "UTF-8")) ABORT(R_NOT_FOUND); - #else - /* can't count UTF-8 characters with mbrlen if the locale isn't UTF-8 */ - if (! strcasestr(setlocale(LC_CTYPE, 0), "UTF-8")) - ABORT(R_NOT_FOUND); #endif -#ifdef DARWIN @@ -416,6 +442,28 @@ 'NEW_STDIO' 'RETSIGTYPE=void', 'TIME_WITH_SYS_TIME_H=1', +diff --git media/mtransport/third_party/nrappkit/src/log/r_log.c media/mtransport/third_party/nrappkit/src/log/r_log.c +index b25d5c2..b207b8c 100644 +--- mozilla/media/mtransport/third_party/nrappkit/src/log/r_log.c ++++ mozilla/media/mtransport/third_party/nrappkit/src/log/r_log.c +@@ -43,16 +43,17 @@ static char *RCSSTRING __UNUSED__ ="$Id: r_log.c,v 1.10 2008/11/25 22:25:18 adam + #ifdef LINUX + #define _BSD_SOURCE + #endif + + #include "r_log.h" + #include "hex.h" + + #include ++#include + #ifndef _MSC_VER + #include + #include + #endif + #include + #include + + diff --git media/mtransport/third_party/nrappkit/src/port/darwin/include/csi_platform.h media/mtransport/third_party/nrappkit/src/port/darwin/include/csi_platform.h index 15452e3..2c9651a 100644 --- mozilla/media/mtransport/third_party/nrappkit/src/port/darwin/include/csi_platform.h @@ -446,20 +494,20 @@ index bcb1ec0..bb73591 100644 --- mozilla/media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h +++ mozilla/media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h -@@ -33,5 +33,5 @@ - #define _SYS_QUEUE_H_ - +@@ -33,7 +33,7 @@ + #ifndef _SYS_QUEUE_H_ + #define _SYS_QUEUE_H_ + -#ifndef DARWIN -+#if !defined(BSD) && !defined(DARWIN) ++#if !defined(__FreeBSD__) && !defined(DARWIN) #include #define __offsetof offsetof #endif - diff --git media/mtransport/third_party/nrappkit/src/util/util.c media/mtransport/third_party/nrappkit/src/util/util.c index 3aced8b..be020bb 100644 --- mozilla/media/mtransport/third_party/nrappkit/src/util/util.c +++ mozilla/media/mtransport/third_party/nrappkit/src/util/util.c -@@ -36,16 +36,19 @@ +@@ -36,20 +36,24 @@ ekr@rtfm.com Wed Dec 26 17:19:36 2001 */ @@ -475,11 +523,16 @@ #include #endif #include ++#include #include #include #ifdef OPENSSL #include -@@ -431,17 +434,17 @@ int nr_reg_uint8_fetch_and_check(NR_registry key, UINT8 min, UINT8 max, int log_ + #endif + #include "nr_common.h" + #include "r_common.h" + #include "registry.h" +@@ -431,17 +435,17 @@ int nr_reg_uint8_fetch_and_check(NR_registry key, UINT8 min, UINT8 max, int log_ abort: if(die && _status){ r_log(log_fac,LOG_CRIT,"Exiting due to invalid configuration (key '%s')",key); @@ -499,15 +552,15 @@ if (! buf) diff --git media/webrtc/signaling/signaling.gyp media/webrtc/signaling/signaling.gyp -index f0cbf870..ba0f801 100644 +index 2a91e3d..31de641 100644 --- mozilla/media/webrtc/signaling/signaling.gyp +++ mozilla/media/webrtc/signaling/signaling.gyp -@@ -208,16 +208,29 @@ +@@ -212,16 +212,29 @@ 'SIPCC_BUILD', 'HAVE_WINSOCK2_H', 'CPR_STDINT_INCLUDE=\\"mozilla/StandardInteger.h\\"' ], - + 'cflags_mozilla': [ ], }], @@ -529,35 +582,35 @@ ], 'defines': [ 'SIP_OS_OSX', - 'OSX', + 'OSX', '_FORTIFY_SOURCE=2', ], -@@ -701,17 +714,17 @@ +@@ -747,17 +760,17 @@ 'EXTERNAL_TICK_REQUIRED', 'GIPS_VER=3480', ], - + 'cflags_mozilla': [ ], - + }], - ['OS=="mac"', { + ['OS=="mac" or os_bsd==1', { 'include_dirs': [ ], - + 'sources': [ # SIPSTACK './src/sipcc/core/sipstack/sip_platform_task.c', - -@@ -746,24 +759,23 @@ + +@@ -792,24 +805,23 @@ './src/sipcc/cpr/darwin/cpr_darwin_timers_using_select.c', './src/sipcc/cpr/darwin/cpr_darwin_tst.h', './src/sipcc/cpr/darwin/cpr_darwin_types.h', ], - + 'defines' : [ 'SIP_OS_OSX', - '_POSIX_SOURCE', @@ -571,12 +624,12 @@ - '_DARWIN_C_SOURCE', 'NO_NSPR_10_SUPPORT', ], - + 'cflags_mozilla': [ ], }], ], - + diff --git media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c index a7c47e1..4f191de 100644 --- mozilla/media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c @@ -611,7 +664,7 @@ index a30e330..cfbd8a3 100644 --- mozilla/media/webrtc/signaling/test/Makefile.in +++ mozilla/media/webrtc/signaling/test/Makefile.in -@@ -22,32 +22,32 @@ LIBS = \ +@@ -22,17 +22,17 @@ LIBS = \ $(DEPTH)/media/webrtc/signalingtest/signaling_ecc/$(LIB_PREFIX)ecc.$(LIB_SUFFIX) \ $(DEPTH)/media/webrtc/signalingtest/signaling_sipcc/$(LIB_PREFIX)sipcc.$(LIB_SUFFIX) \ $(DEPTH)/layout/media/$(LIB_PREFIX)gkmedias.$(LIB_SUFFIX) \ @@ -620,7 +673,7 @@ $(NULL) ifdef MOZ_SYDNEYAUDIO --ifeq ($(OS_ARCH),Linux) +-ifeq ($(OS_TARGET),Linux) +ifneq (,$(filter Linux DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LIBS += \ $(MOZ_ALSA_LIBS) \ @@ -628,22 +681,25 @@ endif endif - ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT)) + ifeq ($(OS_TARGET),Android) LIBS += \ +@@ -76,17 +76,17 @@ endif + ifeq (qt,$(MOZ_WIDGET_TOOLKIT)) + LIBS += \ $(XLIBS) \ - $(MOZ_GTK2_LIBS) \ - -lgthread-2.0 \ + $(TK_LIBS) \ + $(MOZ_PANGO_LIBS) \ $(NULL) endif --ifeq ($(OS_ARCH),Linux) +-ifeq ($(OS_TARGET),Linux) +ifneq (,$(filter Linux DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET))) LIBS += \ $(MOZ_CAIRO_OSLIBS) \ $(NULL) endif - ifeq ($(OS_ARCH),Darwin) + ifeq ($(OS_TARGET),Darwin) LIBS += \ -framework AudioToolbox \ diff --git media/webrtc/trunk/build/common.gypi media/webrtc/trunk/build/common.gypi @@ -750,7 +806,7 @@ index 9ca9f7c..d5c4ab9 100644 --- mozilla/media/webrtc/trunk/src/build/common.gypi +++ mozilla/media/webrtc/trunk/src/build/common.gypi -@@ -101,16 +101,23 @@ +@@ -101,16 +101,21 @@ 'enable_protobuf%': 1, 'include_tests%': 1, @@ -760,10 +816,8 @@ 'clang_use_chrome_plugins%': 0, }], + ['OS=="linux" or OS=="solaris" or os_bsd==1', { -+ 'include_alsa_audio%': 1, + 'include_v4l2_video_capture%': 1, + }, { -+ 'include_alsa_audio%': 0, + 'include_v4l2_video_capture%': 0, + }], ], # conditions @@ -774,7 +828,7 @@ '..','../..', ], 'defines': [ -@@ -174,16 +181,28 @@ +@@ -176,16 +181,28 @@ 'defines': [ 'WEBRTC_LINUX', 'WEBRTC_THREAD_RR', @@ -803,68 +857,6 @@ 'WEBRTC_CLOCK_TYPE_REALTIME', ], }], -diff --git media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi -index 8457737..4d0f322 100644 ---- mozilla/media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi -+++ mozilla/media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi -@@ -41,21 +41,25 @@ - 'audio_device_utility.h', - 'audio_device_impl.cc', - 'audio_device_impl.h', - 'audio_device_config.h', - 'dummy/audio_device_dummy.h', - 'dummy/audio_device_utility_dummy.h', - ], - 'conditions': [ -- ['OS=="linux"', { -+ ['include_alsa_audio==1', { - 'include_dirs': [ - 'linux', - ], -- }], # OS==linux -+ 'defines': [ -+ # avoiding pointless ifdef churn -+ 'WEBRTC_LINUX', -+ ], -+ }], # include_alsa_audio==1 - ['OS=="mac"', { - 'include_dirs': [ - 'mac', - ], - }], # OS==mac - ['OS=="win"', { - 'include_dirs': [ - 'win', -@@ -111,24 +115,26 @@ - 'link_settings': { - 'libraries': [ - '-llog', - '-lOpenSLES', - ], - }, - }], - ['OS=="linux"', { -- 'defines': [ -- 'LINUX_ALSA', -- ], - 'link_settings': { - 'libraries': [ - '-ldl', - ], - }, -+ }], -+ ['include_alsa_audio==1', { -+ 'defines': [ -+ 'LINUX_ALSA', -+ ], - 'conditions': [ - ['include_pulse_audio==1', { - 'defines': [ - 'LINUX_PULSE', - ], - 'sources': [ - 'linux/audio_device_pulse_linux.cc', - 'linux/audio_device_pulse_linux.h', diff --git media/webrtc/trunk/src/modules/audio_device/main/source/audio_device_utility.cc media/webrtc/trunk/src/modules/audio_device/main/source/audio_device_utility.cc index 203f09a..0b0b70e 100644 --- mozilla/media/webrtc/trunk/src/modules/audio_device/main/source/audio_device_utility.cc @@ -1341,7 +1333,7 @@ index 0a9765e..8d4bbf4 100644 --- mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi +++ mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi -@@ -50,17 +50,17 @@ +@@ -55,17 +55,17 @@ ['include_internal_video_capture==0', { 'sources': [ 'External/device_info_external.cc', @@ -1360,7 +1352,7 @@ 'Linux/video_capture_linux.h', 'Linux/device_info_linux.cc', 'Linux/video_capture_linux.cc', -@@ -157,31 +157,35 @@ +@@ -162,31 +162,35 @@ '../interface', ], 'sources': [ @@ -1798,7 +1790,7 @@ namespace webrtc { extern "C" -@@ -116,16 +125,28 @@ ThreadPosix::ThreadPosix(ThreadRunFunction func, ThreadObj obj, +@@ -116,16 +125,30 @@ ThreadPosix::ThreadPosix(ThreadRunFunction func, ThreadObj obj, } } @@ -1811,6 +1803,8 @@ + return _lwp_self(); +#elif defined(__DragonFly__) + return lwp_gettid(); ++#elif defined(__OpenBSD__) ++ return reinterpret_cast (pthread_self()); +#elif defined(__FreeBSD__) +# if __FreeBSD_version > 900030 + return pthread_getthreadid_np(); @@ -1827,7 +1821,7 @@ int ThreadPosix::Construct() { int result = 0; -@@ -154,16 +175,17 @@ ThreadPosix::~ThreadPosix() +@@ -154,16 +177,17 @@ ThreadPosix::~ThreadPosix() { pthread_attr_destroy(&_attr); delete _event; @@ -1845,7 +1839,7 @@ #endif { if (!_runFunction) -@@ -229,31 +251,39 @@ bool ThreadPosix::Start(unsigned int& /*threadID*/) +@@ -229,31 +253,39 @@ bool ThreadPosix::Start(unsigned int& /*threadID*/) { return false; } @@ -1887,7 +1881,7 @@ #else // "Normal" Linux. const int result = sched_setaffinity(_pid, -@@ -340,16 +370,20 @@ void ThreadPosix::Run() +@@ -340,16 +372,20 @@ void ThreadPosix::Run() #endif // The event the Start() is waiting for. _event->Set(); @@ -1908,6 +1902,29 @@ WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1, "Thread without name started"); } +diff --git media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc +index f3a5306..d9c2810 100644 +--- mozilla/media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc ++++ mozilla/media/webrtc/trunk/src/system_wrappers/source/trace_posix.cc +@@ -52,17 +52,17 @@ WebRtc_Word32 TracePosix::AddTime(char* traceMessage, + { + struct timeval systemTimeHighRes; + if (gettimeofday(&systemTimeHighRes, 0) == -1) + { + return -1; + } + struct tm buffer; + const struct tm* systemTime = +- localtime_r(&systemTimeHighRes.tv_sec, &buffer); ++ localtime_r((const time_t *)(&systemTimeHighRes.tv_sec), &buffer); + + const WebRtc_UWord32 ms_time = systemTimeHighRes.tv_usec / 1000; + WebRtc_UWord32 prevTickCount = 0; + if (level == kTraceApiCall) + { + prevTickCount = _prevTickCount; + _prevTickCount = ms_time; + } else { diff --git media/webrtc/trunk/src/video_engine/vie_defines.h media/webrtc/trunk/src/video_engine/vie_defines.h index 2cc18cc7..2c042a0 100644 --- mozilla/media/webrtc/trunk/src/video_engine/vie_defines.h @@ -1996,7 +2013,7 @@ index 7d4c729..4104719 100644 --- mozilla/media/webrtc/trunk/src/voice_engine/voice_engine_defines.h +++ mozilla/media/webrtc/trunk/src/voice_engine/voice_engine_defines.h -@@ -434,41 +434,44 @@ namespace webrtc +@@ -437,41 +437,44 @@ namespace webrtc #else #define ANDROID_NOT_SUPPORTED(stat) @@ -2042,7 +2059,7 @@ #define TRUE 1 #define SOCKADDR_IN struct sockaddr_in #define UINT unsigned int -@@ -576,13 +579,13 @@ namespace webrtc +@@ -579,13 +582,13 @@ namespace webrtc // Defines // ---------------------------------------------------------------------------- Index: www/seamonkey/files/patch-bug810716 =================================================================== --- www/seamonkey/files/patch-bug810716 (revision 0) +++ www/seamonkey/files/patch-bug810716 (working copy) @@ -0,0 +1,95 @@ +diff --git configure.in configure.in +index 2084be9..eb6eeb2 100644 +--- configure.in ++++ configure.in +@@ -3369,14 +3369,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + +diff --git configure.in configure.in +index 2084be9..eb6eeb2 100644 +--- mozilla/configure.in ++++ mozilla/configure.in +@@ -3369,14 +3369,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + +diff --git extensions/auth/nsAuthGSSAPI.cpp extensions/auth/nsAuthGSSAPI.cpp +index e828beb..6444246 100644 +--- mozilla/extensions/auth/nsAuthGSSAPI.cpp ++++ mozilla/extensions/auth/nsAuthGSSAPI.cpp +@@ -39,6 +39,9 @@ typedef KLStatus (*KLCacheHasValidTickets_type)( + #endif + + #if defined(HAVE_RES_NINIT) ++#include ++#include ++#include + #include + #endif + +diff --git js/src/configure.in js/src/configure.in +index e25f569..b9722f9 100644 +--- mozilla/js/src/configure.in ++++ mozilla/js/src/configure.in +@@ -2797,14 +2797,19 @@ fi + AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, +- [AC_TRY_LINK([ ++ [AC_TRY_RUN([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif ++ #include ++ #include ++ #include + #include +- ], +- [int foo = res_ninit(&_res);], ++ int main(int argc, char **argv){ ++ int foo = res_ninit(&_res); ++ }], + [ac_cv_func_res_ninit=yes], ++ [ac_cv_func_res_ninit=no], + [ac_cv_func_res_ninit=no]) + ]) + Property changes on: www/seamonkey/files/patch-bug810716 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/seamonkey/files/patch-bug817267 =================================================================== --- www/seamonkey/files/patch-bug817267 (revision 315699) +++ www/seamonkey/files/patch-bug817267 (working copy) @@ -1,36 +0,0 @@ -commit faafeb1 -Author: Jan Beich -Date: Sat Dec 1 21:25:24 2012 -0500 - - Bug 817267 - dirfd() is a macro on some BSDs, fix build there. r=yoric ---- - dom/system/OSFileConstants.cpp | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git dom/system/OSFileConstants.cpp dom/system/OSFileConstants.cpp -index 75a41dc..63fc6b1 100644 ---- mozilla/dom/system/OSFileConstants.cpp -+++ mozilla/dom/system/OSFileConstants.cpp -@@ -41,6 +41,11 @@ - #include "OSFileConstants.h" - #include "nsIOSFileConstantsService.h" - -+#if defined(__DragonFly__) || defined(__FreeBSD__) \ -+ || defined(__NetBSD__) || defined(__OpenBSD__) -+#define __dd_fd dd_fd -+#endif -+ - /** - * This module defines the basic libc constants (error numbers, open modes, - * etc.) used by OS.File and possibly other OS-bound JavaScript libraries. -@@ -383,8 +388,8 @@ static dom::ConstantSpec gLibcProperties[] = - { "OSFILE_OFFSETOF_DIRENT_D_TYPE", INT_TO_JSVAL(offsetof (struct dirent, d_type)) }, - #endif // defined(DT_UNKNOWN) - -- // Under MacOS X, |dirfd| is a macro rather than a function, so we -- // need a little help to get it to work -+ // Under MacOS X and BSDs, |dirfd| is a macro rather than a -+ // function, so we need a little help to get it to work - #if defined(dirfd) - { "OSFILE_SIZEOF_DIR", INT_TO_JSVAL(sizeof (DIR)) }, - Index: www/seamonkey/files/patch-bug817481 =================================================================== --- www/seamonkey/files/patch-bug817481 (revision 315699) +++ www/seamonkey/files/patch-bug817481 (working copy) @@ -1,26 +0,0 @@ -commit 93d56d2 -Author: Makoto Kato -Date: Mon Dec 3 17:01:16 2012 +0900 - - Bug 817481 - Build failure on WebRTC unit test with --with-system-libvpx. r=jesup ---- - media/webrtc/signaling/test/Makefile.in | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git media/webrtc/signaling/test/Makefile.in media/webrtc/signaling/test/Makefile.in -index 81a38ff..e10e869 100644 ---- mozilla/media/webrtc/signaling/test/Makefile.in -+++ mozilla/media/webrtc/signaling/test/Makefile.in -@@ -34,6 +34,12 @@ LIBS += \ - endif - endif - -+ifdef MOZ_NATIVE_LIBVPX -+LIBS += \ -+ $(MOZ_LIBVPX_LIBS) \ -+ $(NULL) -+endif -+ - ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT)) - LIBS += \ - $(XLIBS) \ Index: www/seamonkey/files/patch-bug824317 =================================================================== --- www/seamonkey/files/patch-bug824317 (revision 0) +++ www/seamonkey/files/patch-bug824317 (working copy) @@ -0,0 +1,14 @@ +diff --git a/xpcom/string/public/nsAlgorithm.h b/xpcom/string/public/nsAlgorithm.h +index fa50194a..c5f5737 100644 +--- mozilla/xpcom/string/public/nsAlgorithm.h ++++ mozilla/xpcom/string/public/nsAlgorithm.h +@@ -42,7 +42,8 @@ NS_MAX( const T& a, const T& b ) + return a > b ? a : b; + } + +-#if defined(_MSC_VER) && (_MSC_VER < 1600) ++#if (defined(_MSC_VER) && (_MSC_VER < 1600)) || \ ++ (defined(_GLIBCXX_USE_LONG_LONG) && (!_GLIBCXX_USE_C99 || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC)) + namespace std { + inline + long long Property changes on: www/seamonkey/files/patch-bug824317 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/seamonkey/files/patch-bug826985 =================================================================== --- www/seamonkey/files/patch-bug826985 (revision 315699) +++ www/seamonkey/files/patch-bug826985 (working copy) @@ -1,106 +1,83 @@ -commit d18000b +commit 8024d93 Author: Henrik Gulbrandsen Date: Fri Jan 4 13:49:22 2013 +0100 Bug 826985 - Support more video formats for WebRTC via libv4l2 on Linux. --- - configure.in | 13 ++++++ - .../main/source/Linux/device_info_linux.cc | 30 ++++++++------ - .../main/source/Linux/video_capture_linux.cc | 47 ++++++++++++---------- - .../video_capture/main/source/video_capture.gypi | 1 + - toolkit/library/Makefile.in | 3 ++ - 5 files changed, 60 insertions(+), 34 deletions(-) + configure.in | 7 +++++++ + media/webrtc/signaling/test/Makefile.in | 1 + + .../modules/video_capture/main/source/Linux/device_info_linux.cc | 17 +++++++++++++++++ + .../modules/video_capture/main/source/Linux/video_capture_linux.cc | 16 +++++++++++++++- + .../webrtc/modules/video_capture/main/source/video_capture.gypi | 11 +++++++++++ + toolkit/library/Makefile.in | 1 + + 6 files changed, 52 insertions(+), 1 deletion(-) diff --git configure.in configure.in -index 6d05f9c..297615f 100644 +index 55e4cd1..76567b3 100644 --- mozilla/configure.in +++ mozilla/configure.in -@@ -5270,6 +5270,17 @@ if test -n "$MOZ_WEBRTC"; then - MOZ_VP8=1 +@@ -5238,6 +5238,9 @@ if test -n "$MOZ_WEBRTC"; then MOZ_VP8_ENCODER=1 MOZ_VP8_ERROR_CONCEALMENT=1 -+ dnl use libv4l on Linux to support more cameras -+ case "$target" in -+ *-android*|*-linuxandroid*) -+ ;; -+ *-linux*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*) -+ MOZ_WEBRTC_LIBV4L=1 -+ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2, , -+ [echo "$MOZ_LIBV4L2_PKG_ERRORS" -+ AC_MSG_ERROR([WebRTC on Linux needs libv4l2 for video format conversion.])]) -+ ;; -+ esac - dnl enable once Signaling lands - MOZ_WEBRTC_SIGNALING=1 - AC_DEFINE(MOZ_WEBRTC_SIGNALING) -@@ -5288,6 +5299,7 @@ fi - AC_SUBST(MOZ_WEBRTC) - AC_SUBST(MOZ_WEBRTC_SIGNALING) - AC_SUBST(MOZ_PEERCONNECTION) -+AC_SUBST(MOZ_WEBRTC_LIBV4L) - AC_SUBST(MOZ_WEBRTC_IN_LIBXUL) - AC_SUBST(MOZ_SCTP) - AC_SUBST(MOZ_SRTP) + ++ dnl with libv4l2 we can support more cameras ++ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2) ++ + dnl OpenSLES is only available in Android 2.3 and later; we'll change this + dnl hard dependency to a dynamic load with graceful runtime failure before + dnl we make --enable-webrtc on by default in Android (bug 815905) +@@ -8981,6 +8984,10 @@ elif test "${OS_TARGET}" = "Android"; then + fi + fi + ++if test -n "$MOZ_LIBV4L2_LIBS"; then ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D use_libv4l2=1" ++fi ++ + if test -n "$MOZ_WEBRTC"; then + AC_MSG_RESULT("generating WebRTC Makefiles...") + +diff --git media/webrtc/signaling/test/Makefile.in media/webrtc/signaling/test/Makefile.in +index b483cd1..f1dd1f0 100644 +--- mozilla/media/webrtc/signaling/test/Makefile.in ++++ mozilla/media/webrtc/signaling/test/Makefile.in +@@ -17,6 +17,7 @@ LIBS = \ + $(NSPR_LIBS) \ + $(NSS_LIBS) \ + $(REALTIME_LIBS) \ ++ $(MOZ_LIBV4L2_LIBS) \ + $(DEPTH)/xpcom/glue/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \ + $(DEPTH)/media/mtransport/standalone/$(LIB_PREFIX)mtransport_s.$(LIB_SUFFIX) \ + $(DEPTH)/media/webrtc/signalingtest/signaling_ecc/$(LIB_PREFIX)ecc.$(LIB_SUFFIX) \ diff --git media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc -index 653ee16..270f064 100644 +index 239a292..bab496c 100644 --- mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc +++ mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/Linux/device_info_linux.cc -@@ -26,6 +26,7 @@ +@@ -26,11 +26,23 @@ #else #include #endif ++#ifdef HAVE_LIBV4L2 +#include ++#endif #include "ref_count.h" #include "trace.h" -@@ -68,9 +69,9 @@ WebRtc_UWord32 DeviceInfoLinux::NumberOfDevices() - for (int n = 0; n < 64; n++) - { - sprintf(device, "/dev/video%d", n); -- if ((fd = open(device, O_RDONLY)) != -1) -+ if ((fd = v4l2_open(device, O_RDONLY)) != -1) - { -- close(fd); -+ v4l2_close(fd); - count++; - } - } -@@ -97,14 +98,14 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName( - for (int n = 0; n < 64; n++) - { - sprintf(device, "/dev/video%d", n); -- if ((fd = open(device, O_RDONLY)) != -1) -+ if ((fd = v4l2_open(device, O_RDONLY)) != -1) - { - if (count == deviceNumber) { - // Found the device - found = true; - break; - } else { -- close(fd); -+ v4l2_close(fd); - count++; - } - } -@@ -115,21 +116,26 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName( - // query device capabilities - struct v4l2_capability cap; -- if (ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0) -+ if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in querying the device capability for device %s. errno = %d", - device, errno); -- close(fd); -+ v4l2_close(fd); - return -1; - } -- close(fd); -+ v4l2_close(fd); - - char cameraName[64]; ++#ifdef HAVE_LIBV4L2 ++#define open v4l2_open ++#define close v4l2_close ++#define dup v4l2_dup ++#define ioctl v4l2_ioctl ++#define mmap v4l2_mmap ++#define munmap v4l2_munmap ++#endif ++ + namespace webrtc + { + namespace videocapturemodule +@@ -130,6 +142,11 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName( memset(deviceNameUTF8, 0, deviceNameLength); memcpy(cameraName, cap.card, sizeof(cap.card)); @@ -112,259 +89,76 @@ if (deviceNameLength >= strlen(cameraName)) { memcpy(deviceNameUTF8, cameraName, strlen(cameraName)); -@@ -181,13 +187,13 @@ WebRtc_Word32 DeviceInfoLinux::CreateCapabilityMap( - for (int n = 0; n < 64; ++n) - { - sprintf(device, "/dev/video%d", n); -- fd = open(device, O_RDONLY); -+ fd = v4l2_open(device, O_RDONLY); - if (fd == -1) - continue; - - // query device capabilities - struct v4l2_capability cap; -- if (ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) -+ if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) - { - if (cap.bus_info[0] != 0) - { -@@ -209,7 +215,7 @@ WebRtc_Word32 DeviceInfoLinux::CreateCapabilityMap( - } - } - } -- close(fd); // close since this is not the matching device -+ v4l2_close(fd); // close since this is not the matching device - } - - if (!found) -@@ -228,7 +234,7 @@ WebRtc_Word32 DeviceInfoLinux::CreateCapabilityMap( - } - - int size = FillCapabilityMap(fd); -- close(fd); -+ v4l2_close(fd); - - // Store the new used device name - _lastUsedDeviceNameLength = deviceUniqueIdUTF8Length; -@@ -282,7 +288,7 @@ WebRtc_Word32 DeviceInfoLinux::FillCapabilityMap(int fd) - video_fmt.fmt.pix.width = size[i][0]; - video_fmt.fmt.pix.height = size[i][1]; - -- if (ioctl(fd, VIDIOC_TRY_FMT, &video_fmt) >= 0) -+ if (v4l2_ioctl(fd, VIDIOC_TRY_FMT, &video_fmt) >= 0) - { - if ((video_fmt.fmt.pix.width == size[i][0]) - && (video_fmt.fmt.pix.height == size[i][1])) diff --git media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc -index 12df1b3..4ddc9d4 100644 +index 12df1b3..e9863ba 100644 --- mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc +++ mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/Linux/video_capture_linux.cc -@@ -25,6 +25,7 @@ +@@ -25,6 +25,9 @@ #else #include #endif ++#ifdef HAVE_LIBV4L2 +#include ++#endif #include -@@ -79,11 +82,11 @@ WebRtc_Word32 VideoCaptureModuleV4L2::Init(const char* deviceUniqueIdUTF8) - for (n = 0; n < 64; n++) - { - sprintf(device, "/dev/video%d", n); -- if ((fd = open(device, O_RDONLY)) != -1) -+ if ((fd = v4l2_open(device, O_RDONLY)) != -1) - { - // query device capabilities - struct v4l2_capability cap; -- if (ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) -+ if (v4l2_ioctl(fd, VIDIOC_QUERYCAP, &cap) == 0) - { - if (cap.bus_info[0] != 0) - { -@@ -91,13 +94,13 @@ WebRtc_Word32 VideoCaptureModuleV4L2::Init(const char* deviceUniqueIdUTF8) - (const char*) deviceUniqueIdUTF8, - strlen((const char*) deviceUniqueIdUTF8)) == 0) //match with device id - { -- close(fd); -+ v4l2_close(fd); - found = true; - break; // fd matches with device unique id supplied - } - } - } -- close(fd); // close since this is not the matching device -+ v4l2_close(fd); // close since this is not the matching device - } - } - if (!found) -@@ -117,7 +120,7 @@ VideoCaptureModuleV4L2::~VideoCaptureModuleV4L2() - delete _captureCritSect; - } - if (_deviceFd != -1) -- close(_deviceFd); -+ v4l2_close(_deviceFd); - } +@@ -26,6 +31,15 @@ + #include "critical_section_wrapper.h" + #include "video_capture_linux.h" - WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( -@@ -142,7 +145,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - char device[20]; - sprintf(device, "/dev/video%d", (int) _deviceId); - -- if ((_deviceFd = open(device, O_RDWR | O_NONBLOCK, 0)) < 0) -+ if ((_deviceFd = v4l2_open(device, O_RDWR | O_NONBLOCK, 0)) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in opening %s errono = %d", device, errno); -@@ -175,7 +178,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - for (int i = 0; i < nFormats; i++) - { - video_fmt.fmt.pix.pixelformat = fmts[i]; -- if (ioctl(_deviceFd, VIDIOC_TRY_FMT, &video_fmt) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_TRY_FMT, &video_fmt) < 0) - { - continue; - } -@@ -200,7 +203,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - _captureVideoType = kVideoMJPEG; - - //set format and frame size now -- if (ioctl(_deviceFd, VIDIOC_S_FMT, &video_fmt) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_S_FMT, &video_fmt) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in VIDIOC_S_FMT, errno = %d", errno); -@@ -217,7 +220,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - struct v4l2_streamparm streamparms; - memset(&streamparms, 0, sizeof(streamparms)); - streamparms.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if (ioctl(_deviceFd, VIDIOC_G_PARM, &streamparms) < 0) { -+ if (v4l2_ioctl(_deviceFd, VIDIOC_G_PARM, &streamparms) < 0) { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "error in VIDIOC_G_PARM errno = %d", errno); - driver_framerate_support = false; -@@ -230,7 +233,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - streamparms.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - streamparms.parm.capture.timeperframe.numerator = 1; - streamparms.parm.capture.timeperframe.denominator = capability.maxFPS; -- if (ioctl(_deviceFd, VIDIOC_S_PARM, &streamparms) < 0) { -+ if (v4l2_ioctl(_deviceFd, VIDIOC_S_PARM, &streamparms) < 0) { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "Failed to set the framerate. errno=%d", errno); - driver_framerate_support = false; -@@ -268,7 +271,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StartCapture( - // Needed to start UVC camera - from the uvcview application - enum v4l2_buf_type type; - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if (ioctl(_deviceFd, VIDIOC_STREAMON, &type) == -1) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_STREAMON, &type) == -1) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "Failed to turn on stream"); -@@ -303,7 +306,7 @@ WebRtc_Word32 VideoCaptureModuleV4L2::StopCapture() - _captureThread = NULL; - - DeAllocateVideoBuffers(); -- close(_deviceFd); -+ v4l2_close(_deviceFd); - _deviceFd = -1; - } - -@@ -321,7 +324,7 @@ bool VideoCaptureModuleV4L2::AllocateVideoBuffers() - rbuffer.memory = V4L2_MEMORY_MMAP; - rbuffer.count = kNoOfV4L2Bufffers; - -- if (ioctl(_deviceFd, VIDIOC_REQBUFS, &rbuffer) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_REQBUFS, &rbuffer) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "Could not get buffers from device. errno = %d", errno); -@@ -344,24 +347,24 @@ bool VideoCaptureModuleV4L2::AllocateVideoBuffers() - buffer.memory = V4L2_MEMORY_MMAP; - buffer.index = i; - -- if (ioctl(_deviceFd, VIDIOC_QUERYBUF, &buffer) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_QUERYBUF, &buffer) < 0) - { - return false; - } - -- _pool[i].start = mmap(NULL, buffer.length, PROT_READ | PROT_WRITE, MAP_SHARED, -+ _pool[i].start = v4l2_mmap(NULL, buffer.length, PROT_READ | PROT_WRITE, MAP_SHARED, - _deviceFd, buffer.m.offset); - - if (MAP_FAILED == _pool[i].start) - { - for (unsigned int j = 0; j < i; j++) -- munmap(_pool[j].start, _pool[j].length); -+ v4l2_munmap(_pool[j].start, _pool[j].length); - return false; - } - - _pool[i].length = buffer.length; - -- if (ioctl(_deviceFd, VIDIOC_QBUF, &buffer) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_QBUF, &buffer) < 0) - { - return false; - } -@@ -373,14 +376,14 @@ bool VideoCaptureModuleV4L2::DeAllocateVideoBuffers() ++#ifdef HAVE_LIBV4L2 ++#define open v4l2_open ++#define close v4l2_close ++#define dup v4l2_dup ++#define ioctl v4l2_ioctl ++#define mmap v4l2_mmap ++#define munmap v4l2_munmap ++#endif ++ + namespace webrtc { - // unmap buffers - for (int i = 0; i < _buffersAllocatedByDevice; i++) -- munmap(_pool[i].start, _pool[i].length); -+ v4l2_munmap(_pool[i].start, _pool[i].length); - - delete[] _pool; - - // turn off stream - enum v4l2_buf_type type; - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; -- if (ioctl(_deviceFd, VIDIOC_STREAMOFF, &type) < 0) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_STREAMOFF, &type) < 0) - { - WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id, - "VIDIOC_STREAMOFF error. errno: %d", errno); -@@ -438,7 +441,7 @@ bool VideoCaptureModuleV4L2::CaptureProcess() - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - // dequeue a buffer - repeat until dequeued properly! -- while (ioctl(_deviceFd, VIDIOC_DQBUF, &buf) < 0) -+ while (v4l2_ioctl(_deviceFd, VIDIOC_DQBUF, &buf) < 0) - { - if (errno != EINTR) - { -@@ -457,7 +460,7 @@ bool VideoCaptureModuleV4L2::CaptureProcess() - IncomingFrame((unsigned char*) _pool[buf.index].start, - buf.bytesused, frameInfo); - // enqueue the buffer again -- if (ioctl(_deviceFd, VIDIOC_QBUF, &buf) == -1) -+ if (v4l2_ioctl(_deviceFd, VIDIOC_QBUF, &buf) == -1) - { - WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceVideoCapture, _id, - "Failed to enqueue capture buffer"); + namespace videocapturemodule diff --git media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi -index 8d38102..3e8f76b 100644 +index d46b5aa..e452223 100644 --- mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi +++ mozilla/media/webrtc/trunk/src/modules/video_capture/main/source/video_capture.gypi -@@ -179,6 +179,7 @@ - 'libraries': [ - '-lXext', - '-lX11', -+ '-lv4l2', +@@ -7,6 +7,9 @@ + # be found in the AUTHORS file in the root of the source tree. + + { ++ 'variables': { ++ 'use_libv4l2%': 0, ++ }, + 'targets': [ + { + 'target_name': 'video_capture_module', +@@ -49,6 +52,16 @@ + }, { # include_internal_video_capture == 1 + 'conditions': [ + ['include_v4l2_video_capture==1', { ++ 'conditions': [ ++ ['use_libv4l2==1', { ++ 'defines': [ ++ 'HAVE_LIBV4L2', ++ ], ++ 'libraries': [ ++ '-lv4l2', ++ ], ++ }], ++ ], + 'include_dirs': [ + 'linux', ], - }], - ['OS=="linux"', { diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in -index 0440c26..8f6c735 100644 +index 9c16ffa..1db3794 100644 --- mozilla/toolkit/library/Makefile.in +++ mozilla/toolkit/library/Makefile.in -@@ -411,6 +411,9 @@ EXTRA_DSO_LDOPTS += \ - $(DEPTH)/media/webrtc/signaling/signaling_sipcc/$(LIB_PREFIX)sipcc.$(LIB_SUFFIX) \ - $(NULL) +@@ -405,6 +405,7 @@ endif + EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib) + + ifdef MOZ_WEBRTC ++EXTRA_DSO_LDOPTS += $(MOZ_LIBV4L2_LIBS) + ifdef MOZ_PEERCONNECTION + COMPONENT_LIBS += peerconnection endif -+ifdef MOZ_WEBRTC_LIBV4L -+EXTRA_DSO_LDOPTS += $(MOZ_LIBV4L2_LIBS) -+endif - ifdef MOZ_WEBRTC_IN_LIBXUL - include $(topsrcdir)/media/webrtc/shared_libs.mk - EXTRA_DSO_LDOPTS += $(WEBRTC_LIBS) Index: www/seamonkey/files/patch-bug827521 =================================================================== --- www/seamonkey/files/patch-bug827521 (revision 0) +++ www/seamonkey/files/patch-bug827521 (working copy) @@ -0,0 +1,147 @@ +commit ab46441 +Author: Graeme McCutcheon +Date: Thu Jan 10 14:37:30 2013 +0000 + + Bug 827521 - Work around spurious operator ambiguity errors in buggy versions of Clang. r=longsonr +--- + .../svg/content/src/SVGAnimatedPreserveAspectRatio.cpp | 17 ++++++++--------- + .../svg/content/src/SVGAnimatedPreserveAspectRatio.h | 7 +++---- + content/svg/content/src/SVGPreserveAspectRatio.h | 17 +++++++++++++---- + 3 files changed, 24 insertions(+), 17 deletions(-) + +diff --git content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp +index 6593461..56956b2 100644 +--- mozilla/content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp ++++ mozilla/content/svg/content/src/SVGAnimatedPreserveAspectRatio.cpp +@@ -54,7 +54,7 @@ GetAlignForString(const nsAString &aAlignString) + { + for (uint32_t i = 0 ; i < ArrayLength(sAlignStrings) ; i++) { + if (aAlignString.EqualsASCII(sAlignStrings[i])) { +- return (i + SVG_PRESERVEASPECTRATIO_NONE); ++ return (i + SVG_ALIGN_MIN_VALID); + } + } + +@@ -65,12 +65,11 @@ static void + GetAlignString(nsAString& aAlignString, uint16_t aAlign) + { + NS_ASSERTION( +- aAlign >= SVG_PRESERVEASPECTRATIO_NONE && +- aAlign <= SVG_PRESERVEASPECTRATIO_XMAXYMAX, ++ aAlign >= SVG_ALIGN_MIN_VALID && aAlign <= SVG_ALIGN_MAX_VALID, + "Unknown align"); + + aAlignString.AssignASCII( +- sAlignStrings[aAlign - SVG_PRESERVEASPECTRATIO_NONE]); ++ sAlignStrings[aAlign - SVG_ALIGN_MIN_VALID]); + } + + static uint16_t +@@ -78,7 +77,7 @@ GetMeetOrSliceForString(const nsAString &aMeetOrSlice) + { + for (uint32_t i = 0 ; i < ArrayLength(sMeetOrSliceStrings) ; i++) { + if (aMeetOrSlice.EqualsASCII(sMeetOrSliceStrings[i])) { +- return (i + SVG_MEETORSLICE_MEET); ++ return (i + SVG_MEETORSLICE_MIN_VALID); + } + } + +@@ -89,12 +88,12 @@ static void + GetMeetOrSliceString(nsAString& aMeetOrSliceString, uint16_t aMeetOrSlice) + { + NS_ASSERTION( +- aMeetOrSlice >= SVG_MEETORSLICE_MEET && +- aMeetOrSlice <= SVG_MEETORSLICE_SLICE, ++ aMeetOrSlice >= SVG_MEETORSLICE_MIN_VALID && ++ aMeetOrSlice <= SVG_MEETORSLICE_MAX_VALID, + "Unknown meetOrSlice"); + + aMeetOrSliceString.AssignASCII( +- sMeetOrSliceStrings[aMeetOrSlice - SVG_MEETORSLICE_MEET]); ++ sMeetOrSliceStrings[aMeetOrSlice - SVG_MEETORSLICE_MIN_VALID]); + } + + already_AddRefed +@@ -226,7 +225,7 @@ SVGAnimatedPreserveAspectRatio::GetBaseValueString( + GetAlignString(tmpString, mBaseVal.mAlign); + aValueAsString.Append(tmpString); + +- if (mBaseVal.mAlign != SVG_PRESERVEASPECTRATIO_NONE) { ++ if (mBaseVal.mAlign != uint8_t(SVG_PRESERVEASPECTRATIO_NONE)) { + + aValueAsString.AppendLiteral(" "); + GetMeetOrSliceString(tmpString, mBaseVal.mMeetOrSlice); +diff --git content/svg/content/src/SVGAnimatedPreserveAspectRatio.h content/svg/content/src/SVGAnimatedPreserveAspectRatio.h +index 61cfba7..b08fb60 100644 +--- mozilla/content/svg/content/src/SVGAnimatedPreserveAspectRatio.h ++++ mozilla/content/svg/content/src/SVGAnimatedPreserveAspectRatio.h +@@ -42,8 +42,7 @@ public: + void SetBaseValue(const SVGPreserveAspectRatio &aValue, + nsSVGElement *aSVGElement); + nsresult SetBaseAlign(uint16_t aAlign, nsSVGElement *aSVGElement) { +- if (aAlign < SVG_PRESERVEASPECTRATIO_NONE || +- aAlign > SVG_PRESERVEASPECTRATIO_XMAXYMAX) { ++ if (aAlign < SVG_ALIGN_MIN_VALID || aAlign > SVG_ALIGN_MAX_VALID) { + return NS_ERROR_FAILURE; + } + SetBaseValue(SVGPreserveAspectRatio( +@@ -53,8 +52,8 @@ public: + return NS_OK; + } + nsresult SetBaseMeetOrSlice(uint16_t aMeetOrSlice, nsSVGElement *aSVGElement) { +- if (aMeetOrSlice < SVG_MEETORSLICE_MEET || +- aMeetOrSlice > SVG_MEETORSLICE_SLICE) { ++ if (aMeetOrSlice < SVG_MEETORSLICE_MIN_VALID || ++ aMeetOrSlice > SVG_MEETORSLICE_MAX_VALID) { + return NS_ERROR_FAILURE; + } + SetBaseValue(SVGPreserveAspectRatio( +diff --git content/svg/content/src/SVGPreserveAspectRatio.h content/svg/content/src/SVGPreserveAspectRatio.h +index 066ad52..ebe724e 100644 +--- mozilla/content/svg/content/src/SVGPreserveAspectRatio.h ++++ mozilla/content/svg/content/src/SVGPreserveAspectRatio.h +@@ -28,6 +28,11 @@ enum SVGAlign MOZ_ENUM_TYPE(uint8_t) { + SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10 + }; + ++// These constants represent the range of valid enum values for the ++// parameter. They exclude the sentinel _UNKNOWN value. ++const uint16_t SVG_ALIGN_MIN_VALID = SVG_PRESERVEASPECTRATIO_NONE; ++const uint16_t SVG_ALIGN_MAX_VALID = SVG_PRESERVEASPECTRATIO_XMAXYMAX; ++ + // Meet-or-slice Types + enum SVGMeetOrSlice MOZ_ENUM_TYPE(uint8_t) { + SVG_MEETORSLICE_UNKNOWN = 0, +@@ -35,6 +40,11 @@ enum SVGMeetOrSlice MOZ_ENUM_TYPE(uint8_t) { + SVG_MEETORSLICE_SLICE = 2 + }; + ++// These constants represent the range of valid enum values for the ++// parameter. They exclude the sentinel _UNKNOWN value. ++const uint16_t SVG_MEETORSLICE_MIN_VALID = SVG_MEETORSLICE_MEET; ++const uint16_t SVG_MEETORSLICE_MAX_VALID = SVG_MEETORSLICE_SLICE; ++ + class SVGAnimatedPreserveAspectRatio; + + class SVGPreserveAspectRatio MOZ_FINAL +@@ -57,8 +67,7 @@ public: + {} + + nsresult SetAlign(uint16_t aAlign) { +- if (aAlign < SVG_PRESERVEASPECTRATIO_NONE || +- aAlign > SVG_PRESERVEASPECTRATIO_XMAXYMAX) ++ if (aAlign < SVG_ALIGN_MIN_VALID || aAlign > SVG_ALIGN_MAX_VALID) + return NS_ERROR_FAILURE; + mAlign = static_cast(aAlign); + return NS_OK; +@@ -69,8 +78,8 @@ public: + } + + nsresult SetMeetOrSlice(uint16_t aMeetOrSlice) { +- if (aMeetOrSlice < SVG_MEETORSLICE_MEET || +- aMeetOrSlice > SVG_MEETORSLICE_SLICE) ++ if (aMeetOrSlice < SVG_MEETORSLICE_MIN_VALID || ++ aMeetOrSlice > SVG_MEETORSLICE_MAX_VALID) + return NS_ERROR_FAILURE; + mMeetOrSlice = static_cast(aMeetOrSlice); + return NS_OK; Property changes on: www/seamonkey/files/patch-bug827521 ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: www/seamonkey/files/patch-bug836824 =================================================================== --- www/seamonkey/files/patch-bug836824 (revision 0) +++ www/seamonkey/files/patch-bug836824 (working copy) @@ -0,0 +1,33 @@ +commit 35107a0 (HEAD) +Author: Paul Adenot +Date: Mon Feb 4 20:21:19 2013 +0100 + + Bug 836824 - libsoundtouch fails to build due to __get_cpuid() invocation, if you don't have xcode command line tools. r= +--- + media/libsoundtouch/moz-libsoundtouch.patch | 24 ++++++++++++++++++++++++ + media/libsoundtouch/src/cpu_detect_x86.cpp | 5 ++++- + 2 files changed, 28 insertions(+), 1 deletion(-) + +diff --git media/libsoundtouch/src/cpu_detect_x86.cpp media/libsoundtouch/src/cpu_detect_x86.cpp +index a42008e..7a31aa9 100644 +--- mozilla/media/libsoundtouch/src/cpu_detect_x86.cpp ++++ mozilla/media/libsoundtouch/src/cpu_detect_x86.cpp +@@ -101,7 +101,7 @@ uint detectCPUextensions(void) + + uint res = 0; + +-#if defined(__GNUC__) ++#if defined(__GNUC__) && defined(HAVE_CPUID_H) + // GCC version of cpuid. Requires GCC 4.3.0 or later for __cpuid intrinsic support. + uint eax, ebx, ecx, edx; // unsigned int is the standard type. uint is defined by the compiler and not guaranteed to be portable. + +@@ -112,6 +112,9 @@ uint detectCPUextensions(void) + if (edx & bit_SSE) res = res | SUPPORT_SSE; + if (edx & bit_SSE2) res = res | SUPPORT_SSE2; + ++#elif defined(__GNUC__) ++ // No cpuid.h --> no cpuid support ++ return 0; + #else + // Window / VS version of cpuid. Notice that Visual Studio 2005 or later required + // for __cpuid intrinsic support. Property changes on: www/seamonkey/files/patch-bug836824 ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: www/seamonkey/files/patch-bug844818 =================================================================== --- www/seamonkey/files/patch-bug844818 (revision 0) +++ www/seamonkey/files/patch-bug844818 (working copy) @@ -0,0 +1,126 @@ +diff --git configure.in configure.in +index 7cd6e17..a1dbdf7 100644 +--- mozilla/configure.in ++++ mozilla/configure.in +@@ -9106,6 +9106,18 @@ elif test "${OS_TARGET}" = "Android"; th + fi + fi + ++# Keep libcubeb and audio_device backends in sync ++if test -n "$MOZ_ALSA"; then ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=1" ++else ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=0" ++fi ++if test -n "$MOZ_PULSEAUDIO"; then ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=1" ++else ++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=0" ++fi ++ + # Don't try to compile sse4.1 code if toolchain doesn't support + if test -z "$HAVE_TOOLCHAIN_SUPPORT_MSSE4_1"; then + EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D yuv_disable_asm=1" +diff --git media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi +index 8457737..dfc83ff 100644 +--- mozilla/media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi ++++ mozilla/media/webrtc/trunk/src/modules/audio_device/main/source/audio_device.gypi +@@ -45,11 +45,15 @@ + 'dummy/audio_device_utility_dummy.h', + ], + 'conditions': [ +- ['OS=="linux"', { ++ ['include_alsa_audio==1 or include_pulse_audio==1', { + 'include_dirs': [ + 'linux', + ], +- }], # OS==linux ++ 'defines': [ ++ # avoid pointless rename ++ 'WEBRTC_LINUX', ++ ], ++ }], # include_alsa_audio==1 or include_pulse_audio==1 + ['OS=="mac"', { + 'include_dirs': [ + 'mac', +@@ -74,14 +78,8 @@ + }], + ['include_internal_audio_device==1', { + 'sources': [ +- 'linux/alsasymboltable_linux.cc', +- 'linux/alsasymboltable_linux.h', +- 'linux/audio_device_alsa_linux.cc', +- 'linux/audio_device_alsa_linux.h', + 'linux/audio_device_utility_linux.cc', + 'linux/audio_device_utility_linux.h', +- 'linux/audio_mixer_manager_alsa_linux.cc', +- 'linux/audio_mixer_manager_alsa_linux.h', + 'linux/latebindingsymboltable_linux.cc', + 'linux/latebindingsymboltable_linux.h', + 'mac/audio_device_mac.cc', +@@ -116,28 +114,36 @@ + }, + }], + ['OS=="linux"', { +- 'defines': [ +- 'LINUX_ALSA', +- ], + 'link_settings': { + 'libraries': [ + '-ldl', + ], + }, +- 'conditions': [ +- ['include_pulse_audio==1', { +- 'defines': [ +- 'LINUX_PULSE', +- ], +- 'sources': [ +- 'linux/audio_device_pulse_linux.cc', +- 'linux/audio_device_pulse_linux.h', +- 'linux/audio_mixer_manager_pulse_linux.cc', +- 'linux/audio_mixer_manager_pulse_linux.h', +- 'linux/pulseaudiosymboltable_linux.cc', +- 'linux/pulseaudiosymboltable_linux.h', +- ], +- }], ++ }], ++ ['include_alsa_audio==1', { ++ 'defines': [ ++ 'LINUX_ALSA', ++ ], ++ 'sources': [ ++ 'linux/alsasymboltable_linux.cc', ++ 'linux/alsasymboltable_linux.h', ++ 'linux/audio_device_alsa_linux.cc', ++ 'linux/audio_device_alsa_linux.h', ++ 'linux/audio_mixer_manager_alsa_linux.cc', ++ 'linux/audio_mixer_manager_alsa_linux.h', ++ ], ++ }], ++ ['include_pulse_audio==1', { ++ 'defines': [ ++ 'LINUX_PULSE', ++ ], ++ 'sources': [ ++ 'linux/audio_device_pulse_linux.cc', ++ 'linux/audio_device_pulse_linux.h', ++ 'linux/audio_mixer_manager_pulse_linux.cc', ++ 'linux/audio_mixer_manager_pulse_linux.h', ++ 'linux/pulseaudiosymboltable_linux.cc', ++ 'linux/pulseaudiosymboltable_linux.h', + ], + }], + ['OS=="mac"', { +diff --git media/webrtc/webrtc_config.gypi media/webrtc/webrtc_config.gypi +index b504d3d..e2eb127 100644 +--- mozilla/media/webrtc/webrtc_config.gypi ++++ mozilla/media/webrtc/webrtc_config.gypi +@@ -9,7 +9,6 @@ + 'include_internal_video_render': 0, + 'clang_use_chrome_plugins': 0, + 'enable_protobuf': 0, +- 'include_pulse_audio': 0, + 'include_tests': 0, + 'use_system_libjpeg': 1, + 'use_system_libvpx': 1, Property changes on: www/seamonkey/files/patch-bug844818 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: www/seamonkey/files/patch-mozilla-content-media-nsAudioStream.cpp =================================================================== --- www/seamonkey/files/patch-mozilla-content-media-nsAudioStream.cpp (revision 315699) +++ www/seamonkey/files/patch-mozilla-content-media-nsAudioStream.cpp (working copy) @@ -1,11 +0,0 @@ ---- mozilla/content/media/AudioStream.cpp~ -+++ mozilla/content/media/AudioStream.cpp -@@ -298,7 +298,7 @@ static int PrefChanged(const char* aPref, void* aClosure) - gVolumeScale = NS_MAX(0, PR_strtod(utf8.get(), nullptr)); - } - } else if (strcmp(aPref, PREF_USE_CUBEB) == 0) { --#ifdef MOZ_WIDGET_GONK -+#if defined(MOZ_WIDGET_GONK) || defined(__FreeBSD__) && __FreeBSD_version < 800097 - bool value = Preferences::GetBool(aPref, false); - #else - bool value = Preferences::GetBool(aPref, true); Index: www/seamonkey/files/patch-mozilla-gfx-ots-include-opentype-sanitiser.h =================================================================== --- www/seamonkey/files/patch-mozilla-gfx-ots-include-opentype-sanitiser.h (revision 315699) +++ www/seamonkey/files/patch-mozilla-gfx-ots-include-opentype-sanitiser.h (working copy) @@ -1,18 +0,0 @@ -diff --git gfx/ots/include/opentype-sanitiser.h gfx/ots/include/opentype-sanitiser.h -index f42822e..1a5a699 100644 ---- mozilla/gfx/ots/include/opentype-sanitiser.h -+++ mozilla/gfx/ots/include/opentype-sanitiser.h -@@ -44,6 +44,13 @@ typedef unsigned __int64 uint64_t; - #include - #endif - -+#ifdef __FreeBSD__ -+# include -+# if __FreeBSD_version < 800067 -+# include // for off_t -+# endif -+#endif -+ - #include // for std::min - #include - #include Index: www/seamonkey/files/patch-mozilla-ipc-chromium-src-base-platform_thread_posix.cc =================================================================== --- www/seamonkey/files/patch-mozilla-ipc-chromium-src-base-platform_thread_posix.cc (revision 315699) +++ www/seamonkey/files/patch-mozilla-ipc-chromium-src-base-platform_thread_posix.cc (working copy) @@ -1,16 +0,0 @@ ---- mozilla/ipc/chromium/src/base/platform_thread_posix.cc~ -+++ mozilla/ipc/chromium/src/base/platform_thread_posix.cc -@@ -16,7 +16,13 @@ - #include - #elif defined(OS_FREEBSD) - #include -+#if __FreeBSD_version > 802500 - #include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif - #endif - - #if !defined(OS_MACOSX) Index: www/seamonkey/files/patch-mozilla-js-src-configure.in =================================================================== --- www/seamonkey/files/patch-mozilla-js-src-configure.in (revision 315699) +++ www/seamonkey/files/patch-mozilla-js-src-configure.in (working copy) @@ -1,10 +0,0 @@ ---- mozilla/js/src/js-confdefs.h.in~ -+++ mozilla/js/src/js-confdefs.h.in -@@ -12,6 +12,7 @@ - * C++ implementations should define these macros only when __STDC_LIMIT_MACROS - * is defined before is included. */ - #define __STDC_LIMIT_MACROS -+#define __STDC_CONSTANT_MACROS - - #endif /* _JS_CONFDEFS_H_ */ - Index: www/seamonkey/files/patch-mozilla-media-webrtc-trunk-src-modules-audio_device-main-source-linux-latebind_linux.cc =================================================================== --- www/seamonkey/files/patch-mozilla-media-webrtc-trunk-src-modules-audio_device-main-source-linux-latebind_linux.cc (revision 315699) +++ www/seamonkey/files/patch-mozilla-media-webrtc-trunk-src-modules-audio_device-main-source-linux-latebind_linux.cc (working copy) @@ -1,37 +0,0 @@ ---- mozilla/media/webrtc/trunk/src/modules/audio_device/main/source/linux/latebindingsymboltable_linux.cc~ -+++ mozilla/media/webrtc/trunk/src/modules/audio_device/main/source/linux/latebindingsymboltable_linux.cc -@@ -31,6 +31,10 @@ - #include - #endif - -+#ifdef __FreeBSD__ -+#include -+#endif -+ - // TODO(grunell): Either put inside webrtc namespace or use webrtc:: instead. - using namespace webrtc; - -@@ -38,7 +42,11 @@ namespace webrtc_adm_linux { - - inline static const char *GetDllError() { - #ifdef WEBRTC_LINUX -+#if __FreeBSD_version < 800505 -+ const char *err = dlerror(); -+#else - char *err = dlerror(); -+#endif - if (err) { - return err; - } else { -@@ -78,7 +86,11 @@ static bool LoadSymbol(DllHandle handle, - void **symbol) { - #ifdef WEBRTC_LINUX - *symbol = dlsym(handle, symbol_name); -+#if __FreeBSD_version < 800505 -+ const char *err = dlerror(); -+#else - char *err = dlerror(); -+#endif - if (err) { - WEBRTC_TRACE(kTraceError, kTraceAudioDevice, -1, - "Error loading symbol %s : %d", symbol_name, err); Index: www/seamonkey/files/patch-mozilla-media-webrtc-trunk-src-system_wrappers-source-thread_posix.cc =================================================================== --- www/seamonkey/files/patch-mozilla-media-webrtc-trunk-src-system_wrappers-source-thread_posix.cc (revision 315699) +++ www/seamonkey/files/patch-mozilla-media-webrtc-trunk-src-system_wrappers-source-thread_posix.cc (working copy) @@ -1,16 +0,0 @@ ---- mozilla/media/webrtc/trunk/src/system_wrappers/source/thread_posix.cc~ -+++ mozilla/media/webrtc/trunk/src/system_wrappers/source/thread_posix.cc -@@ -62,7 +62,13 @@ - #include - #elif defined(__FreeBSD__) - #include -+#if __FreeBSD_version > 802500 - #include -+#else -+_Pragma("GCC visibility push(default)") -+extern "C" int thr_self(long *); -+_Pragma("GCC visibility pop") -+#endif - #endif - - #if defined(WEBRTC_BSD) && !defined(__NetBSD__) Index: www/seamonkey/files/patch-mozilla-python-psutil-psutil-_psutil_bsd.c =================================================================== --- www/seamonkey/files/patch-mozilla-python-psutil-psutil-_psutil_bsd.c (revision 315699) +++ www/seamonkey/files/patch-mozilla-python-psutil-psutil-_psutil_bsd.c (working copy) @@ -1,13 +0,0 @@ ---- mozilla/python/psutil/psutil/_psutil_bsd.c.orig 2012-08-16 23:07:37.000000000 +0800 -+++ mozilla/python/psutil/psutil/_psutil_bsd.c 2012-09-27 14:50:20.843763756 +0800 -@@ -1376,8 +1376,10 @@ - strlcat(opts, ",noclusterr", sizeof(opts)); - if (flags & MNT_NOCLUSTERW) - strlcat(opts, ",noclusterw", sizeof(opts)); -+#if __FreeBSD_version >= 800000 - if (flags & MNT_NFS4ACLS) - strlcat(opts, ",nfs4acls", sizeof(opts)); -+#endif - - py_tuple = Py_BuildValue("(ssss)", fs[i].f_mntfromname, // device - fs[i].f_mntonname, // mount point Index: www/seamonkey/files/patch-z-bug815916 =================================================================== --- www/seamonkey/files/patch-z-bug815916 (revision 315699) +++ www/seamonkey/files/patch-z-bug815916 (working copy) @@ -1,27 +0,0 @@ ---- mozilla/media/webrtc/signaling/test/Makefile.in~ -+++ mozilla/media/webrtc/signaling/test/Makefile.in -@@ -34,12 +34,24 @@ LIBS += \ - endif - endif - -+ifdef MOZ_NATIVE_JPEG -+LIBS += \ -+ $(MOZ_JPEG_LIBS) \ -+ $(NULL) -+endif -+ - ifdef MOZ_NATIVE_LIBVPX - LIBS += \ - $(MOZ_LIBVPX_LIBS) \ - $(NULL) - endif - -+ifndef MOZ_TREE_PIXMAN -+LIBS += \ -+ $(MOZ_PIXMAN_LIBS) \ -+ $(NULL) -+endif -+ - ifeq (gtk2,$(MOZ_WIDGET_TOOLKIT)) - LIBS += \ - $(XLIBS) \ Index: www/seamonkey-i18n/Makefile =================================================================== --- www/seamonkey-i18n/Makefile (revision 315699) +++ www/seamonkey-i18n/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= seamonkey-i18n -PORTVERSION= 2.16.1 +PORTVERSION= 2.17 CATEGORIES= www MASTER_SITE_SUBDIR= seamonkey/releases/${PORTVERSION}/langpack PKGNAMEPREFIX= @@ -18,7 +18,7 @@ PLISTD?= ${WRKDIR}/plist_dirs PLISTF?= ${WRKDIR}/plist_files -USE_SEAMONKEY= 16 +USE_SEAMONKEY= 17 USE_XPI= seamonkey linux-seamonkey USE_SUBMAKE= yes @@ -49,7 +49,7 @@ do-extract: @${MKDIR} ${WRKSRC} @for lang in ${SEAMONKEY_I18N_}; do \ - if ! (${EXTRACT_CMD} ${_DISTDIR}/seamonkey-${PORTVERSION}.$$lang.langpack.xpi -d ${WRKSRC}/langpack-$$lang@seamonkey.mozilla.org);\ + if ! (${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/seamonkey-${PORTVERSION}.$$lang.langpack.xpi -d ${WRKSRC}/langpack-$$lang@seamonkey.mozilla.org);\ then \ exit 1; \ fi; \ Index: www/seamonkey-i18n/distinfo =================================================================== --- www/seamonkey-i18n/distinfo (revision 315699) +++ www/seamonkey-i18n/distinfo (working copy) @@ -1,46 +1,46 @@ -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ca.langpack.xpi) = f2d4803d8a3ca8a34547ee9f1b0771ed01e72b8fe460b9778af42c14d2fa988f -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ca.langpack.xpi) = 777174 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.cs.langpack.xpi) = f76f5146ddeff47cc434217d638cb0af61a669ce425ed02d38a1ec0eee3aa2df -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.cs.langpack.xpi) = 782286 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.de.langpack.xpi) = ad31d64cac7013d3070999df8a9b19ede1bc6d18386033bca7825a46b3b12be4 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.de.langpack.xpi) = 805628 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.en-GB.langpack.xpi) = 2fc0736572e442529a9679c65bf5a7f1bd4a814716d06865034f6579a641995d -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.en-GB.langpack.xpi) = 751440 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.en-US.langpack.xpi) = c100f52dcff20f315edc7969cbaa6cd4d15cf4f8e0c032a769c72c06cd3aa8e5 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.en-US.langpack.xpi) = 752025 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.es-AR.langpack.xpi) = e677778d4d54cad54c10d9b070d5ba21b3864bf1a7884241b207373bf0b9061b -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.es-AR.langpack.xpi) = 824300 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.es-ES.langpack.xpi) = 55dbb09ecd067bc5cbffd96887a2ba3cbab2e0fb791bcf1941efdda9b9101705 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.es-ES.langpack.xpi) = 772621 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.fi.langpack.xpi) = 4b996a66da3cd4e90f8549bcffe09b775bc9644e86f91555553b4cac7bf234f7 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.fi.langpack.xpi) = 771991 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.fr.langpack.xpi) = b3056af35b245fde9ef07cb7a67a6920390f8178a9630736d61c144234884315 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.fr.langpack.xpi) = 781405 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.hu.langpack.xpi) = e9acfc35fb7a26f7da896d3d00eeee06058fd905cb85207d6d7b2ca51d435a4a -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.hu.langpack.xpi) = 816448 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.it.langpack.xpi) = d380309c6fcd5cf84671689d8c93c5003c610b872a2b5882d8ab384154073b04 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.it.langpack.xpi) = 721930 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ja-JP-mac.langpack.xpi) = 6925089871d69e8316798f5d73ab3e9619e4141625be02940f0570bff0546098 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ja-JP-mac.langpack.xpi) = 854853 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ja.langpack.xpi) = 8221cee1d138a028ac4c7042b7b1340404cb6aefee84592c7feebb71bce00ede -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ja.langpack.xpi) = 829871 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.lt.langpack.xpi) = 59e3a5b9a107f148dff8bd1cd5111f57d1b6b2bc93704fe3b3f2b69db946a804 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.lt.langpack.xpi) = 795322 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.nb-NO.langpack.xpi) = 475b4f1eef56614a417b48a1aafc09541b08559db52b4b27f33d5fa11ff38544 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.nb-NO.langpack.xpi) = 769320 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.nl.langpack.xpi) = 2b75210b5e4ac966644d8b9499f8b69c25b67e717b49c59708081d56b348b682 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.nl.langpack.xpi) = 767744 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.pl.langpack.xpi) = b1c80a450a5e6f16dde5108931f04ab2ee771306cd3a9e0a551c0736c5dc1368 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.pl.langpack.xpi) = 813142 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.pt-PT.langpack.xpi) = 628e66cbc64ea9c9628272bf32514b439934fbbdd6475a4c6c58b24231176771 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.pt-PT.langpack.xpi) = 803420 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ru.langpack.xpi) = ec35b3e5f2e0c5b869752b34de67de722f758fb64afcb0d9a24efb6d13670e9b -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.ru.langpack.xpi) = 875920 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.sk.langpack.xpi) = aef94562d31c3eae4cc1b1cc34b7bf74cb73bfb2d9702b65a0f8a534122ba947 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.sk.langpack.xpi) = 808953 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.sv-SE.langpack.xpi) = 04ab6c5728e2fbc2cd3c80b1f9e00957ca0d56deb1b27b88a6f1bde6ec2e8c8b -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.sv-SE.langpack.xpi) = 795026 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.tr.langpack.xpi) = fbf9f407e7cf1854d539e2e0cce69897d854c2926e77280a961e3e0233ed0c44 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.tr.langpack.xpi) = 821202 -SHA256 (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.uk.langpack.xpi) = c0db9838faf949f101298d3f0fce376cd32747d3abee5a15def775587f772533 -SIZE (xpi/seamonkey-i18n-2.16.1/seamonkey-2.16.1.uk.langpack.xpi) = 833355 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ca.langpack.xpi) = 81bba4119a02d368273c6df4e855d5704a8760a5665d976828b0486ad65ff0cb +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ca.langpack.xpi) = 778283 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.cs.langpack.xpi) = 0263ffd452cb328b85e042bcb2d82b1c9173b566b67a8c90f3c8026f38af48cf +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.cs.langpack.xpi) = 783458 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.de.langpack.xpi) = 6b97d854a9167204b98b4aa4a8cbe1cef0bbf67b78a88aedf8705a36a92ef3a0 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.de.langpack.xpi) = 807007 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.en-GB.langpack.xpi) = 5fbb8e8e04cb0f2b52bf19a70ba876eccf8fa90f200d46bfde7688ca1424233c +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.en-GB.langpack.xpi) = 752487 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.en-US.langpack.xpi) = 842b02e42d6d153d03c9b3f6dce9e7c191fede13ae56cff8bf38ec4b95851328 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.en-US.langpack.xpi) = 752986 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.es-AR.langpack.xpi) = 907d8c128add5617f7d02fb494f86a71273f27d1aadc826646251dbc253f6688 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.es-AR.langpack.xpi) = 825530 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.es-ES.langpack.xpi) = 37300cb81dd32cfd04fe46d1d3f82bcd96e12cbf883d903f542f7c78ffcea5de +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.es-ES.langpack.xpi) = 773656 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.fi.langpack.xpi) = eb862a5e24b986dd5b5ee3fe919373c70e6d3cb4105c434419447b029c6f439c +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.fi.langpack.xpi) = 773171 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.fr.langpack.xpi) = 6ad8589243d403b0768c6ccabce85f1cc71ece8c7acbb61a5ed6cba5d95b0e44 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.fr.langpack.xpi) = 782685 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.hu.langpack.xpi) = 1fda8e98c05658015683447f8d87d43d4a5be5474701e026287d95f1d7fb6c95 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.hu.langpack.xpi) = 815704 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.it.langpack.xpi) = 76c00156ae5288772a41411d884bbdcea6813a1a5eca0e0b5bd8a95a62a10b3a +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.it.langpack.xpi) = 722918 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ja-JP-mac.langpack.xpi) = 7e4037739ebc63b8b860868c16680cdae52d89c5822cf70788990ce752d9352d +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ja-JP-mac.langpack.xpi) = 856274 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ja.langpack.xpi) = 2dfdfd0b05d51be7bc04661f4d8faedb4f9a262e58fce59a5b759a7c55cc3fd7 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ja.langpack.xpi) = 831238 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.lt.langpack.xpi) = 6c51e0d04c233fd7e047b98eabd0b8944948793f7fdced20bd73220e97aae00f +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.lt.langpack.xpi) = 796677 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.nb-NO.langpack.xpi) = 7170db51635147e0515adab7eeaa784823875addce0f1db6fac7af5d7e444a47 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.nb-NO.langpack.xpi) = 771628 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.nl.langpack.xpi) = 1b52a5988d3107115730b6b415169484d6794e3c74dfb44ecd3dda6c3fcb4a37 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.nl.langpack.xpi) = 768852 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.pl.langpack.xpi) = 65da1085ccab3c3ab9034c331abd9535ff37b6e9420ec3fb6d7d36412f0f9c89 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.pl.langpack.xpi) = 814402 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.pt-PT.langpack.xpi) = ba3e86ac9747fb87890a8938fea6ebd0e5f44f04e2e2481e813a3bba9bfde07d +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.pt-PT.langpack.xpi) = 807019 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ru.langpack.xpi) = 2d109626d092fe3f357cdcd7f8ffb5539747b80378893a4d85bb21c0a5c22af6 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.ru.langpack.xpi) = 877100 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.sk.langpack.xpi) = 949869c8dd71b2e3968cbc54ca1b187566583e2b7440a3ea4c4fffca7488e77c +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.sk.langpack.xpi) = 810246 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.sv-SE.langpack.xpi) = 9b39d0d170da63e12d25bad32dbabd042363c208b99ff7ce684e960ba9c42334 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.sv-SE.langpack.xpi) = 796145 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.tr.langpack.xpi) = 59d56a9dcf69eb361f0ce2a5c4e0dc7c5e440dcb75080844c964aac1fa9e3697 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.tr.langpack.xpi) = 836221 +SHA256 (xpi/seamonkey-i18n-2.17/seamonkey-2.17.uk.langpack.xpi) = ef9b797d4278ef7c67b5c86e459c1f5f588aabc2d013cd10ce250b157950a377 +SIZE (xpi/seamonkey-i18n-2.17/seamonkey-2.17.uk.langpack.xpi) = 836887