diff --git a/Android.bp b/Android.bp index 7d95b9a1b1fb..486d9bd7dede 100644 --- a/Android.bp +++ b/Android.bp @@ -1123,7 +1123,7 @@ droidstubs { arg_files: [ "core/res/AndroidManifest.xml", ], - args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi ", + args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) ", write_sdk_values: true, } @@ -1434,7 +1434,7 @@ droidstubs { merge_annotations_dirs: [ "metalava-manual", ], - args: " --show-annotation android.annotation.SystemApi", + args: " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\)", } java_library_static { @@ -1456,7 +1456,7 @@ droidstubs { removed_dex_api_filename: "removed-dex.txt", args: metalava_framework_docs_args + " --show-unannotated " + - " --show-annotation android.annotation.SystemApi " + + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) " + " --show-annotation android.annotation.TestApi ", } @@ -1475,7 +1475,7 @@ droidstubs { " --hide ReferencesHidden " + " --hide UnhiddenSystemApi " + " --show-unannotated " + - " --show-annotation android.annotation.SystemApi " + + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) " + " --show-annotation android.annotation.TestApi ", } @@ -1519,7 +1519,7 @@ droidstubs { arg_files: [ "core/res/AndroidManifest.xml", ], - args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi", + args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\)", check_api: { current: { api_file: "api/system-current.txt", diff --git a/core/java/android/annotation/SystemApi.java b/core/java/android/annotation/SystemApi.java index e96ff01d0850..f589cc5704b4 100644 --- a/core/java/android/annotation/SystemApi.java +++ b/core/java/android/annotation/SystemApi.java @@ -41,4 +41,29 @@ import java.lang.annotation.Target; @Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE, PACKAGE}) @Retention(RetentionPolicy.RUNTIME) public @interface SystemApi { + enum Client { + /** + * Specifies that the intended clients of a SystemApi are privileged apps. + * This is the default value for {@link #client}. + */ + PRIVILEGED_APPS, + } + + enum Process { + /** + * Specifies that the SystemAPI is available in every Java processes. + * This is the default value for {@link #process}. + */ + ALL, + } + + /** + * The intended client of this SystemAPI. + */ + Client client() default android.annotation.SystemApi.Client.PRIVILEGED_APPS; + + /** + * The process(es) that this SystemAPI is available + */ + Process process() default android.annotation.SystemApi.Process.ALL; } diff --git a/media/Android.bp b/media/Android.bp index a768b81731eb..d7cd054ddc3a 100644 --- a/media/Android.bp +++ b/media/Android.bp @@ -66,7 +66,7 @@ metalava_updatable_media_args = " --error UnhiddenSystemApi " + "--hide MissingPermission --hide BroadcastBehavior " + "--hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol " + "--hide SdkConstant --hide HiddenTypeParameter --hide Todo --hide Typo " + - "--hide HiddenTypedefConstant --show-annotation android.annotation.SystemApi " + "--hide HiddenTypedefConstant --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) " droidstubs { name: "updatable-media-stubs", diff --git a/services/Android.bp b/services/Android.bp index 5290ebb85f3a..72c13747e011 100644 --- a/services/Android.bp +++ b/services/Android.bp @@ -110,7 +110,7 @@ droidstubs { srcs: [":services-sources"], installable: false, // TODO: remove the --hide options below - args: " --show-single-annotation android.annotation.SystemApi" + + args: " --show-single-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.INTERNAL,process=android.annotation.SystemApi.Process.SYSTEM_SERVER\\)" + " --hide-annotation android.annotation.Hide" + " --hide-package com.google.android.startop.iorap" + " --hide ReferencesHidden" +