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 14 namespace v8 { 15 16 class Context; 17 18 /** 19 * An instance of the built-in Proxy constructor (ECMA-262, 6th Edition, 20 * 26.2.1). 21 */ 22 class 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 Cast(Value * value)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