Chromium Code Reviews| 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); |
| } |