blob: 24cfd1641410d68751567efb402badc65d325677 [file] [log] [blame]
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.biometrics;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;
/**
* Contains the information set/requested by the caller of the {@link BiometricPrompt}
* @hide
*/
public class PromptInfo implements Parcelable {
@NonNull private CharSequence mTitle;
private boolean mUseDefaultTitle;
@Nullable private CharSequence mSubtitle;
private boolean mUseDefaultSubtitle;
@Nullable private CharSequence mDescription;
@Nullable private CharSequence mDeviceCredentialTitle;
@Nullable private CharSequence mDeviceCredentialSubtitle;
@Nullable private CharSequence mDeviceCredentialDescription;
@Nullable private CharSequence mNegativeButtonText;
private boolean mConfirmationRequested = true; // default to true
private boolean mDeviceCredentialAllowed;
private @BiometricManager.Authenticators.Types int mAuthenticators;
private boolean mDisallowBiometricsIfPolicyExists;
private boolean mReceiveSystemEvents;
@NonNull private List<Integer> mAllowedSensorIds = new ArrayList<>();
private boolean mAllowBackgroundAuthentication;
private boolean mIgnoreEnrollmentState;
private boolean mIsForLegacyFingerprintManager = false;
private boolean mShowEmergencyCallButton = false;
public PromptInfo() {
}
PromptInfo(Parcel in) {
mTitle = in.readCharSequence();
mUseDefaultTitle = in.readBoolean();
mSubtitle = in.readCharSequence();
mUseDefaultSubtitle = in.readBoolean();
mDescription = in.readCharSequence();
mDeviceCredentialTitle = in.readCharSequence();
mDeviceCredentialSubtitle = in.readCharSequence();
mDeviceCredentialDescription = in.readCharSequence();
mNegativeButtonText = in.readCharSequence();
mConfirmationRequested = in.readBoolean();
mDeviceCredentialAllowed = in.readBoolean();
mAuthenticators = in.readInt();
mDisallowBiometricsIfPolicyExists = in.readBoolean();
mReceiveSystemEvents = in.readBoolean();
mAllowedSensorIds = in.readArrayList(Integer.class.getClassLoader(), java.lang.Integer.class);
mAllowBackgroundAuthentication = in.readBoolean();
mIgnoreEnrollmentState = in.readBoolean();
mIsForLegacyFingerprintManager = in.readBoolean();
mShowEmergencyCallButton = in.readBoolean();
}
public static final Creator<PromptInfo> CREATOR = new Creator<PromptInfo>() {
@Override
public PromptInfo createFromParcel(Parcel in) {
return new PromptInfo(in);
}
@Override
public PromptInfo[] newArray(int size) {
return new PromptInfo[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeCharSequence(mTitle);
dest.writeBoolean(mUseDefaultTitle);
dest.writeCharSequence(mSubtitle);
dest.writeBoolean(mUseDefaultSubtitle);
dest.writeCharSequence(mDescription);
dest.writeCharSequence(mDeviceCredentialTitle);
dest.writeCharSequence(mDeviceCredentialSubtitle);
dest.writeCharSequence(mDeviceCredentialDescription);
dest.writeCharSequence(mNegativeButtonText);
dest.writeBoolean(mConfirmationRequested);
dest.writeBoolean(mDeviceCredentialAllowed);
dest.writeInt(mAuthenticators);
dest.writeBoolean(mDisallowBiometricsIfPolicyExists);
dest.writeBoolean(mReceiveSystemEvents);
dest.writeList(mAllowedSensorIds);
dest.writeBoolean(mAllowBackgroundAuthentication);
dest.writeBoolean(mIgnoreEnrollmentState);
dest.writeBoolean(mIsForLegacyFingerprintManager);
dest.writeBoolean(mShowEmergencyCallButton);
}
// LINT.IfChange
public boolean containsTestConfigurations() {
if (mIsForLegacyFingerprintManager
&& mAllowedSensorIds.size() == 1
&& !mAllowBackgroundAuthentication) {
return false;
} else if (!mAllowedSensorIds.isEmpty()) {
return true;
} else if (mAllowBackgroundAuthentication) {
return true;
} else if (mIsForLegacyFingerprintManager) {
return true;
} else if (mIgnoreEnrollmentState) {
return true;
}
return false;
}
public boolean containsPrivateApiConfigurations() {
if (mDisallowBiometricsIfPolicyExists) {
return true;
} else if (mUseDefaultTitle) {
return true;
} else if (mUseDefaultSubtitle) {
return true;
} else if (mDeviceCredentialTitle != null) {
return true;
} else if (mDeviceCredentialSubtitle != null) {
return true;
} else if (mDeviceCredentialDescription != null) {
return true;
} else if (mReceiveSystemEvents) {
return true;
}
return false;
}
// LINT.ThenChange(frameworks/base/core/java/android/hardware/biometrics/BiometricPrompt.java)
// Setters
public void setTitle(CharSequence title) {
mTitle = title;
}
public void setUseDefaultTitle(boolean useDefaultTitle) {
mUseDefaultTitle = useDefaultTitle;
}
public void setSubtitle(CharSequence subtitle) {
mSubtitle = subtitle;
}
public void setUseDefaultSubtitle(boolean useDefaultSubtitle) {
mUseDefaultSubtitle = useDefaultSubtitle;
}
public void setDescription(CharSequence description) {
mDescription = description;
}
public void setDeviceCredentialTitle(CharSequence deviceCredentialTitle) {
mDeviceCredentialTitle = deviceCredentialTitle;
}
public void setDeviceCredentialSubtitle(CharSequence deviceCredentialSubtitle) {
mDeviceCredentialSubtitle = deviceCredentialSubtitle;
}
public void setDeviceCredentialDescription(CharSequence deviceCredentialDescription) {
mDeviceCredentialDescription = deviceCredentialDescription;
}
public void setNegativeButtonText(CharSequence negativeButtonText) {
mNegativeButtonText = negativeButtonText;
}
public void setConfirmationRequested(boolean confirmationRequested) {
mConfirmationRequested = confirmationRequested;
}
public void setDeviceCredentialAllowed(boolean deviceCredentialAllowed) {
mDeviceCredentialAllowed = deviceCredentialAllowed;
}
public void setAuthenticators(int authenticators) {
mAuthenticators = authenticators;
}
public void setDisallowBiometricsIfPolicyExists(boolean disallowBiometricsIfPolicyExists) {
mDisallowBiometricsIfPolicyExists = disallowBiometricsIfPolicyExists;
}
public void setReceiveSystemEvents(boolean receiveSystemEvents) {
mReceiveSystemEvents = receiveSystemEvents;
}
public void setAllowedSensorIds(@NonNull List<Integer> sensorIds) {
mAllowedSensorIds.clear();
mAllowedSensorIds.addAll(sensorIds);
}
public void setAllowBackgroundAuthentication(boolean allow) {
mAllowBackgroundAuthentication = allow;
}
public void setIgnoreEnrollmentState(boolean ignoreEnrollmentState) {
mIgnoreEnrollmentState = ignoreEnrollmentState;
}
public void setIsForLegacyFingerprintManager(int sensorId) {
mIsForLegacyFingerprintManager = true;
mAllowedSensorIds.clear();
mAllowedSensorIds.add(sensorId);
}
public void setShowEmergencyCallButton(boolean showEmergencyCallButton) {
mShowEmergencyCallButton = showEmergencyCallButton;
}
// Getters
public CharSequence getTitle() {
return mTitle;
}
public boolean isUseDefaultTitle() {
return mUseDefaultTitle;
}
public CharSequence getSubtitle() {
return mSubtitle;
}
public boolean isUseDefaultSubtitle() {
return mUseDefaultSubtitle;
}
public CharSequence getDescription() {
return mDescription;
}
public CharSequence getDeviceCredentialTitle() {
return mDeviceCredentialTitle;
}
public CharSequence getDeviceCredentialSubtitle() {
return mDeviceCredentialSubtitle;
}
public CharSequence getDeviceCredentialDescription() {
return mDeviceCredentialDescription;
}
public CharSequence getNegativeButtonText() {
return mNegativeButtonText;
}
public boolean isConfirmationRequested() {
return mConfirmationRequested;
}
/**
* This value is read once by {@link com.android.server.biometrics.BiometricService} and
* combined into {@link #getAuthenticators()}.
* @deprecated
* @return
*/
@Deprecated
public boolean isDeviceCredentialAllowed() {
return mDeviceCredentialAllowed;
}
public int getAuthenticators() {
return mAuthenticators;
}
public boolean isDisallowBiometricsIfPolicyExists() {
return mDisallowBiometricsIfPolicyExists;
}
public boolean isReceiveSystemEvents() {
return mReceiveSystemEvents;
}
@NonNull
public List<Integer> getAllowedSensorIds() {
return mAllowedSensorIds;
}
public boolean isAllowBackgroundAuthentication() {
return mAllowBackgroundAuthentication;
}
public boolean isIgnoreEnrollmentState() {
return mIgnoreEnrollmentState;
}
public boolean isForLegacyFingerprintManager() {
return mIsForLegacyFingerprintManager;
}
public boolean isShowEmergencyCallButton() {
return mShowEmergencyCallButton;
}
}