| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // NOTE: New trait definitions that will be used by Chrome Frame must be placed | |
| 6 // in common_param_traits2.cc. | |
| 7 | |
| 8 #include "content/common/webkit_param_traits.h" | |
| 9 | |
| 10 #include "base/string_number_conversions.h" | |
| 11 #include "content/common/common_param_traits.h" | |
| 12 #include "content/common/content_constants.h" | |
| 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h" | |
| 14 #include "webkit/glue/password_form.h" | |
| 15 #include "webkit/glue/resource_loader_bridge.h" | |
| 16 | |
| 17 NPIdentifier_Param::NPIdentifier_Param() | |
| 18 : identifier() { | |
| 19 } | |
| 20 | |
| 21 NPIdentifier_Param::~NPIdentifier_Param() { | |
| 22 } | |
| 23 | |
| 24 NPVariant_Param::NPVariant_Param() | |
| 25 : type(NPVARIANT_PARAM_VOID), | |
| 26 bool_value(false), | |
| 27 int_value(0), | |
| 28 double_value(0), | |
| 29 npobject_routing_id(-1) { | |
| 30 } | |
| 31 | |
| 32 NPVariant_Param::~NPVariant_Param() { | |
| 33 } | |
| 34 | |
| 35 namespace IPC { | |
| 36 | |
| 37 void ParamTraits<webkit_glue::ResourceLoadTimingInfo>::Write( | |
| 38 Message* m, const param_type& p) { | |
| 39 WriteParam(m, p.base_time.is_null()); | |
| 40 if (p.base_time.is_null()) | |
| 41 return; | |
| 42 WriteParam(m, p.base_time); | |
| 43 WriteParam(m, p.proxy_start); | |
| 44 WriteParam(m, p.proxy_end); | |
| 45 WriteParam(m, p.dns_start); | |
| 46 WriteParam(m, p.dns_end); | |
| 47 WriteParam(m, p.connect_start); | |
| 48 WriteParam(m, p.connect_end); | |
| 49 WriteParam(m, p.ssl_start); | |
| 50 WriteParam(m, p.ssl_end); | |
| 51 WriteParam(m, p.send_start); | |
| 52 WriteParam(m, p.send_end); | |
| 53 WriteParam(m, p.receive_headers_start); | |
| 54 WriteParam(m, p.receive_headers_end); | |
| 55 } | |
| 56 | |
| 57 bool ParamTraits<webkit_glue::ResourceLoadTimingInfo>::Read( | |
| 58 const Message* m, void** iter, param_type* r) { | |
| 59 bool is_null; | |
| 60 if (!ReadParam(m, iter, &is_null)) | |
| 61 return false; | |
| 62 if (is_null) | |
| 63 return true; | |
| 64 | |
| 65 return | |
| 66 ReadParam(m, iter, &r->base_time) && | |
| 67 ReadParam(m, iter, &r->proxy_start) && | |
| 68 ReadParam(m, iter, &r->proxy_end) && | |
| 69 ReadParam(m, iter, &r->dns_start) && | |
| 70 ReadParam(m, iter, &r->dns_end) && | |
| 71 ReadParam(m, iter, &r->connect_start) && | |
| 72 ReadParam(m, iter, &r->connect_end) && | |
| 73 ReadParam(m, iter, &r->ssl_start) && | |
| 74 ReadParam(m, iter, &r->ssl_end) && | |
| 75 ReadParam(m, iter, &r->send_start) && | |
| 76 ReadParam(m, iter, &r->send_end) && | |
| 77 ReadParam(m, iter, &r->receive_headers_start) && | |
| 78 ReadParam(m, iter, &r->receive_headers_end); | |
| 79 } | |
| 80 | |
| 81 void ParamTraits<webkit_glue::ResourceLoadTimingInfo>::Log(const param_type& p, | |
| 82 std::string* l) { | |
| 83 l->append("("); | |
| 84 LogParam(p.base_time, l); | |
| 85 l->append(", "); | |
| 86 LogParam(p.proxy_start, l); | |
| 87 l->append(", "); | |
| 88 LogParam(p.proxy_end, l); | |
| 89 l->append(", "); | |
| 90 LogParam(p.dns_start, l); | |
| 91 l->append(", "); | |
| 92 LogParam(p.dns_end, l); | |
| 93 l->append(", "); | |
| 94 LogParam(p.connect_start, l); | |
| 95 l->append(", "); | |
| 96 LogParam(p.connect_end, l); | |
| 97 l->append(", "); | |
| 98 LogParam(p.ssl_start, l); | |
| 99 l->append(", "); | |
| 100 LogParam(p.ssl_end, l); | |
| 101 l->append(", "); | |
| 102 LogParam(p.send_start, l); | |
| 103 l->append(", "); | |
| 104 LogParam(p.send_end, l); | |
| 105 l->append(", "); | |
| 106 LogParam(p.receive_headers_start, l); | |
| 107 l->append(", "); | |
| 108 LogParam(p.receive_headers_end, l); | |
| 109 l->append(")"); | |
| 110 } | |
| 111 | |
| 112 void ParamTraits<scoped_refptr<webkit_glue::ResourceDevToolsInfo> >::Write( | |
| 113 Message* m, const param_type& p) { | |
| 114 WriteParam(m, p.get() != NULL); | |
| 115 if (p.get()) { | |
| 116 WriteParam(m, p->http_status_code); | |
| 117 WriteParam(m, p->http_status_text); | |
| 118 WriteParam(m, p->request_headers); | |
| 119 WriteParam(m, p->response_headers); | |
| 120 WriteParam(m, p->request_headers_text); | |
| 121 WriteParam(m, p->response_headers_text); | |
| 122 } | |
| 123 } | |
| 124 | |
| 125 bool ParamTraits<scoped_refptr<webkit_glue::ResourceDevToolsInfo> >::Read( | |
| 126 const Message* m, void** iter, param_type* r) { | |
| 127 bool has_object; | |
| 128 if (!ReadParam(m, iter, &has_object)) | |
| 129 return false; | |
| 130 if (!has_object) | |
| 131 return true; | |
| 132 *r = new webkit_glue::ResourceDevToolsInfo(); | |
| 133 return | |
| 134 ReadParam(m, iter, &(*r)->http_status_code) && | |
| 135 ReadParam(m, iter, &(*r)->http_status_text) && | |
| 136 ReadParam(m, iter, &(*r)->request_headers) && | |
| 137 ReadParam(m, iter, &(*r)->response_headers) && | |
| 138 ReadParam(m, iter, &(*r)->request_headers_text) && | |
| 139 ReadParam(m, iter, &(*r)->response_headers_text); | |
| 140 } | |
| 141 | |
| 142 void ParamTraits<scoped_refptr<webkit_glue::ResourceDevToolsInfo> >::Log( | |
| 143 const param_type& p, std::string* l) { | |
| 144 l->append("("); | |
| 145 if (p) { | |
| 146 LogParam(p->request_headers, l); | |
| 147 l->append(", "); | |
| 148 LogParam(p->response_headers, l); | |
| 149 } | |
| 150 l->append(")"); | |
| 151 } | |
| 152 | |
| 153 void ParamTraits<NPVariant_Param>::Write(Message* m, const param_type& p) { | |
| 154 WriteParam(m, static_cast<int>(p.type)); | |
| 155 if (p.type == NPVARIANT_PARAM_BOOL) { | |
| 156 WriteParam(m, p.bool_value); | |
| 157 } else if (p.type == NPVARIANT_PARAM_INT) { | |
| 158 WriteParam(m, p.int_value); | |
| 159 } else if (p.type == NPVARIANT_PARAM_DOUBLE) { | |
| 160 WriteParam(m, p.double_value); | |
| 161 } else if (p.type == NPVARIANT_PARAM_STRING) { | |
| 162 WriteParam(m, p.string_value); | |
| 163 } else if (p.type == NPVARIANT_PARAM_SENDER_OBJECT_ROUTING_ID || | |
| 164 p.type == NPVARIANT_PARAM_RECEIVER_OBJECT_ROUTING_ID) { | |
| 165 // This is the routing id used to connect NPObjectProxy in the other | |
| 166 // process with NPObjectStub in this process or to identify the raw | |
| 167 // npobject pointer to be used in the callee process. | |
| 168 WriteParam(m, p.npobject_routing_id); | |
| 169 } else { | |
| 170 DCHECK(p.type == NPVARIANT_PARAM_VOID || p.type == NPVARIANT_PARAM_NULL); | |
| 171 } | |
| 172 } | |
| 173 | |
| 174 bool ParamTraits<NPVariant_Param>::Read(const Message* m, | |
| 175 void** iter, | |
| 176 param_type* r) { | |
| 177 int type; | |
| 178 if (!ReadParam(m, iter, &type)) | |
| 179 return false; | |
| 180 | |
| 181 bool result = false; | |
| 182 r->type = static_cast<NPVariant_ParamEnum>(type); | |
| 183 if (r->type == NPVARIANT_PARAM_BOOL) { | |
| 184 result = ReadParam(m, iter, &r->bool_value); | |
| 185 } else if (r->type == NPVARIANT_PARAM_INT) { | |
| 186 result = ReadParam(m, iter, &r->int_value); | |
| 187 } else if (r->type == NPVARIANT_PARAM_DOUBLE) { | |
| 188 result = ReadParam(m, iter, &r->double_value); | |
| 189 } else if (r->type == NPVARIANT_PARAM_STRING) { | |
| 190 result = ReadParam(m, iter, &r->string_value); | |
| 191 } else if (r->type == NPVARIANT_PARAM_SENDER_OBJECT_ROUTING_ID || | |
| 192 r->type == NPVARIANT_PARAM_RECEIVER_OBJECT_ROUTING_ID) { | |
| 193 result = ReadParam(m, iter, &r->npobject_routing_id); | |
| 194 } else if ((r->type == NPVARIANT_PARAM_VOID) || | |
| 195 (r->type == NPVARIANT_PARAM_NULL)) { | |
| 196 result = true; | |
| 197 } else { | |
| 198 NOTREACHED(); | |
| 199 } | |
| 200 | |
| 201 return result; | |
| 202 } | |
| 203 | |
| 204 void ParamTraits<NPVariant_Param>::Log(const param_type& p, std::string* l) { | |
| 205 l->append(StringPrintf("NPVariant_Param(%d, ", static_cast<int>(p.type))); | |
| 206 if (p.type == NPVARIANT_PARAM_BOOL) { | |
| 207 LogParam(p.bool_value, l); | |
| 208 } else if (p.type == NPVARIANT_PARAM_INT) { | |
| 209 LogParam(p.int_value, l); | |
| 210 } else if (p.type == NPVARIANT_PARAM_DOUBLE) { | |
| 211 LogParam(p.double_value, l); | |
| 212 } else if (p.type == NPVARIANT_PARAM_STRING) { | |
| 213 LogParam(p.string_value, l); | |
| 214 } else if (p.type == NPVARIANT_PARAM_SENDER_OBJECT_ROUTING_ID || | |
| 215 p.type == NPVARIANT_PARAM_RECEIVER_OBJECT_ROUTING_ID) { | |
| 216 LogParam(p.npobject_routing_id, l); | |
| 217 } else { | |
| 218 l->append("<none>"); | |
| 219 } | |
| 220 l->append(")"); | |
| 221 } | |
| 222 | |
| 223 void ParamTraits<NPIdentifier_Param>::Write(Message* m, const param_type& p) { | |
| 224 webkit_glue::SerializeNPIdentifier(p.identifier, m); | |
| 225 } | |
| 226 | |
| 227 bool ParamTraits<NPIdentifier_Param>::Read(const Message* m, | |
| 228 void** iter, | |
| 229 param_type* r) { | |
| 230 return webkit_glue::DeserializeNPIdentifier(*m, iter, &r->identifier); | |
| 231 } | |
| 232 | |
| 233 void ParamTraits<NPIdentifier_Param>::Log(const param_type& p, std::string* l) { | |
| 234 if (WebKit::WebBindings::identifierIsString(p.identifier)) { | |
| 235 NPUTF8* str = WebKit::WebBindings::utf8FromIdentifier(p.identifier); | |
| 236 l->append(str); | |
| 237 NPN_MemFree(str); | |
| 238 } else { | |
| 239 l->append(base::IntToString( | |
| 240 WebKit::WebBindings::intFromIdentifier(p.identifier))); | |
| 241 } | |
| 242 } | |
| 243 | |
| 244 void ParamTraits<webkit::WebPluginMimeType>::Write(Message* m, | |
| 245 const param_type& p) { | |
| 246 WriteParam(m, p.mime_type); | |
| 247 WriteParam(m, p.file_extensions); | |
| 248 WriteParam(m, p.description); | |
| 249 WriteParam(m, p.additional_param_names); | |
| 250 WriteParam(m, p.additional_param_values); | |
| 251 } | |
| 252 | |
| 253 bool ParamTraits<webkit::WebPluginMimeType>::Read(const Message* m, | |
| 254 void** iter, | |
| 255 param_type* p) { | |
| 256 return | |
| 257 ReadParam(m, iter, &p->mime_type) && | |
| 258 ReadParam(m, iter, &p->file_extensions) && | |
| 259 ReadParam(m, iter, &p->description) && | |
| 260 ReadParam(m, iter, &p->additional_param_names) && | |
| 261 ReadParam(m, iter, &p->additional_param_values); | |
| 262 } | |
| 263 | |
| 264 void ParamTraits<webkit::WebPluginMimeType>::Log( | |
| 265 const param_type& p, std::string* l) { | |
| 266 l->append("("); | |
| 267 LogParam(p.mime_type, l); l->append(", "); | |
| 268 LogParam(p.file_extensions, l); l->append(", "); | |
| 269 LogParam(p.description, l); l->append(", "); | |
| 270 LogParam(p.additional_param_names, l); l->append(", "); | |
| 271 LogParam(p.additional_param_values, l); | |
| 272 l->append(")"); | |
| 273 } | |
| 274 | |
| 275 void ParamTraits<webkit::WebPluginInfo>::Write(Message* m, | |
| 276 const param_type& p) { | |
| 277 WriteParam(m, p.name); | |
| 278 WriteParam(m, p.path); | |
| 279 WriteParam(m, p.version); | |
| 280 WriteParam(m, p.desc); | |
| 281 WriteParam(m, p.mime_types); | |
| 282 WriteParam(m, p.type); | |
| 283 } | |
| 284 | |
| 285 bool ParamTraits<webkit::WebPluginInfo>::Read(const Message* m, | |
| 286 void** iter, | |
| 287 param_type* p) { | |
| 288 return | |
| 289 ReadParam(m, iter, &p->name) && | |
| 290 ReadParam(m, iter, &p->path) && | |
| 291 ReadParam(m, iter, &p->version) && | |
| 292 ReadParam(m, iter, &p->desc) && | |
| 293 ReadParam(m, iter, &p->mime_types) && | |
| 294 ReadParam(m, iter, &p->type); | |
| 295 } | |
| 296 void ParamTraits<webkit::WebPluginInfo>::Log(const param_type& p, | |
| 297 std::string* l) { | |
| 298 l->append("("); | |
| 299 LogParam(p.name, l); l->append(", "); | |
| 300 LogParam(p.path, l); l->append(", "); | |
| 301 LogParam(p.version, l); l->append(", "); | |
| 302 LogParam(p.desc, l); l->append(", "); | |
| 303 LogParam(p.mime_types, l); l->append(", "); | |
| 304 LogParam(p.type, l); | |
| 305 l->append(")"); | |
| 306 } | |
| 307 | |
| 308 void ParamTraits<webkit_glue::PasswordForm>::Write(Message* m, | |
| 309 const param_type& p) { | |
| 310 WriteParam(m, p.signon_realm); | |
| 311 WriteParam(m, p.origin); | |
| 312 WriteParam(m, p.action); | |
| 313 WriteParam(m, p.submit_element); | |
| 314 WriteParam(m, p.username_element); | |
| 315 WriteParam(m, p.username_value); | |
| 316 WriteParam(m, p.password_element); | |
| 317 WriteParam(m, p.password_value); | |
| 318 WriteParam(m, p.old_password_element); | |
| 319 WriteParam(m, p.old_password_value); | |
| 320 WriteParam(m, p.ssl_valid); | |
| 321 WriteParam(m, p.preferred); | |
| 322 WriteParam(m, p.blacklisted_by_user); | |
| 323 } | |
| 324 | |
| 325 bool ParamTraits<webkit_glue::PasswordForm>::Read(const Message* m, void** iter, | |
| 326 param_type* p) { | |
| 327 return | |
| 328 ReadParam(m, iter, &p->signon_realm) && | |
| 329 ReadParam(m, iter, &p->origin) && | |
| 330 ReadParam(m, iter, &p->action) && | |
| 331 ReadParam(m, iter, &p->submit_element) && | |
| 332 ReadParam(m, iter, &p->username_element) && | |
| 333 ReadParam(m, iter, &p->username_value) && | |
| 334 ReadParam(m, iter, &p->password_element) && | |
| 335 ReadParam(m, iter, &p->password_value) && | |
| 336 ReadParam(m, iter, &p->old_password_element) && | |
| 337 ReadParam(m, iter, &p->old_password_value) && | |
| 338 ReadParam(m, iter, &p->ssl_valid) && | |
| 339 ReadParam(m, iter, &p->preferred) && | |
| 340 ReadParam(m, iter, &p->blacklisted_by_user); | |
| 341 } | |
| 342 void ParamTraits<webkit_glue::PasswordForm>::Log(const param_type& p, | |
| 343 std::string* l) { | |
| 344 l->append("<PasswordForm>"); | |
| 345 } | |
| 346 | |
| 347 } // namespace IPC | |
| OLD | NEW |