Merge "Fix 674-hiddenapi run-test on AOSP host"
diff --git a/test/674-hiddenapi/hiddenapi.cc b/test/674-hiddenapi/hiddenapi.cc
index 8dfb402..3dc2789 100644
--- a/test/674-hiddenapi/hiddenapi.cc
+++ b/test/674-hiddenapi/hiddenapi.cc
@@ -82,6 +82,14 @@
return int_index;
}
+extern "C" JNIEXPORT void JNICALL Java_Main_setWhitelistAll(JNIEnv*, jclass, jboolean value) {
+ std::vector<std::string> exemptions;
+ if (value != JNI_FALSE) {
+ exemptions.push_back("L");
+ }
+ Runtime::Current()->SetHiddenApiExemptions(exemptions);
+}
+
static jobject NewInstance(JNIEnv* env, jclass klass) {
jmethodID constructor = env->GetMethodID(klass, "<init>", "()V");
if (constructor == nullptr) {
diff --git a/test/674-hiddenapi/src-art/Main.java b/test/674-hiddenapi/src-art/Main.java
index 190f4ac..d6a8c6d 100644
--- a/test/674-hiddenapi/src-art/Main.java
+++ b/test/674-hiddenapi/src-art/Main.java
@@ -119,9 +119,8 @@
// loaded by their parent class loader.
String nativeLibCopy = createNativeLibCopy(parentDomain, childDomain, whitelistAllApis);
- if (whitelistAllApis) {
- VMRuntime.getRuntime().setHiddenApiExemptions(new String[]{"L"});
- }
+ // Set exemptions to "L" (matches all classes) if we are testing whitelisting.
+ setWhitelistAll(whitelistAllApis);
// Invoke ChildClass.runTest
Class<?> childClass = Class.forName("ChildClass", true, childLoader);
@@ -129,8 +128,6 @@
"runTest", String.class, Integer.TYPE, Integer.TYPE, Boolean.TYPE);
runTestMethod.invoke(null, nativeLibCopy, parentDomain.ordinal(), childDomain.ordinal(),
whitelistAllApis);
-
- VMRuntime.getRuntime().setHiddenApiExemptions(new String[0]);
}
// Routine which tries to figure out the absolute path of our native library.
@@ -203,4 +200,5 @@
private static native int appendToBootClassLoader(String dexPath, boolean isCorePlatform);
private static native void setDexDomain(int index, boolean isCorePlatform);
private static native void init();
+ private static native void setWhitelistAll(boolean value);
}