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 
17 package android.car.user;
18 
19 import static com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport.BOILERPLATE_CODE;
20 
21 import android.annotation.IntDef;
22 import android.annotation.NonNull;
23 import android.annotation.SystemApi;
24 import android.os.Parcelable;
25 
26 import com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport;
27 import com.android.car.internal.util.DataClass;
28 
29 import java.lang.annotation.Retention;
30 import java.lang.annotation.RetentionPolicy;
31 
32 /**
33  * User stop response.
34  *
35  * @hide
36  */
37 @DataClass(
38         genAidl = true,
39         genToString = true,
40         genHiddenConstructor = true,
41         genHiddenConstDefs = true)
42 @SystemApi
43 public final class UserStopResponse implements Parcelable, OperationResult {
44 
45     /**
46      * When user stop is successful.
47      */
48     @Status
49     public static final int STATUS_SUCCESSFUL = CommonResults.STATUS_SUCCESSFUL;
50 
51     /**
52      * When user stop fails.
53      */
54     @Status
55     public static final int STATUS_ANDROID_FAILURE = CommonResults.STATUS_ANDROID_FAILURE;
56 
57     /**
58      * When user to stop doesn't exits.
59      */
60     @Status
61     public static final int STATUS_USER_DOES_NOT_EXIST = CommonResults.LAST_COMMON_STATUS + 1;
62 
63     /**
64      * When user to stop is the system user.
65      */
66     @Status
67     public static final int STATUS_FAILURE_SYSTEM_USER = CommonResults.LAST_COMMON_STATUS + 2;
68 
69     /**
70      * When user to stop is the current user.
71      */
72     @Status
73     public static final int STATUS_FAILURE_CURRENT_USER = CommonResults.LAST_COMMON_STATUS + 3;
74 
75     /**
76      * Gets the user switch result status.
77      *
78      * @return either {@link UserStopResponse#STATUS_SUCCESSFUL},
79      * {@link UserStopResponse#STATUS_ANDROID_FAILURE},
80      * {@link UserStopResponse#STATUS_USER_DOES_NOT_EXIST},
81      * {@link UserStopResponse#STATUS_FAILURE_SYSTEM_USER}, or
82      * {@link UserStopResponse#STATUS_FAILURE_CURRENT_USER}.
83      */
84     private final @Status int mStatus;
85 
86     /**
87      * Checks if the {@code status} represents a success status.
88      *
89      * @param status to check
90      * @return true for a success status
91      */
isSuccess(@tatus int status)92     public static boolean isSuccess(@Status int status) {
93         return status == STATUS_SUCCESSFUL;
94     }
95 
96     @Override
isSuccess()97     public boolean isSuccess() {
98         return isSuccess(mStatus);
99     }
100 
101 
102 
103     // Code below generated by codegen v1.0.23.
104     //
105     // DO NOT MODIFY!
106     // CHECKSTYLE:OFF Generated code
107     //
108     // To regenerate run:
109     // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/user/UserStopResponse.java
110     //
111     // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
112     //   Settings > Editor > Code Style > Formatter Control
113     //@formatter:off
114 
115 
116     /** @hide */
117     @IntDef(prefix = "STATUS_", value = {
118         STATUS_SUCCESSFUL,
119         STATUS_ANDROID_FAILURE,
120         STATUS_USER_DOES_NOT_EXIST,
121         STATUS_FAILURE_SYSTEM_USER,
122         STATUS_FAILURE_CURRENT_USER
123     })
124     @Retention(RetentionPolicy.SOURCE)
125     @DataClass.Generated.Member
126     public @interface Status {}
127 
128     /** @hide */
129     @DataClass.Generated.Member
130     @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE)
131     @SystemApi
statusToString(@tatus int value)132     public static @NonNull String statusToString(@Status int value) {
133         switch (value) {
134             case STATUS_SUCCESSFUL:
135                     return "STATUS_SUCCESSFUL";
136             case STATUS_ANDROID_FAILURE:
137                     return "STATUS_ANDROID_FAILURE";
138             case STATUS_USER_DOES_NOT_EXIST:
139                     return "STATUS_USER_DOES_NOT_EXIST";
140             case STATUS_FAILURE_SYSTEM_USER:
141                     return "STATUS_FAILURE_SYSTEM_USER";
142             case STATUS_FAILURE_CURRENT_USER:
143                     return "STATUS_FAILURE_CURRENT_USER";
144             default: return Integer.toHexString(value);
145         }
146     }
147 
148     /**
149      * Creates a new UserStopResponse.
150      *
151      * @param status
152      *   Gets the user switch result status.
153      *
154      *   @return either {@link UserStopResponse#STATUS_SUCCESSFUL},
155      *   {@link UserStopResponse#STATUS_ANDROID_FAILURE},
156      *   {@link UserStopResponse#STATUS_USER_DOES_NOT_EXIST},
157      *   {@link UserStopResponse#STATUS_FAILURE_SYSTEM_USER}, or
158      *   {@link UserStopResponse#STATUS_FAILURE_CURRENT_USER}.
159      * @hide
160      */
161     @DataClass.Generated.Member
UserStopResponse( @tatus int status)162     public UserStopResponse(
163             @Status int status) {
164         this.mStatus = status;
165 
166         if (!(mStatus == STATUS_SUCCESSFUL)
167                 && !(mStatus == STATUS_ANDROID_FAILURE)
168                 && !(mStatus == STATUS_USER_DOES_NOT_EXIST)
169                 && !(mStatus == STATUS_FAILURE_SYSTEM_USER)
170                 && !(mStatus == STATUS_FAILURE_CURRENT_USER)) {
171             throw new java.lang.IllegalArgumentException(
172                     "status was " + mStatus + " but must be one of: "
173                             + "STATUS_SUCCESSFUL(" + STATUS_SUCCESSFUL + "), "
174                             + "STATUS_ANDROID_FAILURE(" + STATUS_ANDROID_FAILURE + "), "
175                             + "STATUS_USER_DOES_NOT_EXIST(" + STATUS_USER_DOES_NOT_EXIST + "), "
176                             + "STATUS_FAILURE_SYSTEM_USER(" + STATUS_FAILURE_SYSTEM_USER + "), "
177                             + "STATUS_FAILURE_CURRENT_USER(" + STATUS_FAILURE_CURRENT_USER + ")");
178         }
179 
180 
181         // onConstructed(); // You can define this method to get a callback
182     }
183 
184     /**
185      * Gets the user switch result status.
186      *
187      * @return either {@link UserStopResponse#STATUS_SUCCESSFUL},
188      * {@link UserStopResponse#STATUS_ANDROID_FAILURE},
189      * {@link UserStopResponse#STATUS_USER_DOES_NOT_EXIST},
190      * {@link UserStopResponse#STATUS_FAILURE_SYSTEM_USER}, or
191      * {@link UserStopResponse#STATUS_FAILURE_CURRENT_USER}.
192      */
193     @DataClass.Generated.Member
getStatus()194     public @Status int getStatus() {
195         return mStatus;
196     }
197 
198     @Override
199     @DataClass.Generated.Member
toString()200     public String toString() {
201         // You can override field toString logic by defining methods like:
202         // String fieldNameToString() { ... }
203 
204         return "UserStopResponse { " +
205                 "status = " + statusToString(mStatus) +
206         " }";
207     }
208 
209     @Override
210     @DataClass.Generated.Member
211     @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE)
writeToParcel(@ndroid.annotation.NonNull android.os.Parcel dest, int flags)212     public void writeToParcel(@android.annotation.NonNull android.os.Parcel dest, int flags) {
213         // You can override field parcelling by defining methods like:
214         // void parcelFieldName(Parcel dest, int flags) { ... }
215 
216         dest.writeInt(mStatus);
217     }
218 
219     @Override
220     @DataClass.Generated.Member
221     @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE)
describeContents()222     public int describeContents() { return 0; }
223 
224     /** @hide */
225     @SuppressWarnings({"unchecked", "RedundantCast"})
226     @DataClass.Generated.Member
UserStopResponse(@ndroid.annotation.NonNull android.os.Parcel in)227     /* package-private */ UserStopResponse(@android.annotation.NonNull android.os.Parcel in) {
228         // You can override field unparcelling by defining methods like:
229         // static FieldType unparcelFieldName(Parcel in) { ... }
230 
231         int status = in.readInt();
232 
233         this.mStatus = status;
234 
235         if (!(mStatus == STATUS_SUCCESSFUL)
236                 && !(mStatus == STATUS_ANDROID_FAILURE)
237                 && !(mStatus == STATUS_USER_DOES_NOT_EXIST)
238                 && !(mStatus == STATUS_FAILURE_SYSTEM_USER)
239                 && !(mStatus == STATUS_FAILURE_CURRENT_USER)) {
240             throw new java.lang.IllegalArgumentException(
241                     "status was " + mStatus + " but must be one of: "
242                             + "STATUS_SUCCESSFUL(" + STATUS_SUCCESSFUL + "), "
243                             + "STATUS_ANDROID_FAILURE(" + STATUS_ANDROID_FAILURE + "), "
244                             + "STATUS_USER_DOES_NOT_EXIST(" + STATUS_USER_DOES_NOT_EXIST + "), "
245                             + "STATUS_FAILURE_SYSTEM_USER(" + STATUS_FAILURE_SYSTEM_USER + "), "
246                             + "STATUS_FAILURE_CURRENT_USER(" + STATUS_FAILURE_CURRENT_USER + ")");
247         }
248 
249 
250         // onConstructed(); // You can define this method to get a callback
251     }
252 
253     @DataClass.Generated.Member
254     public static final @android.annotation.NonNull Parcelable.Creator<UserStopResponse> CREATOR
255             = new Parcelable.Creator<UserStopResponse>() {
256         @Override
257         public UserStopResponse[] newArray(int size) {
258             return new UserStopResponse[size];
259         }
260 
261         @Override
262         public UserStopResponse createFromParcel(@android.annotation.NonNull android.os.Parcel in) {
263             return new UserStopResponse(in);
264         }
265     };
266 
267     @DataClass.Generated(
268             time = 1676571819851L,
269             codegenVersion = "1.0.23",
270             sourceFile = "packages/services/Car/car-lib/src/android/car/user/UserStopResponse.java",
271             inputSignatures = "public static final @android.car.user.UserStopResponse.Status @android.car.annotation.ApiRequirements int STATUS_SUCCESSFUL\npublic static final @android.car.user.UserStopResponse.Status @android.car.annotation.ApiRequirements int STATUS_ANDROID_FAILURE\npublic static final @android.car.user.UserStopResponse.Status @android.car.annotation.ApiRequirements int STATUS_USER_DOES_NOT_EXIST\npublic static final @android.car.user.UserStopResponse.Status @android.car.annotation.ApiRequirements int STATUS_FAILURE_SYSTEM_USER\npublic static final @android.car.user.UserStopResponse.Status @android.car.annotation.ApiRequirements int STATUS_FAILURE_CURRENT_USER\nprivate final @android.car.user.UserStopResponse.Status int mStatus\npublic static @android.car.annotation.ApiRequirements boolean isSuccess(int)\npublic @java.lang.Override @android.car.annotation.ApiRequirements boolean isSuccess()\nclass UserStopResponse extends java.lang.Object implements [android.os.Parcelable, android.car.user.OperationResult]\n@com.android.car.internal.util.DataClass(genAidl=true, genToString=true, genHiddenConstructor=true, genHiddenConstDefs=true)")
272     @Deprecated
__metadata()273     private void __metadata() {}
274 
275 
276     //@formatter:on
277     // End of generated code
278 
279 }
280