예제 #1
0
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);
}
예제 #2
0
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());
}
예제 #3
0
void Proxy::setProperty(Local<String> property, Local<Value> value, const AccessorInfo& info)
{
	setPropertyOnProxy(property, value, info.This());
}