diff options
| author | Ben Murdoch <benm@google.com> | 2010-04-01 15:01:26 +0100 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2010-04-01 15:50:39 +0100 |
| commit | 0e519b9227fdf50b333a2bd89f2914e437a21595 (patch) | |
| tree | 7d4264965a3712eca6c5d445df0493f4f40a5b93 | |
| parent | a622a48d6cc2bea33d2467de9d31feb1b03b03eb (diff) | |
| download | external_webkit-0e519b9227fdf50b333a2bd89f2914e437a21595.zip external_webkit-0e519b9227fdf50b333a2bd89f2914e437a21595.tar.gz external_webkit-0e519b9227fdf50b333a2bd89f2914e437a21595.tar.bz2 | |
Get the correct class name from the JVM when constructing arrays in the JNI bindings.
Also a change in packages/apps/Browser to update the unit tests for JNI bindings.
Fix for b/2540502
Change-Id: Ia86a1ac672bd6653427ac0a969b4d40c86141415
| -rw-r--r-- | WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp b/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp index 46f0b2b..a6c4149 100644 --- a/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp +++ b/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp @@ -44,7 +44,7 @@ jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* ja { JNIEnv* env = getJNIEnv(); jobject javaArray; - NPObject* object = NPVARIANT_TO_OBJECT(value); + NPObject* object = NPVARIANT_IS_OBJECT(value) ? NPVARIANT_TO_OBJECT(value) : 0; NPVariant npvLength; bool success = _NPN_GetProperty(0, object, _NPN_GetStringIdentifier("length"), &npvLength); if (!success) { @@ -57,9 +57,9 @@ jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* ja #else // Sending NULL as JSC does seems dangerous. (Imagine the java method that asks // for the length of the array it was passed). Here we send a 0 length array. - jclass objectArrayClass = env->FindClass("[Ljava/lang/Object;"); - javaArray = env->NewObjectArray((jsize)0, objectArrayClass, 0); - env->DeleteLocalRef(objectArrayClass); + jclass objectClass = env->FindClass("java/lang/Object"); + javaArray = env->NewObjectArray(0, objectClass, 0); + env->DeleteLocalRef(objectClass); #endif break; } @@ -68,8 +68,8 @@ jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* ja if (!strcmp(javaClassName, "[Ljava.lang.String;")) { // Match JSC behavior by only allowing Object arrays if they are Strings. - jclass stringArrayClass = env->FindClass("[Ljava/lang/String;"); - javaArray = env->NewObjectArray(length, stringArrayClass, 0); + jclass stringClass = env->FindClass("java/lang/String"); + javaArray = env->NewObjectArray(length, stringClass, 0); for (jsize i = 0; i < length; i++) { NPVariant npvValue; _NPN_GetProperty(0, object, _NPN_GetIntIdentifier(i), &npvValue); @@ -79,7 +79,7 @@ jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* ja } } - env->DeleteLocalRef(stringArrayClass); + env->DeleteLocalRef(stringClass); } else if (!strcmp(javaClassName, "[B")) { // array of bytes javaArray = env->NewByteArray(length); @@ -188,9 +188,9 @@ jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* ja #else // Sending NULL as JSC does seems dangerous. (Imagine the java method that asks // for the length of the array it was passed). Here we send a 0 length array. - jclass objectArrayClass = env->FindClass("[Ljava/lang/Object;"); - javaArray = env->NewObjectArray(0, objectArrayClass, 0); - env->DeleteLocalRef(objectArrayClass); + jclass objectClass = env->FindClass("java/lang/Object"); + javaArray = env->NewObjectArray(0, objectClass, 0); + env->DeleteLocalRef(objectClass); #endif } |
