#ifndef EXTENSIONS_COMMON_EXTENSIONS_API_PROVIDER_H_
#define EXTENSIONS_COMMON_EXTENSIONS_API_PROVIDER_H_
#include <string>
#include <string_view>
namespace extensions {
class FeatureProvider;
class JSONFeatureProviderSource;
class PermissionsInfo;
class ExtensionsAPIProvider {
public:
ExtensionsAPIProvider() = default;
ExtensionsAPIProvider(const ExtensionsAPIProvider&) = delete;
ExtensionsAPIProvider& operator=(const ExtensionsAPIProvider&) = delete;
virtual ~ExtensionsAPIProvider() = default;
virtual void AddAPIFeatures(FeatureProvider* provider) = 0;
virtual void AddManifestFeatures(FeatureProvider* provider) = 0;
virtual void AddPermissionFeatures(FeatureProvider* provider) = 0;
virtual void AddBehaviorFeatures(FeatureProvider* provider) = 0;
virtual void AddAPIJSONSources(JSONFeatureProviderSource* json_source) = 0;
virtual bool IsAPISchemaGenerated(const std::string& name) = 0;
virtual std::string_view GetAPISchema(const std::string& name) = 0;
virtual void RegisterPermissions(PermissionsInfo* permissions_info) = 0;
virtual void RegisterManifestHandlers() = 0;
};
}
#endif