Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f15f443c authored by Diya Bera's avatar Diya Bera Committed by Automerger Merge Worker
Browse files

Merge "Remove flicker during fingerprint enrollment" into tm-qpr-dev am: d66e0c4c am: da8c78f0

parents e3e6b7e7 da8c78f0
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1332,4 +1332,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>
+17 −2
Original line number Diff line number Diff line
@@ -21,9 +21,14 @@ import android.app.settings.SettingsEnums;
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.
 */
@@ -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
@@ -49,7 +62,6 @@ public class FingerprintEnrollSidecar extends BiometricEnrollSidecar {
                    getString(R.string.fingerprint_intro_error_unknown));
            return;
        }

        mFingerprintUpdater.enroll(mToken, mEnrollmentCancel, mUserId, mEnrollmentCallback,
                mEnrollReason);
    }
@@ -58,7 +70,7 @@ public class FingerprintEnrollSidecar extends BiometricEnrollSidecar {
        mEnrollReason = enrollReason;
    }

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

        @Override
@@ -68,6 +80,9 @@ public class FingerprintEnrollSidecar extends BiometricEnrollSidecar {

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

+42 −7
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.biometrics.fingerprint;

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;
@@ -35,6 +36,8 @@ import static org.mockito.Mockito.spy;
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;
@@ -52,6 +55,8 @@ import android.view.Display;
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;
@@ -59,7 +64,6 @@ 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;
@@ -100,16 +104,39 @@ public class FingerprintEnrollEnrollingTest {
    }

    @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
@@ -319,4 +346,12 @@ public class FingerprintEnrollEnrollingTest {

        return callbackCaptor.getValue();
    }

    private class TestFingerprintEnrollSidecar extends FingerprintEnrollSidecar {
        @Nullable
        @Override
        public Context getContext() {
            return mContext;
        }
    }
}
 No newline at end of file