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" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
42 apis, manifest_permissions, explicit_hosts, scriptable_hosts); | 42 apis, manifest_permissions, explicit_hosts, scriptable_hosts); |
43 } | 43 } |
44 | 44 |
45 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params() | 45 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params() |
46 : location(Manifest::INVALID_LOCATION), | 46 : location(Manifest::INVALID_LOCATION), |
47 creation_flags(Extension::NO_FLAGS) {} | 47 creation_flags(Extension::NO_FLAGS) {} |
48 | 48 |
49 ExtensionMsg_Loaded_Params::~ExtensionMsg_Loaded_Params() {} | 49 ExtensionMsg_Loaded_Params::~ExtensionMsg_Loaded_Params() {} |
50 | 50 |
51 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( | 51 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( |
52 const Extension* extension) | 52 const Extension* extension, |
53 bool include_tab_permissions) | |
53 : manifest(extension->manifest()->value()->DeepCopy()), | 54 : manifest(extension->manifest()->value()->DeepCopy()), |
54 location(extension->location()), | 55 location(extension->location()), |
55 path(extension->path()), | 56 path(extension->path()), |
56 active_permissions(*extension->permissions_data()->active_permissions()), | 57 active_permissions(*extension->permissions_data()->active_permissions()), |
57 withheld_permissions( | 58 withheld_permissions( |
58 *extension->permissions_data()->withheld_permissions()), | 59 *extension->permissions_data()->withheld_permissions()), |
59 id(extension->id()), | 60 id(extension->id()), |
60 creation_flags(extension->creation_flags()) { | 61 creation_flags(extension->creation_flags()) { |
62 if (include_tab_permissions) { | |
63 const extensions::PermissionsData::TabPermissionsMap& tab_permissions = | |
64 extension->permissions_data()->tab_specific_permissions(); | |
65 for (const auto& pair : tab_permissions) { | |
66 tab_specific_permissions[pair.first] = | |
67 ExtensionMsg_PermissionSetStruct(*pair.second); | |
68 } | |
69 } | |
61 } | 70 } |
62 | 71 |
63 scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( | 72 scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( |
64 std::string* error) const { | 73 std::string* error) const { |
65 scoped_refptr<Extension> extension = | 74 scoped_refptr<Extension> extension = |
66 Extension::Create(path, location, *manifest, creation_flags, error); | 75 Extension::Create(path, location, *manifest, creation_flags, error); |
67 if (extension.get()) { | 76 if (extension.get()) { |
68 extension->permissions_data()->SetPermissions( | 77 const extensions::PermissionsData* permissions_data = |
69 active_permissions.ToPermissionSet(), | 78 extension->permissions_data(); |
70 withheld_permissions.ToPermissionSet()); | 79 permissions_data->SetPermissions(active_permissions.ToPermissionSet(), |
80 withheld_permissions.ToPermissionSet()); | |
81 for (const auto& pair : tab_specific_permissions) { | |
not at google - send to devlin
2015/02/05 00:16:13
Should only really do this if |include_tab_permiss
Devlin
2015/02/05 19:54:50
But then we have to cache include_tab_permissions,
not at google - send to devlin
2015/02/05 22:40:22
Oh, you're not saving it... good point. Yes just s
| |
82 permissions_data->UpdateTabSpecificPermissions( | |
83 pair.first, pair.second.ToPermissionSet()); | |
84 } | |
71 } | 85 } |
72 return extension; | 86 return extension; |
73 } | 87 } |
74 | 88 |
75 namespace IPC { | 89 namespace IPC { |
76 | 90 |
77 template <> | 91 template <> |
78 struct ParamTraits<Manifest::Location> { | 92 struct ParamTraits<Manifest::Location> { |
79 typedef Manifest::Location param_type; | 93 typedef Manifest::Location param_type; |
80 static void Write(Message* m, const param_type& p) { | 94 static void Write(Message* m, const param_type& p) { |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
280 ReadParam(m, iter, &p->active_permissions) && | 294 ReadParam(m, iter, &p->active_permissions) && |
281 ReadParam(m, iter, &p->withheld_permissions); | 295 ReadParam(m, iter, &p->withheld_permissions); |
282 } | 296 } |
283 | 297 |
284 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, | 298 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, |
285 std::string* l) { | 299 std::string* l) { |
286 l->append(p.id); | 300 l->append(p.id); |
287 } | 301 } |
288 | 302 |
289 } // namespace IPC | 303 } // namespace IPC |
OLD | NEW |