diff options
author | Gurpreet Singh <gurpreetgs@google.com> | 2022-02-28 15:56:15 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-02-28 15:56:15 +0000 |
commit | d4f23ba5f36bf701ae431d25db61248ddc0a5f16 (patch) | |
tree | e3227fa891f2834ae2ce19bf034c5705cca5b2e6 | |
parent | d2372e853606e7f8fd243546c6a04681d3887520 (diff) | |
parent | d0b28d2beb1683a468cdc70b07d04b5d2f267b2b (diff) | |
download | apex-d4f23ba5f36bf701ae431d25db61248ddc0a5f16.tar.gz |
Merge "Test the JNI support in Apk-in-Apexes." am: d0b28d2beb
Original change: https://android-review.googlesource.com/c/platform/system/apex/+/1996998
Change-Id: I8c57586171879780a2fcfbefd3bc0d73f20fcf49
-rw-r--r-- | tests/Android.bp | 18 | ||||
-rw-r--r-- | tests/app/jni/com_android_tests_apex_app_ApkInApexTests.cpp | 48 | ||||
-rw-r--r-- | tests/app/src/com/android/tests/apex/app/ApkInApexTests.java | 8 | ||||
-rw-r--r-- | tests/src/com/android/tests/apex/host/ApkInApexTests.java | 5 |
4 files changed, 79 insertions, 0 deletions
diff --git a/tests/Android.bp b/tests/Android.bp index f098b4ae..438a799c 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -252,10 +252,28 @@ java_test_host { ], } +cc_test_library { + name: "libApkInApex_jni", + gtest: false, + srcs: [ + "app/jni/com_android_tests_apex_app_ApkInApexTests.cpp", + ], + cflags: [ + "-Wall", + "-Werror", + ], + header_libs: ["jni_headers"], + stl: "c++_shared", + sdk_version: "current", +} + android_test_helper_app { name: "apex_apkinapex_tests_app", manifest: "app/ApkInApexTests_AndroidManifest.xml", srcs: ["app/src/**/ApkInApexTests.java"], + jni_libs: [ + "libApkInApex_jni", + ], static_libs: ["androidx.test.rules", "cts-install-lib", "cts-rollback-lib", "testng"], test_suites: ["general-tests"], } diff --git a/tests/app/jni/com_android_tests_apex_app_ApkInApexTests.cpp b/tests/app/jni/com_android_tests_apex_app_ApkInApexTests.cpp new file mode 100644 index 00000000..a948c7a4 --- /dev/null +++ b/tests/app/jni/com_android_tests_apex_app_ApkInApexTests.cpp @@ -0,0 +1,48 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include <jni.h> + +namespace { + +bool fakeMethod() { return true; } + +jint com_android_tests_apex_app_nativeFakeMethod(JNIEnv * /*env*/, + jclass /*clazz*/) { + return (jboolean)fakeMethod(); +} + +static JNINativeMethod gMethods[] = { + {"nativeFakeMethod", "()Z", + (void *)com_android_tests_apex_app_nativeFakeMethod}}; + +} // anonymous namespace + +int register_android_native_code_test_data(JNIEnv *env) { + jclass clazz = env->FindClass("com/android/tests/apex/app/ApkInApexTests"); + return env->RegisterNatives(clazz, gMethods, + sizeof(gMethods) / sizeof(JNINativeMethod)); +} + +jint JNI_OnLoad(JavaVM *vm, void * /*reserved*/) { + JNIEnv *env = nullptr; + if (vm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) + return JNI_ERR; + if (register_android_native_code_test_data(env)) + return JNI_ERR; + return JNI_VERSION_1_6; +} diff --git a/tests/app/src/com/android/tests/apex/app/ApkInApexTests.java b/tests/app/src/com/android/tests/apex/app/ApkInApexTests.java index e9d1920d..f069378c 100644 --- a/tests/app/src/com/android/tests/apex/app/ApkInApexTests.java +++ b/tests/app/src/com/android/tests/apex/app/ApkInApexTests.java @@ -79,4 +79,12 @@ public class ApkInApexTests { assertThat(pi.requestedPermissions).asList() .contains("android.permission.START_ACTIVITIES_FROM_BACKGROUND"); } + + @Test + public void testJniCalls() throws Exception { + System.loadLibrary("ApkInApex_jni"); + assertThat(nativeFakeMethod()).isTrue(); + } + + private native boolean nativeFakeMethod(); } diff --git a/tests/src/com/android/tests/apex/host/ApkInApexTests.java b/tests/src/com/android/tests/apex/host/ApkInApexTests.java index 386a9da4..8452e413 100644 --- a/tests/src/com/android/tests/apex/host/ApkInApexTests.java +++ b/tests/src/com/android/tests/apex/host/ApkInApexTests.java @@ -96,4 +96,9 @@ public class ApkInApexTests extends BaseHostJUnit4Test { public void testPrivPermissionIsGranted() throws Exception { runPhase("testPrivPermissionIsGranted"); } + + @Test + public void testJniCalls() throws Exception { + runPhase("testJniCalls"); + } } |