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

Commit 14a1ab1b authored by Makoto Onuki's avatar Makoto Onuki
Browse files

Preparing to finalize @SystemApi

- MODULE_APPS is considered to be too confusing, we're going to remove it, and
may revive it once ART is able to support runtime protection

- Change SYSTEM_SERVER to a "client".

Test: Build / treehugger
Bug: 148177503
Change-Id: Id847e29ab211c4c009c234a2e1e469575914e12e
parent 5360a52f
Loading
Loading
Loading
Loading
+22 −13
Original line number Original line Diff line number Diff line
@@ -44,35 +44,43 @@ public @interface SystemApi {
    enum Client {
    enum Client {
        /**
        /**
         * Specifies that the intended clients of a SystemApi are privileged apps.
         * Specifies that the intended clients of a SystemApi are privileged apps.
         * This is the default value for {@link #client}. This implies
         * This is the default value for {@link #client}.
         * MODULE_APPS and MODULE_LIBRARIES as well, which means that APIs will also
         * TODO Update the javadoc according to the final spec
         * be available to module apps and jars.
         */
         */
        PRIVILEGED_APPS,
        PRIVILEGED_APPS,


        /**
        /**
         * Specifies that the intended clients of a SystemApi are modules implemented
         * DO NOT USE. Use PRIVILEGED_APPS instead.
         * as apps, like the NetworkStack app. This implies MODULE_LIBRARIES as well,
         * (This would provide no further protection over PRIVILEGED_APPS; do not rely on it)
         * which means that APIs will also be available to module jars.
         * @deprecated Use #PRIVILEGED_APPS instead
         */
         */
        @Deprecated
        MODULE_APPS,
        MODULE_APPS,


        /**
        /**
         * Specifies that the intended clients of a SystemApi are modules implemented
         * Specifies that the intended clients of a SystemApi are modules implemented
         * as libraries, like the conscrypt.jar in the conscrypt APEX.
         * as libraries, like the conscrypt.jar in the conscrypt APEX.
         * TODO Update the javadoc according to the final spec
         */
         */
        MODULE_LIBRARIES
        MODULE_LIBRARIES,
    }


    enum Process {
        /**
        /**
         * Specifies that the SystemAPI is available in every Java processes.
         * Specifies that the system API is available only in the system server process.
         * This is the default value for {@link #process}.
         * Use this to expose APIs from code loaded by the system server process <em>but</em>
         * not in <pre>BOOTCLASSPATH</pre>.
         * TODO(b/148177503) Update "services-stubs" and actually use it.
         */
         */
        SYSTEM_SERVER
    }

    /** @deprecated do not use */
    @Deprecated
    enum Process {
        /** @deprecated do not use */
        ALL,
        ALL,


        /**
        /**
         * Specifies that the SystemAPI is available only in the system server process.
         * @deprecated use Client#SYSTEM_SERVER instead
         */
         */
        SYSTEM_SERVER
        SYSTEM_SERVER
    }
    }
@@ -83,7 +91,8 @@ public @interface SystemApi {
    Client client() default android.annotation.SystemApi.Client.PRIVILEGED_APPS;
    Client client() default android.annotation.SystemApi.Client.PRIVILEGED_APPS;


    /**
    /**
     * The process(es) that this SystemAPI is available
     * @deprecated use Client#SYSTEM_SERVER instead for system_server APIs
     */
     */
    @Deprecated
    Process process() default android.annotation.SystemApi.Process.ALL;
    Process process() default android.annotation.SystemApi.Process.ALL;
}
}