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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 | 57 |
58 ExtensionMsg_Loaded_Params::~ExtensionMsg_Loaded_Params() {} | 58 ExtensionMsg_Loaded_Params::~ExtensionMsg_Loaded_Params() {} |
59 | 59 |
60 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( | 60 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( |
61 const Extension* extension, | 61 const Extension* extension, |
62 bool include_tab_permissions) | 62 bool include_tab_permissions) |
63 : manifest(extension->manifest()->value()->DeepCopy()), | 63 : manifest(extension->manifest()->value()->DeepCopy()), |
64 location(extension->location()), | 64 location(extension->location()), |
65 path(extension->path()), | 65 path(extension->path()), |
66 active_permissions(extension->permissions_data()->active_permissions()), | 66 active_permissions(extension->permissions_data()->active_permissions()), |
67 withheld_permissions(extension->permissions_data() | 67 withheld_permissions( |
68 ->withheld_permissions()), | 68 extension->permissions_data()->withheld_permissions()), |
| 69 policy_blocked_hosts( |
| 70 extension->permissions_data()->policy_blocked_hosts()), |
| 71 policy_allowed_hosts( |
| 72 extension->permissions_data()->policy_allowed_hosts()), |
| 73 uses_default_policy_blocked_allowed_hosts( |
| 74 extension->permissions_data()->UsesDefaultPolicyHostRestrictions()), |
69 id(extension->id()), | 75 id(extension->id()), |
70 creation_flags(extension->creation_flags()) { | 76 creation_flags(extension->creation_flags()) { |
71 if (include_tab_permissions) { | 77 if (include_tab_permissions) { |
72 for (const auto& pair : | 78 for (const auto& pair : |
73 extension->permissions_data()->tab_specific_permissions()) { | 79 extension->permissions_data()->tab_specific_permissions()) { |
74 tab_specific_permissions[pair.first] = | 80 tab_specific_permissions[pair.first] = |
75 ExtensionMsg_PermissionSetStruct(*pair.second); | 81 ExtensionMsg_PermissionSetStruct(*pair.second); |
76 } | 82 } |
77 } | 83 } |
78 } | 84 } |
79 | 85 |
80 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( | 86 ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( |
81 const ExtensionMsg_Loaded_Params& other) = default; | 87 const ExtensionMsg_Loaded_Params& other) = default; |
82 | 88 |
83 scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( | 89 scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( |
84 std::string* error) const { | 90 std::string* error) const { |
85 // We pass in the |id| to the create call because it will save work in the | 91 // We pass in the |id| to the create call because it will save work in the |
86 // normal case, and because in tests, extensions may not have paths or keys, | 92 // normal case, and because in tests, extensions may not have paths or keys, |
87 // but it's important to retain the same id. | 93 // but it's important to retain the same id. |
88 scoped_refptr<Extension> extension = | 94 scoped_refptr<Extension> extension = |
89 Extension::Create(path, location, *manifest, creation_flags, id, error); | 95 Extension::Create(path, location, *manifest, creation_flags, id, error); |
90 if (extension.get()) { | 96 if (extension.get()) { |
91 const extensions::PermissionsData* permissions_data = | 97 const extensions::PermissionsData* permissions_data = |
92 extension->permissions_data(); | 98 extension->permissions_data(); |
93 permissions_data->SetPermissions(active_permissions.ToPermissionSet(), | 99 permissions_data->SetPermissions(active_permissions.ToPermissionSet(), |
94 withheld_permissions.ToPermissionSet()); | 100 withheld_permissions.ToPermissionSet()); |
| 101 if (uses_default_policy_blocked_allowed_hosts) { |
| 102 permissions_data->SetUsesDefaultHostRestrictions(); |
| 103 } else { |
| 104 permissions_data->SetPolicyHostRestrictions(policy_blocked_hosts, |
| 105 policy_allowed_hosts); |
| 106 } |
95 for (const auto& pair : tab_specific_permissions) { | 107 for (const auto& pair : tab_specific_permissions) { |
96 permissions_data->UpdateTabSpecificPermissions( | 108 permissions_data->UpdateTabSpecificPermissions( |
97 pair.first, *pair.second.ToPermissionSet()); | 109 pair.first, *pair.second.ToPermissionSet()); |
98 } | 110 } |
99 } | 111 } |
100 return extension; | 112 return extension; |
101 } | 113 } |
102 | 114 |
103 namespace IPC { | 115 namespace IPC { |
104 | 116 |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(base::Pickle* m, | 364 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(base::Pickle* m, |
353 const param_type& p) { | 365 const param_type& p) { |
354 WriteParam(m, p.location); | 366 WriteParam(m, p.location); |
355 WriteParam(m, p.path); | 367 WriteParam(m, p.path); |
356 WriteParam(m, *(p.manifest)); | 368 WriteParam(m, *(p.manifest)); |
357 WriteParam(m, p.creation_flags); | 369 WriteParam(m, p.creation_flags); |
358 WriteParam(m, p.id); | 370 WriteParam(m, p.id); |
359 WriteParam(m, p.active_permissions); | 371 WriteParam(m, p.active_permissions); |
360 WriteParam(m, p.withheld_permissions); | 372 WriteParam(m, p.withheld_permissions); |
361 WriteParam(m, p.tab_specific_permissions); | 373 WriteParam(m, p.tab_specific_permissions); |
| 374 WriteParam(m, p.policy_blocked_hosts); |
| 375 WriteParam(m, p.policy_allowed_hosts); |
| 376 WriteParam(m, p.uses_default_policy_blocked_allowed_hosts); |
362 } | 377 } |
363 | 378 |
364 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const base::Pickle* m, | 379 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const base::Pickle* m, |
365 base::PickleIterator* iter, | 380 base::PickleIterator* iter, |
366 param_type* p) { | 381 param_type* p) { |
367 p->manifest.reset(new base::DictionaryValue()); | 382 p->manifest.reset(new base::DictionaryValue()); |
368 return ReadParam(m, iter, &p->location) && ReadParam(m, iter, &p->path) && | 383 return ReadParam(m, iter, &p->location) && ReadParam(m, iter, &p->path) && |
369 ReadParam(m, iter, p->manifest.get()) && | 384 ReadParam(m, iter, p->manifest.get()) && |
370 ReadParam(m, iter, &p->creation_flags) && ReadParam(m, iter, &p->id) && | 385 ReadParam(m, iter, &p->creation_flags) && ReadParam(m, iter, &p->id) && |
371 ReadParam(m, iter, &p->active_permissions) && | 386 ReadParam(m, iter, &p->active_permissions) && |
372 ReadParam(m, iter, &p->withheld_permissions) && | 387 ReadParam(m, iter, &p->withheld_permissions) && |
373 ReadParam(m, iter, &p->tab_specific_permissions); | 388 ReadParam(m, iter, &p->tab_specific_permissions) && |
| 389 ReadParam(m, iter, &p->policy_blocked_hosts) && |
| 390 ReadParam(m, iter, &p->policy_allowed_hosts) && |
| 391 ReadParam(m, iter, &p->uses_default_policy_blocked_allowed_hosts); |
374 } | 392 } |
375 | 393 |
376 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, | 394 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, |
377 std::string* l) { | 395 std::string* l) { |
378 l->append(p.id); | 396 l->append(p.id); |
379 } | 397 } |
380 | 398 |
381 } // namespace IPC | 399 } // namespace IPC |
OLD | NEW |