diff options
author | Steve Block <steveblock@google.com> | 2010-01-20 13:54:01 +0000 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-01-20 14:23:21 +0000 |
commit | 78023b8120c8cd0aba398f04bf5aacb8d3fd05c7 (patch) | |
tree | 9694e3c5b910943d2207c6d19af1cfc945740035 /V8Binding/jni | |
parent | 20b6a09ef6412dd2ad39520ea8d4c2fcdafe3f08 (diff) | |
download | external_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.cpp | 113 | ||||
-rw-r--r-- | V8Binding/jni/jni_class.h | 62 | ||||
-rw-r--r-- | V8Binding/jni/jni_instance.cpp | 2 | ||||
-rw-r--r-- | V8Binding/jni/jni_npobject.cpp | 2 |
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 |