1/*
2 * Copyright (C) 2023 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.car.user;
18
19/**
20 *
21 * @hide
22 */
23@SystemApi
24public final class Test1 {
25
26    /** @hide */
27    @AddedInOrBefore(majorVersion = 33)
28    public static final String FIELD_1 = "value1";
29
30    public static final int FIELD_2 = 500;
31
32    /**
33     * @hide
34     */
35    @SystemApi
36
37    @AddedIn(majorVersion = 33)
38    @RequiresApi(api=34)
39    public static final int FIELD_3;
40
41    /**
42     * @hide
43     */
44    @SystemApi
45    @AddedIn(PlatformVersion.TIRAMISU_0)
46    @RequiresApi(api=Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
47    public static final int FIELD_4 = 2;
48
49    /**
50     * @hide
51     */
52    @SystemApi
53    @RequiresApi(34)
54    @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0,
55            minPlatformVersion = ApiRequirements.PlatformVersion.UPSIDE_DOWN_CAKE_0)
56    public static final int FIELD_5 = 2;
57
58    /**
59     * @hide
60     */
61    @SystemApi
62    @AddedInOrBefore(majorVersion = 33, minorVersion = 3)
63    @AddedIn(majorVersion = 33)
64    @AddedIn(value=PlatformVersion.TIRAMISU_0)
65    @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0,
66            minPlatformVersion = ApiRequirements.PlatformVersion.UPSIDE_DOWN_CAKE_0)
67     @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
68     public static final int FIELD_6 = 2;
69
70    /**
71     * @hide
72     */
73    public Test1(@NonNull Car car, @NonNull IBinder service) {
74        this(car, ICarUserService.Stub.asInterface(service),
75                car.getContext().getSystemService(UserManager.class));
76    }
77
78    /**
79     * @hide
80     */
81    @SystemApi
82    @RequiresPermission(anyOf = {android.Manifest.permission.MANAGE_USERS,
83            android.Manifest.permission.INTERACT_ACROSS_USERS})
84    @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0,
85            minPlatformVersion = ApiRequirements.PlatformVersion.UPSIDE_DOWN_CAKE_0)
86    public void method_1(@NonNull UserStopRequest request,
87            @NonNull @CallbackExecutor Executor executor,
88            @NonNull ResultCallback<UserStopResponse> callback) {
89            UserStopResponse response = mService.stopUser(request);
90            executor.execute(() -> callback.onResult(response));
91    }
92
93    private AndroidAsyncFuture<UserSwitchResult> privateMethod(
94            @UserSwitchResult.Status int status) {
95        AndroidFuture<UserSwitchResult> future = new AndroidFuture<>();
96        future.complete(new UserSwitchResult(status, null));
97        return new AndroidAsyncFuture<>(future);
98    }
99
100
101    /**
102     * @hide
103     */
104    @Deprecated
105    @RequiresPermission(anyOf = {android.Manifest.permission.MANAGE_USERS,
106            android.Manifest.permission.CREATE_USERS})
107    @AddedInOrBefore(majorVersion = 33)
108    public void method_2() {
109        Log.w(TAG, "updatePreCreatedUsers(): This method should not be called."
110                + " Pre-created users are no longer supported.");
111    }
112
113    @Deprecated
114    @RequiresPermission(anyOf = {android.Manifest.permission.MANAGE_USERS,
115            android.Manifest.permission.CREATE_USERS})
116    @AddedInOrBefore(majorVersion = 33)
117    @RequiresApi(34)
118    public int method_3() {
119        Log.w(TAG, "updatePreCreatedUsers(): This method should not be called."
120                + " Pre-created users are no longer supported.");
121        return 0;
122    }
123
124    /**
125     * @hide
126     */
127    @SystemApi
128    @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0,
129            minPlatformVersion = ApiRequirements.PlatformVersion.UPSIDE_DOWN_CAKE_0)
130    public int method_4() {
131            assertPlatformVersionAtLeastU();
132            return 0;
133    }
134
135    public static final class UserLifecycleEvent {
136        private final @UserLifecycleEventType int mEventType;
137        private final @UserIdInt int mUserId;
138        private final @UserIdInt int mPreviousUserId;
139
140        /** @hide */
141        public UserLifecycleEvent(@UserLifecycleEventType int eventType,
142                @UserIdInt int from, @UserIdInt int to) {
143            mEventType = eventType;
144            mPreviousUserId = from;
145            mUserId = to;
146        }
147
148        public UserLifecycleEvent(@UserLifecycleEventType int eventType, @UserIdInt int to) {
149            this(eventType, UserManagerHelper.USER_NULL, to);
150        }
151
152        @UserLifecycleEventType
153        @AddedInOrBefore(majorVersion = 33)
154        public int getEventType() {
155            return mEventType;
156        }
157
158       /**
159        * @hide
160        */
161        @SystemApi
162        public interface UserLifecycleListener2 {
163            @AddedInOrBefore(majorVersion = 33)
164            void onEvent(@NonNull UserLifecycleEvent event);
165        }
166    }
167
168    /**
169     * @hide
170     */
171    @SystemApi
172    public interface UserLifecycleListener {
173        @AddedInOrBefore(majorVersion = 33)
174        void onEvent(@NonNull UserLifecycleEvent event);
175    }
176}
177