#ifndef EXTENSIONS_RENDERER_BINDINGS_BINDING_ACCESS_CHECKER_H_
#define EXTENSIONS_RENDERER_BINDINGS_BINDING_ACCESS_CHECKER_H_
#include <string>
#include "base/functional/callback.h"
#include "v8/include/v8.h"
namespace extensions {
class BindingAccessChecker {
public:
using APIAvailabilityCallback =
base::RepeatingCallback<bool(v8::Local<v8::Context>,
const std::string& name)>;
using PromiseAvailabilityCallback =
base::RepeatingCallback<bool(v8::Local<v8::Context>)>;
BindingAccessChecker(APIAvailabilityCallback api_available,
PromiseAvailabilityCallback promises_available);
BindingAccessChecker(const BindingAccessChecker&) = delete;
BindingAccessChecker& operator=(const BindingAccessChecker&) = delete;
~BindingAccessChecker();
bool HasAccess(v8::Local<v8::Context> context,
const std::string& full_name) const;
bool HasAccessOrThrowError(v8::Local<v8::Context> context,
const std::string& full_name) const;
bool HasPromiseAccess(v8::Local<v8::Context> context) const;
private:
APIAvailabilityCallback api_available_;
PromiseAvailabilityCallback promises_available_;
};
}
#endif