| 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 |