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:
Priyanka Advani
2023-10-12 19:02:20 +00:00
committed by Android (Google) Code Review
parent 2ffe187d1b
commit a99bab5b57
13 changed files with 41 additions and 369 deletions

View File

@@ -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",
], ],
} }

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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.
*/ */

View File

@@ -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 {

View File

@@ -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);
} }

View File

@@ -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;

View File

@@ -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

View File

@@ -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;