static void onPropertyChangedForProxy(Isolate* isolate, Local<String> property, Local<Value> value, Local<Object> proxyObject) { Proxy* proxy = NativeObject::Unwrap<Proxy>(proxyObject); JNIEnv* env = JNIScope::getEnv(); if (!env) { LOG_JNIENV_GET_ERROR(TAG); return; } jstring javaProperty = TypeConverter::jsStringToJavaString(env, property); bool javaValueIsNew; jobject javaValue = TypeConverter::jsValueToJavaObject(isolate, env, value, &javaValueIsNew); jobject javaProxy = proxy->getJavaObject(); env->CallVoidMethod(javaProxy, JNIUtil::krollProxyOnPropertyChangedMethod, javaProperty, javaValue); if (!JavaObject::useGlobalRefs) { env->DeleteLocalRef(javaProxy); } env->DeleteLocalRef(javaProperty); if (javaValueIsNew) { env->DeleteLocalRef(javaValue); } // Store new property value on JS internal map. setPropertyOnProxy(isolate, property, value, proxyObject); }
void Proxy::setProperty(Local<Name> property, Local<Value> value, const PropertyCallbackInfo<void>& info) { Isolate* isolate = info.GetIsolate(); setPropertyOnProxy(isolate, property->ToString(isolate), value, info.This()); }
void Proxy::setProperty(Local<String> property, Local<Value> value, const AccessorInfo& info) { setPropertyOnProxy(property, value, info.This()); }