Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(437)

Side by Side Diff: extensions/common/extension_messages.cc

Issue 2499493004: Communicate ExtensionSettings policy to renderers (Closed)
Patch Set: nits Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 LogParam(p.type(), l); 326 LogParam(p.type(), l);
315 LogParam(p.id(), l); 327 LogParam(p.id(), l);
316 } 328 }
317 329
318 void ParamTraits<ExtensionMsg_PermissionSetStruct>::GetSize( 330 void ParamTraits<ExtensionMsg_PermissionSetStruct>::GetSize(
319 base::PickleSizer* s, const param_type& p) { 331 base::PickleSizer* s, const param_type& p) {
320 GetParamSize(s, p.apis); 332 GetParamSize(s, p.apis);
321 GetParamSize(s, p.manifest_permissions); 333 GetParamSize(s, p.manifest_permissions);
322 GetParamSize(s, p.explicit_hosts); 334 GetParamSize(s, p.explicit_hosts);
323 GetParamSize(s, p.scriptable_hosts); 335 GetParamSize(s, p.scriptable_hosts);
336 GetParamSize(s, p.policy_blocked_hosts);
337 GetParamSize(s, p.policy_allowed_hosts);
338 GetParamSize(s, p.uses_default_policy_host_restrictions);
324 } 339 }
325 340
326 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(base::Pickle* m, 341 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Write(base::Pickle* m,
327 const param_type& p) { 342 const param_type& p) {
328 WriteParam(m, p.apis); 343 WriteParam(m, p.apis);
329 WriteParam(m, p.manifest_permissions); 344 WriteParam(m, p.manifest_permissions);
330 WriteParam(m, p.explicit_hosts); 345 WriteParam(m, p.explicit_hosts);
331 WriteParam(m, p.scriptable_hosts); 346 WriteParam(m, p.scriptable_hosts);
347 WriteParam(m, p.policy_blocked_hosts);
348 WriteParam(m, p.policy_allowed_hosts);
349 WriteParam(m, p.uses_default_policy_host_restrictions);
332 } 350 }
333 351
334 bool ParamTraits<ExtensionMsg_PermissionSetStruct>::Read( 352 bool ParamTraits<ExtensionMsg_PermissionSetStruct>::Read(
335 const base::Pickle* m, 353 const base::Pickle* m,
336 base::PickleIterator* iter, 354 base::PickleIterator* iter,
337 param_type* p) { 355 param_type* p) {
338 return ReadParam(m, iter, &p->apis) && 356 return ReadParam(m, iter, &p->apis) &&
339 ReadParam(m, iter, &p->manifest_permissions) && 357 ReadParam(m, iter, &p->manifest_permissions) &&
340 ReadParam(m, iter, &p->explicit_hosts) && 358 ReadParam(m, iter, &p->explicit_hosts) &&
341 ReadParam(m, iter, &p->scriptable_hosts); 359 ReadParam(m, iter, &p->scriptable_hosts) &&
360 ReadParam(m, iter, &p->policy_blocked_hosts) &&
361 ReadParam(m, iter, &p->policy_allowed_hosts) &&
362 ReadParam(m, iter, &p->uses_default_policy_host_restrictions);
342 } 363 }
343 364
344 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Log(const param_type& p, 365 void ParamTraits<ExtensionMsg_PermissionSetStruct>::Log(const param_type& p,
345 std::string* l) { 366 std::string* l) {
346 LogParam(p.apis, l); 367 LogParam(p.apis, l);
347 LogParam(p.manifest_permissions, l); 368 LogParam(p.manifest_permissions, l);
348 LogParam(p.explicit_hosts, l); 369 LogParam(p.explicit_hosts, l);
349 LogParam(p.scriptable_hosts, l); 370 LogParam(p.scriptable_hosts, l);
371 LogParam(p.policy_blocked_hosts, l);
372 LogParam(p.policy_allowed_hosts, l);
373 LogParam(p.uses_default_policy_host_restrictions, l);
350 } 374 }
351 375
352 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(base::Pickle* m, 376 void ParamTraits<ExtensionMsg_Loaded_Params>::Write(base::Pickle* m,
353 const param_type& p) { 377 const param_type& p) {
354 WriteParam(m, p.location); 378 WriteParam(m, p.location);
355 WriteParam(m, p.path); 379 WriteParam(m, p.path);
356 WriteParam(m, *(p.manifest)); 380 WriteParam(m, *(p.manifest));
357 WriteParam(m, p.creation_flags); 381 WriteParam(m, p.creation_flags);
358 WriteParam(m, p.id); 382 WriteParam(m, p.id);
359 WriteParam(m, p.active_permissions); 383 WriteParam(m, p.active_permissions);
360 WriteParam(m, p.withheld_permissions); 384 WriteParam(m, p.withheld_permissions);
361 WriteParam(m, p.tab_specific_permissions); 385 WriteParam(m, p.tab_specific_permissions);
386 WriteParam(m, p.policy_blocked_hosts);
387 WriteParam(m, p.policy_allowed_hosts);
388 WriteParam(m, p.uses_default_policy_blocked_allowed_hosts);
362 } 389 }
363 390
364 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const base::Pickle* m, 391 bool ParamTraits<ExtensionMsg_Loaded_Params>::Read(const base::Pickle* m,
365 base::PickleIterator* iter, 392 base::PickleIterator* iter,
366 param_type* p) { 393 param_type* p) {
367 p->manifest.reset(new base::DictionaryValue()); 394 p->manifest.reset(new base::DictionaryValue());
368 return ReadParam(m, iter, &p->location) && ReadParam(m, iter, &p->path) && 395 return ReadParam(m, iter, &p->location) && ReadParam(m, iter, &p->path) &&
369 ReadParam(m, iter, p->manifest.get()) && 396 ReadParam(m, iter, p->manifest.get()) &&
370 ReadParam(m, iter, &p->creation_flags) && ReadParam(m, iter, &p->id) && 397 ReadParam(m, iter, &p->creation_flags) && ReadParam(m, iter, &p->id) &&
371 ReadParam(m, iter, &p->active_permissions) && 398 ReadParam(m, iter, &p->active_permissions) &&
372 ReadParam(m, iter, &p->withheld_permissions) && 399 ReadParam(m, iter, &p->withheld_permissions) &&
373 ReadParam(m, iter, &p->tab_specific_permissions); 400 ReadParam(m, iter, &p->tab_specific_permissions) &&
401 ReadParam(m, iter, &p->policy_blocked_hosts) &&
402 ReadParam(m, iter, &p->policy_allowed_hosts) &&
403 ReadParam(m, iter, &p->uses_default_policy_blocked_allowed_hosts);
374 } 404 }
375 405
376 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p, 406 void ParamTraits<ExtensionMsg_Loaded_Params>::Log(const param_type& p,
377 std::string* l) { 407 std::string* l) {
378 l->append(p.id); 408 l->append(p.id);
379 } 409 }
380 410
381 } // namespace IPC 411 } // namespace IPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698