aboutsummaryrefslogtreecommitdiff
path: root/www/chromium/files
diff options
context:
space:
mode:
authorRene Ladan <rene@FreeBSD.org>2011-10-18 18:36:21 +0000
committerRene Ladan <rene@FreeBSD.org>2011-10-18 18:36:21 +0000
commit49bd254a6b068cbbd84a397542dae0435606dffc (patch)
treee10fd3e9336fec7ef22575356adcbfb45d302d0d /www/chromium/files
parent185fd9100b9edcb1cf802b26853ac48914c83bf9 (diff)
Merge from Chruetertee repository:
- r235 : remove hacks in Zygote, allowing processes to exit more cleanly. - r248 : switch back to previous rendering method (the same as OSX uses). Bump PORTREVISION Submitted by: George Liaskos
Notes
Notes: svn path=/head/; revision=283839
Diffstat (limited to 'www/chromium/files')
-rw-r--r--www/chromium/files/patch-base__process_util.h22
-rw-r--r--www/chromium/files/patch-base__process_util_freebsd.cc12
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc11
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc11
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc20
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc20
-rw-r--r--www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h29
-rw-r--r--www/chromium/files/patch-content__browser__zygote_host_linux.cc62
-rw-r--r--www/chromium/files/patch-content__browser__zygote_host_linux.h12
-rw-r--r--www/chromium/files/patch-content__browser__zygote_main_linux.cc40
-rw-r--r--www/chromium/files/patch-content__common__common_param_traits.h11
-rw-r--r--www/chromium/files/patch-content__common__plugin_messages.h38
-rw-r--r--www/chromium/files/patch-content__common__view_messages.h11
-rw-r--r--www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc34
-rw-r--r--www/chromium/files/patch-content__renderer__render_process_impl.cc34
-rw-r--r--www/chromium/files/patch-content__renderer__render_view.cc29
-rw-r--r--www/chromium/files/patch-content__renderer__render_view.h29
-rw-r--r--www/chromium/files/patch-content__renderer__render_widget.cc11
-rw-r--r--www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc26
-rw-r--r--www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h20
-rw-r--r--www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc20
-rw-r--r--www/chromium/files/patch-ppapi__proxy__serialized_structs.h11
-rw-r--r--www/chromium/files/patch-ui__base__x__x11_util.cc21
-rw-r--r--www/chromium/files/patch-ui__gfx__surface__surface.gyp17
-rw-r--r--www/chromium/files/patch-ui__gfx__surface__transport_dib.h44
-rw-r--r--www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc110
26 files changed, 557 insertions, 148 deletions
diff --git a/www/chromium/files/patch-base__process_util.h b/www/chromium/files/patch-base__process_util.h
index 8aa26b63cf63..d33f037627a4 100644
--- a/www/chromium/files/patch-base__process_util.h
+++ b/www/chromium/files/patch-base__process_util.h
@@ -1,5 +1,5 @@
---- base/process_util.h.orig 2011-06-24 11:30:52.000000000 +0300
-+++ base/process_util.h 2011-06-26 16:55:34.997784494 +0300
+--- base/process_util.h.orig 2011-09-14 11:01:29.000000000 +0300
++++ base/process_util.h 2011-09-30 23:12:21.000000000 +0300
@@ -28,6 +28,10 @@
#include <sys/types.h>
#endif
@@ -20,23 +20,7 @@
// Returns the path to the executable of the given process.
BASE_API FilePath GetProcessExecutablePath(ProcessHandle process);
-@@ -172,13 +176,14 @@
- // Exposed for testing.
- BASE_API int ParseProcStatCPU(const std::string& input);
-
-+#elif defined(OS_LINUX)
- static const char kAdjustOOMScoreSwitch[] = "--adjust-oom-score";
-
- // This adjusts /proc/process/oom_adj so the Linux OOM killer will prefer
- // certain process types over others. The range for the adjustment is
- // [-17,15], with [0,15] being user accessible.
- BASE_API bool AdjustOOMScore(ProcessId process, int score);
--#endif
-+#endif /* defined(OS_LINUX) || defined(OS_FREEBSD) */
-
- #if defined(OS_POSIX)
- // Returns the ID for the parent of the given process.
-@@ -447,7 +452,7 @@
+@@ -467,7 +471,7 @@
#if defined(OS_WIN)
HANDLE snapshot_;
bool started_iteration_;
diff --git a/www/chromium/files/patch-base__process_util_freebsd.cc b/www/chromium/files/patch-base__process_util_freebsd.cc
index 0f00b7cf91b8..cfdafe209846 100644
--- a/www/chromium/files/patch-base__process_util_freebsd.cc
+++ b/www/chromium/files/patch-base__process_util_freebsd.cc
@@ -1,6 +1,6 @@
---- /dev/null 2011-03-21 20:44:00.000000000 +0200
-+++ base/process_util_freebsd.cc 2011-03-21 20:47:32.701912810 +0200
-@@ -0,0 +1,314 @@
+--- /dev/null 2011-10-02 18:27:33.000000000 +0300
++++ base/process_util_freebsd.cc 2011-10-02 18:26:22.000000000 +0300
+@@ -0,0 +1,320 @@
+// Copyright (c) 2009 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.
@@ -314,4 +314,10 @@
+ NOTIMPLEMENTED();
+ return;
+}
++
++bool AdjustOOMScore(ProcessId process, int score) {
++ NOTIMPLEMENTED();
++ return false;
+}
++
++} // namespace base
diff --git a/www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc b/www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc
new file mode 100644
index 000000000000..6060f7250042
--- /dev/null
+++ b/www/chromium/files/patch-content__browser__renderer_host__browser_render_process_host.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/browser_render_process_host.cc.orig 2011-03-20 22:02:04.283738713 +0200
++++ content/browser/renderer_host/browser_render_process_host.cc 2011-03-20 22:02:04.448747953 +0200
+@@ -886,7 +886,7 @@
+ HANDLE section = app::win::GetSectionFromProcess(
+ dib_id.handle, GetHandle(), false /* read write */);
+ return TransportDIB::Map(section);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On OSX, the browser allocates all DIBs and keeps a file descriptor around
+ // for each.
+ return widget_helper_->MapTransportDIB(dib_id);
diff --git a/www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc b/www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc
new file mode 100644
index 000000000000..e5de334d4a2e
--- /dev/null
+++ b/www/chromium/files/patch-content__browser__renderer_host__mock_render_process_host.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/mock_render_process_host.cc.orig 2010-12-16 02:11:57.000000000 +0100
++++ content/browser/renderer_host/mock_render_process_host.cc 2010-12-20 20:15:08.000000000 +0100
+@@ -106,7 +106,7 @@
+ DuplicateHandle(GetCurrentProcess(), dib_id.handle, GetCurrentProcess(),
+ &duped, 0, TRUE, DUPLICATE_SAME_ACCESS);
+ transport_dib_ = TransportDIB::Map(duped);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On Mac, TransportDIBs are always created in the browser, so we cannot map
+ // one from a dib_id.
+ transport_dib_ = TransportDIB::Create(100 * 100 * 4, 0);
diff --git a/www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc b/www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc
new file mode 100644
index 000000000000..7466aff71efd
--- /dev/null
+++ b/www/chromium/files/patch-content__browser__renderer_host__render_message_filter.cc
@@ -0,0 +1,20 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2011-06-24 11:30:32.000000000 +0300
++++ content/browser/renderer_host/render_message_filter.cc 2011-06-26 20:58:31.256783053 +0300
+@@ -360,7 +360,7 @@
+ OnCheckNotificationPermission)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_AllocateSharedMemoryBuffer,
+ OnAllocateSharedMemoryBuffer)
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_AllocTransportDIB, OnAllocTransportDIB)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_FreeTransportDIB, OnFreeTransportDIB)
+ #endif
+@@ -647,7 +647,7 @@
+ return context_getter->GetURLRequestContext();
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ void RenderMessageFilter::OnAllocTransportDIB(
+ size_t size, bool cache_in_browser, TransportDIB::Handle* handle) {
+ render_widget_helper_->AllocTransportDIB(size, cache_in_browser, handle);
diff --git a/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc b/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc
new file mode 100644
index 000000000000..1a5da08da1fc
--- /dev/null
+++ b/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.cc
@@ -0,0 +1,20 @@
+--- content/browser/renderer_host/render_widget_helper.cc.orig 2010-12-16 02:11:57.000000000 +0100
++++ content/browser/renderer_host/render_widget_helper.cc 2010-12-20 20:15:08.000000000 +0100
+@@ -58,7 +58,7 @@
+ // object, so we should not be destroyed unless pending_paints_ is empty!
+ DCHECK(pending_paints_.empty());
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ ClearAllocatedDIBs();
+ #endif
+ }
+@@ -274,7 +274,7 @@
+ host->CreateNewFullscreenWidget(route_id, popup_type);
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ TransportDIB* RenderWidgetHelper::MapTransportDIB(TransportDIB::Id dib_id) {
+ AutoLock locked(allocated_dibs_lock_);
+
diff --git a/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h b/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h
new file mode 100644
index 000000000000..c53632ea7233
--- /dev/null
+++ b/www/chromium/files/patch-content__browser__renderer_host__render_widget_helper.h
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_widget_helper.h.orig 2010-12-16 02:11:57.000000000 +0100
++++ content/browser/renderer_host/render_widget_helper.h 2010-12-20 20:15:08.000000000 +0100
+@@ -110,7 +110,7 @@
+ const base::TimeDelta& max_delay,
+ IPC::Message* msg);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // Given the id of a transport DIB, return a mapping to it or NULL on error.
+ TransportDIB* MapTransportDIB(TransportDIB::Id dib_id);
+ #endif
+@@ -134,7 +134,7 @@
+ WebKit::WebPopupType popup_type,
+ int* route_id);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // Called on the IO thread to handle the allocation of a TransportDIB. If
+ // |cache_in_browser| is |true|, then a copy of the shmem is kept by the
+ // browser, and it is the caller's repsonsibility to call
+@@ -191,7 +191,7 @@
+ // Called on the IO thread to resume a cross-site response.
+ void OnCrossSiteClosePageACK(const ViewMsg_ClosePage_Params& params);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // Called on destruction to release all allocated transport DIBs
+ void ClearAllocatedDIBs();
+
diff --git a/www/chromium/files/patch-content__browser__zygote_host_linux.cc b/www/chromium/files/patch-content__browser__zygote_host_linux.cc
index 4259f298b34e..20c71f7dda0f 100644
--- a/www/chromium/files/patch-content__browser__zygote_host_linux.cc
+++ b/www/chromium/files/patch-content__browser__zygote_host_linux.cc
@@ -1,65 +1,13 @@
---- content/browser/zygote_host_linux.cc.orig 2011-06-24 11:30:33.000000000 +0300
-+++ content/browser/zygote_host_linux.cc 2011-06-26 21:23:29.109780851 +0300
-@@ -61,8 +61,16 @@
- }
-
- ZygoteHost::~ZygoteHost() {
-- if (init_)
-+#if defined(OS_FREEBSD)
-+ Pickle pickle;
-+#endif
-+ if (init_) {
-+#if defined(OS_FREEBSD)
-+ pickle.WriteInt(kCmdEnd);
-+ HANDLE_EINTR(write(control_fd_, pickle.data(), pickle.size()));
-+#endif
- close(control_fd_);
-+ }
- }
-
- // static
-@@ -160,6 +168,7 @@
- // We need to look for it.
- // But first, wait for the zygote to tell us it's running.
- // The sending code is in chrome/browser/zygote_main_linux.cc.
-+#if defined(OS_LINUX)
- std::vector<int> fds_vec;
- const int kExpectedLength = sizeof(kZygoteMagic);
- char buf[kExpectedLength];
-@@ -190,6 +199,7 @@
- // Reap the sandbox.
- ProcessWatcher::EnsureProcessGetsReaped(process);
- }
-+#endif // defined(OS_LINUX)
- } else {
- // Not using the SUID sandbox.
- pid_ = process;
-@@ -256,9 +266,11 @@
- if (pid <= 0)
+--- content/browser/zygote_host_linux.cc.orig 2011-10-02 18:12:41.000000000 +0300
++++ content/browser/zygote_host_linux.cc 2011-10-02 18:11:51.000000000 +0300
+@@ -259,8 +259,10 @@
return base::kNullProcessHandle;
}
--
-+
-+#if defined(OS_LINUX)
+
++#if !defined(OS_FREEBSD)
const int kRendererScore = 5;
AdjustRendererOOMScore(pid, kRendererScore);
+#endif
return pid;
}
-@@ -296,6 +308,7 @@
- selinux_valid = true;
- }
-
-+#if defined(OS_LINUX)
- if (using_suid_sandbox_ && !selinux) {
- base::ProcessHandle sandbox_helper_process;
- std::vector<std::string> adj_oom_score_cmdline;
-@@ -313,6 +326,7 @@
- if (!base::AdjustOOMScore(pid, score))
- PLOG(ERROR) << "Failed to adjust OOM score of renderer with pid " << pid;
- }
-+#endif // defined(OS_LINUX)
- }
-
- void ZygoteHost::EnsureProcessTerminated(pid_t process) {
diff --git a/www/chromium/files/patch-content__browser__zygote_host_linux.h b/www/chromium/files/patch-content__browser__zygote_host_linux.h
deleted file mode 100644
index edfc30d2c3f9..000000000000
--- a/www/chromium/files/patch-content__browser__zygote_host_linux.h
+++ /dev/null
@@ -1,12 +0,0 @@
---- content/browser/zygote_host_linux.h.orig 2010-12-16 02:11:58.000000000 +0100
-+++ content/browser/zygote_host_linux.h 2010-12-20 20:15:08.000000000 +0100
-@@ -51,6 +51,9 @@
- kCmdReap = 1, // Reap a renderer child.
- kCmdGetTerminationStatus = 2, // Check what happend to a child process.
- kCmdGetSandboxStatus = 3, // Read a bitmask of kSandbox*
-+#if defined(OS_FREEBSD)
-+ kCmdEnd = 5, // Kill zygote for SOCK_DGRAM.
-+#endif
- };
-
- // These form a bitmask which describes the conditions of the sandbox that
diff --git a/www/chromium/files/patch-content__browser__zygote_main_linux.cc b/www/chromium/files/patch-content__browser__zygote_main_linux.cc
index faf80f83ad1d..32cde774d1a5 100644
--- a/www/chromium/files/patch-content__browser__zygote_main_linux.cc
+++ b/www/chromium/files/patch-content__browser__zygote_main_linux.cc
@@ -1,6 +1,6 @@
---- content/browser/zygote_main_linux.cc.orig 2011-06-24 11:30:33.000000000 +0300
-+++ content/browser/zygote_main_linux.cc 2011-06-26 21:25:52.734780676 +0300
-@@ -58,7 +58,7 @@
+--- content/browser/zygote_main_linux.cc.orig 2011-09-14 11:01:10.000000000 +0300
++++ content/browser/zygote_main_linux.cc 2011-10-02 15:28:48.000000000 +0300
+@@ -57,7 +57,7 @@
#endif
#if defined(ARCH_CPU_X86_FAMILY) && !defined(CHROMIUM_SELINUX) && \
@@ -9,32 +9,20 @@
// The seccomp sandbox is enabled on all ia32 and x86-64 processor as long as
// we aren't using SELinux or clang.
#define SECCOMP_SANDBOX
-@@ -181,6 +181,11 @@
- case ZygoteHost::kCmdGetSandboxStatus:
- HandleGetSandboxStatus(fd, pickle, iter);
- return false;
-+#if defined(OS_FREEBSD)
-+ case ZygoteHost::kCmdEnd:
-+ _exit(0);
-+ return false;
-+#endif
- default:
- NOTREACHED();
- break;
-@@ -667,7 +672,7 @@
-
- SkiaFontConfigSetImplementation(
- new FontConfigIPC(kMagicSandboxIPCDescriptor));
--
+@@ -720,11 +720,16 @@
+ // dumpable.
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ if (!command_line.HasSwitch(switches::kAllowSandboxDebugging)) {
+#if !defined(OS_FREEBSD)
- // Previously, we required that the binary be non-readable. This causes the
- // kernel to mark the process as non-dumpable at startup. The thinking was
- // that, although we were putting the renderers into a PID namespace (with
-@@ -693,6 +698,7 @@
+ prctl(PR_SET_DUMPABLE, 0, 0, 0, 0);
+ if (prctl(PR_GET_DUMPABLE, 0, 0, 0, 0)) {
+ LOG(ERROR) << "Failed to set non-dumpable flag";
return false;
}
++#else
++ NOTIMPLEMENTED();
++ return false;
++#endif
}
-+#endif // !OS_FREEBSD
} else if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableSeccompSandbox)) {
- PreSandboxInit();
diff --git a/www/chromium/files/patch-content__common__common_param_traits.h b/www/chromium/files/patch-content__common__common_param_traits.h
new file mode 100644
index 000000000000..1cb5579ec583
--- /dev/null
+++ b/www/chromium/files/patch-content__common__common_param_traits.h
@@ -0,0 +1,11 @@
+--- content/common/common_param_traits.h.orig 2011-06-06 00:08:49.215163238 +0300
++++ content/common/common_param_traits.h 2011-06-06 00:09:04.929165157 +0300
+@@ -187,7 +187,7 @@
+ };
+ #endif
+
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_FREEBSD)
+ template<>
+ struct ParamTraits<TransportDIB::Id> {
+ typedef TransportDIB::Id param_type;
diff --git a/www/chromium/files/patch-content__common__plugin_messages.h b/www/chromium/files/patch-content__common__plugin_messages.h
new file mode 100644
index 000000000000..bed300ec9240
--- /dev/null
+++ b/www/chromium/files/patch-content__common__plugin_messages.h
@@ -0,0 +1,38 @@
+--- content/common/plugin_messages.h.orig 2011-07-28 11:01:09.000000000 +0300
++++ content/common/plugin_messages.h 2011-09-06 23:29:54.000000000 +0300
+@@ -111,7 +111,7 @@
+ gfx::PluginWindowHandle /* output: X window id */)
+ #endif
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On Mac OS X, we need the browser to keep track of plugin windows so
+ // that it can add and remove them from stacking groups, hide and show the
+ // menu bar, etc. We pass the window rect for convenience so that the
+@@ -206,7 +206,7 @@
+ IPC_MESSAGE_ROUTED1(PluginMsg_SetContentAreaFocus,
+ bool /* has_focus */)
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ IPC_MESSAGE_ROUTED1(PluginMsg_SetWindowFocus,
+ bool /* has_focus */)
+
+@@ -278,7 +278,7 @@
+ IPC_MESSAGE_CONTROL1(PluginMsg_ResetModalDialogEvent,
+ gfx::NativeViewId /* containing_window */)
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // This message, used only on 10.6 and later, transmits the "fake"
+ // window handle allocated by the browser on behalf of the renderer
+ // to the GPU plugin.
+@@ -358,7 +358,7 @@
+
+ IPC_MESSAGE_CONTROL0(PluginHostMsg_PluginShuttingDown)
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ IPC_MESSAGE_ROUTED1(PluginHostMsg_FocusChanged,
+ bool /* focused */)
+
diff --git a/www/chromium/files/patch-content__common__view_messages.h b/www/chromium/files/patch-content__common__view_messages.h
new file mode 100644
index 000000000000..1ad3b87f2782
--- /dev/null
+++ b/www/chromium/files/patch-content__common__view_messages.h
@@ -0,0 +1,11 @@
+--- content/common/view_messages.h.orig 2011-06-05 19:01:24.752163332 +0300
++++ content/common/view_messages.h 2011-06-05 19:01:40.420163036 +0300
+@@ -1783,7 +1783,7 @@
+ IPC_MESSAGE_CONTROL1(ViewHostMsg_SuddenTerminationChanged,
+ bool /* enabled */)
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On OSX, we cannot allocated shared memory from within the sandbox, so
+ // this call exists for the renderer to ask the browser to allocate memory
+ // on its behalf. We return a file descriptor to the POSIX shared memory.
diff --git a/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc b/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc
index 78c4b0de95e2..30d9fc55bc7e 100644
--- a/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc
+++ b/www/chromium/files/patch-content__renderer__pepper_plugin_delegate_impl.cc
@@ -1,11 +1,29 @@
---- content/renderer/pepper_plugin_delegate_impl.cc.orig 2011-09-19 00:22:00.000000000 +0300
-+++ content/renderer/pepper_plugin_delegate_impl.cc 2011-09-19 00:22:35.000000000 +0300
-@@ -141,7 +141,7 @@
+--- content/renderer/pepper_plugin_delegate_impl.cc.orig 2011-05-06 12:02:55.000000000 +0300
++++ content/renderer/pepper_plugin_delegate_impl.cc 2011-06-04 14:31:17.879380898 +0300
+@@ -112,7 +112,7 @@
+ dib_(dib) {
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On Mac, we have to tell the browser to free the transport DIB.
+ virtual ~PlatformImage2DImpl() {
+ if (dib_.get()) {
+@@ -130,7 +130,7 @@
+ *byte_count = dib_->size();
+ #if defined(OS_WIN)
return reinterpret_cast<intptr_t>(dib_->handle());
- #elif defined(OS_MACOSX)
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
return static_cast<intptr_t>(dib_->handle().fd);
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_FREEBSD)
+ #elif defined(OS_LINUX)
return static_cast<intptr_t>(dib_->handle());
- #endif
- }
+@@ -758,7 +758,7 @@
+ uint32 buffer_size = width * height * 4;
+
+ // Allocate the transport DIB and the PlatformCanvas pointing to it.
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On the Mac, shared memory has to be created in the browser in order to
+ // work in the sandbox. Do this by sending a message to the browser
+ // requesting a TransportDIB (see also
diff --git a/www/chromium/files/patch-content__renderer__render_process_impl.cc b/www/chromium/files/patch-content__renderer__render_process_impl.cc
index 887915c68e29..cb310856542e 100644
--- a/www/chromium/files/patch-content__renderer__render_process_impl.cc
+++ b/www/chromium/files/patch-content__renderer__render_process_impl.cc
@@ -1,28 +1,24 @@
---- content/renderer/render_process_impl.cc.orig 2011-09-14 01:53:06.000000000 +0300
-+++ content/renderer/render_process_impl.cc 2011-09-14 01:55:08.000000000 +0300
-@@ -87,7 +87,7 @@
-
- bool RenderProcessImpl::InProcessPlugins() {
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_FREEBSD)
- // Plugin processes require a UI message loop, and the Linux message loop
- // implementation only allows one UI loop per process.
- if (command_line.HasSwitch(switches::kInProcessPlugins))
-@@ -103,10 +103,10 @@
- // Platform specific code for dealing with bitmap transport...
-
- TransportDIB* RenderProcessImpl::CreateTransportDIB(size_t size) {
--#if defined(OS_WIN) || defined(OS_LINUX)
-+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)
+--- content/renderer/render_process_impl.cc.orig 2010-12-16 02:11:59.000000000 +0100
++++ content/renderer/render_process_impl.cc 2010-12-20 20:15:08.000000000 +0100
+@@ -243,7 +243,7 @@
+ #if defined(OS_WIN) || defined(OS_LINUX)
// Windows and Linux create transport DIBs inside the renderer
return TransportDIB::Create(size, transport_dib_next_sequence_number_++);
-#elif defined(OS_MACOSX) // defined(OS_WIN) || defined(OS_LINUX)
-+#elif defined(OS_MACOSX) // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD) // defined(OS_WIN) || defined(OS_LINUX)
// Mac creates transport DIBs in the browser, so we need to do a sync IPC to
// get one. The TransportDIB is cached in the browser.
TransportDIB::Handle handle;
-@@ -141,7 +141,7 @@
+@@ -260,7 +260,7 @@
+ if (!dib)
+ return;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On Mac we need to tell the browser that it can drop a reference to the
+ // shared memory.
+ IPC::Message* msg = new ViewHostMsg_FreeTransportDIB(dib->id());
+@@ -278,7 +278,7 @@
int width = rect.width();
int height = rect.height();
const size_t stride = skia::PlatformCanvas::StrideForWidth(rect.width());
diff --git a/www/chromium/files/patch-content__renderer__render_view.cc b/www/chromium/files/patch-content__renderer__render_view.cc
new file mode 100644
index 000000000000..71157cce85e5
--- /dev/null
+++ b/www/chromium/files/patch-content__renderer__render_view.cc
@@ -0,0 +1,29 @@
+--- content/renderer/render_view.cc.orig 2011-08-30 11:58:21.000000000 +0300
++++ content/renderer/render_view.cc 2011-09-11 22:31:33.000000000 +0300
+@@ -437,7 +437,7 @@
+ file_chooser_completions_.pop_front();
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // Destroy all fake plugin window handles on the browser side.
+ while (!fake_plugin_window_handles_.empty()) {
+ // Make sure no NULL plugin window handles were inserted into this list.
+@@ -1522,7 +1522,7 @@
+ }
+
+ bool RenderView::isSmartInsertDeleteEnabled() {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ return true;
+ #else
+ return false;
+@@ -4187,7 +4187,7 @@
+ return true;
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ void RenderView::PluginFocusChanged(bool focused, int plugin_id) {
+ IPC::Message* msg = new ViewHostMsg_PluginFocusChanged(routing_id(),
+ focused, plugin_id);
diff --git a/www/chromium/files/patch-content__renderer__render_view.h b/www/chromium/files/patch-content__renderer__render_view.h
new file mode 100644
index 000000000000..17b9d7ca4971
--- /dev/null
+++ b/www/chromium/files/patch-content__renderer__render_view.h
@@ -0,0 +1,29 @@
+--- content/renderer/render_view.h.orig 2011-09-10 18:40:54.000000000 +0300
++++ content/renderer/render_view.h 2011-09-10 19:13:46.000000000 +0300
+@@ -312,7 +312,7 @@
+ // Request updated policy regarding firewall NAT traversal being enabled.
+ void RequestRemoteAccessClientFirewallTraversal();
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // Informs the render view that the given plugin has gained or lost focus.
+ void PluginFocusChanged(bool focused, int plugin_id);
+
+@@ -654,7 +654,7 @@
+ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, OnSetTextDirection);
+ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, StaleNavigationsIgnored);
+ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, UpdateTargetURLWithInvalidURL);
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp);
+ #endif
+ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, SetHistoryLengthAndPrune);
+@@ -1079,7 +1079,7 @@
+ // states for the sizes).
+ base::OneShotTimer<RenderView> check_preferred_size_timer_;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // Track the fake plugin window handles allocated on the browser side for
+ // the accelerated compositor and (currently) accelerated plugins so that
+ // we can discard them when the view goes away.
diff --git a/www/chromium/files/patch-content__renderer__render_widget.cc b/www/chromium/files/patch-content__renderer__render_widget.cc
new file mode 100644
index 000000000000..b5c827ad163a
--- /dev/null
+++ b/www/chromium/files/patch-content__renderer__render_widget.cc
@@ -0,0 +1,11 @@
+--- content/renderer/render_widget.cc.orig 2011-03-23 00:47:39.891641114 +0200
++++ content/renderer/render_widget.cc 2011-03-23 00:48:36.043641158 +0200
+@@ -888,7 +888,7 @@
+ // Close our unused handle.
+ #if defined(OS_WIN)
+ ::CloseHandle(dib_handle);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ base::SharedMemory::CloseHandle(dib_handle);
+ #endif
+ }
diff --git a/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc b/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc
new file mode 100644
index 000000000000..772b38d5ca50
--- /dev/null
+++ b/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.cc
@@ -0,0 +1,26 @@
+--- content/renderer/webplugin_delegate_proxy.cc.orig 2011-08-30 11:58:21.000000000 +0300
++++ content/renderer/webplugin_delegate_proxy.cc 2011-09-11 22:57:59.000000000 +0300
+@@ -494,7 +494,7 @@
+ static void CopyTransportDIBHandleForMessage(
+ const TransportDIB::Handle& handle_in,
+ TransportDIB::Handle* handle_out) {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // On Mac, TransportDIB::Handle is typedef'ed to FileDescriptor, and
+ // FileDescriptor message fields needs to remain valid until the message is
+ // sent or else the sendmsg() call will fail.
+@@ -644,12 +644,12 @@
+ scoped_ptr<TransportDIB>* memory,
+ scoped_ptr<skia::PlatformCanvas>* canvas) {
+ const size_t size = BitmapSizeForPluginRect(plugin_rect_);
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && !defined(OS_FREEBSD)
+ memory->reset(TransportDIB::Create(size, 0));
+ if (!memory->get())
+ return false;
+ #endif
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
+ TransportDIB::Handle handle;
+ IPC::Message* msg = new ViewHostMsg_AllocTransportDIB(size, false, &handle);
+ if (!RenderThread::current()->Send(msg))
diff --git a/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h b/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h
new file mode 100644
index 000000000000..d61b89975e60
--- /dev/null
+++ b/www/chromium/files/patch-content__renderer__webplugin_delegate_proxy.h
@@ -0,0 +1,20 @@
+--- content/renderer/webplugin_delegate_proxy.h.orig 2011-09-11 19:07:19.000000000 +0300
++++ content/renderer/webplugin_delegate_proxy.h 2011-09-11 19:07:36.000000000 +0300
+@@ -21,7 +21,7 @@
+ #include "webkit/plugins/npapi/webplugininfo.h"
+ #include "webkit/plugins/npapi/webplugin_delegate.h"
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ #include "base/hash_tables.h"
+ #include "base/memory/linked_ptr.h"
+ #endif
+@@ -243,7 +243,7 @@
+ // point the window has already been destroyed).
+ void WillDestroyWindow();
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_FREEBSD)
+ // Synthesize a fake window handle for the plug-in to identify the instance
+ // to the browser, allowing mapping to a surface for hardware acceleration
+ // of plug-in content. The browser generates the handle which is then set on
diff --git a/www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc b/www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc
new file mode 100644
index 000000000000..b4f7bd82abae
--- /dev/null
+++ b/www/chromium/files/patch-ppapi__proxy__ppb_image_data_proxy.cc
@@ -0,0 +1,20 @@
+--- ppapi/proxy/ppb_image_data_proxy.cc.orig 2011-06-28 23:59:12.540806582 +0300
++++ ppapi/proxy/ppb_image_data_proxy.cc 2011-06-28 23:59:15.075806980 +0300
+@@ -111,7 +111,7 @@
+
+ #if defined(OS_WIN)
+ const ImageHandle ImageData::NullHandle = NULL;
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ const ImageHandle ImageData::NullHandle = ImageHandle();
+ #else
+ const ImageHandle ImageData::NullHandle = 0;
+@@ -120,7 +120,7 @@
+ ImageHandle ImageData::HandleFromInt(int32_t i) {
+ #if defined(OS_WIN)
+ return reinterpret_cast<ImageHandle>(i);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ return ImageHandle(i, false);
+ #else
+ return static_cast<ImageHandle>(i);
diff --git a/www/chromium/files/patch-ppapi__proxy__serialized_structs.h b/www/chromium/files/patch-ppapi__proxy__serialized_structs.h
new file mode 100644
index 000000000000..e23ca7e4adf1
--- /dev/null
+++ b/www/chromium/files/patch-ppapi__proxy__serialized_structs.h
@@ -0,0 +1,11 @@
+--- ppapi/proxy/serialized_structs.h.orig 2011-06-27 23:46:48.860441060 +0300
++++ ppapi/proxy/serialized_structs.h 2011-06-27 23:46:52.210441968 +0300
+@@ -115,7 +115,7 @@
+
+ #if defined(OS_WIN)
+ typedef HANDLE ImageHandle;
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ typedef base::SharedMemoryHandle ImageHandle;
+ #else
+ // On X Windows this is a SysV shared memory key.
diff --git a/www/chromium/files/patch-ui__base__x__x11_util.cc b/www/chromium/files/patch-ui__base__x__x11_util.cc
index 7e54bebb7d52..2d4868d87d3e 100644
--- a/www/chromium/files/patch-ui__base__x__x11_util.cc
+++ b/www/chromium/files/patch-ui__base__x__x11_util.cc
@@ -1,6 +1,19 @@
---- ui/base/x/x11_util.cc.orig 2011-09-21 11:09:03.000000000 +0300
-+++ ui/base/x/x11_util.cc 2011-09-21 11:10:13.000000000 +0300
-@@ -112,8 +112,6 @@
+--- ui/base/x/x11_util.cc.orig 2011-10-12 12:02:46.000000000 +0300
++++ ui/base/x/x11_util.cc 2011-10-16 17:17:46.000000000 +0300
+@@ -103,6 +103,12 @@
+ static SharedMemorySupport DoQuerySharedMemorySupport(Display* dpy) {
+ int dummy;
+ Bool pixmaps_supported;
++
++#if defined(OS_FREEBSD)
++ if (!CommandLine::ForCurrentProcess()->HasSwitch("enable-xshm"))
++ return SHARED_MEMORY_NONE;
++#endif
++
+ // Query the server's support for XSHM.
+ if (!XShmQueryVersion(dpy, &dummy, &dummy, &pixmaps_supported))
+ return SHARED_MEMORY_NONE;
+@@ -112,8 +118,6 @@
if (shmkey == -1)
return SHARED_MEMORY_NONE;
void* address = shmat(shmkey, NULL, 0);
@@ -9,7 +22,7 @@
XShmSegmentInfo shminfo;
memset(&shminfo, 0, sizeof(shminfo));
-@@ -125,6 +123,7 @@
+@@ -125,6 +129,7 @@
if (gdk_error_trap_pop())
result = false;
shmdt(address);
diff --git a/www/chromium/files/patch-ui__gfx__surface__surface.gyp b/www/chromium/files/patch-ui__gfx__surface__surface.gyp
new file mode 100644
index 000000000000..7fd590484503
--- /dev/null
+++ b/www/chromium/files/patch-ui__gfx__surface__surface.gyp
@@ -0,0 +1,17 @@
+--- ui/gfx/surface/surface.gyp.orig 2011-09-09 21:37:36.000000000 +0300
++++ ui/gfx/surface/surface.gyp 2011-09-09 21:45:23.000000000 +0300
+@@ -14,6 +14,14 @@
+ '<(DEPTH)/third_party/angle/include',
+ ],
+ }],
++ ['OS == "freebsd"', {
++ 'sources!': [
++ 'transport_dib_linux.cc',
++ ],
++ 'sources': [
++ 'transport_dib_freebsd.cc',
++ ],
++ }],
+ ],
+ },
+ 'targets': [
diff --git a/www/chromium/files/patch-ui__gfx__surface__transport_dib.h b/www/chromium/files/patch-ui__gfx__surface__transport_dib.h
new file mode 100644
index 000000000000..4165a37e33bd
--- /dev/null
+++ b/www/chromium/files/patch-ui__gfx__surface__transport_dib.h
@@ -0,0 +1,44 @@
+--- ui/gfx/surface/transport_dib.h.orig 2011-05-06 12:03:42.000000000 +0300
++++ ui/gfx/surface/transport_dib.h 2011-06-05 21:06:20.559165060 +0300
+@@ -8,7 +8,7 @@
+
+ #include "base/basictypes.h"
+
+-#if defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_FREEBSD)
+ #include "base/shared_memory.h"
+ #endif
+
+@@ -78,7 +78,7 @@
+ static int fake_handle = 10;
+ return reinterpret_cast<Handle>(fake_handle++);
+ }
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_FREEBSD)
+ typedef base::SharedMemoryHandle Handle;
+ // On Mac, the inode number of the backing file is used as an id.
+ typedef base::SharedMemoryId Id;
+@@ -93,7 +93,7 @@
+ static int fake_handle = 10;
+ return Handle(fake_handle++, false);
+ }
+-#elif defined(USE_X11)
++#elif defined(OS_LINUX)
+ typedef int Handle; // These two ints are SysV IPC shared memory keys
+ struct Id {
+ // Ensure that default initialized Ids are invalid.
+@@ -184,11 +184,12 @@
+
+ private:
+ TransportDIB();
+-#if defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_FREEBSD)
+ explicit TransportDIB(base::SharedMemoryHandle dib);
+ base::SharedMemory shared_memory_;
+ uint32 sequence_num_;
+-#elif defined(USE_X11)
++#endif
++#if defined(USE_X11)
+ Id key_; // SysV shared memory id
+ void* address_; // mapped address
+ XSharedMemoryId x_shm_; // X id for the shared segment
diff --git a/www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc b/www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc
new file mode 100644
index 000000000000..8d1eb2332774
--- /dev/null
+++ b/www/chromium/files/patch-ui__gfx__surface__transport_dib_freebsd.cc
@@ -0,0 +1,110 @@
+--- /dev/null 2011-06-28 23:33:00.000000000 +0300
++++ ui/gfx/surface/transport_dib_freebsd.cc 2011-06-28 23:30:26.428806593 +0300
+@@ -0,0 +1,107 @@
++// Copyright (c) 2011 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.
++
++#include "ui/gfx/surface/transport_dib.h"
++
++#include <unistd.h>
++#include <sys/stat.h>
++
++#include "base/eintr_wrapper.h"
++#include "base/logging.h"
++#include "base/memory/scoped_ptr.h"
++#include "base/shared_memory.h"
++#include "skia/ext/platform_canvas.h"
++
++TransportDIB::TransportDIB()
++ : size_(0) {
++}
++
++TransportDIB::TransportDIB(TransportDIB::Handle dib)
++ : shared_memory_(dib, false /* read write */),
++ size_(0) {
++}
++
++TransportDIB::~TransportDIB() {
++}
++
++// static
++TransportDIB* TransportDIB::Create(size_t size, uint32 sequence_num) {
++ TransportDIB* dib = new TransportDIB;
++ if (!dib->shared_memory_.CreateAndMapAnonymous(size)) {
++ delete dib;
++ return NULL;
++ }
++
++ dib->size_ = size;
++ return dib;
++}
++
++// static
++TransportDIB* TransportDIB::Map(Handle handle) {
++ scoped_ptr<TransportDIB> dib(CreateWithHandle(handle));
++ if (!dib->Map())
++ return NULL;
++ return dib.release();
++}
++
++// static
++TransportDIB* TransportDIB::CreateWithHandle(Handle handle) {
++ return new TransportDIB(handle);
++}
++
++// static
++bool TransportDIB::is_valid_handle(Handle dib) {
++ return dib.fd >= 0;
++}
++
++// static
++bool TransportDIB::is_valid_id(Id id) {
++ return id != 0;
++}
++
++skia::PlatformCanvas* TransportDIB::GetPlatformCanvas(int w, int h) {
++ if (!memory() && !Map())
++ return NULL;
++ scoped_ptr<skia::PlatformCanvas> canvas(new skia::PlatformCanvas);
++ if (!canvas->initialize(w, h, true, reinterpret_cast<uint8_t*>(memory())))
++ return NULL;
++ return canvas.release();
++}
++
++bool TransportDIB::Map() {
++ if (!is_valid_handle(handle()))
++ return false;
++ if (memory())
++ return true;
++
++ struct stat st;
++ if ((fstat(shared_memory_.handle().fd, &st) != 0) ||
++ (!shared_memory_.Map(st.st_size))) {
++ return false;
++ }
++
++ size_ = st.st_size;
++ return true;
++}
++
++void* TransportDIB::memory() const {
++ return shared_memory_.memory();
++}
++
++TransportDIB::Id TransportDIB::id() const {
++ return shared_memory_.id();
++}
++
++TransportDIB::Handle TransportDIB::handle() const {
++ return shared_memory_.handle();
++}
++
++XID TransportDIB::MapToX(Display* display) {
++ if (!x_shm_) {
++ x_shm_ = ui::AttachSharedMemory(display, key_);
++ display_ = display;
++ }
++
++ return x_shm_;
++}