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 |