Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 119afc06 authored by Jiyong Park's avatar Jiyong Park
Browse files

SystemApi is parameterized

We have decided to reuse the existing annotation @SystemApi for all Java
APIs regardless of whether they are for apps or platform internal
modules. This was because introducing new annotation types every time
when we have to create new API surfaces will only increase the confusion
without giving much benefit.

Instead, to differenciate the different API surfaces of @SystemApi, the
annotation type is parameterized. Specifically, it has to axises.

client: specifies the intended client of the API.

process: specifies the process(es) that the API is available.

The default for client and process are priv-apps and all, respectively,
which corresponds to the today's @SystemApi for privileged apps like
GMS.

Bug: 140202860
Test: m
Change-Id: I3305b71e22970e80db95f3daf3d7713603c7d68d
parent 74798fd9
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -1172,7 +1172,7 @@ droidstubs {
    arg_files: [
    arg_files: [
        "core/res/AndroidManifest.xml",
        "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,
    write_sdk_values: true,
}
}


@@ -1483,7 +1483,7 @@ droidstubs {
    merge_annotations_dirs: [
    merge_annotations_dirs: [
        "metalava-manual",
        "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 {
java_library_static {
@@ -1505,7 +1505,7 @@ droidstubs {
    removed_dex_api_filename: "removed-dex.txt",
    removed_dex_api_filename: "removed-dex.txt",
    args: metalava_framework_docs_args +
    args: metalava_framework_docs_args +
        " --show-unannotated " +
        " --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 ",
        " --show-annotation android.annotation.TestApi ",
}
}


@@ -1524,7 +1524,7 @@ droidstubs {
        " --hide ReferencesHidden " +
        " --hide ReferencesHidden " +
        " --hide UnhiddenSystemApi " +
        " --hide UnhiddenSystemApi " +
        " --show-unannotated " +
        " --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 ",
        " --show-annotation android.annotation.TestApi ",
}
}


@@ -1568,7 +1568,7 @@ droidstubs {
    arg_files: [
    arg_files: [
        "core/res/AndroidManifest.xml",
        "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: {
    check_api: {
        current: {
        current: {
            api_file: "api/system-current.txt",
            api_file: "api/system-current.txt",
+25 −0
Original line number Original line Diff line number Diff line
@@ -41,4 +41,29 @@ import java.lang.annotation.Target;
@Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE, PACKAGE})
@Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE, PACKAGE})
@Retention(RetentionPolicy.RUNTIME)
@Retention(RetentionPolicy.RUNTIME)
public @interface SystemApi {
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;
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -82,7 +82,7 @@ metalava_updatable_media_args = " --error UnhiddenSystemApi " +
    "--hide MissingPermission --hide BroadcastBehavior " +
    "--hide MissingPermission --hide BroadcastBehavior " +
    "--hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol " +
    "--hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol " +
    "--hide SdkConstant --hide HiddenTypeParameter --hide Todo --hide Typo " +
    "--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 {
droidstubs {
    name: "updatable-media-stubs",
    name: "updatable-media-stubs",
+1 −1
Original line number Original line Diff line number Diff line
@@ -111,7 +111,7 @@ droidstubs {
    srcs: [":services-sources"],
    srcs: [":services-sources"],
    installable: false,
    installable: false,
    // TODO: remove the --hide options below
    // 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-annotation android.annotation.Hide" +
        " --hide-package com.google.android.startop.iorap" +
        " --hide-package com.google.android.startop.iorap" +
        " --hide ReferencesHidden" +
        " --hide ReferencesHidden" +