From 2ed52c4419dd537c98cd7898bc8bdcf8826b8940 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Wed, 21 Mar 2012 16:56:56 -0700 Subject: Stash the directly-implemented interfaces in Proxy so we can implement Class.getInterfaces. Also extend test 044 to spot this (found by a libcore test). Change-Id: I50019db49c549f045d94173c3ed9ae81f05ef858 --- src/java_lang_Class.cc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/java_lang_Class.cc') diff --git a/src/java_lang_Class.cc b/src/java_lang_Class.cc index 3dce55994f..567a067088 100644 --- a/src/java_lang_Class.cc +++ b/src/java_lang_Class.cc @@ -288,6 +288,12 @@ static jstring Class_getNameNative(JNIEnv* env, jobject javaThis) { return AddLocalReference(env, c->ComputeName()); } +static jobjectArray Class_getProxyInterfaces(JNIEnv* env, jobject javaThis) { + ScopedThreadStateChange tsc(Thread::Current(), Thread::kRunnable); + SynthesizedProxyClass* c = down_cast(Decode(env, javaThis)); + return AddLocalReference(env, c->GetInterfaces()->Clone()); +} + static jboolean Class_isAssignableFrom(JNIEnv* env, jobject javaLhs, jclass javaRhs) { ScopedThreadStateChange tsc(Thread::Current(), Thread::kRunnable); Class* lhs = Decode(env, javaLhs); @@ -410,6 +416,7 @@ static JNINativeMethod gMethods[] = { NATIVE_METHOD(Class, getDeclaredMethods, "(Z)[Ljava/lang/reflect/Method;"), NATIVE_METHOD(Class, getDex, "()Lcom/android/dex/Dex;"), NATIVE_METHOD(Class, getNameNative, "()Ljava/lang/String;"), + NATIVE_METHOD(Class, getProxyInterfaces, "()[Ljava/lang/Class;"), NATIVE_METHOD(Class, isAssignableFrom, "(Ljava/lang/Class;)Z"), NATIVE_METHOD(Class, isInstance, "(Ljava/lang/Object;)Z"), NATIVE_METHOD(Class, newInstanceImpl, "()Ljava/lang/Object;"), -- cgit v1.2.3-59-g8ed1b