Test VMDebug.allowHiddenApiReflectionFrom
This patch adds tests of VMDebug.allowHiddenApiReflectionFrom() which
allows to exempt a single class from reflection/JNI hidden API checks
when an app is debuggable.
We test that it works by adding a new killswitch test where the
mechanism is exempting DexMemberChecker.
We test that the mechanism cannot be misused by non-debuggable apps by
extending the hidden API blacklist test to attempt to call the method
but expecting for it to fail.
Bug: 64382372
Test: (cd cts/tests/signature ; ./runSignatureTests.sh)
Change-Id: I1dd8496ecb67e992b6281591b3a9d12df4d6bd56
diff --git a/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidTest.xml b/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidTest.xml
new file mode 100644
index 0000000..3424d0b
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidTest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 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.
+-->
+<configuration description="Config for CTS Hidden API Signature test cases">
+ <option name="test-suite-tag" value="cts" />
+ <option name="config-descriptor:metadata" key="component" value="systems" />
+ <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+ <!-- Enable the killswitch before running the test, then disable it afterwards. The test
+ is intended to verify the behaviour when the killswitch is enabled. -->
+ <option name="run-command" value="settings put global hidden_api_blacklist_exemptions \*" />
+ <option name="teardown-command" value="settings delete global hidden_api_blacklist_exemptions" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="test-file-name" value="CtsHiddenApiKillswitchWildcardTestCases.apk" />
+ </target_preparer>
+ <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+ <option name="package" value="android.signature.cts.api.killswitch_wildcard" />
+ <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
+ <option name="class" value="android.signature.cts.api.WildcardKillswitchTest" />
+ <option name="runtime-hint" value="60s" />
+ </test>
+</configuration>