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