summaryrefslogtreecommitdiff
path: root/www/firefox
diff options
context:
space:
mode:
authorpho <pho@pkgsrc.org>2014-05-28 10:08:18 +0000
committerpho <pho@pkgsrc.org>2014-05-28 10:08:18 +0000
commit40836863388a77e08daebcc9895cf888f58e8156 (patch)
tree5eb342a2910de5e9bc877f6b31caa68be3ae8aa8 /www/firefox
parent83eeda3136f99d33afcf19ca54a39e6aa25115a3 (diff)
downloadpkgsrc-40836863388a77e08daebcc9895cf888f58e8156.tar.gz
PR pkg/48840: Don't assume cocoa toolkit just because OS_ARCH is Darwin
Diffstat (limited to 'www/firefox')
-rw-r--r--www/firefox/distinfo8
-rw-r--r--www/firefox/patches/patch-dom_plugins_base_npapi.h132
-rw-r--r--www/firefox/patches/patch-dom_plugins_base_npfunctions.h24
-rw-r--r--www/firefox/patches/patch-dom_plugins_ipc_PluginMessageUtils.h138
-rw-r--r--www/firefox/patches/patch-ipc_chromium_moz.build18
-rw-r--r--www/firefox/patches/patch-ipc_chromium_src_base_process__util__bsd.cc166
-rw-r--r--www/firefox/patches/patch-netwerk_protocol_http_nsHttpHandler.cpp33
7 files changed, 518 insertions, 1 deletions
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
index 2f8f5e44a7f..2a4c32a5142 100644
--- a/www/firefox/distinfo
+++ b/www/firefox/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.146 2014/05/28 07:18:28 pho Exp $
+$NetBSD: distinfo,v 1.147 2014/05/28 10:08:18 pho Exp $
SHA1 (firefox-29.0.1.source.tar.bz2) = 2819ef63403de2bcfff5496bd21a3b8cb5dfce82
RMD160 (firefox-29.0.1.source.tar.bz2) = f728179a12a46824971ca01cf79eb0318e4775c5
@@ -48,6 +48,9 @@ SHA1 (patch-content_svg_content_src_nsSVGFilters.cpp) = ed8810687e5f5b60b64c5128
SHA1 (patch-content_svg_content_src_nsSVGFilters.h) = 37ead5c8f14551d843be8bc09be254175b38b4d7
SHA1 (patch-dom_indexedDB_IDBEvents.cpp) = 4b3c649fe0119b8b883cd4bcf25a594510096d50
SHA1 (patch-dom_indexedDB_IDBEvents.h) = 7558cd531ae408736e38efa2fdbff218e2d2124f
+SHA1 (patch-dom_plugins_base_npapi.h) = f0c9fa4ffbd6589afef70b69b08f1c03daa55676
+SHA1 (patch-dom_plugins_base_npfunctions.h) = 2ebb18a7d33ec035fc30e0bcd9af8b12958e6485
+SHA1 (patch-dom_plugins_ipc_PluginMessageUtils.h) = 66d653b2d765c74dba738e2f9a7b9f6aab44b465
SHA1 (patch-dom_plugins_ipc_PluginModuleChild.cpp) = 69b0a51d733cd52e7d200052362e0faf4ec918f1
SHA1 (patch-dom_plugins_ipc_PluginModuleChild.h) = 0a7f3167e939822013ae6195406657453578453e
SHA1 (patch-dom_system_OSFileConstants.cpp) = 6c45e3d5fa3369432ff59871a8cbc6176f297794
@@ -63,6 +66,7 @@ SHA1 (patch-image_decoders_nsJPEGDecoder.cpp) = e5df11499b1ec14e1d4c9a1408c0611d
SHA1 (patch-intl_hyphenation_src_hnjalloc.h) = 7fcc7b0fcf5a33486214197e925fbc8e6e22e2ee
SHA1 (patch-intl_unicharutil_util_Makefile.in) = c8f37cc420ba26b63c66fbbf69b13a8b4fea43fc
SHA1 (patch-ipc_chromium_Makefile.in) = 3a1f5b218217fc8e5e9a07195054618071c38059
+SHA1 (patch-ipc_chromium_moz.build) = de12255865e45cfdf0f7dc57ce101be75ac8ad54
SHA1 (patch-ipc_chromium_src_base_base__paths.h) = 7bc83577a9678542db4dff7dda19d751ff6d78c1
SHA1 (patch-ipc_chromium_src_base_debug__util__posix.cc) = 677f0b5ccdcde7a8551f2d07d2a472361a5da03f
SHA1 (patch-ipc_chromium_src_base_file__util.h) = 9d6d074b1692c6b4e722bfac8d67c66040a6fa76
@@ -71,6 +75,7 @@ SHA1 (patch-ipc_chromium_src_base_message__pump__libevent.cc) = 12f3e063cf3fef23
SHA1 (patch-ipc_chromium_src_base_platform__thread.h) = e6d7ac39a8b2a1b232638f7671e8530acfed0b97
SHA1 (patch-ipc_chromium_src_base_platform__thread__posix.cc) = e386bfd56ae6f77ef1aaadd0fa81af147a09f75d
SHA1 (patch-ipc_chromium_src_base_process__util.h) = 31b592d69d3c4f63642dae3c81c771ee3dfa8502
+SHA1 (patch-ipc_chromium_src_base_process__util__bsd.cc) = 4f05fce050796f86b5aedf910eb709c9969fa982
SHA1 (patch-ipc_chromium_src_base_process__util__posix.cc) = 6b2611cc902f17e726aabcf4fb5fff2c71852408
SHA1 (patch-ipc_chromium_src_base_sys__info__posix.cc) = 27890c56194e483fc0758ed767ca5795cc5112eb
SHA1 (patch-ipc_chromium_src_base_time__posix.cc) = 337a0b4a5d51d68c7699b79c7591b953ea23ca67
@@ -106,6 +111,7 @@ SHA1 (patch-memory_mozalloc_mozalloc__abort.cpp) = 9d9036ddd28c7b8ce37860e0120df
SHA1 (patch-mfbt_Poison.cpp) = b582943c02f57835451c9eecd004c9912d42ce84
SHA1 (patch-modules_libjar_nsZipArchive.cpp) = 6aff0f8ed42575d8ca36a524e12e9a1f7351004a
SHA1 (patch-netwerk_dns_Makefile.in) = b6bd9814d909dd6f7cff10dbeac3bedd79c2508e
+SHA1 (patch-netwerk_protocol_http_nsHttpHandler.cpp) = 517cf1ac41a06ce1d02c7e1a6c5e74a983307dd6
SHA1 (patch-netwerk_sctp_src_netinet6_sctp6__usrreq.c) = 31d49db31b1e130f1b455f883e5b7c606d438771
SHA1 (patch-netwerk_sctp_src_netinet_sctp__os__userspace.h) = b3f94ac0f2bd652371fef22c642b14bf30162998
SHA1 (patch-netwerk_sctp_src_netinet_sctp__usrreq.c) = 421b6e071a9934567ccba337033a42208e6e4bd5
diff --git a/www/firefox/patches/patch-dom_plugins_base_npapi.h b/www/firefox/patches/patch-dom_plugins_base_npapi.h
new file mode 100644
index 00000000000..a083a4f4082
--- /dev/null
+++ b/www/firefox/patches/patch-dom_plugins_base_npapi.h
@@ -0,0 +1,132 @@
+$NetBSD: patch-dom_plugins_base_npapi.h,v 1.1 2014/05/28 10:08:18 pho Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- dom/plugins/base/npapi.h.orig 2014-05-06 22:55:25.000000000 +0000
++++ dom/plugins/base/npapi.h
+@@ -43,7 +43,7 @@
+ #define NP_NO_CARBON
+ #endif
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #include <ApplicationServices/ApplicationServices.h>
+ #include <OpenGL/OpenGL.h>
+ #ifndef NP_NO_CARBON
+@@ -128,7 +128,7 @@ typedef char* NPMIMEType;
+ /*----------------------------------------------------------------------*/
+
+ #if !defined(__LP64__)
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #pragma options align=mac68k
+ #endif
+ #endif /* __LP64__ */
+@@ -269,7 +269,7 @@ typedef struct
+ #endif /* XP_UNIX */
+
+ typedef enum {
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #ifndef NP_NO_QUICKDRAW
+ NPDrawingModelQuickDraw = 0,
+ #endif
+@@ -290,7 +290,7 @@ typedef enum {
+ #endif
+ } NPDrawingModel;
+
+-#ifdef XP_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ typedef enum {
+ #ifndef NP_NO_CARBON
+ NPEventModelCarbon = 0,
+@@ -379,7 +379,7 @@ typedef enum {
+
+ /* Used for negotiating drawing models */
+ NPPVpluginDrawingModel = 1000
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ /* Used for negotiating event models */
+ , NPPVpluginEventModel = 1001
+ /* In the NPDrawingModelCoreAnimation drawing model, the browser asks the plug-in for a Core Animation layer. */
+@@ -420,7 +420,7 @@ typedef enum {
+ NPNVdocumentOrigin = 22,
+
+ NPNVpluginDrawingModel = 1000 /* Get the current drawing model (NPDrawingModel) */
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ , NPNVcontentsScaleFactor = 1001
+ #ifndef NP_NO_QUICKDRAW
+ , NPNVsupportsQuickDrawBool = 2000
+@@ -434,7 +434,7 @@ typedef enum {
+ #if defined(XP_WIN)
+ , NPNVsupportsAsyncWindowsDXGISurfaceBool = 2008
+ #endif
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #ifndef NP_NO_CARBON
+ , NPNVsupportsCarbonBool = 3000 /* TRUE if the browser supports the Carbon event model */
+ #endif
+@@ -478,7 +478,7 @@ typedef struct _NPWindow
+ uint32_t width; /* Maximum window size */
+ uint32_t height;
+ NPRect clipRect; /* Clipping rectangle in port coordinates */
+-#if (defined(XP_UNIX) || defined(XP_SYMBIAN)) && !defined(XP_MACOSX)
++#if (defined(XP_UNIX) || defined(XP_SYMBIAN)) && !defined(MOZ_WIDGET_COCOA)
+ void * ws_info; /* Platform-dependent additional data */
+ #endif /* XP_UNIX */
+ NPWindowType type; /* Is this a window or a drawable? */
+@@ -524,7 +524,7 @@ typedef struct _NPPrint
+ } print;
+ } NPPrint;
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #ifndef NP_NO_CARBON
+ typedef EventRecord NPEvent;
+ #endif
+@@ -550,7 +550,7 @@ typedef XEvent NPEvent;
+ typedef void* NPEvent;
+ #endif
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ typedef void* NPRegion;
+ #ifndef NP_NO_QUICKDRAW
+ typedef RgnHandle NPQDRegion;
+@@ -570,7 +570,7 @@ typedef struct _NPNSString NPNSString;
+ typedef struct _NPNSWindow NPNSWindow;
+ typedef struct _NPNSMenu NPNSMenu;
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ typedef NPNSMenu NPMenu;
+ #else
+ typedef void *NPMenu;
+@@ -584,7 +584,7 @@ typedef enum {
+ NPCoordinateSpaceFlippedScreen
+ } NPCoordinateSpace;
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+
+ #ifndef NP_NO_QUICKDRAW
+ typedef struct NP_Port
+@@ -688,7 +688,7 @@ enum NPEventType {
+ };
+ #endif /* NP_NO_CARBON */
+
+-#endif /* XP_MACOSX */
++#endif /* MOZ_WIDGET_COCOA */
+
+ /*
+ * Values for mode passed to NPP_New:
+@@ -713,7 +713,7 @@ enum NPEventType {
+ #define NP_CLEAR_CACHE (1 << 0)
+
+ #if !defined(__LP64__)
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #pragma options align=reset
+ #endif
+ #endif /* __LP64__ */
diff --git a/www/firefox/patches/patch-dom_plugins_base_npfunctions.h b/www/firefox/patches/patch-dom_plugins_base_npfunctions.h
new file mode 100644
index 00000000000..568fc25c53c
--- /dev/null
+++ b/www/firefox/patches/patch-dom_plugins_base_npfunctions.h
@@ -0,0 +1,24 @@
+$NetBSD: patch-dom_plugins_base_npfunctions.h,v 1.1 2014/05/28 10:08:18 pho Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- dom/plugins/base/npfunctions.h.orig 2014-05-06 22:55:25.000000000 +0000
++++ dom/plugins/base/npfunctions.h
+@@ -191,7 +191,7 @@ typedef struct _NPNetscapeFuncs {
+ NPN_SetCurrentAsyncSurfacePtr setcurrentasyncsurface;
+ } NPNetscapeFuncs;
+
+-#ifdef XP_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ /*
+ * Mac OS X version(s) of NP_GetMIMEDescription(const char *)
+ * These can be called to retreive MIME information from the plugin dynamically
+@@ -281,7 +281,7 @@ typedef char* (*NP_GetPluginVer
+ NP_EXPORT(char*) NP_GetPluginVersion(void);
+ typedef const char* (*NP_GetMIMEDescriptionFunc)(void);
+ NP_EXPORT(const char*) NP_GetMIMEDescription(void);
+-#ifdef XP_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ typedef NPError (*NP_InitializeFunc)(NPNetscapeFuncs*);
+ NP_EXPORT(NPError) NP_Initialize(NPNetscapeFuncs* bFuncs);
+ typedef NPError (*NP_GetEntryPointsFunc)(NPPluginFuncs*);
diff --git a/www/firefox/patches/patch-dom_plugins_ipc_PluginMessageUtils.h b/www/firefox/patches/patch-dom_plugins_ipc_PluginMessageUtils.h
new file mode 100644
index 00000000000..775c607f0de
--- /dev/null
+++ b/www/firefox/patches/patch-dom_plugins_ipc_PluginMessageUtils.h
@@ -0,0 +1,138 @@
+$NetBSD: patch-dom_plugins_ipc_PluginMessageUtils.h,v 1.1 2014/05/28 10:08:18 pho Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- dom/plugins/ipc/PluginMessageUtils.h.orig 2014-05-06 22:55:25.000000000 +0000
++++ dom/plugins/ipc/PluginMessageUtils.h
+@@ -25,7 +25,7 @@
+ #ifdef MOZ_CRASHREPORTER
+ # include "nsExceptionHandler.h"
+ #endif
+-#ifdef XP_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ #include "PluginInterposeOSX.h"
+ #else
+ namespace mac_plugin_interposing { class NSCursorInfo { }; }
+@@ -99,14 +99,14 @@ struct NPRemoteWindow
+ uint32_t height;
+ NPRect clipRect;
+ NPWindowType type;
+-#if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX)
++#if defined(MOZ_X11) && defined(XP_UNIX)
+ VisualID visualID;
+ Colormap colormap;
+ #endif /* XP_UNIX */
+ #if defined(XP_WIN)
+ base::SharedMemoryHandle surfaceHandle;
+ #endif
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ double contentsScaleFactor;
+ #endif
+ };
+@@ -115,7 +115,7 @@ struct NPRemoteWindow
+ typedef HWND NativeWindowHandle;
+ #elif defined(MOZ_X11)
+ typedef XID NativeWindowHandle;
+-#elif defined(XP_MACOSX) || defined(ANDROID) || defined(MOZ_WIDGET_QT)
++#elif defined(MOZ_WIDGET_COCOA) || defined(ANDROID) || defined(MOZ_WIDGET_QT)
+ typedef intptr_t NativeWindowHandle; // never actually used, will always be 0
+ #else
+ #error Need NativeWindowHandle for this platform
+@@ -160,7 +160,7 @@ NPPVariableToString(NPPVariable aVar)
+
+ VARSTR(NPPVpluginWantsAllNetworkStreams);
+
+-#ifdef XP_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ VARSTR(NPPVpluginDrawingModel);
+ VARSTR(NPPVpluginEventModel);
+ #endif
+@@ -377,14 +377,14 @@ struct ParamTraits<mozilla::plugins::NPR
+ WriteParam(aMsg, aParam.height);
+ WriteParam(aMsg, aParam.clipRect);
+ WriteParam(aMsg, aParam.type);
+-#if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX)
++#if defined(MOZ_X11) && defined(XP_UNIX)
+ aMsg->WriteULong(aParam.visualID);
+ aMsg->WriteULong(aParam.colormap);
+ #endif
+ #if defined(XP_WIN)
+ WriteParam(aMsg, aParam.surfaceHandle);
+ #endif
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ aMsg->WriteDouble(aParam.contentsScaleFactor);
+ #endif
+ }
+@@ -405,7 +405,7 @@ struct ParamTraits<mozilla::plugins::NPR
+ ReadParam(aMsg, aIter, &type)))
+ return false;
+
+-#if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX)
++#if defined(MOZ_X11) && defined(XP_UNIX)
+ unsigned long visualID;
+ unsigned long colormap;
+ if (!(aMsg->ReadULong(aIter, &visualID) &&
+@@ -419,7 +419,7 @@ struct ParamTraits<mozilla::plugins::NPR
+ return false;
+ #endif
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ double contentsScaleFactor;
+ if (!aMsg->ReadDouble(aIter, &contentsScaleFactor))
+ return false;
+@@ -432,14 +432,14 @@ struct ParamTraits<mozilla::plugins::NPR
+ aResult->height = height;
+ aResult->clipRect = clipRect;
+ aResult->type = type;
+-#if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX)
++#if defined(MOZ_X11) && defined(XP_UNIX)
+ aResult->visualID = visualID;
+ aResult->colormap = colormap;
+ #endif
+ #if defined(XP_WIN)
+ aResult->surfaceHandle = surfaceHandle;
+ #endif
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ aResult->contentsScaleFactor = contentsScaleFactor;
+ #endif
+ return true;
+@@ -492,7 +492,7 @@ struct ParamTraits<NPString>
+ }
+ };
+
+-#ifdef XP_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ template <>
+ struct ParamTraits<NPNSString*>
+ {
+@@ -563,7 +563,7 @@ struct ParamTraits<NPNSString*>
+ };
+ #endif
+
+-#ifdef XP_MACOSX
++#ifdef MOZ_WIDGET_COCOA
+ template <>
+ struct ParamTraits<NSCursorInfo>
+ {
+@@ -655,7 +655,7 @@ struct ParamTraits<NSCursorInfo>
+ return false;
+ }
+ };
+-#endif // #ifdef XP_MACOSX
++#endif // #ifdef MOZ_WIDGET_COCOA
+
+ template <>
+ struct ParamTraits<NPVariant>
+@@ -900,7 +900,7 @@ struct ParamTraits<NPCoordinateSpace>
+ //
+ // NB: these guards are based on those where struct NPEvent is defined
+ // in npapi.h. They should be kept in sync.
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ # include "mozilla/plugins/NPEventOSX.h"
+ #elif defined(XP_WIN)
+ # include "mozilla/plugins/NPEventWindows.h"
diff --git a/www/firefox/patches/patch-ipc_chromium_moz.build b/www/firefox/patches/patch-ipc_chromium_moz.build
new file mode 100644
index 00000000000..e98a922268e
--- /dev/null
+++ b/www/firefox/patches/patch-ipc_chromium_moz.build
@@ -0,0 +1,18 @@
+$NetBSD: patch-ipc_chromium_moz.build,v 1.1 2014/05/28 10:08:18 pho Exp $
+
+Don't assume cocoa toolkit just because OS_ARCH is Darwin.
+
+--- ipc/chromium/moz.build.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/chromium/moz.build
+@@ -19,7 +19,10 @@ if CONFIG['OS_ARCH'] == 'WINNT':
+ else:
+ os_posix = 1
+ if CONFIG['OS_ARCH'] == 'Darwin':
+- os_macosx = 1
++ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
++ os_macosx = 1
++ else:
++ os_bsd = 1
+ elif CONFIG['OS_ARCH'] == 'DragonFly':
+ os_dragonfly = 1
+ os_bsd = 1
diff --git a/www/firefox/patches/patch-ipc_chromium_src_base_process__util__bsd.cc b/www/firefox/patches/patch-ipc_chromium_src_base_process__util__bsd.cc
new file mode 100644
index 00000000000..dd0837d2c11
--- /dev/null
+++ b/www/firefox/patches/patch-ipc_chromium_src_base_process__util__bsd.cc
@@ -0,0 +1,166 @@
+$NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.1 2014/05/28 10:08:18 pho Exp $
+
+Darwin does not provide kvm_getprocs(3). The code for OS_MACOSX is
+simply copied from process_util_mac.mm
+
+--- ipc/chromium/src/base/process_util_bsd.cc.orig 2014-05-06 22:55:41.000000000 +0000
++++ ipc/chromium/src/base/process_util_bsd.cc
+@@ -15,7 +15,9 @@
+
+ #include <ctype.h>
+ #include <fcntl.h>
++#if defined(OS_BSD)
+ #include <kvm.h>
++#endif
+ #include <unistd.h>
+
+ #include <string>
+@@ -311,6 +313,141 @@ void SetCurrentProcessPrivileges(ChildPr
+
+ #endif
+
++#if defined(OS_MACOSX)
++NamedProcessIterator::NamedProcessIterator(const std::wstring& executable_name,
++ const ProcessFilter* filter)
++ : executable_name_(executable_name),
++ index_of_kinfo_proc_(0),
++ filter_(filter) {
++ // Get a snapshot of all of my processes (yes, as we loop it can go stale, but
++ // but trying to find where we were in a constantly changing list is basically
++ // impossible.
++
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_UID, int(geteuid()) };
++
++ // Since more processes could start between when we get the size and when
++ // we get the list, we do a loop to keep trying until we get it.
++ bool done = false;
++ int try_num = 1;
++ const int max_tries = 10;
++ do {
++ // Get the size of the buffer
++ size_t len = 0;
++ if (sysctl(mib, arraysize(mib), NULL, &len, NULL, 0) < 0) {
++ CHROMIUM_LOG(ERROR) << "failed to get the size needed for the process list";
++ kinfo_procs_.resize(0);
++ done = true;
++ } else {
++ size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ // Leave some spare room for process table growth (more could show up
++ // between when we check and now)
++ num_of_kinfo_proc += 4;
++ kinfo_procs_.resize(num_of_kinfo_proc);
++ len = num_of_kinfo_proc * sizeof(struct kinfo_proc);
++ // Load the list of processes
++ if (sysctl(mib, arraysize(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) {
++ // If we get a mem error, it just means we need a bigger buffer, so
++ // loop around again. Anything else is a real error and give up.
++ if (errno != ENOMEM) {
++ CHROMIUM_LOG(ERROR) << "failed to get the process list";
++ kinfo_procs_.resize(0);
++ done = true;
++ }
++ } else {
++ // Got the list, just make sure we're sized exactly right
++ size_t num_of_kinfo_proc = len / sizeof(struct kinfo_proc);
++ kinfo_procs_.resize(num_of_kinfo_proc);
++ done = true;
++ }
++ }
++ } while (!done && (try_num++ < max_tries));
++
++ if (!done) {
++ CHROMIUM_LOG(ERROR) << "failed to collect the process list in a few tries";
++ kinfo_procs_.resize(0);
++ }
++}
++
++NamedProcessIterator::~NamedProcessIterator() {
++}
++
++const ProcessEntry* NamedProcessIterator::NextProcessEntry() {
++ bool result = false;
++ do {
++ result = CheckForNextProcess();
++ } while (result && !IncludeEntry());
++
++ if (result) {
++ return &entry_;
++ }
++
++ return NULL;
++}
++
++bool NamedProcessIterator::CheckForNextProcess() {
++ std::string executable_name_utf8(WideToUTF8(executable_name_));
++
++ std::string data;
++ std::string exec_name;
++
++ for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
++ kinfo_proc* kinfo = &kinfo_procs_[index_of_kinfo_proc_];
++
++ // Skip processes just awaiting collection
++ if ((kinfo->kp_proc.p_pid > 0) && (kinfo->kp_proc.p_stat == SZOMB))
++ continue;
++
++ int mib[] = { CTL_KERN, KERN_PROCARGS, kinfo->kp_proc.p_pid };
++
++ // Found out what size buffer we need
++ size_t data_len = 0;
++ if (sysctl(mib, arraysize(mib), NULL, &data_len, NULL, 0) < 0) {
++ CHROMIUM_LOG(ERROR) << "failed to figure out the buffer size for a commandline";
++ continue;
++ }
++
++ data.resize(data_len);
++ if (sysctl(mib, arraysize(mib), &data[0], &data_len, NULL, 0) < 0) {
++ CHROMIUM_LOG(ERROR) << "failed to fetch a commandline";
++ continue;
++ }
++
++ // Data starts w/ the full path null termed, so we have to extract just the
++ // executable name from the path.
++
++ size_t exec_name_end = data.find('\0');
++ if (exec_name_end == std::string::npos) {
++ CHROMIUM_LOG(ERROR) << "command line data didn't match expected format";
++ continue;
++ }
++ size_t last_slash = data.rfind('/', exec_name_end);
++ if (last_slash == std::string::npos)
++ exec_name = data.substr(0, exec_name_end);
++ else
++ exec_name = data.substr(last_slash + 1, exec_name_end - last_slash - 1);
++
++ // Check the name
++ if (executable_name_utf8 == exec_name) {
++ entry_.pid = kinfo->kp_proc.p_pid;
++ entry_.ppid = kinfo->kp_eproc.e_ppid;
++ base::strlcpy(entry_.szExeFile, exec_name.c_str(),
++ sizeof(entry_.szExeFile));
++ // Start w/ the next entry next time through
++ ++index_of_kinfo_proc_;
++ // Done
++ return true;
++ }
++ }
++ return false;
++}
++
++bool NamedProcessIterator::IncludeEntry() {
++ // Don't need to check the name, we did that w/in CheckForNextProcess.
++ if (!filter_)
++ return true;
++ return filter_->Includes(entry_.pid, entry_.ppid);
++}
++#else
+ NamedProcessIterator::NamedProcessIterator(const std::wstring& executable_name,
+ const ProcessFilter* filter)
+ {
+@@ -370,5 +507,6 @@ const ProcessEntry* NamedProcessIterator
+ if (nextEntry >= content.size()) return NULL;
+ return &content[nextEntry++];
+ }
++#endif
+
+ } // namespace base
diff --git a/www/firefox/patches/patch-netwerk_protocol_http_nsHttpHandler.cpp b/www/firefox/patches/patch-netwerk_protocol_http_nsHttpHandler.cpp
new file mode 100644
index 00000000000..9c38e8926af
--- /dev/null
+++ b/www/firefox/patches/patch-netwerk_protocol_http_nsHttpHandler.cpp
@@ -0,0 +1,33 @@
+$NetBSD: patch-netwerk_protocol_http_nsHttpHandler.cpp,v 1.1 2014/05/28 10:08:18 pho Exp $
+
+nsCocoaFeatures is only available when the toolkit is cocoa.
+
+--- netwerk/protocol/http/nsHttpHandler.cpp.orig 2014-05-06 22:56:20.000000000 +0000
++++ netwerk/protocol/http/nsHttpHandler.cpp
+@@ -57,7 +57,7 @@
+ #include <windows.h>
+ #endif
+
+-#if defined(XP_MACOSX)
++#if defined(MOZ_WIDGET_COCOA)
+ #include <CoreServices/CoreServices.h>
+ #include "nsCocoaFeatures.h"
+ #endif
+@@ -671,7 +671,7 @@ nsHttpHandler::InitUserAgentComponents()
+ "OS/2"
+ #elif defined(XP_WIN)
+ "Windows"
+-#elif defined(XP_MACOSX)
++#elif defined(MOZ_WIDGET_COCOA)
+ "Macintosh"
+ #elif defined(MOZ_X11)
+ "X11"
+@@ -734,7 +734,7 @@ nsHttpHandler::InitUserAgentComponents()
+ PR_smprintf_free(buf);
+ }
+ }
+-#elif defined (XP_MACOSX)
++#elif defined (MOZ_WIDGET_COCOA)
+ #if defined(__ppc__)
+ mOscpu.AssignLiteral("PPC Mac OS X");
+ #elif defined(__i386__) || defined(__x86_64__)