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

Unified Diff: extensions/common/permissions/api_permission_set.h

Issue 51433002: Enable permission warnings from ManifestHandlers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address code review comments. Created 7 years, 1 month 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: extensions/common/permissions/api_permission_set.h
diff --git a/extensions/common/permissions/api_permission_set.h b/extensions/common/permissions/api_permission_set.h
index 9b6f26da35432ff80be0ff89bce6786d386117a8..c5dd2483916b11c7113c6f6be29928d64dcf3e52 100644
--- a/extensions/common/permissions/api_permission_set.h
+++ b/extensions/common/permissions/api_permission_set.h
@@ -5,11 +5,9 @@
#ifndef EXTENSIONS_COMMON_PERMISSIONS_API_PERMISSION_SET_H_
#define EXTENSIONS_COMMON_PERMISSIONS_API_PERMISSION_SET_H_
-#include <iterator>
-#include <map>
-#include "base/memory/linked_ptr.h"
#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/base_set_operators.h"
namespace base {
class ListValue;
@@ -18,48 +16,16 @@ class ListValue;
namespace extensions {
class Extension;
+class APIPermissionSet;
-typedef std::map<APIPermission::ID,
- linked_ptr<APIPermission> > APIPermissionMap;
+template<>
+struct BaseSetOperatorsTraits<APIPermissionSet> {
+ typedef APIPermission ElementType;
+ typedef APIPermission::ID ElementIDType;
+};
-class APIPermissionSet {
+class APIPermissionSet : public BaseSetOperators<APIPermissionSet> {
public:
- class const_iterator :
- public std::iterator<std::input_iterator_tag, const APIPermission*> {
- public:
- const_iterator(const APIPermissionMap::const_iterator& it);
- const_iterator(const const_iterator& ids_it);
-
- const_iterator& operator++() {
- ++it_;
- return *this;
- }
-
- const_iterator operator++(int) {
- const_iterator tmp(it_++);
- return tmp;
- }
-
- bool operator==(const const_iterator& rhs) const {
- return it_ == rhs.it_;
- }
-
- bool operator!=(const const_iterator& rhs) const {
- return it_ != rhs.it_;
- }
-
- const APIPermission* operator*() const {
- return it_->second.get();
- }
-
- const APIPermission* operator->() const {
- return it_->second.get();
- }
-
- private:
- APIPermissionMap::const_iterator it_;
- };
-
enum ParseSource {
// Don't allow internal permissions to be parsed (e.g. entries in the
// "permissions" list in a manifest).
@@ -70,87 +36,16 @@ class APIPermissionSet {
kAllowInternalPermissions,
};
- APIPermissionSet();
-
- APIPermissionSet(const APIPermissionSet& set);
-
- ~APIPermissionSet();
-
- const_iterator begin() const {
- return const_iterator(map().begin());
- }
-
- const_iterator end() const {
- return map().end();
- }
-
- const_iterator find(APIPermission::ID id) const {
- return map().find(id);
- }
-
- const APIPermissionMap& map() const {
- return map_;
- }
-
- APIPermissionMap& map() {
- return map_;
- }
-
- void clear() {
- map_.clear();
- }
-
- size_t count(APIPermission::ID id) const {
- return map().count(id);
- }
-
- bool empty() const {
- return map().empty();
- }
-
- size_t erase(APIPermission::ID id) {
- return map().erase(id);
- }
-
- size_t size() const {
- return map().size();
- }
-
- APIPermissionSet& operator=(const APIPermissionSet& rhs);
-
- bool operator==(const APIPermissionSet& rhs) const;
-
- bool operator!=(const APIPermissionSet& rhs) const {
- return !operator==(rhs);
- }
-
void insert(APIPermission::ID id);
// Insert |permission| into the APIPermissionSet. The APIPermissionSet will
// take the ownership of |permission|,
void insert(APIPermission* permission);
- bool Contains(const APIPermissionSet& rhs) const;
-
- static void Difference(
- const APIPermissionSet& set1,
- const APIPermissionSet& set2,
- APIPermissionSet* set3);
-
- static void Intersection(
- const APIPermissionSet& set1,
- const APIPermissionSet& set2,
- APIPermissionSet* set3);
-
- static void Union(
- const APIPermissionSet& set1,
- const APIPermissionSet& set2,
- APIPermissionSet* set3);
-
// Parses permissions from |permissions| and adds the parsed permissions to
// |api_permissions|. If |source| is kDisallowInternalPermissions, treat
- // permissions with kFlagInternal as errors. If |unhandled_permissions|
- // is not NULL, the names of all permissions that couldn't be parsed will be
+ // permissions with kFlagInternal as errors. If |unhandled_permissions| is
+ // not NULL, the names of all permissions that couldn't be parsed will be
// added to this vector. If |error| is NULL, parsing will continue with the
// next permission if invalid data is detected. If |error| is not NULL, it
// will be set to an error message and false is returned when an invalid
@@ -163,9 +58,6 @@ class APIPermissionSet {
std::vector<std::string>* unhandled_permissions);
void AddImpliedPermissions();
-
- private:
- APIPermissionMap map_;
};
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698