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

Unified Diff: chrome/common/extensions/extension_permission_set.h

Issue 7432006: Add an experimental permissions API for extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix clang Created 9 years, 5 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/extension_permission_set.h
diff --git a/chrome/common/extensions/extension_permission_set.h b/chrome/common/extensions/extension_permission_set.h
index c9a67e91eb76f3944b320beb0cdab08803573414..3d4d3535a38dc06855bbf64fcd8f6ce8e984cb9b 100644
--- a/chrome/common/extensions/extension_permission_set.h
+++ b/chrome/common/extensions/extension_permission_set.h
@@ -13,6 +13,7 @@
#include "base/gtest_prod_util.h"
#include "base/memory/singleton.h"
+#include "base/memory/ref_counted.h"
#include "base/scoped_ptr.h"
#include "base/string16.h"
#include "chrome/common/extensions/url_pattern_set.h"
@@ -121,6 +122,7 @@ class ExtensionAPIPermission {
kWebstorePrivate,
kDevtools,
kPlugin,
+ kPermissions,
kEnumBoundary
};
@@ -266,7 +268,8 @@ class ExtensionPermissionsInfo {
// The ExtensionPermissionSet is an immutable class that encapsulates an
// extension's permissions. The class exposes set operations for combining and
// manipulating the permissions.
-class ExtensionPermissionSet {
+class ExtensionPermissionSet
+ : public base::RefCountedThreadSafe<ExtensionPermissionSet> {
public:
// Creates an empty permission set (e.g. default permissions).
ExtensionPermissionSet();
@@ -286,11 +289,26 @@ class ExtensionPermissionSet {
~ExtensionPermissionSet();
+ // Creates a new permission set equal to |set1| - |set2|, passing ownership of
+ // the new set to the caller.
+ static ExtensionPermissionSet* CreateDifference(
+ const ExtensionPermissionSet* set1, const ExtensionPermissionSet* set2);
+
+ // Creates a new permission set equal to the intersection of |set1| and
+ // |set2|, passing ownership of the new set to the caller.
+ static ExtensionPermissionSet* CreateIntersection(
+ const ExtensionPermissionSet* set1, const ExtensionPermissionSet* set2);
+
// Creates a new permission set equal to the union of |set1| and |set2|.
// Passes ownership of the new set to the caller.
static ExtensionPermissionSet* CreateUnion(
const ExtensionPermissionSet* set1, const ExtensionPermissionSet* set2);
+ bool operator==(const ExtensionPermissionSet& rhs) const;
+
+ // Returns true if |set| is a subset of this.
+ bool Contains(const ExtensionPermissionSet& set) const;
+
// Gets the API permissions in this set as a set of strings.
std::set<std::string> GetAPIsAsStrings() const;
@@ -353,6 +371,8 @@ class ExtensionPermissionSet {
FRIEND_TEST_ALL_PREFIXES(ExtensionPermissionSetTest,
HasLessHostPrivilegesThan);
+ friend class base::RefCountedThreadSafe<ExtensionPermissionSet>;
+
static std::set<std::string> GetDistinctHosts(
const URLPatternSet& host_patterns, bool include_rcd);
@@ -380,9 +400,11 @@ class ExtensionPermissionSet {
ExtensionAPIPermissionSet apis_;
// The list of hosts that can be accessed directly from the extension.
+ // TODO(jstritar): Rename to "hosts_"?
URLPatternSet explicit_hosts_;
// The list of hosts that can be scripted by content scripts.
+ // TODO(jstritar): Rename to "user_script_hosts_"?
URLPatternSet scriptable_hosts_;
// The list of hosts this effectively grants access to.
« no previous file with comments | « chrome/common/extensions/extension_messages.cc ('k') | chrome/common/extensions/extension_permission_set.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698