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

Commit 5ed5a043 authored by Jiyong Park's avatar Jiyong Park
Browse files

Add more enums for the client and process attributes of SystemApi

For the client attribute, we have
- MODULE_APPS for representing APKs implementing modules which are
considered part of the platform
- MODULE_LIBRARIES for representing jars inside modules.

For the process attribute, we have
- SYSTEM_SERVER for representing the system_server process.

For example, @SystemApi(client=MODULE_LIBRARIES,process=ALL) actually
means that the API is meant to be available for classes in the
bootclasspath but not to the classes from the app classloader.

Bug: 140202860
Test: m

Exempt-From-Owner-Approval: cherry-picked from internal

Merged-In: Iba6a564a0967e4d109164849ee6d6500d46469de
(cherry picked from commit 88d5e494)
Change-Id: Iba6a564a0967e4d109164849ee6d6500d46469de
parent abe61584
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -44,9 +44,24 @@ public @interface SystemApi {
    enum Client {
        /**
         * Specifies that the intended clients of a SystemApi are privileged apps.
         * This is the default value for {@link #client}.
         * This is the default value for {@link #client}. This implies
         * MODULE_APPS and MODULE_LIBRARIES as well, which means that APIs will also
         * be available to module apps and jars.
         */
        PRIVILEGED_APPS,

        /**
         * Specifies that the intended clients of a SystemApi are modules implemented
         * as apps, like the NetworkStack app. This implies MODULE_LIBRARIES as well,
         * which means that APIs will also be available to module jars.
         */
        MODULE_APPS,

        /**
         * Specifies that the intended clients of a SystemApi are modules implemented
         * as libraries, like the conscrypt.jar in the conscrypt APEX.
         */
        MODULE_LIBRARIES
    }

    enum Process {
@@ -55,6 +70,11 @@ public @interface SystemApi {
         * This is the default value for {@link #process}.
         */
        ALL,

        /**
         * Specifies that the SystemAPI is available only in the system server process.
         */
        SYSTEM_SERVER
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ droidstubs {
    srcs: [":services-sources"],
    installable: false,
    // TODO: remove the --hide options below
    args: " --show-single-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.INTERNAL,process=android.annotation.SystemApi.Process.SYSTEM_SERVER\\)" +
    args: " --show-single-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.MODULE_LIBRARIES,process=android.annotation.SystemApi.Process.SYSTEM_SERVER\\)" +
        " --hide-annotation android.annotation.Hide" +
        " --hide-package com.google.android.startop.iorap" +
        " --hide ReferencesHidden" +