Skip to content

Commit

Permalink
Merge "Remove flicker during fingerprint enrollment" into tm-qpr-dev
Browse files Browse the repository at this point in the history
  • Loading branch information
Diya Bera authored and Android (Google) Code Review committed Oct 25, 2022
2 parents a7b9107 + 9e16492 commit d66e0c4
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 9 deletions.
5 changes: 5 additions & 0 deletions res/values/arrays.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1650,4 +1650,9 @@
[CHAR LIMIT=NONE] -->
<string-array name="allowlist_hide_summary_in_battery_usage" translatable="false">
</string-array>

<!-- Array containing help message codes that should not be displayed
during fingerprint enrollment. -->
<integer-array name="fingerprint_acquired_ignore_list">
</integer-array>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,14 @@
import android.hardware.fingerprint.FingerprintManager;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.biometrics.BiometricEnrollSidecar;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
* Sidecar fragment to handle the state around fingerprint enrollment.
*/
Expand All @@ -32,11 +37,19 @@ public class FingerprintEnrollSidecar extends BiometricEnrollSidecar {

private FingerprintUpdater mFingerprintUpdater;
private @FingerprintManager.EnrollReason int mEnrollReason;
private Set<Integer> mHelpIgnore;

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mFingerprintUpdater = new FingerprintUpdater(activity);
final int[] ignoreAcquiredInfo = getResources().getIntArray(
R.array.fingerprint_acquired_ignore_list);
mHelpIgnore = new HashSet<>();
for (int acquiredInfo: ignoreAcquiredInfo) {
mHelpIgnore.add(acquiredInfo);
}
mHelpIgnore = Collections.unmodifiableSet(mHelpIgnore);
}

@Override
Expand All @@ -49,7 +62,6 @@ protected void startEnrollment() {
getString(R.string.fingerprint_intro_error_unknown));
return;
}

mFingerprintUpdater.enroll(mToken, mEnrollmentCancel, mUserId, mEnrollmentCallback,
mEnrollReason);
}
Expand All @@ -58,7 +70,7 @@ public void setEnrollReason(@FingerprintManager.EnrollReason int enrollReason) {
mEnrollReason = enrollReason;
}

private FingerprintManager.EnrollmentCallback mEnrollmentCallback
@VisibleForTesting FingerprintManager.EnrollmentCallback mEnrollmentCallback
= new FingerprintManager.EnrollmentCallback() {

@Override
Expand All @@ -68,6 +80,9 @@ public void onEnrollmentProgress(int remaining) {

@Override
public void onEnrollmentHelp(int helpMsgId, CharSequence helpString) {
if (mHelpIgnore.contains(helpMsgId)) {
return;
}
FingerprintEnrollSidecar.super.onEnrollmentHelp(helpMsgId, helpString);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UNKNOWN;

import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.KEY_STATE_PREVIOUS_ROTATION;
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_NO_ANIMATION;
Expand All @@ -35,6 +36,8 @@
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.mock;


import android.content.Context;
import android.content.res.ColorStateList;
Expand All @@ -52,14 +55,15 @@
import android.view.Surface;
import android.widget.TextView;

import androidx.annotation.Nullable;

import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.RingProgressBar;

import com.airbnb.lottie.LottieAnimationView;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
Expand Down Expand Up @@ -100,16 +104,39 @@ public void setUp() {
}

@Test
@Ignore
public void fingerprintEnrollHelp_shouldShowHelpText() {
EnrollmentCallback enrollmentCallback = verifyAndCaptureEnrollmentCallback();
initializeActivityFor(TYPE_UNKNOWN);
TestFingerprintEnrollSidecar sidecar = new TestFingerprintEnrollSidecar();
Resources resources = mock(Resources.class);
doReturn(resources).when(mContext).getResources();
when(resources.getIntArray(R.array.fingerprint_acquired_ignore_list))
.thenReturn(new int[]{3});

sidecar.setListener(mActivity);
sidecar.onAttach(mActivity);
sidecar.mEnrollmentCallback.onEnrollmentHelp(5,
"Help message should be displayed.");

enrollmentCallback.onEnrollmentProgress(123);
enrollmentCallback.onEnrollmentHelp(
FingerprintManager.FINGERPRINT_ERROR_UNABLE_TO_PROCESS, "test enrollment help");
TextView errorText = mActivity.findViewById(R.id.error_text);
assertThat(errorText.getText()).isEqualTo("Help message should be displayed.");
}

@Test
public void fingerprintEnrollHelp_shouldNotShowHelpText() {
initializeActivityFor(TYPE_UNKNOWN);
TestFingerprintEnrollSidecar sidecar = new TestFingerprintEnrollSidecar();
Resources resources = mock(Resources.class);
doReturn(resources).when(mContext).getResources();
when(resources.getIntArray(R.array.fingerprint_acquired_ignore_list))
.thenReturn(new int[]{3});

sidecar.setListener(mActivity);
sidecar.onAttach(mActivity);
sidecar.mEnrollmentCallback.onEnrollmentHelp(3,
"Help message should not be displayed.");

TextView errorText = mActivity.findViewById(R.id.error_text);
assertThat(errorText.getText()).isEqualTo("test enrollment help");
assertThat(errorText.getText()).isEqualTo("");
}

@Test
Expand Down Expand Up @@ -319,4 +346,12 @@ private EnrollmentCallback verifyAndCaptureEnrollmentCallback() {

return callbackCaptor.getValue();
}

private class TestFingerprintEnrollSidecar extends FingerprintEnrollSidecar {
@Nullable
@Override
public Context getContext() {
return mContext;
}
}
}

0 comments on commit d66e0c4

Please sign in to comment.