1 2// Copyright 2021 the V8 project authors. All rights reserved. 3// Use of this source code is governed by a BSD-style license that can be 4// found in the LICENSE file. 5 6#ifndef INCLUDE_V8_PROXY_H_ 7#define INCLUDE_V8_PROXY_H_ 8 9#include "v8-context.h" // NOLINT(build/include_directory) 10#include "v8-local-handle.h" // NOLINT(build/include_directory) 11#include "v8-object.h" // NOLINT(build/include_directory) 12#include "v8config.h" // NOLINT(build/include_directory) 13 14namespace v8 { 15 16class Context; 17 18/** 19 * An instance of the built-in Proxy constructor (ECMA-262, 6th Edition, 20 * 26.2.1). 21 */ 22class V8_EXPORT Proxy : public Object { 23 public: 24 Local<Value> GetTarget(); 25 Local<Value> GetHandler(); 26 bool IsRevoked() const; 27 void Revoke(); 28 29 /** 30 * Creates a new Proxy for the target object. 31 */ 32 static MaybeLocal<Proxy> New(Local<Context> context, 33 Local<Object> local_target, 34 Local<Object> local_handler); 35 36 V8_INLINE static Proxy* Cast(Value* value) { 37#ifdef V8_ENABLE_CHECKS 38 CheckCast(value); 39#endif 40 return static_cast<Proxy*>(value); 41 } 42 43 private: 44 Proxy(); 45 static void CheckCast(Value* obj); 46}; 47 48} // namespace v8 49 50#endif // INCLUDE_V8_PROXY_H_ 51