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