Add support for dalvik.annotation.compat.UnsupportedApiUsage
Changes the grey list annotation name to a set and adds a
GreylistAnnotationHandler for each name in the set. Also adds some
extra logging and removes an unused constant.
Test: ensured that generated light grey list did not change
Bug: 117818301
Change-Id: Ib123bd6ae605078b15d0b2e2905bb531d1399924
diff --git a/tools/class2greylist/src/com/android/class2greylist/AnnotationVisitor.java b/tools/class2greylist/src/com/android/class2greylist/AnnotationVisitor.java
index b805b30..57ccbdc 100644
--- a/tools/class2greylist/src/com/android/class2greylist/AnnotationVisitor.java
+++ b/tools/class2greylist/src/com/android/class2greylist/AnnotationVisitor.java
@@ -77,6 +77,9 @@
mStatus.debug("Member has annotation %s for which we have a handler",
a.getAnnotationType());
mAnnotationHandlers.get(a.getAnnotationType()).handleAnnotation(a, context);
+ } else {
+ mStatus.debug("Member has annotation %s for which we do not have a handler",
+ a.getAnnotationType());
}
}
}
diff --git a/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java b/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java
index 53157a3..0a73239 100644
--- a/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java
+++ b/tools/class2greylist/src/com/android/class2greylist/Class2Greylist.java
@@ -18,6 +18,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableMap.Builder;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.google.common.io.Files;
@@ -48,7 +49,10 @@
*/
public class Class2Greylist {
- private static final String GREYLIST_ANNOTATION = "Landroid/annotation/UnsupportedAppUsage;";
+ private static final Set<String> GREYLIST_ANNOTATIONS =
+ ImmutableSet.of(
+ "Landroid/annotation/UnsupportedAppUsage;",
+ "Ldalvik/annotation/compat/UnsupportedAppUsage;");
private static final Set<String> WHITELIST_ANNOTATIONS = ImmutableSet.of();
private final Status mStatus;
@@ -176,10 +180,11 @@
}
private Map<String, AnnotationHandler> createAnnotationHandlers() {
- return ImmutableMap.<String, AnnotationHandler>builder()
- .put(GreylistAnnotationHandler.ANNOTATION_NAME,
- new GreylistAnnotationHandler(
- mStatus, mOutput, mPublicApis, mAllowedSdkVersions))
+ Builder<String, AnnotationHandler> builder = ImmutableMap.builder();
+ GreylistAnnotationHandler greylistAnnotationHandler = new GreylistAnnotationHandler(
+ mStatus, mOutput, mPublicApis, mAllowedSdkVersions);
+ GREYLIST_ANNOTATIONS.forEach(a -> builder.put(a, greylistAnnotationHandler));
+ return builder
.put(CovariantReturnTypeHandler.ANNOTATION_NAME,
new CovariantReturnTypeHandler(mOutput, mPublicApis))
.put(CovariantReturnTypeMultiHandler.ANNOTATION_NAME,
diff --git a/tools/class2greylist/src/com/android/class2greylist/GreylistAnnotationHandler.java b/tools/class2greylist/src/com/android/class2greylist/GreylistAnnotationHandler.java
index 460f2c3..1d377af 100644
--- a/tools/class2greylist/src/com/android/class2greylist/GreylistAnnotationHandler.java
+++ b/tools/class2greylist/src/com/android/class2greylist/GreylistAnnotationHandler.java
@@ -27,8 +27,6 @@
*/
public class GreylistAnnotationHandler implements AnnotationHandler {
- public static final String ANNOTATION_NAME = "Landroid/annotation/UnsupportedAppUsage;";
-
// properties of greylist annotations:
private static final String EXPECTED_SIGNATURE = "expectedSignature";
private static final String MAX_TARGET_SDK = "maxTargetSdk";