diff options
12 files changed, 31 insertions, 33 deletions
diff --git a/core/java/com/android/internal/util/ArrayUtils.java b/core/java/com/android/internal/util/ArrayUtils.java index 686e1fc2c34e..9d0be4bf8ee6 100644 --- a/core/java/com/android/internal/util/ArrayUtils.java +++ b/core/java/com/android/internal/util/ArrayUtils.java @@ -40,6 +40,7 @@ import java.util.function.IntFunction; /** * Static utility methods for arrays that aren't already included in {@link java.util.Arrays}. */ +@android.ravenwood.annotation.RavenwoodKeepWholeClass public class ArrayUtils { private static final int CACHE_SIZE = 73; private static Object[] sCache = new Object[CACHE_SIZE]; @@ -48,35 +49,43 @@ public class ArrayUtils { private ArrayUtils() { /* cannot be instantiated */ } + @android.ravenwood.annotation.RavenwoodReplace public static byte[] newUnpaddedByteArray(int minLen) { return (byte[])VMRuntime.getRuntime().newUnpaddedArray(byte.class, minLen); } + @android.ravenwood.annotation.RavenwoodReplace public static char[] newUnpaddedCharArray(int minLen) { return (char[])VMRuntime.getRuntime().newUnpaddedArray(char.class, minLen); } + @android.ravenwood.annotation.RavenwoodReplace @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public static int[] newUnpaddedIntArray(int minLen) { return (int[])VMRuntime.getRuntime().newUnpaddedArray(int.class, minLen); } + @android.ravenwood.annotation.RavenwoodReplace public static boolean[] newUnpaddedBooleanArray(int minLen) { return (boolean[])VMRuntime.getRuntime().newUnpaddedArray(boolean.class, minLen); } + @android.ravenwood.annotation.RavenwoodReplace public static long[] newUnpaddedLongArray(int minLen) { return (long[])VMRuntime.getRuntime().newUnpaddedArray(long.class, minLen); } + @android.ravenwood.annotation.RavenwoodReplace public static float[] newUnpaddedFloatArray(int minLen) { return (float[])VMRuntime.getRuntime().newUnpaddedArray(float.class, minLen); } + @android.ravenwood.annotation.RavenwoodReplace public static Object[] newUnpaddedObjectArray(int minLen) { return (Object[])VMRuntime.getRuntime().newUnpaddedArray(Object.class, minLen); } + @android.ravenwood.annotation.RavenwoodReplace @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @SuppressWarnings("unchecked") public static <T> T[] newUnpaddedArray(Class<T> clazz, int minLen) { diff --git a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodClassLoadHook.java b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodClassLoadHook.java index 76964a72dd3e..7dc197e6bdfd 100644 --- a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodClassLoadHook.java +++ b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodClassLoadHook.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.ravenwood.annotations; +package android.ravenwood.annotation; import static java.lang.annotation.ElementType.TYPE; diff --git a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodKeep.java b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodKeep.java index ddf65dc2c5ac..1d315798d647 100644 --- a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodKeep.java +++ b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodKeep.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.ravenwood.annotations; +package android.ravenwood.annotation; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; diff --git a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodWholeClassKeep.java b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodKeepWholeClass.java index d7ef7f55921b..d2c77c1b8566 100644 --- a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodWholeClassKeep.java +++ b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodKeepWholeClass.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.ravenwood.annotations; +package android.ravenwood.annotation; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; @@ -35,5 +35,5 @@ import java.lang.annotation.Target; */ @Target({TYPE, FIELD, METHOD, CONSTRUCTOR}) @Retention(RetentionPolicy.CLASS) -public @interface RavenwoodWholeClassKeep { +public @interface RavenwoodKeepWholeClass { } diff --git a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodNativeSubstitutionClass.java b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodNativeSubstitutionClass.java index 8cdc1ff91081..4b9cf85e16fa 100644 --- a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodNativeSubstitutionClass.java +++ b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodNativeSubstitutionClass.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.ravenwood.annotations; +package android.ravenwood.annotation; import static java.lang.annotation.ElementType.TYPE; diff --git a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodRemove.java b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodRemove.java index 759c918c4a66..6727327c99be 100644 --- a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodRemove.java +++ b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodRemove.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.ravenwood.annotations; +package android.ravenwood.annotation; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; diff --git a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodSubstitute.java b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodReplace.java index 5a0a8f4f5aae..a920f63152fb 100644 --- a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodSubstitute.java +++ b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodReplace.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.ravenwood.annotations; +package android.ravenwood.annotation; import static java.lang.annotation.ElementType.METHOD; @@ -31,8 +31,5 @@ import java.lang.annotation.Target; */ @Target({METHOD}) @Retention(RetentionPolicy.CLASS) -public @interface RavenwoodSubstitute { - // TODO We should add "_host" as default. We're not doing it yet, because extractign the default - // value with ASM doesn't seem trivial. (? not sure.) - String suffix(); +public @interface RavenwoodReplace { } diff --git a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodThrow.java b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodThrow.java index de3dd0465c59..a234a9b6fc7c 100644 --- a/ravenwood/annotations-src/android/ravenwood/annotations/RavenwoodThrow.java +++ b/ravenwood/annotations-src/android/ravenwood/annotation/RavenwoodThrow.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.ravenwood.annotations; +package android.ravenwood.annotation; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.METHOD; diff --git a/ravenwood/framework-minus-apex-ravenwood-policies.txt b/ravenwood/framework-minus-apex-ravenwood-policies.txt index 48c0a2de8f86..48d5722fed8e 100644 --- a/ravenwood/framework-minus-apex-ravenwood-policies.txt +++ b/ravenwood/framework-minus-apex-ravenwood-policies.txt @@ -76,16 +76,6 @@ class android.util.Patterns stubclass class android.util.UtilConfig stubclass # Internals -class com.android.internal.util.ArrayUtils stubclass - method newUnpaddedByteArray (I)[B @newUnpaddedByteArray$ravenwood - method newUnpaddedCharArray (I)[C @newUnpaddedCharArray$ravenwood - method newUnpaddedIntArray (I)[I @newUnpaddedIntArray$ravenwood - method newUnpaddedBooleanArray (I)[Z @newUnpaddedBooleanArray$ravenwood - method newUnpaddedLongArray (I)[J @newUnpaddedLongArray$ravenwood - method newUnpaddedFloatArray (I)[F @newUnpaddedFloatArray$ravenwood - method newUnpaddedObjectArray (I)[Ljava/lang/Object; @newUnpaddedObjectArray$ravenwood - method newUnpaddedArray (Ljava/lang/Class;I)[Ljava/lang/Object; @newUnpaddedArray$ravenwood - class com.android.internal.util.GrowingArrayUtils stubclass class com.android.internal.util.LineBreakBufferedWriter stubclass class com.android.internal.util.Preconditions stubclass diff --git a/ravenwood/ravenwood-annotation-allowed-classes.txt b/ravenwood/ravenwood-annotation-allowed-classes.txt index 0811f90a504c..c6dd6e39607e 100644 --- a/ravenwood/ravenwood-annotation-allowed-classes.txt +++ b/ravenwood/ravenwood-annotation-allowed-classes.txt @@ -1,2 +1,3 @@ # Only classes listed here can use the Ravenwood annotations. +com.android.internal.util.ArrayUtils diff --git a/ravenwood/ravenwood-standard-options.txt b/ravenwood/ravenwood-standard-options.txt index 6e1384f368b8..4b07ef6e35a8 100644 --- a/ravenwood/ravenwood-standard-options.txt +++ b/ravenwood/ravenwood-standard-options.txt @@ -16,22 +16,22 @@ # Standard annotations. # Note, each line is a single argument, so we need newlines after each `--xxx-annotation`. --keep-annotation - android.ravenwood.annotations.RavenwoodKeep + android.ravenwood.annotation.RavenwoodKeep --keep-class-annotation - android.ravenwood.annotations.RavenwoodWholeClassKeep + android.ravenwood.annotation.RavenwoodKeepWholeClass --throw-annotation - android.ravenwood.annotations.RavenwoodThrow + android.ravenwood.annotation.RavenwoodThrow --remove-annotation - android.ravenwood.annotations.RavenwoodRemove + android.ravenwood.annotation.RavenwoodRemove --substitute-annotation - android.ravenwood.annotations.RavenwoodSubstitute + android.ravenwood.annotation.RavenwoodReplace --native-substitute-annotation - android.ravenwood.annotations.RavenwoodNativeSubstitutionClass + android.ravenwood.annotation.RavenwoodNativeSubstitutionClass --class-load-hook-annotation - android.ravenwood.annotations.RavenwoodClassLoadHook + android.ravenwood.annotation.RavenwoodClassLoadHook diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt index eda676135a49..ee67f0f9a72b 100644 --- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt +++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/AnnotationBasedFilter.kt @@ -377,7 +377,7 @@ class AnnotationBasedFilter( throw HostStubGenInternalException("Policy $policy shouldn't show up here") } - val suffix = getAnnotationField(an, "suffix") ?: return@let + val suffix = getAnnotationField(an, "suffix", false) ?: "\$ravenwood" val renameFrom = mn.name + suffix val renameTo = mn.name @@ -405,10 +405,11 @@ class AnnotationBasedFilter( /** * Return the (String) value of 'value' parameter from an annotation. */ - private fun getAnnotationField(an: AnnotationNode, name: String): String? { + private fun getAnnotationField(an: AnnotationNode, name: String, + required: Boolean = true): String? { try { val suffix = findAnnotationValueAsString(an, name) - if (suffix == null) { + if (suffix == null && required) { errors.onErrorFound("Annotation \"${an.desc}\" must have field $name") } return suffix @@ -438,4 +439,4 @@ class AnnotationBasedFilter( return ret } } -}
\ No newline at end of file +} |