blob: 71e90eaef6b83d0ecccb70c975f17f17bfc2e412 [file] [log] [blame]
Avi Drissman4e1b7bc32022-09-15 14:03:501// Copyright 2018 The Chromium Authors
Torne (Richard Coles)8571d2512018-02-16 20:17:332// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/browser/android/java/jni_reflect.h"
6
7#include "base/android/jni_android.h"
8#include "base/android/jni_string.h"
9
Andrew Grieveecb885bb2024-05-29 18:14:1910// Must come after all headers that specialize FromJniType() / ToJniType().
Mohamed Heikalc09e1012019-06-21 14:47:2611#include "content/browser/reflection_jni_headers/AccessibleObject_jni.h"
12#include "content/browser/reflection_jni_headers/Class_jni.h"
13#include "content/browser/reflection_jni_headers/Method_jni.h"
14#include "content/browser/reflection_jni_headers/Modifier_jni.h"
Torne (Richard Coles)8571d2512018-02-16 20:17:3315
16using base::android::ConvertJavaStringToUTF8;
17using base::android::JavaRef;
18using base::android::ScopedJavaLocalRef;
19
20namespace content {
21
22std::string GetClassName(JNIEnv* env, const JavaRef<jclass>& clazz) {
23 return ConvertJavaStringToUTF8(JNI_Class::Java_Class_getName(env, clazz));
24}
25
26ScopedJavaLocalRef<jobjectArray> GetClassMethods(JNIEnv* env,
27 const JavaRef<jclass>& clazz) {
28 return JNI_Class::Java_Class_getMethods(env, clazz);
29}
30
31std::string GetMethodName(JNIEnv* env, const JavaRef<jobject>& method) {
32 return ConvertJavaStringToUTF8(JNI_Method::Java_Method_getName(env, method));
33}
34
35ScopedJavaLocalRef<jobjectArray> GetMethodParameterTypes(
36 JNIEnv* env,
37 const JavaRef<jobject>& method) {
38 return JNI_Method::Java_Method_getParameterTypes(env, method);
39}
40
41ScopedJavaLocalRef<jclass> GetMethodReturnType(JNIEnv* env,
42 const JavaRef<jobject>& method) {
43 return JNI_Method::Java_Method_getReturnType(env, method);
44}
45
46ScopedJavaLocalRef<jclass> GetMethodDeclaringClass(
47 JNIEnv* env,
48 const JavaRef<jobject>& method) {
49 return JNI_Method::Java_Method_getDeclaringClass(env, method);
50}
51
52bool IsMethodStatic(JNIEnv* env, const JavaRef<jobject>& method) {
53 jint modifiers = JNI_Method::Java_Method_getModifiers(env, method);
54 return JNI_Modifier::Java_Modifier_isStatic(env, modifiers);
55}
56
57bool IsAnnotationPresent(JNIEnv* env,
58 const JavaRef<jobject>& obj,
59 const JavaRef<jclass>& annotation_clazz) {
60 return JNI_AccessibleObject::Java_AccessibleObject_isAnnotationPresent(
61 env, obj, annotation_clazz);
62}
63
64} // namespace content