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);