summaryrefslogtreecommitdiffstats
path: root/V8Binding/jni
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-01-20 13:54:01 +0000
committerSteve Block <steveblock@google.com>2010-01-20 14:23:21 +0000
commit78023b8120c8cd0aba398f04bf5aacb8d3fd05c7 (patch)
tree9694e3c5b910943d2207c6d19af1cfc945740035 /V8Binding/jni
parent20b6a09ef6412dd2ad39520ea8d4c2fcdafe3f08 (diff)
downloadexternal_webkit-78023b8120c8cd0aba398f04bf5aacb8d3fd05c7.zip
external_webkit-78023b8120c8cd0aba398f04bf5aacb8d3fd05c7.tar.gz
external_webkit-78023b8120c8cd0aba398f04bf5aacb8d3fd05c7.tar.bz2
Move V8 jni_class to bridge/jni/v8/JavaClassV8 and fix style
This is the V8 equivalent of http://trac.webkit.org/changeset/53443 It is being upstreamed to webkit.org in https://bugs.webkit.org/show_bug.cgi?id=33898 Change-Id: I27dcf73cc7d8c0303243ea632361f2210819cbc4
Diffstat (limited to 'V8Binding/jni')
-rw-r--r--V8Binding/jni/jni_class.cpp113
-rw-r--r--V8Binding/jni/jni_class.h62
-rw-r--r--V8Binding/jni/jni_instance.cpp2
-rw-r--r--V8Binding/jni/jni_npobject.cpp2
4 files changed, 2 insertions, 177 deletions
diff --git a/V8Binding/jni/jni_class.cpp b/V8Binding/jni/jni_class.cpp
deleted file mode 100644
index 2c577d8..0000000
--- a/V8Binding/jni/jni_class.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2003 Apple Computer, Inc. All rights reserved.
- * Copyright 2009, 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.
- */
-
-#include "config.h"
-#include "jni_class.h"
-
-#include "JNIUtility.h"
-#include "jni_runtime.h"
-
-using namespace JSC::Bindings;
-
-JavaClass::JavaClass(jobject anInstance)
-{
- jobject aClass = callJNIMethod<jobject>(anInstance, "getClass", "()Ljava/lang/Class;");
-
- if (!aClass) {
- fprintf(stderr, "%s: unable to call getClass on instance %p\n", __PRETTY_FUNCTION__, anInstance);
- return;
- }
-
- jstring className = (jstring)callJNIMethod<jobject>(aClass, "getName", "()Ljava/lang/String;");
- const char *classNameC = getCharactersFromJString(className);
- _name = strdup(classNameC);
- releaseCharactersForJString(className, classNameC);
-
- int i;
- JNIEnv *env = getJNIEnv();
-
- // Get the fields
- jarray fields = (jarray)callJNIMethod<jobject>(aClass, "getFields", "()[Ljava/lang/reflect/Field;");
- int numFields = env->GetArrayLength(fields);
- for (i = 0; i < numFields; i++) {
- jobject aJField = env->GetObjectArrayElement((jobjectArray)fields, i);
- JavaField *aField = new JavaField(env, aJField); // deleted in the JavaClass destructor
- {
- _fields.set(aField->name(), aField);
- }
- env->DeleteLocalRef(aJField);
- }
-
- // Get the methods
- jarray methods = (jarray)callJNIMethod<jobject>(aClass, "getMethods", "()[Ljava/lang/reflect/Method;");
- int numMethods = env->GetArrayLength(methods);
- for (i = 0; i < numMethods; i++) {
- jobject aJMethod = env->GetObjectArrayElement((jobjectArray)methods, i);
- JavaMethod *aMethod = new JavaMethod(env, aJMethod); // deleted in the JavaClass destructor
- MethodList* methodList;
- {
- methodList = _methods.get(aMethod->name());
- if (!methodList) {
- methodList = new MethodList();
- _methods.set(aMethod->name(), methodList);
- }
- }
- methodList->append(aMethod);
- env->DeleteLocalRef(aJMethod);
- }
- env->DeleteLocalRef(fields);
- env->DeleteLocalRef(methods);
- env->DeleteLocalRef(aClass);
-}
-
-JavaClass::~JavaClass() {
- free((void *)_name);
-
- deleteAllValues(_fields);
- _fields.clear();
-
- MethodListMap::const_iterator end = _methods.end();
- for (MethodListMap::const_iterator it = _methods.begin(); it != end; ++it) {
- const MethodList* methodList = it->second;
- deleteAllValues(*methodList);
- delete methodList;
- }
- _methods.clear();
-}
-
-MethodList JavaClass::methodsNamed(const char* name) const
-{
- MethodList *methodList = _methods.get(name);
-
- if (methodList)
- return *methodList;
- return MethodList();
-}
-
-JavaField* JavaClass::fieldNamed(const char* name) const
-{
- return _fields.get(name);
-}
diff --git a/V8Binding/jni/jni_class.h b/V8Binding/jni/jni_class.h
deleted file mode 100644
index 58787d3..0000000
--- a/V8Binding/jni/jni_class.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2003 Apple Computer, Inc. All rights reserved.
- * Copyright 2009, 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 JNI_CLASS_H_
-#define JNI_CLASS_H_
-
-#include <jni_runtime.h>
-#include <wtf/HashMap.h>
-#include <wtf/Vector.h>
-#include "PlatformString.h"
-#include "StringHash.h"
-
-namespace JSC {
-
-namespace Bindings {
-
-typedef Vector<JavaMethod*> MethodList;
-typedef HashMap<WebCore::String, MethodList*> MethodListMap;
-typedef HashMap<WebCore::String, JavaField*> FieldMap;
-
-class JavaClass {
-public:
- JavaClass (jobject anInstance);
- ~JavaClass ();
-
- MethodList methodsNamed(const char* name) const;
- JavaField* fieldNamed(const char* name) const;
-
-private:
- const char *_name;
- MethodListMap _methods;
- FieldMap _fields;
-};
-
-} // namespace Bindings
-
-} // namespace JSC
-
-#endif // JNI_CLASS_H_
diff --git a/V8Binding/jni/jni_instance.cpp b/V8Binding/jni/jni_instance.cpp
index c674e88..205e3f4 100644
--- a/V8Binding/jni/jni_instance.cpp
+++ b/V8Binding/jni/jni_instance.cpp
@@ -30,7 +30,7 @@
#include "jni_instance.h"
#include "JNIUtility.h"
-#include "jni_class.h"
+#include "JavaClassV8.h"
#include "jni_runtime.h"
#include <assert.h>
diff --git a/V8Binding/jni/jni_npobject.cpp b/V8Binding/jni/jni_npobject.cpp
index d736cdd..31196fc 100644
--- a/V8Binding/jni/jni_npobject.cpp
+++ b/V8Binding/jni/jni_npobject.cpp
@@ -28,7 +28,7 @@
#include "jni_npobject.h"
#include "JNIUtility.h"
-#include "jni_class.h"
+#include "JavaClassV8.h"
#include "jni_instance.h"
#include "jni_runtime.h"
// This source file should be in bridge/jni, so it's OK to use the private