Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: content/common/resource_messages.cc

Issue 10980010: Cleanup the IPC param traits structure (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix android Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/common/resource_messages.h ('k') | content/common/view_messages.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(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
OLDNEW
« no previous file with comments | « content/common/resource_messages.h ('k') | content/common/view_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698