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

Unified Diff: chrome/common/extensions/permissions/permission_set.cc

Issue 10692160: Support socket endpoint permissions for AppsV2 Socket API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase and fix a unit test Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
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_());
}
« no previous file with comments | « chrome/common/extensions/permissions/permission_set.h ('k') | chrome/common/extensions/permissions/permission_set_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698