| 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 64eb7bed0776d6d16dad6c0279d7ebc71361855b..66ab04b756814c38abc0d8b132f4e6a238777f5c 100644
|
| --- a/extensions/common/permissions/api_permission_set.h
|
| +++ b/extensions/common/permissions/api_permission_set.h
|
| @@ -15,8 +15,9 @@ class ListValue;
|
|
|
| namespace extensions {
|
|
|
| -class Extension;
|
| class APIPermissionSet;
|
| +class Extension;
|
| +class PermissionIDSet;
|
|
|
| template<>
|
| struct BaseSetOperatorsTraits<APIPermissionSet> {
|
| @@ -60,6 +61,29 @@ class APIPermissionSet : public BaseSetOperators<APIPermissionSet> {
|
| void AddImpliedPermissions();
|
| };
|
|
|
| +// An ID representing a single permission that belongs to an app or extension.
|
| +//
|
| +// Each PermissionID has a required ID to identify the permission. For most
|
| +// permissions, this is all they have.
|
| +//
|
| +// Some more complex permissions have a parameter, which acts like an argument
|
| +// for the permission. For example, host permissions might have the ID
|
| +// kReadOnlyHost and the argument 'www.google.com' (the host which is
|
| +// read-only). Parameters are passed to the permission message rules for this
|
| +// permission, so they can affect the displayed message.
|
| +//
|
| +// TODO(sashab): Move this to the same file as PermissionIDSet once that moves
|
| +// to its own file.
|
| +class PermissionID : public std::pair<APIPermission::ID, base::string16> {
|
| + public:
|
| + PermissionID(APIPermission::ID id);
|
| + PermissionID(APIPermission::ID id, const base::string16& parameter);
|
| + virtual ~PermissionID();
|
| +
|
| + const APIPermission::ID& id() const { return this->first; }
|
| + const base::string16& parameter() const { return this->second; }
|
| +};
|
| +
|
| // A set of permissions for an app or extension. Used for passing around groups
|
| // of permissions, such as required or optional permissions. Has convenience
|
| // constructors so that it can be constructed inline.
|
| @@ -76,14 +100,15 @@ class APIPermissionSet : public BaseSetOperators<APIPermissionSet> {
|
| // PermissionIDSet p(APIPermission::kBluetooth, APIPermission::kFavicon);
|
| // // Add a permission to the set.
|
| // p.insertPermission(APIPermission::kNetworkState);
|
| -// // Add a permission with a detail to the set.
|
| +// // Add a permission with a parameter to the set.
|
| // p.insertPermission(APIPermission::kHostReadOnly,
|
| // base::ASCIIToUTF16("http://www.google.com"));
|
| //
|
| // TODO(sashab): Move this to its own file and rename it to PermissionSet after
|
| // APIPermission is removed, the current PermissionSet is no longer used, and
|
| // APIPermission::ID is the only type of Permission ID.
|
| -typedef std::pair<APIPermission::ID, base::string16> PermissionID;
|
| +// TODO(sashab): Change BaseSetOperators to support storing plain objects
|
| +// instead of pointers and change this to extend BaseSetOperators<PermissionID>.
|
| class PermissionIDSet {
|
| public:
|
| PermissionIDSet();
|
| @@ -100,13 +125,25 @@ class PermissionIDSet {
|
| APIPermission::ID permission_two,
|
| APIPermission::ID permission_three,
|
| APIPermission::ID permission_four);
|
| + PermissionIDSet(APIPermission::ID permission_one,
|
| + APIPermission::ID permission_two,
|
| + APIPermission::ID permission_three,
|
| + APIPermission::ID permission_four,
|
| + APIPermission::ID permission_five);
|
| + PermissionIDSet(APIPermission::ID permission_one,
|
| + APIPermission::ID permission_two,
|
| + APIPermission::ID permission_three,
|
| + APIPermission::ID permission_four,
|
| + APIPermission::ID permission_five,
|
| + APIPermission::ID permission_six);
|
|
|
| - // Adds the given permission, and an optional permission detail, to the set.
|
| - void insert(APIPermission::ID permission);
|
| - void insert(APIPermission::ID permission, base::string16 permission_detail);
|
| + // Adds the given permission, and an optional parameter, to the set.
|
| + void insert(APIPermission::ID permission_id);
|
| + void insert(APIPermission::ID permission_id,
|
| + base::string16 permission_parameter);
|
|
|
| private:
|
| - std::set<PermissionID> permissions;
|
| + std::set<PermissionID> permissions_;
|
| };
|
|
|
| } // namespace extensions
|
|
|