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