OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "extensions/common/extension_messages.h" | 5 #include "extensions/common/extension_messages.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 val >= Manifest::NUM_LOCATIONS) | 114 val >= Manifest::NUM_LOCATIONS) |
115 return false; | 115 return false; |
116 *p = static_cast<param_type>(val); | 116 *p = static_cast<param_type>(val); |
117 return true; | 117 return true; |
118 } | 118 } |
119 static void Log(const param_type& p, std::string* l) { | 119 static void Log(const param_type& p, std::string* l) { |
120 ParamTraits<int>::Log(static_cast<int>(p), l); | 120 ParamTraits<int>::Log(static_cast<int>(p), l); |
121 } | 121 } |
122 }; | 122 }; |
123 | 123 |
| 124 void ParamTraits<URLPattern>::GetSize(base::PickleSizer* s, |
| 125 const param_type& p) { |
| 126 GetParamSize(s, p.valid_schemes()); |
| 127 GetParamSize(s, p.GetAsString()); |
| 128 } |
| 129 |
124 void ParamTraits<URLPattern>::Write(base::Pickle* m, const param_type& p) { | 130 void ParamTraits<URLPattern>::Write(base::Pickle* m, const param_type& p) { |
125 WriteParam(m, p.valid_schemes()); | 131 WriteParam(m, p.valid_schemes()); |
126 WriteParam(m, p.GetAsString()); | 132 WriteParam(m, p.GetAsString()); |
127 } | 133 } |
128 | 134 |
129 bool ParamTraits<URLPattern>::Read(const base::Pickle* m, | 135 bool ParamTraits<URLPattern>::Read(const base::Pickle* m, |
130 base::PickleIterator* iter, | 136 base::PickleIterator* iter, |
131 param_type* p) { | 137 param_type* p) { |
132 int valid_schemes; | 138 int valid_schemes; |
133 std::string spec; | 139 std::string spec; |
134 if (!ReadParam(m, iter, &valid_schemes) || | 140 if (!ReadParam(m, iter, &valid_schemes) || |
135 !ReadParam(m, iter, &spec)) | 141 !ReadParam(m, iter, &spec)) |
136 return false; | 142 return false; |
137 | 143 |
138 // TODO(jstritar): We don't want the URLPattern to fail parsing when the | 144 // TODO(jstritar): We don't want the URLPattern to fail parsing when the |
139 // scheme is invalid. Instead, the pattern should parse but it should not | 145 // scheme is invalid. Instead, the pattern should parse but it should not |
140 // match the invalid patterns. We get around this by setting the valid | 146 // match the invalid patterns. We get around this by setting the valid |
141 // schemes after parsing the pattern. Update these method calls once we can | 147 // schemes after parsing the pattern. Update these method calls once we can |
142 // ignore scheme validation with URLPattern parse options. crbug.com/90544 | 148 // ignore scheme validation with URLPattern parse options. crbug.com/90544 |
143 p->SetValidSchemes(URLPattern::SCHEME_ALL); | 149 p->SetValidSchemes(URLPattern::SCHEME_ALL); |
144 URLPattern::ParseResult result = p->Parse(spec); | 150 URLPattern::ParseResult result = p->Parse(spec); |
145 p->SetValidSchemes(valid_schemes); | 151 p->SetValidSchemes(valid_schemes); |
146 return URLPattern::PARSE_SUCCESS == result; | 152 return URLPattern::PARSE_SUCCESS == result; |
147 } | 153 } |
148 | 154 |
149 void ParamTraits<URLPattern>::Log(const param_type& p, std::string* l) { | 155 void ParamTraits<URLPattern>::Log(const param_type& p, std::string* l) { |
150 LogParam(p.GetAsString(), l); | 156 LogParam(p.GetAsString(), l); |
151 } | 157 } |
152 | 158 |
| 159 void ParamTraits<URLPatternSet>::GetSize(base::PickleSizer* s, |
| 160 const param_type& p) { |
| 161 GetParamSize(s, p.patterns()); |
| 162 } |
| 163 |
153 void ParamTraits<URLPatternSet>::Write(base::Pickle* m, const param_type& p) { | 164 void ParamTraits<URLPatternSet>::Write(base::Pickle* m, const param_type& p) { |
154 WriteParam(m, p.patterns()); | 165 WriteParam(m, p.patterns()); |
155 } | 166 } |
156 | 167 |
157 bool ParamTraits<URLPatternSet>::Read(const base::Pickle* m, | 168 bool ParamTraits<URLPatternSet>::Read(const base::Pickle* m, |
158 base::PickleIterator* iter, | 169 base::PickleIterator* iter, |
159 param_type* p) { | 170 param_type* p) { |
160 std::set<URLPattern> patterns; | 171 std::set<URLPattern> patterns; |
161 if (!ReadParam(m, iter, &patterns)) | 172 if (!ReadParam(m, iter, &patterns)) |
162 return false; | 173 return false; |
163 | 174 |
164 for (std::set<URLPattern>::iterator i = patterns.begin(); | 175 for (std::set<URLPattern>::iterator i = patterns.begin(); |
165 i != patterns.end(); ++i) | 176 i != patterns.end(); ++i) |
166 p->AddPattern(*i); | 177 p->AddPattern(*i); |
167 return true; | 178 return true; |
168 } | 179 } |
169 | 180 |
170 void ParamTraits<URLPatternSet>::Log(const param_type& p, std::string* l) { | 181 void ParamTraits<URLPatternSet>::Log(const param_type& p, std::string* l) { |
171 LogParam(p.patterns(), l); | 182 LogParam(p.patterns(), l); |
172 } | 183 } |
173 | 184 |
| 185 void ParamTraits<APIPermission::ID>::GetSize(base::PickleSizer* s, |
| 186 const param_type& p) { |
| 187 GetParamSize(s, static_cast<int>(p)); |
| 188 } |
| 189 |
174 void ParamTraits<APIPermission::ID>::Write(base::Pickle* m, | 190 void ParamTraits<APIPermission::ID>::Write(base::Pickle* m, |
175 const param_type& p) { | 191 const param_type& p) { |
176 WriteParam(m, static_cast<int>(p)); | 192 WriteParam(m, static_cast<int>(p)); |
177 } | 193 } |
178 | 194 |
179 bool ParamTraits<APIPermission::ID>::Read(const base::Pickle* m, | 195 bool ParamTraits<APIPermission::ID>::Read(const base::Pickle* m, |
180 base::PickleIterator* iter, | 196 base::PickleIterator* iter, |
181 param_type* p) { | 197 param_type* p) { |
182 int api_id = -2; | 198 int api_id = -2; |
183 if (!ReadParam(m, iter, &api_id)) | 199 if (!ReadParam(m, iter, &api_id)) |
184 return false; | 200 return false; |
185 | 201 |
186 *p = static_cast<APIPermission::ID>(api_id); | 202 *p = static_cast<APIPermission::ID>(api_id); |
187 return true; | 203 return true; |
188 } | 204 } |
189 | 205 |
190 void ParamTraits<APIPermission::ID>::Log( | 206 void ParamTraits<APIPermission::ID>::Log( |
191 const param_type& p, std::string* l) { | 207 const param_type& p, std::string* l) { |
192 LogParam(static_cast<int>(p), l); | 208 LogParam(static_cast<int>(p), l); |
193 } | 209 } |
194 | 210 |
| 211 void ParamTraits<APIPermissionSet>::GetSize(base::PickleSizer* s, |
| 212 const param_type& p) { |
| 213 APIPermissionSet::const_iterator it = p.begin(); |
| 214 const APIPermissionSet::const_iterator end = p.end(); |
| 215 GetParamSize(s, static_cast<uint32_t>(p.size())); |
| 216 for (; it != end; ++it) { |
| 217 GetParamSize(s, it->id()); |
| 218 it->GetSize(s); |
| 219 } |
| 220 } |
| 221 |
195 void ParamTraits<APIPermissionSet>::Write(base::Pickle* m, | 222 void ParamTraits<APIPermissionSet>::Write(base::Pickle* m, |
196 const param_type& p) { | 223 const param_type& p) { |
197 APIPermissionSet::const_iterator it = p.begin(); | 224 APIPermissionSet::const_iterator it = p.begin(); |
198 const APIPermissionSet::const_iterator end = p.end(); | 225 const APIPermissionSet::const_iterator end = p.end(); |
199 WriteParam(m, static_cast<uint32_t>(p.size())); | 226 WriteParam(m, static_cast<uint32_t>(p.size())); |
200 for (; it != end; ++it) { | 227 for (; it != end; ++it) { |
201 WriteParam(m, it->id()); | 228 WriteParam(m, it->id()); |
202 it->Write(m); | 229 it->Write(m); |
203 } | 230 } |
204 } | 231 } |
(...skipping 18 matching lines...) Expand all Loading... |
223 r->insert(p.release()); | 250 r->insert(p.release()); |
224 } | 251 } |
225 return true; | 252 return true; |
226 } | 253 } |
227 | 254 |
228 void ParamTraits<APIPermissionSet>::Log( | 255 void ParamTraits<APIPermissionSet>::Log( |
229 const param_type& p, std::string* l) { | 256 const param_type& p, std::string* l) { |
230 LogParam(p.map(), l); | 257 LogParam(p.map(), l); |
231 } | 258 } |
232 | 259 |
| 260 void ParamTraits<ManifestPermissionSet>::GetSize(base::PickleSizer* s, |
| 261 const param_type& p) { |
| 262 ManifestPermissionSet::const_iterator it = p.begin(); |
| 263 const ManifestPermissionSet::const_iterator end = p.end(); |
| 264 GetParamSize(s, static_cast<uint32_t>(p.size())); |
| 265 for (; it != end; ++it) { |
| 266 GetParamSize(s, it->name()); |
| 267 it->GetSize(s); |
| 268 } |
| 269 } |
| 270 |
233 void ParamTraits<ManifestPermissionSet>::Write(base::Pickle* m, | 271 void ParamTraits<ManifestPermissionSet>::Write(base::Pickle* m, |
234 const param_type& p) { | 272 const param_type& p) { |
235 ManifestPermissionSet::const_iterator it = p.begin(); | 273 ManifestPermissionSet::const_iterator it = p.begin(); |
236 const ManifestPermissionSet::const_iterator end = p.end(); | 274 const ManifestPermissionSet::const_iterator end = p.end(); |
237 WriteParam(m, static_cast<uint32_t>(p.size())); | 275 WriteParam(m, static_cast<uint32_t>(p.size())); |
238 for (; it != end; ++it) { | 276 for (; it != end; ++it) { |
239 WriteParam(m, it->name()); | 277 WriteParam(m, it->name()); |
240 it->Write(m); | 278 it->Write(m); |
241 } | 279 } |
242 } | 280 } |
(...skipping 17 matching lines...) Expand all Loading... |
260 r->insert(p.release()); | 298 r->insert(p.release()); |
261 } | 299 } |
262 return true; | 300 return true; |
263 } | 301 } |
264 | 302 |
265 void ParamTraits<ManifestPermissionSet>::Log( | 303 void ParamTraits<ManifestPermissionSet>::Log( |
266 const param_type& p, std::string* l) { | 304 const param_type& p, std::string* l) { |
267 LogParam(p.map(), l); | 305 LogParam(p.map(), l); |
268 } | 306 } |
269 | 307 |
| 308 void ParamTraits<HostID>::GetSize(base::PickleSizer* s, const param_type& p) { |
| 309 GetParamSize(s, p.type()); |
| 310 GetParamSize(s, p.id()); |
| 311 } |
| 312 |
270 void ParamTraits<HostID>::Write(base::Pickle* m, const param_type& p) { | 313 void ParamTraits<HostID>::Write(base::Pickle* m, const param_type& p) { |
271 WriteParam(m, p.type()); | 314 WriteParam(m, p.type()); |
272 WriteParam(m, p.id()); | 315 WriteParam(m, p.id()); |
273 } | 316 } |
274 | 317 |
275 bool ParamTraits<HostID>::Read(const base::Pickle* m, | 318 bool ParamTraits<HostID>::Read(const base::Pickle* m, |
276 base::PickleIterator* iter, | 319 base::PickleIterator* iter, |
277 param_type* r) { | 320 param_type* r) { |
278 HostID::HostType type; | 321 HostID::HostType type; |
279 std::string id; | 322 std::string id; |
280 if (!ReadParam(m, iter, &type)) | 323 if (!ReadParam(m, iter, &type)) |
281 return false; | 324 return false; |
282 if (!ReadParam(m, iter, &id)) | 325 if (!ReadParam(m, iter, &id)) |
283 return false; | 326 return false; |
284 *r = HostID(type, id); | 327 *r = HostID(type, id); |
285 return true; | 328 return true; |
286 } | 329 } |
287 | 330 |
288 void ParamTraits<HostID>::Log( | 331 void ParamTraits<HostID>::Log( |
289 const param_type& p, std::string* l) { | 332 const param_type& p, std::string* l) { |
290 LogParam(p.type(), l); | 333 LogParam(p.type(), l); |
291 LogParam(p.id(), l); | 334 LogParam(p.id(), l); |
292 } | 335 } |
293 | 336 |
| 337 void ParamTraits<ExtensionMsg_PermissionSetStruct>::GetSize( |
| 338 base::PickleSizer* s, const param_type& p) { |
| 339 GetParamSize(s, p.apis); |
| 340 GetParamSize(s, p.manifest_permissions); |
| 341 GetParamSize(s, p.explicit_hosts); |
| 342 GetParamSize(s, p.scriptable_hosts); |
| 343 } |
| 344 |
294 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(base::Pickle* m, | 345 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(base::Pickle* m, |
295 const param_type& p) { | 346 const param_type& p) { |
296 WriteParam(m, p.apis); | 347 WriteParam(m, p.apis); |
297 WriteParam(m, p.manifest_permissions); | 348 WriteParam(m, p.manifest_permissions); |
298 WriteParam(m, p.explicit_hosts); | 349 WriteParam(m, p.explicit_hosts); |
299 WriteParam(m, p.scriptable_hosts); | 350 WriteParam(m, p.scriptable_hosts); |
300 } | 351 } |
301 | 352 |
302 bool ParamTraits<ExtensionMsg_PermissionSetStruct>::Read( | 353 bool ParamTraits<ExtensionMsg_PermissionSetStruct>::Read( |
303 const base::Pickle* m, | 354 const base::Pickle* m, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 ReadParam(m, iter, &p->active_permissions) && | 388 ReadParam(m, iter, &p->active_permissions) && |
338 ReadParam(m, iter, &p->withheld_permissions); | 389 ReadParam(m, iter, &p->withheld_permissions); |
339 } | 390 } |
340 | 391 |
341 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, | 392 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, |
342 std::string* l) { | 393 std::string* l) { |
343 l->append(p.id); | 394 l->append(p.id); |
344 } | 395 } |
345 | 396 |
346 } // namespace IPC | 397 } // namespace IPC |
OLD | NEW |