1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /*
18  * Native implementation for the JniStaticTest parts.
19  */
20 
21 #include <jni.h>
22 
Java_android_jni_cts_ClassLoaderHelper_nativeGetHashCode(JNIEnv * env,jobject obj,jobject appLoader,jclass appLoaderClass)23 extern "C" JNIEXPORT jint JNICALL Java_android_jni_cts_ClassLoaderHelper_nativeGetHashCode(
24         JNIEnv* env,
25         jobject obj __attribute__((unused)),
26         jobject appLoader,
27         jclass appLoaderClass) {
28   jmethodID midFindClass = env->GetMethodID(appLoaderClass, "findClass",
29           "(Ljava/lang/String;)Ljava/lang/Class;");
30   jstring coreClsName = env->NewStringUTF("android.jni.cts.ClassLoaderStaticNonce");
31   jobject coreClass = env->CallObjectMethod(appLoader, midFindClass, coreClsName);
32   jmethodID midHashCode = env->GetMethodID((jclass)coreClass, "hashCode", "()I");
33   jint hash = env->CallIntMethod(coreClass, midHashCode);
34 
35   return hash;
36 }
37