| Index: extensions/common/permissions/permission_set.cc
|
| diff --git a/extensions/common/permissions/permission_set.cc b/extensions/common/permissions/permission_set.cc
|
| index d3f46fc1942d2cc2780652cd8fac3e4f2e93bb53..8ec1cbedd02658669ec6c8e1b045c1897cbb719e 100644
|
| --- a/extensions/common/permissions/permission_set.cc
|
| +++ b/extensions/common/permissions/permission_set.cc
|
| @@ -38,9 +38,11 @@ PermissionSet::PermissionSet() {}
|
|
|
| PermissionSet::PermissionSet(
|
| const APIPermissionSet& apis,
|
| + const ManifestPermissionSet& manifest_permissions,
|
| const URLPatternSet& explicit_hosts,
|
| const URLPatternSet& scriptable_hosts)
|
| : apis_(apis),
|
| + manifest_permissions_(manifest_permissions),
|
| scriptable_hosts_(scriptable_hosts) {
|
| AddPatternsAndRemovePaths(explicit_hosts, &explicit_hosts_);
|
| InitImplicitPermissions();
|
| @@ -58,6 +60,11 @@ PermissionSet* PermissionSet::CreateDifference(
|
| APIPermissionSet apis;
|
| APIPermissionSet::Difference(set1_safe->apis(), set2_safe->apis(), &apis);
|
|
|
| + ManifestPermissionSet manifest_permissions;
|
| + ManifestPermissionSet::Difference(set1_safe->manifest_permissions(),
|
| + set2_safe->manifest_permissions(),
|
| + &manifest_permissions);
|
| +
|
| URLPatternSet explicit_hosts;
|
| URLPatternSet::CreateDifference(set1_safe->explicit_hosts(),
|
| set2_safe->explicit_hosts(),
|
| @@ -68,7 +75,8 @@ PermissionSet* PermissionSet::CreateDifference(
|
| set2_safe->scriptable_hosts(),
|
| &scriptable_hosts);
|
|
|
| - return new PermissionSet(apis, explicit_hosts, scriptable_hosts);
|
| + return new PermissionSet(apis, manifest_permissions,
|
| + explicit_hosts, scriptable_hosts);
|
| }
|
|
|
| // static
|
| @@ -82,6 +90,11 @@ PermissionSet* PermissionSet::CreateIntersection(
|
| APIPermissionSet apis;
|
| APIPermissionSet::Intersection(set1_safe->apis(), set2_safe->apis(), &apis);
|
|
|
| + ManifestPermissionSet manifest_permissions;
|
| + ManifestPermissionSet::Intersection(set1_safe->manifest_permissions(),
|
| + set2_safe->manifest_permissions(),
|
| + &manifest_permissions);
|
| +
|
| URLPatternSet explicit_hosts;
|
| URLPatternSet::CreateIntersection(set1_safe->explicit_hosts(),
|
| set2_safe->explicit_hosts(),
|
| @@ -92,7 +105,8 @@ PermissionSet* PermissionSet::CreateIntersection(
|
| set2_safe->scriptable_hosts(),
|
| &scriptable_hosts);
|
|
|
| - return new PermissionSet(apis, explicit_hosts, scriptable_hosts);
|
| + return new PermissionSet(apis, manifest_permissions,
|
| + explicit_hosts, scriptable_hosts);
|
| }
|
|
|
| // static
|
| @@ -106,6 +120,11 @@ PermissionSet* PermissionSet::CreateUnion(
|
| APIPermissionSet apis;
|
| APIPermissionSet::Union(set1_safe->apis(), set2_safe->apis(), &apis);
|
|
|
| + ManifestPermissionSet manifest_permissions;
|
| + ManifestPermissionSet::Union(set1_safe->manifest_permissions(),
|
| + set2_safe->manifest_permissions(),
|
| + &manifest_permissions);
|
| +
|
| URLPatternSet explicit_hosts;
|
| URLPatternSet::CreateUnion(set1_safe->explicit_hosts(),
|
| set2_safe->explicit_hosts(),
|
| @@ -116,18 +135,21 @@ PermissionSet* PermissionSet::CreateUnion(
|
| set2_safe->scriptable_hosts(),
|
| &scriptable_hosts);
|
|
|
| - return new PermissionSet(apis, explicit_hosts, scriptable_hosts);
|
| + return new PermissionSet(apis, manifest_permissions,
|
| + explicit_hosts, scriptable_hosts);
|
| }
|
|
|
| bool PermissionSet::operator==(
|
| const PermissionSet& rhs) const {
|
| return apis_ == rhs.apis_ &&
|
| + manifest_permissions_ == rhs.manifest_permissions_ &&
|
| scriptable_hosts_ == rhs.scriptable_hosts_ &&
|
| explicit_hosts_ == rhs.explicit_hosts_;
|
| }
|
|
|
| bool PermissionSet::Contains(const PermissionSet& set) const {
|
| return apis_.Contains(set.apis()) &&
|
| + manifest_permissions_.Contains(set.manifest_permissions()) &&
|
| explicit_hosts().Contains(set.explicit_hosts()) &&
|
| scriptable_hosts().Contains(set.scriptable_hosts());
|
| }
|
| @@ -147,7 +169,7 @@ bool PermissionSet::IsEmpty() const {
|
| return false;
|
|
|
| // Or if it has no api permissions.
|
| - return apis().empty();
|
| + return apis().empty() && manifest_permissions().empty();
|
| }
|
|
|
| bool PermissionSet::HasAPIPermission(
|
|
|