Chromium Code Reviews| 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 "content/public/common/common_param_traits.h" | 7 #include "content/public/common/common_param_traits.h" |
| 8 #include "extensions/common/extension.h" | 8 #include "extensions/common/extension.h" |
| 9 #include "extensions/common/manifest.h" | 9 #include "extensions/common/manifest.h" |
| 10 #include "extensions/common/manifest_handler.h" | 10 #include "extensions/common/manifest_handler.h" |
| 11 #include "extensions/common/permissions/permissions_data.h" | 11 #include "extensions/common/permissions/permissions_data.h" |
| 12 #include "extensions/common/permissions/permissions_info.h" | 12 #include "extensions/common/permissions/permissions_info.h" |
| 13 | 13 |
| 14 using extensions::APIPermission; | 14 using extensions::APIPermission; |
| 15 using extensions::APIPermissionInfo; | 15 using extensions::APIPermissionInfo; |
| 16 using extensions::APIPermissionSet; | 16 using extensions::APIPermissionSet; |
| 17 using extensions::Extension; | 17 using extensions::Extension; |
| 18 using extensions::Manifest; | 18 using extensions::Manifest; |
| 19 using extensions::ManifestHandler; | 19 using extensions::ManifestHandler; |
| 20 using extensions::ManifestPermission; | 20 using extensions::ManifestPermission; |
| 21 using extensions::ManifestPermissionSet; | 21 using extensions::ManifestPermissionSet; |
| 22 using extensions::PermissionSet; | 22 using extensions::PermissionSet; |
| 23 using extensions::URLPatternSet; | 23 using extensions::URLPatternSet; |
| 24 | 24 |
| 25 ExtensionMsg_PermissionSetStruct::ExtensionMsg_PermissionSetStruct() { | |
| 26 } | |
| 27 | |
| 28 ExtensionMsg_PermissionSetStruct::ExtensionMsg_PermissionSetStruct( | |
| 29 const PermissionSet* permissions) | |
| 30 : apis(permissions->apis()), | |
| 31 manifest_permissions(permissions->manifest_permissions()), | |
| 32 explicit_hosts(permissions->explicit_hosts()), | |
| 33 scriptable_hosts(permissions->scriptable_hosts()) { | |
| 34 } | |
| 35 | |
| 36 ExtensionMsg_PermissionSetStruct::~ExtensionMsg_PermissionSetStruct() { | |
| 37 } | |
| 38 | |
| 39 scoped_refptr<const PermissionSet> | |
| 40 ExtensionMsg_PermissionSetStruct::ToPermissionSet() const { | |
| 41 return new PermissionSet( | |
| 42 apis, manifest_permissions, explicit_hosts, scriptable_hosts); | |
| 43 } | |
| 44 | |
| 25 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params() | 45 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params() |
| 26 : location(Manifest::INVALID_LOCATION), | 46 : location(Manifest::INVALID_LOCATION), |
| 27 creation_flags(Extension::NO_FLAGS) {} | 47 creation_flags(Extension::NO_FLAGS) {} |
| 28 | 48 |
| 29 ExtensionMsg_Loaded_Params::~ExtensionMsg_Loaded_Params() {} | 49 ExtensionMsg_Loaded_Params::~ExtensionMsg_Loaded_Params() {} |
| 30 | 50 |
| 31 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( | 51 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( |
| 32 const Extension* extension) | 52 const Extension* extension) |
| 33 : manifest(extension->manifest()->value()->DeepCopy()), | 53 : manifest(extension->manifest()->value()->DeepCopy()), |
| 34 location(extension->location()), | 54 location(extension->location()), |
| 35 path(extension->path()), | 55 path(extension->path()), |
| 36 apis(extension->permissions_data()->active_permissions()->apis()), | 56 active_permissions(extension->permissions_data()->active_permissions()), |
| 37 manifest_permissions(extension->permissions_data() | 57 withheld_permissions( |
| 38 ->active_permissions() | 58 extension->permissions_data()->withheld_permissions()), |
| 39 ->manifest_permissions()), | |
| 40 explicit_hosts(extension->permissions_data() | |
| 41 ->active_permissions() | |
| 42 ->explicit_hosts()), | |
| 43 scriptable_hosts(extension->permissions_data() | |
| 44 ->active_permissions() | |
| 45 ->scriptable_hosts()), | |
| 46 id(extension->id()), | 59 id(extension->id()), |
| 47 creation_flags(extension->creation_flags()) { | 60 creation_flags(extension->creation_flags()) { |
| 48 } | 61 } |
| 49 | 62 |
| 50 scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( | 63 scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( |
| 51 std::string* error) const { | 64 std::string* error) const { |
| 52 scoped_refptr<Extension> extension = | 65 scoped_refptr<Extension> extension = |
| 53 Extension::Create(path, location, *manifest, creation_flags, error); | 66 Extension::Create(path, location, *manifest, creation_flags, error); |
| 54 if (extension.get()) { | 67 if (extension.get()) { |
| 55 extension->permissions_data()->SetActivePermissions(new PermissionSet( | 68 extension->permissions_data()->SetPermissions( |
| 56 apis, manifest_permissions, explicit_hosts, scriptable_hosts)); | 69 active_permissions.ToPermissionSet(), |
| 70 withheld_permissions.ToPermissionSet()); | |
| 57 } | 71 } |
| 58 return extension; | 72 return extension; |
| 59 } | 73 } |
| 60 | 74 |
| 61 namespace IPC { | 75 namespace IPC { |
| 62 | 76 |
| 63 template <> | 77 template <> |
| 64 struct ParamTraits<Manifest::Location> { | 78 struct ParamTraits<Manifest::Location> { |
| 65 typedef Manifest::Location param_type; | 79 typedef Manifest::Location param_type; |
| 66 static void Write(Message* m, const param_type& p) { | 80 static void Write(Message* m, const param_type& p) { |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 214 r->insert(p.release()); | 228 r->insert(p.release()); |
| 215 } | 229 } |
| 216 return true; | 230 return true; |
| 217 } | 231 } |
| 218 | 232 |
| 219 void ParamTraits<ManifestPermissionSet>::Log( | 233 void ParamTraits<ManifestPermissionSet>::Log( |
| 220 const param_type& p, std::string* l) { | 234 const param_type& p, std::string* l) { |
| 221 LogParam(p.map(), l); | 235 LogParam(p.map(), l); |
| 222 } | 236 } |
| 223 | 237 |
| 238 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(Message* m, | |
| 239 const param_type& p) { | |
|
not at google - send to devlin
2014/06/27 23:24:33
implement these methods on PermissionSet instead o
Devlin
2014/06/30 17:06:10
See other comment.
| |
| 240 WriteParam(m, p.apis); | |
| 241 WriteParam(m, p.manifest_permissions); | |
| 242 WriteParam(m, p.explicit_hosts); | |
| 243 WriteParam(m, p.scriptable_hosts); | |
| 244 } | |
| 245 | |
| 246 bool ParamTraits<ExtensionMsg_PermissionSetStruct>::Read(const Message* m, | |
| 247 PickleIterator* iter, | |
| 248 param_type* p) { | |
| 249 return ReadParam(m, iter, &p->apis) && | |
| 250 ReadParam(m, iter, &p->manifest_permissions) && | |
| 251 ReadParam(m, iter, &p->explicit_hosts) && | |
| 252 ReadParam(m, iter, &p->scriptable_hosts); | |
| 253 } | |
| 254 | |
| 255 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Log(const param_type& p, | |
| 256 std::string* l) { | |
| 257 LogParam(p.apis, l); | |
| 258 LogParam(p.manifest_permissions, l); | |
| 259 LogParam(p.explicit_hosts, l); | |
| 260 LogParam(p.scriptable_hosts, l); | |
| 261 } | |
| 262 | |
| 224 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(Message* m, | 263 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(Message* m, |
| 225 const param_type& p) { | 264 const param_type& p) { |
| 226 WriteParam(m, p.location); | 265 WriteParam(m, p.location); |
| 227 WriteParam(m, p.path); | 266 WriteParam(m, p.path); |
| 228 WriteParam(m, *(p.manifest)); | 267 WriteParam(m, *(p.manifest)); |
| 229 WriteParam(m, p.creation_flags); | 268 WriteParam(m, p.creation_flags); |
| 230 WriteParam(m, p.apis); | 269 WriteParam(m, p.active_permissions); |
| 231 WriteParam(m, p.explicit_hosts); | 270 WriteParam(m, p.withheld_permissions); |
| 232 WriteParam(m, p.scriptable_hosts); | |
| 233 } | 271 } |
| 234 | 272 |
| 235 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const Message* m, | 273 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const Message* m, |
| 236 PickleIterator* iter, | 274 PickleIterator* iter, |
| 237 param_type* p) { | 275 param_type* p) { |
| 238 p->manifest.reset(new base::DictionaryValue()); | 276 p->manifest.reset(new base::DictionaryValue()); |
| 239 return ReadParam(m, iter, &p->location) && | 277 return ReadParam(m, iter, &p->location) && ReadParam(m, iter, &p->path) && |
| 240 ReadParam(m, iter, &p->path) && | |
| 241 ReadParam(m, iter, p->manifest.get()) && | 278 ReadParam(m, iter, p->manifest.get()) && |
| 242 ReadParam(m, iter, &p->creation_flags) && | 279 ReadParam(m, iter, &p->creation_flags) && |
| 243 ReadParam(m, iter, &p->apis) && | 280 ReadParam(m, iter, &p->active_permissions) && |
| 244 ReadParam(m, iter, &p->explicit_hosts) && | 281 ReadParam(m, iter, &p->withheld_permissions); |
| 245 ReadParam(m, iter, &p->scriptable_hosts); | |
| 246 } | 282 } |
| 247 | 283 |
| 248 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, | 284 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, |
| 249 std::string* l) { | 285 std::string* l) { |
| 250 l->append(p.id); | 286 l->append(p.id); |
| 251 } | 287 } |
| 252 | 288 |
| 253 } // namespace IPC | 289 } // namespace IPC |
| OLD | NEW |