Chromium Code Reviews| Index: ipc/ipc_message_utils.cc | 
| diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc | 
| index 302778e495eccab005e2ec54e2c5a258b25f1f17..4006b729d53626a3a4ced96a9f15596a57f09bd2 100644 | 
| --- a/ipc/ipc_message_utils.cc | 
| +++ b/ipc/ipc_message_utils.cc | 
| @@ -18,6 +18,7 @@ | 
| #include "ipc/ipc_channel_handle.h" | 
| #include "ipc/ipc_message_attachment.h" | 
| #include "ipc/ipc_message_attachment_set.h" | 
| +#include "ipc/ipc_mojo_param_traits.h" | 
| #if defined(OS_POSIX) | 
| #include "ipc/ipc_platform_file_attachment_posix.h" | 
| @@ -638,7 +639,8 @@ void ParamTraits<base::DictionaryValue>::Log(const param_type& p, | 
| void ParamTraits<base::FileDescriptor>::GetSize(base::PickleSizer* sizer, | 
| const param_type& p) { | 
| GetParamSize(sizer, p.fd >= 0); | 
| - sizer->AddAttachment(); | 
| + if (p.fd >= 0) | 
| + sizer->AddAttachment(); | 
| } | 
| void ParamTraits<base::FileDescriptor>::Write(base::Pickle* m, | 
| @@ -1002,6 +1004,7 @@ void ParamTraits<IPC::ChannelHandle>::GetSize(base::PickleSizer* sizer, | 
| #if defined(OS_POSIX) | 
| GetParamSize(sizer, p.socket); | 
| #endif | 
| + GetParamSize(sizer, p.mojo_handle); | 
| } | 
| void ParamTraits<IPC::ChannelHandle>::Write(base::Pickle* m, | 
| @@ -1014,6 +1017,8 @@ void ParamTraits<IPC::ChannelHandle>::Write(base::Pickle* m, | 
| #if defined(OS_POSIX) | 
| WriteParam(m, p.socket); | 
| #endif | 
| + ParamTraits<mojo::MessagePipeHandle>::Write( | 
| + static_cast<IPC::Message*>(m), p.mojo_handle); | 
| 
 
dcheng
2016/06/24 07:50:48
Why does this need the explicit static_cast? Norma
 
Anand Mistry (off Chromium)
2016/06/27 00:46:23
Because ParamTraits<> functions operate on base::P
 
 | 
| } | 
| bool ParamTraits<IPC::ChannelHandle>::Read(const base::Pickle* m, | 
| @@ -1023,7 +1028,8 @@ bool ParamTraits<IPC::ChannelHandle>::Read(const base::Pickle* m, | 
| #if defined(OS_POSIX) | 
| && ReadParam(m, iter, &r->socket) | 
| #endif | 
| - ; | 
| + && ParamTraits<mojo::MessagePipeHandle>::Read( | 
| + static_cast<const IPC::Message*>(m), iter, &r->mojo_handle); | 
| } | 
| void ParamTraits<IPC::ChannelHandle>::Log(const param_type& p, | 
| @@ -1033,6 +1039,8 @@ void ParamTraits<IPC::ChannelHandle>::Log(const param_type& p, | 
| l->append(", "); | 
| ParamTraits<base::FileDescriptor>::Log(p.socket, l); | 
| #endif | 
| + l->append(", "); | 
| + ParamTraits<mojo::MessagePipeHandle>::Log(p.mojo_handle, l); | 
| l->append(")"); | 
| } |