Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index e42cc0270d1e26a81a35bf26541efb549e5d6abc..93ea6a4c028be4b3a9d540be5ab8c9ad8ce018a2 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -2778,6 +2778,9 @@ bool Value::IsNumber() const { |
} |
+bool Value::IsProxy() const { return Utils::OpenHandle(this)->IsJSProxy(); } |
+ |
+ |
#define VALUE_IS_SPECIFIC_TYPE(Type, Class) \ |
bool Value::Is##Type() const { \ |
i::Handle<i::Object> obj = Utils::OpenHandle(this); \ |
@@ -2883,6 +2886,12 @@ bool Value::IsSetIterator() const { |
} |
+bool Value::IsPromise() const { |
+ auto self = Utils::OpenHandle(this); |
+ return i::Object::IsPromise(self); |
+} |
+ |
+ |
MaybeLocal<String> Value::ToString(Local<Context> context) const { |
auto obj = Utils::OpenHandle(this); |
if (obj->IsString()) return ToApiHandle<String>(obj); |
@@ -3146,6 +3155,12 @@ void v8::Promise::Resolver::CheckCast(Value* that) { |
} |
+void v8::Proxy::CheckCast(Value* that) { |
+ Utils::ApiCheck(that->IsProxy(), "v8::Proxy::Cast()", |
+ "Could not convert to proxy"); |
+} |
+ |
+ |
void v8::ArrayBuffer::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
Utils::ApiCheck( |
@@ -6346,12 +6361,6 @@ Local<Array> Set::AsArray() const { |
} |
-bool Value::IsPromise() const { |
- auto self = Utils::OpenHandle(this); |
- return i::Object::IsPromise(self); |
-} |
- |
- |
MaybeLocal<Promise::Resolver> Promise::Resolver::New(Local<Context> context) { |
PREPARE_FOR_EXECUTION(context, "Promise::Resolver::New", Resolver); |
i::Handle<i::Object> result; |
@@ -6498,6 +6507,44 @@ bool Promise::HasHandler() { |
} |
+Local<Object> Proxy::GetTarget() { |
+ i::Handle<i::JSProxy> self = Utils::OpenHandle(this); |
+ i::Handle<i::JSReceiver> target(self->target()); |
+ return Utils::ToLocal(target); |
+} |
+ |
+ |
+Local<Value> Proxy::GetHandler() { |
+ i::Handle<i::JSProxy> self = Utils::OpenHandle(this); |
+ i::Handle<i::Object> handler(self->handler(), self->GetIsolate()); |
+ return Utils::ToLocal(handler); |
+} |
+ |
+ |
+bool Proxy::IsRevoked() { |
+ i::Handle<i::JSProxy> self = Utils::OpenHandle(this); |
+ return self->IsRevoked(); |
+} |
+ |
+ |
+void Proxy::Revoke() { |
+ i::Handle<i::JSProxy> self = Utils::OpenHandle(this); |
+ i::JSProxy::Revoke(self); |
+} |
+ |
+ |
+MaybeLocal<Proxy> Proxy::New(Local<Context> context, Local<Object> local_target, |
+ Local<Object> local_handler) { |
+ PREPARE_FOR_EXECUTION(context, "Proxy::New", Proxy); |
+ i::Handle<i::JSReceiver> target = Utils::OpenHandle(*local_target); |
+ i::Handle<i::JSReceiver> handler = Utils::OpenHandle(*local_handler); |
+ Local<Proxy> result; |
+ has_pending_exception = |
+ !ToLocal<Proxy>(i::JSProxy::New(isolate, target, handler), &result); |
+ RETURN_ON_FAILED_EXECUTION(Proxy); |
+ RETURN_ESCAPED(result); |
+} |
+ |
bool v8::ArrayBuffer::IsExternal() const { |
return Utils::OpenHandle(this)->is_external(); |
} |