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.hardware.fingerprint; 18 19 import static android.hardware.fingerprint.FingerprintManager.SENSOR_ID_ANY; 20 21 import android.annotation.NonNull; 22 import android.annotation.Nullable; 23 import android.hardware.biometrics.AuthenticateOptions; 24 import android.os.Parcelable; 25 26 import com.android.internal.util.DataClass; 27 28 /** 29 * Additional options when requesting Fingerprint authentication or detection. 30 * 31 * @hide 32 */ 33 @DataClass( 34 genParcelable = true, 35 genAidl = true, 36 genBuilder = true, 37 genSetters = true, 38 genEqualsHashCode = true 39 ) 40 public final class FingerprintAuthenticateOptions implements AuthenticateOptions, Parcelable { 41 42 /** The user id for this operation. */ 43 private final int mUserId; defaultUserId()44 private static int defaultUserId() { 45 return 0; 46 } 47 48 /** The sensor id for this operation. */ 49 private int mSensorId; defaultSensorId()50 private static int defaultSensorId() { 51 return SENSOR_ID_ANY; 52 } 53 54 /** If enrollment state should be ignored. */ 55 private final boolean mIgnoreEnrollmentState; defaultIgnoreEnrollmentState()56 private static boolean defaultIgnoreEnrollmentState() { 57 return false; 58 } 59 60 /** The current doze state of the device. */ 61 @AuthenticateOptions.DisplayState 62 private final int mDisplayState; defaultDisplayState()63 private static int defaultDisplayState() { 64 return DISPLAY_STATE_UNKNOWN; 65 } 66 67 /** 68 * The package name for that operation that should be used for 69 * {@link android.app.AppOpsManager} verification. 70 * 71 * This option may be overridden by the FingerprintManager using the caller's context. 72 */ 73 @NonNull private String mOpPackageName; defaultOpPackageName()74 private static String defaultOpPackageName() { 75 return ""; 76 } 77 78 /** 79 * The attribution tag, if any. 80 * 81 * This option may be overridden by the FingerprintManager using the caller's context. 82 */ 83 @Nullable private String mAttributionTag; defaultAttributionTag()84 private static String defaultAttributionTag() { 85 return null; 86 } 87 88 89 90 // Code below generated by codegen v1.0.23. 91 // 92 // DO NOT MODIFY! 93 // CHECKSTYLE:OFF Generated code 94 // 95 // To regenerate run: 96 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/hardware/fingerprint/FingerprintAuthenticateOptions.java 97 // 98 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 99 // Settings > Editor > Code Style > Formatter Control 100 //@formatter:off 101 102 103 @DataClass.Generated.Member FingerprintAuthenticateOptions( int userId, int sensorId, boolean ignoreEnrollmentState, @AuthenticateOptions.DisplayState int displayState, @NonNull String opPackageName, @Nullable String attributionTag)104 /* package-private */ FingerprintAuthenticateOptions( 105 int userId, 106 int sensorId, 107 boolean ignoreEnrollmentState, 108 @AuthenticateOptions.DisplayState int displayState, 109 @NonNull String opPackageName, 110 @Nullable String attributionTag) { 111 this.mUserId = userId; 112 this.mSensorId = sensorId; 113 this.mIgnoreEnrollmentState = ignoreEnrollmentState; 114 this.mDisplayState = displayState; 115 com.android.internal.util.AnnotationValidations.validate( 116 AuthenticateOptions.DisplayState.class, null, mDisplayState); 117 this.mOpPackageName = opPackageName; 118 com.android.internal.util.AnnotationValidations.validate( 119 NonNull.class, null, mOpPackageName); 120 this.mAttributionTag = attributionTag; 121 122 // onConstructed(); // You can define this method to get a callback 123 } 124 125 /** 126 * The user id for this operation. 127 */ 128 @DataClass.Generated.Member getUserId()129 public int getUserId() { 130 return mUserId; 131 } 132 133 /** 134 * The sensor id for this operation. 135 */ 136 @DataClass.Generated.Member getSensorId()137 public int getSensorId() { 138 return mSensorId; 139 } 140 141 /** 142 * If enrollment state should be ignored. 143 */ 144 @DataClass.Generated.Member isIgnoreEnrollmentState()145 public boolean isIgnoreEnrollmentState() { 146 return mIgnoreEnrollmentState; 147 } 148 149 /** 150 * The current doze state of the device. 151 */ 152 @DataClass.Generated.Member getDisplayState()153 public @AuthenticateOptions.DisplayState int getDisplayState() { 154 return mDisplayState; 155 } 156 157 /** 158 * The package name for that operation that should be used for 159 * {@link android.app.AppOpsManager} verification. 160 * 161 * This option may be overridden by the FingerprintManager using the caller's context. 162 */ 163 @DataClass.Generated.Member getOpPackageName()164 public @NonNull String getOpPackageName() { 165 return mOpPackageName; 166 } 167 168 /** 169 * The attribution tag, if any. 170 * 171 * This option may be overridden by the FingerprintManager using the caller's context. 172 */ 173 @DataClass.Generated.Member getAttributionTag()174 public @Nullable String getAttributionTag() { 175 return mAttributionTag; 176 } 177 178 /** 179 * The sensor id for this operation. 180 */ 181 @DataClass.Generated.Member setSensorId( int value)182 public @NonNull FingerprintAuthenticateOptions setSensorId( int value) { 183 mSensorId = value; 184 return this; 185 } 186 187 /** 188 * The package name for that operation that should be used for 189 * {@link android.app.AppOpsManager} verification. 190 * 191 * This option may be overridden by the FingerprintManager using the caller's context. 192 */ 193 @DataClass.Generated.Member setOpPackageName(@onNull String value)194 public @NonNull FingerprintAuthenticateOptions setOpPackageName(@NonNull String value) { 195 mOpPackageName = value; 196 com.android.internal.util.AnnotationValidations.validate( 197 NonNull.class, null, mOpPackageName); 198 return this; 199 } 200 201 /** 202 * The attribution tag, if any. 203 * 204 * This option may be overridden by the FingerprintManager using the caller's context. 205 */ 206 @DataClass.Generated.Member setAttributionTag(@onNull String value)207 public @NonNull FingerprintAuthenticateOptions setAttributionTag(@NonNull String value) { 208 mAttributionTag = value; 209 return this; 210 } 211 212 @Override 213 @DataClass.Generated.Member equals(@ullable Object o)214 public boolean equals(@Nullable Object o) { 215 // You can override field equality logic by defining either of the methods like: 216 // boolean fieldNameEquals(FingerprintAuthenticateOptions other) { ... } 217 // boolean fieldNameEquals(FieldType otherValue) { ... } 218 219 if (this == o) return true; 220 if (o == null || getClass() != o.getClass()) return false; 221 @SuppressWarnings("unchecked") 222 FingerprintAuthenticateOptions that = (FingerprintAuthenticateOptions) o; 223 //noinspection PointlessBooleanExpression 224 return true 225 && mUserId == that.mUserId 226 && mSensorId == that.mSensorId 227 && mIgnoreEnrollmentState == that.mIgnoreEnrollmentState 228 && mDisplayState == that.mDisplayState 229 && java.util.Objects.equals(mOpPackageName, that.mOpPackageName) 230 && java.util.Objects.equals(mAttributionTag, that.mAttributionTag); 231 } 232 233 @Override 234 @DataClass.Generated.Member hashCode()235 public int hashCode() { 236 // You can override field hashCode logic by defining methods like: 237 // int fieldNameHashCode() { ... } 238 239 int _hash = 1; 240 _hash = 31 * _hash + mUserId; 241 _hash = 31 * _hash + mSensorId; 242 _hash = 31 * _hash + Boolean.hashCode(mIgnoreEnrollmentState); 243 _hash = 31 * _hash + mDisplayState; 244 _hash = 31 * _hash + java.util.Objects.hashCode(mOpPackageName); 245 _hash = 31 * _hash + java.util.Objects.hashCode(mAttributionTag); 246 return _hash; 247 } 248 249 @Override 250 @DataClass.Generated.Member writeToParcel(@onNull android.os.Parcel dest, int flags)251 public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { 252 // You can override field parcelling by defining methods like: 253 // void parcelFieldName(Parcel dest, int flags) { ... } 254 255 byte flg = 0; 256 if (mIgnoreEnrollmentState) flg |= 0x4; 257 if (mAttributionTag != null) flg |= 0x20; 258 dest.writeByte(flg); 259 dest.writeInt(mUserId); 260 dest.writeInt(mSensorId); 261 dest.writeInt(mDisplayState); 262 dest.writeString(mOpPackageName); 263 if (mAttributionTag != null) dest.writeString(mAttributionTag); 264 } 265 266 @Override 267 @DataClass.Generated.Member describeContents()268 public int describeContents() { return 0; } 269 270 /** @hide */ 271 @SuppressWarnings({"unchecked", "RedundantCast"}) 272 @DataClass.Generated.Member FingerprintAuthenticateOptions(@onNull android.os.Parcel in)273 /* package-private */ FingerprintAuthenticateOptions(@NonNull android.os.Parcel in) { 274 // You can override field unparcelling by defining methods like: 275 // static FieldType unparcelFieldName(Parcel in) { ... } 276 277 byte flg = in.readByte(); 278 boolean ignoreEnrollmentState = (flg & 0x4) != 0; 279 int userId = in.readInt(); 280 int sensorId = in.readInt(); 281 int displayState = in.readInt(); 282 String opPackageName = in.readString(); 283 String attributionTag = (flg & 0x20) == 0 ? null : in.readString(); 284 285 this.mUserId = userId; 286 this.mSensorId = sensorId; 287 this.mIgnoreEnrollmentState = ignoreEnrollmentState; 288 this.mDisplayState = displayState; 289 com.android.internal.util.AnnotationValidations.validate( 290 AuthenticateOptions.DisplayState.class, null, mDisplayState); 291 this.mOpPackageName = opPackageName; 292 com.android.internal.util.AnnotationValidations.validate( 293 NonNull.class, null, mOpPackageName); 294 this.mAttributionTag = attributionTag; 295 296 // onConstructed(); // You can define this method to get a callback 297 } 298 299 @DataClass.Generated.Member 300 public static final @NonNull Parcelable.Creator<FingerprintAuthenticateOptions> CREATOR 301 = new Parcelable.Creator<FingerprintAuthenticateOptions>() { 302 @Override 303 public FingerprintAuthenticateOptions[] newArray(int size) { 304 return new FingerprintAuthenticateOptions[size]; 305 } 306 307 @Override 308 public FingerprintAuthenticateOptions createFromParcel(@NonNull android.os.Parcel in) { 309 return new FingerprintAuthenticateOptions(in); 310 } 311 }; 312 313 /** 314 * A builder for {@link FingerprintAuthenticateOptions} 315 */ 316 @SuppressWarnings("WeakerAccess") 317 @DataClass.Generated.Member 318 public static final class Builder { 319 320 private int mUserId; 321 private int mSensorId; 322 private boolean mIgnoreEnrollmentState; 323 private @AuthenticateOptions.DisplayState int mDisplayState; 324 private @NonNull String mOpPackageName; 325 private @Nullable String mAttributionTag; 326 327 private long mBuilderFieldsSet = 0L; 328 Builder()329 public Builder() { 330 } 331 332 /** 333 * The user id for this operation. 334 */ 335 @DataClass.Generated.Member setUserId(int value)336 public @NonNull Builder setUserId(int value) { 337 checkNotUsed(); 338 mBuilderFieldsSet |= 0x1; 339 mUserId = value; 340 return this; 341 } 342 343 /** 344 * The sensor id for this operation. 345 */ 346 @DataClass.Generated.Member setSensorId(int value)347 public @NonNull Builder setSensorId(int value) { 348 checkNotUsed(); 349 mBuilderFieldsSet |= 0x2; 350 mSensorId = value; 351 return this; 352 } 353 354 /** 355 * If enrollment state should be ignored. 356 */ 357 @DataClass.Generated.Member setIgnoreEnrollmentState(boolean value)358 public @NonNull Builder setIgnoreEnrollmentState(boolean value) { 359 checkNotUsed(); 360 mBuilderFieldsSet |= 0x4; 361 mIgnoreEnrollmentState = value; 362 return this; 363 } 364 365 /** 366 * The current doze state of the device. 367 */ 368 @DataClass.Generated.Member setDisplayState(@uthenticateOptions.DisplayState int value)369 public @NonNull Builder setDisplayState(@AuthenticateOptions.DisplayState int value) { 370 checkNotUsed(); 371 mBuilderFieldsSet |= 0x8; 372 mDisplayState = value; 373 return this; 374 } 375 376 /** 377 * The package name for that operation that should be used for 378 * {@link android.app.AppOpsManager} verification. 379 * 380 * This option may be overridden by the FingerprintManager using the caller's context. 381 */ 382 @DataClass.Generated.Member setOpPackageName(@onNull String value)383 public @NonNull Builder setOpPackageName(@NonNull String value) { 384 checkNotUsed(); 385 mBuilderFieldsSet |= 0x10; 386 mOpPackageName = value; 387 return this; 388 } 389 390 /** 391 * The attribution tag, if any. 392 * 393 * This option may be overridden by the FingerprintManager using the caller's context. 394 */ 395 @DataClass.Generated.Member setAttributionTag(@onNull String value)396 public @NonNull Builder setAttributionTag(@NonNull String value) { 397 checkNotUsed(); 398 mBuilderFieldsSet |= 0x20; 399 mAttributionTag = value; 400 return this; 401 } 402 403 /** Builds the instance. This builder should not be touched after calling this! */ build()404 public @NonNull FingerprintAuthenticateOptions build() { 405 checkNotUsed(); 406 mBuilderFieldsSet |= 0x40; // Mark builder used 407 408 if ((mBuilderFieldsSet & 0x1) == 0) { 409 mUserId = defaultUserId(); 410 } 411 if ((mBuilderFieldsSet & 0x2) == 0) { 412 mSensorId = defaultSensorId(); 413 } 414 if ((mBuilderFieldsSet & 0x4) == 0) { 415 mIgnoreEnrollmentState = defaultIgnoreEnrollmentState(); 416 } 417 if ((mBuilderFieldsSet & 0x8) == 0) { 418 mDisplayState = defaultDisplayState(); 419 } 420 if ((mBuilderFieldsSet & 0x10) == 0) { 421 mOpPackageName = defaultOpPackageName(); 422 } 423 if ((mBuilderFieldsSet & 0x20) == 0) { 424 mAttributionTag = defaultAttributionTag(); 425 } 426 FingerprintAuthenticateOptions o = new FingerprintAuthenticateOptions( 427 mUserId, 428 mSensorId, 429 mIgnoreEnrollmentState, 430 mDisplayState, 431 mOpPackageName, 432 mAttributionTag); 433 return o; 434 } 435 checkNotUsed()436 private void checkNotUsed() { 437 if ((mBuilderFieldsSet & 0x40) != 0) { 438 throw new IllegalStateException( 439 "This Builder should not be reused. Use a new Builder instance instead"); 440 } 441 } 442 } 443 444 @DataClass.Generated( 445 time = 1677119626721L, 446 codegenVersion = "1.0.23", 447 sourceFile = "frameworks/base/core/java/android/hardware/fingerprint/FingerprintAuthenticateOptions.java", 448 inputSignatures = "private final int mUserId\nprivate int mSensorId\nprivate final boolean mIgnoreEnrollmentState\nprivate final @android.hardware.biometrics.AuthenticateOptions.DisplayState int mDisplayState\nprivate @android.annotation.NonNull java.lang.String mOpPackageName\nprivate @android.annotation.Nullable java.lang.String mAttributionTag\nprivate static int defaultUserId()\nprivate static int defaultSensorId()\nprivate static boolean defaultIgnoreEnrollmentState()\nprivate static int defaultDisplayState()\nprivate static java.lang.String defaultOpPackageName()\nprivate static java.lang.String defaultAttributionTag()\nclass FingerprintAuthenticateOptions extends java.lang.Object implements [android.hardware.biometrics.AuthenticateOptions, android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genAidl=true, genBuilder=true, genSetters=true, genEqualsHashCode=true)") 449 @Deprecated __metadata()450 private void __metadata() {} 451 452 453 //@formatter:on 454 // End of generated code 455 456 } 457