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.NonNull; 22 import android.annotation.SystemApi; 23 import android.os.Parcelable; 24 25 import com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport; 26 import com.android.car.internal.util.DataClass; 27 28 /** 29 * User start response. 30 * 31 * @hide 32 */ 33 @DataClass( 34 genAidl = true, 35 genToString = true, 36 genHiddenConstructor = true, 37 genHiddenConstDefs = true) 38 @SystemApi 39 public final class UserStartResponse implements Parcelable, OperationResult { 40 41 /** 42 * When user start is successful. 43 * 44 * @hide 45 */ 46 @Status 47 @SystemApi 48 public static final int STATUS_SUCCESSFUL = CommonResults.STATUS_SUCCESSFUL; 49 50 /** 51 * When user start failed. 52 * 53 * @hide 54 */ 55 @Status 56 @SystemApi 57 public static final int STATUS_ANDROID_FAILURE = CommonResults.STATUS_ANDROID_FAILURE; 58 59 /** 60 * When user start failed due to an old platform version. 61 * 62 * @hide 63 */ 64 @Status 65 @SystemApi 66 public static final int STATUS_UNSUPPORTED_PLATFORM_FAILURE = 67 CommonResults.STATUS_UNSUPPORTED_PLATFORM_FAILURE; 68 69 /** 70 * When user to start is same as current user. 71 * 72 * @hide 73 */ 74 @Status 75 @SystemApi 76 public static final int STATUS_SUCCESSFUL_USER_IS_CURRENT_USER = 77 CommonResults.LAST_COMMON_STATUS + 1; 78 79 /** 80 * When user to start does not exist. 81 * 82 * @hide 83 */ 84 @Status 85 @SystemApi 86 public static final int STATUS_USER_DOES_NOT_EXIST = CommonResults.LAST_COMMON_STATUS + 2; 87 88 /** 89 * When user to start is already visible on the specified display. 90 * 91 * @hide 92 */ 93 @Status 94 @SystemApi 95 public static final int STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY = 96 CommonResults.LAST_COMMON_STATUS + 3; 97 98 /** 99 * When the specified display is invalid or already assigned to another user. 100 * 101 * @hide 102 */ 103 @Status 104 @SystemApi 105 public static final int STATUS_DISPLAY_INVALID = CommonResults.LAST_COMMON_STATUS + 4; 106 107 /** 108 * When the specified display is invalid or already assigned to another user. 109 * 110 * @hide 111 */ 112 @Status 113 @SystemApi 114 public static final int STATUS_DISPLAY_UNAVAILABLE = CommonResults.LAST_COMMON_STATUS + 5; 115 116 /** 117 * When the specified user is invalid (e.g. the system user). 118 * 119 * @hide 120 */ 121 @Status 122 @SystemApi 123 public static final int STATUS_USER_INVALID = CommonResults.LAST_COMMON_STATUS + 6; 124 125 /** 126 * When the specified user is already assigned to another display. 127 * 128 * @hide 129 */ 130 @Status 131 @SystemApi 132 public static final int 133 STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY = CommonResults.LAST_COMMON_STATUS + 7; 134 135 /** 136 * Gets the user start result status. 137 * 138 * @return either {@link UserStartResponse#STATUS_SUCCESSFUL}, 139 * {@link UserStartResponse#STATUS_SUCCESSFUL_USER_IS_CURRENT_USER}, 140 * {@link UserStartResponse#STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY}, 141 * {@link UserStartResponse#STATUS_ANDROID_FAILURE}, 142 * {@link UserStartResponse#STATUS_UNSUPPORTED_PLATFORM_FAILURE}, 143 * {@link UserStartResponse#STATUS_USER_DOES_NOT_EXIST}, 144 * {@link UserStartResponse#STATUS_DISPLAY_INVALID}, 145 * {@link UserStartResponse#STATUS_DISPLAY_UNAVAILABLE}, 146 * {@link UserStartResponse#STATUS_USER_INVALID}, or 147 * {@link UserStartResponse#STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY}. 148 */ 149 private final @Status int mStatus; 150 151 @Override isSuccess()152 public boolean isSuccess() { 153 return mStatus == STATUS_SUCCESSFUL || mStatus == STATUS_SUCCESSFUL_USER_IS_CURRENT_USER 154 || mStatus == STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY; 155 } 156 157 158 159 // Code below generated by codegen v1.0.23. 160 // 161 // DO NOT MODIFY! 162 // CHECKSTYLE:OFF Generated code 163 // 164 // To regenerate run: 165 // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/user/UserStartResponse.java 166 // 167 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 168 // Settings > Editor > Code Style > Formatter Control 169 //@formatter:off 170 171 172 /** @hide */ 173 @android.annotation.IntDef(prefix = "STATUS_", value = { 174 STATUS_SUCCESSFUL, 175 STATUS_ANDROID_FAILURE, 176 STATUS_UNSUPPORTED_PLATFORM_FAILURE, 177 STATUS_SUCCESSFUL_USER_IS_CURRENT_USER, 178 STATUS_USER_DOES_NOT_EXIST, 179 STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY, 180 STATUS_DISPLAY_INVALID, 181 STATUS_DISPLAY_UNAVAILABLE, 182 STATUS_USER_INVALID, 183 STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY 184 }) 185 @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) 186 @DataClass.Generated.Member 187 public @interface Status {} 188 189 /** @hide */ 190 @DataClass.Generated.Member 191 @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE) 192 @SystemApi statusToString(@tatus int value)193 public static @NonNull String statusToString(@Status int value) { 194 switch (value) { 195 case STATUS_SUCCESSFUL: 196 return "STATUS_SUCCESSFUL"; 197 case STATUS_ANDROID_FAILURE: 198 return "STATUS_ANDROID_FAILURE"; 199 case STATUS_UNSUPPORTED_PLATFORM_FAILURE: 200 return "STATUS_UNSUPPORTED_PLATFORM_FAILURE"; 201 case STATUS_SUCCESSFUL_USER_IS_CURRENT_USER: 202 return "STATUS_SUCCESSFUL_USER_IS_CURRENT_USER"; 203 case STATUS_USER_DOES_NOT_EXIST: 204 return "STATUS_USER_DOES_NOT_EXIST"; 205 case STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY: 206 return "STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY"; 207 case STATUS_DISPLAY_INVALID: 208 return "STATUS_DISPLAY_INVALID"; 209 case STATUS_DISPLAY_UNAVAILABLE: 210 return "STATUS_DISPLAY_UNAVAILABLE"; 211 case STATUS_USER_INVALID: 212 return "STATUS_USER_INVALID"; 213 case STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY: 214 return "STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY"; 215 default: return Integer.toHexString(value); 216 } 217 } 218 219 /** 220 * Creates a new UserStartResponse. 221 * 222 * @param status 223 * Gets the user start result status. 224 * 225 * @return either {@link UserStartResponse#STATUS_SUCCESSFUL}, 226 * {@link UserStartResponse#STATUS_SUCCESSFUL_USER_IS_CURRENT_USER}, 227 * {@link UserStartResponse#STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY}, 228 * {@link UserStartResponse#STATUS_ANDROID_FAILURE}, 229 * {@link UserStartResponse#STATUS_UNSUPPORTED_PLATFORM_FAILURE}, 230 * {@link UserStartResponse#STATUS_USER_DOES_NOT_EXIST}, 231 * {@link UserStartResponse#STATUS_DISPLAY_INVALID}, 232 * {@link UserStartResponse#STATUS_DISPLAY_UNAVAILABLE}, 233 * {@link UserStartResponse#STATUS_USER_INVALID}, or 234 * {@link UserStartResponse#STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY}. 235 * @hide 236 */ 237 @DataClass.Generated.Member UserStartResponse( @tatus int status)238 public UserStartResponse( 239 @Status int status) { 240 this.mStatus = status; 241 242 if (!(mStatus == STATUS_SUCCESSFUL) 243 && !(mStatus == STATUS_ANDROID_FAILURE) 244 && !(mStatus == STATUS_UNSUPPORTED_PLATFORM_FAILURE) 245 && !(mStatus == STATUS_SUCCESSFUL_USER_IS_CURRENT_USER) 246 && !(mStatus == STATUS_USER_DOES_NOT_EXIST) 247 && !(mStatus == STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY) 248 && !(mStatus == STATUS_DISPLAY_INVALID) 249 && !(mStatus == STATUS_DISPLAY_UNAVAILABLE) 250 && !(mStatus == STATUS_USER_INVALID) 251 && !(mStatus == STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY)) { 252 throw new java.lang.IllegalArgumentException( 253 "status was " + mStatus + " but must be one of: " 254 + "STATUS_SUCCESSFUL(" + STATUS_SUCCESSFUL + "), " 255 + "STATUS_ANDROID_FAILURE(" + STATUS_ANDROID_FAILURE + "), " 256 + "STATUS_UNSUPPORTED_PLATFORM_FAILURE(" + STATUS_UNSUPPORTED_PLATFORM_FAILURE + "), " 257 + "STATUS_SUCCESSFUL_USER_IS_CURRENT_USER(" + STATUS_SUCCESSFUL_USER_IS_CURRENT_USER + "), " 258 + "STATUS_USER_DOES_NOT_EXIST(" + STATUS_USER_DOES_NOT_EXIST + "), " 259 + "STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY(" + STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY + "), " 260 + "STATUS_DISPLAY_INVALID(" + STATUS_DISPLAY_INVALID + "), " 261 + "STATUS_DISPLAY_UNAVAILABLE(" + STATUS_DISPLAY_UNAVAILABLE + "), " 262 + "STATUS_USER_INVALID(" + STATUS_USER_INVALID + "), " 263 + "STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY(" + STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY + ")"); 264 } 265 266 267 // onConstructed(); // You can define this method to get a callback 268 } 269 270 /** 271 * Gets the user start result status. 272 * 273 * @return either {@link UserStartResponse#STATUS_SUCCESSFUL}, 274 * {@link UserStartResponse#STATUS_SUCCESSFUL_USER_IS_CURRENT_USER}, 275 * {@link UserStartResponse#STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY}, 276 * {@link UserStartResponse#STATUS_ANDROID_FAILURE}, 277 * {@link UserStartResponse#STATUS_UNSUPPORTED_PLATFORM_FAILURE}, 278 * {@link UserStartResponse#STATUS_USER_DOES_NOT_EXIST}, 279 * {@link UserStartResponse#STATUS_DISPLAY_INVALID}, 280 * {@link UserStartResponse#STATUS_DISPLAY_UNAVAILABLE}, 281 * {@link UserStartResponse#STATUS_USER_INVALID}, or 282 * {@link UserStartResponse#STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY}. 283 */ 284 @DataClass.Generated.Member getStatus()285 public @Status int getStatus() { 286 return mStatus; 287 } 288 289 @Override 290 @DataClass.Generated.Member toString()291 public String toString() { 292 // You can override field toString logic by defining methods like: 293 // String fieldNameToString() { ... } 294 295 return "UserStartResponse { " + 296 "status = " + statusToString(mStatus) + 297 " }"; 298 } 299 300 @Override 301 @DataClass.Generated.Member 302 @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE) writeToParcel(@onNull android.os.Parcel dest, int flags)303 public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { 304 // You can override field parcelling by defining methods like: 305 // void parcelFieldName(Parcel dest, int flags) { ... } 306 307 dest.writeInt(mStatus); 308 } 309 310 @Override 311 @DataClass.Generated.Member 312 @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE) describeContents()313 public int describeContents() { return 0; } 314 315 /** @hide */ 316 @SuppressWarnings({"unchecked", "RedundantCast"}) 317 @DataClass.Generated.Member UserStartResponse(@onNull android.os.Parcel in)318 /* package-private */ UserStartResponse(@NonNull android.os.Parcel in) { 319 // You can override field unparcelling by defining methods like: 320 // static FieldType unparcelFieldName(Parcel in) { ... } 321 322 int status = in.readInt(); 323 324 this.mStatus = status; 325 326 if (!(mStatus == STATUS_SUCCESSFUL) 327 && !(mStatus == STATUS_ANDROID_FAILURE) 328 && !(mStatus == STATUS_UNSUPPORTED_PLATFORM_FAILURE) 329 && !(mStatus == STATUS_SUCCESSFUL_USER_IS_CURRENT_USER) 330 && !(mStatus == STATUS_USER_DOES_NOT_EXIST) 331 && !(mStatus == STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY) 332 && !(mStatus == STATUS_DISPLAY_INVALID) 333 && !(mStatus == STATUS_DISPLAY_UNAVAILABLE) 334 && !(mStatus == STATUS_USER_INVALID) 335 && !(mStatus == STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY)) { 336 throw new java.lang.IllegalArgumentException( 337 "status was " + mStatus + " but must be one of: " 338 + "STATUS_SUCCESSFUL(" + STATUS_SUCCESSFUL + "), " 339 + "STATUS_ANDROID_FAILURE(" + STATUS_ANDROID_FAILURE + "), " 340 + "STATUS_UNSUPPORTED_PLATFORM_FAILURE(" + STATUS_UNSUPPORTED_PLATFORM_FAILURE + "), " 341 + "STATUS_SUCCESSFUL_USER_IS_CURRENT_USER(" + STATUS_SUCCESSFUL_USER_IS_CURRENT_USER + "), " 342 + "STATUS_USER_DOES_NOT_EXIST(" + STATUS_USER_DOES_NOT_EXIST + "), " 343 + "STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY(" + STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY + "), " 344 + "STATUS_DISPLAY_INVALID(" + STATUS_DISPLAY_INVALID + "), " 345 + "STATUS_DISPLAY_UNAVAILABLE(" + STATUS_DISPLAY_UNAVAILABLE + "), " 346 + "STATUS_USER_INVALID(" + STATUS_USER_INVALID + "), " 347 + "STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY(" + STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY + ")"); 348 } 349 350 351 // onConstructed(); // You can define this method to get a callback 352 } 353 354 @DataClass.Generated.Member 355 public static final @NonNull Parcelable.Creator<UserStartResponse> CREATOR 356 = new Parcelable.Creator<UserStartResponse>() { 357 @Override 358 public UserStartResponse[] newArray(int size) { 359 return new UserStartResponse[size]; 360 } 361 362 @Override 363 public UserStartResponse createFromParcel(@NonNull android.os.Parcel in) { 364 return new UserStartResponse(in); 365 } 366 }; 367 368 @DataClass.Generated( 369 time = 1676508014542L, 370 codegenVersion = "1.0.23", 371 sourceFile = "packages/services/Car/car-lib/src/android/car/user/UserStartResponse.java", 372 inputSignatures = "public static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_SUCCESSFUL\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_ANDROID_FAILURE\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_UNSUPPORTED_PLATFORM_FAILURE\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_SUCCESSFUL_USER_IS_CURRENT_USER\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_USER_DOES_NOT_EXIST\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_SUCCESSFUL_USER_ALREADY_VISIBLE_ON_DISPLAY\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_DISPLAY_INVALID\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_DISPLAY_UNAVAILABLE\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_USER_INVALID\npublic static final @android.car.user.UserStartResponse.Status @android.car.annotation.ApiRequirements @android.annotation.SystemApi int STATUS_USER_ASSIGNED_TO_ANOTHER_DISPLAY\nprivate final @android.car.user.UserStartResponse.Status int mStatus\npublic @java.lang.Override @android.car.annotation.ApiRequirements boolean isSuccess()\nclass UserStartResponse 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)") 373 @Deprecated __metadata()374 private void __metadata() {} 375 376 377 //@formatter:on 378 // End of generated code 379 380 } 381