OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2012 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 #include "content/common/resource_messages.h" |
| 6 |
| 7 #include "net/http/http_response_headers.h" |
| 8 #include "webkit/glue/resource_loader_bridge.h" |
| 9 |
| 10 namespace IPC { |
| 11 |
| 12 void ParamTraits<scoped_refptr<net::HttpResponseHeaders> >::Write( |
| 13 Message* m, const param_type& p) { |
| 14 WriteParam(m, p.get() != NULL); |
| 15 if (p) { |
| 16 // Do not disclose Set-Cookie headers over IPC. |
| 17 p->Persist(m, net::HttpResponseHeaders::PERSIST_SANS_COOKIES); |
| 18 } |
| 19 } |
| 20 |
| 21 bool ParamTraits<scoped_refptr<net::HttpResponseHeaders> >::Read( |
| 22 const Message* m, PickleIterator* iter, param_type* r) { |
| 23 bool has_object; |
| 24 if (!ReadParam(m, iter, &has_object)) |
| 25 return false; |
| 26 if (has_object) |
| 27 *r = new net::HttpResponseHeaders(*m, iter); |
| 28 return true; |
| 29 } |
| 30 |
| 31 void ParamTraits<scoped_refptr<net::HttpResponseHeaders> >::Log( |
| 32 const param_type& p, std::string* l) { |
| 33 l->append("<HttpResponseHeaders>"); |
| 34 } |
| 35 |
| 36 |
| 37 void ParamTraits<webkit_base::DataElement>::Write( |
| 38 Message* m, const param_type& p) { |
| 39 WriteParam(m, static_cast<int>(p.type())); |
| 40 switch (p.type()) { |
| 41 case webkit_base::DataElement::TYPE_BYTES: { |
| 42 m->WriteData(p.bytes(), static_cast<int>(p.length())); |
| 43 break; |
| 44 } |
| 45 case webkit_base::DataElement::TYPE_FILE: { |
| 46 WriteParam(m, p.path()); |
| 47 WriteParam(m, p.offset()); |
| 48 WriteParam(m, p.length()); |
| 49 WriteParam(m, p.expected_modification_time()); |
| 50 break; |
| 51 } |
| 52 case webkit_base::DataElement::TYPE_FILE_FILESYSTEM: { |
| 53 WriteParam(m, p.url()); |
| 54 WriteParam(m, p.offset()); |
| 55 WriteParam(m, p.length()); |
| 56 WriteParam(m, p.expected_modification_time()); |
| 57 break; |
| 58 } |
| 59 default: { |
| 60 DCHECK(p.type() == webkit_base::DataElement::TYPE_BLOB); |
| 61 WriteParam(m, p.url()); |
| 62 WriteParam(m, p.offset()); |
| 63 WriteParam(m, p.length()); |
| 64 break; |
| 65 } |
| 66 } |
| 67 } |
| 68 |
| 69 bool ParamTraits<webkit_base::DataElement>::Read( |
| 70 const Message* m, PickleIterator* iter, param_type* r) { |
| 71 int type; |
| 72 if (!ReadParam(m, iter, &type)) |
| 73 return false; |
| 74 switch (type) { |
| 75 case webkit_base::DataElement::TYPE_BYTES: { |
| 76 const char* data; |
| 77 int len; |
| 78 if (!m->ReadData(iter, &data, &len)) |
| 79 return false; |
| 80 r->SetToBytes(data, len); |
| 81 break; |
| 82 } |
| 83 case webkit_base::DataElement::TYPE_FILE: { |
| 84 FilePath file_path; |
| 85 uint64 offset, length; |
| 86 base::Time expected_modification_time; |
| 87 if (!ReadParam(m, iter, &file_path)) |
| 88 return false; |
| 89 if (!ReadParam(m, iter, &offset)) |
| 90 return false; |
| 91 if (!ReadParam(m, iter, &length)) |
| 92 return false; |
| 93 if (!ReadParam(m, iter, &expected_modification_time)) |
| 94 return false; |
| 95 r->SetToFilePathRange(file_path, offset, length, |
| 96 expected_modification_time); |
| 97 break; |
| 98 } |
| 99 case webkit_base::DataElement::TYPE_FILE_FILESYSTEM: { |
| 100 GURL file_system_url; |
| 101 uint64 offset, length; |
| 102 base::Time expected_modification_time; |
| 103 if (!ReadParam(m, iter, &file_system_url)) |
| 104 return false; |
| 105 if (!ReadParam(m, iter, &offset)) |
| 106 return false; |
| 107 if (!ReadParam(m, iter, &length)) |
| 108 return false; |
| 109 if (!ReadParam(m, iter, &expected_modification_time)) |
| 110 return false; |
| 111 r->SetToFileSystemUrlRange(file_system_url, offset, length, |
| 112 expected_modification_time); |
| 113 break; |
| 114 } |
| 115 default: { |
| 116 DCHECK(type == webkit_base::DataElement::TYPE_BLOB); |
| 117 GURL blob_url; |
| 118 uint64 offset, length; |
| 119 if (!ReadParam(m, iter, &blob_url)) |
| 120 return false; |
| 121 if (!ReadParam(m, iter, &offset)) |
| 122 return false; |
| 123 if (!ReadParam(m, iter, &length)) |
| 124 return false; |
| 125 r->SetToBlobUrlRange(blob_url, offset, length); |
| 126 break; |
| 127 } |
| 128 } |
| 129 return true; |
| 130 } |
| 131 |
| 132 void ParamTraits<webkit_base::DataElement>::Log( |
| 133 const param_type& p, std::string* l) { |
| 134 l->append("<webkit_base::DataElement>"); |
| 135 } |
| 136 |
| 137 void ParamTraits<scoped_refptr<webkit_glue::ResourceDevToolsInfo> >::Write( |
| 138 Message* m, const param_type& p) { |
| 139 WriteParam(m, p.get() != NULL); |
| 140 if (p.get()) { |
| 141 WriteParam(m, p->http_status_code); |
| 142 WriteParam(m, p->http_status_text); |
| 143 WriteParam(m, p->request_headers); |
| 144 WriteParam(m, p->response_headers); |
| 145 WriteParam(m, p->request_headers_text); |
| 146 WriteParam(m, p->response_headers_text); |
| 147 } |
| 148 } |
| 149 |
| 150 bool ParamTraits<scoped_refptr<webkit_glue::ResourceDevToolsInfo> >::Read( |
| 151 const Message* m, PickleIterator* iter, param_type* r) { |
| 152 bool has_object; |
| 153 if (!ReadParam(m, iter, &has_object)) |
| 154 return false; |
| 155 if (!has_object) |
| 156 return true; |
| 157 *r = new webkit_glue::ResourceDevToolsInfo(); |
| 158 return |
| 159 ReadParam(m, iter, &(*r)->http_status_code) && |
| 160 ReadParam(m, iter, &(*r)->http_status_text) && |
| 161 ReadParam(m, iter, &(*r)->request_headers) && |
| 162 ReadParam(m, iter, &(*r)->response_headers) && |
| 163 ReadParam(m, iter, &(*r)->request_headers_text) && |
| 164 ReadParam(m, iter, &(*r)->response_headers_text); |
| 165 } |
| 166 |
| 167 void ParamTraits<scoped_refptr<webkit_glue::ResourceDevToolsInfo> >::Log( |
| 168 const param_type& p, std::string* l) { |
| 169 l->append("("); |
| 170 if (p) { |
| 171 LogParam(p->request_headers, l); |
| 172 l->append(", "); |
| 173 LogParam(p->response_headers, l); |
| 174 } |
| 175 l->append(")"); |
| 176 } |
| 177 |
| 178 void ParamTraits<webkit_glue::ResourceLoadTimingInfo>::Write( |
| 179 Message* m, const param_type& p) { |
| 180 WriteParam(m, p.base_time.is_null()); |
| 181 if (p.base_time.is_null()) |
| 182 return; |
| 183 WriteParam(m, p.base_ticks); |
| 184 WriteParam(m, p.base_time); |
| 185 WriteParam(m, p.proxy_start); |
| 186 WriteParam(m, p.proxy_end); |
| 187 WriteParam(m, p.dns_start); |
| 188 WriteParam(m, p.dns_end); |
| 189 WriteParam(m, p.connect_start); |
| 190 WriteParam(m, p.connect_end); |
| 191 WriteParam(m, p.ssl_start); |
| 192 WriteParam(m, p.ssl_end); |
| 193 WriteParam(m, p.send_start); |
| 194 WriteParam(m, p.send_end); |
| 195 WriteParam(m, p.receive_headers_start); |
| 196 WriteParam(m, p.receive_headers_end); |
| 197 } |
| 198 |
| 199 bool ParamTraits<webkit_glue::ResourceLoadTimingInfo>::Read( |
| 200 const Message* m, PickleIterator* iter, param_type* r) { |
| 201 bool is_null; |
| 202 if (!ReadParam(m, iter, &is_null)) |
| 203 return false; |
| 204 if (is_null) |
| 205 return true; |
| 206 |
| 207 return |
| 208 ReadParam(m, iter, &r->base_ticks) && |
| 209 ReadParam(m, iter, &r->base_time) && |
| 210 ReadParam(m, iter, &r->proxy_start) && |
| 211 ReadParam(m, iter, &r->proxy_end) && |
| 212 ReadParam(m, iter, &r->dns_start) && |
| 213 ReadParam(m, iter, &r->dns_end) && |
| 214 ReadParam(m, iter, &r->connect_start) && |
| 215 ReadParam(m, iter, &r->connect_end) && |
| 216 ReadParam(m, iter, &r->ssl_start) && |
| 217 ReadParam(m, iter, &r->ssl_end) && |
| 218 ReadParam(m, iter, &r->send_start) && |
| 219 ReadParam(m, iter, &r->send_end) && |
| 220 ReadParam(m, iter, &r->receive_headers_start) && |
| 221 ReadParam(m, iter, &r->receive_headers_end); |
| 222 } |
| 223 |
| 224 void ParamTraits<webkit_glue::ResourceLoadTimingInfo>::Log(const param_type& p, |
| 225 std::string* l) { |
| 226 l->append("("); |
| 227 LogParam(p.base_ticks, l); |
| 228 l->append(", "); |
| 229 LogParam(p.base_time, l); |
| 230 l->append(", "); |
| 231 LogParam(p.proxy_start, l); |
| 232 l->append(", "); |
| 233 LogParam(p.proxy_end, l); |
| 234 l->append(", "); |
| 235 LogParam(p.dns_start, l); |
| 236 l->append(", "); |
| 237 LogParam(p.dns_end, l); |
| 238 l->append(", "); |
| 239 LogParam(p.connect_start, l); |
| 240 l->append(", "); |
| 241 LogParam(p.connect_end, l); |
| 242 l->append(", "); |
| 243 LogParam(p.ssl_start, l); |
| 244 l->append(", "); |
| 245 LogParam(p.ssl_end, l); |
| 246 l->append(", "); |
| 247 LogParam(p.send_start, l); |
| 248 l->append(", "); |
| 249 LogParam(p.send_end, l); |
| 250 l->append(", "); |
| 251 LogParam(p.receive_headers_start, l); |
| 252 l->append(", "); |
| 253 LogParam(p.receive_headers_end, l); |
| 254 l->append(")"); |
| 255 } |
| 256 |
| 257 void ParamTraits<scoped_refptr<webkit_glue::ResourceRequestBody> >::Write( |
| 258 Message* m, |
| 259 const param_type& p) { |
| 260 WriteParam(m, p.get() != NULL); |
| 261 if (p) { |
| 262 WriteParam(m, *p->elements()); |
| 263 WriteParam(m, p->identifier()); |
| 264 } |
| 265 } |
| 266 |
| 267 bool ParamTraits<scoped_refptr<webkit_glue::ResourceRequestBody> >::Read( |
| 268 const Message* m, |
| 269 PickleIterator* iter, |
| 270 param_type* r) { |
| 271 bool has_object; |
| 272 if (!ReadParam(m, iter, &has_object)) |
| 273 return false; |
| 274 if (!has_object) |
| 275 return true; |
| 276 std::vector<webkit_base::DataElement> elements; |
| 277 if (!ReadParam(m, iter, &elements)) |
| 278 return false; |
| 279 int64 identifier; |
| 280 if (!ReadParam(m, iter, &identifier)) |
| 281 return false; |
| 282 *r = new webkit_glue::ResourceRequestBody; |
| 283 (*r)->swap_elements(&elements); |
| 284 (*r)->set_identifier(identifier); |
| 285 return true; |
| 286 } |
| 287 |
| 288 void ParamTraits<scoped_refptr<webkit_glue::ResourceRequestBody> >::Log( |
| 289 const param_type& p, std::string* l) { |
| 290 l->append("<webkit_glue::ResourceRequestBody>"); |
| 291 } |
| 292 |
| 293 } // namespace IPC |
OLD | NEW |