summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/bridge/jni
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/bridge/jni')
-rw-r--r--Source/WebCore/bridge/jni/JavaMethod.h2
-rw-r--r--Source/WebCore/bridge/jni/JobjectWrapper.h2
-rw-r--r--Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp2
-rw-r--r--Source/WebCore/bridge/jni/jsc/JavaRuntimeObject.h2
-rw-r--r--Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp11
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp (renamed from Source/WebCore/bridge/jni/v8/JavaClassV8.cpp)34
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h59
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaClassV8.h15
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp (renamed from Source/WebCore/bridge/jni/v8/JavaFieldV8.cpp)4
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.h61
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaFieldV8.h18
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp (renamed from Source/WebCore/bridge/jni/v8/JavaInstanceV8.cpp)34
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h69
-rw-r--r--Source/WebCore/bridge/jni/v8/JavaInstanceV8.h26
14 files changed, 248 insertions, 91 deletions
diff --git a/Source/WebCore/bridge/jni/JavaMethod.h b/Source/WebCore/bridge/jni/JavaMethod.h
index f15b653..5068693 100644
--- a/Source/WebCore/bridge/jni/JavaMethod.h
+++ b/Source/WebCore/bridge/jni/JavaMethod.h
@@ -42,6 +42,8 @@ typedef const char* RuntimeType;
class JavaMethod : public Method {
public:
+ virtual ~JavaMethod() {}
+
virtual String name() const = 0;
virtual RuntimeType returnTypeClassName() const = 0;
virtual String parameterAt(int) const = 0;
diff --git a/Source/WebCore/bridge/jni/JobjectWrapper.h b/Source/WebCore/bridge/jni/JobjectWrapper.h
index 28ce56e..9cc4b27 100644
--- a/Source/WebCore/bridge/jni/JobjectWrapper.h
+++ b/Source/WebCore/bridge/jni/JobjectWrapper.h
@@ -38,7 +38,9 @@ namespace Bindings {
class JobjectWrapper {
friend class JavaArray;
friend class JavaField;
+friend class JavaFieldJobject;
friend class JavaInstance;
+friend class JavaInstanceJobject;
public:
jobject instance() const { return m_instance; }
diff --git a/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp b/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp
index 806efa6..ab64132 100644
--- a/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp
+++ b/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp
@@ -124,7 +124,7 @@ public:
ASSERT(inherits(&s_info));
}
- static PassRefPtr<Structure> createStructure(JSGlobalData& globalData, JSValue prototype)
+ static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
{
return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
}
diff --git a/Source/WebCore/bridge/jni/jsc/JavaRuntimeObject.h b/Source/WebCore/bridge/jni/jsc/JavaRuntimeObject.h
index 03f116f..8a3612f 100644
--- a/Source/WebCore/bridge/jni/jsc/JavaRuntimeObject.h
+++ b/Source/WebCore/bridge/jni/jsc/JavaRuntimeObject.h
@@ -42,7 +42,7 @@ public:
static const ClassInfo s_info;
- static PassRefPtr<Structure> createStructure(JSGlobalData& globalData, JSValue prototype)
+ static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
{
return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
}
diff --git a/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp b/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp
index e2ef2ce..4c9e240 100644
--- a/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp
+++ b/Source/WebCore/bridge/jni/v8/JNIUtilityPrivate.cpp
@@ -28,7 +28,7 @@
#if ENABLE(JAVA_BRIDGE)
-#include "JavaInstanceV8.h"
+#include "JavaInstanceJobjectV8.h"
#include "JavaNPObjectV8.h"
#if PLATFORM(ANDROID)
#include "npruntime_impl.h"
@@ -424,7 +424,7 @@ JavaValue jvalueToJavaValue(const jvalue& value, const JavaType& type)
case JavaTypeVoid:
break;
case JavaTypeObject:
- result.m_objectValue = new JavaInstance(value.l);
+ result.m_objectValue = new JavaInstanceJobject(value.l);
break;
case JavaTypeString:
{
@@ -476,8 +476,11 @@ jvalue javaValueToJvalue(const JavaValue& value)
case JavaTypeArray:
#endif
case JavaTypeObject:
- if (value.m_objectValue)
- result.l = value.m_objectValue->javaInstance();
+ 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
diff --git a/Source/WebCore/bridge/jni/v8/JavaClassV8.cpp b/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp
index 24d05f3..40bfd63 100644
--- a/Source/WebCore/bridge/jni/v8/JavaClassV8.cpp
+++ b/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.cpp
@@ -24,16 +24,16 @@
*/
#include "config.h"
-#include "JavaClassV8.h"
+#include "JavaClassJobjectV8.h"
#if ENABLE(JAVA_BRIDGE)
-#include "JavaFieldV8.h"
+#include "JavaFieldJobjectV8.h"
#include "JavaMethodJobject.h"
using namespace JSC::Bindings;
-JavaClass::JavaClass(jobject anInstance)
+JavaClassJobject::JavaClassJobject(jobject anInstance)
{
jobject aClass = callJNIMethod<jobject>(anInstance, "getClass", "()Ljava/lang/Class;");
@@ -42,34 +42,28 @@ JavaClass::JavaClass(jobject anInstance)
return;
}
- int i;
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 (i = 0; i < numFields; i++) {
+ for (int i = 0; i < numFields; i++) {
jobject aJField = env->GetObjectArrayElement(static_cast<jobjectArray>(fields), i);
- JavaField* aField = new JavaField(env, aJField); // deleted in the JavaClass destructor
- {
- m_fields.set(aField->name().utf8(), aField);
- }
+ 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 (i = 0; i < numMethods; i++) {
+ 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;
- {
- methodList = m_methods.get(aMethod->name());
- if (!methodList) {
- methodList = new MethodList();
- m_methods.set(aMethod->name(), methodList);
- }
+ MethodList* methodList = m_methods.get(aMethod->name());
+ if (!methodList) {
+ methodList = new MethodList();
+ m_methods.set(aMethod->name(), methodList);
}
methodList->append(aMethod);
env->DeleteLocalRef(aJMethod);
@@ -79,7 +73,7 @@ JavaClass::JavaClass(jobject anInstance)
env->DeleteLocalRef(aClass);
}
-JavaClass::~JavaClass()
+JavaClassJobject::~JavaClassJobject()
{
deleteAllValues(m_fields);
m_fields.clear();
@@ -93,7 +87,7 @@ JavaClass::~JavaClass()
m_methods.clear();
}
-MethodList JavaClass::methodsNamed(const char* name) const
+MethodList JavaClassJobject::methodsNamed(const char* name) const
{
MethodList* methodList = m_methods.get(name);
@@ -102,7 +96,7 @@ MethodList JavaClass::methodsNamed(const char* name) const
return MethodList();
}
-JavaField* JavaClass::fieldNamed(const char* name) const
+JavaField* JavaClassJobject::fieldNamed(const char* name) const
{
return m_fields.get(name);
}
diff --git a/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h b/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h
new file mode 100644
index 0000000..d27ca97
--- /dev/null
+++ b/Source/WebCore/bridge/jni/v8/JavaClassJobjectV8.h
@@ -0,0 +1,59 @@
+/*
+ * 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
diff --git a/Source/WebCore/bridge/jni/v8/JavaClassV8.h b/Source/WebCore/bridge/jni/v8/JavaClassV8.h
index 6b03b2d..e60ca2d 100644
--- a/Source/WebCore/bridge/jni/v8/JavaClassV8.h
+++ b/Source/WebCore/bridge/jni/v8/JavaClassV8.h
@@ -28,11 +28,10 @@
#if ENABLE(JAVA_BRIDGE)
-#include "JNIUtility.h"
-#include "PlatformString.h"
#include <wtf/HashMap.h>
#include <wtf/Vector.h>
#include <wtf/text/StringHash.h>
+#include <wtf/text/WTFString.h>
namespace JSC {
@@ -42,20 +41,14 @@ class JavaField;
class JavaMethod;
typedef Vector<JavaMethod*> MethodList;
-typedef HashMap<WTF::String, MethodList*> MethodListMap;
typedef HashMap<WTF::String, JavaField*> FieldMap;
class JavaClass {
public:
- JavaClass(jobject);
- ~JavaClass();
+ virtual ~JavaClass() {}
- MethodList methodsNamed(const char* name) const;
- JavaField* fieldNamed(const char* name) const;
-
-private:
- MethodListMap m_methods;
- FieldMap m_fields;
+ virtual MethodList methodsNamed(const char* name) const = 0;
+ virtual JavaField* fieldNamed(const char* name) const = 0;
};
} // namespace Bindings
diff --git a/Source/WebCore/bridge/jni/v8/JavaFieldV8.cpp b/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp
index 2a6dd0b..0fe5837 100644
--- a/Source/WebCore/bridge/jni/v8/JavaFieldV8.cpp
+++ b/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.cpp
@@ -24,13 +24,13 @@
*/
#include "config.h"
-#include "JavaFieldV8.h"
+#include "JavaFieldJobjectV8.h"
#if ENABLE(JAVA_BRIDGE)
using namespace JSC::Bindings;
-JavaField::JavaField(JNIEnv* env, jobject aField)
+JavaFieldJobject::JavaFieldJobject(JNIEnv* env, jobject aField)
{
// Get field type
jobject fieldType = callJNIMethod<jobject>(aField, "getType", "()Ljava/lang/Class;");
diff --git a/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.h b/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.h
new file mode 100644
index 0000000..32c7857
--- /dev/null
+++ b/Source/WebCore/bridge/jni/v8/JavaFieldJobjectV8.h
@@ -0,0 +1,61 @@
+/*
+ * 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
diff --git a/Source/WebCore/bridge/jni/v8/JavaFieldV8.h b/Source/WebCore/bridge/jni/v8/JavaFieldV8.h
index defed60..3c24cf5 100644
--- a/Source/WebCore/bridge/jni/v8/JavaFieldV8.h
+++ b/Source/WebCore/bridge/jni/v8/JavaFieldV8.h
@@ -28,8 +28,8 @@
#if ENABLE(JAVA_BRIDGE)
-#include "JavaString.h"
-#include "JobjectWrapper.h"
+#include "JNIUtility.h"
+#include <wtf/text/WTFString.h>
namespace JSC {
@@ -37,17 +37,11 @@ namespace Bindings {
class JavaField {
public:
- JavaField(JNIEnv*, jobject aField);
+ virtual ~JavaField() {}
- const JavaString& name() const { return m_name; }
- const char* typeClassName() const { return m_typeClassName.utf8(); }
- JavaType type() const { return m_type; }
-
-private:
- JavaString m_name;
- JavaString m_typeClassName;
- JavaType m_type;
- RefPtr<JobjectWrapper> m_field;
+ virtual String name() const = 0;
+ virtual const char* typeClassName() const = 0;
+ virtual JavaType type() const = 0;
};
} // namespace Bindings
diff --git a/Source/WebCore/bridge/jni/v8/JavaInstanceV8.cpp b/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp
index d1075ae..8221eff 100644
--- a/Source/WebCore/bridge/jni/v8/JavaInstanceV8.cpp
+++ b/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp
@@ -25,52 +25,46 @@
*/
#include "config.h"
-#include "JavaInstanceV8.h"
+#include "JavaInstanceJobjectV8.h"
#if ENABLE(JAVA_BRIDGE)
#include "JNIUtilityPrivate.h"
-#include "JavaClassV8.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;
-JavaInstance::JavaInstance(jobject instance)
+JavaInstanceJobject::JavaInstanceJobject(jobject instance)
+ : m_instance(new JobjectWrapper(instance))
{
- m_instance = new JobjectWrapper(instance);
- m_class = 0;
-}
-
-JavaInstance::~JavaInstance()
-{
- m_instance = 0;
- delete m_class;
}
#define NUM_LOCAL_REFS 64
-void JavaInstance::virtualBegin()
+void JavaInstanceJobject::begin()
{
getJNIEnv()->PushLocalFrame(NUM_LOCAL_REFS);
}
-void JavaInstance::virtualEnd()
+void JavaInstanceJobject::end()
{
getJNIEnv()->PopLocalFrame(0);
}
-JavaClass* JavaInstance::getClass() const
+JavaClass* JavaInstanceJobject::getClass() const
{
if (!m_class)
- m_class = new JavaClass(javaInstance());
- return m_class;
+ m_class = adoptPtr(new JavaClassJobject(javaInstance()));
+ return m_class.get();
}
-JavaValue JavaInstance::invokeMethod(const JavaMethod* method, JavaValue* args)
+JavaValue JavaInstanceJobject::invokeMethod(const JavaMethod* method, JavaValue* args)
{
ASSERT(getClass()->methodsNamed(method->name().utf8().data()).find(method) != notFound);
unsigned int numParams = method->numParameters();
@@ -81,10 +75,10 @@ JavaValue JavaInstance::invokeMethod(const JavaMethod* method, JavaValue* args)
return jvalueToJavaValue(result, method->returnType());
}
-JavaValue JavaInstance::getField(const JavaField* field)
+JavaValue JavaInstanceJobject::getField(const JavaField* field)
{
- ASSERT(getClass()->fieldNamed(field->name().utf8()) == field);
- return jvalueToJavaValue(getJNIField(javaInstance(), field->type(), field->name().utf8(), field->typeClassName()), field->type());
+ 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)
diff --git a/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h b/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h
new file mode 100644
index 0000000..9f86037
--- /dev/null
+++ b/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.h
@@ -0,0 +1,69 @@
+/*
+ * 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->m_instance; }
+
+protected:
+ RefPtr<JobjectWrapper> m_instance;
+ mutable OwnPtr<JavaClass> m_class;
+};
+
+} // namespace Bindings
+
+} // namespace JSC
+
+#endif // ENABLE(JAVA_BRIDGE)
+
+#endif // JavaInstanceJobjectV8_h
diff --git a/Source/WebCore/bridge/jni/v8/JavaInstanceV8.h b/Source/WebCore/bridge/jni/v8/JavaInstanceV8.h
index b1150f8..7436de7 100644
--- a/Source/WebCore/bridge/jni/v8/JavaInstanceV8.h
+++ b/Source/WebCore/bridge/jni/v8/JavaInstanceV8.h
@@ -29,13 +29,8 @@
#if ENABLE(JAVA_BRIDGE)
-#include "JNIUtility.h"
#include "JavaValueV8.h"
-#include "JobjectWrapper.h"
-#include "npruntime.h"
-
#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
using namespace WTF;
@@ -49,28 +44,19 @@ class JavaMethod;
class JavaInstance : public RefCounted<JavaInstance> {
public:
- JavaInstance(jobject instance);
- virtual ~JavaInstance();
+ virtual ~JavaInstance() {}
- JavaClass* getClass() const;
+ 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.
- JavaValue invokeMethod(const JavaMethod*, JavaValue* args);
- JavaValue getField(const JavaField*);
- jobject javaInstance() const { return m_instance->m_instance; }
+ 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.
- void begin() { virtualBegin(); }
- void end() { virtualEnd(); }
-
-protected:
- RefPtr<JobjectWrapper> m_instance;
- mutable JavaClass* m_class;
-
- virtual void virtualBegin();
- virtual void virtualEnd();
+ virtual void begin() = 0;
+ virtual void end() = 0;
};
} // namespace Bindings