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 3 // found in the LICENSE file. 4 5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_PROVIDER_H_ 6 #define EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_PROVIDER_H_ 7 8 #include <vector> 9 10 namespace extensions { 11 12 class APIPermissionInfo; 13 14 // The PermissionsProvider creates APIPermissions instances. It is only 15 // needed at startup time. Typically, ExtensionsClient will register 16 // its PermissionsProviders with the global PermissionsInfo at startup. 17 class PermissionsProvider { 18 public: 19 // An alias for a given permission |name|. 20 struct AliasInfo { 21 const char* name; 22 const char* alias; 23 24 AliasInfo(const char* name, const char* alias) 25 : name(name), alias(alias) { 26 } 27 }; 28 // Returns all the known permissions. The caller, PermissionsInfo, 29 // takes ownership of the APIPermissionInfos. 30 virtual std::vector<APIPermissionInfo*> GetAllPermissions() const = 0; 31 32 // Returns all the known permission aliases. 33 virtual std::vector<AliasInfo> GetAllAliases() const = 0; 34 }; 35 36 } // namespace extensions 37 38 #endif // EXTENSIONS_COMMON_PERMISSIONS_PERMISSIONS_PROVIDER_H_ 39