Changeset 91355 in webkit


Ignore:
Timestamp:
Jul 20, 2011 4:20:02 AM (13 years ago)
Author:
steveblock@google.com
Message:

JobjectWrapper should inherit from RefCounted rather than implementing its own ref counting
https://bugs.webkit.org/show_bug.cgi?id=55786

Also adds static create() method and cleans up use of data members.

Reviewed by Tony Gentilcore.

No new tests, refactoring only.

  • bridge/jni/JobjectWrapper.cpp:

(JobjectWrapper::JobjectWrapper):

  • bridge/jni/JobjectWrapper.h:

(JSC::Bindings::JobjectWrapper::create):

  • bridge/jni/jsc/JavaArrayJSC.cpp:

(JavaArray::JavaArray):

  • bridge/jni/jsc/JavaArrayJSC.h:

(JSC::Bindings::JavaArray::javaArray):

  • bridge/jni/jsc/JavaFieldJSC.cpp:

(JavaField::JavaField):
(JavaField::dispatchValueFromInstance):
(JavaField::dispatchSetValueToInstance):

  • bridge/jni/jsc/JavaInstanceJSC.cpp:

(JavaInstance::JavaInstance):
(JavaInstance::getClass):
(JavaInstance::stringValue):
(JavaInstance::numberValue):
(JavaInstance::booleanValue):
(JavaInstance::invokeMethod):

  • bridge/jni/jsc/JavaInstanceJSC.h:

(JSC::Bindings::JavaInstance::javaInstance):

  • bridge/jni/v8/JavaFieldJobjectV8.cpp:

(JavaFieldJobject::JavaFieldJobject):

  • bridge/jni/v8/JavaInstanceJobjectV8.cpp:

(JavaInstanceJobject::JavaInstanceJobject):

  • bridge/jni/v8/JavaInstanceJobjectV8.h:

(JSC::Bindings::JavaInstanceJobject::javaInstance):

Location:
trunk/Source/WebCore
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r91353 r91355  
     12011-07-20  Steve Block  <steveblock@google.com>
     2
     3        JobjectWrapper should inherit from RefCounted rather than implementing its own ref counting
     4        https://bugs.webkit.org/show_bug.cgi?id=55786
     5
     6        Also adds static create() method and cleans up use of data members.
     7
     8        Reviewed by Tony Gentilcore.
     9
     10        No new tests, refactoring only.
     11
     12        * bridge/jni/JobjectWrapper.cpp:
     13        (JobjectWrapper::JobjectWrapper):
     14        * bridge/jni/JobjectWrapper.h:
     15        (JSC::Bindings::JobjectWrapper::create):
     16        * bridge/jni/jsc/JavaArrayJSC.cpp:
     17        (JavaArray::JavaArray):
     18        * bridge/jni/jsc/JavaArrayJSC.h:
     19        (JSC::Bindings::JavaArray::javaArray):
     20        * bridge/jni/jsc/JavaFieldJSC.cpp:
     21        (JavaField::JavaField):
     22        (JavaField::dispatchValueFromInstance):
     23        (JavaField::dispatchSetValueToInstance):
     24        * bridge/jni/jsc/JavaInstanceJSC.cpp:
     25        (JavaInstance::JavaInstance):
     26        (JavaInstance::getClass):
     27        (JavaInstance::stringValue):
     28        (JavaInstance::numberValue):
     29        (JavaInstance::booleanValue):
     30        (JavaInstance::invokeMethod):
     31        * bridge/jni/jsc/JavaInstanceJSC.h:
     32        (JSC::Bindings::JavaInstance::javaInstance):
     33        * bridge/jni/v8/JavaFieldJobjectV8.cpp:
     34        (JavaFieldJobject::JavaFieldJobject):
     35        * bridge/jni/v8/JavaInstanceJobjectV8.cpp:
     36        (JavaInstanceJobject::JavaInstanceJobject):
     37        * bridge/jni/v8/JavaInstanceJobjectV8.h:
     38        (JSC::Bindings::JavaInstanceJobject::javaInstance):
     39
    1402011-07-20  Kentaro Hara  <haraken@google.com>
    241
  • trunk/Source/WebCore/bridge/jni/JobjectWrapper.cpp

    r80367 r91355  
    3030#if ENABLE(JAVA_BRIDGE)
    3131
    32 #include <assert.h>
    33 
    3432using namespace JSC::Bindings;
    3533
    3634JobjectWrapper::JobjectWrapper(jobject instance)
    37     : m_refCount(0)
    3835{
    39     assert(instance);
     36    ASSERT(instance);
    4037
    4138    // Cache the JNIEnv used to get the global ref for this java instanace.
  • trunk/Source/WebCore/bridge/jni/JobjectWrapper.h

    r82950 r91355  
    3131
    3232#include "JNIUtility.h"
     33#include <wtf/PassRefPtr.h>
     34#include <wtf/RefCounted.h>
    3335
    3436namespace JSC {
     
    3638namespace Bindings {
    3739
    38 class JobjectWrapper {
    39 friend class JavaArray;
    40 friend class JavaField;
    41 friend class JavaFieldJobject;
    42 friend class JavaInstance;
    43 friend class JavaInstanceJobject;
     40class JobjectWrapper : public RefCounted<JobjectWrapper> {
     41public:
     42    static PassRefPtr<JobjectWrapper> create(jobject object) { return adoptRef(new JobjectWrapper(object)); }
     43    ~JobjectWrapper();
    4444
    45 public:
    4645    jobject instance() const { return m_instance; }
    4746    void setInstance(jobject instance) { m_instance = instance; }
    4847
    49     void ref() { m_refCount++; }
    50     void deref()
    51     {
    52         if (!--m_refCount)
    53             delete this;
    54     }
    55 
    56 protected:
     48private:
    5749    JobjectWrapper(jobject);
    58     ~JobjectWrapper();
    5950
    6051    jobject m_instance;
    61 
    62 private:
    6352    JNIEnv* m_env;
    64     unsigned int m_refCount;
    6553};
    6654
  • trunk/Source/WebCore/bridge/jni/jsc/JavaArrayJSC.cpp

    r81860 r91355  
    5454    : Array(rootObject)
    5555{
    56     m_array = new JobjectWrapper(array);
     56    m_array = JobjectWrapper::create(array);
    5757    // Java array are fixed length, so we can cache length.
    5858    JNIEnv* env = getJNIEnv();
    59     m_length = env->GetArrayLength(static_cast<jarray>(m_array->m_instance));
     59    m_length = env->GetArrayLength(static_cast<jarray>(m_array->instance()));
    6060    m_type = strdup(type);
    6161}
  • trunk/Source/WebCore/bridge/jni/jsc/JavaArrayJSC.h

    r80476 r91355  
    4949    virtual unsigned int getLength() const;
    5050
    51     jobject javaArray() const { return m_array->m_instance; }
     51    jobject javaArray() const { return m_array->instance(); }
    5252
    5353    static JSValue convertJObjectToArray(ExecState*, jobject, const char* type, PassRefPtr<RootObject>);
  • trunk/Source/WebCore/bridge/jni/jsc/JavaFieldJSC.cpp

    r81860 r91355  
    5959    m_name = JavaString(env, fieldName);
    6060
    61     m_field = new JobjectWrapper(aField);
     61    m_field = JobjectWrapper::create(aField);
    6262}
    6363
     
    6565{
    6666    jobject jinstance = instance->javaInstance();
    67     jobject fieldJInstance = m_field->m_instance;
     67    jobject fieldJInstance = m_field->instance();
    6868    JNIEnv* env = getJNIEnv();
    6969    jvalue result;
     
    152152{
    153153    jobject jinstance = instance->javaInstance();
    154     jobject fieldJInstance = m_field->m_instance;
     154    jobject fieldJInstance = m_field->instance();
    155155    JNIEnv* env = getJNIEnv();
    156156
  • trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp

    r85036 r91355  
    5353    : Instance(rootObject)
    5454{
    55     m_instance = new JobjectWrapper(instance);
     55    m_instance = JobjectWrapper::create(instance);
    5656    m_class = 0;
    5757}
     
    8282{
    8383    if (!m_class)
    84         m_class = new JavaClass (m_instance->m_instance);
     84        m_class = new JavaClass (m_instance->instance());
    8585    return m_class;
    8686}
     
    9090    JSLock lock(SilenceAssertionsOnly);
    9191
    92     jstring stringValue = (jstring)callJNIMethod<jobject>(m_instance->m_instance, "toString", "()Ljava/lang/String;");
     92    jstring stringValue = (jstring)callJNIMethod<jobject>(m_instance->instance(), "toString", "()Ljava/lang/String;");
    9393
    9494    // Should throw a JS exception, rather than returning ""? - but better than a null dereference.
     
    105105JSValue JavaInstance::numberValue(ExecState*) const
    106106{
    107     jdouble doubleValue = callJNIMethod<jdouble>(m_instance->m_instance, "doubleValue", "()D");
     107    jdouble doubleValue = callJNIMethod<jdouble>(m_instance->instance(), "doubleValue", "()D");
    108108    return jsNumber(doubleValue);
    109109}
     
    111111JSValue JavaInstance::booleanValue() const
    112112{
    113     jboolean booleanValue = callJNIMethod<jboolean>(m_instance->m_instance, "booleanValue", "()Z");
     113    jboolean booleanValue = callJNIMethod<jboolean>(m_instance->instance(), "booleanValue", "()Z");
    114114    return jsBoolean(booleanValue);
    115115}
     
    193193    bool handled = false;
    194194    if (rootObject->nativeHandle()) {
    195         jobject obj = m_instance->m_instance;
     195        jobject obj = m_instance->instance();
    196196        JSValue exceptionDescription;
    197197        const char *callingURL = 0; // FIXME, need to propagate calling URL to Java
     
    208208#if PLATFORM(ANDROID)
    209209    if (!handled)
    210         result = callJNIMethod(m_instance->m_instance, jMethod->returnType(), jMethod->name().utf8().data(), jMethod->signature(), jArgs.data());
     210        result = callJNIMethod(m_instance->instance(), jMethod->returnType(), jMethod->name().utf8().data(), jMethod->signature(), jArgs.data());
    211211#endif
    212212
  • trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h

    r80367 r91355  
    5757    virtual JSValue invokeMethod(ExecState* exec, RuntimeMethod* method);
    5858
    59     jobject javaInstance() const { return m_instance->m_instance; }
     59    jobject javaInstance() const { return m_instance->instance(); }
    6060
    6161    JSValue stringValue(ExecState*) const;
  • trunk/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp

    r82554 r91355  
    4343    m_name = JavaString(env, fieldName);
    4444
    45     m_field = new JobjectWrapper(aField);
     45    m_field = JobjectWrapper::create(aField);
    4646}
    4747
  • trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp

    r82950 r91355  
    4242
    4343JavaInstanceJobject::JavaInstanceJobject(jobject instance)
    44     : m_instance(new JobjectWrapper(instance))
     44    : m_instance(JobjectWrapper::create(instance))
    4545{
    4646}
  • trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h

    r82950 r91355  
    5454    virtual void end();
    5555
    56     jobject javaInstance() const { return m_instance->m_instance; }
     56    jobject javaInstance() const { return m_instance->instance(); }
    5757
    5858protected:
Note: See TracChangeset for help on using the changeset viewer.