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

Commit 97d7c916 authored by Beverly's avatar Beverly Committed by Automerger Merge Worker
Browse files

[Co-ex] Show 'too_dark' face acquired messages am: cb175195

parents 507094ce cb175195
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1792,7 +1792,7 @@
    <!-- Message shown during face acquisition when the image is too bright [CHAR LIMIT=50] -->
    <string name="face_acquired_too_bright">Too bright. Try gentler lighting.</string>
    <!-- Message shown during face acquisition when the image is too dark [CHAR LIMIT=50] -->
    <string name="face_acquired_too_dark">Try brighter lighting</string>
    <string name="face_acquired_too_dark">Not enough light</string>
    <!-- Message shown during face acquisition when the user is too close to sensor [CHAR LIMIT=50] -->
    <string name="face_acquired_too_close">Move phone farther away</string>
    <!-- Message shown during face acquisition when the user is too far from sensor [CHAR LIMIT=50] -->
+3 −2
Original line number Diff line number Diff line
@@ -617,8 +617,9 @@
    <!-- Which face help messages to surface when fingerprint is also enrolled.
         Message ids correspond with the acquired ids in BiometricFaceConstants -->
    <integer-array name="config_face_help_msgs_when_fingerprint_enrolled">
        <item>25</item>
        <item>26</item>
        <item>3</item> <!-- TOO_DARK -->
        <item>25</item> <!-- DARK_GLASSES -->
        <item>26</item> <!-- MOUTH_COVERING_DETECTED -->
    </integer-array>

    <!-- Whether the communal service should be enabled -->
+14 −8
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar;
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_MANAGEMENT_DISCLOSURE;
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_NAMED_MANAGEMENT_DISCLOSURE;
import static android.hardware.biometrics.BiometricFaceConstants.FACE_ACQUIRED_TOO_DARK;
import static android.hardware.biometrics.BiometricSourceType.FACE;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
@@ -178,7 +179,7 @@ public class KeyguardIndicationController {
    private boolean mBatteryPresent = true;
    private long mChargingTimeRemaining;
    private String mBiometricErrorMessageToShowOnScreenOn;
    private final Set<Integer> mCoExFaceHelpMsgIdsToShow;
    private final Set<Integer> mCoExFaceAcquisitionMsgIdsToShow;
    private boolean mInited;

    private KeyguardUpdateMonitorCallback mUpdateMonitorCallback;
@@ -249,11 +250,11 @@ public class KeyguardIndicationController {
        mScreenLifecycle = screenLifecycle;
        mScreenLifecycle.addObserver(mScreenObserver);

        mCoExFaceHelpMsgIdsToShow = new HashSet<>();
        mCoExFaceAcquisitionMsgIdsToShow = new HashSet<>();
        int[] msgIds = context.getResources().getIntArray(
                com.android.systemui.R.array.config_face_help_msgs_when_fingerprint_enrolled);
        for (int msgId : msgIds) {
            mCoExFaceHelpMsgIdsToShow.add(msgId);
            mCoExFaceAcquisitionMsgIdsToShow.add(msgId);
        }

        mHandler = new Handler(mainLooper) {
@@ -990,7 +991,7 @@ public class KeyguardIndicationController {
                mTopIndicationView == null ? null : mTopIndicationView.getText()));
        pw.println("  computePowerIndication(): " + computePowerIndication());
        pw.println("  trustGrantedIndication: " + getTrustGrantedIndication());
        pw.println("    mCoExFaceHelpMsgIdsToShow=" + mCoExFaceHelpMsgIdsToShow);
        pw.println("    mCoExFaceHelpMsgIdsToShow=" + mCoExFaceAcquisitionMsgIdsToShow);
        mRotateTextViewController.dump(pw, args);
    }

@@ -1055,9 +1056,9 @@ public class KeyguardIndicationController {
            final boolean isUnlockWithFingerprintPossible =
                    mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                            getCurrentUser());
            if (faceAuthSoftError
                    && isUnlockWithFingerprintPossible
                    && !mCoExFaceHelpMsgIdsToShow.contains(msgId)) {
            final boolean isCoExFaceAcquisitionMessage =
                    faceAuthSoftError && isUnlockWithFingerprintPossible;
            if (isCoExFaceAcquisitionMessage && !mCoExFaceAcquisitionMsgIdsToShow.contains(msgId)) {
                if (DEBUG) {
                    Log.d(TAG, "skip showing msgId=" + msgId + " helpString=" + helpString
                            + ", due to co-ex logic");
@@ -1067,7 +1068,12 @@ public class KeyguardIndicationController {
                mStatusBarKeyguardViewManager.showBouncerMessage(helpString,
                        mInitialTextColorState);
            } else if (mScreenLifecycle.getScreenState() == SCREEN_ON) {
                if (faceAuthFailed && isUnlockWithFingerprintPossible) {
                if (isCoExFaceAcquisitionMessage && msgId == FACE_ACQUIRED_TOO_DARK) {
                    showBiometricMessage(
                            helpString,
                            mContext.getString(R.string.keyguard_suggest_fingerprint)
                    );
                } else if (faceAuthFailed && isUnlockWithFingerprintPossible) {
                    showBiometricMessage(
                            mContext.getString(R.string.keyguard_face_failed),
                            mContext.getString(R.string.keyguard_suggest_fingerprint)
+25 −3
Original line number Diff line number Diff line
@@ -667,7 +667,8 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
        final String helpString = "helpString";
        final int[] msgIds = new int[]{
                BiometricFaceConstants.FACE_ACQUIRED_MOUTH_COVERING_DETECTED,
                BiometricFaceConstants.FACE_ACQUIRED_DARK_GLASSES_DETECTED
                BiometricFaceConstants.FACE_ACQUIRED_DARK_GLASSES_DETECTED,
                BiometricFaceConstants.FACE_ACQUIRED_TOO_DARK
        };
        Set<CharSequence> messages = new HashSet<>();
        for (int msgId : msgIds) {
@@ -698,8 +699,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
                BiometricFaceConstants.FACE_ACQUIRED_TOO_LEFT,
                BiometricFaceConstants.FACE_ACQUIRED_TOO_HIGH,
                BiometricFaceConstants.FACE_ACQUIRED_TOO_LOW,
                BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT,
                BiometricFaceConstants.FACE_ACQUIRED_TOO_DARK
                BiometricFaceConstants.FACE_ACQUIRED_TOO_BRIGHT
        };
        for (int msgId : msgIds) {
            mKeyguardUpdateMonitorCallback.onBiometricHelp(
@@ -742,6 +742,28 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
        verifyIndicationMessages(INDICATION_TYPE_BIOMETRIC_MESSAGE, helpStrings);
    }

    @Test
    public void sendTooDarkFaceHelpMessages_fingerprintEnrolled() {
        createController();

        // GIVEN fingerprint enrolled
        when(mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
                0)).thenReturn(true);

        // WHEN help message received
        final String helpString = "helpMsg";
        mKeyguardUpdateMonitorCallback.onBiometricHelp(
                BiometricFaceConstants.FACE_ACQUIRED_TOO_DARK,
                helpString,
                BiometricSourceType.FACE
        );

        // THEN help message shown and try fingerprint message shown
        verifyIndicationMessage(INDICATION_TYPE_BIOMETRIC_MESSAGE, helpString);
        verifyIndicationMessage(INDICATION_TYPE_BIOMETRIC_MESSAGE_FOLLOW_UP,
                mContext.getString(R.string.keyguard_suggest_fingerprint));
    }

    @Test
    public void updateMonitor_listenerUpdatesIndication() {
        createController();