Title: [92659] trunk/Source/WebCore
Revision
92659
Author
[email protected]
Date
2011-08-08 17:55:30 -0700 (Mon, 08 Aug 2011)

Log Message

Removes V8's JavaInstanceJobject, JavaClassJobject and JavaFieldJobject.
https://bugs.webkit.org/show_bug.cgi?id=57859

Reviewed by Alexey Proskuryakov.

This effectively reverts the changes made in Bugs 55383, 57533 and
55766. These classes were only used by Android. In the future, Android
will use the Chromium WebKit API to implement the Java bridge.

Towards this goal, this patch ...
- Simplfies the JavaInstance, JavaClass and JavaField interfaces for V8.
  These interfaces will be implemented in Chromium's WebKit layer.
- Adds a JavaMethod interface for V8
- Removes the jvalue <-> JavaValue conversion functions for V8, which are
  now superfluous
- Removes the calls to JavaInstance::begin()/end() for V8, which are now
  superfluous

Will be covered by existing tests once the Chromium WebKit layer is complete.

* WebCore.gypi:
* bridge/jni/v8/JNIUtilityPrivate.cpp:
* bridge/jni/v8/JNIUtilityPrivate.h:
* bridge/jni/v8/JavaClassJobjectV8.cpp: Removed.
* bridge/jni/v8/JavaFieldJobjectV8.cpp: Removed.
* bridge/jni/v8/JavaFieldJobjectV8.h: Removed.
* bridge/jni/v8/JavaFieldV8.h:
* bridge/jni/v8/JavaInstanceJobjectV8.cpp: Removed.
* bridge/jni/v8/JavaInstanceJobjectV8.h: Removed.
* bridge/jni/v8/JavaInstanceV8.h:
* bridge/jni/v8/JavaMethodV8.h:
(JSC::Bindings::JavaMethod::~JavaMethod):
* bridge/jni/v8/JavaNPObjectV8.cpp:
(JSC::Bindings::JavaNPObjectHasMethod):
(JSC::Bindings::JavaNPObjectInvoke):
(JSC::Bindings::JavaNPObjectHasProperty):
(JSC::Bindings::JavaNPObjectGetProperty):

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (92658 => 92659)


--- trunk/Source/WebCore/ChangeLog	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/ChangeLog	2011-08-09 00:55:30 UTC (rev 92659)
@@ -1,3 +1,43 @@
+2011-08-08  Steve Block  <[email protected]>
+
+        Removes V8's JavaInstanceJobject, JavaClassJobject and JavaFieldJobject.
+        https://bugs.webkit.org/show_bug.cgi?id=57859
+
+        Reviewed by Alexey Proskuryakov.
+
+        This effectively reverts the changes made in Bugs 55383, 57533 and
+        55766. These classes were only used by Android. In the future, Android
+        will use the Chromium WebKit API to implement the Java bridge.
+
+        Towards this goal, this patch ...
+        - Simplfies the JavaInstance, JavaClass and JavaField interfaces for V8.
+          These interfaces will be implemented in Chromium's WebKit layer.
+        - Adds a JavaMethod interface for V8
+        - Removes the jvalue <-> JavaValue conversion functions for V8, which are
+          now superfluous
+        - Removes the calls to JavaInstance::begin()/end() for V8, which are now
+          superfluous
+
+        Will be covered by existing tests once the Chromium WebKit layer is complete.
+
+        * WebCore.gypi:
+        * bridge/jni/v8/JNIUtilityPrivate.cpp:
+        * bridge/jni/v8/JNIUtilityPrivate.h:
+        * bridge/jni/v8/JavaClassJobjectV8.cpp: Removed.
+        * bridge/jni/v8/JavaFieldJobjectV8.cpp: Removed.
+        * bridge/jni/v8/JavaFieldJobjectV8.h: Removed.
+        * bridge/jni/v8/JavaFieldV8.h:
+        * bridge/jni/v8/JavaInstanceJobjectV8.cpp: Removed.
+        * bridge/jni/v8/JavaInstanceJobjectV8.h: Removed.
+        * bridge/jni/v8/JavaInstanceV8.h:
+        * bridge/jni/v8/JavaMethodV8.h:
+        (JSC::Bindings::JavaMethod::~JavaMethod):
+        * bridge/jni/v8/JavaNPObjectV8.cpp:
+        (JSC::Bindings::JavaNPObjectHasMethod):
+        (JSC::Bindings::JavaNPObjectInvoke):
+        (JSC::Bindings::JavaNPObjectHasProperty):
+        (JSC::Bindings::JavaNPObjectGetProperty):
+
 2011-08-08  Chris Rogers  <[email protected]>
 
         Fix thread-safety of AudioNode deletion

Modified: trunk/Source/WebCore/WebCore.gypi (92658 => 92659)


--- trunk/Source/WebCore/WebCore.gypi	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/WebCore.gypi	2011-08-09 00:55:30 UTC (rev 92659)
@@ -2256,15 +2256,10 @@
             'bridge/jni/jsc/JavaStringJSC.h',
             'bridge/jni/v8/JNIUtilityPrivate.cpp',
             'bridge/jni/v8/JNIUtilityPrivate.h',
-            'bridge/jni/v8/JavaClassJobjectV8.cpp',
-            'bridge/jni/v8/JavaClassJobjectV8.h',
             'bridge/jni/v8/JavaClassV8.h',
-            'bridge/jni/v8/JavaFieldJobjectV8.cpp',
-            'bridge/jni/v8/JavaFieldJobjectV8.h',
             'bridge/jni/v8/JavaFieldV8.h',
-            'bridge/jni/v8/JavaInstanceJobjectV8.cpp',
-            'bridge/jni/v8/JavaInstanceJobjectV8.h',
             'bridge/jni/v8/JavaInstanceV8.h',
+            'bridge/jni/v8/JavaMethodV8.h',
             'bridge/jni/v8/JavaNPObjectV8.cpp',
             'bridge/jni/v8/JavaNPObjectV8.h',
             'bridge/jni/v8/JavaStringV8.h',

Modified: trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp	2011-08-09 00:55:30 UTC (rev 92659)
@@ -28,7 +28,7 @@
 
 #if ENABLE(JAVA_BRIDGE)
 
-#include "JavaInstanceJobjectV8.h"
+#include "JavaInstanceV8.h"
 #include "JavaNPObjectV8.h"
 #include "JavaValueV8.h"
 #include <wtf/text/CString.h>
@@ -234,106 +234,6 @@
     }
 }
 
-JavaValue jvalueToJavaValue(const jvalue& value, const JavaType& type)
-{
-    JavaValue result;
-    result.m_type = type;
-    switch (result.m_type) {
-    case JavaTypeVoid:
-        break;
-    case JavaTypeObject:
-        result.m_objectValue = new JavaInstanceJobject(value.l);
-        break;
-    case JavaTypeString:
-        {
-            jstring javaString = static_cast<jstring>(value.l);
-            const UChar* characters = getUCharactersFromJStringInEnv(getJNIEnv(), javaString);
-            // We take a copy to allow the Java String to be released.
-            result.m_stringValue = String(characters, getJNIEnv()->GetStringLength(javaString));
-            releaseUCharactersForJStringInEnv(getJNIEnv(), javaString, characters);
-        }
-        break;
-    case JavaTypeBoolean:
-        result.m_booleanValue = value.z == JNI_FALSE ? false : true;
-        break;
-    case JavaTypeByte:
-        result.m_byteValue = value.b;
-        break;
-    case JavaTypeChar:
-        result.m_charValue = value.c;
-        break;
-    case JavaTypeShort:
-        result.m_shortValue = value.s;
-        break;
-    case JavaTypeInt:
-        result.m_intValue = value.i;
-        break;
-    case JavaTypeLong:
-        result.m_longValue = value.j;
-        break;
-    case JavaTypeFloat:
-        result.m_floatValue = value.f;
-        break;
-    case JavaTypeDouble:
-        result.m_doubleValue = value.d;
-        break;
-    default:
-        ASSERT(false);
-    }
-    return result;
-}
-
-jvalue javaValueToJvalue(const JavaValue& value)
-{
-    jvalue result;
-    memset(&result, 0, sizeof(jvalue));
-    switch (value.m_type) {
-    case JavaTypeVoid:
-        break;
-    case JavaTypeObject:
-        if (value.m_objectValue) {
-            // This method is used only by JavaInstanceJobject, so we know the
-            // derived type of the object.
-            result.l = static_cast<JavaInstanceJobject*>(value.m_objectValue.get())->javaInstance();
-        }
-        break;
-    case JavaTypeString:
-        // This creates a local reference to a new String object, which will
-        // be released when the call stack returns to Java. Note that this
-        // may cause leaks if invoked from a native message loop, as is the
-        // case in workers.
-        result.l = getJNIEnv()->NewString(value.m_stringValue.characters(), value.m_stringValue.length());
-        break;
-    case JavaTypeBoolean:
-        result.z = value.m_booleanValue ? JNI_TRUE : JNI_FALSE;
-        break;
-    case JavaTypeByte:
-        result.b = value.m_byteValue;
-        break;
-    case JavaTypeChar:
-        result.c = value.m_charValue;
-        break;
-    case JavaTypeShort:
-        result.s = value.m_shortValue;
-        break;
-    case JavaTypeInt:
-        result.i = value.m_intValue;
-        break;
-    case JavaTypeLong:
-        result.j = value.m_longValue;
-        break;
-    case JavaTypeFloat:
-        result.f = value.m_floatValue;
-        break;
-    case JavaTypeDouble:
-        result.d = value.m_doubleValue;
-        break;
-    default:
-        ASSERT(false);
-    }
-    return result;
-}
-
 } // namespace Bindings
 
 } // namespace JSC

Modified: trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.h (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.h	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.h	2011-08-09 00:55:30 UTC (rev 92659)
@@ -41,9 +41,6 @@
 JavaValue convertNPVariantToJavaValue(NPVariant, const String& javaClass);
 void convertJavaValueToNPVariant(JavaValue, NPVariant*);
 
-JavaValue jvalueToJavaValue(const jvalue&, const JavaType&);
-jvalue javaValueToJvalue(const JavaValue&);
-
 } // namespace Bindings
 
 } // namespace JSC

Deleted: trunk/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp	2011-08-09 00:55:30 UTC (rev 92659)
@@ -1,104 +0,0 @@
-/*
- * Copyright 2010, 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 "JavaClassJobjectV8.h"
-
-#if ENABLE(JAVA_BRIDGE)
-
-#include "JavaFieldJobjectV8.h"
-#include "JavaMethodJobject.h"
-
-using namespace JSC::Bindings;
-
-JavaClassJobject::JavaClassJobject(jobject anInstance)
-{
-    jobject aClass = callJNIMethod<jobject>(anInstance, "getClass", "()Ljava/lang/Class;");
-
-    if (!aClass) {
-        LOG_ERROR("unable to call getClass on instance %p", anInstance);
-        return;
-    }
-
-    JNIEnv* env = getJNIEnv();
-
-    // Get the fields
-    jarray fields = static_cast<jarray>(callJNIMethod<jobject>(aClass, "getFields", "()[Ljava/lang/reflect/Field;"));
-    int numFields = env->GetArrayLength(fields);
-    for (int i = 0; i < numFields; i++) {
-        jobject aJField = env->GetObjectArrayElement(static_cast<jobjectArray>(fields), i);
-        JavaField* aField = new JavaFieldJobject(env, aJField); // deleted in the JavaClass destructor
-        m_fields.set(aField->name(), aField);
-        env->DeleteLocalRef(aJField);
-    }
-
-    // Get the methods
-    jarray methods = static_cast<jarray>(callJNIMethod<jobject>(aClass, "getMethods", "()[Ljava/lang/reflect/Method;"));
-    int numMethods = env->GetArrayLength(methods);
-    for (int i = 0; i < numMethods; i++) {
-        jobject aJMethod = env->GetObjectArrayElement(static_cast<jobjectArray>(methods), i);
-        JavaMethod* aMethod = new JavaMethodJobject(env, aJMethod); // deleted in the JavaClass destructor
-        MethodList* methodList = m_methods.get(aMethod->name());
-        if (!methodList) {
-            methodList = new MethodList();
-            m_methods.set(aMethod->name(), methodList);
-        }
-        methodList->append(aMethod);
-        env->DeleteLocalRef(aJMethod);
-    }
-    env->DeleteLocalRef(fields);
-    env->DeleteLocalRef(methods);
-    env->DeleteLocalRef(aClass);
-}
-
-JavaClassJobject::~JavaClassJobject()
-{
-    deleteAllValues(m_fields);
-    m_fields.clear();
-
-    MethodListMap::const_iterator end = m_methods.end();
-    for (MethodListMap::const_iterator it = m_methods.begin(); it != end; ++it) {
-        const MethodList* methodList = it->second;
-        deleteAllValues(*methodList);
-        delete methodList;
-    }
-    m_methods.clear();
-}
-
-MethodList JavaClassJobject::methodsNamed(const char* name) const
-{
-    MethodList* methodList = m_methods.get(name);
-
-    if (methodList)
-        return *methodList;
-    return MethodList();
-}
-
-JavaField* JavaClassJobject::fieldNamed(const char* name) const
-{
-    return m_fields.get(name);
-}
-
-#endif // ENABLE(JAVA_BRIDGE)

Deleted: trunk/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h	2011-08-09 00:55:30 UTC (rev 92659)
@@ -1,59 +0,0 @@
-/*
- * Copyright 2010, 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 JavaClassJobjectV8_h
-#define JavaClassJobjectV8_h
-
-#if ENABLE(JAVA_BRIDGE)
-
-#include "JNIUtility.h"
-#include "JavaClassV8.h"
-
-namespace JSC {
-
-namespace Bindings {
-
-class JavaClassJobject : public JavaClass {
-public:
-    JavaClassJobject(jobject);
-    virtual ~JavaClassJobject();
-
-    // JavaClass implementation
-    virtual MethodList methodsNamed(const char* name) const;
-    virtual JavaField* fieldNamed(const char* name) const;
-
-private:
-    typedef HashMap<WTF::String, MethodList*> MethodListMap;
-    MethodListMap m_methods;
-    FieldMap m_fields;
-};
-
-} // namespace Bindings
-
-} // namespace JSC
-
-#endif // ENABLE(JAVA_BRIDGE)
-
-#endif // JavaClassJobjectV8_h

Deleted: trunk/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp	2011-08-09 00:55:30 UTC (rev 92659)
@@ -1,48 +0,0 @@
-/*
- * Copyright 2010, 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 "JavaFieldJobjectV8.h"
-
-#if ENABLE(JAVA_BRIDGE)
-
-using namespace JSC::Bindings;
-
-JavaFieldJobject::JavaFieldJobject(JNIEnv* env, jobject aField)
-{
-    // Get field type
-    jobject fieldType = callJNIMethod<jobject>(aField, "getType", "()Ljava/lang/Class;");
-    jstring fieldTypeName = static_cast<jstring>(callJNIMethod<jobject>(fieldType, "getName", "()Ljava/lang/String;"));
-    m_typeClassName = JavaString(env, fieldTypeName);
-    m_type = javaTypeFromClassName(m_typeClassName.utf8());
-
-    // Get field name
-    jstring fieldName = static_cast<jstring>(callJNIMethod<jobject>(aField, "getName", "()Ljava/lang/String;"));
-    m_name = JavaString(env, fieldName);
-
-    m_field = JobjectWrapper::create(aField);
-}
-
-#endif // ENABLE(JAVA_BRIDGE)

Deleted: trunk/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.h (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.h	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.h	2011-08-09 00:55:30 UTC (rev 92659)
@@ -1,61 +0,0 @@
-/*
- * Copyright 2010, 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 JavaFieldJobjectV8_h
-#define JavaFieldJobjectV8_h
-
-#if ENABLE(JAVA_BRIDGE)
-
-#include "JavaFieldV8.h"
-#include "JavaString.h"
-#include "JobjectWrapper.h"
-
-namespace JSC {
-
-namespace Bindings {
-
-class JavaFieldJobject : public JavaField {
-public:
-    JavaFieldJobject(JNIEnv*, jobject);
-
-    // JavaField implementation
-    virtual String name() const { return m_name.impl(); }
-    virtual const char* typeClassName() const { return m_typeClassName.utf8(); }
-    virtual JavaType type() const { return m_type; }
-
-private:
-    JavaString m_name;
-    JavaString m_typeClassName;
-    JavaType m_type;
-    RefPtr<JobjectWrapper> m_field;
-};
-
-} // namespace Bindings
-
-} // namespace JSC
-
-#endif // ENABLE(JAVA_BRIDGE)
-
-#endif // JavaFieldJobjectV8_h

Modified: trunk/Source/WebCore/bridge/jni/v8/JavaFieldV8.h (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaFieldV8.h	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaFieldV8.h	2011-08-09 00:55:30 UTC (rev 92659)
@@ -40,8 +40,6 @@
     virtual ~JavaField() {}
 
     virtual String name() const = 0;
-    virtual const char* typeClassName() const = 0;
-    virtual JavaType type() const = 0;
 };
 
 } // namespace Bindings

Deleted: trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp	2011-08-09 00:55:30 UTC (rev 92659)
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2003, 2008, 2010 Apple Inc. All rights reserved.
- * Copyright 2010, 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 "JavaInstanceJobjectV8.h"
-
-#if ENABLE(JAVA_BRIDGE)
-
-#include "JNIUtilityPrivate.h"
-#include "JavaClassJobjectV8.h"
-#include "JavaFieldV8.h"
-#include "JavaMethod.h"
-
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/text/CString.h>
-
-using namespace JSC::Bindings;
-
-JavaInstanceJobject::JavaInstanceJobject(jobject instance)
-    : m_instance(JobjectWrapper::create(instance))
-{
-}
-
-#define NUM_LOCAL_REFS 64
-
-void JavaInstanceJobject::begin()
-{
-    getJNIEnv()->PushLocalFrame(NUM_LOCAL_REFS);
-}
-
-void JavaInstanceJobject::end()
-{
-    getJNIEnv()->PopLocalFrame(0);
-}
-
-JavaClass* JavaInstanceJobject::getClass() const
-{
-    if (!m_class)
-        m_class = adoptPtr(new JavaClassJobject(javaInstance()));
-    return m_class.get();
-}
-
-JavaValue JavaInstanceJobject::invokeMethod(const JavaMethod* method, JavaValue* args)
-{
-    ASSERT(getClass()->methodsNamed(method->name().utf8().data()).find(method) != notFound);
-    unsigned int numParams = method->numParameters();
-    OwnArrayPtr<jvalue> jvalueArgs = adoptArrayPtr(new jvalue[numParams]);
-    for (unsigned int i = 0; i < numParams; ++i)
-        jvalueArgs[i] = javaValueToJvalue(args[i]);
-    jvalue result = callJNIMethod(javaInstance(), method->returnType(), method->name().utf8().data(), method->signature(), jvalueArgs.get());
-    return jvalueToJavaValue(result, method->returnType());
-}
-
-JavaValue JavaInstanceJobject::getField(const JavaField* field)
-{
-    ASSERT(getClass()->fieldNamed(field->name().utf8().data()) == field);
-    return jvalueToJavaValue(getJNIField(javaInstance(), field->type(), field->name().utf8().data(), field->typeClassName()), field->type());
-}
-
-#endif // ENABLE(JAVA_BRIDGE)

Deleted: trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h	2011-08-09 00:55:30 UTC (rev 92659)
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2003, 2008, 2010 Apple Inc. All rights reserved.
- * Copyright 2010, 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 JavaInstanceJobjectV8_h
-#define JavaInstanceJobjectV8_h
-
-#if ENABLE(JAVA_BRIDGE)
-
-#include "JNIUtility.h"
-#include "JavaInstanceV8.h"
-#include "JobjectWrapper.h"
-
-#include <wtf/OwnPtr.h>
-#include <wtf/RefPtr.h>
-
-using namespace WTF;
-
-namespace JSC {
-
-namespace Bindings {
-
-class JavaInstanceJobject : public JavaInstance {
-public:
-    JavaInstanceJobject(jobject instance);
-
-    // JavaInstance implementation
-    virtual JavaClass* getClass() const;
-    virtual JavaValue invokeMethod(const JavaMethod*, JavaValue* args);
-    virtual JavaValue getField(const JavaField*);
-    virtual void begin();
-    virtual void end();
-
-    jobject javaInstance() const { return m_instance->instance(); }
-
-protected:
-    RefPtr<JobjectWrapper> m_instance;
-    mutable OwnPtr<JavaClass> m_class;
-};
-
-} // namespace Bindings
-
-} // namespace JSC
-
-#endif // ENABLE(JAVA_BRIDGE)
-
-#endif // JavaInstanceJobjectV8_h

Modified: trunk/Source/WebCore/bridge/jni/v8/JavaInstanceV8.h (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaInstanceV8.h	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaInstanceV8.h	2011-08-09 00:55:30 UTC (rev 92659)
@@ -49,14 +49,8 @@
     virtual JavaClass* getClass() const = 0;
     // args must be an array of length greater than or equal to the number of
     // arguments expected by the method.
-    virtual JavaValue invokeMethod(const JavaMethod*, JavaValue* args) = 0;
-    virtual JavaValue getField(const JavaField*) = 0;
-
-    // These functions are called before and after the main entry points into
-    // the native implementations.  They can be used to establish and cleanup
-    // any needed state.
-    virtual void begin() = 0;
-    virtual void end() = 0;
+    virtual JavaValue invokeMethod(const JavaMethod&, JavaValue* args) = 0;
+    virtual JavaValue getField(const JavaField&) = 0;
 };
 
 } // namespace Bindings

Copied: trunk/Source/WebCore/bridge/jni/v8/JavaMethodV8.h (from rev 92658, trunk/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h) (0 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaMethodV8.h	                        (rev 0)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaMethodV8.h	2011-08-09 00:55:30 UTC (rev 92659)
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2003, 2004, 2005, 2007, 2009, 2010 Apple Inc. All rights reserved.
+ * Copyright 2010, 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:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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 APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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 JavaMethodV8_h
+#define JavaMethodV8_h
+
+#if ENABLE(JAVA_BRIDGE)
+
+#include "Bridge.h"
+#include "JavaType.h"
+
+#include <wtf/text/WTFString.h>
+
+namespace JSC {
+
+namespace Bindings {
+
+typedef const char* RuntimeType;
+
+class JavaMethod : public Method {
+public:
+    virtual ~JavaMethod() { }
+
+    virtual String name() const = 0;
+    virtual String parameterAt(int) const = 0;
+};
+
+} // namespace Bindings
+
+} // namespace JSC
+
+#endif // ENABLE(JAVA_BRIDGE)
+
+#endif // JavaMethodV8_h

Modified: trunk/Source/WebCore/bridge/jni/v8/JavaNPObjectV8.cpp (92658 => 92659)


--- trunk/Source/WebCore/bridge/jni/v8/JavaNPObjectV8.cpp	2011-08-09 00:49:04 UTC (rev 92658)
+++ trunk/Source/WebCore/bridge/jni/v8/JavaNPObjectV8.cpp	2011-08-09 00:55:30 UTC (rev 92659)
@@ -97,9 +97,7 @@
     if (!name)
         return false;
 
-    instance->begin();
     bool result = (instance->getClass()->methodsNamed(name).size() > 0);
-    instance->end();
 
     // TODO: use NPN_MemFree
     free(name);
@@ -116,8 +114,6 @@
     if (!name)
         return false;
 
-    instance->begin();
-
     MethodList methodList = instance->getClass()->methodsNamed(name);
     // TODO: use NPN_MemFree
     free(name);
@@ -144,8 +140,7 @@
     for (unsigned int i = 0; i < argCount; i++)
         jArgs[i] = convertNPVariantToJavaValue(args[i], jMethod->parameterAt(i));
 
-    JavaValue jResult = instance->invokeMethod(jMethod, jArgs);
-    instance->end();
+    JavaValue jResult = instance->invokeMethod(*jMethod, jArgs);
     delete[] jArgs;
 
     VOID_TO_NPVARIANT(*result);
@@ -161,9 +156,7 @@
     NPUTF8* name = _NPN_UTF8FromIdentifier(identifier);
     if (!name)
         return false;
-    instance->begin();
     bool result = instance->getClass()->fieldNamed(name);
-    instance->end();
     free(name);
     return result;
 }
@@ -178,14 +171,12 @@
     if (!name)
         return false;
 
-    instance->begin();
     JavaField* field = instance->getClass()->fieldNamed(name);
     free(name); // TODO: use NPN_MemFree
     if (!field)
         return false;
 
-    JavaValue value = instance->getField(field);
-    instance->end();
+    JavaValue value = instance->getField(*field);
 
     convertJavaValueToNPVariant(value, result);
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to