Switch android.test and junit classes to use UnsupportedAppUsage

The UnsupportedAppUsage annotations could not be added directly to the
java files in src/ as they have to be built against the current api
which does not include the annotation. Instead this uses the same
technique as used for libcore/ojluni files and adds the annotations to
stub files (in hiddenapi/src) which are built as part of the
android.test.base-hiddenapi target. That target is added to a special
whitelist in build/soong/java/config/config.go which causes the
hiddenapi information to be extracted from the target.

Also, updates the preupload check to prevent anymore entries being
added to the config/hiddenapi-greylist.txt for android.test or junit
classes.

Bug: 73711752
Test: m cts-hiddenapi_flags-csv and check that it contained the
        correct entries even though they had been removed from
	config/hiddenapi-greylist.txt
Change-Id: Ifaf15d2751f54cb03f8402b866a0ee4da7acc4d2
This commit is contained in:
Paul Duffin 2019-02-15 12:58:26 +00:00
parent 3e15c9f9ba
commit 997fa46197
7 changed files with 220 additions and 6 deletions

View File

@ -1556,9 +1556,6 @@ Landroid/telephony/SmsCbMessage;->getServiceCategory()I
Landroid/telephony/SmsCbMessage;->isCmasMessage()Z
Landroid/telephony/SmsCbMessage;->isEmergencyMessage()Z
Landroid/telephony/TelephonyManager$MultiSimVariants;->values()[Landroid/telephony/TelephonyManager$MultiSimVariants;
Landroid/test/AndroidTestCase;->getTestContext()Landroid/content/Context;
Landroid/test/AndroidTestCase;->setTestContext(Landroid/content/Context;)V
Landroid/test/InstrumentationTestCase;->runMethod(Ljava/lang/reflect/Method;I)V
Landroid/util/Singleton;-><init>()V
Landroid/util/XmlPullAttributes;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
Landroid/util/XmlPullAttributes;->mParser:Lorg/xmlpull/v1/XmlPullParser;
@ -4596,9 +4593,6 @@ Lgov/nist/javax/sip/address/SipUri;->setParameter(Ljava/lang/String;Ljava/lang/S
Lgov/nist/javax/sip/address/SipUri;->setUserParam(Ljava/lang/String;)V
Lgov/nist/javax/sip/parser/URLParser;-><init>(Ljava/lang/String;)V
Lgov/nist/javax/sip/parser/URLParser;->sipURL(Z)Lgov/nist/javax/sip/address/SipUri;
Ljunit/framework/TestCase;->fName:Ljava/lang/String;
Ljunit/framework/TestSuite;->isPublicTestMethod(Ljava/lang/reflect/Method;)Z
Ljunit/framework/TestSuite;->isTestMethod(Ljava/lang/reflect/Method;)Z
Lorg/apache/xalan/extensions/ExpressionContext;->getContextNode()Lorg/w3c/dom/Node;
Lorg/apache/xalan/extensions/ExpressionContext;->getErrorListener()Ljavax/xml/transform/ErrorListener;
Lorg/apache/xalan/extensions/ExpressionContext;->getVariableOrParam(Lorg/apache/xml/utils/QName;)Lorg/apache/xpath/objects/XObject;

View File

@ -0,0 +1,29 @@
//
// Copyright (C) 2019 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.
//
// Provided solely to contribute information about which hidden parts of the android.test.base
// library are used by apps. The source files are stubs of the actual files in ../src which use the
// UnsupportedAppUsage annotation to tag those methods that are accessible via the hiddenapi.
// Relies on the convention that modules with name <x>-hiddenapi provide hiddenapi information for
// module <x> that is on the bootclasspath.
java_library {
name: "android.test.base-hiddenapi",
compile_dex: true,
srcs: ["src/**/*.java"],
libs: ["android.test.base"],
}

View File

@ -0,0 +1,46 @@
/*
* Copyright (C) 2019 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.
*/
package android.test;
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import junit.framework.TestCase;
/**
* @deprecated Stub only
*/
@SuppressWarnings({ "unchecked", "deprecation", "all" })
@Deprecated
public class AndroidTestCase extends TestCase {
/**
* Stub only
*/
@UnsupportedAppUsage
public void setTestContext(Context context) {
throw new RuntimeException("Stub!");
}
/**
* Stub only
*/
@UnsupportedAppUsage
public Context getTestContext() {
throw new RuntimeException("Stub!");
}
}

View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2019 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.
*/
package android.test;
import android.annotation.UnsupportedAppUsage;
import junit.framework.TestCase;
import java.lang.reflect.Method;
/**
* @deprecated Stub only
*/
@SuppressWarnings({ "unchecked", "deprecation", "all" })
@Deprecated
public class InstrumentationTestCase extends TestCase {
/**
* Stub only
*/
@UnsupportedAppUsage
private void runMethod(Method runMethod, int tolerance) throws Throwable {
throw new RuntimeException("Stub!");
}
}

View File

@ -0,0 +1,46 @@
/*
* Copyright (C) 2019 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.
*/
package junit.framework;
import android.annotation.UnsupportedAppUsage;
/**
* Stub only
*/
@SuppressWarnings({ "unchecked", "deprecation", "all" })
public abstract class TestCase extends Assert implements Test {
/**
* the name of the test case
*/
@UnsupportedAppUsage
private String fName;
/**
* Stub only
*/
public int countTestCases() {
throw new RuntimeException("Stub!");
}
/**
* Stub only
*/
public void run(TestResult result) {
throw new RuntimeException("Stub!");
}
}

View File

@ -0,0 +1,58 @@
/*
* Copyright (C) 2019 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.
*/
package junit.framework;
import android.annotation.UnsupportedAppUsage;
import java.lang.reflect.Method;
/**
* Stub only
*/
@SuppressWarnings({ "unchecked", "deprecation", "all" })
public class TestSuite implements Test {
/**
* Stub only
*/
@UnsupportedAppUsage
private boolean isPublicTestMethod(Method m) {
throw new RuntimeException("Stub!");
}
/**
* Stub only
*/
@UnsupportedAppUsage
private boolean isTestMethod(Method m) {
throw new RuntimeException("Stub!");
}
/**
* Stub only
*/
public int countTestCases() {
throw new RuntimeException("Stub!");
}
/**
* Stub only
*/
public void run(TestResult result) {
throw new RuntimeException("Stub!");
}
}

View File

@ -9,6 +9,7 @@ LOCAL_DIR="$( dirname ${BASH_SOURCE} )"
LIBCORE_PACKAGES="\
android.icu \
android.system \
android.test \
com.android.bouncycastle \
com.android.conscrypt \
com.android.i18n.phonenumbers \
@ -17,6 +18,7 @@ LIBCORE_PACKAGES="\
dalvik \
java \
javax \
junit \
libcore \
org.apache.harmony \
org.json \