Index: content/common/content_param_traits.cc |
diff --git a/content/common/content_param_traits.cc b/content/common/content_param_traits.cc |
index 3b0ab98110621bd5780689e87fa5119ba34c2725..592eba219e45bad3e90ca7207efb1c396ffecff7 100644 |
--- a/content/common/content_param_traits.cc |
+++ b/content/common/content_param_traits.cc |
@@ -11,6 +11,38 @@ |
namespace IPC { |
+void ParamTraits<scoped_refptr<base::RefCountedMemory> >::Write( |
+ Message* m, |
+ const param_type& p) { |
+ base::StringPiece data(base::RefCountedMemory::AsString(p.get())); |
+ m->WriteData(data.data(), data.size()); |
+} |
+ |
+bool ParamTraits<scoped_refptr<base::RefCountedMemory> >::Read( |
+ const Message* m, |
+ PickleIterator* iter, |
+ param_type* p) { |
+ const char* data; |
+ int len; |
+ if (!m->ReadData(iter, &data, &len)) |
+ return false; |
+ if (len > 0) { |
+ scoped_refptr<base::RefCountedString> res = new base::RefCountedString; |
+ res->data().assign(data, len); |
+ *p = res; |
+ } else { |
+ *p = NULL; |
+ } |
+ return true; |
+} |
+ |
+void ParamTraits<scoped_refptr<base::RefCountedMemory> >::Log( |
+ const param_type& p, std::string* l) { |
+ l->append("(RefCountedMemory: "); |
+ base::RefCountedMemory::AsString(p.get()).AppendToString(l); |
+ l->append(")"); |
+} |
+ |
void ParamTraits<net::IPEndPoint>::Write(Message* m, const param_type& p) { |
WriteParam(m, p.address()); |
WriteParam(m, p.port()); |