blob: 1a8b78ff08cf70e095f0b5f8dad76e5a93821c3b [file] [log] [blame]
Jeff Brownd5a5b5a2014-06-05 17:14:39 -07001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.annotation;
18
19import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
20import static java.lang.annotation.ElementType.CONSTRUCTOR;
21import static java.lang.annotation.ElementType.FIELD;
22import static java.lang.annotation.ElementType.METHOD;
23import static java.lang.annotation.ElementType.PACKAGE;
24import static java.lang.annotation.ElementType.TYPE;
25
26import java.lang.annotation.Retention;
27import java.lang.annotation.RetentionPolicy;
28import java.lang.annotation.Target;
29
30/**
31 * Indicates an API is exposed for use by bundled system applications.
32 * <p>
33 * These APIs are not guaranteed to remain consistent release-to-release,
34 * and are not for use by apps linking against the Android SDK.
35 * </p><p>
36 * This annotation should only appear on API that is already marked <pre>@hide</pre>.
37 * </p>
38 *
39 * @hide
40 */
41@Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE, PACKAGE})
Jiyong Park3b0867e2018-01-02 19:02:07 +090042@Retention(RetentionPolicy.RUNTIME)
Jeff Brownd5a5b5a2014-06-05 17:14:39 -070043public @interface SystemApi {
Jiyong Parkabe61582019-12-04 17:17:48 +090044 enum Client {
45 /**
46 * Specifies that the intended clients of a SystemApi are privileged apps.
Makoto Onuki14a1ab12020-01-27 08:38:11 -080047 * This is the default value for {@link #client}.
48 * TODO Update the javadoc according to the final spec
Jiyong Parkabe61582019-12-04 17:17:48 +090049 */
50 PRIVILEGED_APPS,
Jiyong Park5ed5a042019-12-13 14:53:14 +090051
52 /**
Makoto Onuki14a1ab12020-01-27 08:38:11 -080053 * DO NOT USE. Use PRIVILEGED_APPS instead.
54 * (This would provide no further protection over PRIVILEGED_APPS; do not rely on it)
55 * @deprecated Use #PRIVILEGED_APPS instead
Jiyong Park5ed5a042019-12-13 14:53:14 +090056 */
Makoto Onuki14a1ab12020-01-27 08:38:11 -080057 @Deprecated
Jiyong Park5ed5a042019-12-13 14:53:14 +090058 MODULE_APPS,
59
60 /**
61 * Specifies that the intended clients of a SystemApi are modules implemented
62 * as libraries, like the conscrypt.jar in the conscrypt APEX.
Makoto Onuki14a1ab12020-01-27 08:38:11 -080063 * TODO Update the javadoc according to the final spec
Jiyong Park5ed5a042019-12-13 14:53:14 +090064 */
Makoto Onuki14a1ab12020-01-27 08:38:11 -080065 MODULE_LIBRARIES,
66
67 /**
68 * Specifies that the system API is available only in the system server process.
69 * Use this to expose APIs from code loaded by the system server process <em>but</em>
70 * not in <pre>BOOTCLASSPATH</pre>.
71 * TODO(b/148177503) Update "services-stubs" and actually use it.
72 */
73 SYSTEM_SERVER
Jiyong Parkabe61582019-12-04 17:17:48 +090074 }
75
Makoto Onuki14a1ab12020-01-27 08:38:11 -080076 /** @deprecated do not use */
77 @Deprecated
Jiyong Parkabe61582019-12-04 17:17:48 +090078 enum Process {
Makoto Onuki14a1ab12020-01-27 08:38:11 -080079 /** @deprecated do not use */
Jiyong Parkabe61582019-12-04 17:17:48 +090080 ALL,
Jiyong Park5ed5a042019-12-13 14:53:14 +090081
82 /**
Makoto Onuki14a1ab12020-01-27 08:38:11 -080083 * @deprecated use Client#SYSTEM_SERVER instead
Jiyong Park5ed5a042019-12-13 14:53:14 +090084 */
85 SYSTEM_SERVER
Jiyong Parkabe61582019-12-04 17:17:48 +090086 }
87
88 /**
89 * The intended client of this SystemAPI.
90 */
91 Client client() default android.annotation.SystemApi.Client.PRIVILEGED_APPS;
92
93 /**
Makoto Onuki14a1ab12020-01-27 08:38:11 -080094 * @deprecated use Client#SYSTEM_SERVER instead for system_server APIs
Jiyong Parkabe61582019-12-04 17:17:48 +090095 */
Makoto Onuki14a1ab12020-01-27 08:38:11 -080096 @Deprecated
Jiyong Parkabe61582019-12-04 17:17:48 +090097 Process process() default android.annotation.SystemApi.Process.ALL;
Jeff Brownd5a5b5a2014-06-05 17:14:39 -070098}