Index: ipc/ipc_message_utils.cc |
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc |
index 60c12ab60f96f879259612c993acf89d0c749cd0..8cf43339b71993ed9d4dd54da2003f951dc2edf9 100644 |
--- a/ipc/ipc_message_utils.cc |
+++ b/ipc/ipc_message_utils.cc |
@@ -9,6 +9,7 @@ |
#include "base/files/file_path.h" |
#include "base/json/json_writer.h" |
+#include "base/nonce.h" |
#include "base/strings/nullable_string16.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
@@ -998,6 +999,34 @@ void ParamTraits<base::TimeTicks>::Log(const param_type& p, std::string* l) { |
ParamTraits<int64_t>::Log(p.ToInternalValue(), l); |
} |
+void ParamTraits<base::Nonce>::GetSize(base::PickleSizer* sizer, |
+ const param_type& p) { |
+ sizer->AddBytes(2 * sizeof(uint64_t)); |
+} |
+ |
+void ParamTraits<base::Nonce>::Write(base::Pickle* m, const param_type& p) { |
+ CHECK(!p.is_empty()); |
+ ParamTraits<uint64_t>::Write(m, p.high()); |
+ ParamTraits<uint64_t>::Write(m, p.low()); |
+} |
+ |
+bool ParamTraits<base::Nonce>::Read(const base::Pickle* m, |
+ base::PickleIterator* iter, |
+ param_type* r) { |
+ uint64_t high; |
+ uint64_t low; |
+ if (!ParamTraits<uint64_t>::Read(m, iter, &high) || |
+ !ParamTraits<uint64_t>::Read(m, iter, &low)) |
+ return false; |
+ |
+ *r = base::Nonce::Deserialize(high, low); |
+ return !r->is_empty(); |
+} |
+ |
+void ParamTraits<base::Nonce>::Log(const param_type& p, std::string* l) { |
+ l->append(p.ToString()); |
+} |
+ |
void ParamTraits<IPC::ChannelHandle>::GetSize(base::PickleSizer* sizer, |
const param_type& p) { |
GetParamSize(sizer, p.name); |