Index: ipc/ipc_message_utils.cc |
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc |
index f86022c691a09cded39dc2cd21928bcaca8b9646..fe3bbdba2ccf5829aeb5aa200dcd53be69fe82c6 100644 |
--- a/ipc/ipc_message_utils.cc |
+++ b/ipc/ipc_message_utils.cc |
@@ -20,6 +20,10 @@ |
#include "ipc/ipc_platform_file_attachment_posix.h" |
#endif |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+#include "base/memory/shared_memory_handle.h" |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
+ |
#if defined(OS_WIN) |
#include <tchar.h> |
#endif |
@@ -516,6 +520,38 @@ void ParamTraits<base::FileDescriptor>::Log(const param_type& p, |
} |
#endif // defined(OS_POSIX) |
+#if defined(OS_MACOSX) && !defined(OS_IOS) |
+void ParamTraits<base::SharedMemoryHandle>::Write(Message* m, |
+ const param_type& p) { |
+ p.WriteMechanismToPickle(m); |
+ |
+ if (p.IsBackedByPOSIXFd()) |
+ ParamTraits<base::FileDescriptor>::Write(m, *p.GetFileDescriptor()); |
Robert Sesek
2015/06/15 21:34:33
Hm… looking at this again, it's a bit odd to have
erikchen
2015/06/16 00:59:27
Added static asserts. Moved logic out of SharedMem
|
+} |
+ |
+bool ParamTraits<base::SharedMemoryHandle>::Read(const Message* m, |
+ base::PickleIterator* iter, |
+ param_type* r) { |
+ if (!r->ReadMechanismFromPickle(iter)) |
+ return false; |
+ |
+ if (r->IsBackedByPOSIXFd()) { |
+ return ParamTraits<base::FileDescriptor>::Read(m, iter, |
+ r->GetFileDescriptor()); |
+ } |
+ |
+ return true; |
+} |
+ |
+void ParamTraits<base::SharedMemoryHandle>::Log(const param_type& p, |
+ std::string* l) { |
+ if (p.IsBackedByPOSIXFd()) { |
+ l->append(base::StringPrintf("Mechanism POSIX Fd")); |
+ ParamTraits<base::FileDescriptor>::Log(*p.GetFileDescriptor(), l); |
+ } |
+} |
+#endif // defined(OS_MACOSX) && !defined(OS_IOS) |
+ |
void ParamTraits<base::FilePath>::Write(Message* m, const param_type& p) { |
p.WriteToPickle(m); |
} |