Changeset 80467 in webkit


Ignore:
Timestamp:
Mar 7, 2011 7:15:38 AM (13 years ago)
Author:
steveblock@google.com
Message:

2011-03-04 Steve Block <steveblock@google.com>

Reviewed by Jeremy Orlow.

JavaParameter should be removed
https://bugs.webkit.org/show_bug.cgi?id=55772

No new tests, refactoring only.

  • bridge/jni/JNIBridge.cpp: (JavaMethod::JavaMethod): (JavaMethod::~JavaMethod): (JavaMethod::signature):
  • bridge/jni/JNIBridge.h: (JSC::Bindings::JavaMethod::parameterAt): (JSC::Bindings::JavaMethod::numParameters):
  • bridge/jni/JNIUtility.h:
  • bridge/jni/jsc/JavaInstanceJSC.cpp: (JavaInstance::invokeMethod):
  • bridge/jni/v8/JNIUtilityPrivate.cpp: (JSC::Bindings::convertNPVariantToJValue):
  • bridge/jni/v8/JNIUtilityPrivate.h:
  • bridge/jni/v8/JavaInstanceV8.cpp: (JavaInstance::invokeMethod):
Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r80463 r80467  
     12011-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
    1262011-03-07  Antti Koivisto  <antti@apple.com>
    227
  • trunk/Source/WebCore/bridge/jni/JNIBridge.cpp

    r79904 r80467  
    3737using namespace JSC::Bindings;
    3838
    39 JavaParameter::JavaParameter(JNIEnv* env, jstring type)
    40 {
    41     m_type = JavaString(env, type);
    42     m_JNIType = JNITypeFromClassName(m_type.utf8());
    43 }
    44 
    4539JavaMethod::JavaMethod(JNIEnv* env, jobject aMethod)
    4640{
     
    6660    // Get parameters
    6761    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);
    7063
    71         for (int i = 0; i < m_numParameters; i++) {
     64        for (unsigned int i = 0; i < numParams; i++) {
    7265            jobject aParameter = env->GetObjectArrayElement(static_cast<jobjectArray>(jparameters), i);
    7366            jstring parameterName = static_cast<jstring>(callJNIMethod<jobject>(aParameter, "getName", "()Ljava/lang/String;"));
    7467            if (!parameterName)
    7568                parameterName = env->NewStringUTF("<Unknown>");
    76             m_parameters[i] = JavaParameter(env, parameterName);
     69            m_parameters.append(JavaString(env, parameterName).impl());
    7770            env->DeleteLocalRef(aParameter);
    7871            env->DeleteLocalRef(parameterName);
    7972        }
    8073        env->DeleteLocalRef(jparameters);
    81     } else {
    82         m_numParameters = 0;
    83         m_parameters = 0;
    8474    }
    8575
     
    9888    if (m_signature)
    9989        fastFree(m_signature);
    100     delete[] m_parameters;
    101 };
     90}
    10291
    10392// JNI method signatures use '/' between components of a class name, but
     
    132121        StringBuilder signatureBuilder;
    133122        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());
    137126            if (type == array_type)
    138                 appendClassName(signatureBuilder, aParameter->type());
     127                appendClassName(signatureBuilder, javaClassName.data());
    139128            else {
    140129                signatureBuilder.append(signatureFromPrimitiveType(type));
    141130                if (type == object_type) {
    142                     appendClassName(signatureBuilder, aParameter->type());
     131                    appendClassName(signatureBuilder, javaClassName.data());
    143132                    signatureBuilder.append(';');
    144133                }
  • trunk/Source/WebCore/bridge/jni/JNIBridge.h

    r80222 r80467  
    7070};
    7171
    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 
    8672class JavaMethod : public Method {
    8773public:
     
    9177    const JavaString& name() const { return m_name; }
    9278    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(); }
    9581
    9682    const char* signature() const;
     
    10288
    10389private:
    104     JavaParameter* m_parameters;
    105     int m_numParameters;
     90    Vector<WTF::String> m_parameters;
    10691    JavaString m_name;
    10792    mutable char* m_signature;
  • trunk/Source/WebCore/bridge/jni/JNIUtility.h

    r79947 r80467  
    4040// through to the JVM. Newly added items need to be made compatible
    4141// 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
    4246typedef enum {
    4347    invalid_type = 0,
     
    5963namespace Bindings {
    6064
    61 class JavaParameter;
    62 
    6365const char* getCharactersFromJString(jstring);
    6466void releaseCharactersForJString(jstring, const char*);
  • trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp

    r80367 r80467  
    176176
    177177    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());
    180180        LOG(LiveConnect, "JavaInstance::invokeMethod arg[%d] = %s", i, exec->argument(i).toString(exec).ascii().data());
    181181    }
  • trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp

    r79998 r80467  
    3131#include "JavaInstanceV8.h"
    3232#include "JavaNPObjectV8.h"
     33#include <wtf/text/CString.h>
    3334
    3435namespace JSC {
     
    3637namespace Bindings {
    3738
    38 jvalue convertNPVariantToJValue(NPVariant value, JNIType jniType, const char* javaClassName)
     39jvalue convertNPVariantToJValue(NPVariant value, const WTF::String& javaType)
    3940{
     41    CString javaClassName = javaType.utf8();
     42    JNIType jniType = JNITypeFromClassName(javaClassName.data());
    4043    jvalue result;
    4144    NPVariantType type = value.type;
     
    5659            // Now convert value to a string if the target type is a java.lang.string, and we're not
    5760            // converting from a Null.
    58             if (!result.l && !strcmp(javaClassName, "java.lang.String")) {
     61            if (!result.l && !strcmp(javaClassName.data(), "java.lang.String")) {
    5962#ifdef CONVERT_NULL_TO_EMPTY_STRING
    6063                if (type == NPVariantType_Null) {
  • trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.h

    r79998 r80467  
    3131#include "JNIUtility.h"
    3232#include "npruntime.h"
     33#include <wtf/text/WTFString.h>
    3334
    3435namespace JSC {
     
    3637namespace Bindings {
    3738
    38 jvalue convertNPVariantToJValue(NPVariant, JNIType, const char* javaClassName);
     39jvalue convertNPVariantToJValue(NPVariant, const WTF::String& javaType);
    3940void convertJValueToNPVariant(jvalue, JNIType, const char* javaClassName, NPVariant*);
    4041
  • trunk/Source/WebCore/bridge/jni/v8/JavaInstanceV8.cpp

    r80103 r80467  
    9898        jArgs = static_cast<jvalue*>(malloc(count * sizeof(jvalue)));
    9999
    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));
    104102
    105103    jvalue result;
Note: See TracChangeset for help on using the changeset viewer.