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

Side by Side Diff: extensions/common/permissions/permissions_info.h

Issue 2379763003: Extract permission alias info from PermissionsProvider (Closed)
Patch Set: . Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_INFO_H_ 5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_INFO_H_
6 #define EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_INFO_H_ 6 #define EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_INFO_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <map> 10 #include <map>
11 #include <memory> 11 #include <memory>
12 #include <set> 12 #include <set>
13 #include <string> 13 #include <string>
14 #include <vector>
14 15
15 #include "base/callback.h" 16 #include "base/callback.h"
16 #include "base/lazy_instance.h" 17 #include "base/lazy_instance.h"
17 #include "base/macros.h" 18 #include "base/macros.h"
18 #include "extensions/common/permissions/api_permission.h" 19 #include "extensions/common/permissions/api_permission.h"
19 #include "extensions/common/permissions/api_permission_set.h" 20 #include "extensions/common/permissions/api_permission_set.h"
20 #include "extensions/common/permissions/permissions_provider.h" 21 #include "extensions/common/permissions/permissions_provider.h"
21 22
22 namespace extensions { 23 namespace extensions {
23 24
25 class Alias;
26
24 // A global object that holds the extension permission instances and provides 27 // A global object that holds the extension permission instances and provides
25 // methods for accessing them. 28 // methods for accessing them.
26 class PermissionsInfo { 29 class PermissionsInfo {
27 public: 30 public:
28 static PermissionsInfo* GetInstance(); 31 static PermissionsInfo* GetInstance();
29 32
30 // Initializes the permissions from the provider. 33 // Initializes the permissions from the provider.
31 void AddProvider(const PermissionsProvider& provider); 34 void AddProvider(const PermissionsProvider& permission_provider,
35 const std::vector<Alias>& aliases);
32 36
33 // Returns the permission with the given |id|, and NULL if it doesn't exist. 37 // Returns the permission with the given |id|, and NULL if it doesn't exist.
34 const APIPermissionInfo* GetByID(APIPermission::ID id) const; 38 const APIPermissionInfo* GetByID(APIPermission::ID id) const;
35 39
36 // Returns the permission with the given |name|, and NULL if none 40 // Returns the permission with the given |name|, and NULL if none
37 // exists. 41 // exists.
38 const APIPermissionInfo* GetByName(const std::string& name) const; 42 const APIPermissionInfo* GetByName(const std::string& name) const;
39 43
40 // Returns a set containing all valid api permission ids. 44 // Returns a set containing all valid api permission ids.
41 APIPermissionSet GetAll() const; 45 APIPermissionSet GetAll() const;
(...skipping 10 matching lines...) Expand all
52 size_t get_permission_count() const { return permission_count_; } 56 size_t get_permission_count() const { return permission_count_; }
53 57
54 private: 58 private:
55 friend struct base::DefaultLazyInstanceTraits<PermissionsInfo>; 59 friend struct base::DefaultLazyInstanceTraits<PermissionsInfo>;
56 60
57 PermissionsInfo(); 61 PermissionsInfo();
58 62
59 virtual ~PermissionsInfo(); 63 virtual ~PermissionsInfo();
60 64
61 // Registers an |alias| for a given permission |name|. 65 // Registers an |alias| for a given permission |name|.
62 void RegisterAlias(const char* name, const char* alias); 66 void RegisterAlias(const Alias& alias);
63 67
64 // Registers a permission with the specified attributes and flags. 68 // Registers a permission with the specified attributes and flags.
65 void RegisterPermission(std::unique_ptr<APIPermissionInfo> permission); 69 void RegisterPermission(std::unique_ptr<APIPermissionInfo> permission);
66 70
67 // Maps permission ids to permissions. Owns the permissions. 71 // Maps permission ids to permissions. Owns the permissions.
68 typedef std::map<APIPermission::ID, std::unique_ptr<APIPermissionInfo>> IDMap; 72 typedef std::map<APIPermission::ID, std::unique_ptr<APIPermissionInfo>> IDMap;
69 73
70 // Maps names and aliases to permissions. Doesn't own the permissions. 74 // Maps names and aliases to permissions. Doesn't own the permissions.
71 typedef std::map<std::string, APIPermissionInfo*> NameMap; 75 typedef std::map<std::string, APIPermissionInfo*> NameMap;
72 76
73 IDMap id_map_; 77 IDMap id_map_;
74 NameMap name_map_; 78 NameMap name_map_;
75 79
76 size_t permission_count_; 80 size_t permission_count_;
77 81
78 DISALLOW_COPY_AND_ASSIGN(PermissionsInfo); 82 DISALLOW_COPY_AND_ASSIGN(PermissionsInfo);
79 }; 83 };
80 84
81 } // namespace extensions 85 } // namespace extensions
82 86
83 #endif // EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_INFO_H_ 87 #endif // EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_INFO_H_
OLDNEW
« no previous file with comments | « extensions/common/permissions/extensions_api_permissions.cc ('k') | extensions/common/permissions/permissions_info.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698