• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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