#ifndef EXTENSIONS_COMMON_MANIFEST_HANDLERS_PERMISSIONS_PARSER_H_
#define EXTENSIONS_COMMON_MANIFEST_HANDLERS_PERMISSIONS_PARSER_H_
#include <memory>
#include <string>
#include "extensions/common/mojom/api_permission_id.mojom-shared.h"
#include "extensions/common/permissions/api_permission.h"
#include "extensions/common/permissions/permission_set.h"
namespace extensions {
class Extension;
class URLPatternSet;
class PermissionsParser {
public:
PermissionsParser();
~PermissionsParser();
bool Parse(Extension* extension, std::u16string* error);
void Finalize(Extension* extension);
static void AddAPIPermission(Extension* extension,
mojom::APIPermissionID permission);
static void AddAPIPermission(Extension* extension, APIPermission* permission);
static bool HasAPIPermission(const Extension* extension,
mojom::APIPermissionID permission);
static void SetScriptableHosts(Extension* extension,
const URLPatternSet& scriptable_hosts);
static const PermissionSet& GetRequiredPermissions(
const Extension* extension);
static const PermissionSet& GetOptionalPermissions(
const Extension* extension);
private:
struct InitialPermissions;
std::unique_ptr<InitialPermissions> initial_required_permissions_;
std::unique_ptr<InitialPermissions> initial_optional_permissions_;
};
}
#endif