From a01a68253f642c4d9219f0aca9ccc6c5da9e46b0 Mon Sep 17 00:00:00 2001 From: Steve Block Date: Wed, 20 Jan 2010 15:58:24 +0000 Subject: Rename V8 jni_utility_private to JNIUtilityPrivate and fixes style This is the V8 equivalent of http://trac.webkit.org/changeset/51756 It is being upstreamed to webkit.org in https://bugs.webkit.org/show_bug.cgi?id=33901 Change-Id: I336687e546748a7823f5e2d18f1ac1112a30a60c --- V8Binding/jni/jni_instance.h | 2 +- WebCore/Android.v8bindings.mk | 4 +- WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp | 256 +++++++++++++++++++++++++ WebCore/bridge/jni/v8/JNIUtilityPrivate.h | 43 +++++ WebCore/bridge/jni/v8/jni_utility_private.cpp | 258 -------------------------- WebCore/bridge/jni/v8/jni_utility_private.h | 43 ----- 6 files changed, 302 insertions(+), 304 deletions(-) create mode 100644 WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp create mode 100644 WebCore/bridge/jni/v8/JNIUtilityPrivate.h delete mode 100644 WebCore/bridge/jni/v8/jni_utility_private.cpp delete mode 100644 WebCore/bridge/jni/v8/jni_utility_private.h diff --git a/V8Binding/jni/jni_instance.h b/V8Binding/jni/jni_instance.h index 28a4607..f6c639d 100644 --- a/V8Binding/jni/jni_instance.h +++ b/V8Binding/jni/jni_instance.h @@ -27,7 +27,7 @@ #ifndef _JNI_INSTANCE_H_ #define _JNI_INSTANCE_H_ -#include "jni_utility_private.h" +#include "JNIUtilityPrivate.h" #include #include diff --git a/WebCore/Android.v8bindings.mk b/WebCore/Android.v8bindings.mk index 88b28c9..b9594a4 100644 --- a/WebCore/Android.v8bindings.mk +++ b/WebCore/Android.v8bindings.mk @@ -172,5 +172,5 @@ LOCAL_SRC_FILES += \ LOCAL_SRC_FILES += \ bridge/jni/JNIUtility.cpp \ - bridge/jni/v8/JavaClassV8.cpp \ - bridge/jni/v8/jni_utility_private.cpp + bridge/jni/v8/JNIUtilityPrivate.cpp \ + bridge/jni/v8/JavaClassV8.cpp diff --git a/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp b/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp new file mode 100644 index 0000000..1d2a029 --- /dev/null +++ b/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp @@ -0,0 +1,256 @@ +/* + * Copyright 2009, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "JNIUtilityPrivate.h" + +#include "jni_npobject.h" +#include "jni_runtime.h" + +namespace JSC { + +namespace Bindings { + +jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* javaClassName) +{ + jvalue result; + NPVariantType type = value.type; + + switch (jniType) { + case array_type: + case object_type: + { + result.l = static_cast(0); + + // First see if we have a Java instance. + if (type == NPVariantType_Object) { + NPObject* objectImp = NPVARIANT_TO_OBJECT(value); + if (JavaInstance* instance = ExtractJavaInstance(objectImp)) + result.l = instance->javaInstance(); + } + + // Now convert value to a string if the target type is a java.lang.string, and we're not + // converting from a Null. + if (!result.l && !strcmp(javaClassName, "java.lang.String")) { +#ifdef CONVERT_NULL_TO_EMPTY_STRING + if (type == NPVariantType_Null) { + JNIEnv* env = getJNIEnv(); + jchar buf[2]; + jobject javaString = env->functions->NewString(env, buf, 0); + result.l = javaString; + } else +#else + if (type == NPVariantType_String) +#endif + { + NPString src = NPVARIANT_TO_STRING(value); + JNIEnv* env = getJNIEnv(); + jobject javaString = env->NewStringUTF(src.UTF8Characters); + result.l = javaString; + } + } else if (!result.l) + bzero(&result, sizeof(jvalue)); // Handle it the same as a void case + } + break; + + case boolean_type: + { + if (type == NPVariantType_Bool) + result.z = NPVARIANT_TO_BOOLEAN(value); + else + bzero(&result, sizeof(jvalue)); // as void case + } + break; + + case byte_type: + { + if (type == NPVariantType_Int32) + result.b = static_cast(NPVARIANT_TO_INT32(value)); + else + bzero(&result, sizeof(jvalue)); + } + break; + + case char_type: + { + if (type == NPVariantType_Int32) + result.c = static_cast(NPVARIANT_TO_INT32(value)); + else + bzero(&result, sizeof(jvalue)); + } + break; + + case short_type: + { + if (type == NPVariantType_Int32) + result.s = static_cast(NPVARIANT_TO_INT32(value)); + else + bzero(&result, sizeof(jvalue)); + } + break; + + case int_type: + { + if (type == NPVariantType_Int32) + result.i = static_cast(NPVARIANT_TO_INT32(value)); + else + bzero(&result, sizeof(jvalue)); + } + break; + + case long_type: + { + if (type == NPVariantType_Int32) + result.j = static_cast(NPVARIANT_TO_INT32(value)); + else if (type == NPVariantType_Double) + result.j = static_cast(NPVARIANT_TO_DOUBLE(value)); + else + bzero(&result, sizeof(jvalue)); + } + break; + + case float_type: + { + if (type == NPVariantType_Int32) + result.j = static_cast(NPVARIANT_TO_INT32(value)); + else if (type == NPVariantType_Double) + result.j = static_cast(NPVARIANT_TO_DOUBLE(value)); + else + bzero(&result, sizeof(jvalue)); + } + break; + + case double_type: + { + if (type == NPVariantType_Int32) + result.j = static_cast(NPVARIANT_TO_INT32(value)); + else if (type == NPVariantType_Double) + result.j = static_cast(NPVARIANT_TO_DOUBLE(value)); + else + bzero(&result, sizeof(jvalue)); + } + break; + + break; + + case invalid_type: + default: + case void_type: + { + bzero(&result, sizeof(jvalue)); + } + break; + } + return result; +} + + +void convertJValueToNPVariant(jvalue value, JNIType jniType, const char* javaTypeName, NPVariant* result) +{ + switch (jniType) { + case void_type: + { + VOID_TO_NPVARIANT(*result); + } + break; + + case object_type: + { + if (value.l) { + if (!strcmp(javaTypeName, "java.lang.String")) { + const char* v = getCharactersFromJString(static_cast(value.l)); + // s is freed in NPN_ReleaseVariantValue (see npruntime.cpp) + const char* s = strdup(v); + releaseCharactersForJString(static_cast(value.l), v); + STRINGZ_TO_NPVARIANT(s, *result); + } else + OBJECT_TO_NPVARIANT(JavaInstanceToNPObject(new JavaInstance(value.l)), *result); + } + else + VOID_TO_NPVARIANT(*result); + } + break; + + case boolean_type: + { + BOOLEAN_TO_NPVARIANT(value.z, *result); + } + break; + + case byte_type: + { + INT32_TO_NPVARIANT(value.b, *result); + } + break; + + case char_type: + { + INT32_TO_NPVARIANT(value.c, *result); + } + break; + + case short_type: + { + INT32_TO_NPVARIANT(value.s, *result); + } + break; + + case int_type: + { + INT32_TO_NPVARIANT(value.i, *result); + } + break; + + // TODO: Check if cast to double is needed. + case long_type: + { + DOUBLE_TO_NPVARIANT(value.j, *result); + } + break; + + case float_type: + { + DOUBLE_TO_NPVARIANT(value.f, *result); + } + break; + + case double_type: + { + DOUBLE_TO_NPVARIANT(value.d, *result); + } + break; + + case invalid_type: + default: + { + VOID_TO_NPVARIANT(*result); + } + break; + } +} + +} // end of namespace Bindings + +} // end of namespace JSC diff --git a/WebCore/bridge/jni/v8/JNIUtilityPrivate.h b/WebCore/bridge/jni/v8/JNIUtilityPrivate.h new file mode 100644 index 0000000..f20cfb2 --- /dev/null +++ b/WebCore/bridge/jni/v8/JNIUtilityPrivate.h @@ -0,0 +1,43 @@ +/* + * Copyright 2009, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef JNIUtilityPrivate_h +#define JNIUtilityPrivate_h + +#include "JNIUtility.h" +#include "npruntime.h" + +namespace JSC { + +namespace Bindings { + +jvalue convertNPVariantToJValue(NPVariant, JNIType, const char* javaClassName); +void convertJValueToNPVariant(jvalue, JNIType, const char* javaClassName, NPVariant*); + +} // namespace Bindings + +} // namespace JSC + +#endif // JNIUtilityPrivate_h diff --git a/WebCore/bridge/jni/v8/jni_utility_private.cpp b/WebCore/bridge/jni/v8/jni_utility_private.cpp deleted file mode 100644 index 2f89047..0000000 --- a/WebCore/bridge/jni/v8/jni_utility_private.cpp +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright 2009, The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" -#include "jni_utility_private.h" - -#include "jni_runtime.h" -#include "jni_npobject.h" - -namespace JSC { - -namespace Bindings { - -jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* javaClassName) -{ - jvalue result; - NPVariantType type = value.type; - - switch (jniType) { - case array_type: - case object_type: - { - result.l = (jobject)0; - - // First see if we have a Java instance. - if (type == NPVariantType_Object) { - NPObject* objectImp = NPVARIANT_TO_OBJECT(value); - if (JavaInstance* instance = ExtractJavaInstance(objectImp)) - result.l = instance->javaInstance(); - } - - // Now convert value to a string if the target type is a java.lang.string, and we're not - // converting from a Null. - if (result.l == 0 && strcmp(javaClassName, "java.lang.String") == 0) { -#ifdef CONVERT_NULL_TO_EMPTY_STRING - if (type == NPVariantType_Null) { - JNIEnv *env = getJNIEnv(); - jchar buf[2]; - jobject javaString = env->functions->NewString (env, buf, 0); - result.l = javaString; - } else -#else - if (type == NPVariantType_String) -#endif - { - NPString src = NPVARIANT_TO_STRING(value); - JNIEnv *env = getJNIEnv(); - jobject javaString = env->NewStringUTF(src.UTF8Characters); - result.l = javaString; - } - } else if (result.l == 0) - bzero (&result, sizeof(jvalue)); // Handle it the same as a void case - } - break; - - case boolean_type: - { - if (type == NPVariantType_Bool) - result.z = NPVARIANT_TO_BOOLEAN(value); - else - bzero(&result, sizeof(jvalue)); // as void case - } - break; - - case byte_type: - { - if (type == NPVariantType_Int32) - result.b = (char)NPVARIANT_TO_INT32(value); - else - bzero(&result, sizeof(jvalue)); - } - break; - - case char_type: - { - if (type == NPVariantType_Int32) - result.c = (char)NPVARIANT_TO_INT32(value); - else - bzero(&result, sizeof(jvalue)); - } - break; - - case short_type: - { - if (type == NPVariantType_Int32) - result.s = (jshort)NPVARIANT_TO_INT32(value); - else - bzero(&result, sizeof(jvalue)); - } - break; - - case int_type: - { - if (type == NPVariantType_Int32) - result.i = (jint)NPVARIANT_TO_INT32(value); - else - bzero(&result, sizeof(jvalue)); - } - break; - - case long_type: - { - if (type == NPVariantType_Int32) - result.j = (jlong)NPVARIANT_TO_INT32(value); - else if (type == NPVariantType_Double) - result.j = (jlong)NPVARIANT_TO_DOUBLE(value); - else - bzero(&result, sizeof(jvalue)); - } - break; - - case float_type: - { - if (type == NPVariantType_Int32) - result.j = (jfloat)NPVARIANT_TO_INT32(value); - else if (type == NPVariantType_Double) - result.j = (jfloat)NPVARIANT_TO_DOUBLE(value); - else - bzero(&result, sizeof(jvalue)); - } - break; - - case double_type: - { - if (type == NPVariantType_Int32) - result.j = (jdouble)NPVARIANT_TO_INT32(value); - else if (type == NPVariantType_Double) - result.j = (jdouble)NPVARIANT_TO_DOUBLE(value); - else - bzero(&result, sizeof(jvalue)); - } - break; - - break; - - case invalid_type: - default: - case void_type: - { - bzero(&result, sizeof(jvalue)); - } - break; - } - return result; -} - - -void convertJValueToNPVariant(jvalue value, JNIType jniType, const char* javaTypeName, NPVariant* result) -{ - switch (jniType) { - case void_type: - { - VOID_TO_NPVARIANT(*result); - } - break; - - case object_type: - { - if (value.l != 0) { - if (strcmp(javaTypeName, "java.lang.String") == 0) { - const char* v = getCharactersFromJString((jstring)value.l); - // s is freed in NPN_ReleaseVariantValue (see npruntime.cpp) - const char* s = strdup(v); - releaseCharactersForJString((jstring)value.l, v); - STRINGZ_TO_NPVARIANT(s, *result); - } else { - OBJECT_TO_NPVARIANT(JavaInstanceToNPObject(new JavaInstance(value.l)), *result); - } - } - else { - VOID_TO_NPVARIANT(*result); - } - } - break; - - case boolean_type: - { - BOOLEAN_TO_NPVARIANT(value.z, *result); - } - break; - - case byte_type: - { - INT32_TO_NPVARIANT(value.b, *result); - } - break; - - case char_type: - { - INT32_TO_NPVARIANT(value.c, *result); - } - break; - - case short_type: - { - INT32_TO_NPVARIANT(value.s, *result); - } - break; - - case int_type: - { - INT32_TO_NPVARIANT(value.i, *result); - } - break; - - // TODO: Check if cast to double is needed. - case long_type: - { - DOUBLE_TO_NPVARIANT(value.j, *result); - } - break; - - case float_type: - { - DOUBLE_TO_NPVARIANT(value.f, *result); - } - break; - - case double_type: - { - DOUBLE_TO_NPVARIANT(value.d, *result); - } - break; - - case invalid_type: - default: - { - VOID_TO_NPVARIANT(*result); - } - break; - } -} - -} // end of namespace Bindings - -} // end of namespace JSC diff --git a/WebCore/bridge/jni/v8/jni_utility_private.h b/WebCore/bridge/jni/v8/jni_utility_private.h deleted file mode 100644 index 344e63c..0000000 --- a/WebCore/bridge/jni/v8/jni_utility_private.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2009, The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _JNI_UTILITY_PRIVATE_H_ -#define _JNI_UTILITY_PRIVATE_H_ - -#include "JNIUtility.h" -#include "npruntime.h" - -namespace JSC { - -namespace Bindings { - -jvalue convertNPVariantToJValue(NPVariant, JNIType, const char* javaClassName); -void convertJValueToNPVariant(jvalue, JNIType, const char* javaClassName, NPVariant*); - -} // namespace Bindings - -} // namespace JSC - -#endif // _JNI_UTILITY_H_ -- cgit v1.1