| Index: chrome/common/extensions/permissions/permission_set.cc
|
| diff --git a/chrome/common/extensions/permissions/permission_set.cc b/chrome/common/extensions/permissions/permission_set.cc
|
| index fde8fee03847d3545e8736d58d454aded2ca238d..fbfe7084ffe2170ffc8c6a39d36173031fa338b8 100644
|
| --- a/chrome/common/extensions/permissions/permission_set.cc
|
| +++ b/chrome/common/extensions/permissions/permission_set.cc
|
| @@ -128,10 +128,7 @@ PermissionSet* PermissionSet::CreateDifference(
|
| const PermissionSet* set2_safe = (set2 == NULL) ? empty : set2;
|
|
|
| APIPermissionSet apis;
|
| - std::set_difference(set1_safe->apis().begin(), set1_safe->apis().end(),
|
| - set2_safe->apis().begin(), set2_safe->apis().end(),
|
| - std::insert_iterator<APIPermissionSet>(
|
| - apis, apis.begin()));
|
| + APIPermissionSet::Difference(set1_safe->apis(), set2_safe->apis(), &apis);
|
|
|
| URLPatternSet explicit_hosts;
|
| URLPatternSet::CreateDifference(set1_safe->explicit_hosts(),
|
| @@ -155,10 +152,8 @@ PermissionSet* PermissionSet::CreateIntersection(
|
| const PermissionSet* set2_safe = (set2 == NULL) ? empty : set2;
|
|
|
| APIPermissionSet apis;
|
| - std::set_intersection(set1_safe->apis().begin(), set1_safe->apis().end(),
|
| - set2_safe->apis().begin(), set2_safe->apis().end(),
|
| - std::insert_iterator<APIPermissionSet>(
|
| - apis, apis.begin()));
|
| + APIPermissionSet::Intersection(set1_safe->apis(), set2_safe->apis(), &apis);
|
| +
|
| URLPatternSet explicit_hosts;
|
| URLPatternSet::CreateIntersection(set1_safe->explicit_hosts(),
|
| set2_safe->explicit_hosts(),
|
| @@ -181,10 +176,7 @@ PermissionSet* PermissionSet::CreateUnion(
|
| const PermissionSet* set2_safe = (set2 == NULL) ? empty : set2;
|
|
|
| APIPermissionSet apis;
|
| - std::set_union(set1_safe->apis().begin(), set1_safe->apis().end(),
|
| - set2_safe->apis().begin(), set2_safe->apis().end(),
|
| - std::insert_iterator<APIPermissionSet>(
|
| - apis, apis.begin()));
|
| + APIPermissionSet::Union(set1_safe->apis(), set2_safe->apis(), &apis);
|
|
|
| URLPatternSet explicit_hosts;
|
| URLPatternSet::CreateUnion(set1_safe->explicit_hosts(),
|
| @@ -211,9 +203,8 @@ bool PermissionSet::Contains(const PermissionSet& set) const {
|
| if (set.IsEmpty())
|
| return true;
|
|
|
| - if (!std::includes(apis_.begin(), apis_.end(),
|
| - set.apis().begin(), set.apis().end()))
|
| - return false;
|
| + if (!apis_.Contains(set.apis()))
|
| + return false;
|
|
|
| if (!explicit_hosts().Contains(set.explicit_hosts()))
|
| return false;
|
| @@ -225,13 +216,10 @@ bool PermissionSet::Contains(const PermissionSet& set) const {
|
| }
|
|
|
| std::set<std::string> PermissionSet::GetAPIsAsStrings() const {
|
| - PermissionsInfo* info = PermissionsInfo::GetInstance();
|
| std::set<std::string> apis_str;
|
| for (APIPermissionSet::const_iterator i = apis_.begin();
|
| i != apis_.end(); ++i) {
|
| - APIPermission* permission = info->GetByID(*i);
|
| - if (permission)
|
| - apis_str.insert(permission->name());
|
| + apis_str.insert(i->name());
|
| }
|
| return apis_str;
|
| }
|
| @@ -340,8 +328,21 @@ bool PermissionSet::IsEmpty() const {
|
| }
|
|
|
| bool PermissionSet::HasAPIPermission(
|
| - APIPermission::ID permission) const {
|
| - return apis().find(permission) != apis().end();
|
| + APIPermission::ID id) const {
|
| + return apis().find(id) != apis().end();
|
| +}
|
| +
|
| +bool PermissionSet::CheckAPIPermission(APIPermission::ID permission) const {
|
| + return CheckAPIPermissionWithDetail(permission, NULL);
|
| +}
|
| +
|
| +bool PermissionSet::CheckAPIPermissionWithDetail(
|
| + APIPermission::ID permission,
|
| + const APIPermissionDetail::CheckParam* param) const {
|
| + APIPermissionSet::const_iterator iter = apis().find(permission);
|
| + if (iter == apis().end())
|
| + return false;
|
| + return iter->Check(param);
|
| }
|
|
|
| bool PermissionSet::HasAccessToFunction(
|
| @@ -394,11 +395,9 @@ bool PermissionSet::HasEffectiveAccessToAllHosts() const {
|
| return true;
|
| }
|
|
|
| - PermissionsInfo* info = PermissionsInfo::GetInstance();
|
| for (APIPermissionSet::const_iterator i = apis().begin();
|
| i != apis().end(); ++i) {
|
| - APIPermission* permission = info->GetByID(*i);
|
| - if (permission->implies_full_url_access())
|
| + if (i->permission()->implies_full_url_access())
|
| return true;
|
| }
|
| return false;
|
| @@ -410,11 +409,9 @@ bool PermissionSet::HasEffectiveAccessToURL(
|
| }
|
|
|
| bool PermissionSet::HasEffectiveFullAccess() const {
|
| - PermissionsInfo* info = PermissionsInfo::GetInstance();
|
| for (APIPermissionSet::const_iterator i = apis().begin();
|
| i != apis().end(); ++i) {
|
| - APIPermission* permission = info->GetByID(*i);
|
| - if (permission->implies_full_access())
|
| + if (i->permission()->implies_full_access())
|
| return true;
|
| }
|
| return false;
|
| @@ -544,7 +541,7 @@ std::set<PermissionMessage>
|
| i != apis_.end(); ++i) {
|
| DCHECK_GT(PermissionMessage::kNone,
|
| PermissionMessage::kUnknown);
|
| - APIPermission* perm = info->GetByID(*i);
|
| + APIPermission* perm = info->GetByID(i->id());
|
| if (perm && perm->message_id() > PermissionMessage::kNone)
|
| messages.insert(perm->GetMessage_());
|
| }
|
|
|