Index: ppapi/proxy/ppapi_param_traits.cc |
diff --git a/ppapi/proxy/ppapi_param_traits.cc b/ppapi/proxy/ppapi_param_traits.cc |
index 564eaccef5d091d62d53090d9eacb75a621e82a8..23d3d8c7c5240e5871606a361f78ccb015a154e9 100644 |
--- a/ppapi/proxy/ppapi_param_traits.cc |
+++ b/ppapi/proxy/ppapi_param_traits.cc |
@@ -661,4 +661,80 @@ void ParamTraits<ppapi::PPB_X509Certificate_Fields>::Log(const param_type& p, |
std::string* l) { |
} |
+// ppapi::SocketOptionData ----------------------------------------------------- |
+ |
+// static |
+void ParamTraits<ppapi::SocketOptionData>::Write(Message* m, |
+ const param_type& p) { |
+ ppapi::SocketOptionData::Type type = p.GetType(); |
+ ParamTraits<int32_t>::Write(m, static_cast<int32_t>(type)); |
+ switch (type) { |
+ case ppapi::SocketOptionData::TYPE_INVALID: { |
+ break; |
+ } |
+ case ppapi::SocketOptionData::TYPE_BOOL: { |
+ bool out_value = false; |
+ bool result = p.GetBool(&out_value); |
+ // Suppress unused variable warnings. |
+ static_cast<void>(result); |
+ DCHECK(result); |
+ |
+ ParamTraits<bool>::Write(m, out_value); |
+ break; |
+ } |
+ case ppapi::SocketOptionData::TYPE_INT32: { |
+ int32_t out_value = 0; |
+ bool result = p.GetInt32(&out_value); |
+ // Suppress unused variable warnings. |
+ static_cast<void>(result); |
+ DCHECK(result); |
+ |
+ ParamTraits<int32_t>::Write(m, out_value); |
+ break; |
+ } |
+ // No default so the compiler will warn on new types. |
+ } |
+} |
+ |
+// static |
+bool ParamTraits<ppapi::SocketOptionData>::Read(const Message* m, |
+ PickleIterator* iter, |
+ param_type* r) { |
+ *r = ppapi::SocketOptionData(); |
+ int32_t type = 0; |
+ if (!ParamTraits<int32_t>::Read(m, iter, &type)) |
+ return false; |
+ if (type != ppapi::SocketOptionData::TYPE_INVALID && |
+ type != ppapi::SocketOptionData::TYPE_BOOL && |
+ type != ppapi::SocketOptionData::TYPE_INT32) { |
+ return false; |
+ } |
+ switch (static_cast<ppapi::SocketOptionData::Type>(type)) { |
+ case ppapi::SocketOptionData::TYPE_INVALID: { |
+ return true; |
+ } |
+ case ppapi::SocketOptionData::TYPE_BOOL: { |
+ bool value = false; |
+ if (!ParamTraits<bool>::Read(m, iter, &value)) |
+ return false; |
+ r->SetBool(value); |
+ return true; |
+ } |
+ case ppapi::SocketOptionData::TYPE_INT32: { |
+ int32_t value = 0; |
+ if (!ParamTraits<int32_t>::Read(m, iter, &value)) |
+ return false; |
+ r->SetInt32(value); |
+ return true; |
+ } |
+ // No default so the compiler will warn on new types. |
+ } |
+ return false; |
+} |
+ |
+// static |
+void ParamTraits<ppapi::SocketOptionData>::Log(const param_type& p, |
+ std::string* l) { |
+} |
+ |
} // namespace IPC |