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