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 android.annotation.NonNull; 20 import android.annotation.SystemApi; 21 import android.car.annotation.ApiRequirements; 22 import android.os.Parcelable; 23 import android.os.UserHandle; 24 25 import com.android.car.internal.util.DataClass; 26 27 /** 28 * User stop request. 29 * 30 * @hide 31 */ 32 @DataClass( 33 genParcelable = true, 34 genConstructor = false, 35 genAidl = true) 36 @SystemApi 37 public final class UserStopRequest implements Parcelable { 38 39 private final @NonNull UserHandle mUserHandle; 40 private final boolean mWithDelayedLocking; 41 private final boolean mForce; 42 43 /** Builder for {@link UserStopRequest}. */ 44 public static final class Builder { 45 private final @NonNull UserHandle mUserHandle; 46 // withDelayedLocking is true by default, as it is the most common use case. 47 private boolean mWithDelayedLocking = true; 48 private boolean mForce; 49 Builder(@onNull UserHandle userHandle)50 public Builder(@NonNull UserHandle userHandle) { 51 com.android.car.internal.util.AnnotationValidations.validate( 52 NonNull.class, /* ignored= */ null, userHandle); 53 mUserHandle = userHandle; 54 } 55 56 /** 57 * Sets the flag to stop the user with delayed locking. 58 * 59 * <p>The flag is {@code true} by default. 60 */ 61 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 62 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) withDelayedLocking(boolean value)63 public @NonNull Builder withDelayedLocking(boolean value) { 64 mWithDelayedLocking = value; 65 return this; 66 } 67 68 /** 69 * Sets the flag to force-stop the user. 70 * 71 * <p>The flag is {@code false} by default. 72 */ 73 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 74 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) setForce()75 public @NonNull Builder setForce() { 76 mForce = true; 77 return this; 78 } 79 80 /** Builds and returns a {@link UserStopRequest}. */ 81 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 82 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) build()83 public @NonNull UserStopRequest build() { 84 return new UserStopRequest(this); 85 } 86 } 87 UserStopRequest(Builder builder)88 private UserStopRequest(Builder builder) { 89 mUserHandle = builder.mUserHandle; 90 mWithDelayedLocking = builder.mWithDelayedLocking; 91 mForce = builder.mForce; 92 } 93 94 95 96 // Code below generated by codegen v1.0.23. 97 // 98 // DO NOT MODIFY! 99 // CHECKSTYLE:OFF Generated code 100 // 101 // To regenerate run: 102 // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/user/UserStopRequest.java 103 // 104 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 105 // Settings > Editor > Code Style > Formatter Control 106 //@formatter:off 107 108 109 @DataClass.Generated.Member 110 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 111 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) getUserHandle()112 public @NonNull UserHandle getUserHandle() { 113 return mUserHandle; 114 } 115 116 @DataClass.Generated.Member 117 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 118 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) isWithDelayedLocking()119 public boolean isWithDelayedLocking() { 120 return mWithDelayedLocking; 121 } 122 123 @DataClass.Generated.Member 124 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 125 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) isForce()126 public boolean isForce() { 127 return mForce; 128 } 129 130 @Override 131 @DataClass.Generated.Member 132 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 133 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) writeToParcel(@onNull android.os.Parcel dest, int flags)134 public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { 135 // You can override field parcelling by defining methods like: 136 // void parcelFieldName(Parcel dest, int flags) { ... } 137 138 byte flg = 0; 139 if (mWithDelayedLocking) flg |= 0x2; 140 if (mForce) flg |= 0x4; 141 dest.writeByte(flg); 142 dest.writeTypedObject(mUserHandle, flags); 143 } 144 145 @Override 146 @DataClass.Generated.Member 147 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 148 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) describeContents()149 public int describeContents() { return 0; } 150 151 /** @hide */ 152 @SuppressWarnings({"unchecked", "RedundantCast"}) 153 @DataClass.Generated.Member UserStopRequest(@onNull android.os.Parcel in)154 /* package-private */ UserStopRequest(@NonNull android.os.Parcel in) { 155 // You can override field unparcelling by defining methods like: 156 // static FieldType unparcelFieldName(Parcel in) { ... } 157 158 byte flg = in.readByte(); 159 boolean withDelayedLocking = (flg & 0x2) != 0; 160 boolean force = (flg & 0x4) != 0; 161 UserHandle userHandle = (UserHandle) in.readTypedObject(UserHandle.CREATOR); 162 163 this.mUserHandle = userHandle; 164 com.android.car.internal.util.AnnotationValidations.validate( 165 NonNull.class, null, mUserHandle); 166 this.mWithDelayedLocking = withDelayedLocking; 167 this.mForce = force; 168 169 // onConstructed(); // You can define this method to get a callback 170 } 171 172 @DataClass.Generated.Member 173 @ApiRequirements(minCarVersion = ApiRequirements.CarVersion.UPSIDE_DOWN_CAKE_0, 174 minPlatformVersion = ApiRequirements.PlatformVersion.TIRAMISU_0) 175 public static final @NonNull Parcelable.Creator<UserStopRequest> CREATOR 176 = new Parcelable.Creator<UserStopRequest>() { 177 @Override 178 public UserStopRequest[] newArray(int size) { 179 return new UserStopRequest[size]; 180 } 181 182 @Override 183 public UserStopRequest createFromParcel(@NonNull android.os.Parcel in) { 184 return new UserStopRequest(in); 185 } 186 }; 187 188 @DataClass.Generated( 189 time = 1679068284217L, 190 codegenVersion = "1.0.23", 191 sourceFile = "packages/services/Car/car-lib/src/android/car/user/UserStopRequest.java", 192 inputSignatures = "private final @android.annotation.NonNull android.os.UserHandle mUserHandle\nprivate final boolean mWithDelayedLocking\nprivate final boolean mForce\nclass UserStopRequest extends java.lang.Object implements [android.os.Parcelable]\nprivate final @android.annotation.NonNull android.os.UserHandle mUserHandle\nprivate boolean mWithDelayedLocking\nprivate boolean mForce\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserStopRequest.Builder withDelayedLocking()\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserStopRequest.Builder setForce()\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserStopRequest build()\nclass Builder extends java.lang.Object implements []\n@com.android.car.internal.util.DataClass(genParcelable=true, genConstructor=false, genAidl=true)") 193 @Deprecated __metadata()194 private void __metadata() {} 195 196 197 //@formatter:on 198 // End of generated code 199 200 } 201