summaryrefslogtreecommitdiffstats
path: root/V8Binding/jni/jni_npobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'V8Binding/jni/jni_npobject.cpp')
-rw-r--r--V8Binding/jni/jni_npobject.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/V8Binding/jni/jni_npobject.cpp b/V8Binding/jni/jni_npobject.cpp
index 3480ac5..8a49a19 100644
--- a/V8Binding/jni/jni_npobject.cpp
+++ b/V8Binding/jni/jni_npobject.cpp
@@ -93,7 +93,9 @@ bool JavaNPObject_HasMethod(NPObject* obj, NPIdentifier identifier) {
if (name == 0)
return false;
+ instance->begin();
bool result = (instance->getClass()->methodsNamed(name).size() > 0);
+ instance->end();
// TODO: use NPN_MemFree
free(name);
@@ -110,7 +112,9 @@ bool JavaNPObject_Invoke(NPObject* obj, NPIdentifier identifier,
if (name == 0)
return false;
+ instance->begin();
bool r = instance->invokeMethod(name, args, argCount, result);
+ instance->end();
// TODO: use NPN_MemFree
free(name);
@@ -125,7 +129,9 @@ bool JavaNPObject_HasProperty(NPObject* obj, NPIdentifier identifier) {
NPUTF8* name = _NPN_UTF8FromIdentifier(identifier);
if (name == 0)
return false;
+ instance->begin();
bool result = instance->getClass()->fieldNamed(name) != 0;
+ instance->end();
free(name);
return result;
}
@@ -139,19 +145,19 @@ bool JavaNPObject_GetProperty(NPObject* obj, NPIdentifier identifier, NPVariant*
if (name == 0)
return false;
+ instance->begin();
JavaField* field = instance->getClass()->fieldNamed(name);
+ instance->end();
free(name); // TODO: use NPN_MemFree
if (field == 0) {
return false;
}
- jobject local_ref = instance->getLocalRef();
- jvalue value = getJNIField(local_ref,
+ jvalue value = getJNIField(instance->javaInstance(),
field->getJNIType(),
field->name(),
field->type());
- getJNIEnv()->DeleteLocalRef(local_ref);
convertJValueToNPVariant(value, field->getJNIType(), field->type(), result);