Chromium Code Reviews| Index: chrome/common/extensions/permissions/api_permission_set.h |
| diff --git a/chrome/common/extensions/permissions/api_permission_set.h b/chrome/common/extensions/permissions/api_permission_set.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2ae157decba0bc58c5acd4b9890e79570414b135 |
| --- /dev/null |
| +++ b/chrome/common/extensions/permissions/api_permission_set.h |
| @@ -0,0 +1,129 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_COMMON_EXTENSIONS_PERMISSIONS_API_PERMISSION_SET_H_ |
| +#define CHROME_COMMON_EXTENSIONS_PERMISSIONS_API_PERMISSION_SET_H_ |
| + |
| +#include <iterator> |
| +#include <map> |
| + |
| +#include "chrome/common/extensions/permissions/api_permission.h" |
| + |
| +namespace extensions { |
| + |
| +typedef std::map<APIPermission::ID, |
| + scoped_refptr<APIPermissionDetail> > APIPermissionMap; |
| + |
| +class APIPermissionSet { |
| + public: |
| + class const_iterator : |
| + public std::iterator< |
| + std::input_iterator_tag, |
| + scoped_refptr<APIPermissionDetail> > { |
| + public: |
| + const_iterator(const APIPermissionMap::const_iterator& it) |
| + : it_(it) {} |
| + const_iterator(const const_iterator& ids_it) : it_(ids_it.it_) {} |
| + const_iterator& operator++() { |
|
miket_OOO
2012/07/31 18:18:37
the vertical whitespace here is inconsistent. If y
Peng
2012/07/31 19:32:28
Done.
|
| + it_++; |
| + return *this; |
| + } |
| + |
| + const_iterator operator++(int) { |
| + const_iterator tmp(*this); |
| + operator++(); |
| + 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 scoped_refptr<APIPermissionDetail>& operator*() const { |
| + return it_->second; |
| + } |
| + |
| + const scoped_refptr<APIPermissionDetail>& operator->() const { |
| + return it_->second; |
| + } |
| + |
| + private: |
| + APIPermissionMap::const_iterator it_; |
| + }; |
| + |
| + 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(); |
| + } |
| + |
| + bool operator==(const APIPermissionSet& rhs) const; |
| + |
| + bool operator!=(const APIPermissionSet& rhs) const { |
| + return !operator==(rhs); |
| + } |
| + |
| + void insert(APIPermission::ID id); |
| + void insert(const scoped_refptr<APIPermissionDetail>& detail); |
| + |
| + 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); |
| + |
| + private: |
| + APIPermissionMap map_; |
| +}; |
| + |
| +} // namespace extensions |
| + |
| +#endif // CHROME_COMMON_EXTENSIONS_PERMISSIONS_API_PERMISSION_SET_H_ |