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(")"); |
| } |