Revert "Implement sfps enroll improvement feature with feature provider"
This reverts commit 2ffe187d1b
.
Reason for revert: Likely culprit for b/305048300
Change-Id: Ia9d2d98bcb09d63dacde7134c20ded2ed51f9ab4
This commit is contained in:
committed by
Android (Google) Code Review
parent
2ffe187d1b
commit
a99bab5b57
@@ -12,7 +12,6 @@ aconfig_declarations {
|
|||||||
"settings_experience_flag_declarations.aconfig",
|
"settings_experience_flag_declarations.aconfig",
|
||||||
"settings_onboarding_experience_flag_declarations.aconfig",
|
"settings_onboarding_experience_flag_declarations.aconfig",
|
||||||
"settings_telephony_flag_declarations.aconfig",
|
"settings_telephony_flag_declarations.aconfig",
|
||||||
"settings_biometrics_integration_declarations.aconfig",
|
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
package: "com.android.settings.flags"
|
|
||||||
|
|
||||||
flag {
|
|
||||||
name: "sfps_enroll_refinement"
|
|
||||||
namespace: "biometrics_integration"
|
|
||||||
description: "This flag controls whether the sfps pause enrollment feature should be enabled"
|
|
||||||
bug: "288155127"
|
|
||||||
}
|
|
||||||
|
|
@@ -68,13 +68,10 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.biometrics.BiometricEnrollSidecar;
|
import com.android.settings.biometrics.BiometricEnrollSidecar;
|
||||||
import com.android.settings.biometrics.BiometricUtils;
|
import com.android.settings.biometrics.BiometricUtils;
|
||||||
import com.android.settings.biometrics.BiometricsEnrollEnrolling;
|
import com.android.settings.biometrics.BiometricsEnrollEnrolling;
|
||||||
import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature;
|
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
|
||||||
import com.android.settingslib.display.DisplayDensityUtils;
|
import com.android.settingslib.display.DisplayDensityUtils;
|
||||||
|
|
||||||
import com.airbnb.lottie.LottieAnimationView;
|
import com.airbnb.lottie.LottieAnimationView;
|
||||||
import com.airbnb.lottie.LottieComposition;
|
|
||||||
import com.airbnb.lottie.LottieCompositionFactory;
|
import com.airbnb.lottie.LottieCompositionFactory;
|
||||||
import com.airbnb.lottie.LottieProperty;
|
import com.airbnb.lottie.LottieProperty;
|
||||||
import com.airbnb.lottie.model.KeyPath;
|
import com.airbnb.lottie.model.KeyPath;
|
||||||
@@ -102,22 +99,27 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
|
|
||||||
private static final int PROGRESS_BAR_MAX = 10000;
|
private static final int PROGRESS_BAR_MAX = 10000;
|
||||||
|
|
||||||
public static final int STAGE_UNKNOWN = -1;
|
private static final int STAGE_UNKNOWN = -1;
|
||||||
private static final int STAGE_CENTER = 0;
|
private static final int STAGE_CENTER = 0;
|
||||||
private static final int STAGE_GUIDED = 1;
|
private static final int STAGE_GUIDED = 1;
|
||||||
private static final int STAGE_FINGERTIP = 2;
|
private static final int STAGE_FINGERTIP = 2;
|
||||||
private static final int STAGE_LEFT_EDGE = 3;
|
private static final int STAGE_LEFT_EDGE = 3;
|
||||||
private static final int STAGE_RIGHT_EDGE = 4;
|
private static final int STAGE_RIGHT_EDGE = 4;
|
||||||
|
|
||||||
public static final int SFPS_STAGE_NO_ANIMATION = 0;
|
@VisibleForTesting
|
||||||
|
protected static final int SFPS_STAGE_NO_ANIMATION = 0;
|
||||||
|
|
||||||
public static final int SFPS_STAGE_CENTER = 1;
|
@VisibleForTesting
|
||||||
|
protected static final int SFPS_STAGE_CENTER = 1;
|
||||||
|
|
||||||
public static final int SFPS_STAGE_FINGERTIP = 2;
|
@VisibleForTesting
|
||||||
|
protected static final int SFPS_STAGE_FINGERTIP = 2;
|
||||||
|
|
||||||
public static final int SFPS_STAGE_LEFT_EDGE = 3;
|
@VisibleForTesting
|
||||||
|
protected static final int SFPS_STAGE_LEFT_EDGE = 3;
|
||||||
|
|
||||||
public static final int SFPS_STAGE_RIGHT_EDGE = 4;
|
@VisibleForTesting
|
||||||
|
protected static final int SFPS_STAGE_RIGHT_EDGE = 4;
|
||||||
|
|
||||||
@IntDef({STAGE_UNKNOWN, STAGE_CENTER, STAGE_GUIDED, STAGE_FINGERTIP, STAGE_LEFT_EDGE,
|
@IntDef({STAGE_UNKNOWN, STAGE_CENTER, STAGE_GUIDED, STAGE_FINGERTIP, STAGE_LEFT_EDGE,
|
||||||
STAGE_RIGHT_EDGE})
|
STAGE_RIGHT_EDGE})
|
||||||
@@ -194,8 +196,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
private OrientationEventListener mOrientationEventListener;
|
private OrientationEventListener mOrientationEventListener;
|
||||||
private int mPreviousRotation = 0;
|
private int mPreviousRotation = 0;
|
||||||
|
|
||||||
private SfpsEnrollmentFeature mSfpsEnrollmentFeature;
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected boolean shouldShowLottie() {
|
protected boolean shouldShowLottie() {
|
||||||
DisplayDensityUtils displayDensity = new DisplayDensityUtils(getApplicationContext());
|
DisplayDensityUtils displayDensity = new DisplayDensityUtils(getApplicationContext());
|
||||||
@@ -232,11 +232,6 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
mAccessibilityManager = getSystemService(AccessibilityManager.class);
|
mAccessibilityManager = getSystemService(AccessibilityManager.class);
|
||||||
mIsAccessibilityEnabled = mAccessibilityManager.isEnabled();
|
mIsAccessibilityEnabled = mAccessibilityManager.isEnabled();
|
||||||
|
|
||||||
mSfpsEnrollmentFeature = mCanAssumeSfps
|
|
||||||
? FeatureFactory.getFeatureFactory()
|
|
||||||
.getFingerprintFeatureProvider().getSfpsEnrollmentFeature()
|
|
||||||
: null;
|
|
||||||
|
|
||||||
listenOrientationEvent();
|
listenOrientationEvent();
|
||||||
|
|
||||||
if (mCanAssumeUdfps) {
|
if (mCanAssumeUdfps) {
|
||||||
@@ -604,8 +599,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
}
|
}
|
||||||
switch (getCurrentSfpsStage()) {
|
switch (getCurrentSfpsStage()) {
|
||||||
case SFPS_STAGE_NO_ANIMATION:
|
case SFPS_STAGE_NO_ANIMATION:
|
||||||
setHeaderText(mSfpsEnrollmentFeature
|
setHeaderText(R.string.security_settings_fingerprint_enroll_repeat_title);
|
||||||
.getFeaturedStageHeaderResource(SFPS_STAGE_NO_ANIMATION));
|
|
||||||
if (!mHaveShownSfpsNoAnimationLottie && mIllustrationLottie != null) {
|
if (!mHaveShownSfpsNoAnimationLottie && mIllustrationLottie != null) {
|
||||||
mHaveShownSfpsNoAnimationLottie = true;
|
mHaveShownSfpsNoAnimationLottie = true;
|
||||||
mIllustrationLottie.setContentDescription(
|
mIllustrationLottie.setContentDescription(
|
||||||
@@ -614,48 +608,39 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
0
|
0
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
configureEnrollmentStage(mSfpsEnrollmentFeature
|
configureEnrollmentStage(R.raw.sfps_lottie_no_animation);
|
||||||
.getSfpsEnrollLottiePerStage(SFPS_STAGE_NO_ANIMATION));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFPS_STAGE_CENTER:
|
case SFPS_STAGE_CENTER:
|
||||||
setHeaderText(mSfpsEnrollmentFeature
|
setHeaderText(R.string.security_settings_sfps_enroll_finger_center_title);
|
||||||
.getFeaturedStageHeaderResource(SFPS_STAGE_CENTER));
|
|
||||||
if (!mHaveShownSfpsCenterLottie && mIllustrationLottie != null) {
|
if (!mHaveShownSfpsCenterLottie && mIllustrationLottie != null) {
|
||||||
mHaveShownSfpsCenterLottie = true;
|
mHaveShownSfpsCenterLottie = true;
|
||||||
configureEnrollmentStage(mSfpsEnrollmentFeature
|
configureEnrollmentStage(R.raw.sfps_lottie_pad_center);
|
||||||
.getSfpsEnrollLottiePerStage(SFPS_STAGE_CENTER));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFPS_STAGE_FINGERTIP:
|
case SFPS_STAGE_FINGERTIP:
|
||||||
setHeaderText(mSfpsEnrollmentFeature
|
setHeaderText(R.string.security_settings_sfps_enroll_fingertip_title);
|
||||||
.getFeaturedStageHeaderResource(SFPS_STAGE_FINGERTIP));
|
|
||||||
if (!mHaveShownSfpsTipLottie && mIllustrationLottie != null) {
|
if (!mHaveShownSfpsTipLottie && mIllustrationLottie != null) {
|
||||||
mHaveShownSfpsTipLottie = true;
|
mHaveShownSfpsTipLottie = true;
|
||||||
configureEnrollmentStage(mSfpsEnrollmentFeature
|
configureEnrollmentStage(R.raw.sfps_lottie_tip);
|
||||||
.getSfpsEnrollLottiePerStage(SFPS_STAGE_FINGERTIP));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFPS_STAGE_LEFT_EDGE:
|
case SFPS_STAGE_LEFT_EDGE:
|
||||||
setHeaderText(mSfpsEnrollmentFeature
|
setHeaderText(R.string.security_settings_sfps_enroll_left_edge_title);
|
||||||
.getFeaturedStageHeaderResource(SFPS_STAGE_LEFT_EDGE));
|
|
||||||
if (!mHaveShownSfpsLeftEdgeLottie && mIllustrationLottie != null) {
|
if (!mHaveShownSfpsLeftEdgeLottie && mIllustrationLottie != null) {
|
||||||
mHaveShownSfpsLeftEdgeLottie = true;
|
mHaveShownSfpsLeftEdgeLottie = true;
|
||||||
configureEnrollmentStage(mSfpsEnrollmentFeature
|
configureEnrollmentStage(R.raw.sfps_lottie_left_edge);
|
||||||
.getSfpsEnrollLottiePerStage(SFPS_STAGE_LEFT_EDGE));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFPS_STAGE_RIGHT_EDGE:
|
case SFPS_STAGE_RIGHT_EDGE:
|
||||||
setHeaderText(mSfpsEnrollmentFeature
|
setHeaderText(R.string.security_settings_sfps_enroll_right_edge_title);
|
||||||
.getFeaturedStageHeaderResource(SFPS_STAGE_RIGHT_EDGE));
|
|
||||||
if (!mHaveShownSfpsRightEdgeLottie && mIllustrationLottie != null) {
|
if (!mHaveShownSfpsRightEdgeLottie && mIllustrationLottie != null) {
|
||||||
mHaveShownSfpsRightEdgeLottie = true;
|
mHaveShownSfpsRightEdgeLottie = true;
|
||||||
configureEnrollmentStage(mSfpsEnrollmentFeature
|
configureEnrollmentStage(R.raw.sfps_lottie_right_edge);
|
||||||
.getSfpsEnrollLottiePerStage(SFPS_STAGE_RIGHT_EDGE));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -676,23 +661,15 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting void configureEnrollmentStage(@RawRes int lottie) {
|
@VisibleForTesting void configureEnrollmentStage(@RawRes int lottie) {
|
||||||
if (lottie == STAGE_UNKNOWN) return;
|
|
||||||
if (!mCanAssumeSfps) {
|
if (!mCanAssumeSfps) {
|
||||||
setDescriptionText("");
|
setDescriptionText("");
|
||||||
}
|
}
|
||||||
LottieCompositionFactory.fromRawRes(this, lottie)
|
LottieCompositionFactory.fromRawRes(this, lottie)
|
||||||
.addListener((c) -> onLottieComposition(mIllustrationLottie, c));
|
.addListener((c) -> {
|
||||||
}
|
mIllustrationLottie.setComposition(c);
|
||||||
|
mIllustrationLottie.setVisibility(View.VISIBLE);
|
||||||
private void onLottieComposition(LottieAnimationView view, LottieComposition composition) {
|
mIllustrationLottie.playAnimation();
|
||||||
if (view == null || composition == null) {
|
});
|
||||||
return;
|
|
||||||
}
|
|
||||||
view.setComposition(composition);
|
|
||||||
view.setVisibility(View.VISIBLE);
|
|
||||||
view.playAnimation();
|
|
||||||
mSfpsEnrollmentFeature.handleOnEnrollmentLottieComposition(
|
|
||||||
view, composition, getCurrentSfpsStage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EnrollStage
|
@EnrollStage
|
||||||
@@ -722,8 +699,17 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final int progressSteps = mSidecar.getEnrollmentSteps() - mSidecar.getEnrollmentRemaining();
|
final int progressSteps = mSidecar.getEnrollmentSteps() - mSidecar.getEnrollmentRemaining();
|
||||||
return mSfpsEnrollmentFeature
|
if (progressSteps < getStageThresholdSteps(0)) {
|
||||||
.getCurrentSfpsEnrollStage(progressSteps, this::getStageThresholdSteps);
|
return SFPS_STAGE_NO_ANIMATION;
|
||||||
|
} else if (progressSteps < getStageThresholdSteps(1)) {
|
||||||
|
return SFPS_STAGE_CENTER;
|
||||||
|
} else if (progressSteps < getStageThresholdSteps(2)) {
|
||||||
|
return SFPS_STAGE_FINGERTIP;
|
||||||
|
} else if (progressSteps < getStageThresholdSteps(3)) {
|
||||||
|
return SFPS_STAGE_LEFT_EDGE;
|
||||||
|
} else {
|
||||||
|
return SFPS_STAGE_RIGHT_EDGE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isStageHalfCompleted() {
|
private boolean isStageHalfCompleted() {
|
||||||
@@ -754,26 +740,22 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
Log.w(TAG, "getStageThresholdSteps: Enrollment not started yet");
|
Log.w(TAG, "getStageThresholdSteps: Enrollment not started yet");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
final float threshold = mSfpsEnrollmentFeature.getEnrollStageThreshold(this, index);
|
return Math.round(mSidecar.getEnrollmentSteps()
|
||||||
return Math.round(mSidecar.getEnrollmentSteps() * threshold);
|
* mFingerprintManager.getEnrollStageThreshold(index));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnrollmentHelp(int helpMsgId, CharSequence helpString) {
|
public void onEnrollmentHelp(int helpMsgId, CharSequence helpString) {
|
||||||
final CharSequence featuredString = mSfpsEnrollmentFeature
|
if (!TextUtils.isEmpty(helpString)) {
|
||||||
.getFeaturedVendorString(this, helpMsgId, helpString);
|
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(featuredString)) {
|
|
||||||
if (!(mCanAssumeUdfps || mCanAssumeSfps)) {
|
if (!(mCanAssumeUdfps || mCanAssumeSfps)) {
|
||||||
mErrorText.removeCallbacks(mTouchAgainRunnable);
|
mErrorText.removeCallbacks(mTouchAgainRunnable);
|
||||||
}
|
}
|
||||||
showError(featuredString);
|
showError(helpString);
|
||||||
|
|
||||||
if (mUdfpsEnrollHelper != null) mUdfpsEnrollHelper.onEnrollmentHelp();
|
if (mUdfpsEnrollHelper != null) mUdfpsEnrollHelper.onEnrollmentHelp();
|
||||||
}
|
}
|
||||||
|
|
||||||
dismissTouchDialogIfSfps();
|
dismissTouchDialogIfSfps();
|
||||||
mSfpsEnrollmentFeature.handleOnEnrollmentHelp(helpMsgId, featuredString, () -> this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1,27 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 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 com.android.settings.biometrics.fingerprint;
|
|
||||||
|
|
||||||
import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature;
|
|
||||||
|
|
||||||
public interface FingerprintFeatureProvider {
|
|
||||||
/**
|
|
||||||
* Gets the feature implementation of SFPS enrollment.
|
|
||||||
* @return the feature implementation
|
|
||||||
*/
|
|
||||||
SfpsEnrollmentFeature getSfpsEnrollmentFeature();
|
|
||||||
}
|
|
@@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 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 com.android.settings.biometrics.fingerprint;
|
|
||||||
|
|
||||||
import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeature;
|
|
||||||
import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeatureImpl;
|
|
||||||
|
|
||||||
public class FingerprintFeatureProviderImpl implements FingerprintFeatureProvider {
|
|
||||||
|
|
||||||
private SfpsEnrollmentFeature mSfpsEnrollmentFeatureImpl;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SfpsEnrollmentFeature getSfpsEnrollmentFeature() {
|
|
||||||
if (mSfpsEnrollmentFeatureImpl == null) {
|
|
||||||
mSfpsEnrollmentFeatureImpl = new SfpsEnrollmentFeatureImpl();
|
|
||||||
}
|
|
||||||
return mSfpsEnrollmentFeatureImpl;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,91 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 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 com.android.settings.biometrics.fingerprint.feature;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
|
|
||||||
|
|
||||||
import com.airbnb.lottie.LottieAnimationView;
|
|
||||||
import com.airbnb.lottie.LottieComposition;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
public interface SfpsEnrollmentFeature {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets current SFPS enrollment stage.
|
|
||||||
* @param progressSteps current step of enrollment
|
|
||||||
* @param mapper a mapper to map each stage to its threshold
|
|
||||||
* @return current enrollment stage
|
|
||||||
*/
|
|
||||||
int getCurrentSfpsEnrollStage(int progressSteps, Function<Integer, Integer> mapper);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the vendor string by feature.
|
|
||||||
* @param context Context
|
|
||||||
* @param id An integer identifying the error message
|
|
||||||
* @param msg A human-readable string that can be shown in UI
|
|
||||||
* @return A human-readable string of specific feature
|
|
||||||
*/
|
|
||||||
default CharSequence getFeaturedVendorString(Context context, int id, CharSequence msg) {
|
|
||||||
return msg;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the stage header string by feature.
|
|
||||||
* @param stage the specific stage
|
|
||||||
* @return the resource id of the header text of the specific stage
|
|
||||||
*/
|
|
||||||
int getFeaturedStageHeaderResource(int stage);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the enrollment lottie resource id per stage
|
|
||||||
* @param stage current enrollment stage
|
|
||||||
* @return enrollment lottie resource id
|
|
||||||
*/
|
|
||||||
int getSfpsEnrollLottiePerStage(int stage);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles extra stuffs on lottie composition.
|
|
||||||
* @param animView the view related to the lottie
|
|
||||||
* @param composition lottie composition
|
|
||||||
* @param stage current enrollment stage
|
|
||||||
*/
|
|
||||||
default void handleOnEnrollmentLottieComposition(
|
|
||||||
LottieAnimationView animView, LottieComposition composition, int stage) {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles extra stuffs on receiving enrollment help.
|
|
||||||
* @param helpMsgId help message id
|
|
||||||
* @param helpString help message
|
|
||||||
* @param enrollingSupplier supplier of enrolling context
|
|
||||||
*/
|
|
||||||
default void handleOnEnrollmentHelp(int helpMsgId, CharSequence helpString,
|
|
||||||
Supplier<FingerprintEnrollEnrolling> enrollingSupplier) {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the fingerprint enrollment threshold.
|
|
||||||
* @param context context
|
|
||||||
* @param index the enrollment stage index
|
|
||||||
* @return threshold
|
|
||||||
*/
|
|
||||||
float getEnrollStageThreshold(@NonNull Context context, int index);
|
|
||||||
}
|
|
@@ -1,89 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2023 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 com.android.settings.biometrics.fingerprint.feature;
|
|
||||||
|
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_CENTER;
|
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_FINGERTIP;
|
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_LEFT_EDGE;
|
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_NO_ANIMATION;
|
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_RIGHT_EDGE;
|
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.STAGE_UNKNOWN;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature {
|
|
||||||
|
|
||||||
private FingerprintManager mFingerprintManager;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getCurrentSfpsEnrollStage(int progressSteps, Function<Integer, Integer> mapper) {
|
|
||||||
if (mapper == null) {
|
|
||||||
return STAGE_UNKNOWN;
|
|
||||||
}
|
|
||||||
if (progressSteps < mapper.apply(0)) {
|
|
||||||
return SFPS_STAGE_NO_ANIMATION;
|
|
||||||
} else if (progressSteps < mapper.apply(1)) {
|
|
||||||
return SFPS_STAGE_CENTER;
|
|
||||||
} else if (progressSteps < mapper.apply(2)) {
|
|
||||||
return SFPS_STAGE_FINGERTIP;
|
|
||||||
} else if (progressSteps < mapper.apply(3)) {
|
|
||||||
return SFPS_STAGE_LEFT_EDGE;
|
|
||||||
} else {
|
|
||||||
return SFPS_STAGE_RIGHT_EDGE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getFeaturedStageHeaderResource(int stage) {
|
|
||||||
return switch (stage) {
|
|
||||||
case SFPS_STAGE_NO_ANIMATION
|
|
||||||
-> R.string.security_settings_fingerprint_enroll_repeat_title;
|
|
||||||
case SFPS_STAGE_CENTER -> R.string.security_settings_sfps_enroll_finger_center_title;
|
|
||||||
case SFPS_STAGE_FINGERTIP -> R.string.security_settings_sfps_enroll_fingertip_title;
|
|
||||||
case SFPS_STAGE_LEFT_EDGE -> R.string.security_settings_sfps_enroll_left_edge_title;
|
|
||||||
case SFPS_STAGE_RIGHT_EDGE -> R.string.security_settings_sfps_enroll_right_edge_title;
|
|
||||||
default -> throw new IllegalArgumentException("Invalid stage: " + stage);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSfpsEnrollLottiePerStage(int stage) {
|
|
||||||
return switch (stage) {
|
|
||||||
case SFPS_STAGE_NO_ANIMATION -> R.raw.sfps_lottie_no_animation;
|
|
||||||
case SFPS_STAGE_CENTER -> R.raw.sfps_lottie_pad_center;
|
|
||||||
case SFPS_STAGE_FINGERTIP -> R.raw.sfps_lottie_tip;
|
|
||||||
case SFPS_STAGE_LEFT_EDGE -> R.raw.sfps_lottie_left_edge;
|
|
||||||
case SFPS_STAGE_RIGHT_EDGE -> R.raw.sfps_lottie_right_edge;
|
|
||||||
default -> throw new IllegalArgumentException("Invalid stage: " + stage);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getEnrollStageThreshold(@NonNull Context context, int index) {
|
|
||||||
if (mFingerprintManager == null) {
|
|
||||||
mFingerprintManager = context.getSystemService(FingerprintManager.class);
|
|
||||||
}
|
|
||||||
return mFingerprintManager.getEnrollStageThreshold(index);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -21,7 +21,6 @@ import com.android.settings.accessibility.AccessibilitySearchFeatureProvider
|
|||||||
import com.android.settings.accounts.AccountFeatureProvider
|
import com.android.settings.accounts.AccountFeatureProvider
|
||||||
import com.android.settings.applications.ApplicationFeatureProvider
|
import com.android.settings.applications.ApplicationFeatureProvider
|
||||||
import com.android.settings.biometrics.face.FaceFeatureProvider
|
import com.android.settings.biometrics.face.FaceFeatureProvider
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider
|
|
||||||
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
|
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProvider
|
import com.android.settings.bluetooth.BluetoothFeatureProvider
|
||||||
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
|
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
|
||||||
@@ -105,16 +104,8 @@ abstract class FeatureFactory {
|
|||||||
*/
|
*/
|
||||||
abstract val bluetoothFeatureProvider: BluetoothFeatureProvider
|
abstract val bluetoothFeatureProvider: BluetoothFeatureProvider
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves implementation for Face feature.
|
|
||||||
*/
|
|
||||||
abstract val faceFeatureProvider: FaceFeatureProvider
|
abstract val faceFeatureProvider: FaceFeatureProvider
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves implementation for Fingerprint feature.
|
|
||||||
*/
|
|
||||||
abstract val fingerprintFeatureProvider: FingerprintFeatureProvider
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets implementation for Biometrics repository provider.
|
* Gets implementation for Biometrics repository provider.
|
||||||
*/
|
*/
|
||||||
|
@@ -29,8 +29,6 @@ import com.android.settings.accounts.AccountFeatureProviderImpl
|
|||||||
import com.android.settings.applications.ApplicationFeatureProviderImpl
|
import com.android.settings.applications.ApplicationFeatureProviderImpl
|
||||||
import com.android.settings.biometrics.face.FaceFeatureProvider
|
import com.android.settings.biometrics.face.FaceFeatureProvider
|
||||||
import com.android.settings.biometrics.face.FaceFeatureProviderImpl
|
import com.android.settings.biometrics.face.FaceFeatureProviderImpl
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider
|
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProviderImpl
|
|
||||||
import com.android.settings.biometrics2.factory.BiometricsRepositoryProviderImpl
|
import com.android.settings.biometrics2.factory.BiometricsRepositoryProviderImpl
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProvider
|
import com.android.settings.bluetooth.BluetoothFeatureProvider
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProviderImpl
|
import com.android.settings.bluetooth.BluetoothFeatureProviderImpl
|
||||||
@@ -147,10 +145,6 @@ open class FeatureFactoryImpl : FeatureFactory() {
|
|||||||
|
|
||||||
override val faceFeatureProvider: FaceFeatureProvider by lazy { FaceFeatureProviderImpl() }
|
override val faceFeatureProvider: FaceFeatureProvider by lazy { FaceFeatureProviderImpl() }
|
||||||
|
|
||||||
override val fingerprintFeatureProvider: FingerprintFeatureProvider by lazy {
|
|
||||||
FingerprintFeatureProviderImpl()
|
|
||||||
}
|
|
||||||
|
|
||||||
override val biometricsRepositoryProvider by lazy { BiometricsRepositoryProviderImpl() }
|
override val biometricsRepositoryProvider by lazy { BiometricsRepositoryProviderImpl() }
|
||||||
|
|
||||||
override val wifiTrackerLibProvider: WifiTrackerLibProvider by lazy {
|
override val wifiTrackerLibProvider: WifiTrackerLibProvider by lazy {
|
||||||
|
@@ -53,9 +53,6 @@ import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.CancellationSignal;
|
import android.os.CancellationSignal;
|
||||||
import android.os.Vibrator;
|
import android.os.Vibrator;
|
||||||
import android.platform.test.annotations.RequiresFlagsDisabled;
|
|
||||||
import android.platform.test.flag.junit.CheckFlagsRule;
|
|
||||||
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
|
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -65,9 +62,6 @@ import android.widget.ImageView;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.biometrics.fingerprint.feature.SfpsEnrollmentFeatureImpl;
|
|
||||||
import com.android.settings.flags.Flags;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.widget.RingProgressBar;
|
import com.android.settings.widget.RingProgressBar;
|
||||||
|
|
||||||
@@ -77,7 +71,6 @@ import com.google.android.setupdesign.GlifLayout;
|
|||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
@@ -100,8 +93,6 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
private static final String ENROLL_PROGRESS_COLOR_LIGHT = "#699FF3";
|
private static final String ENROLL_PROGRESS_COLOR_LIGHT = "#699FF3";
|
||||||
private static final String ENROLL_PROGRESS_COLOR_DARK = "#7DA7F1";
|
private static final String ENROLL_PROGRESS_COLOR_DARK = "#7DA7F1";
|
||||||
|
|
||||||
@Rule
|
|
||||||
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
|
|
||||||
|
|
||||||
@Mock private FingerprintManager mFingerprintManager;
|
@Mock private FingerprintManager mFingerprintManager;
|
||||||
|
|
||||||
@@ -603,23 +594,6 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
assertThat(getLayout().getDescriptionTextView().getVisibility()).isEqualTo(View.GONE);
|
assertThat(getLayout().getDescriptionTextView().getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
@RequiresFlagsDisabled(Flags.FLAG_SFPS_ENROLL_REFINEMENT)
|
|
||||||
public void testFingerprintFeatureProvider_impl() {
|
|
||||||
// We should always get default implementation when the flag is disabled.
|
|
||||||
assertThat(FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider())
|
|
||||||
.isInstanceOf(FingerprintFeatureProviderImpl.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@RequiresFlagsDisabled(Flags.FLAG_SFPS_ENROLL_REFINEMENT)
|
|
||||||
public void testFingerprintFeatureProvider_sfpsEnrollmentFeatureImpl() {
|
|
||||||
// We should always get default implementation when the flag is disabled.
|
|
||||||
assertThat(FeatureFactory.getFeatureFactory()
|
|
||||||
.getFingerprintFeatureProvider().getSfpsEnrollmentFeature())
|
|
||||||
.isInstanceOf(SfpsEnrollmentFeatureImpl.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private GlifLayout getLayout() {
|
private GlifLayout getLayout() {
|
||||||
return (GlifLayout) mActivity.findViewById(R.id.setup_wizard_layout);
|
return (GlifLayout) mActivity.findViewById(R.id.setup_wizard_layout);
|
||||||
}
|
}
|
||||||
|
@@ -24,7 +24,6 @@ import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
|
|||||||
import com.android.settings.accounts.AccountFeatureProvider;
|
import com.android.settings.accounts.AccountFeatureProvider;
|
||||||
import com.android.settings.applications.ApplicationFeatureProvider;
|
import com.android.settings.applications.ApplicationFeatureProvider;
|
||||||
import com.android.settings.biometrics.face.FaceFeatureProvider;
|
import com.android.settings.biometrics.face.FaceFeatureProvider;
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider;
|
|
||||||
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
|
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
||||||
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
|
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
|
||||||
@@ -81,7 +80,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
public final AccountFeatureProvider mAccountFeatureProvider;
|
public final AccountFeatureProvider mAccountFeatureProvider;
|
||||||
public final BluetoothFeatureProvider mBluetoothFeatureProvider;
|
public final BluetoothFeatureProvider mBluetoothFeatureProvider;
|
||||||
public final FaceFeatureProvider mFaceFeatureProvider;
|
public final FaceFeatureProvider mFaceFeatureProvider;
|
||||||
public final FingerprintFeatureProvider mFingerprintFeatureProvider;
|
|
||||||
public final BiometricsRepositoryProvider mBiometricsRepositoryProvider;
|
public final BiometricsRepositoryProvider mBiometricsRepositoryProvider;
|
||||||
|
|
||||||
public PanelFeatureProvider panelFeatureProvider;
|
public PanelFeatureProvider panelFeatureProvider;
|
||||||
@@ -134,7 +132,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
panelFeatureProvider = mock(PanelFeatureProvider.class);
|
panelFeatureProvider = mock(PanelFeatureProvider.class);
|
||||||
mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
|
mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
|
||||||
mFaceFeatureProvider = mock(FaceFeatureProvider.class);
|
mFaceFeatureProvider = mock(FaceFeatureProvider.class);
|
||||||
mFingerprintFeatureProvider = mock(FingerprintFeatureProvider.class);
|
|
||||||
mBiometricsRepositoryProvider = mock(BiometricsRepositoryProvider.class);
|
mBiometricsRepositoryProvider = mock(BiometricsRepositoryProvider.class);
|
||||||
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
|
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
|
||||||
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
|
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
|
||||||
@@ -259,11 +256,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
return mFaceFeatureProvider;
|
return mFaceFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public FingerprintFeatureProvider getFingerprintFeatureProvider() {
|
|
||||||
return mFingerprintFeatureProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BiometricsRepositoryProvider getBiometricsRepositoryProvider() {
|
public BiometricsRepositoryProvider getBiometricsRepositoryProvider() {
|
||||||
return mBiometricsRepositoryProvider;
|
return mBiometricsRepositoryProvider;
|
||||||
|
@@ -22,7 +22,6 @@ import com.android.settings.accessibility.AccessibilitySearchFeatureProvider
|
|||||||
import com.android.settings.accounts.AccountFeatureProvider
|
import com.android.settings.accounts.AccountFeatureProvider
|
||||||
import com.android.settings.applications.ApplicationFeatureProvider
|
import com.android.settings.applications.ApplicationFeatureProvider
|
||||||
import com.android.settings.biometrics.face.FaceFeatureProvider
|
import com.android.settings.biometrics.face.FaceFeatureProvider
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider
|
|
||||||
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
|
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProvider
|
import com.android.settings.bluetooth.BluetoothFeatureProvider
|
||||||
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
|
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider
|
||||||
@@ -121,8 +120,6 @@ class FakeFeatureFactory : FeatureFactory() {
|
|||||||
get() = TODO("Not yet implemented")
|
get() = TODO("Not yet implemented")
|
||||||
override val faceFeatureProvider: FaceFeatureProvider
|
override val faceFeatureProvider: FaceFeatureProvider
|
||||||
get() = TODO("Not yet implemented")
|
get() = TODO("Not yet implemented")
|
||||||
override val fingerprintFeatureProvider: FingerprintFeatureProvider
|
|
||||||
get() = TODO("Not yet implemented")
|
|
||||||
override val biometricsRepositoryProvider: BiometricsRepositoryProvider
|
override val biometricsRepositoryProvider: BiometricsRepositoryProvider
|
||||||
get() = TODO("Not yet implemented")
|
get() = TODO("Not yet implemented")
|
||||||
override val wifiTrackerLibProvider: WifiTrackerLibProvider
|
override val wifiTrackerLibProvider: WifiTrackerLibProvider
|
||||||
|
@@ -24,7 +24,6 @@ import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
|
|||||||
import com.android.settings.accounts.AccountFeatureProvider;
|
import com.android.settings.accounts.AccountFeatureProvider;
|
||||||
import com.android.settings.applications.ApplicationFeatureProvider;
|
import com.android.settings.applications.ApplicationFeatureProvider;
|
||||||
import com.android.settings.biometrics.face.FaceFeatureProvider;
|
import com.android.settings.biometrics.face.FaceFeatureProvider;
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintFeatureProvider;
|
|
||||||
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
|
import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
||||||
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
|
import com.android.settings.connecteddevice.fastpair.FastPairFeatureProvider;
|
||||||
@@ -80,7 +79,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
public final AccountFeatureProvider mAccountFeatureProvider;
|
public final AccountFeatureProvider mAccountFeatureProvider;
|
||||||
public final BluetoothFeatureProvider mBluetoothFeatureProvider;
|
public final BluetoothFeatureProvider mBluetoothFeatureProvider;
|
||||||
public final FaceFeatureProvider mFaceFeatureProvider;
|
public final FaceFeatureProvider mFaceFeatureProvider;
|
||||||
public final FingerprintFeatureProvider mFingerprintFeatureProvider;
|
|
||||||
public final BiometricsRepositoryProvider mBiometricsRepositoryProvider;
|
public final BiometricsRepositoryProvider mBiometricsRepositoryProvider;
|
||||||
|
|
||||||
public PanelFeatureProvider panelFeatureProvider;
|
public PanelFeatureProvider panelFeatureProvider;
|
||||||
@@ -133,7 +131,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
panelFeatureProvider = mock(PanelFeatureProvider.class);
|
panelFeatureProvider = mock(PanelFeatureProvider.class);
|
||||||
mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
|
mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
|
||||||
mFaceFeatureProvider = mock(FaceFeatureProvider.class);
|
mFaceFeatureProvider = mock(FaceFeatureProvider.class);
|
||||||
mFingerprintFeatureProvider = mock(FingerprintFeatureProvider.class);
|
|
||||||
mBiometricsRepositoryProvider = mock(BiometricsRepositoryProvider.class);
|
mBiometricsRepositoryProvider = mock(BiometricsRepositoryProvider.class);
|
||||||
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
|
wifiTrackerLibProvider = mock(WifiTrackerLibProvider.class);
|
||||||
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
|
securitySettingsFeatureProvider = mock(SecuritySettingsFeatureProvider.class);
|
||||||
@@ -258,11 +255,6 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
return mFaceFeatureProvider;
|
return mFaceFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public FingerprintFeatureProvider getFingerprintFeatureProvider() {
|
|
||||||
return mFingerprintFeatureProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BiometricsRepositoryProvider getBiometricsRepositoryProvider() {
|
public BiometricsRepositoryProvider getBiometricsRepositoryProvider() {
|
||||||
return mBiometricsRepositoryProvider;
|
return mBiometricsRepositoryProvider;
|
||||||
|
Reference in New Issue
Block a user