Changeset 80467 in webkit
- Timestamp:
- Mar 7, 2011 7:15:38 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r80463 r80467 1 2011-03-04 Steve Block <steveblock@google.com> 2 3 Reviewed by Jeremy Orlow. 4 5 JavaParameter should be removed 6 https://bugs.webkit.org/show_bug.cgi?id=55772 7 8 No new tests, refactoring only. 9 10 * bridge/jni/JNIBridge.cpp: 11 (JavaMethod::JavaMethod): 12 (JavaMethod::~JavaMethod): 13 (JavaMethod::signature): 14 * bridge/jni/JNIBridge.h: 15 (JSC::Bindings::JavaMethod::parameterAt): 16 (JSC::Bindings::JavaMethod::numParameters): 17 * bridge/jni/JNIUtility.h: 18 * bridge/jni/jsc/JavaInstanceJSC.cpp: 19 (JavaInstance::invokeMethod): 20 * bridge/jni/v8/JNIUtilityPrivate.cpp: 21 (JSC::Bindings::convertNPVariantToJValue): 22 * bridge/jni/v8/JNIUtilityPrivate.h: 23 * bridge/jni/v8/JavaInstanceV8.cpp: 24 (JavaInstance::invokeMethod): 25 1 26 2011-03-07 Antti Koivisto <antti@apple.com> 2 27 -
trunk/Source/WebCore/bridge/jni/JNIBridge.cpp
r79904 r80467 37 37 using namespace JSC::Bindings; 38 38 39 JavaParameter::JavaParameter(JNIEnv* env, jstring type)40 {41 m_type = JavaString(env, type);42 m_JNIType = JNITypeFromClassName(m_type.utf8());43 }44 45 39 JavaMethod::JavaMethod(JNIEnv* env, jobject aMethod) 46 40 { … … 66 60 // Get parameters 67 61 if (jarray jparameters = static_cast<jarray>(callJNIMethod<jobject>(aMethod, "getParameterTypes", "()[Ljava/lang/Class;"))) { 68 m_numParameters = env->GetArrayLength(jparameters); 69 m_parameters = new JavaParameter[m_numParameters]; 62 unsigned int numParams = env->GetArrayLength(jparameters); 70 63 71 for ( int i = 0; i < m_numParameters; i++) {64 for (unsigned int i = 0; i < numParams; i++) { 72 65 jobject aParameter = env->GetObjectArrayElement(static_cast<jobjectArray>(jparameters), i); 73 66 jstring parameterName = static_cast<jstring>(callJNIMethod<jobject>(aParameter, "getName", "()Ljava/lang/String;")); 74 67 if (!parameterName) 75 68 parameterName = env->NewStringUTF("<Unknown>"); 76 m_parameters [i] = JavaParameter(env, parameterName);69 m_parameters.append(JavaString(env, parameterName).impl()); 77 70 env->DeleteLocalRef(aParameter); 78 71 env->DeleteLocalRef(parameterName); 79 72 } 80 73 env->DeleteLocalRef(jparameters); 81 } else {82 m_numParameters = 0;83 m_parameters = 0;84 74 } 85 75 … … 98 88 if (m_signature) 99 89 fastFree(m_signature); 100 delete[] m_parameters; 101 }; 90 } 102 91 103 92 // JNI method signatures use '/' between components of a class name, but … … 132 121 StringBuilder signatureBuilder; 133 122 signatureBuilder.append('('); 134 for ( int i = 0; i < m_numParameters; i++) {135 JavaParameter* aParameter = parameterAt(i);136 JNIType type = aParameter->getJNIType();123 for (unsigned int i = 0; i < m_parameters.size(); i++) { 124 CString javaClassName = parameterAt(i).utf8(); 125 JNIType type = JNITypeFromClassName(javaClassName.data()); 137 126 if (type == array_type) 138 appendClassName(signatureBuilder, aParameter->type());127 appendClassName(signatureBuilder, javaClassName.data()); 139 128 else { 140 129 signatureBuilder.append(signatureFromPrimitiveType(type)); 141 130 if (type == object_type) { 142 appendClassName(signatureBuilder, aParameter->type());131 appendClassName(signatureBuilder, javaClassName.data()); 143 132 signatureBuilder.append(';'); 144 133 } -
trunk/Source/WebCore/bridge/jni/JNIBridge.h
r80222 r80467 70 70 }; 71 71 72 class JavaParameter {73 public:74 JavaParameter() : m_JNIType(invalid_type) { }75 JavaParameter(JNIEnv*, jstring type);76 virtual ~JavaParameter() { }77 78 RuntimeType type() const { return m_type.utf8(); }79 JNIType getJNIType() const { return m_JNIType; }80 81 private:82 JavaString m_type;83 JNIType m_JNIType;84 };85 86 72 class JavaMethod : public Method { 87 73 public: … … 91 77 const JavaString& name() const { return m_name; } 92 78 RuntimeType returnType() const { return m_returnType.utf8(); } 93 JavaParameter* parameterAt(int i) const { return &m_parameters[i]; }94 int numParameters() const { return m_ numParameters; }79 const WTF::String& parameterAt(int i) const { return m_parameters[i]; } 80 int numParameters() const { return m_parameters.size(); } 95 81 96 82 const char* signature() const; … … 102 88 103 89 private: 104 JavaParameter* m_parameters; 105 int m_numParameters; 90 Vector<WTF::String> m_parameters; 106 91 JavaString m_name; 107 92 mutable char* m_signature; -
trunk/Source/WebCore/bridge/jni/JNIUtility.h
r79947 r80467 40 40 // through to the JVM. Newly added items need to be made compatible 41 41 // in that file. 42 // 43 // TODO: Strictly, these are not JNI types but simply Java types. The type 44 // conversion logic used here needs improving and this enum will likely be 45 // changed at that time. See https://bugs.webkit.org/show_bug.cgi?id=38745 42 46 typedef enum { 43 47 invalid_type = 0, … … 59 63 namespace Bindings { 60 64 61 class JavaParameter;62 63 65 const char* getCharactersFromJString(jstring); 64 66 void releaseCharactersForJString(jstring, const char*); -
trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp
r80367 r80467 176 176 177 177 for (i = 0; i < count; i++) { 178 JavaParameter* aParameter = jMethod->parameterAt(i);179 jArgs[i] = convertValueToJValue(exec, m_rootObject.get(), exec->argument(i), aParameter->getJNIType(), aParameter->type());178 CString javaClassName = jMethod->parameterAt(i).utf8(); 179 jArgs[i] = convertValueToJValue(exec, m_rootObject.get(), exec->argument(i), JNITypeFromClassName(javaClassName.data()), javaClassName.data()); 180 180 LOG(LiveConnect, "JavaInstance::invokeMethod arg[%d] = %s", i, exec->argument(i).toString(exec).ascii().data()); 181 181 } -
trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp
r79998 r80467 31 31 #include "JavaInstanceV8.h" 32 32 #include "JavaNPObjectV8.h" 33 #include <wtf/text/CString.h> 33 34 34 35 namespace JSC { … … 36 37 namespace Bindings { 37 38 38 jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* javaClassName)39 jvalue convertNPVariantToJValue(NPVariant value, const WTF::String& javaType) 39 40 { 41 CString javaClassName = javaType.utf8(); 42 JNIType jniType = JNITypeFromClassName(javaClassName.data()); 40 43 jvalue result; 41 44 NPVariantType type = value.type; … … 56 59 // Now convert value to a string if the target type is a java.lang.string, and we're not 57 60 // converting from a Null. 58 if (!result.l && !strcmp(javaClassName , "java.lang.String")) {61 if (!result.l && !strcmp(javaClassName.data(), "java.lang.String")) { 59 62 #ifdef CONVERT_NULL_TO_EMPTY_STRING 60 63 if (type == NPVariantType_Null) { -
trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.h
r79998 r80467 31 31 #include "JNIUtility.h" 32 32 #include "npruntime.h" 33 #include <wtf/text/WTFString.h> 33 34 34 35 namespace JSC { … … 36 37 namespace Bindings { 37 38 38 jvalue convertNPVariantToJValue(NPVariant, JNIType, const char* javaClassName);39 jvalue convertNPVariantToJValue(NPVariant, const WTF::String& javaType); 39 40 void convertJValueToNPVariant(jvalue, JNIType, const char* javaClassName, NPVariant*); 40 41 -
trunk/Source/WebCore/bridge/jni/v8/JavaInstanceV8.cpp
r80103 r80467 98 98 jArgs = static_cast<jvalue*>(malloc(count * sizeof(jvalue))); 99 99 100 for (int i = 0; i < count; i++) { 101 JavaParameter* aParameter = jMethod->parameterAt(i); 102 jArgs[i] = convertNPVariantToJValue(args[i], aParameter->getJNIType(), aParameter->type()); 103 } 100 for (int i = 0; i < count; i++) 101 jArgs[i] = convertNPVariantToJValue(args[i], jMethod->parameterAt(i)); 104 102 105 103 jvalue result;
Note: See TracChangeset
for help on using the changeset viewer.