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

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

Issue 10692160: Support socket endpoint permissions for AppsV2 Socket API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix review issues and add some unit tests 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/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..f06ba2399c190fb0e7f4d7414cdf3b4e08ce0ce2
--- /dev/null
+++ b/chrome/common/extensions/permissions/api_permission_set.h
@@ -0,0 +1,133 @@
+// 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++() {
+ 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);
+
+ 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);
+
+ private:
+ APIPermissionMap map_;
+};
+
+} // namespace extensions
+
+#endif // CHROME_COMMON_EXTENSIONS_PERMISSIONS_API_PERMISSION_SET_H_

Powered by Google App Engine
This is Rietveld 408576698